evidence · 2.0 KiB

rust-theme-catalog-bridge-host.md

Committed at docs/evidence/omarchy-themes/rust-theme-catalog-bridge-host.md. This is what grounds the requirements that cite it.

Open raw source

Rust theme catalog bridge: standalone host checkpoint

Observed 2026-09-24 on branch impl/rust-theme-catalog-bridge, base origin/master 1df7b5df. This source adds an unlinked Rust backend module; the touch chooser and renderer do not yet call it. It follows the installed k230-theme JSON contract: list, preview by opaque theme ID, optional background choice by preview ID, then activate only with the exact reviewed generation. Preview has no activation side effect. The installed wrapper, not the Rust module, owns the paired Sway/Rust transaction and source preparation.

ThemeWorker::try_submit and try_recv keep process I/O off the Wayland thread. The worker invokes one configured absolute executable directly with validated 24-character lowercase IDs, a four-request queue, a 20-second process deadline, 1 MiB response cap and 8 KiB error cap. It kills the process group on timeout/overflow and parses typed schema-1 results. The frontend receives separate shell activation and post-ACK app-sync status; an app-sync failure is not mislabeled as a failed shell transaction. Returned background paths must remain under the staged generation’s backgrounds directory. The module does not decode previews or run theme-provided files.

cargo fmt --manifest-path tests/theme_catalog_bridge_host/Cargo.toml --check
cargo test --offline --manifest-path tests/theme_catalog_bridge_host/Cargo.toml --locked
cargo clippy --offline --manifest-path tests/theme_catalog_bridge_host/Cargo.toml --locked --all-targets -- -D warnings
python3 tests/test_theme_catalog.py
git diff --check

PASS: four focused Rust tests, including exact argv/background choice, nonblocking submission, invalid shell-text ID refusal, stale generation and path rejection, bounded large output, typed app-sync failure and useful nonzero JSON error; nine existing Python catalog tests passed. This is host module proof only. Frontend integration, touch preview/cancel/apply, target build, image boot, panel readability and real-finger evidence remain open.