summaryrefslogtreecommitdiff
path: root/test/snapshots/themesel.golden
Commit message (Collapse)AuthorAge
* Esc alternates between the last two panes; Toggleterm is goneGabriel Schneider2026-08-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Esc ran Toggleterm, which hopped between the newest DOC and the newest TERMINAL. That distinction never earned its keep. It made Esc unpredictable — which of three panes you landed on depended on their kinds, not on where you had been — and it could not alternate between two files at all, which is the case you hit most. Editing two files, Esc did nothing. The replacement already existed. Last (SPC j j) is "the pane you were in before this one, whichever it was": it walks the jump stack for the newest entry naming a different pane and restores its line and column. So Esc, and Shift-Esc in tty, now run Last, and Toggleterm is deleted rather than renamed — a third implementation of "go to the other pane" was the thing to avoid. SPC w t goes with it; the w group is the four directional moves, and the jump group already had SPC j j. Held down, Esc alternates. Two files, a file and its shell, a file and a +Search — all the same, because Last has no notion of kind to get wrong. This depends on the swap in the same series: Last reads the stack backwards, and until hopping stopped appending, the pane you came from could fall off it. windownav.snap needed only its keys and prose changed — its golden did not move at all, which is the useful evidence here: for the one scenario the old builtin handled well, Last produces an identical focus sequence. Coverage for what it did not handle is new: a unit test opens a second FILE by looking its name and asserts Esc alternates between two panes of the SAME kind, which is the case that used to be a no-op. Docs follow: tutor.txt, docs/helix-keys.md, docs/design.typ, and the builtin index goldens, which are now one row shorter. 75/75 snapshots, both unit suites, and the macOS ABI build all pass.
* boot a file argument aloneGabriel Schneider2026-08-10
|
* theme the selection colorsGabriel Schneider2026-08-10
|
* show New in every pane tag and enforce builtin-first Exec fallbackGabriel Schneider2026-08-10
|
* prioritize useful topbar commands and put Kill lastGabriel Schneider2026-08-10
|
* add New builtin for an empty temporary file in the calling columnGabriel Schneider2026-08-10
|
* the goldens catch up with the empty normal-mode boxGabriel Schneider2026-08-01
| | | | | | | | | | config.tag_normal became a space when the mode moved into the layout box, and 66 goldens still spelled the old bullet — the whole suite was red on one character. Regenerated serially, and every file's diff is that character and nothing else: replacing the bullets in the OLD goldens with spaces is byte-identical to the new ones, so nothing else moved under cover of the churn. The one bullet left in tutor.golden is the tutor's own sentence about the badge, which the app still draws.
* the mode is a character in the layout box, not a word in the taglineGabriel Schneider2026-08-01
|
* the scrollbar is one column, not twoGabriel Schneider2026-08-01
|
* every helix and zed theme on the machine, not a curated nineGabriel Schneider2026-08-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 228 in the ring: 3 pardes ships plus all 214 helix runtime themes and all 11 zed variants across its three families. No exclusions. inherits is what this cost. 76 themes need it, so the reader is two passes now, and the merge is WHOLE-KEY rather than field-wise because helix merges the theme body at depth 1 — the three *_transparent themes clear their parent's background with an empty table, and a field-wise merge would leave it painted. I had that wrong until I read helix-view/src/theme.rs. At 214 files the generator meets themes that are SPARSE rather than broken, and the old fatal-on-anything-missing would have rejected them. Every fallback is helix's own rule: no background at all means wear the terminal's, so bg and fg go null (13 themes, correctly); the twelve RGB fields that cannot be null fall back to ghostty's default palette entries 7 and 0, which is exactly what a pardes terminal already paints an unstyled ANSI index as. fatal is kept for what genuinely cannot be read. Three real bugs surfaced only at scale: #ccc shorthand doubles the nibble (helix's rule, 58 colours), a quoted inline-table key silently dropped a selection colour, and four themes name a cursor background EQUAL to the page because they are about to reverse that cell — taking it painted an invisible move box. 0 degenerate themes out of 225 now: no fg==bg, no syntax colour on its own background, no invisible box. Collisions get an unconditional rule rather than a clever one: a zed variant is always <name>_zed, because both projects ship gruvbox, ayu and one, and a conditional tag would move a name when the other source changes. A comptime assert holds it. Cost: no-op build 0.257 -> 0.276s, a pardes.zig change 46.8 -> 47.5s, binary +0.98%. The generator does 217 sources in 54ms. NextColor stays and is no longer a way to REACH a theme — but the browse got better, not worse: the generated half sorts by name, so its neighbours are that theme's own family. theme.golden's fourth click moved from ayu_dark to acid, which sorting 225 names does; themesel gained a tail capture proving row 228 renders.
* themes: one file each, generated from helix and zed, picked by stepping a listGabriel Schneider2026-08-01
Each theme is a .zig file of pure data and nothing enumerates them by hand — fold() walks the container's declarations, so a theme is a file and that is the whole registration. Field by field rather than a wholesale coercion, which makes a missing field a compile error that names it. tools/gen_themes.zig reads helix .toml and zed .json out of vendor/themes and emits one .zig each; build.zig reads that directory, so adding a theme is dropping a file in. Output goes to the build cache rather than the tree, so zig owns the freshness check and a deleted source cannot leave a stale theme behind. Vendored, not read from the genizah: the build stays offline. A source it cannot map is a hard error naming the file and the key, never a silently black-on-black theme. ThemeSel is the clever half. Traits gained an `executes` column, so n/N over that buffer hands the whole line to Exec instead of the leading word to Look — both arms the ordinary builtin, so a stepped row does exactly what the matching mouse button on it would. Stepping the list previews each theme live. The trait is a pane property, not an output-pane branch, so any pane whose lines are commands can opt in. Goldens: leader gains SPC t t; theme's fourth NextColor no longer wraps to helix because the ring is fifteen long. New: themesel.