bread-ecosystem/bread-theme
Breadway c7c579bf04 bread-theme: make sanitize_output injective (percent-encode)
The old sanitiser mapped '/', ':' and space -- and every other unsafe
byte -- all to '_', so "a/b" and "a:b" both became "a_b" and silently
shared one palettes/<name>.json + themes/<name>.css, last writer wins.
No collision detection at all.

Percent-encode every byte outside [A-Za-z0-9._-] as %XX instead. That is
injective, so two connectors can never land on the same file. '%' itself
isn't in the keep-set so it encodes to %25 and the mapping stays
reversible in principle (nothing decodes today -- reload_binds_for_
sanitized only compares sanitize_output(name) against the on-disk stem).

Real Hyprland connectors (eDP-1, HDMI-A-1, DP-2) are already only
keep-set bytes, so their filenames are unchanged; the files are
session-scoped under XDG_RUNTIME_DIR and regenerated at login anyway.
2026-09-01 16:28:05 +08:00
..
assets/shell shell themes: add Daylight — bottom-anchored, segmented, light builtin 2026-08-31 15:15:36 +08:00
src bread-theme: make sanitize_output injective (percent-encode) 2026-09-01 16:28:05 +08:00
bakery.toml Fix audit findings: bakery index signing, artifact checksums, stale theme docs 2026-07-17 03:37:51 +08:00
Cargo.toml Add bread_theme::shell manifest system (Phase 1) 2026-08-31 15:14:44 +08:00
CHANGELOG.md Add per-output palettes and window-scoped theme binding 2026-08-16 13:20:00 +08:00