# Skip undo steps a teammate already reverted \(\#202\) · dara/icarus

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

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

Visibility: public

Requested revision: 66dc33dc843a7987bb69c3ef85980aa6fd3b4fe9

Requested commit: 66dc33dc843a7987bb69c3ef85980aa6fd3b4fe9

Commit: 66dc33dc843a7987bb69c3ef85980aa6fd3b4fe9

Tree: b5daf6d1b483f5760f4146f8bde8c7ac5aabc4fd

Author: Dara Adedeji

Committer: GitHub

## Message

```
Skip undo steps a teammate already reverted (#202)

Object, weapon, lineup field and settings edits now replay by what they
actually change, like additions, deletions and clears already do. Each
compares the fields it writes with what the page holds now and returns
nothing when a teammate already put them there, so undo and redo move on
to the next step instead of spending the keypress on a write that changes
nothing. The entry for the opposite stack is built from the two states the
write actually joined.

LineUpProvider.replayEdit replaces replayLinkDetails and covers every lineup
field (positions, visibility toggles, link details). The target-exists check
and the settings writer it made redundant are removed.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
```

## Parents

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

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