Public changelog page with admin CRUD. Multi-locale JSONB content following the CMS pattern. Toggle via appConfig.features.changelog.

📰

Public Page

Timeline layout at /changelog. Version badges, color-coded type badges. Markdown rendering. ISR (1h). JSON-LD structured data.

✍️

Admin CRUD

/admin-dashboard/changelog — create, edit, publish/unpublish, delete. Locale tabs for title + content.

🏷️

Entry Types

Feature (violet), Improvement (blue), Fix (green), Breaking (red), Security (orange). DB-level check constraint.

🔐

Security

Markdown sanitized before storage (strips scripts, iframes, event handlers). Admin-only RLS with WITH CHECK. UUID validation on all params.

API RouteMethodDescription
/api/admin/changelogGETList all entries (including drafts)
/api/admin/changelogPOSTCreate entry
/api/admin/changelogPATCHUpdate entry
/api/admin/changelogDELETEDelete entry