Files
windmill/frontend
hugocasaandClaude Fable 5 3e25ae7b00 fix(ai-sessions): hold the catch-up gate across every await and cancel a stale retry
Two edges of the round-18 serialization, both in the same seam:

- The superseded() probe ran after reloadChat but not after loadPastChat,
  which also awaits (image hydration). A catch-up overtaken during that
  await still settled the caught-up gate, unlocking the composer over a
  transcript missing the newer turn for as long as the queued catch-up
  was still reading. Re-probed before caughtUp is set, so a superseded
  catch-up leaves the gate to the one that owns it. Every await in
  applyTurnEnd is now followed by a probe before any write or release.

- The unavailable-store retry re-queued carrying its own turn-end's chat
  id, and newest-queued-wins let that stale retry supersede a newer
  turn-end's catch-up — re-adopting and re-persisting the chat a /clear
  had rotated away from. A newly queued catch-up now cancels any pending
  retry; the new task schedules its own if it needs one, so a retry can
  no longer outlive its turn-end.

Also trims a test comment that repeated the executor contract documented
on createLatestWins.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019N8x51GqABUEFvg52V6aYo
2026-08-31 23:35:11 +02:00
..

Windmill frontend

The Windmill frontend written in Svelte 5 + Tailwind CSS

The frontend is under AGPL, see the LICENSE file at the root of this repo