bread-ecosystem/bread-theme
Breadway eb446b091e bread-theme: hot-reload watch degrades gracefully and re-arms on theme switch
watch() panicked (.expect) if monitor_directory failed (e.g.
fs.inotify.max_user_watches exhaustion), contradicting the crate's own
'the shell must never fail to start because a theme file is malformed'
stance. Now logs and continues without a watch, same posture as
bread_theme::gtk::watch_theme_file's existing .ok()? handling.

watch() also resolved the active theme's directory once and pinned a
monitor there forever: switching shell.toml's active key while a host
was running left edits to the newly-active theme unobserved until
restart. Now also watches shell.toml's own directory and re-arms the
theme-directory monitor when active changes.

Public API change: shell::watch now returns ThemeWatch instead of a
bare gio::FileMonitor (still opaque, still just needs to be kept
alive). breadbar's theme.rs:525-531 stores the return value in a
RefCell<Option<gio::FileMonitor>> and wraps it in Some(monitor) - both
need updating to RefCell<Option<bread_theme:🐚:ThemeWatch>> and
*cell.borrow_mut() = monitor (no Some(..)), left to the breadbar-side
agent since this repo doesn't touch breadbar's files.

's role is now documented explicitly on watch() as a
single-process testing override, not the coordination mechanism -
shell.toml's active key is.
2026-08-31 15:15:36 +08:00
..
assets/shell shell: widen spotlight's launcher schema for phase 6c (modes/sections/search geometry) 2026-08-31 15:14:44 +08:00
src bread-theme: hot-reload watch degrades gracefully and re-arms on theme switch 2026-08-31 15:15:36 +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