Commit Graph

6 Commits

Author SHA1 Message Date
gsxdsm
87e87a8f1a FN-6693: enforce dashboard CSS token references
Extend the dashboard CSS token guard and replace stale custom-property references with defined design tokens.

- Add a dashboard-wide CSS token validity test that scans component/app CSS for undefined custom-property references.
- Include dashboard CSS tests in the dashboard Vitest config and document the guard in testing guidance.
- Remap undefined CSS variables across dashboard components and command-center styles to existing semantic or local tokens.

Files changed:
 docs/testing.md                                    |   3 +
 .../dashboard-css-token-validity.css.test.ts       | 165 +++++++++++++++++++++
 .../dashboard/app/components/ActiveAgentsPanel.css |  10 +-
 .../dashboard/app/components/AgentLogViewer.css    |   2 +-
 .../app/components/AgentReflectionsTab.css         |  10 +-
 packages/dashboard/app/components/AgentsView.css   |   6 +-
 .../dashboard/app/components/BranchGroupCard.css   |   6 +-
 packages/dashboard/app/components/ChatView.css     |  12 +-
 .../app/components/CliBinaryInstallBanner.css      |   2 +-
 .../dashboard/app/components/CliBinaryPanel.css    |   2 +-
 .../app/components/ConversationHistory.css         |  12 +-
 .../dashboard/app/components/DashboardLoader.css   |   2 +-
 .../dashboard/app/components/DesktopLaunchGate.css |   4 +-
 .../dashboard/app/components/DirectoryPicker.css   |   2 +-
 .../dashboard/app/components/FileMentionPopup.css  |   4 +-
 .../dashboard/app/components/GitHubImportModal.css |  10 +-
 packages/dashboard/app/components/GoalsView.css    |   2 +-
 .../dashboard/app/components/GroupTaskModal.css    |  18 +--
 packages/dashboard/app/components/InsightsView.css |  10 +-
 packages/dashboard/app/components/Lane.css         |   8 +-
 .../dashboard/app/components/LanguageSelector.css  |   8 +-
 packages/dashboard/app/components/MailboxModal.css |  62 ++++----
 .../app/components/MergeAdvanceNotice.css          |   2 +-
 .../dashboard/app/components/MissionManager.css    |  10 +-
 .../app/components/MobileWorkflowGraphView.css     |   2 +-
 .../app/components/ModelOnboardingModal.css        |  12 +-
 .../app/components/OnboardingDisclosure.css        |   4 +-
 .../dashboard/app/components/PlanningModeModal.css |   2 +-
 .../dashboard/app/components/PluginManager.css     |  58 ++++----
 .../components/PostOnboardingRecommendations.css   |   4 +-
 .../dashboard/app/components/PullRequestView.css   |  32 ++--
 packages/dashboard/app/components/QuickChatFAB.css |   4 +-
 .../dashboard/app/components/QuickEntryBox.css     |   6 +-
 .../dashboard/app/components/ReliabilityView.css   |   6 +-
 packages/dashboard/app/components/ScriptsModal.css |  34 ++---
 .../dashboard/app/components/SessionTerminal.css   |  28 ++--
 .../dashboard/app/components/SettingsModal.css     |   6 +-
 .../dashboard/app/components/SkillMultiselect.css  |   2 +-
 packages/dashboard/app/components/TaskCard.css     |  24 +--
 .../dashboard/app/components/TaskDocumentsTab.css  |   8 +-
 .../dashboard/app/components/TaskFieldsSection.css |  20 +--
 .../dashboard/app/components/TerminalModal.css     |  22 +--
 .../app/components/WorkflowFieldsPanel.css         |   6 +-
 .../app/components/WorkflowNodeEditor.css          |  30 ++--
 .../dashboard/app/components/WorkspaceSelector.css |   2 +-
 .../components/command-center/CommandCenter.css    | 106 ++++++-------
 .../components/command-center/DateRangePicker.css  |  18 +--
 .../command-center/MissionControlPanel.css         |  14 +-
 .../app/components/command-center/SdlcFunnel.css   |   2 +-
 .../command-center/areas/SystemStatsArea.css       |  24 +--
 .../app/components/command-center/areas/areas.css  |  62 ++++----
 .../components/command-center/charts/charts.css    | 104 ++++++-------
 packages/dashboard/vitest.config.ts                |   1 +
 53 files changed, 592 insertions(+), 423 deletions(-)

Fusion-Task-Id: FN-6693

Fusion-Task-Lineage: e9ccf3e6-fee9-47e0-9474-7b5580adbf31
2026-06-19 04:27:01 -07:00
gsxdsm
2d2024fb0f fix(dashboard): unfreeze animations broken by transition tokens used as durations
Spinners, status-dot pulses, and entrance animations across the dashboard
rendered frozen: transition tokens (--transition-slow: 0.3s ease) bundle a
duration AND an easing, and 15 animation declarations reused them as bare
durations. Substituting "0.3s ease" next to an explicit easing (linear,
ease-in-out, ease-out) — or inside calc() — makes the declaration invalid at
computed-value time, which per spec resolves the entire property to
animation: none with no console error.

- add duration-only tokens (--duration-instant/fast/normal/slow) and derive
  the --transition-* tokens from them so the two cannot drift
- switch all 15 broken animation declarations across 14 CSS files to the
  duration tokens, preserving effective durations
- add animation-duration-tokens.css.test.ts: sweeps every app CSS file and
  fails on transition-token-as-duration, calc() over a transition token, and
  transition token in animation-duration

Verified in a real browser against the production build: previously frozen
.status-dot--connecting and calc-based NodesView spinners now report running
animations; transition shorthands still resolve to "0.15s / ease".

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 19:48:40 -07:00
gsxdsm
d37bebf8bf feat(FN-5516): merge fusion/fn-5516 2026-05-22 17:24:38 -07:00
gsxdsm
ed4d021d3d fix(dashboard): keep mobile nav visible on Android landscape and during keyboard
- Broaden mobile media query to include (max-height: 480px) so landscape
  phones (which exceed 768 CSS px wide) still render the bottom nav and
  mobile board layout instead of desktop horizontally-scrollable columns.
- Guard useMobileKeyboard against pinch-zoom (vv.scale > 1) — Android
  Chrome ignores user-scalable=no, and a focused textarea + zoom was
  false-positiving keyboard-open and hiding MobileNavBar.
- Read documentElement.clientHeight instead of stale window.innerHeight
  when computing keyboard overlap (Android multi-window can leave
  innerHeight cached at a wildly different value than the actual layout
  viewport — observed 2848 while html was 797).
- Add interactive-widget=resizes-content to the viewport meta so Android
  Chrome shrinks the layout viewport with the soft keyboard, matching iOS.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 13:12:36 -07:00
Fusion
4f897d1a46 feat(FN-3067): polish onboarding disclosure UX, plugin slot fallback, and m
Merge brings FN-3067 UX revisions across onboarding components, including reduced ModelOnboardingModal complexity, new fallback styling for PluginSlot, and polish to OnboardingDisclosure, OnboardingResumeCard, and PostOnboardingRecommendations with minor updates to PlanningModeModal and SettingsModa

Fusion-Task-Id: FN-3067
2026-05-02 21:17:01 -07:00
Fusion
74989993a3 feat(FN-2964): merge fusion/fn-2964
Commits merged:
- test(FN-2964): complete Step 2 — cover custom providers disclosure behavior
- feat(FN-2964): complete Step 1 — embed custom providers disclosure in onboarding
- fix(FN-2963): reuse shared onboarding disclosure for custom providers
- fix(FN-2963): address disclosure focus ring and mobile touch target
- fix(FN-2963): align custom providers disclosure with shared pattern
- feat(FN-2963): apply inline edit UX and tokenized custom provider styles
- fix(FN-2963): align custom providers UI with auth patterns
- fix(FN-2963): complete Step 5 — resolve lint gate in providers section
- test(FN-2963): complete Step 4 — add custom providers section tests
- feat(FN-2963): complete Step 3 — integrate custom providers section
- feat(FN-2963): complete Step 2 — add custom providers section styles
- feat(FN-2963): complete Step 1 — create custom providers section component
- feat(FN-2961): complete Step 6 — document custom provider settings
- test(FN-2961): complete Step 4 — cover custom provider routes
- feat(FN-2961): complete Step 3 — add custom provider API client
- feat(FN-2961): complete Step 2 — add custom provider CRUD routes
- feat(FN-2961): complete Step 1 — add custom provider core types

Files changed:
.../app/components/CustomProvidersSection.css      | 138 +++++++
 .../app/components/CustomProvidersSection.tsx      | 425 +++++++++++++++++++++
 .../app/components/ModelOnboardingModal.css        |  60 ---
 .../app/components/OnboardingDisclosure.css        |  67 ++++
 .../app/components/OnboardingDisclosure.tsx        |  38 ++
 .../__tests__/CustomProvidersSection.test.tsx      | 237 ++++++++++++
 .../__tests__/ModelOnboardingModal.test.tsx        |  67 +++-
 7 files changed, 967 insertions(+), 65 deletions(-)

Fusion-Task-Id: FN-2964
2026-04-29 23:39:18 -07:00