mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-10-14 16:20:03 +00:00
495eec3ce7
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.