|
| 1 | +# Declutter the studio shell — design |
| 2 | + |
| 3 | +**Date:** 2026-07-15 · **Branch:** `design/declutter-shell` |
| 4 | + |
| 5 | +## Problem |
| 6 | + |
| 7 | +The IDE-shell concept is loved, but the page is overloaded. Measured on the |
| 8 | +desktop homepage (multi-agent audit, 6 dimensions + adversarial critique): |
| 9 | + |
| 10 | +- ~70 interactive chrome elements render before any marketing content |
| 11 | + (~66 tab stops before the first CTA for keyboard users). |
| 12 | +- 19 buttons are `data-action="notice"` no-ops occupying tab order. |
| 13 | +- The same datum repeats: row count ×3, exec time ×2, `home.sql` ×3, |
| 14 | + Connected/Online ×4, version ×3 (`v0.9.29` twice + a conflicting `v1.2.5`), |
| 15 | + GitHub reachable from 4 chrome slots, open-source/MIT stated 4×. |
| 16 | +- 5–6 accent hues compete in one viewport (rainbow DB names, 4-color stats, |
| 17 | + multi-color badges); no single accent moment. |
| 18 | +- QueryChrome stacks 5 horizontal strips above the H1 (~y=395px). |
| 19 | + |
| 20 | +## Principles |
| 21 | + |
| 22 | +1. **One strip, one job.** No datum appears twice in the shell. |
| 23 | +2. **Semantic color budget.** Blue = interactive/CTA (filled blue on exactly |
| 24 | + two elements: Live Demo + RUN). Green = connection state, one animated |
| 25 | + pulse total (StatusBar). Amber = warning/pre-alpha only. Purple = AI only. |
| 26 | + Red = errors only. Everything else zinc. |
| 27 | +3. **Progressive disclosure, not deletion.** The console-notice gags are demo |
| 28 | + funnels — they survive one click deeper (Query menu, `⋯` overflow, ⌘K |
| 29 | + palette) or become non-focusable spans. The IDE fiction stays. |
| 30 | +4. **Chrome type scale:** 11 / 12 / 13 / 15 px only (no half-pixel steps). |
| 31 | +5. Mono stays everywhere (spec: mono-first). Body copy gets reading |
| 32 | + ergonomics (measure/leading), not a sans face. |
| 33 | + |
| 34 | +## Changes |
| 35 | + |
| 36 | +### TopBar (12 items → 7) |
| 37 | +Cut: `▤ +` dead glyphs, `PRODUCTION • ONLINE` caps, separate Online pill, |
| 38 | +Monitoring button, `v0.9.29`. Connection chip gets one static green dot. |
| 39 | +Monitoring gag re-homed as a ⌘K palette entry. Keep: brand, connection chip, |
| 40 | +★ GitHub, Playground, ⌘K, Live Demo (filled). |
| 41 | + |
| 42 | +### QueryChrome (5 strips → 4 bands, 29 interactive → 8 visible) |
| 43 | +Owner-directed final form (tightened beyond the audit consensus): |
| 44 | +- Tab bar: `{table}.sql` + ✕ (kept gag), `+` demoted to span. README.md tab |
| 45 | + removed — GitHub lives in TopBar + StatusBar. |
| 46 | +- Toolbar strips 2+3 replaced by ONE strip holding only **RUN** + ⌘+Enter |
| 47 | + chip. Query/Save/Copy/BEGIN/SANDBOX/EDIT/IMPORT/Format/Clear/Lines/AI all |
| 48 | + removed from chrome (Copy/Export/AI remain reachable via ⌘K palette). |
| 49 | +- Results row: Results, ✦ Explain (single trigger), History (span), |
| 50 | + Autopilot, and a `⋯` overflow with Saved/Charts/NL2SQL/Pivot/Diff/Dashboard |
| 51 | + (notices intact). Docs tab and the `{rows} · {cols} · {ms}` + Export meta |
| 52 | + removed — RUN's console toast still reports rows/ms in-fiction. |
| 53 | +- Result-meta strip (strip 5) deleted — it was 100 % duplicate data. |
| 54 | + |
| 55 | +### StatusBar (15 items → 9) |
| 56 | +Keep: Connected (the one animated pulse), 5 real links (promoted to |
| 57 | +`text-muted`), one faint identity cluster `Ln 1, Col 1 · UTF-8 · SQL · ◆ v0.9.29`. |
| 58 | +Cut: `LibreDB:latest`, `public`, `{table}.sql`, `{rows} rows`, duplicate brand. |
| 59 | + |
| 60 | +### Explorer |
| 61 | +Count pill de-pilled (plain faint text). Schema badges quieted to lowercase |
| 62 | +`text-dim`, no border/accent. Row counts stay (core "table = page" loop) but |
| 63 | +carets dim at rest and brighten on hover/active. Rows default `text-muted`, |
| 64 | +active bright (Railway dim pattern). Column `◆` icons → `text-dim`. |
| 65 | +Sidebar footer deleted (duplicate Connected + conflicting `v1.2.5`). |
| 66 | +Toggles: `tabindex="-1"`, ≥24 px hit area (36 px in drawer). |
| 67 | + |
| 68 | +### HomeSection |
| 69 | +- Badge pill kept (fastest open-source signal), dot static. |
| 70 | +- Subtitle rewritten (~20 words, "IDE" matches H1, no adjective stack); the |
| 71 | + 7 DB names render as **quoted green SQL string literals** — one hue, |
| 72 | + in-fiction, replacing the 5-hue rainbow. |
| 73 | +- Stats: `7+ Databases`/`100% Open Source`/`MIT License` dedup → |
| 74 | + `1-click Deploy anywhere · MIT Open source & free · AI Native Copilot · |
| 75 | + SSO Enterprise sign-on`; numerals `text-bright`, AI tile keeps `text-ai`. |
| 76 | +- Tip comments 2 → 1 line; family heading → "one core, three products"; |
| 77 | + studio card no longer a self-link (div, keeps ring + "you are here"); |
| 78 | + footnote 3 lines → 1, sponsor line dropped (StatusBar link covers it). |
| 79 | + |
| 80 | +### Accessibility bundle |
| 81 | +Skip-to-content link (in-character), `aria-label="Explorer"` on asides, |
| 82 | +global `:focus-visible` ring in primary, mobile drawer ✕ and Explain ≥40 px |
| 83 | +hit areas, mobile CTA relabeled `▶ Live Demo` (was a dishonest `RUN`), |
| 84 | +toast NOTICES lose leading glyphs (SR noise) and pause on keyboard focus, |
| 85 | +~15 fake buttons demoted to spans (delegated handler works on any Element). |
| 86 | + |
| 87 | +### Section-page color discipline (cheap, systemic) |
| 88 | +Features kickers: 7-color map → `text-dim` (AI keeps `text-ai`; SECURITY no |
| 89 | +longer error-red). TechStack layer headers + Reliability stat numbers → |
| 90 | +`text-bright`. Providers keeps its syntax-mimicry colors, but Redis moves off |
| 91 | +the `text-bad` error token. |
| 92 | + |
| 93 | +## Out of scope (follow-ups) |
| 94 | +- Deploy page: collapse 26 "planned" targets into chips; one-color summary. |
| 95 | +- Docker-compose page: `<details>` per env-var group; nest under deploy in tree. |
| 96 | +- Hero "one live moment" (query types itself once, VT-safe). |
| 97 | +- Trust row under stats (GitHub stars / quote as SQL comment). |
| 98 | +- Tokenized type scale in `@theme` + CI guard against new `text-[..px]` in chrome. |
0 commit comments