···1010### Added
1111- E2EE key-loss warning: one-time modal on first visit to an encrypted document, tailored to whether the user is anonymous, signed in without synced key, or fully backed up. Shield icon in the topbar re-opens the explanation. (#671)
1212- Trash: 30-second undo window for permanent document deletion — `DELETE /api/documents/:id` now soft-marks the row via `pending_permanent_delete_at`, a background finalizer cascades real deletion of versions + blobs after the grace period, and `PUT /api/documents/:id/undo-delete` aborts within the window. Trash UI shows a "Permanently deleted. Undo" toast for 30s. (#674)
1313+- AI chat: onboarding banner in every editor — when no endpoint is configured, opening the chat surfaces a titled CTA pointing to the settings panel instead of silently focusing an empty field. (#676)
1414+- AI chat: parse-error notes — malformed `<action>` blocks in AI responses now render a dismissible warning note listing each failed block so users can spot and report broken output instead of seeing silent drops. (#679)
1515+- AI chat: confirmation before bulk auto-apply — flipping the actions toggle to "on" while pending suggestion cards exist now prompts before applying all of them at once, preventing accidental destructive batches. (#677)
1616+1717+### Changed
1818+- AI chat: friendlier API error surfacing — 401/403/429 responses now render clear, actionable messages (e.g. "Authentication failed (401). Check your API key or endpoint settings.") instead of the raw status line. (#682)
1919+- AI chat: stricter endpoint validation — `isConfigured` now delegates to a new `validateEndpoint` helper that rejects non-HTTP(S) protocols and malformed URLs, so invalid configs open the settings panel instead of silently failing on send. (#675)
13201421### Fixed
1522- Share links: enforce expiry server-side on document, snapshot, and save endpoints. Client surfaces a blocking "link has expired" overlay; owners are never gated. (#673)
···3037- Diagrams: operation-based undo/redo history — replaces snapshot cloning with invertible operations for collaboration-safe undo (#668)
31383239### Changed
4040+- Add undo window for permanent doc deletion (#674)
3341- Sheets: decomposed main.ts monolith into focused modules — core-state, cell-computation, selection-state, session-bootstrap (#656)
34423543## [0.46.0] — 2026-04-15