Skip to content

Effects routing and Chroma-driven Ghostty Aurora (Slice 4, stacked on #517) - #519

Draft
raiseCatError wants to merge 1 commit into
feature/ghostty-native-shaders-20261028from
feature/render-routing-20261028
Draft

raiseCatError wants to merge 1 commit into
feature/ghostty-native-shaders-20261028from
feature/render-routing-20261028

Conversation

@raiseCatError

Copy link
Copy Markdown
Owner

Stacked on #517 (Ghostty native shaders), so this diff is Slice 4 only. Retarget only after review.

What

  • /appearance › Effects routing: a read-only view of who draws each animated surface now (host GPU shader, NMSh's Portable renderer, or nothing) and why.
    • It reads the one cursor backend choice, the presentation gates, Settings › Motion, and NMSh's written host passes. It never schedules or draws anything; Transitions and chooseBackend stay the only decision makers.
    • Only the cursor and whole-window focus/display passes are ever routed to the host. Prompt transitions, command feedback, notifications, the screensaver and the welcome are always Portable or off: a terminal shader sees the whole window, not NMSh's rows.
    • Host-specific reads live in src/appearance/nativePasses.ts. TerminalApp stays host-neutral, and the guard test passes.
  • Chroma-driven Aurora (Ghostty): Colors = Follow Chroma (default) or Custom.
    • Follow Chroma uses the idle visuals' Follow Chroma / Theme resolver.
    • NMSh's passes are re-synced on Chroma or theme settings changes, never per event. Ghostty applies them on its next reload.
    • Aurora settings saved earlier with their own colors keep them.

Verification

  • Focused tests for the changed modules and their consumers: 162/162. Typecheck clean.
  • Independent review found no blocker. Its 5 should-fix items were fixed with regression tests.
  • The full suite is left to CI: the local machine was under heavy external load, and only tests related to this work were run locally.

Not verified: physical Ghostty/Kitty QA and GPU rendering were not run.

Adds /appearance › Effects routing, a read-only view of who draws each
animated surface (host GPU shader, NMSh's Portable renderer, or nothing) and
why. It is derived from the cursor backend choice, the presentation gates and
NMSh's written host passes. Only the cursor and whole-window focus/display
passes are ever routed to the host; NMSh's own rows stay Portable.

Ghostty's Aurora can follow Chroma (the idle visuals' resolver). NMSh's
passes are re-synced on Chroma or theme changes, never per event.

This branch has not been deployed

No deployments
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