aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/server/repositories/sync.ts
AgeCommit message (Collapse)Author
2025-12-31feat(crdt): add server-side CRDT sync API handlingnsfisis
Add crdtChanges field to sync push/pull endpoints for CRDT document synchronization. The server now stores and retrieves CRDT binaries from the crdt_documents table, enabling conflict-free sync between clients. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31feat(schema): make note_id and is_reversed NOT NULLnsfisis
All cards now require note association - legacy card support removed. This aligns with the note-based card architecture introduced in Phase 8. - Add database migration for NOT NULL constraints - Update client Dexie schema to version 3 - Remove LegacyCardItem component and legacy card handling - Update sync schemas and type definitions - Update all tests to use note-based cards 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31test(sync): add client-side sync tests for note-related entitiesnsfisis
Add comprehensive tests for syncing NoteType, NoteFieldType, Note, and NoteFieldValue entities in push.test.ts and pull.test.ts. Tests cover: - Data format conversion between local and server representations - Applying pulled entities to local IndexedDB - Pushing pending changes to server - Updating existing entities during sync - Syncing all note-related entities together Also removes unused variable in sync repository. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31feat(sync): add sync support for note-related entitiesnsfisis
Extend the sync system to handle NoteType, NoteFieldType, Note, and NoteFieldValue entities. This includes: - Server sync repository and routes for push/pull of new entities - Client sync queue, push, pull, and conflict resolution for notes - Update Card sync to include noteId and isReversed fields - Add comprehensive tests for all sync functionality 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30fix(sync): verify card ownership before update in pushnsfisis
Previously, when updating an existing card during sync push, only the target deck ownership was verified. This allowed a user who knew another user's card ID to potentially update that card by specifying their own deck. Now the query joins with decks table to verify the existing card belongs to the current user. 🤖 Generated with [Claude Code](https://claude.ai/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(client): add sync status indicator componentnsfisis
Add SyncStatusIndicator component to display current sync state in the UI header. The component shows online/offline status, syncing progress, pending changes count, and sync errors. - Create SyncProvider context to wrap SyncManager for React components - Add SyncStatusIndicator component with visual status indicators - Integrate indicator into HomePage header - Add comprehensive tests for SyncStatusIndicator and SyncProvider - Update existing tests to include SyncProvider wrapper 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(server): add GET /api/sync/pull endpointnsfisis
Implement sync pull endpoint to fetch entities updated since a given syncVersion. Returns decks, cards, and review logs with their current sync versions for incremental client synchronization. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07feat(server): add POST /api/sync/push endpointnsfisis
Implement sync push endpoint with Last-Write-Wins conflict resolution. Includes Zod validation for decks, cards, and review logs. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>