feat(admin): resurface setup wizard when a release adds setup
Imported from GitHub pull request El-SaMa/oma#116 by @El-SaMa.
Summary
- The setup wizard was dismissed with a permanent boolean, so once hidden it never came back, even when a new OMA release added essential setup. Now dismissal is pinned to a setup signature (
SETUP_WIZARD_REVISION+ sorted step ids). - When a release adds/renames a step, or we bump
SETUP_WIZARD_REVISION, the signature changes and the wizard resurfaces on the dashboard banner and the setup page until the operator finishes or hides it again. - Legacy boolean dismissals resurface once after this ships (intended for the release).
- Banner and wizard show a "New in this release" hint when resurfaced.
How to trigger a resurface in future releases
- Add a new step in
setup-checklist.ts(auto-changes the signature), or - Bump
SETUP_WIZARD_REVISIONfor a feature that has no dedicated step.
Files
lib/admin/setup-wizard-store.ts- signature-aware dismissal.lib/admin/setup-checklist.ts-SETUP_WIZARD_REVISION,computeSetupSignature,signatureon the checklist.app/admin/settings/setup/*,app/admin/page.tsx- wire signature + resurfaced state.components/admin/setup-wizard*.tsx- resurfaced hint.messages/{en,fi,sv}.json- new keys.
Test plan
- Fresh org: wizard + banner show until required steps done.
- Dismiss on dashboard: banner hides; setup page offers restore.
- Bump
SETUP_WIZARD_REVISION(or add a step): banner + wizard resurface with the "New in this release" hint. - Finish or dismiss again: hides for the new signature.
-
pnpm i18n:checkandtscpass.
<!-- /CURSOR_SUMMARY -->[!NOTE] Medium Risk Changes how setup-wizard dismissal is persisted in
platform_settingsand will resurface the banner for existing dismissals once; otherwise mostly admin UX and visual/marketing styling.Overview Setup wizard dismissal is now tied to a setup signature (
SETUP_WIZARD_REVISION+ sorted step ids) instead of a permanent boolean. When a release adds or renames checklist steps, or bumps the revision, the dashboard banner and setup page show the wizard again until operators finish or dismiss for the new signature. Legacy boolean dismissals are treated as a one-time resurface after deploy. Dismiss actions store the current signature; banner and wizard UI add a “New in this release” badge and copy when the signature no longer matches the stored dismissal.Marketing and typography follow a new
.cursor/rules/brand.mdcguide: Geist Sans/Mono are wired through the root layout and@themefonts; homepage product/showcase gradients and decorative accents move to brand/violet only (no rainbow hues); hero visual and Remotion compositions use the same purple palette.<sup>Reviewed by Cursor Bugbot for commit db2deecf399331437378107a9df055b52a7abcb6. Bugbot is set up for automated code reviews on this repo. Configure here.</sup>