feat: add database version history previews and restore - #549
Merged
Merged
Conversation
There was a problem hiding this comment.
Sorry @appflowy, your pull request is larger than the review limit of 150,000 diff characters
Preserve Formula selectors and caches while keeping historical previews isolated from live relation, rollup, and member data.
…/database-version-history
Invalidate relation and rollup caches after restores and rebind mounted dependent observers. Guard stale asynchronous loads and cover repeated restores across relation labels, formulas, filters, and sorts.
…n-history # Conflicts: # src/components/app/hooks/useServerInfo.ts # src/components/app/layers/AppAuthLayer.tsx # src/components/document/history/DocumentHistoryVersionList.tsx # src/proto/messages.d.ts # src/proto/messages.js # src/proto/notification.proto
- Enable the database history restore permission fence in web CI so the backend advertises database history to the e2e suite - Expect the initial-hydration flag when rediscovering a restored database - Allow the first feed discussion mount more time on cold CI workers - Apply lint padding fixes to database test files Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…n-history # Conflicts: # src/application/database-yjs/context.ts # src/application/database-yjs/formula/read-context.ts # src/application/database-yjs/hooks/useRollupFieldObservers.ts # src/application/database-yjs/rollup/cache.ts # src/application/database-yjs/selector.ts
A peer restore can remount the in-progress cell editor after the "Database restored" notice opens. The editor's autofocus takes focus, and MUI's focus trap returns it to the dialog frame rather than the acknowledgement button, so Enter no longer dismisses the notice. Forward focus that lands on the dialog frame to the confirm button. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Drop the separate enable_database_history_version_ui flag. The web client now enables database history (menu entry, preview and restore) from enable_database_history alone; a missing flag still means disabled. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Hover controls: until the editor's mousemove handler positions the strip, it sits invisible at its static position over the first block and still receives pointer events, swallowing clicks and hovers there (subpage-creation hover timed out on it). Ignore pointer events until the handler enables them. rollup-final-parity: wait for the auto-expanded conditions bar instead of clicking the filter button when the chip is not yet visible, which collapsed the bar while it was still expanding. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The database restore barrier gated every collab type: with beforeSend configured, enqueueOutboxUpdate skipped its synchronous sibling-tab fan-out and immediate send for documents too, broadcasting only after the IndexedDB commit. Keystrokes then reached follower tabs in bursts, and the follower read BroadcastChannel collab messages through last-value React state, which keeps only the final message of a burst. Yjs parked every later update behind the lost one, freezing the follower at a prefix (tab_sync.spec.ts failed on 7 of 14 PR runs vs 0 of 39 on main). - Apply the restore barrier only to Database and DatabaseRow updates. - Deliver every BroadcastChannel collab message to the per-object incoming queue in arrival order instead of through last-value state. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* fix: report web bundle version to server-info * fix: set web client fallback version to 0.18.6
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds database version history to the web client. Users can preview saved views and row values in eight read-only layouts, then restore with a recovery checkpoint. Restoring from another tab or device also replaces the open database and its rows, refreshes mounted sidebar views, and preserves independent row-page documents.
Dependencies: history server #1156, restore reconciliation #1231 for sidebar reconciliation, permission/publication cleanup and committed Folder projection revisions. Companion desktop: #1386, using the native synchronization also consolidated in #1231. The history menu remains controlled by the server capability.
Implementation contract: Database version history.
Validation
Feature Preview
Actual history components with synthetic project data:
Checklist