Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
b4b9894
Add app-facing sync controller
marcus-pousette May 5, 2026
47b7b79
Add multi-peer sync controller
marcus-pousette May 5, 2026
c406b49
Simplify sync controller API names
marcus-pousette May 5, 2026
bd7bade
Simplify playground manual sync flow
marcus-pousette May 5, 2026
7328bb7
Reuse playground sync timeout helper
marcus-pousette May 5, 2026
9ba7e63
Extract playground remote sync socket
marcus-pousette May 5, 2026
5eb8f50
Rename outbound sync API
marcus-pousette May 5, 2026
db35221
Update outbound sync README example
marcus-pousette May 5, 2026
edcaec2
Simplify outbound queue API
marcus-pousette May 5, 2026
52326d0
Inline playground sync transport helper
marcus-pousette May 5, 2026
9689c6f
Move sync controller types to types module
marcus-pousette May 6, 2026
815d947
Simplify outbound sync API
marcus-pousette Jun 1, 2026
7e7b91e
Merge main into outbound sync branch
marcus-pousette Jun 1, 2026
89c0ce0
Inline playground remote sync socket
marcus-pousette Jun 2, 2026
1d3d69e
Add outbound sync changeset
marcus-pousette Jun 2, 2026
d743c7c
Let queueOps wake live subscriptions
marcus-pousette Jun 2, 2026
60678dd
Use queueOps directly in playground
marcus-pousette Jun 2, 2026
6be138e
Default outbound op keys for TreeCRDT ops
marcus-pousette Jun 2, 2026
5bd25cf
Default op ref derivation for TreeCRDT ops
marcus-pousette Jun 2, 2026
ef71eb7
Rename playground local sync peer
marcus-pousette Jun 2, 2026
10c37e2
Centralize playground peer registration
marcus-pousette Jun 2, 2026
15595ee
Rename outbound peers to targets
marcus-pousette Jun 2, 2026
0e668ff
Add outbound attach target helper
marcus-pousette Jun 2, 2026
7821011
Update remote live sync e2e assertion
marcus-pousette Jun 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .changeset/clean-outbound-sync.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
'@treecrdt/sync': minor
'@treecrdt/sync-protocol': patch
---

Add an outbound sync helper for queued local-op upload to remote peer transports. Standard
TreeCRDT operations are deduped by operation id by default; custom op shapes may provide `opKey`.
`SyncPeer` also derives op refs for standard TreeCRDT operations by default, so apps only need
`deriveOpRef` for custom op-ref schemes or nonstandard op shapes.
1 change: 1 addition & 0 deletions examples/playground/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"@treecrdt/crypto": "workspace:*",
"@treecrdt/discovery": "workspace:*",
"@treecrdt/interface": "workspace:*",
"@treecrdt/sync": "workspace:*",
"@treecrdt/sync-protocol": "workspace:*",
"@treecrdt/sync-sqlite": "workspace:*",
"@treecrdt/wa-sqlite": "workspace:*",
Expand Down
8 changes: 4 additions & 4 deletions examples/playground/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -468,7 +468,7 @@ export default function App() {
liveAllEnabled,
setLiveAllEnabled,
toggleLiveChildren,
queueLocalOpsForSync,
queueOps,
handleSync,
handleScopedSync,
postBroadcastMessage,
Expand Down Expand Up @@ -498,11 +498,11 @@ export default function App() {

const handleCommittedLocalOps = React.useCallback(
(ops: Operation[]) => {
// The local write already committed. This only feeds playground sync and debug UI state.
queueLocalOpsForSync(ops);
// The local write already committed; publish it to sync and debug UI state.
queueOps(ops);
recordOps(ops, { assumeSorted: true });
},
[queueLocalOpsForSync, recordOps]
[queueOps, recordOps]
);

const grantSubtreeToReplicaPubkey = React.useCallback(
Expand Down
Loading
Loading