Skip to content

feat(core): Full reworked, Prompt on the theme's ground, the switch knob (#154) - #155

Merged
Maxaubert merged 14 commits into
mainfrom
feat/154-full-style
Oct 11, 2026
Merged

Maxaubert merged 14 commits into
mainfrom
feat/154-full-style

Conversation

@Maxaubert

Copy link
Copy Markdown
Owner

Closes #154. Follow-up to #143 (PR #147), from the mockup and plan the owner approved on 2026-10-10 (research/prism-terminal/mockups/2026-10-10-full-style/). Spec: docs/superpowers/specs/2026-10-10-full-style-rework-design.md.

What changes

Full (choice 1A, choice 2 as the owner changed it)

  • Finished: the icon's rainbow, solid, flowing slowly across the whole tab (p-mark-flow-fill, 228 px tile, 14 s). The dark badge and its foot line are gone. Its name ink is judged on the rainbow's worst colour (rainbowInk): black on Volt, the text on Paper.
  • Working: the fill carries Minimal's own working mark on top. On Classic the run is the name's ink, so it is black on Volt's yellow-green (owner: "should be black and not like a faded arc yellow"). On Prompt the growing arrow edge sits in the ground-coloured gap, where black would disappear on a dark theme, so it keeps the shade that clears 3:1 on the fill and the ground (shadeOn: Volt #798f15, Paper #1c3e59). The spec records this split. The ride is gone.

Prompt on the theme's ground (choice 3A)

  • An idle segment paints nothing, and the tab in front is --p-tab-active, the same as Classic. --p-seg and --p-seg-on are removed, along with their :root fallbacks and tests.
  • The edge band tucks 1 px only under a segment that paints. A tuck under a see-through segment would widen the edge to 4.5 px.

Settings switches

  • The ON knob is the new --p-switch-knob: black on a dark theme and white on a light one (measured from the ground). It flips to the other colour only where the default reads under 2:1 on the ON track (owner: "keep that to being black on dark themes and white on light themes ... only when the color is very close"). The rule is in core/renderer/lib/switchKnob.ts and is computed in chromeTokens. The track is unchanged.
  • An opaque accent is held to 3:1 on the ground, which also keeps it clear of the default knob. So the flip only shows with a see-through accent: a pale one on Paper gives a black knob, a deep one on PT Default gives a white knob. The e2e measures both.

Core / Prism

This changes core/ (0.28.1 -> 0.30.0, above #153's 0.29.0), so merging ships it to Prism too. Prism is unaffected: its strip does not use resolveTabMark, markPalette or marks.css, and SWITCH_KNOB_ON is var(--p-switch-knob, var(--p-on-accent)). Prism keeps its current knob until it defines the token. App 0.35.1 -> 0.36.0.

Gates

  • typecheck, lint (0 errors), unit 1611/1611
  • e2e, one at a time: indicatorStyles, tabStyle, indicator, attention, accent, themeSwitch
  • Screenshots in .e2e-shots/marks-* (Volt and Paper, Classic and Prompt), checked against the mockup's overview.png.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t

Maxaubert and others added 4 commits October 10, 2026 06:01
…nob (#154)

Full: finished is the icon's rainbow flowing across the whole tab; a working
fill carries Minimal's mark on top, the run in the name's ink on Classic
(owner: black on Volt's yellow, not a faded yellow) and the growing edge in a
shade clearing 3:1 on fill and ground on Prompt. The badge and the ride go.

Prompt segments are the theme's own ground: idle paints nothing, the tab in
front is --p-tab-active; --p-seg and --p-seg-on are removed. The edge band
tucks only under a segment that paints.

Switches: the ON knob is --p-switch-knob, black on a dark theme and white on
a light one, flipped only under 2:1 on the track. Core falls back to
--p-on-accent, so Prism is unchanged.

Core 0.30.0, app 0.36.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
The owner's pick. The stored id stays 'prompt' so saved choices survive.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
#154)

Owner: the pulsing edge belongs to the tab in front; a working Full fill on
Powerline is the fill alone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
Maxaubert and others added 10 commits October 11, 2026 02:59
shadeOn (the edge on a working Powerline fill, gone) and its tests, the
edge span's data-mark-overlay (always undefined), and the docs that still
spoke of a grow overlay or an edge on a Powerline fill.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
The tabs sit on the theme's own ground, so the ground-coloured gap between
them was no border at all. With no mark, the band is now --p-tab-edge:
darker than the ground where it leaves room (dark grey gets black, white
gets light grey), lighter only on a ground too dark for that (black gets
grey), at least 1.5:1 off the ground.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
At the 1.5 floor a #2b2b2b ground (1.48:1 off black) went lighter. Black is
taken whenever it stands off at all visibly (1.3).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
Owner, 2026-10-11: "all themes should have its bg color + a bit darker,
except black themes since that's not possible". Every ground's border steps
toward black (1.25:1, or black itself); only a true-black ground gets a
dark grey (1.2:1).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
… line, no High Contrast

Owner, 2026-10-11:
- The Powerline border is the ground a bit darker, a dark ground's stopping at
  a very dark grey short of black; a light ground's stands 1.45:1 off it
  ("white themes have too faint of borders").
- The light column of the Edges alphas is raised about half again (Hairline
  10/12 to 15/17, the DWM border 0.16 to 0.22), "the border edges in general
  are too faint".
- Classic tabs get a faint line between them again, in the divider's ink.
- High Contrast is removed; whoever wore it goes to Pitch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
Owner, 2026-10-11: they "should go down to the bottom" and "to the top".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
…s setting

Owner, 2026-10-11: "the chevron border should match the edge border colour.
maybe they can follow the thinner style too when you're on faint". tabEdge and
--p-tab-edge are gone; the plain band paints --p-divider, so it is fainter on
Faint, stronger on Solid and gone on None, like every other line.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
Owner, 2026-10-11: "the border is gone when it's working, that edge border
should still be there". The working edge on the tab in front grows from
nothing each cycle; the plain border is now drawn under every mark.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
# Conflicts:
#	core/package.json
#	package-lock.json
#	package.json
@Maxaubert
Maxaubert merged commit 5d3f309 into main Oct 11, 2026
2 checks passed
@Maxaubert
Maxaubert deleted the feat/154-full-style branch October 11, 2026 07:35
github-actions Bot pushed a commit that referenced this pull request Oct 11, 2026
…nob (#154) (#155)

* feat(core): Full reworked, Prompt on the theme's ground, the switch knob (#154)

Full: finished is the icon's rainbow flowing across the whole tab; a working
fill carries Minimal's mark on top, the run in the name's ink on Classic
(owner: black on Volt's yellow, not a faded yellow) and the growing edge in a
shade clearing 3:1 on fill and ground on Prompt. The badge and the ride go.

Prompt segments are the theme's own ground: idle paints nothing, the tab in
front is --p-tab-active; --p-seg and --p-seg-on are removed. The edge band
tucks only under a segment that paints.

Switches: the ON knob is --p-switch-knob, black on a dark theme and white on
a light one, flipped only under 2:1 on the track. Core falls back to
--p-on-accent, so Prism is unchanged.

Core 0.30.0, app 0.36.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t

* test(e2e): pick the opaque dark accent before the see-through one (#154)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t

* feat: call the Prompt tab style Powerline (#154)

The owner's pick. The stored id stays 'prompt' so saved choices survive.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t

* feat(core): no pulsing arrow on a working Powerline tab you are not on (#154)

Owner: the pulsing edge belongs to the tab in front; a working Full fill on
Powerline is the fill alone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t

* refactor(core): drop the #154 rework's leftovers

shadeOn (the edge on a working Powerline fill, gone) and its tests, the
edge span's data-mark-overlay (always undefined), and the docs that still
spoke of a grow overlay or an edge on a Powerline fill.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t

* feat: Powerline tabs get a visible border (owner, 2026-10-11)

The tabs sit on the theme's own ground, so the ground-coloured gap between
them was no border at all. With no mark, the band is now --p-tab-edge:
darker than the ground where it leaves room (dark grey gets black, white
gets light grey), lighter only on a ground too dark for that (black gets
grey), at least 1.5:1 off the ground.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t

* fix: a dark grey ground's Powerline border is black

At the 1.5 floor a #2b2b2b ground (1.48:1 off black) went lighter. Black is
taken whenever it stands off at all visibly (1.3).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t

* fix: the Powerline border is the ground a bit darker

Owner, 2026-10-11: "all themes should have its bg color + a bit darker,
except black themes since that's not possible". Every ground's border steps
toward black (1.25:1, or black itself); only a true-black ground gets a
dark grey (1.2:1).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t

* feat: darker Powerline borders, stronger light edges, Classic's faint line, no High Contrast

Owner, 2026-10-11:
- The Powerline border is the ground a bit darker, a dark ground's stopping at
  a very dark grey short of black; a light ground's stands 1.45:1 off it
  ("white themes have too faint of borders").
- The light column of the Edges alphas is raised about half again (Hairline
  10/12 to 15/17, the DWM border 0.16 to 0.22), "the border edges in general
  are too faint".
- Classic tabs get a faint line between them again, in the divider's ink.
- High Contrast is removed; whoever wore it goes to Pitch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t

* docs: the light Edges alphas raised (2026-10-11)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t

* fix: Classic's line between tabs runs the strip's full height

Owner, 2026-10-11: they "should go down to the bottom" and "to the top".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t

* fix: the Powerline border wears the divider's ink, following the Edges setting

Owner, 2026-10-11: "the chevron border should match the edge border colour.
maybe they can follow the thinner style too when you're on faint". tabEdge and
--p-tab-edge are gone; the plain band paints --p-divider, so it is fainter on
Faint, stronger on Solid and gone on None, like every other line.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t

* fix: the Powerline border stays under a growing working edge

Owner, 2026-10-11: "the border is gone when it's working, that edge border
should still be there". The working edge on the tab in front grows from
nothing each cycle; the plain border is now drawn under every mark.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t

---------

Co-authored-by: Claude Opus 5.5 <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.

Full style rework, Prompt on the theme's ground, switch knob ink

1 participant