Skip to content

Keep sent-message receipts updating in agent threads - #630

Merged
trissim merged 7 commits into
mainfrom
fix/message-receipt-feedback
Oct 14, 2026
Merged

trissim merged 7 commits into
mainfrom
fix/message-receipt-feedback

Conversation

@trissim

@trissim trissim commented Oct 14, 2026

Copy link
Copy Markdown

SourcePublicationRequests was retiring every CoordinationObserved subscription on its Conversation when starting, deferring, or cancelling source work. That removed the permanent observer that requests notification results. Its existing ResourceRelease now retires only its own temporary callback; the Conversation keeps observing receipts.

Unchecked feedback says Sent. Checked feedback consumes the highest-priority Core MessageNotification.state verbatim, including its durable time; counters and a second Read annotation are removed. All recipients remain in the disclosure.

Source evidence: rg -n "retire_core_observations|observation\." src/toad/transcript_publication.py; rg -n "CoordinationObserved|request_handling|observe_core" src/toad/widgets/conversation.py. The three whole-stream retirements in SourcePublicationRequests are gone; SourcePreparation uses whole-stream retirement only on its own pager, which has no competing normal observer.

Actual :77 saved toad-theme history loads using the installed launcher with this source overlay. Read HH:MM crop still pending. No automated tests per CLAUDE.md; no provider input submitted. Core receipt state/times remain owned by merged Core #840.

@trissim

trissim commented Oct 14, 2026

Copy link
Copy Markdown
Author

Own-change ratchet passes (rc0 against parent 3f0a7fd); the comparison against older installed 861671a includes unrelated #622 changes. Live acceptance is incomplete: the own-thread tab loads its newest four tools, but 360 upward wheel events did not admit earlier history in the latest run. Retained crop: /home/ts/.cache/agent-scratch/toad-theme-pin/receipt-deep-10.png. Reproducer sent to existing startup/scroll integration owner toad-ui-2. No claim of Read HH:MM or installed readiness yet.

@trissim

trissim commented Oct 14, 2026

Copy link
Copy Markdown
Author

AST owner/consumer pass reuses NRA ParsedModule across all 280 Toad production modules and installed Core dependency modules; zero parse omissions. Before: SourcePublicationRequests globally retired the Conversation stream subscription at resume/defer/cancel. After: its ResourceRelease owns only its callback, and Conversation remains the sole receipt-refresh consumer (CoordinationObserved → request_handling → HandlingPublication → original message references). Source-preparation pager callbacks and view-retirement cleanup retain their distinct lifetimes. No timestamp or receipt-state logic was added to Toad. Detailed source-site output retained at /home/ts/.cache/agent-scratch/toad-theme-pin/receipt-owner-ast.txt. Dynamic callback closures were read semantically, not resolved by AST alone.

@trissim

trissim commented Oct 14, 2026

Copy link
Copy Markdown
Author

Updated per the newest caption instruction: unchecked feedback is absent, not an untimed Sent label. NotificationStatus owns visibility; both saved fragments and live MessageNotifications consume it. Core receipt captions are unchanged.

Actual :77 plain-st saved toad-theme journey now loads earlier history after main #633 integration. It shows the original toad-theme → toad-ui-2 message with Read 04:25, plus an installed-ui-theme red failed tool row. Crop: docs/screenshots/own-thread-read-receipt.png (full frame /home/ts/.cache/agent-scratch/toad-theme-label/older-0.png). This is the installed launcher with Toad source overlay, not installed #630. Ratchet rc0 against main; automated tests not run because CLAUDE.md still forbids them.

@trissim

trissim commented Oct 14, 2026

Copy link
Copy Markdown
Author

Review edit applied: NotificationStatus declares visible=True; UncheckedNotifications declares visible=False with no title/details override. The visibility property is deleted. The base supplies empty presentation defaults for the hidden state so it remains instantiable; empty text no longer decides visibility.

Rechecked the actual :77 saved toad-theme journey with installed launcher + source overlay: the own sent message to toad-ui-2 shows Read 05:11. Updated crop: docs/screenshots/own-thread-read-receipt.png. Core also renders Answered 05:11 on the earlier coach order. Ratchet rc0; no automated tests. Owned terminal closed; borrowed display retained.

@trissim
trissim marked this pull request as ready for review October 14, 2026 09:27
Copilot AI balanced review requested due to automatic review settings October 14, 2026 09:27
@trissim
trissim merged commit df8ecf9 into main Oct 14, 2026
1 of 2 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@trissim
trissim deleted the fix/message-receipt-feedback branch October 17, 2026 20:51
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