bread-theme: test that every shipped theme actually resolves #6

Open
Breadway wants to merge 0 commits from fix/theme-load-coverage into main
Owner

CI gap that let the shell-theme breadbar ship with only glass-workbench verified: a builtin theme.toml can parse but fail resolve_theme at runtime, and load() silently falls back to liquid-motion (breadbar has no tracing subscriber, so the warn is invisible).

3 tests over builtin::ALL: every builtin load_named()s with matching id/name/anchors; BREAD_SHELL_THEME=<each>load() returns that id not the fallback; unknown id still falls back.

CI gap that let the shell-theme breadbar ship with only glass-workbench verified: a builtin theme.toml can parse but fail `resolve_theme` at runtime, and `load()` silently falls back to liquid-motion (breadbar has no tracing subscriber, so the warn is invisible). 3 tests over `builtin::ALL`: every builtin `load_named()`s with matching id/name/anchors; `BREAD_SHELL_THEME=<each>` → `load()` returns that id not the fallback; unknown id still falls back.
Breadway added 1 commit 2026-09-01 14:36:55 +08:00
The gap that let the shell-theme breadbar ship half-verified: a builtin
theme.toml can parse in isolation but fail `resolve_theme` at runtime (a
slot name the manifest no longer knows, a field rename, a broken
`extends`), and `load()` silently falls back to liquid-motion. breadbar
has no tracing subscriber so that fallback's `warn!` goes nowhere — the
shell just quietly ignores `active = "spotlight"`.

Three tests over `builtin::ALL` (not a hand-maintained id list):
- every_builtin_theme_resolves: load_named() succeeds, id/name match, has
  window anchors
- active_theme_id_env_selects_each_builtin_and_never_falls_back: BREAD_SHELL_THEME
  set to each id → load() returns that id, not the fallback
- unknown_theme_id_falls_back_to_liquid_motion: the fallback still works

Adding a fifth builtin now needs its theme.toml to be loadable, not just
parseable.
This pull request is broken due to missing fork information.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin fix/theme-load-coverage:fix/theme-load-coverage
git checkout fix/theme-load-coverage

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git checkout main
git merge --no-ff fix/theme-load-coverage
git checkout fix/theme-load-coverage
git rebase main
git checkout main
git merge --ff-only fix/theme-load-coverage
git checkout fix/theme-load-coverage
git rebase main
git checkout main
git merge --no-ff fix/theme-load-coverage
git checkout main
git merge --squash fix/theme-load-coverage
git checkout main
git merge --ff-only fix/theme-load-coverage
git checkout main
git merge fix/theme-load-coverage
git push origin main
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Breadway/bread-ecosystem#6
No description provided.