Authored-theme shell polish: host review
These are host Cairo/Pango renders, not board captures, QEMU observations or real-glass proof. The same production paint_home, RendererCache::draw, asynchronous theme thumbnails and BackgroundCache::render paths paint them. Service text and the curated app catalog are nonsecret fixtures; icons, appearances, backgrounds and preview images are real pinned Omarchy inputs.
The before images use production render.rs from 0ac61703c4423f50cf85d7691817bccc43d8d3de, temporarily substituted in this change’s own worktree while running the identical example. The after images use this commit’s renderer. Each pair has the same 568×1232 geometry, theme generation, wallpaper and service data. Clock time naturally differs between runs. The real physical problem was reviewed in Home and theme picker.
Visible changes: Home artwork has no routine plate around each app; the dock has one quiet surface. Settings and notifications have filled rows without repeated border outlines, smaller titles, restrained label color and value text without repeated control names. The drawer retains every background/search brush stop and authored alpha, with a compact search glyph. Theme previews retain their skewed layout and hit targets with rounded clipping and a small centered selection cue.
The compositor overview remains a distinct renderer. Its existing native capture records the established real layout and app content. The narrow compositor change removes unselected plate rims and uses authored selected text for the selected 1.5-pixel rim. No card geometry, live-source handling, damage scheduling, focus or input behavior changed. A fresh compositor/board capture is required before claiming an after observation for live cards.
Reproduce
Use the existing native Cargo development environment with Cairo, Pango, librsvg, glib and xkbcommon; the proof used the repo’s pinned buildPackages from flake revision b57ba41ccf6755c54039fc85b0a54145001b186a with two host build jobs and a private copied Cargo target. Icon input was /nix/store/in3nc21zx02xiz2rdp5bpq36719x3axd-handheld-theme-icons-25.10.3/share via XDG_DATA_DIRS. K230_THEME_THUMBNAIL_SEED may point at the pinned theme package’s share/omarchy/thumbs-by-hash; missing seed data is decoded by the same worker. The example fails if its admitted thumbnails do not resolve within 45 seconds.
PROOF_STATE_ROOT=/path/to/proof-state
python3 tools/theme_activate.py catppuccin --prepare-only \
--state-root $PROOF_STATE_ROOT \
--builtins /nix/store/9c1i2zfliab82a80iv87929qkngn1ca0-handheld-theme-default-28ceaae7/share/omarchy/themes \
--background backgrounds/2-waves.webp
python3 tools/theme_activate.py catppuccin-latte --prepare-only \
--state-root $PROOF_STATE_ROOT \
--builtins /nix/store/9c1i2zfliab82a80iv87929qkngn1ca0-handheld-theme-default-28ceaae7/share/omarchy/themes \
--background backgrounds/1-color-fade.webp
cargo run --offline --manifest-path nix/rust-shell-client/Cargo.toml \
--example render_polish_evidence -- OUT DARK-GENERATION LIGHT-GENERATION
cargo test --offline --manifest-path nix/rust-shell-client/Cargo.toml --lib
cargo test --offline --manifest-path nix/rust-shell-client/Cargo.toml --test responsive_pixel_identity
python3 tests/test_card_shell_appearance.py
python3 tests/test_card_rounded_clip.py
The preparation commands only stage host files; they perform no activation. Appearance snapshots are read through the production bounded validator. Native Home/drawer/Settings pixel goldens in docs/evidence/shell-responsive/ were deliberately refreshed for the new visual output; the existing pixel-identity regression itself is unchanged.
Proof and limits
Host library: 415 passed, 1 ignored. Two added checks assert that a two-stop translucent drawer brush preserves both its alpha and its gradient and that a theme’s explicit zero control tint is honored. Pixel identity: all four expected native snapshots match the reviewed new goldens. Card appearance socket suite: 10 passed. Rounded live-buffer clip oracle: 288 comparisons passed. These establish software behavior and paint geometry only.
An additional existing python3 tests/test_card_shell_deck_title.py invocation failed because its extracted fixture leaves desktop_identity_icon unused under -Werror=unused-function. The title/identity helper is untouched here; the unrelated fixture was not repaired as part of the visual pass.
The exact coherent-configuration client and compositor cross-builds passed. Paired compositor installation and real-glass dark/light readability, gestures and mouse review remain UNVERIFIED until the coordinator commits their named proof. Task 6.4 stays open. No board, serial port or runtime secret configuration was accessed by this worker.
Host evidence generated 2026-10-01T17:49:21.727965+00:00 UTC.
Source/input hashes:
nix/rust-shell-client/src/render.rs:20d78fb1872454bdf562fde696ffba4848a34b8d49a4c7566e7112d2d4c36b65nix/card-shell/adapter.c:78bd8145c7a6a3676b770c03fca2d47c13cfc02e7ef511579f97fc9ead91e768nix/rust-shell-client/examples/render_polish_evidence.rs:233158892b9f946f8ae6fb647460ea3a56d24795219e773cf4e974e1c15fe445- dark:
6ae3582938d6ab4285d9e32d, source SHA25672e8f8f39a1209893b30b651fece6c1d1ce47ec643df9e596c7cd282ea97d4c6, selectedbackgrounds/2-waves.webp. - light:
bc67f39ac422947f52040a19, source SHA25611ea23e5a4659b09ecda0658dd86921489d6f536b86ffa60af2f601912a70cdc, selectedbackgrounds/1-color-fade.webp.