Files desk: Stop a send in flight, show replaces loops, freshest last event on add #151

Merged
void merged 2 commits from void/files-desk-send-cancel into dev 2026-11-13 23:17:43 +00:00
Member

Follow-up ratatoskr:follow_up:files-desk-release-146-and-send-cancel.

  • Stop: sendShareSet takes port.signal; an abort marks the running file and every later one unsent with reason stopped, so they stay picked (remainingAfter) and one tap resumes. ShareSet cancels the running upload through onPromise + mx.cancelUpload; the controller has stop(); the sending view has a Stop row.
  • Replaces loop: foldVersions shows files that replace one another with no head outside the loop, none folded (test fails on the old return).
  • Add files, stale last event: freshest() moves lastId to the newest sent event of that thread in the room's live timeline at send time (ExistingAlbum.lastTs; lastEvent replaces lastEventId).

Untested: the real mx.cancelUpload abort against a live upload (the ShareSet wiring is read, not run; the sendShareSet side is tested with an abort-throwing port); timeline events in a zone room that is never opened.

🤖 Generated with Claude Code

Follow-up `ratatoskr:follow_up:files-desk-release-146-and-send-cancel`. - **Stop:** `sendShareSet` takes `port.signal`; an abort marks the running file and every later one unsent with reason `stopped`, so they stay picked (`remainingAfter`) and one tap resumes. `ShareSet` cancels the running upload through `onPromise` + `mx.cancelUpload`; the controller has `stop()`; the sending view has a `Stop` row. - **Replaces loop:** `foldVersions` shows files that replace one another with no head outside the loop, none folded (test fails on the old return). - **Add files, stale last event:** `freshest()` moves `lastId` to the newest sent event of that thread in the room's live timeline at send time (`ExistingAlbum.lastTs`; `lastEvent` replaces `lastEventId`). Untested: the real `mx.cancelUpload` abort against a live upload (the ShareSet wiring is read, not run; the sendShareSet side is tested with an abort-throwing port); timeline events in a zone room that is never opened. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Files desk: Stop a send in flight; files in a replaces loop all show; Add files threads after the freshest event
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
e406ec7dc4
Stop aborts the running upload (onPromise + mx.cancelUpload) and leaves it and the rest picked as 'stopped'. foldVersions shows files caught in a replaces loop with no head instead of hiding them. An add reads the room timeline at send time for the newest event in the thread.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
void merged commit a078346ecc into dev 2026-11-13 23:17:43 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
GameCult/Ratatoskr!151
No description provided.