<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pardes.git/test/snapshots/theme.golden, branch release-0.24</title>
<subtitle>Pardes</subtitle>
<id>https://git.0x4200.cafe/pardes.git/atom?h=release-0.24</id>
<link rel='self' href='https://git.0x4200.cafe/pardes.git/atom?h=release-0.24'/>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/'/>
<updated>2026-10-01T03:12:17Z</updated>
<entry>
<title>lapis_plain: lapis on flat grounds, with its framed and shadowed tags and its file-name shadow</title>
<updated>2026-10-01T03:12:17Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-09-30T03:08:16Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=d6195b4ecc89a6506985e17313b580d570b03b77'/>
<id>urn:sha1:d6195b4ecc89a6506985e17313b580d570b03b77</id>
<content type='text'>
No dot grid under the text and no stripes behind the focused tag; every colour, the gold frames and vermilion shadows of the plaques, the rules, the scroll column's checker and the title shadow stay lapis's. It follows lapis in the ring and the Themes picker.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Config opens the startup file, DumpConfig the settings report, and the workspace tag reads Dump Themes Config Debug Exit</title>
<updated>2026-10-01T03:12:17Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-09-30T01:27:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=d4960472375ea68f709c56a677d8a37571419ff7'/>
<id>urn:sha1:d4960472375ea68f709c56a677d8a37571419ff7</id>
<content type='text'>
Config (SPC f c) opens init, found as the settings report finds it
(opts.startup_config_path: $XDG_CONFIG_HOME/pardes/init or
~/.config/pardes/init, and the macOS and Windows paths config.md gives). A
pane that already holds it is gone to instead; a file on disk is looked at;
with none, an empty pane is named for it, and Save makes its directory and
any above it first (File.make_dirs, fs.makeDirs) before writing. Without a
configuration directory it says so and opens nothing.

The report Config used to open, the startup path and every live setting, is
DumpConfig, in a +DumpConfig pane. No alias keeps the old meaning.

The workspace tag's default words put Themes where NextColor was, NextColor
staying a builtin, and Config beside it. A tag the user edited is kept as it
was: a dump stores only an edited one (topbar_custom), and a restore puts
back only that.

theme.snap types NextColor onto the workspace tag to click it, and tagnav's
walk back to Dump takes five long-word steps. The rest of the re-recorded
goldens differ in the workspace words and their widths only.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>A middle or right sweep over a column's or the workspace's tag runs or looks for what it swept, as a pane tag's does</title>
<updated>2026-10-01T03:12:17Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-09-30T01:21:56Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=dfa5bd4d413504a6afff414962c4de70ab093af0'/>
<id>urn:sha1:dfa5bd4d413504a6afff414962c4de70ab093af0</id>
<content type='text'>
Both headers acted on the press: a middle or right press ran, or looked
for, the word under it (or the header's selection when it was on that) at
once, so a drag had nothing left to do. A sweep of `echo SWEPT` in a column
tag ran a bare `echo`. They have done so since the headers were drawn apart
from the panes; it is no regression, and the -l/Restore allocator fix
(ompukopz) does not touch it.

Now a press on a header holds a HeaderSweep (the column by its serial, or
the workspace), which the drag extends, held to the header's row and text
as a pane tag's sweep is. It is painted in its button's tint meanwhile, and
the release runs what it swept in that header's context; a release that has
not moved runs the word or selection a click always did. The other of
middle and right cancels it (acme 2-3/3-2); the select button is inert, as
a header's command already takes the held selection as its argument.

Running on the release, a builtin from a header is announced as one from a
pane tag is: the press used to set the announcement and the release clear it
at once. find, restore, theme, topbarexec, ttyhelp, tutor and windowops
re-recorded for that badge alone.

headersweep.snap sweeps the column and workspace tags with the middle
button and a word part with the right one, and cancels a sweep;
headersweep-restored.snap sweeps both after Dump and Restore.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>acme tints a tag's file name, +Name and Tty word quietly, in its own DMedblue #000099</title>
<updated>2026-10-01T03:12:17Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-09-29T23:38:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=c63b7915530c327571ebfc55389a31ed54153198'/>
<id>urn:sha1:c63b7915530c327571ebfc55389a31ed54153198</id>
<content type='text'>
acme tints nothing in a tag, but the tint is a pardes indicator the user
wants in every theme. #000099 is acme's own (draw.h DMedblue, its dirty
button): a navy that reads as ink until you look for it.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>A theme that names no tint for its tags' names takes one of its own hues, so every theme draws a file's name, a +Name and the Tty word off the tag's ink</title>
<updated>2026-10-01T03:12:17Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-09-29T23:30:29Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=799bfc56f75535ad13089ee2fcbe907f91305ca3'/>
<id>urn:sha1:799bfc56f75535ad13089ee2fcbe907f91305ca3</id>
<content type='text'>
The faithful ports (neobones_dark, dracula, tokyonight, the *bones, ...),
every helix import and any theme file set no tag_name_fg, and ChromeTheme
fell back to the plain ink: their tags lost the accent the pardes themes
have. The user's neobones_dark looked tinted before only because the Sep 24
build had no such theme and fell back to orchard.

The tint is now derived when unset: the theme's keyword colour, else the
first of its ANSI accents, syntax, grip, selection or diagnostic colours
with a hue, placed at the lightness nearest the ink where the hue holds,
at least 4.5:1 on its ground (half a point under the ink's own where the
ink has less to spare) and 0.07 off the ink in OKLab. Each ground, plain and
focused, gets its own. A theme that names its tint keeps it exactly.

Tests: every theme's chrome keeps both tints off the ink and legible; every
theme draws a file's basename, +Errors and Tty+sh in a tint, focused or not.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Snapshots leave out a blank cell's ink, which shows nowhere and the tty now keeps from the frame before</title>
<updated>2026-10-01T03:12:17Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-09-29T21:14:31Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=b8b9e87972f87abd28c5bebf7275e9bdd2754eac'/>
<id>urn:sha1:b8b9e87972f87abd28c5bebf7275e9bdd2754eac</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Theme snaps walk the new ring: acme, lapis, then Dark+ and Solarized</title>
<updated>2026-10-01T03:12:16Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-09-29T13:30:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=28cef8905e072084f70fcc17090c3a7919d9ff36'/>
<id>urn:sha1:28cef8905e072084f70fcc17090c3a7919d9ff36</id>
<content type='text'>
theme.snap and themesel.snap step past orchard_black into acme and lapis
(now with the current themes) and across the first ported sections; their
step names say where each lands, and only these two goldens are re-recorded.
</content>
</entry>
<entry>
<title>G5: lapis, 0x4200.cafe's manuscript, as a theme with its ornament</title>
<updated>2026-10-01T03:12:16Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-09-29T09:04:28Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=09ec515c5e94de741104038cd61f18b2b997e78c'/>
<id>urn:sha1:09ec515c5e94de741104038cd61f18b2b997e78c</id>
<content type='text'>
A native theme `lapis` (src/themes/lapis.zig) from web/theme/lapis.css:
a lapis-deep page, lapis tags with gold names, vellum text, vermilion
rubrics, gold rules and a vermilion tag rule, gold selection in lapis ink.
Its ornament is the theme's new `decor` (colors.Decor), drawn by a pixel
shell inside the chrome it already has (decision 1), all of it off every
focus indicator:

- page_dots: the site's gold dot grid (#e8c46a22, 22 px), drawn by the
  cell shader on page-coloured cells alone (flag 0x10000000), so it lies
  under the text and never under a selection, a tag or the cursor; fixed
  to the window, a page the panes lie on.
- rail_checker: the dither frame's gold and lapis checker in the scroll
  track (a decor kind, flag 0x08000000), anchored to its rail; the thumb
  stays solid gold.
- tag plaques (tag_border, tag_shadow, tag_stripe): every tag a raised
  plaque inside its own band, the site's trail: a 2px gold frame and a
  hard 5px vermilion shadow down and right, both within the band's rows
  and columns (down, what the slack under the text leaves), so no shadow
  reaches a body, a grip or the next pane. The focused pane's plaque is
  the code window's title bar, gold and lapis stripes of 2px, its words
  on plates of the focused ground; unfocused ones are plain; column and
  workspace tags take the object-label language (1px frame, 2px shadow
  toward the page). Drawn as decor under the cells (a group's under
  range), with blank tag cells see-through and the cells blended
  premultiplied (pipeline_over) on such frames; opaque windows only.
- title_shadow: the titles' vermilion offset shadow under a file name's
  letters, sampled in the cell shader inside the letters' own cells (flag
  0x08000000), none on a cursor.

Chrome carries the decor (decor_*, name_ink, active_name_ink); a theme
file folds a nested decor literal field by field. Left out, with why, in
docs/effects.md: the fonts, the ornaments, a decor crossfade, and in the
tty anything but the colours (a tag row has no spare cell for a shadow).
An empty column is the page. The effect id is masked to 27 bits (ui.vert/ui.frag) for the
fifth flag.

Tests: the cell flags land only on page ground and file-name cells, never
a cursor, nothing without decor; lapis's plaques stay inside their tag's
band, clear of every grip, only the focused one striped; its checker is in
the track; no other theme draws any; the separator and focus
tests cover lapis. Goldens: theme and themesel (the ring gains lapis after
acme). Gates as G4. Feel review: .scratch/render/lapis/ (lapis.png, lapis-2x.png,
tags-focused-vs-unfocused-2x.png, a PanelSlide at 60 fps and a quarter).
</content>
</entry>
<entry>
<title>Rules and chrome scale with the display's density; dark pages get visible separators and focus tints</title>
<updated>2026-10-01T03:12:16Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-09-29T02:50:56Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=fde030a699b3d6667d1fa21ae192b5011e3f373f'/>
<id>urn:sha1:fde030a699b3d6667d1fa21ae192b5011e3f373f</id>
<content type='text'>
Density: dp() in gui.zig draws every size given in pixels in logical
pixels (SDL's window display scale, rounded, at least one), as acme scales
Border, ButtonBorder and Scrollgap: the rules (rule_px), the tag rule, the
grip's ring, its dirty gap and mode bars, the rail's gap to the text and
its minimum, the thumb's inset, the rim, a bar cursor's minimum width,
underline and strikethrough thickness (the atlas is dropped on a scale
change), the rule-grab margin, and the Crt's scanline and mask periods
(pardesScale in the post prefix). Cell- and tagline-measured sizes stay:
the rail's width, Lift's blur and offsets, every motion; iResolution,
fragCoord and iMouse stay in the display's pixels, as ghostty's.
PARDES_TEST_SCALE forces a density in a harness (a test window is 1x
otherwise, whatever display it lands on) and sizes the test font with it.

Colours: a separator that stands off its page by less than 1.5:1 is lifted
toward the text to 1.6:1 (helix, atelier, paper; a theme with no page,
dark, is judged against #121212), and empty_col follows it. forge's own
rule already stands at 3.83:1; what hid it was density: 2 device pixels
on a 3x screen, now 6 (dp). A focused tag's tint closer than 1.5:1 to the
plain tag on a dark page (1.25:1 on a light one) is pushed further the way
it leans, as far as its text keeps its own contrast or 4.5: forge
1.23 -&gt; 1.51 (#2d3440 -&gt; #374253), and likewise dusk, orchard, ink,
lagoon, clay, harvest, spectrum, solarium, forge_soft; daybreak, atelier,
paper to 1.25. dark and helix gain a tint of their own (dark: #484566
under #c8c8c8, 1.54:1; helix: ramp 237 under 250, 1.65:1).

Tag caret: past a full row's end, the G3 glide box sits on the tag's right
edge, where the layer's caret and the pixel shell's are.

Tests: every native theme's separator &gt;= 1.5 and every dark one has a
tint &gt;= 1.25 with readable text; forge keeps its own border; the tag caret
glide box at a full row; at 2x the spine, tag rule, ring, rail start and
gap, and bar cursor double. Legacy-ThemeFile test strips helix's new pair.

Goldens: snapshot goldens change in colour rows only, the tints (orchard
#283a2f -&gt; #314738 at boot, forge, helix and dark in theme/themesel).
GUI goldens: the harness's single Del of the renamed wide pane is refused
since ysqnkyoy (a rename counted as unsaved; fixed on the 9P line in
wkzlsqvy), so scenes 09-17 were recorded with that pane open and the file
was stale since the merge (08 and 18 also moved with ykvnltvs's full-row
tag wrap). The goldens here were recorded with that pane closed (as
wkzlsqvy will close it); against the parent's binary under the same
conditions they differ only in the tints: 01-13 forge's (#2d3440 -&gt;
#374253, and the glyph edges on it), 14 ink's; 15-18 are byte-identical.
Until wkzlsqvy is merged, a run here fails 09-17. Each commit reproduces its own
recorded goldens on this machine (checked at kvtmqkyn). A test window is
1x unless PARDES_TEST_SCALE says otherwise, whatever display it opens on.
Prebuilt shaders refreshed from their sources.
Captures: .scratch/render/dark-borders/{before,after,compare,scale2,scale3}.
</content>
</entry>
<entry>
<title>A tag that exactly fills its row stays one row, as acme's does</title>
<updated>2026-10-01T03:12:15Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-09-29T01:57:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=2586e804e4df670bf6a5072ec776d9fc00c1c4b9'/>
<id>urn:sha1:2586e804e4df670bf6a5072ec776d9fc00c1c4b9</id>
<content type='text'>
Tags wrapped one cell early to keep a cell for the caret past a full row,
so a tag that exactly filled its column broke as De / l. acme's frame wraps
a box only when it is wider than what the row has left, and frptofchar
clamps the tick past a full line's end to the frame's edge. Tags now wrap
at their full width; the caret past a full row sits at the tag layer's
edge, and on the pane's last cell in a terminal grid, which has none past
it. Two tiny-screen tests collapse their tags, as the others do, and the 41
goldens that moved were re-recorded by name after the same check: rows
shift back up under the shorter tags and nothing else changes. chordcut's
file-body clicks moved back with them.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
