Skip to content

design: declutter the studio shell — quiet chrome, one accent moment - #27

Merged
cevheri merged 13 commits into
mainfrom
design/declutter-shell
Jul 15, 2026
Merged

design: declutter the studio shell — quiet chrome, one accent moment#27
cevheri merged 13 commits into
mainfrom
design/declutter-shell

Conversation

@cevheri

@cevheri cevheri commented Jul 15, 2026

Copy link
Copy Markdown
Member

Why

The IDE-shell concept is loved, but the page reads as overloaded — too many icons, buttons, labels and micro-texts. A 6-dimension multi-agent UX audit (density, hero hierarchy, tokens, a11y, 2026 competitive research, inner pages) with an adversarial brand/conversion critique pass measured:

  • ~70 interactive chrome elements before any marketing content (~66 tab stops before the first CTA)
  • the same datum repeated 2–4×: row count ×3, home.sql ×3, Connected/Online ×4, version ×3 (incl. a conflicting v1.2.5), GitHub reachable from 4 slots, open-source/MIT stated 4×
  • 5–6 accent hues competing per viewport — no single accent moment
  • H1 starting ~395 px down the viewport under 5 stacked QueryChrome strips

The audit consensus was then tightened further in live owner review — the final form cuts deeper than the agents dared.

Design principles (full doc: docs/designs/2026-07-15-declutter-shell-design.md)

  1. One strip, one job / one fact, one owner — no datum appears twice, in chrome or in content
  2. Semantic color budget — filled blue on exactly two elements (Live Demo + RUN); green = connection only (single animated pulse, StatusBar); amber = warning; purple = AI; red = errors
  3. Progressive disclosure, not deletion — the console-notice gags survive one click deeper ( overflow, ⌘K palette); the IDE fiction stays
  4. List only what ships — no "planned" affordances anywhere

What changed

Area Before After
TopBar 12 items 5 — brand, GitHub, Playground, ⌘K, Live Demo; libredb.org chip gone ("zaten bu sitedeyim")
QueryChrome 5 strips, 29 interactive controls 3 bands, 5 visible — tab bar (no README), editor line with RUN in the gutter in front of the SQL, results row: Results / ✦ Explain + overflow holding all 8 gags; every meta strip deleted
StatusBar 15 tokens 9 — one Connected pulse, real links promoted, Ln 1, Col 1 · UTF-8 · SQL · v0.9.29 kept as the IDE wink
Explorer connection box, CONNECTIONS label, header + count pill, placeholder, loud badges, footer w/ v1.2.5 search + tree, nothing else; quiet lowercase badges, dim carets
Hero badge + H1 + 40-word 5-hue subtitle + stats grid + 2 tip lines + 3 footnote lines badge (license) · H1 (AI/IDE) · subtitle (7 engines as green SQL string literals + SSO) · CTAs (demo/deploy) · family cards — stats grid, tip and footnotes deleted; the whole homepage fits one 1440×900 viewport with zero repeated facts
Deploy page 39 targets, 26 of them "planned" full cards; 5-color summary strip; investor star-total band; star-refresh script silently broken (import in an inline script) 16 live targets synced with distribution/channels.yaml — Homebrew, Snap Store, GitHub Releases (.deb/.rpm) added as missing live channels; planned targets + cloud category + summary strip + star band deleted; one positive closer ("any Docker host works today"); star refresh fixed
Mobile libredb.org / ONLINE • PostgreSQL, RUN CTA that navigates away LibreDB Studio brand, honest ▶ Live Demo CTA

A11y bundle: skip-to-content link, :focus-visible ring, aria-label on explorer asides, ≥40 px mobile hit areas, fake buttons demoted to spans, toasts pause on keyboard focus.

Inner pages: Features kickers single-hue (SECURITY no longer error-red, AI keeps purple), TechStack/Reliability stat rainbows flattened, Redis off the text-bad token.

Verification

  • bun run gate green on every commit (typecheck · prettier · oxlint · knip · 61 tests — deploy tests now assert the live-channel mirror and that no planned target is listed)
  • Built site exercised via Playwright at 1440×900 and 390×844 after each round: hero, features, deploy, family section, overflow menu, Save gag toast, skip link, Explain toggle — all working; deploy star-refresh confirmed firing (GitHub API calls now leave the page)
  • Before/after screenshots: docs/designs/_ref/shots/declutter-*.png (_ref is git-ignored, local only — also shared as an artifact page)

Follow-ups (out of scope)

Generate deploy-targets.ts from distribution/channels.yaml (single source of truth) · docker-compose <details> groups · hero "one live moment" typing animation · trust row (GitHub stars / quote) · @theme type-scale tokens + CI guard

⚠️ Do not merge — owner review requested.

🤖 Generated with Claude Code

cevheri and others added 3 commits July 15, 2026 05:37
Multi-agent UX audit (6 dimensions + adversarial critique) measured ~70
interactive chrome elements before any content, the same datum repeated
2-4x across strips, and 5-6 accent hues competing per viewport.

Shell:
- TopBar 12 items -> 6: cut dead glyphs, PRODUCTION/ONLINE dup, Monitoring
  (gag re-homed in the command palette), version tag
- QueryChrome 5 strips -> 4 bands, 29 interactive -> 8 visible: single RUN
  toolbar, README tab and Query/Copy/SANDBOX/AI controls removed, results
  row trimmed to Results/Explain/History/Autopilot + a real overflow menu
  holding the remaining feature-tease gags, duplicate meta strips deleted
- StatusBar 15 items -> 9: one animated Connected pulse (the only one left
  on the page), real links promoted, single faint identity cluster
- Explorer: count de-pilled, badges quieted, carets dim at rest, footer
  with conflicting v1.2.5 removed, CONNECTIONS label and search placeholder
  dropped

Hero: subtitle rewritten with DB names as green SQL string literals (one
hue instead of five), stats deduped (MIT/OSS merged, AI keeps purple),
family cards neutralized, studio self-link now a div, footnotes trimmed.

A11y bundle: skip-to-content link, :focus-visible ring, aria-labels on
explorer asides, 40px mobile hit areas, honest "Live Demo" mobile CTA,
fake buttons demoted to spans (~66 -> 33 tab stops before the hero CTA),
toast glyph cleanup + keyboard focus pauses auto-dismiss.

Section pages: Features kickers single-hue (AI keeps purple), TechStack/
Reliability stat rainbows flattened, Redis off the error-red token.

Design doc: docs/designs/2026-07-15-declutter-shell-design.md
Before/after: docs/designs/_ref/shots/declutter-*.png

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- QueryChrome: both toolbars gone (5 strips -> 3 bands); RUN moves in
  front of the SQL statement, DataGrip-style; command+Enter chip dropped
  (shortcut still wired via title tooltip)
- TopBar: libredb.org connection chip removed — the visitor is already
  on the site; brand + GitHub/Playground/palette/Live Demo remain
- MobileTopBar: brand name instead of the URL, ONLINE microline dropped
- Explorer: CONNECTIONS label and search placeholder removed
- Keyboard path to the hero CTA: 28 tab stops (was ~66)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The explorer now opens directly with the tree header + search — the
visitor is already on libredb.org, the connection fiction lives on in
the StatusBar's Connected pulse.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR implements a “decluttered” LibreDB Studio IDE-shell UI by reducing repetitive chrome, consolidating actions into fewer bands/menus, and tightening the color/type scale, with a stated goal of improving keyboard tab-stop count and overall hierarchy.

Changes:

  • Streamlines Studio chrome (TopBar / QueryChrome / StatusBar / Explorer) and moves secondary “gag” actions into overflow/palette.
  • Adds an IDE-style global :focus-visible ring and updates toast behavior to pause dismiss while interacted with.
  • Flattens section-page color accents to preserve a single primary accent moment (AI stays purple; other categories quieted).

Reviewed changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/styles/global.css Adds global focus ring; adjusts Explorer row/caret visual states
src/scripts/studio.ts Removes StatusBar meta sync; improves toast pause/resume; adds chrome menu closing behavior; adds palette “Live monitoring”
src/scripts/lib/console-copy.ts Removes leading glyphs from notice copy
src/data/schemas.ts Quiets schema badge styling (text-only, dim)
src/components/studio/TopBar.astro Reduces top bar items and adjusts sizing/color emphasis
src/components/studio/StudioShell.astro Adds skip link, labels Explorer asides, and updates StatusBar usage
src/components/studio/StatusBar.astro Simplifies status bar content and consolidates “IDE identity cluster”
src/components/studio/QueryChrome.astro Collapses multiple toolbars into editor + results row; adds overflow menu
src/components/studio/MobileTopBar.astro Aligns mobile bar with new branding/CTA and improves close hit area
src/components/studio/MobileQueryCard.astro Adjusts Explain control styling/spacing on mobile
src/components/studio/Explorer.astro Removes connections header/footer; quiets badges; tweaks spacing/hit areas
src/components/sections/TechStackSection.astro Flattens layer header colors to bright/neutral
src/components/sections/ProvidersSection.astro Moves Redis off “error” color token
src/components/sections/HomeSection.astro Rewrites hero/subtitle/stats and de-rainbows DB list into SQL-literal styling
src/components/sections/FeaturesSection.astro Flattens feature category colors (AI remains purple)
src/components/sections/DatabaseReliabilitySection.astro Flattens reliability stat colors to bright/neutral
docs/designs/2026-07-15-declutter-shell-design.md Adds design rationale/spec documenting declutter and a11y goals

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/scripts/studio.ts
Comment thread src/scripts/studio.ts Outdated
Comment thread src/components/studio/Explorer.astro
Comment thread src/components/studio/QueryChrome.astro
Comment thread src/components/studio/QueryChrome.astro Outdated
cevheri and others added 3 commits July 15, 2026 05:50
…plain · overflow

Per owner review: the Explorer header row ("Explorer · 14") goes — the
sidebar is now just search + tree; History and Autopilot leave the
visible results row and join the other gags inside the overflow menu.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Every hero element now states one fact exactly once: badge = license/
open-source, H1 = AI + SQL IDE, subtitle = the seven engines + SSO,
CTAs = demo/deploy. The stats grid is deleted outright — all four tiles
(1-click deploy, MIT, AI, SSO) repeated facts already visible in the
same viewport. Footnote trimmed to the unique open-core fact; the home
export payload ships the engine list instead of the deleted stats.

The full homepage now fits a single 1440x900 viewport.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The explorer rows read as navigation without instruction, and the family
cards' status labels already tell the open-core story — the
sustainability pitch belongs on /platform or the FAQ, not a faint hero
footnote. The homepage is now a single screen with zero repeated facts.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 17 out of 17 changed files in this pull request and generated 2 comments.

Comment thread src/components/studio/Explorer.astro
Comment thread src/styles/global.css
cevheri and others added 2 commits July 15, 2026 06:07
…s documentation and components

This commit standardizes the terminology used throughout the project, reflecting the transition from pre-alpha to early-beta. Changes include updates to design documents, component sections, and schema definitions to ensure consistency in messaging regarding the project's readiness for production.
…s.yaml

The studio repo's channel inventory (distribution/channels.yaml) is the
source of truth; the page now mirrors its live channels:

- Added missing live install methods as first-class registry cards:
  Homebrew tap, Snap Store, GitHub Releases (tarballs + .deb/.rpm)
- Deleted all 26 "planned" targets and the all-planned Cloud hyperscalers
  category — the site lists only what works today; one positive comment
  line ("any Docker host works today") replaces five aspirational cards
- Deleted the category summary strip (counts duplicated the sections
  below) and the investor star-total band (summing third-party platforms'
  stars overstated traction)
- Fixed a real bug: the star-refresh script used `import` inside a
  data-astro-rerun inline script and threw "Cannot use import statement
  outside a module" on every load — live star counts had never refreshed;
  the formatStars helper is now mirrored inline
- deploy explain/description strings updated; tests now assert the
  live-channel mirror and that no planned target is listed

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@cevheri
cevheri force-pushed the design/declutter-shell branch from 941de7a to a9e2b85 Compare July 15, 2026 03:18
cevheri and others added 3 commits July 15, 2026 06:23
The status bar is the site's only footer — the conventional home for
social links. X and YouTube are the two highest-value channels for a
dev audience (community + product demos); Instagram deliberately
skipped as the weakest fit.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Owner call: all four social channels are actively maintained, and the
bar stays comfortable — verified no overflow down to the 1024px desktop
breakpoint. Final link set: GitHub · LinkedIn · X · YouTube · Instagram ·
Reddit · Docker · Sponsor · Privacy.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds the LibreDB Studio promo (youtu.be/wJPWPe1mJes) under the hero CTAs.
Facade pattern: a self-hosted poster + play button costs zero third-party
bytes and sets no cookies at rest; pressing play swaps in a
youtube-nocookie.com iframe with autoplay (new 'video' action in the
delegated studio.ts handler, VT-safe). Verified end-to-end with Playwright.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@cevheri

cevheri commented Jul 15, 2026

Copy link
Copy Markdown
Member Author

Added per owner review: the 60-second promo video now sits under the hero CTAs as a click-to-load facade — self-hosted poster, zero third-party bytes/cookies until play, then a youtube-nocookie.com iframe with autoplay. Also on this branch since the last body update: X/YouTube/Instagram/Reddit footer links (no overflow down to 1024px) and the deploy-page sync with distribution/channels.yaml.

Verified each of the 6 unique findings against the code; 4 warranted
changes, 2 were by-design/outdated (answered in-thread):

- studio.ts header no longer claims syncActive updates the StatusBar
- toast auto-dismiss now tracks hover+focus state so a mouse pass-over
  can't restart the timer under a still-focused toast
- explorer columns get a keyboard path without restoring 15 tab stops:
  ArrowRight/ArrowLeft on the focused row link expands/collapses
- focus indicators: palette input gains focus:border-primary; the
  Playground reset/textarea/Run drop focus:outline-none so the global
  :focus-visible ring applies (the other outline-none usages already
  pair with focus:border-primary)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 30 out of 31 changed files in this pull request and generated 5 comments.

Comment thread src/scripts/studio.ts Outdated
Comment thread src/components/studio/Explorer.astro
Comment thread src/components/studio/QueryChrome.astro
Comment thread src/data/sections.ts Outdated
Comment thread src/data/deploy-targets.test.ts Outdated
- "a early-beta" -> "an early-beta" in the reliability explain text
- the registry test now asserts the exact set of 8 live channel slugs
  instead of a count plus a 6-slug subset

The other three comments were stale or by-design (answered in-thread):
the toast timer already tracks hover+focus state, the explorer columns
already have an ArrowRight/ArrowLeft keyboard path, and the "+" span is
a deliberately non-focusable decorative gag.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@cevheri
cevheri merged commit d9005b3 into main Jul 15, 2026
4 checks passed
@cevheri
cevheri deleted the design/declutter-shell branch July 15, 2026 03:43
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.

2 participants