Skip to content

Keep a never-shown deferred ring through a look - #1107

Open
nedtwigg wants to merge 3 commits into
mainfrom
alert-look-keeps-deferral
Open

nedtwigg wants to merge 3 commits into
mainfrom
alert-look-keeps-deferral

Conversation

@nedtwigg

Copy link
Copy Markdown
Member

A click on a pane whose ring was still deferred behind animation turned it straight into a TODO, so the summons skipped to its receipt without ever ringing. Seen as: background work looks unfinished with no ring and no TODO; clicking it to check shows it finished, and the click itself leaves a TODO.

A ring deferred since it opened has summoned no one, so it now stays a fresh completion until it shows:

  • A look, a, t, and the TODO pill leave it deferred. When the detector goes quiet, engagement decides as at dispatch: a hold (TODO at once) if the user is still engaged, a ring if not.
  • Input (typing, a paste, a drop) still clears it: a reply to the program makes the owed completion stale.
  • A ring that showed and then deferred again is unchanged: a look turns it into a TODO.

clearRingForUser in lib/src/lib/alert-manager.ts carries the rule, gated on the existing Ring.shown. In docs/specs/alert.md, Completion events now owns it as one rule (it absorbs the existing hold-on-reveal rule) and Clearing And TODO points there; the rationale entries merge. The Clearing And TODO table folds acknowledge-without-input and dismiss into one row, and the persisted-ring rule no longer says "the TODO a look would leave", since a look no longer leaves one for a never-shown deferred ring.

Tests in lib/src/lib/alert-engagement.test.ts cover a look while still engaged, a look then leaving, every verb but input, and a shown-then-deferred ring; each goes red with its line of the fix reverted. Two alert-manager.test.ts cases that pinned the old behavior are removed as duplicates.

🤖 Generated with Claude Code

nedtwigg and others added 3 commits October 11, 2026 11:29
A click on a pane whose ring was still deferred behind animation turned
it straight into a TODO, so a summons skipped to its receipt without ever
ringing. A ring that never showed has summoned no one: a look, `a`, `t`,
and the pill now leave it deferred, to come due as a hold if the user is
still engaged or a ring if not. Typing still answers it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
State the rule once on clearRingForUser and Ring.shown, drop the input
flag threaded through setTodoForUser, and pin the rule in one suite.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A ring deferred since it opened stays a fresh completion until it shows:
the hold-on-reveal rule and the survives-every-verb-but-input rule are one
concept, so Completion events owns it and Clearing And TODO points there;
their rationale entries merge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 11, 2026 •

Copy link
Copy Markdown

Deploying mouseterm with  Cloudflare Pages  Cloudflare Pages

Latest commit: 9555900
Status: ✅  Deploy successful!
Preview URL: https://959ba516.mouseterm.pages.dev
Branch Preview URL: https://alert-look-keeps-deferral.mouseterm.pages.dev

View logs

This branch is waiting to be deployed

1 waiting deployment
hosted-preview — 95559003 Waiting Oct 11, 2026 by nedtwigg via deploy #1309
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants