···7788## [Unreleased]
991010+## [0.10.0] — 2026-03-24
1111+1212+### Added
1313+- **Server-side trash**: Trash state moved from localStorage to SQLite `deleted_at` column — trash persists across browsers and devices, with automatic 30-day purge (#153)
1414+- **Toast with undo on delete**: Deleting a document shows a 5-second toast with an accessible Undo button (#154)
1515+- **Formula bar color coding**: Cell references in the formula bar now match the colored range highlight borders on the grid (#112)
1616+1717+### Changed
1818+- One-time migration of localStorage trash entries to server on first load
1919+- `GET /api/documents` now returns only active (non-trashed) documents
2020+- New API endpoints: `GET /api/documents/trash`, `PUT /api/documents/:id/trash`, `PUT /api/documents/:id/restore`
2121+1022## [0.9.7] — 2026-03-23
11231224### Fixed
2525+- Fix hidden rows at grid start unreachable + improve hide/unhide UX (#207)
2626+- Fix import data loss on refresh — force save after import (#206)
1327- **CRDT race on snapshot load**: `ensureSheet(0)` and TipTap editor initialization were writing to the Y.Doc before the async `_loadSnapshot()` completed, creating CRDT conflicts that overwrote loaded server data ~50% of the time. Added `whenReady` promise to EncryptedProvider; both sheets and docs now await it before touching the doc (#205)
14281529### Added
···6478## [0.9.1] — 2026-03-22
65796680### Changed
8181+- Add confirmation dialog on document soft-delete (#154)
8282+- Sheets: cell reference color coding in formula bar (#112)
8383+- Sheets: multi-sheet .xlsx import (all worksheets) (#108)
6784- **Toolbar redesigned to match Google Sheets**: inline alignment buttons (left/center/right), inline $/%/.0/.00 format shortcuts, freeze and insert moved to overflow menu (#198)
68856986### Fixed