gsxdsm
9d1bd393d8
FN-9202: Unify dashboard banner styling
...
Standardize dashboard notices on a shared, token-driven banner shell.
- Add a reusable Banner primitive with consistent tones, layouts, actions, and dismissal behavior.
- Migrate dashboard notification banners away from bespoke shells and left accent borders.
- Document and test banner styling invariants, including token-only CSS lengths and colors.
- Add a patch changeset for the published dashboard bundle.
Files changed:
.changeset/fn-9202-banner-style-unification.md | 7 ++
docs/dashboard-guide.md | 4 +
.../app/__tests__/banner-style-consistency.test.ts | 25 ++++
.../app/components/ApprovalNotificationBanner.css | 10 --
.../app/components/ApprovalNotificationBanner.tsx | 5 +-
packages/dashboard/app/components/Banner.css | 81 ++++++++++++
packages/dashboard/app/components/Banner.tsx | 78 ++++++++++++
.../app/components/CapacityRiskBanner.css | 50 +-------
.../app/components/CapacityRiskBanner.tsx | 39 +++---
.../app/components/CliBinaryInstallBanner.css | 126 ++-----------------
.../app/components/CliBinaryInstallBanner.tsx | 14 +--
.../app/components/DbCorruptionBanner.css | 18 +--
.../app/components/DbCorruptionBanner.tsx | 5 +-
.../app/components/EngineStatusBanner.css | 94 ++------------
.../app/components/EngineStatusBanner.tsx | 48 +++----
.../app/components/EngineUnavailableBanner.css | 42 +------
.../app/components/EngineUnavailableBanner.tsx | 21 ++--
.../app/components/MergeAdvanceNotice.css | 129 +++----------------
.../app/components/MergeAdvanceNotice.tsx | 36 +++---
.../app/components/MigrationInProgressBanner.css | 25 ----
.../app/components/MigrationInProgressBanner.tsx | 19 +--
.../app/components/OAuthReloginBanner.css | 53 +-------
.../app/components/OAuthReloginBanner.tsx | 26 +---
.../app/components/SessionNotificationBanner.css | 16 +--
.../app/components/SessionNotificationBanner.tsx | 5 +-
.../app/components/SetupWarningBanner.css | 106 +---------------
.../app/components/SetupWarningBanner.tsx | 31 +----
.../app/components/SqliteMigrationBanner.css | 40 +-----
.../app/components/SqliteMigrationBanner.tsx | 33 ++---
.../app/components/TaskIdIntegrityBanner.css | 18 +--
.../app/components/TaskIdIntegrityBanner.tsx | 5 +-
.../dashboard/app/components/TestModeBanner.css | 18 ---
.../dashboard/app/components/TestModeBanner.tsx | 12 +-
.../app/components/UpdateAvailableBanner.css | 139 +++------------------
.../app/components/UpdateAvailableBanner.tsx | 22 ++--
.../app/components/__tests__/Banner.test.tsx | 48 +++++++
36 files changed, 450 insertions(+), 998 deletions(-)
Fusion-Task-Id: FN-9202
Fusion-Task-Lineage: 14762201-55e5-4124-a897-9667c3a1ab84
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-23 16:00:53 -07:00
gsxdsm
0b6c4cd4ca
feat(dashboard,desktop): show live database-migration progress during boot
...
The one-time SQLite→PostgreSQL migration runs inside createTaskStoreForBackend
before any HTTP server listens, so browsers saw "connection refused" and open
tabs failed silently for minutes. Now:
- CLI: a temporary holding server binds the dashboard port for the boot window,
serving an auto-reloading "Database migration in progress" page and an
/api/health payload with status "migrating" + structured progress; the port
is handed off (awaited) to the real app.listen().
- Dashboard SPA: already-open tabs render the new MigrationInProgressBanner
from the 15s health poll when status is "migrating".
- Desktop: LocalRuntimeManager publishes migration progress on
DesktopRuntimeStatus via the new core onMigrationProgress option;
DesktopLaunchGate shows the live label and extends its 30s startup timeout
while progress advances (2min stall cap), in both boot and first-run flows.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-17 20:09:56 -07:00