v1.0.29 (CLEAR): clear-safe notification actions — no default, exact-key dispatch, focus-first open #60
Loading…
Reference in a new issue
No description provided.
Delete branch "oss-oo/pinky-clear-notify"
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 standing bug (steer A3-1)
The owner cleared 7 notifications in the notify-manager and the observatory opened in Chrome 7 times. Mechanism (diagnosis on file):
notify_click.shregistered a default action and its catch-all dispatch sent every close-without-activation —notify-sendprints NOTHING and exits 0 (expiry, dismiss, CLEAR-ALL; live-pinned on the real Cinnamon daemon) — intoopen_observatory; Cinnamon keeps action-bearing notifications resident, so bells pile up and every clear-all was an open.The fix (both directions)
-A "obs=…"and-A "zcode=…"are registered — never adefault=key.-u normal -a zcode-dispatchand title/body forwarding unchanged.casehandles onlyobs/zcode; the*branch is an explicit commented no-op — clear-all/dismiss/expiry (and even a stray"default"stdout key a DE might hypothetically fire) open NOTHING.|| exit 0fail-silently contract kept.wmctrl -a "zcode-dispatch observatory"(exact page<title>, curl-verified) focuses an existing window before anyxdg-open; absent wmctrl or no match falls through to the unchanged port-probe → open / deep-link chain. Limitation documented in-code: window titles mirror the active tab, so an inactive observatory tab is not findable — the fallback opens exactly one more tab (bounded, never N).dispatch.pybell sites + thestream.py:384mqtt-watchdog shape);open_session.shuntouched.Offline suite leg (CI-runnable, zero owner-screen contact)
Helper-matrix rig: rig-dir helper copy + recording
open_session.shsibling (BRIDGE is dirname-resolved), PATH-first recording stubs (notify-sendargv incl. every-Aregistration + scripted stdout/rc,xdg-open,wmctrlrc 0/1), loopback accept-loop listener as the observatory (ZDO_OBSERVATORY_URL), and a stub-only PATH dir (bash/timeout symlinks) proving the missing-wmctrl fall-through without any station binary leaking into the rig. Matrix: close-empty → zero opens; straydefault→ zero; obs+up → exactly one xdg-open with the full session URL; obs+window-found → focus only; obs+down → exactly one deep link; zcode → exactly one deep link; registration carries NOdefaultkey and BOTH explicit keys + title/body pass-through; the watchdog argv shape runs clean. Tripwire-verified: the OLD helper under the same rig fires xdg-open on close-empty (the bug reproduced), the fixed one records zero.Docs
docs/USAGE.md§4: explicit-actions behavior, resident persistence, focus-first semantics + the clear-all-safety rationale (consistent with the v1.0.27 lineage-gate text — spawn policy untouched); command-table row updated.Non-goals kept
No spawn-policy/lineage-gate/mute/rate-budget changes; no observatory-repo work; file set is exactly
notify_click.sh,stream_functional_test.py,docs/USAGE.md.