Repository navigation
Keep sent-message receipts updating in agent threads - #630
Conversation
|
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. |
|
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. |
|
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. |
|
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. |
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.