feat(FN-188): add Changelog tab to dashboard settings
Some checks failed
Sync dev → Gitea / Mirror dev to Gitea (push) Has been cancelled
Some checks failed
Sync dev → Gitea / Mirror dev to Gitea (push) Has been cancelled
Squash-recovery of fusion/fn-188 onto dev — original branch was based on
main (dccd4fa) due to baseBranch=None drift in Fusion settings; rebase
onto dev surfaced unrelated main-only commits (EMEX/PL24/Corgi) as false
conflicts. This commit applies only FN-188's 23-file changelog patch.
- apps/api: ChangelogModule (controller, service, DTO, spec, schema)
- apps/web: ChangelogTab (timeline + accordion), useChangelog hook, i18n
- packages/shared: changelog Zod schemas + types
- packages/ui: Accordion component + Badge stage variant
- docs/INDEX.md: changelog feature documented
Lint, typecheck, all 169 api tests + 2 web tests pass.
This commit is contained in:
27
packages/shared/src/schemas/changelog.ts
Normal file
27
packages/shared/src/schemas/changelog.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import { z } from "zod";
|
||||
|
||||
export const changelogStageEnum = z.enum(["alpha", "beta", "prod"]);
|
||||
|
||||
export const changelogEntrySchema = z.object({
|
||||
id: z.string().uuid(),
|
||||
stage: changelogStageEnum,
|
||||
title: z.string().min(1).max(255),
|
||||
description: z.string().min(1),
|
||||
publishedAt: z.string().datetime(),
|
||||
createdAt: z.string().datetime(),
|
||||
updatedAt: z.string().datetime(),
|
||||
});
|
||||
|
||||
export const createChangelogEntrySchema = z.object({
|
||||
stage: changelogStageEnum,
|
||||
title: z.string().min(1).max(255),
|
||||
description: z.string().min(1),
|
||||
publishedAt: z.string().datetime(),
|
||||
});
|
||||
|
||||
export const updateChangelogEntrySchema = createChangelogEntrySchema.partial();
|
||||
|
||||
export type ChangelogEntry = z.infer<typeof changelogEntrySchema>;
|
||||
export type CreateChangelogEntry = z.infer<typeof createChangelogEntrySchema>;
|
||||
export type UpdateChangelogEntry = z.infer<typeof updateChangelogEntrySchema>;
|
||||
export type ChangelogStage = z.infer<typeof changelogStageEnum>;
|
||||
Reference in New Issue
Block a user