Expose notification settings for the BOS Settings v2 panel #56
Labels
No labels
bug
ci
enhancement
feature
privacy
security
theme-system
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Breadway/breadbar#56
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
The approved BOS Settings v2 proposal needs Do not disturb state, a schedule, per-app notification permissions, sound and lock-screen preview controls.
Current breadbar source exposes history, pill and stage actions on dev.breadway.Bar. Its DND flag is an in-process Rc<Cell> and is toggled inside stage/mod.rs. Settings cannot reliably read or change it, and no persisted schedule or per-app permission configuration is exposed.
Add a typed, versioned interface to read/apply persisted notification preferences. Keep bar controls and external Settings controls in sync, retain critical alert behavior, and expose capability information for unsupported options. Implement schedule and per-app policy in the notification server rather than storing preferences that are never consumed.
Needed by BSET-43. No GUI or desktop testing is authorised for this implementation session.
Implemented in breadbar PR #57: #57
Versioned persisted API consumed by BOS Settings, manual/overnight DND, per-app all/banners/history/off policy, sound eligibility and lock-time suppression. Stage controls share preferences and indicators refresh across outputs. Companion clock-format and validated font/text preferences are included.
Verification: clippy with warnings denied, 24 headless notification tests, a built test binary, and green Forgejo CI at commit
8263a8f117. No GUI launch or live configuration writes were used. Sound requires canberra-gtk-play and the compositor controls whether popups can appear on a secure lock surface. Ready for user review.Independent review of head
8263a8f117. Verdict: changes requested. Not merged.Reviewed in an isolated worktree at that SHA. Required check
check / check (push)is success on this SHA (actions run 185, commit_sha matches, finished 2026-10-03). No prior reviews. Branch protection list is empty. dev-release.yml is main-only and correctly did not run here. A formal REQUEST_CHANGES review was rejected by Forgejo ("reject your own pull is not allowed"), so this comment is the persisted verdict.The PR is not mergeable against current origin/main (
e5f148009a). merge-tree reports one conflict in src/main.rs: main clones notif_store into stage::Shared::new, this branch does not and inserts the preference poll in the same region. src/notifications/mod.rs and src/stage/mod.rs also changed on both sides. Merge main into this branch and resolve that before a new review.Criteria:
Also: GetNotificationPreferences inserts every history app at the default policy as a side effect of a read (mod.rs:285-287). A later Set of that payload persists apps the user never chose. Do not do that on read; return known apps separately if Settings needs a list.
Do not merge. Update the branch with current main, fix the lock/critical split and the clock formatted() path, and add tests that drive Notify (history, banner event, sound gate, lock, critical) plus save/load round-trip, unknown-key preservation, and stage indicator refresh. BOS Settings UI consumption can stay unverified on this provider PR if the provider tests above exist.
Independent re-review of breadbar PR #57 head
535d746d0e. Verdict: pass. Merged as3f17c44e4f.All repair items from the changes_requested review confirmed in an isolated worktree at the exact head: merge conflict resolved (
16dac6dkeeps notif_store clone plus poll, mergeable true); lock/critical unified under presentation() with paired predicate plus live-path tests; clock formatted() layers over theme format with tests; Notify/persistence/provider round-trip/backup/unknown-keys/sound tests pass; invalid schedule falls back to 22:00-07:00; Get reports known_apps without absorbing history apps; stage DND round trip, shared flag, refresh fan-out, and two-stage refresh verified; text_css allowlist and mtime precedence verified via throwaway scratch probes (scratch restored). Runs: clippy -D warnings clean, cargo test 151 passed 0 failed, required check task 2420/run 194 success on this exact SHA, no outstanding reviews. Pre-merge re-read confirmed head, base (e5f1480), checks, and mergeability unchanged.BOS Settings UI consumption stays unverified on this provider PR by design; as the provider half this is correct. Full verdict persisted on the PR (comment 4647). Cards stay in review for coordinator verification, not done.