feat(ajustes): adicionar aba changelog com histórico de versões

Parser lê o CHANGELOG.md e exibe as versões com badges por tipo de mudança
(Adicionado, Alterado, Corrigido) na página de ajustes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Felipe Coutinho
2026-02-06 17:45:24 +00:00
parent 95e9a61741
commit 390754c0e8
4 changed files with 124 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
import { headers } from "next/headers";
import { redirect } from "next/navigation";
import { ChangelogTab } from "@/components/ajustes/changelog-tab";
import { CompanionTab } from "@/components/ajustes/companion-tab";
import { DeleteAccountForm } from "@/components/ajustes/delete-account-form";
import { PreferencesForm } from "@/components/ajustes/preferences-form";
@@ -10,6 +11,7 @@ import { UpdatePasswordForm } from "@/components/ajustes/update-password-form";
import { Card } from "@/components/ui/card";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
import { auth } from "@/lib/auth/config";
import { parseChangelog } from "@/lib/changelog/parse-changelog";
import { fetchAjustesPageData } from "./data";
@@ -28,6 +30,8 @@ export default async function Page() {
const { authProvider, userPreferences, userApiTokens } =
await fetchAjustesPageData(session.user.id);
const changelogVersions = parseChangelog();
return (
<div className="w-full">
<Tabs defaultValue="preferencias" className="w-full">
@@ -37,6 +41,7 @@ export default async function Page() {
<TabsTrigger value="nome">Alterar nome</TabsTrigger>
<TabsTrigger value="senha">Alterar senha</TabsTrigger>
<TabsTrigger value="email">Alterar e-mail</TabsTrigger>
<TabsTrigger value="changelog">Changelog</TabsTrigger>
<TabsTrigger value="deletar" className="text-destructive">
Deletar conta
</TabsTrigger>
@@ -114,6 +119,10 @@ export default async function Page() {
</Card>
</TabsContent>
<TabsContent value="changelog" className="mt-4">
<ChangelogTab versions={changelogVersions} />
</TabsContent>
<TabsContent value="deletar" className="mt-4">
<Card className="p-6">
<div className="space-y-4">