Cargo.toml can drift stale relative to the actual last release (observed
on breadbox/breadpad/breadcrumbs/breadpaper), which made the auto-bumped
dev version sort as OLDER than what's already installed — bakery's semver
check correctly refused those "updates". Deriving the base version from
git ls-remote --tags instead is self-healing regardless of Cargo.toml
drift, with a Cargo.toml fallback only for a repo with no tags yet.
The fixed /tmp/bread-ecosystem-ci path races when multiple repos' dev/beta
workflows run close together on the same self-hosted runner — one job's
rm -rf/clone can stomp another's in-progress checkout, causing the
regenerate-index step to fail intermittently. Switch to mktemp -d.
Adds dev-release.yml (publishes on every push to dev) and beta-release.yml
(publishes on a beta-v* tag), mirroring the pattern landing in
bread-ecosystem/bread. Also creates the dev branch for this repo, which
didn't exist before — see bread-ecosystem/docs/release-channels.md for the
three-track policy.
profiles_dir() had the same bug as breadclip-core::data_dir and
breadpad-shared's model_dir/config_path/style_css_path (found during
tonight's ecosystem-utils pass): `dirs::config_dir().unwrap_or_else(||
PathBuf::from("~/.config"))` — PathBuf/std::fs never expand `~`, so on a
box where `dirs` can't resolve a home directory this would silently
resolve to a directory literally named `~` under the current working
directory. Switched to bread_utils::xdg::config_dir.
hyprland_socket2_path() duplicated the same HYPRLAND_INSTANCE_SIGNATURE +
XDG_RUNTIME_DIR resolution breadbox and breadclip had for socket1 — now
shared via bread_utils::hypr::socket_path (path dependency for now, see
the TODO in Cargo.toml).
Builds and all 16 existing tests pass.
- apply_monitors() shells out to `hyprctl eval` with a `hl.monitor()`
Lua call, a BOS-only Hyprland extension. On vanilla Hyprland the
eval request itself isn't recognized and failed with a confusing
raw hyprctl response. Detect that case and fail with an explicit
'this feature requires BOS' message instead, with tests.
- README: documented the BOS dependency for the apply step under
Requirements; noted everything else in the TUI works without it.
- Cargo.toml: 0.1.0 -> 0.1.1, matching the latest tag (v0.1.1).
GitHub Actions self-hosted runners require per-repo registration on a
personal (non-org) account — every new bakery repo needed a manually
provisioned runner on hestia, which nobody had noticed was broken
until this session. Forgejo Actions' runner already serves every repo
with zero registration. Moves release.yml there (dl.breadway.dev is
the primary bakery fetch target either way; GitHub release upload is
kept as the fallback path, now via an explicit token since Forgejo
Actions has no ambient GITHUB_TOKEN), and adds a mirror workflow to
keep GitHub in sync automatically instead of manual dual-remote pushes.