You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit bcefcd3
Browse filesBrowse the repository at this point in the historyBrowse files
feat(rsvp-fold): own the fold sequence in a shared foldRsvp() helper
The library exported the predicates for folding an attendee's response onto
its event's thread but stopped short of the sequence around them, so each mail
connector restated the same ~40 lines: build the marker key, read it, check
for a repeat, decide whether the response earns a note, compose it, save it,
record it. The order is load-bearing and none of it was enforced — checking
the repeat second re-emits a re-delivered commented acceptance, and writing
the marker on the suppressed path leaves it describing something the event
thread does not carry. Both mistakes surface the same way: a thread people
had already read goes unread again.
`foldRsvp()` owns that order. Genuinely per-connector concerns stay injected,
because they differ for real reasons: reading and writing the marker (write
through immediately, or collect and flush once per pass to stay inside the
request budget), saving the note, and the note's key, timestamp and unread
flag. Every outcome — emitted, suppressed, already folded — means the response
was dealt with, so each caller records "this message was folded" unconditionally
after the call, in whatever form is its own: an in-pass set, durable per-thread
metadata, or both. The returned outcome names which path ran.
Gmail, Outlook and iCloud mail now call it. No behaviour change: their test
suites pass unchanged.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GcnBUEdW86ovpv1pT2d3b3
0 commit comments