Commit graph

20 commits

Author SHA1 Message Date
Breadway
b6c596fb0d Fix Forgejo workflows for the actual server capabilities
Some checks failed
Mirror to GitHub / mirror (push) Failing after 1s
- 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

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 16:02:16 +08:00
Breadway
6a2bd2864b Add packaging/arch PKGBUILD and Forgejo Actions workflows
Some checks failed
Mirror to GitHub / mirror (push) Failing after 26s
- 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.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 12:12:42 +08:00
Breadway
a38b867583 chore: update Cargo.lock for v0.2.1
Some checks failed
release / build (push) Failing after 32s
2026-06-11 14:28:01 +08:00
Breadway
cc1658b5f4 chore: bump version to 0.2.1 2026-06-11 14:21:31 +08:00
Breadway
d566127627 fix: add optional_system_deps (hyprland)
hyprland is used via IPC but not a linked dep — optional now.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 13:37:49 +08:00
Breadway
d2549e56dd feat: rank search results by match quality and launch frequency
Some checks failed
release / build (push) Failing after 34s
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.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 14:35:06 +08:00
Breadway
3ebadee4f4 fix: use relative symlink for latest to work inside Docker containers
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 09:02:38 +08:00
Breadway
765f833f33 fix: add contents: write permission for GitHub Release creation
Some checks failed
release / build (push) Failing after 39s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 00:00:49 +08:00
Breadway
15a45449e1 fix: create GitHub Release before uploading artifacts 2026-06-06 23:52:44 +08:00
Breadway
d6cee01697 fix: switch bread-theme to git dep (v0.1.0) for CI 2026-06-06 23:26:49 +08:00
Breadway
9f4f0647c8 fix: add missing build deps for hestia (Ubuntu) runner 2026-06-06 23:19:57 +08:00
Breadway
1d1b7f1668 fix: use apt-get on hestia runner (Ubuntu, not Arch) 2026-06-06 22:47:41 +08:00
Breadway
53756e840a 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

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 22:31:20 +08:00
Breadway
81319dd584 can't be bothered writing a commit message 2026-05-24 18:57:01 +08:00
Breadway
7df0003c2c 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.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 12:36:18 +08:00
Breadway
afd1f8f9e2 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.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 12:31:14 +08:00
Breadway
f665320634 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.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 12:17:56 +08:00
Breadway
ec07b82747 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.).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 12:12:51 +08:00
Breadway
30e40ec54f 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.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 11:36:29 +08:00
Breadway
d94a00d982 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.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 11:14:16 +08:00