Commit graph

28 commits

Author SHA1 Message Date
Breadway
e15c4f2ea3 CI: port breadhelp onto bread-ecosystem's shared Arch build container
Some checks failed
check / check (push) Failing after 39s
Mirrors breadpad's proven pattern: ci/build.sh wraps bread-ecosystem's
shared ci/build.sh, pinned by commit sha in ci/bread-ecosystem.rev
(rev 147cfbbf96ae4b171027defa1130d2caddb934b1). No ci/deps.txt — the
shared image's gtk4/libadwaita/gtk4-layer-shell/graphene set already
covers breadhelp's dependency surface (no libadwaita or extra native
libs beyond those). dev-release.yml/rc-release.yml/release.yml now
build (and, in dev-release.yml, test) through ci/build.sh instead of
bare cargo on the runner; a new check.yml runs clippy+test on
feature/**/fix/** pushes as a fast pre-release signal.
2026-08-05 19:13:59 +08:00
Breadway
28c399efd1 Repoint bread-ecosystem git deps from dev to main branch
All checks were successful
dev release / build (push) Successful in 5m0s
2026-07-31 14:30:01 +08:00
Breadway
fc408878de Remove leftover pacman packaging (breadhelp moved to bakery-only)
All checks were successful
dev release / build (push) Successful in 4m52s
2026-07-31 11:10:54 +08:00
Breadway
8f61dc8a95 CONTRIBUTING.md: document single-trunk + RC-tag release model 2026-07-31 11:08:41 +08:00
Breadway
a0960948ea CI: single-trunk model — dev triggers on main, beta becomes RC-tag-triggered
Replaces the dev/beta branch split with one trunk (main): dev-track
builds still publish on every push, but the beta track now publishes
from a vX.Y.Z-rc.N prerelease tag instead of a separately-maintained
beta branch. Removes the branch nobody reliably kept in sync.
2026-07-31 11:05:29 +08:00
Breadway
08cd1aa42a Merge feature/page-title-rename into dev
All checks were successful
dev release / build (push) Successful in 2m54s
2026-07-31 09:09:44 +08:00
Breadway
9aa99a4549 Update Cargo.lock to bread-ecosystem's latest merged dev commit 2026-07-31 09:09:28 +08:00
Breadway
54e765afd0 Rename .title CSS class to .page-title to avoid libadwaita collision
bread-theme's shared .title rule (1.4em bold) was a bare class selector
that also matched libadwaita's internal row/window-title labels, which
carry the same "title" class. That's what inflated breadman's settings
row titles to ~24px. Scoping the name to .page-title here (the only
consumer of the old class) and bumping bread-theme to the dev branch
where the rename lives.
2026-07-30 20:01:33 +08:00
Breadway
12df11084a Merge feature/troubleshoot-wizard-csd: proper CSD for the troubleshoot wizard
All checks were successful
dev release / build (push) Successful in 2m52s
2026-07-30 19:06:35 +08:00
Breadway
b67c681b3a breadhelp: give the troubleshoot wizard proper CSD + rounded corners
Same fix as breadbar's wifi add-network dialog: a bare gtk4::Window with
no titlebar falls back to GTK's own minimal CSD (flat bar, plain
system-font title, square corners) — a real HeaderBar (which picks up
the window's title automatically) plus matching dark/rounded theming on
window.wizard-dialog makes this look like part of the app instead of a
stray window from a different decade.

Didn't hit the accent-button rendering quirk noted in breadbar's dialog
fix — this wizard's buttons are plain option/close buttons, no
suggested-action/confirm-button in play.
2026-07-30 19:05:01 +08:00
Breadway
e0012f83b1 Merge feature/troubleshoot-wizard-view: capture the troubleshoot wizard modal
All checks were successful
dev release / build (push) Successful in 3m10s
2026-07-29 21:59:22 +08:00
Breadway
4efc5eafd1 breadhelp: capture the troubleshoot wizard modal
One more view: "troubleshoot-wizard" opens ui::troubleshoot_wizard
directly (normally only reachable via Home's "Something's wrong?"
button), using the same on_build-hook pattern as breadbar/breadman's
add-dialogs — open() now takes a callback run before .present(), the
only point connect_map can still catch the map. The real call site
(ui::home) passes a no-op.

Deliberately not covered: the onboarding tour (ui::tour) — it's a live,
multi-step walkthrough that overlays callouts on the real desktop as the
user does real things, which has no meaningful single-screenshot
representation in an isolated environment with no real desktop for it
to point at. guide_view and keybind_viewer aren't separate views either
— both render embedded inside the Learn/Home tabs already captured.
2026-07-29 21:37:22 +08:00
Breadway
5359a8b76d Merge feature/screenshot-mode: add --screenshot CLI mode for automated capture
Some checks failed
dev release / build (push) Successful in 55s
release / build (push) Failing after 1m13s
Build and publish package / package (push) Successful in 2m0s
2026-07-29 16:40:15 +08:00
Breadway
8a1f019b42 breadhelp: add --screenshot CLI mode for automated capture
Three views ("home", "learn", "ask") — one per tab in the Home/Learn/Ask
Stack, switched via the same set_visible_child_name the tab switcher
itself uses, then captured as a full known-size canvas (the window is a
plain top-level, not layer-shell).

Plumbed through breadhelp's own cli::Action/parse() (three more fields,
same shape as force_onboard/autostart/suggest) rather than clap, matching
the app's existing non-clap idiom.

The HANDLES_COMMAND_LINE + thread_local HANDLE singleton architecture
needed one addition beyond the usual NON_UNIQUE-flag fix: every
invocation (including a --screenshot one) normally forwards to the
already-built window over D-Bus and reuses it — worse than the plain
GApplication case in the other apps, since here it's not just "message
the existing instance" but literally switching tabs on and re-capturing
the operator's real, live help-center window. NON_UNIQUE is now set
whenever --screenshot is present in argv (checked before the
Application is even built, since cli::parse() only runs per-invocation
inside connect_command_line).
2026-07-29 11:49:28 +08:00
Breadway
a2dee6a915 ci: retrigger now that BAKERY_MINISIGN_SEC_KEY_PATH is set
Some checks failed
beta release / build (push) Failing after 1m1s
dev release / build (push) Successful in 1m7s
2026-07-23 10:11:59 +08:00
Breadway
de382536aa Onboard onto bakery: bakery.toml + dev/beta/release CI, relocate content paths
Some checks failed
dev release / build (push) Failing after 1m0s
beta release / build (push) Failing after 57s
Adds bakery.toml (binaries, license_file, desktop_file, data_archive for
the guide content directory) and the standard three-track CI workflows,
mirroring the pattern used across the rest of the bread ecosystem.

Also fixes the tour/troubleshooting-symptoms loaders (tour.rs,
troubleshoot.rs) to check the bakery-writable user content root
(~/.local/share/breadhelp/content) before the system path a pacman
package would have used — the main ContentStore already did this via
user_content_root(), these two were the last holdouts still hardcoded to
/usr/share/breadhelp only.
2026-07-23 10:10:30 +08:00
Breadway
182fdc8e73 random commit message, read it yourself 2026-07-22 11:49:40 +08:00
Breadway
767e7f7434 Switch to tag-pinned bread-ecosystem deps; bump version to v0.2.2
All checks were successful
Build and publish package / package (push) Successful in 1m31s
2026-07-19 03:35:32 +08:00
Breadway
7b7fe680fe Migrate config load/save to bread_utils::tomlcfg; timeout-guard hyprctl calls
config.rs's config_dir/load_doc/save_doc/atomic_write were a byte-for-byte
copy of bos-settings/src/config/mod.rs's versions (own doc comment said as
much) introduced in the same fix pass that added them there — now both
delegate to bread_utils::tomlcfg/bread_utils::atomic instead of each
carrying their own copy (path dependency for now, see the TODO in
Cargo.toml).

Also: services/hyprland.rs::query_json used a bare Command::output() with
no timeout, so an unresponsive hyprctl (Hyprland wedged/reloading) could
block clients()/monitors()/layers() indefinitely — switched to
bread_utils::proc::run_json with a 3s cap.

Builds clean; all 8 existing tests pass.
2026-07-17 09:32:55 +08:00
Breadway
df7f51281a Make config writes atomic with backup-before-overwrite
Same discipline as the matching bos-settings fix: state.toml writes went
straight to the target path with no backup and no atomicity, so a crash,
power loss, or disk-full error mid-write could leave the file truncated
or corrupted with no way back.

config::atomic_write now writes to a temp file in the same directory,
renames it over the target (atomic within one filesystem), and backs up
whatever was there before to <path>.bak first. save_doc() goes through it.
Added tests covering the backup/no-leftover-tmp-file behavior and a
save_doc -> load_doc round trip.
2026-07-17 03:28:34 +08:00
Breadway
646587585c breadhelp: bump version to 0.2.1
All checks were successful
Build and publish package / package (push) Successful in 1m36s
2026-07-16 18:25:01 +08:00
Breadway
89ebb3bb2f Ignore local makepkg build artifacts 2026-07-15 19:18:25 +08:00
Breadway
292172909a CI: install gtk4-layer-shell before makepkg dependency check
Some checks failed
Build and publish package / package (push) Failing after 1m49s
makepkg without -s doesn't auto-resolve deps; the pacman -Syu step must
list every runtime dep the PKGBUILD declares. gtk4/glib2 happened to
already be listed for a different reason (build toolchain), but
gtk4-layer-shell and hicolor-icon-theme were missing, failing the v0.2.0
CI run before it ever built anything.
2026-07-15 19:08:21 +08:00
Breadway
4b1d0ca889 Drop GitHub mirror workflow for now (Forgejo-only remote)
Some checks failed
Build and publish package / package (push) Failing after 37s
2026-07-15 19:04:31 +08:00
Breadway
87a770a1b6 Add Cargo.lock for standalone build 2026-07-15 19:02:36 +08:00
Breadway
15b0383c21 Add standalone repo scaffolding (README, packaging, CI)
Adds the release/CI machinery bos-settings already has in its own repo:
Forgejo package.yml (tag -> build -> publish to [breadway]) and
mirror.yml (Forgejo -> GitHub). PKGBUILD updated for the flattened
layout and dropped -p breadhelp now that this isn't a workspace member.
2026-07-15 19:00:30 +08:00
Breadway
29b2445573 breadhelp 0.2.0: live guided tour overlay replacing static onboarding
Replaces the old in-window onboarding wizard with a real screen-wide
tour: dim + spotlight cutout around the actual on-screen component
(breadbar, breadbox), floating callout teaching the shortcut, and
event-driven confirmation via real Hyprland/breadd signals instead of
click-through fakery.
2026-07-15 18:48:10 +08:00
Breadway
fea8f83204 Extract bos-settings to its own repo; add breadhelp; JSON-driven Hyprland config
bos-settings moves to git.breadway.dev/Breadway/bos-settings (full history
preserved via git-filter-repo) so its release cadence is decoupled from
BOS's own. breadhelp takes its place as this repo's workspace member: a
GTK4 onboarding/help center replacing the old bos-welcome/bos-keybinds
bash scripts with searchable guides, an interactive keybind viewer
(sourced from the new keybinds.toml, not parsed out of hyprland.lua or
hardcoded), a troubleshooting wizard with one-click fixes, and a proper
first-run tour. bos-netcheck extracts bos-welcome's network-check half,
which still needs to run every login independent of breadhelp's own
first-run gating.

hyprland.lua's keybinds/settings/monitors/autostart are now JSON-driven
(binds.json/settings.json/monitors.json/autostart.json) with every
loader pcall-wrapped and falling back to hardcoded defaults per field on
bad or missing config, so bread* apps (bos-settings' new editors, and
breadhelp's keybind viewer) can read/write this config without ever
being able to leave the compositor unable to start.

CI's package.yml now builds breadhelp instead of bos-settings on tag
push; bos-settings needs its own equivalent workflow in its new repo
(not yet set up).
2026-07-05 09:16:14 +08:00