Repository navigation
Kitty shaders: compose Kitty 0.49 shipped effects with the user's own (stacked on #515) - #516
Draft
raiseCatError wants to merge 1 commit into
Draft
raiseCatError wants to merge 1 commit into
raiseCatError wants to merge 1 commit into
Conversation
…, reviewed and owned /appearance gains a Kitty shaders studio (in Kitty only). NMSh reads the installed catalog through Kitty's packaged-resource API and offers a first set of shipped effects: four cursor trails (one at a time), Northern Lights, Matrix, Fireworks, Pond Ripple, Spotlight, Focus highlight, Dim inactive windows, Tab change and CRT. A setting is offered only when the installed shader declares it with the expected type; its starting value comes from the shipped source, and values are validated against NMSh's safe bounds. NMSh writes its own pipeline (shipped group structure, every value group-scoped) and one custom_shaders line that keeps the user's effective value verbatim and in order, before or after NMSh's. A simulation through the real configuration graph must show exactly that list, or setup refuses: dynamic includes, Kitty launch overrides, unreadable or unknown pipelines, a user shader replacing a shipped one, shared textures, a second cursor trail, more than 16 groups, an unrecorded hook. Writes reuse the snapshot-verified transaction and an ownership ledger; R removes exactly NMSh's files and hook, restoring the user's bytes, even when an owned file is missing or edited. Reduced Motion, Decorative effects Off and a Portable cursor take NMSh's effects (or its trail) back out of the pipeline. A written Kitty trail with cursor_trail on makes Kitty own the trail (and Lightning), so Portable never draws a second one. Fixed: NMSh's Kitty cursor setup kept Kitty's own trail on with the Portable renderer. Kitty's own load_config and bundled slangc accept the composed configuration in a private home (a gated test); that is compilation, not GPU output. Refs #399
This was referenced Oct 28, 2026
This branch has not been deployed
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.
Stacked PR. Base is
feature/appearance-welcome-20261028(#515, draft, unmerged), so this diff is Slice 2 only. After #515 merges, this will be rebased or retargeted todevafter review. That step is not automatic. Do not merge before #515.Refs #399
What it adds
/appearance › Kitty shaders, shown in Kitty only. It covers the shipped effects read from the installed Kitty 0.49+ through its packaged-resource API:custom_shaderslist before any write. R removes NMSh's part..pipelinecopies the shipped group structure and keeps every value group-scoped, because Kitty leaks pipeline-level vars into every chained pipeline.custom_shadersline keeps the user's effective value verbatim and in order.-o custom_shaders|cursor_trailor--configlaunch overrides (read frompsofKITTY_PIDandmacos-launch-services-cmdline).slangthat would replace a shipped shadercustom_shadersis reported, and adding effects back then needs a new review./cursor: Host native setup on Kitty opens the studio. A written Kitty trail withcursor_trailon makes Kitty own the trail (and Lightning), so Portable never draws a second one.Testing
tests/kittyShaders.test.ts,tests/kittyShaderPanel.test.ts: grammar parity, catalog and version gate, validation, composition and preservation, the refusal matrix, symlink and permission paths, drift, gates, removal, stale files and rollback, launch parsing, panel keys and rendering, and the TerminalApp flow. They run in private homes.tests/kittyShadersLive.test.tsruns only when Kitty 0.49+ is installed, so CI skips it. In a private HOME, config and cache, Kitty 0.49.2's ownload_configsees exactly the composed list, through an include and a path containing a space. Kitty's bundledslangccompiles the 7 merged groups. This is headless compilation, not GPU rendering.Canonical
npm run verifylocally on the frozen source, results below. Not a clean pass.outputSelectionLive"live fish: new Copy navigation…", a startup timeout waiting forecho READYunder suite load. That file passes 3/3 alone.An independent review found no blocker. Its four should-fix items were fixed with regressions (see
docs/development/native-appearance-welcome/INDEPENDENT_REVIEW.md).Not done / not verified