Commit graph

31 commits

Author SHA1 Message Date
Breadway
7ece4fd762 CI: use /tmp for ecosystem clone, avoid permissions conflict
All checks were successful
Mirror to GitHub / mirror (push) Successful in 2s
2026-06-19 08:38:38 +08:00
Breadway
a33e979e5e Bump bread-theme to v0.2.8 (live-reload fix)
Some checks failed
Mirror to GitHub / mirror (push) Successful in 2s
Build and publish package / package (push) Failing after 2m39s
2026-06-17 12:55:52 +08:00
Breadway
83b9fd908e Fix illegible text on light pywal palettes + hot-reload
Use bread-theme 0.2.7's luminance-picked ink (@on-*): a selected/hovered row set
its background to `surface` but kept the pywal foreground, so the highlighted
item went unreadable when `surface` came out light. Colour is now set per surface
(panel, search box, row states) and labels inherit it.

Switch to bread_theme::gtk::apply_app_css so breadbox picks up `bread-theme
reload` (and rebuilds from the fresh palette on each launch).
2026-06-17 12:41:30 +08:00
Breadway
8c64ec1bf2 Release 0.2.4: shared bread-theme stylesheet
Some checks failed
Mirror to GitHub / mirror (push) Successful in 2s
Build and publish package / package (push) Failing after 3m13s
2026-06-16 18:32:48 +08:00
Breadway
732c3126ae Release 0.2.2: shared bread-theme stylesheet
Pin bread-theme v0.2.6 and load the shared ecosystem stylesheet.
2026-06-16 18:32:12 +08:00
Breadway
d464689a18 theme: load the shared bread-theme stylesheet
Apply bread_theme::gtk::apply_shared() before breadbox's own CSS so fonts,
palette, and generic widgets come from the shared ecosystem stylesheet. Keep
only launcher-specific rules (launcher-bg, searchentry, rows). Bump bread-theme
dep to v0.2.6.
2026-06-16 16:57:12 +08:00
Breadway
a6007e9a6a Disable debug package so the main package publishes correctly
Some checks failed
Mirror to GitHub / mirror (push) Successful in 2s
Build and publish package / package (push) Failing after 3m11s
makepkg's debug split produced a -debug pkg; the upload's head -1 could
grab it instead of the main package. !debug yields a single package.
2026-06-13 23:00:50 +08:00
Breadway
21392645cd Use REGISTRY_TOKEN (scoped write:package) for registry publish
Some checks failed
Mirror to GitHub / mirror (push) Successful in 2s
Build and publish package / package (push) Failing after 2m57s
2026-06-13 22:55:41 +08:00
Breadway
b80e06b253 Disable LTO in PKGBUILD (vendored ring/mlua static libs vs makepkg -flto) 2026-06-13 17:06:55 +08:00
Breadway
8bc185f40c Clone from public URL, not GITHUB_SERVER_URL (resolves to localhost in runner)
The Forgejo runner injects GITHUB_SERVER_URL as http://localhost:3002, which
is unreachable from inside the job container. Use the public URL instead.
2026-06-13 16:14:14 +08:00
Breadway
cbb1cf03d6 Rename mirror secret to MIRROR_TOKEN (GITHUB_ prefix is reserved)
Forgejo/gitea rejects user secret names starting with GITHUB_.
2026-06-13 16:10:50 +08:00
Breadway
43df888aa1 Fix Forgejo workflows for the actual server capabilities
- package.yml: correct Arch registry upload (octet-stream + binary body),
  drop --privileged, manual shell clone (archlinux image has no Node),
  built-in Actions token, --nocheck
- mirror.yml: clone --mirror + explicit refs push with --prune
2026-06-13 16:02:16 +08:00
Breadway
f93596adf2 Add packaging/arch PKGBUILD and Forgejo Actions workflows
- packaging/arch/PKGBUILD: builds and publishes breadbox to [breadway] repo
- .forgejo/workflows/mirror.yml: mirrors every push/tag to GitHub
- .forgejo/workflows/package.yml: builds on tag, publishes to Forgejo registry

Requires FORGEJO_TOKEN and GITHUB_MIRROR_TOKEN secrets in Forgejo.
2026-06-13 12:12:42 +08:00
Breadway
d2ef12551d chore: update Cargo.lock for v0.2.1
Some checks failed
release / build (push) Failing after 8s
2026-06-11 14:28:01 +08:00
Breadway
311f0d261f chore: bump version to 0.2.1 2026-06-11 14:21:31 +08:00
Breadway
c01cb67aa5 fix: add optional_system_deps (hyprland)
hyprland is used via IPC but not a linked dep — optional now.
2026-06-11 13:37:49 +08:00
Breadway
423d00383b feat: rank search results by match quality and launch frequency
Some checks failed
release / build (push) Failing after 4s
Track per-app launch counts in ~/.cache/breadbox/history.json. When a
query is active, sort visible results by fuzzy match quality (exact >
prefix > contains > subsequence) then by launch count descending, so
the most relevant and most-used app rises to the top. The base list
(no query) also surfaces most-launched apps above unvisited ones.
2026-06-07 14:35:06 +08:00
Breadway
fde5fe7c64 fix: use relative symlink for latest to work inside Docker containers 2026-06-07 09:02:38 +08:00
Breadway
efc2a81643 fix: add contents: write permission for GitHub Release creation
Some checks failed
release / build (push) Failing after 3s
2026-06-07 00:00:49 +08:00
Breadway
0432c6d73a fix: create GitHub Release before uploading artifacts 2026-06-06 23:52:44 +08:00
Breadway
e3ea3307d2 fix: switch bread-theme to git dep (v0.1.0) for CI 2026-06-06 23:26:49 +08:00
Breadway
7ffd5f785b fix: add missing build deps for hestia (Ubuntu) runner 2026-06-06 23:19:57 +08:00
Breadway
b066198187 fix: use apt-get on hestia runner (Ubuntu, not Arch) 2026-06-06 22:47:41 +08:00
Breadway
c561a449af Refactor theme onto bread-theme; add bakery.toml and release workflow
- breadbox/Cargo.toml: depend on bread-theme with gtk feature
- breadbox/src/main.rs: remove local Palette + hex_to_rgba; use
  bread_theme::{load_palette, hex_to_rgba, gtk::apply_user_css}
- bakery.toml: describes breadbox for bakery install
- release.yml: builds on hestia self-hosted runner, publishes binaries to
  dl.breadway.dev and GitHub Releases on v* tags
2026-06-06 22:31:20 +08:00
Breadway
d823edc14e can't be bothered writing a commit message 2026-05-24 18:57:01 +08:00
Breadway
f4996e495f breadbox: replace backdrop window with full-screen single window
The backdrop approach failed because a GTK4 window with no child widget
gets an empty Wayland input region, so pointer events passed straight
through it rather than being delivered to the GestureClick handler.

Replace with a single full-screen window (anchored to all 4 edges,
transparent background). The launcher UI (vbox) is 700 px wide,
halign=Center, valign=Start — visually identical to before. A
GestureClick on the window closes it when (x,y) falls outside the
vbox's allocation rectangle; clicks inside the vbox reach child widgets
normally and don't trigger the close path.
2026-05-23 12:36:18 +08:00
Breadway
74de775a9b breadbox: fix spurious close via transparent backdrop window
EventControllerFocus::connect_leave was firing whenever the pointer left
the launcher surface because Hyprland's focus-follows-mouse hands keyboard
focus back to the window under the cursor (OnDemand mode).

Fix: introduce a full-screen transparent backdrop window at Layer::Top.
The launcher sits at Layer::Overlay (above it), so the backdrop never
intercepts launcher clicks. Clicking anywhere outside the launcher hits
the backdrop and closes both windows via a shared Rc<dyn Fn()> callback.
The launcher returns to KeyboardMode::Exclusive so the compositor can no
longer steal focus on pointer leave. EventControllerFocus is removed.
2026-05-23 12:31:14 +08:00
Breadway
26431d5969 breadbox: fix unfocus-close, Enter, and arrow key navigation
- KeyboardMode::Exclusive → OnDemand: with Exclusive the compositor
  never sends wl_keyboard::leave, so EventControllerFocus::connect_leave
  never fires. OnDemand lets Hyprland hand focus back on click-outside.
- Move EventControllerKey from search to window, capture phase: bubble
  phase on SearchEntry let its own handlers consume Enter and arrows
  first. Capture phase on the window intercepts all keys before any
  widget sees them, so Enter/Up/Down/Esc always reach our handler.
2026-05-23 12:17:56 +08:00
Breadway
ba8273b2ca breadbox: steal focus on open, close on unfocus
Switch KeyboardMode to Exclusive so Hyprland hands keyboard focus to
breadbox immediately on creation. Add an EventControllerFocus on the
window that calls close() the moment focus leaves (click outside,
alt-tab, compositor focus change, etc.).
2026-05-23 12:12:51 +08:00
Breadway
e6204e94a9 breadbox: replace wofi with native GTK4 layer-shell UI
Remove the wofi subprocess entirely. The launcher now renders its own
Wayland overlay window via gtk4 + gtk4-layer-shell: a SearchEntry at
the top with live fuzzy filtering, a ListBox of results below, and
keyboard navigation (Enter/Esc/arrows). Toggle (keybind press while
open closes it) is handled via a PID file in $XDG_RUNTIME_DIR.
2026-05-23 11:36:29 +08:00
Breadway
d5bbc25986 breadbox: fast Rust application launcher for wofi
Zero-dependency Rust rewrite of the breadboard launcher. Parses
.desktop files in-process (no awk subprocesses), builds a tab-separated
cache for wofi dmenu, and supports stale-while-revalidate background
rebuilds. Apps-only for now; icon support to be added later.
2026-05-23 11:14:16 +08:00