# Keep a recovered edit when the user drops a held item over it · dara/icarus

[View on GitCafe](https://git.cafe/dara/icarus/commit/53bbfea74d5a6436480a699e6fb186deeb0aa16a)

Repository: [dara/icarus](https://git.cafe/dara/icarus)

Visibility: public

Requested revision: 53bbfea74d5a6436480a699e6fb186deeb0aa16a

Requested commit: 53bbfea74d5a6436480a699e6fb186deeb0aa16a

Commit: 53bbfea74d5a6436480a699e6fb186deeb0aa16a

Tree: 400750da11fe6a882e32612cfe8c06b4dccbe861

Author: Dara Adedeji

Committer: Dara Adedeji

## Message

```
Keep a recovered edit when the user drops a held item over it

An op recovered from the outbox lands under a canvas that was drawn
without it. Its ack moved the item's base to the landed version while
the canvas still showed the one before, so a drop (or any edit before
the page reloaded) looked like a change on top of the recovered edit
and replaced it, silently.

The queue now marks the work that was already in the outbox when the
strategy became active, and the ops it resends in its place, and says
so on each ack. Live sync leaves the base alone for those acks: their
landing is a server change like a teammate's, drawn by the next merge,
and an edit before that is checked against the version on screen, so
the server refuses it and the conflict shows.

A recovered op already in flight is also kept as the only local intent
while the canvas matches its base, as a queued one was, instead of
gaining an overlay that queued the version on screen after it.

Fixes #220.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

```

## Parents

- [309333fec68d142a8fc30cc518576e9a7210904d](https://git.cafe/dara/icarus/commit/309333fec68d142a8fc30cc518576e9a7210904d?format=markdown)

[Source at this commit](https://git.cafe/dara/icarus/tree/53bbfea74d5a6436480a699e6fb186deeb0aa16a?format=markdown)
