You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The UI has drifted into visible inconsistency as features have piled up:
Unreadable buttons — some button color combos fail contrast (low-contrast text on tinted backgrounds), making actions hard or impossible to read.
Inconsistent spacing, radii, and typography between dialogs, the explorer, the editor toolbar, the results grid, and the tools modals.
Ad-hoc color usage — colors are chosen per-component instead of pulled from a shared token set, so theming and dark/light parity is uneven.
No premium feel — current treatment reads as "early dev tool" rather than a polished, paid-grade desktop app.
We need to fix this before the surface area grows further — every new feature shipped without a system compounds the cleanup cost.
Proposal
Two-phase effort:
Phase 1 — Design system
Produce a documented design system covering:
Color tokens — semantic palette (surface, surface-elevated, border, text-primary, text-muted, accent, danger, warning, success, info) with verified WCAG AA contrast pairs for both light and dark themes.
Typography scale — font family, sizes, weights, line-heights, and where each step is used (heading, body, label, code, caption).
Spacing scale — single 4px-based scale; eliminate one-off pixel values.
Radii, shadows, borders — small set of named tokens.
Component primitives — Button (primary/secondary/ghost/destructive + sizes + disabled/loading), Input, Select, Dialog, Tooltip, Tabs, Menu, Toast, Empty state. Each with documented states.
Motion — duration + easing tokens for hovers, dialogs, toasts.
Iconography — single icon set, sizes, stroke width.
Use the lazyweb skill to pull references from premium-feeling desktop/dev tools (Linear, Raycast, Arc, TablePlus, DataGrip, Beekeeper Studio, Postico, Warp, Cursor) so the system is grounded in real-world premium patterns, not generated from scratch.
Deliverables:
docs/design-system.md (or website docs page) with tokens, component specs, and do/don'ts.
Tailwind v4 @theme tokens in src/styles/ reflecting the system.
Reference page in the app under a hidden route or in website/ showing every primitive and state.
Phase 2 — Apply across the app
Sweep the codebase replacing ad-hoc styles with tokens and shared primitives. Suggested order, highest visibility first:
Buttons everywhere — fix the unreadable ones first; this is the most-cited pain.
Problem
The UI has drifted into visible inconsistency as features have piled up:
We need to fix this before the surface area grows further — every new feature shipped without a system compounds the cleanup cost.
Proposal
Two-phase effort:
Phase 1 — Design system
Produce a documented design system covering:
Use the lazyweb skill to pull references from premium-feeling desktop/dev tools (Linear, Raycast, Arc, TablePlus, DataGrip, Beekeeper Studio, Postico, Warp, Cursor) so the system is grounded in real-world premium patterns, not generated from scratch.
Deliverables:
docs/design-system.md(or website docs page) with tokens, component specs, and do/don'ts.@themetokens insrc/styles/reflecting the system.website/showing every primitive and state.Phase 2 — Apply across the app
Sweep the codebase replacing ad-hoc styles with tokens and shared primitives. Suggested order, highest visibility first:
ConfirmDialog, connection dialogs, settings, help, tools modals.Each sweep lands as its own PR with before/after screenshots so review stays manageable.
Acceptance criteria
Button,Input,Select,Dialog, etc. primitives exist and are used everywhere; per-feature one-offs are gone.Out of scope
Notes