Spotlight pill, stage, grouped results and notifications #37
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/spotlight-pill"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Implements the reviewed spotlight phases: an auto-hiding pill with workspace modes and widget slots, a search-first stage with grouped results and power confirmation, surtitles, and in-pill levels. Includes the spotlight screenshot scenarios and the reviewed fixes documented on BAR-27 and BAR-30.
Verification: workspace tests, clippy, and build passed with the local bread-ecosystem spotlight branch. Headless Sway captures passed for pill shown/tucked, stage idle/results, critical surtitle, and in-pill levels.
cargo fmt --all -- --checkreports existing drift on origin/main, confirmed against an archive of main; this branch adds no unrelated formatting change.Dependency: merge Breadway/bread-ecosystem PR #45 first. This change uses its bread-theme API and CSS.
Closes #26
Closes #27
Closes #30
Closes #31
Window switching: the stage ran `hyprctl dispatch focuswindow address:X`, which Lua-config Hyprland turns into a Lua syntax error, so selecting an open window never focused it. It now falls back to `hyprctl eval hl.dispatch(hl.dsp.focus({window=...}))`, the same two-step the workspace buttons already use. Typing stall: debug timing on the live bar showed search itself costs under 0.3ms and the cone repaint 0.01ms, but rebuilding the result rows cost up to 504ms per keystroke: one letter matched 99 rows (7 windows, 92 of 129 apps), each created and torn down on every change. Results are now capped at 8 rows per group and drawn into a pool of row widgets built once, so a keystroke only sets text and visibility. Debug logging under the `breadbar::stage` target (enable with BREADBAR_LOG=breadbar::stage=debug) keeps the per-keystroke build/draw timings, cone repaint time and each window activation step.PR #37 now passes fresh
check / check (push)on0fd9f05(5m17s). The merged bread-ecosystem #45 dependency is resolved through the existing PR-checkscripts/dev-deps.shworkflow, which records bread-ecosystem d9ab179 in the generated dev-deps lock; Cargo.toml and the committed release-tag Cargo.lock remain unchanged. Local clippy, build, and all 120 tests pass against that same dependency commit. Ready for independent review: #37Independent review of Breadway/breadbar PR #37 at head
0fd9f057fa.Acceptance criteria and diff mapping:
src/bar/workspaces.rs,src/pill_autohide.rs:14-82,src/pill_hotzone.rs:33-149, andsrc/spotlight_prefs.rs:1-98, with wiring insrc/main.rs.src/stage/mod.rs:308-358and546-687; notification history, timestamps, dismiss, and clear-all are in767-858; grouping/filtering and command actions are insrc/stage/pure.rs:130-363and572-620; selection and activation are insrc/stage/mod.rs:884-968and1154-1344; notification/level routing and cross-monitor stage actions are insrc/main.rs:3312-3450; critical and normal caption timing is insrc/surtitle.rs:60-123.src/stage/mod.rs:1665-1995and1576-1628; shared history/DND/stage-open state is insrc/stage/mod.rs:59-132; the mockup capture scenarios are wired insrc/screenshot.rs:97-120and515-522. The remaining documented deviations are the palette-token hue constraint, cards reusing the widget node tree, and remote cover art not being fetched. The code still renders a local artwork tile when media state supplies a file.Review: PASS. The full change is in scope, the result rows activate by stable targets, notification dismissals remove stacked entries together, and cross-monitor stage operations use shared state. No blocking correctness or quality issue found. Current combined CI is success on the PR head (
check / check (push)), and Forgejo reports the PR mergeable. The release dependency is already merged and the PR check resolves it via the dev-deps workflow. Ready for merge.