Files
pulse/frontend-modern
rcourtman 495eec3ce7 feat(license): global banner for pending or failed v5 license migrations
The only surface explaining an unresolved v5→v6 license migration was an
inline notice buried in Settings → Billing → Plan, so a paying customer
whose migration stalled discovered it as silently missing Pro features.

Mount a global banner in the app shell (same slot as the demo and update
banners) whenever commercial posture carries a pending or failed
commercial_migration state. It reuses getCommercialMigrationNotice for
copy, links to the licence panel, dismisses per session and per state
(a pending→failed transition resurfaces it), re-checks posture every
minute while pending so the backend's background retry clears it
without a reload, and loads commercial posture itself — the app shell
only loads posture when upgrade prompts are enabled, and a migration
warning is service degradation, not an upgrade nag.

Verified with vitest (component + presentation suites) and live against
the dev instance with an undecryptable license.enc fixture.
2026-06-11 08:46:11 +01:00
..
2026-06-04 14:07:14 +01:00
2026-06-01 11:12:28 +01:00