feat(notify): terse lock-screen mode — content-free notification toggle #101

Open
opened 2026-07-10 15:12:07 +02:00 by dominik.polakovics · 0 comments

What to build

A global setting that strips notification content for shared-lock-screen environments: with terse mode on, every push renders a content-free notification — e.g. title lab, body "An agent needs your input" / "An agent opened a PR" — with no repo name, instance label, question text, or PR title. Tap routing (/runs/:id) and tag = run-id coalescing are unchanged; only the visible text is redacted.

  • One global toggle on the settings Notifications block (per-device filtering stays out of scope, matching the v1 all-devices-get-everything model).
  • Applied at payload construction in the sender path so both trigger sources (needs-input seam, done-signal seam) are covered by one redaction point — a future trigger category inherits it for free.

Acceptance criteria

  • With terse mode on, needs-input and done-signal payloads carry no repo name, instance label, question text, or PR/CR title; tap still routes to /runs/:id
  • With terse mode off, full-content payloads are unchanged (regression-covered)
  • The toggle lives on the settings Notifications block and takes effect without re-subscribing devices

Blocked by

## What to build A global setting that strips notification content for shared-lock-screen environments: with terse mode on, every push renders a content-free notification — e.g. title `lab`, body "An agent needs your input" / "An agent opened a PR" — with no repo name, instance label, question text, or PR title. Tap routing (`/runs/:id`) and `tag = run-id` coalescing are unchanged; only the visible text is redacted. - One global toggle on the settings Notifications block (per-device filtering stays out of scope, matching the v1 all-devices-get-everything model). - Applied at payload construction in the sender path so both trigger sources (needs-input seam, done-signal seam) are covered by one redaction point — a future trigger category inherits it for free. ## Acceptance criteria - [ ] With terse mode on, needs-input and done-signal payloads carry no repo name, instance label, question text, or PR/CR title; tap still routes to `/runs/:id` - [ ] With terse mode off, full-content payloads are unchanged (regression-covered) - [ ] The toggle lives on the settings Notifications block and takes effect without re-subscribing devices ## Blocked by - #99 - #100
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Cloonar/coding-lab#101
No description provided.