Skip to content

feat(studio): the Reflective redesign — help tooltips, builder layout, house palette - #97

Merged
aliakherati merged 1 commit into
studio/devfrom
feat/reflective-redesign
Aug 27, 2026
Merged

feat(studio): the Reflective redesign — help tooltips, builder layout, house palette#97
aliakherati merged 1 commit into
studio/devfrom
feat/reflective-redesign

Conversation

@aliakherati

Copy link
Copy Markdown
Collaborator

The Reflective redesign

"Cleaner and more intuitive buttons with graphs. Each box doesn't need explanation text — a
question mark you can hover. Be inspired by reflective.org, simulator.reflective.org and
tomas-fe.vercel.app."

Built from the sources, not from memory of them: the SAI simulator frontend
(reflective-simulator/sai-simulator-fe) uses Radix Themes + Inter + lucide, a zero-delay
CircleHelp tooltip beside every control, and a builder-left / plots-right layout;
reflective.org contributes navy #091834 / gold #f1b80d / steel #466f8d; tomas-fe the warm
paper ground (#f5f0eb on #242220). Plume Studio now composes exactly those pieces —
lucide-react is taken as a real (pinned) dependency because it is literally their icon set.

What changed

  • Every explanation is behind a ?. Field descriptions + provenance, section notes, and panel
    prose all moved into CircleHelp hover tooltips (real <button>s — keyboard focus opens them
    too). What stays visible is data: totals, extremes, mode lines, derived values.
  • Controls left, graphs right (sticky) inside each stage — the simulator's builder layout.
  • Icon-pill stepper (ThermometerSun, Wind, FlaskConical, Waves, CloudHail, Atom,
    SlidersHorizontal, ClipboardCheck), navy primary buttons, gold overrides/markers, paper cards
    with soft shadows. Dark mode is a navy-tinted palette of its own, not an inversion.

Found by rendering and re-driving, per the house rule

  • Dark-on-dark stage tabs: the dark-mode button { color } override outranks .stage-tab by
    specificity, so inactive tabs and help triggers were illegible on first render. Re-stated per
    shape, trap documented in the CSS.
  • The smoke script had silently rotted twice — it typed into plume_length_m (derived since
    0.3.0; the entered field is given_track_length_m) and predated commit-on-Enter, so its edits
    filled drafts the server never saw. Steps printed; nothing failed. Repaired, and the full flow
    re-verified in the new UI: override → stale tab turns red → accept → review counts exactly one
    change → schema refusals surface with their own messages.

360 Python Tier-A, 58 vitest — unchanged, because the redesign is presentation over the same
seams; every tested hook (input ids, badge classes, draft hint, button texts) was kept.

Stacked on #96 (ERA5). Merge that first; same rebase dance if flagged.

…t, house palette

Requested in review: cleaner and more intuitive controls, explanations behind a hover
question mark rather than paragraphs in every box, in the style of reflective.org,
simulator.reflective.org and tomas-fe.vercel.app.

Design sources read rather than imagined: the SAI simulator frontend uses Radix Themes,
Inter, lucide icons, a zero-delay CircleHelp tooltip beside every control, and a
builder-left/plots-right layout; reflective.org contributes navy #091834, gold #f1b80d
and steel #466f8d; tomas-fe the warm paper ground (#f5f0eb on #242220). lucide-react is
taken as a real dependency because it is literally their icon set.

- Field descriptions and provenance move behind a CircleHelp hover (a real button, so
  keyboard focus opens it too). Section notes and panel prose likewise: visible text is
  now DATA -- totals, extremes, mode lines -- and explanation is on demand.
- Stages render controls-left / graphs-right (sticky), the simulator's builder layout;
  the stepper is icon pills.
- Navy primary buttons, gold overrides/markers, paper cards; dark mode is a navy-tinted
  equivalent with its own palette, not an inversion.

Two defects found by looking, one by re-running:
- Dark mode's `button { color }` override outranks `.stage-tab` by specificity, so
  inactive tabs and help triggers rendered dark-on-dark. Re-stated per shape, with the
  trap documented in the CSS.
- The smoke script had silently rotted twice: it typed into plume_length_m (derived since
  0.3.0; the entered field is given_track_length_m) and predated commit-on-Enter, so its
  edits filled drafts the server never saw -- steps printed, nothing failed. Repaired and
  the full flow re-verified in the new UI: override -> stale tab -> accept -> review
  counts one change -> schema refusals surface with their own messages.

360 Python Tier-A, 58 vitest -- unchanged, as the redesign is presentation over the same
seams and every tested hook (ids, badges, draft-hint, button texts) was kept.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EaDHnPdiacsybr8Tp5WnqR
@aliakherati
aliakherati force-pushed the feat/reflective-redesign branch from 13d184b to 91688cf Compare August 21, 2026 04:23
@aliakherati
aliakherati merged commit c3b9ca0 into studio/dev Aug 27, 2026
2 checks passed
@aliakherati
aliakherati deleted the feat/reflective-redesign branch August 27, 2026 01:23
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