- Move TransactionLedger + types from @excalidraw/element into
packages/excalidraw/transaction.ts (no external consumers)
- Move commitSyntheticIncrement from App passthrough to Store directly,
fix didAppStateChange to use Delta.isRightDifferent instead of
presence-check, and replace isolated increments queue with direct
scheduleMicroAction + flushMicroActions
- Remove commitSyntheticHistoryEntry from App, expose store and
createTransaction on AppClassProperties instead
- Replace O(N) deep-copy snapshot in updateScene with shallow map copy
(element refs are safe — ledger ignores index, the only in-place
mutated prop, and deep-copies only recorded elements)
- Merge ledger + manager tests into single transaction.test.tsx
- Update dev-docs to reflect new file structure
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>