routeGrid still dispatches on GridMsg::Notify, which felis renamed to Attention — Terminal.onNotify never fires #6
Loading…
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?
Found by cross-checking the
felis-broker.v1JSON contract betweenfelis-web-gateway
follow-felis-105b0899(577138be) and this repo'sfollow-felis-105b0899(edfb8dfa). Both pin felis105b089979369fd310757375af3df7900ae7e523.The mismatch
felis's wire reset collapsed
GridMsg::BellandGridMsg::Notifyinto onevariant.
crates/felis-protocol/src/messages/grid.rs:so the wire JSON is
{"Attention": {"source": "Notification"}}or{"Attention": {"source": "Bell"}}. There is noNotifyarm left in the Gridfamily —
GridMsg::meta()listsGrid::Attentionand noGrid::Notify.This component still dispatches on the old name —
web/felis-terminal.ts:2031, inrouteGrid:variantOfreturns"Attention", which falls through to thedefault: breakarm.
Why it matters on a live session
Terminal.onNotifyis documented public API (README.md: "onNotify()forOSC 9/99/777") and it now never fires. An embed that lit a tab badge, or an
app that used it as the "this terminal wants attention" signal, goes silent
against a current daemon — and silently:
routeGrid's default arm drops theframe, and the shadow screen applies
Attentionfine, so nothing logs.The broker's own
{"ev": "notify"}feed (Broker.onNotify, whichweb/mobile.html:342uses for badges) is unaffected — that comes from thegateway's
NotifyMsg::Subscribeobserver, a different family. So this is onlyvisible to consumers of the per-terminal callback, which is why the follow
commit could pass its gates without noticing.
Fix
Rename the arm and, since one variant now carries both sources, decide what
onNotifymeans. The felis doc comment is explicit that a bell and a desktopnotification are the same client-side handler
(
Window::request_user_attention), so the smallest correct change is:If the two sources should stay distinguishable to an embedder, pass
bodyOf(msg, name)["source"]through the callback and update theonNotifydoc comment — it still says "desktop notifications (OSC 9/99/777) the session
fired" and "Needs the
NOTIFYcap", and capabilities are gone with the reset.Nothing changes on the gateway:
decode_frameforwards the felis-typed valueverbatim.