Repository navigation
feat(core): indicator styles, the rainbow finish and Prompt tabs (#143) - #147
Merged
Merged
Conversation
The owner's decisions of 2026-10-10 (mockups approved, "go ahead and build"): Classic and Prompt tab styles, Off / Minimal / Ring / Full marks, the flowing rainbow finish, the question breathe, the Full name flip rule. Records the core/app split: the marks' rules, motion and rows in the core behind an optional TermHostConfig.tabMarks so Prism is unchanged until it adopts them; the tab style and Prompt geometry in this app. Bumps core to 0.28.0 and the app to 0.35.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
The pure rules (markColours, nameInk, tabMark, markPalette), the marks' motion in core/renderer/styles/marks.css, the TabMark component, Ring and the rainbow switch, tabMarks on TermHostConfig, the Tab style setting and the Classic and Prompt strips. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
#143) 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
The strip renders on every pointer move of a tab drag; flooring the mark colours on every ground each time was work the frame did not need. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
…yles # Conflicts: # core/package.json # docs/regression-rules.md # package.json
github-actions Bot
pushed a commit
that referenced
this pull request
Oct 10, 2026
… (#147) * docs(core): spec and plan for indicator styles and Prompt tabs (#143) The owner's decisions of 2026-10-10 (mockups approved, "go ahead and build"): Classic and Prompt tab styles, Off / Minimal / Ring / Full marks, the flowing rainbow finish, the question breathe, the Full name flip rule. Records the core/app split: the marks' rules, motion and rows in the core behind an optional TermHostConfig.tabMarks so Prism is unchanged until it adopts them; the tab style and Prompt geometry in this app. Bumps core to 0.28.0 and the app to 0.35.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t * feat(core): indicator styles, the rainbow finish and Prompt tabs (#143) The pure rules (markColours, nameInk, tabMark, markPalette), the marks' motion in core/renderer/styles/marks.css, the TabMark component, Ring and the rainbow switch, tabMarks on TermHostConfig, the Tab style setting and the Classic and Prompt strips. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t * test(e2e): tab styles and indicator styles measured, no tab separators (#143) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t * docs: the tab marks, the rainbow finish and Prompt tabs (#143) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t * perf(tabs): work out the mark palette only when its inputs change (#143) The strip renders on every pointer move of a tab drag; flooring the mark colours on every ground each time was work the frame did not need. 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>
This was referenced Oct 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #143.
Builds the owner's 2026-10-10 decisions: "Let's drop the tab style where ... the tab is fully filled out in that rainbow color. Let's just keep the like that border that moves slowly. The pulsation effect is also now exactly what I want it. And I like the gentle pulse too for questions. Make sure that's also applied to the minimal style for normal tabs."
Spec and plan:
docs/superpowers/specs/2026-10-10-indicator-styles-design.md,docs/superpowers/plans/2026-10-10-indicator-styles.md. Mockups (source of truth):research/prism-terminal/mockups/2026-10-10-prompt-styleand2026-10-10-indicators-r4.What changes
Indicator styles (Settings > Agents > Agent working indicator): Off, Minimal, Ring, Full.
Tab style (Settings > Appearance, right after Tab width): Classic (the strip as it was, default) or Prompt (chevron segments; the arrow edge is the mark, with the approved grow pulse, joining the active tab's top rule). No line between tabs in either style.
Core change: this is a change to Prism too, but Prism's look does not change
The rules (
lib/tabMark.ts,markColours.ts,nameInk.ts,markPalette.ts),components/TabMark.tsxand the motion (renderer/styles/marks.css) are incore/. Core 0.27.0 -> 0.28.0, app 0.34.0 -> 0.35.0.Prism is unchanged until it adopts the marks: it passes no
tabMarks, so it keeps Off / Minimal / its own Full, a stored Ring reads as its default, and the rainbow row is not drawn there (that row lives in a new list,markOptions.ts, not inTERMINAL_OPTIONS, for the reasonhelpOptions.tsgave). Verified against Prism952e309with this core linked in a throwaway worktree (nothing committed there): typecheck, the whole unit suite (2656 passed), and the e2eterminal,termOptions,termColourPicker,settingsLook,tabs,agentTitle,promptLayout, all green.Decisions for you (Ove)
TermHostConfigfieldtabMarks(optional). CLAUDE.md makes adding one your decision: yes or no?#383c44, the mockup's, not the icon's black.Tests
npm test(1529 passed),npm run typecheck,npm run lint(0 errors).markColours,nameInk,tabMark,markPalette,TabMark,marks.css(every motion has keyframes and a reduced-motion rule),tabStylePrefs,promptGeometry,tabDropwith segments overlapping 9.5 px, the indicator reader and rainbow switch, the segment tokens.tabStyleandindicatorStyles(no separator between tabs, Prompt overlap 9.5 px, the edge band flush in the gap and growing, the active rule cut along the slant, the tab in front told apart in every state, Full's name rule on Volt and Paper, the rainbow moves and stands still under reduced motion); updatedindicator,attention,colourPicker,edges,options,settingsSearch,themeSwitch. All of these pass. The whole suite was run once: 52 scenarios, 49 green;settingsLookfails the same 8 checks onmain(251b23e) too (it predates Switches: on wears the theme's accent with the accent's ink as the knob, in both apps #138's accent-filled switches, not this PR), andquitManyShells(an exit crash at quit) andpathLinksflaked in the full run and passed on a rerun, both green on main.Screenshots (in
.e2e-shots/, compared by eye against the mockups'overview.png):tabs-classic.png,tabs-prompt.png,tabs-prompt-fixed.png,tabs-prompt-light.png,marks-{classic,prompt}-{minimal,ring,full}-{volt,paper}.png,marks-reduced-motion.png,attention-rainbow.png,settings-agents.png.Installed on this machine for hands-on testing:
PrismTerminal-Setup-x64-0.35.0.exe /S, installed version 0.35.0, launched; the Stable copy was not touched.Unsigned, as every release until the SignPath enrolment.
Merge?
🤖 Generated with Claude Code
https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t