aj and Claude Opus 5.5
81ec6cc738
feat(data): add a state-based undo history
...
The desktop app has no undo. Phase 0 showed whole-nest snapshots are
cheap enough to record after every edit, so the history keeps whole
states with a cursor instead of per-command inverses that each need
hand-written reversal code.
It drops the redo tail on commit, evicts the oldest states past 50 steps
or 128 MB without ever evicting the current one, tracks a save point for
a later dirty indicator, and merges matching commits within a second so
repeated nudges undo as one. The clock is a TimeProvider so tests control
the coalescing window. It is generic and free of IO and WinForms so it is
unit tested on its own.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-26 12:11:40 -04:00
..
2026-10-25 19:29:59 -04:00
2026-10-25 18:20:11 -04:00
2026-10-23 08:45:36 -04:00
2026-10-19 11:09:04 -04:00
2026-10-25 20:02:08 -04:00
2026-03-27 20:14:39 -04:00
2026-10-24 15:33:12 -04:00
2026-10-26 09:46:43 -04:00
2026-10-26 09:46:43 -04:00
2026-10-23 08:45:36 -04:00
2026-10-17 22:47:18 -04:00
2026-10-17 22:47:18 -04:00
2026-10-17 22:47:18 -04:00
2026-10-24 15:33:12 -04:00
2026-10-18 20:24:33 -04:00
2026-10-23 08:45:36 -04:00
2026-10-24 15:33:13 -04:00
2026-10-24 15:33:13 -04:00
2026-10-20 12:51:56 -04:00
2026-10-23 08:45:36 -04:00
2026-10-20 12:51:56 -04:00
2026-10-20 12:51:56 -04:00
2026-10-20 12:51:56 -04:00
2026-10-20 12:51:56 -04:00
2026-10-16 15:33:02 -04:00
2026-09-29 21:18:37 -04:00
2026-03-27 20:19:56 -04:00
2026-10-16 15:33:18 -04:00
2026-10-17 22:47:18 -04:00
2026-10-22 11:54:30 -04:00
2026-10-19 11:09:07 -04:00
2026-03-27 20:14:39 -04:00
2026-10-17 22:47:18 -04:00
2026-10-25 20:02:08 -04:00
2026-10-23 10:17:28 -04:00
2026-10-25 19:15:03 -04:00
2026-03-27 20:16:59 -04:00
2026-09-20 16:41:50 -04:00
2026-03-27 20:16:59 -04:00
2026-10-21 11:32:41 -04:00
2026-10-18 16:36:43 -04:00
2026-10-23 08:45:36 -04:00
2026-10-25 20:02:08 -04:00
2026-10-05 11:44:22 -04:00
2026-10-07 13:13:25 -04:00
2026-10-11 17:01:01 -04:00
2026-10-20 23:37:57 -04:00
2026-10-19 11:09:08 -04:00
2026-10-26 09:46:42 -04:00
2026-10-23 08:45:36 -04:00
2026-10-21 10:25:52 -04:00
2026-10-25 18:40:43 -04:00
2026-10-25 18:40:43 -04:00
2026-10-11 16:38:35 -04:00
2026-10-20 23:37:57 -04:00
2026-10-23 08:45:36 -04:00
2026-10-20 15:24:10 -04:00
2026-10-25 17:41:29 -04:00
2026-10-20 23:37:57 -04:00
2026-10-09 21:54:10 -04:00
2026-09-20 17:40:06 -04:00
2026-10-23 08:45:36 -04:00
2026-10-23 08:45:36 -04:00
2026-10-23 08:45:36 -04:00
2026-10-25 20:02:08 -04:00
2026-10-16 15:33:18 -04:00
2026-10-22 11:54:30 -04:00
2026-10-21 10:25:52 -04:00
2026-10-24 15:33:12 -04:00
2026-10-22 11:54:30 -04:00
2026-10-22 11:54:30 -04:00
2026-10-22 11:54:30 -04:00
2026-10-22 11:54:30 -04:00
2026-10-21 10:25:52 -04:00
2026-10-05 16:31:00 -04:00
2026-10-25 20:02:08 -04:00
2026-10-25 20:02:08 -04:00
2026-10-25 20:02:08 -04:00
2026-10-22 13:04:55 -04:00
2026-10-24 15:33:12 -04:00
2026-03-27 20:14:39 -04:00
2026-10-26 12:11:40 -04:00
2026-09-20 16:41:50 -04:00