Skip to content

style(design): design review fixes + fresh Warm Terminal design system#927

Open
ashish921998 wants to merge 26 commits intomainfrom
ashish921998/design-review-fixes
Open

style(design): design review fixes + fresh Warm Terminal design system#927
ashish921998 wants to merge 26 commits intomainfrom
ashish921998/design-review-fixes

Conversation

@ashish921998
Copy link
Copy Markdown
Collaborator

@ashish921998 ashish921998 commented Apr 5, 2026

Summary

Full design system overhaul and code quality cleanup for the AO dashboard.

Design System — Warm Terminal Migration

  • Rewrote all CSS custom property tokens (light + dark mode) from cool blue-tinted graphite to warm brown-tinted terminal aesthetic per DESIGN.md spec
  • Migrated borders, backgrounds, text, and accent colors to warm stone/cream palette
  • Updated PWA manifest and layout metadata colors to match

Inline Style Removal

  • Replaced inline style= color mappings with data-* attribute CSS selectors across 5 components:
    • ActivityDot.tsxdata-activity for dot/pill/text colors
    • AttentionZone.tsxdata-level for kanban/accordion/mobile dots
    • Dashboard.tsxdata-tone/data-level for metrics, legend, mobile action strip
    • ProjectSidebar.tsxdata-level/data-health for session/health dots
    • SessionCard.tsx — fixed duplicate className bug on done-title element

Design Audit Fixes (prior commits)

  • Added prefers-reduced-motion support
  • Removed concurrent breathe animations
  • Fixed dashboard title weight/tracking
  • Added text-wrap: balance on headings
  • Contextual empty state messages per zone
  • Fixed section label semantics and spacing
  • Used native <h2> for Attention Board heading

Infrastructure (merged from main)

  • Reduced GitHub API rate limiting from batch enrichment bypass
  • Removed model rate-limit pause functionality

Pre-Landing Review Fixes

  • Added base CSS fallback for activity dots/pills (null/unknown states render gray instead of invisible)
  • Fixed review stat card color inconsistency (now uses accent-orange, matching all other review indicators)
  • Reverted aria-live on empty states (false AT announcements)
  • A11y, dead code, and test coverage fixes

Test Coverage

  • Web tests: 44 files, 543 tests — all passing
  • Integration tests: 3 pre-existing failures (hash path comparison, environment-specific, unrelated to this branch)
  • Test Coverage Audit: CSS/styling changes only, no new code paths requiring tests

Pre-Landing Review

  • Activity dot invisible for null/unknown states — FIXED (added base CSS fallback rules)
  • Review stat card color inconsistency (cyan vs orange) — FIXED (aligned to accent-orange)
  • Quick-reply border-top separator — assessed, not needed (content is visually distinct, footer provides separation)
  • Scrollbar radius inconsistency (global 3px vs specific 0) — informational, deferred
  • Count badge pill shape — intentional per DESIGN.md "0px everywhere"

Adversarial Review

  • Claude subagent: 8 findings, 2 high (both fixed), 4 low/informational (assessed, deferred or intentional)

Test plan

  • All web tests pass (44 files, 543 tests)
  • Activity dots render for all states including null/unknown (fallback gray)
  • Review color consistent across stat cards, kanban columns, sidebar, mobile
  • Dark mode warm tones preserved throughout
  • No inline style attributes in modified components (CLAUDE.md convention)

🤖 Generated with Claude Code

ashish921998 and others added 11 commits April 5, 2026 02:23
All animations and transitions are disabled when the user's system
requests reduced motion, per DESIGN.md accessibility requirements.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Status pills had two animations: a breathe animation on the pill
and a dot-pulse on the child dot. DESIGN.md says "one animation per
element, one purpose" and "keep dot pulse, remove border heartbeat."

Removed all three breathe keyframes, kept dot-pulse only.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
DESIGN.md specifies display headings at weight 680 and letter-spacing
-0.035em. The dashboard title was using 600 / -0.05em.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…hite

Detail cards overrode text-secondary and text-tertiary with neutral
grays (#9898a0, #5c5c66). DESIGN.md specifies blue-tinted graphite
palette (#a5afc4, #6f7c94) for dark mode text.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dashboard title and kanban column titles now use text-wrap: balance
for more even line breaks on narrow viewports.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Changed "Attention Board" from <h2> to <div role="heading"> since it's
styled as a 12px uppercase label, not a heading. Also fixed letter-spacing
from 0.16em to 0.06em per DESIGN.md UI/Labels spec.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Empty kanban columns now show context-specific messages instead of
generic "No sessions" text. Each column's empty state reflects its
purpose: "No agents need your input" (Respond), "No code waiting
for review" (Review), etc.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Complete redesign from Industrial Precision (blue-tinted) to Warm Terminal
(brown-tinted). Key changes:

- Warm charcoal surfaces (#121110, #1a1918, #222120) replace blue-gray
- Cream text (#f0ece8) replaces blue-white (#eef3ff)
- Warm periwinkle accent (#8b9cf7) replaces cool blue (#5B7EF8)
- Berkeley Mono for display headlines (mono cohesion)
- Added: Accessibility section (44px touch targets, WCAG AA, focus-visible)
- Added: Component anatomy (button states, card structure, input fields)
- Added: Light mode design rationale (warm parchment, not clinical white)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Berkeley Mono is a paid font ($75). JetBrains Mono is free, open source,
already loaded in the project, and the mono-for-headlines concept works
the same way with it.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Light mode text-tertiary #a8a29e failed WCAG AA at 2.5:1 on white.
Darkened to #736e6b (5.0:1). Light mode accent #6b73c4 was borderline
at 4.3:1, darkened to #5c64b5 (5.3:1). All pairs now pass AA.

Added verified contrast ratios for both modes to accessibility section.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ashish921998 and others added 3 commits April 5, 2026 22:37
Design review audit report with before/after screenshots for all
dashboard pages (kanban, session detail, PRs) across desktop, tablet,
and mobile viewports in both light and dark mode.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix mobile test expecting removed "No sessions" text. The merge zone
  emptyMessage is now "Nothing cleared to land yet." (Bugbot comment #1)
- Remove no-op .dark .detail-card override that duplicated global dark
  values after FINDING-005 fix aligned them (Bugbot comment #2)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The .gstack-report/ directory contains local audit artifacts with
filesystem paths. Should not be tracked in the repository.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ashish921998 and others added 2 commits April 6, 2026 09:20
Dashboard title was using old Geist Sans values (weight 680, -0.035em).
New spec is JetBrains Mono, weight 500, letter-spacing -0.02em.
Added font-family: var(--font-mono) to match.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit af1c1a5. Configure here.

ashish921998 and others added 9 commits April 6, 2026 15:32
Replace ARIA role="heading" div with semantic h2 per ARIA first rule — native elements are preferred over ARIA roles for actual headings.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add aria-controls + id to accordion button/body pair in AttentionZone
- Wrap empty-state messages in aria-live="polite" regions for AT announcements
- Remove dead message prop and isDefault from EmptyState (Skeleton.tsx)
- Add parameterized test covering all 6 zone-specific empty messages

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Codex review identified that role="status" aria-live on static empty-state
text causes burst announcements on page load (all empty columns fire) and
announces in collapsed mobile sections that aren't visible. Empty states are
static text, not dynamic transitions. The aria-controls fix is kept.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Migrate all CSS tokens from cool blue-tinted graphite to warm
brown-tinted terminal aesthetic per DESIGN.md spec. Replace inline
style color mappings in ActivityDot, AttentionZone, Dashboard,
ProjectSidebar, and SessionCard with data-attribute CSS selectors.
Fix duplicate className bug on SessionCard done-title element.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…olor

Add base CSS fallback for activity-dot, activity-pill, and
activity-pill__text so null/unknown activity states render visibly
(gray) instead of invisible. Fix review stat card to use accent-orange
(matching kanban/sidebar/mobile review indicators) instead of cyan.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant