Take only acknowledgements from a desk click, and make each answer a one-time ticket
mesh/merge-gate pass: builds dunst, messenger → g14, novox, shanks; no bus step; every machine composes with the change as it did without (4 of 4 compose)
mesh/repo-check pass: its merge-check.sh passed
mesh/delivery-group group fix/notifications-after-review ready: every member ready, and composed together they pass
mesh/delivery superseded: a newer head of the same pull request

Review found that any process of the operator's account can choose a dunst action,
so a click could release or stop a delivery in the operator's name; that tokens
lived for ever; that a warning's answers died in ten seconds; and that a restarted
notifier left dead buttons (hq ADR 0258).
This commit is contained in:
jochen
2026-10-08 14:38:24 +02:00
parent 541b24d96e
commit d83711f11e
19 changed files with 616 additions and 137 deletions
+5
View File
@@ -89,6 +89,11 @@ func Send(n Notification) (SendResult, error) {
if n.Icon != "" {
args = append(args, "--icon="+n.Icon)
}
if len(n.Actions) > 0 && n.ExpireMS < 0 {
// A notification that offers answers stays until it is dismissed: a warning's answers must not die
// with dunst's ten seconds (novox/hq ADR 0258).
n.ExpireMS = 0
}
if n.ExpireMS >= 0 {
args = append(args, "--expire-time="+strconv.Itoa(n.ExpireMS))
}