Repository navigation
Version Packages - #239
Merged
Merged
Version Packages#239
Conversation
github-actions
Bot
force-pushed
the
changeset-release/main
branch
3 times, most recently
from
August 20, 2026 09:06
a2f0829 to
03d876d
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
August 26, 2026 07:04
03d876d to
fdd6f08
Compare
marcus-pousette
marked this pull request as draft
September 2, 2026 12:46
Collaborator
|
Release hold for the Sync v0 auth clean-slate sequence:
If the currently staged releases need to ship before #157 merges, this PR may instead be reviewed and released first; the hold then applies to the next generated Version Packages PR. |
github-actions
Bot
force-pushed
the
changeset-release/main
branch
3 times, most recently
from
September 7, 2026 18:12
bfcc009 to
1925e81
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
September 11, 2026 14:21
1925e81 to
d8668c9
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
6 times, most recently
from
September 23, 2026 12:59
3208a96 to
d4d65c6
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
3 times, most recently
from
October 7, 2026 07:41
71569e3 to
b91b773
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
4 times, most recently
from
October 19, 2026 10:02
67e4c9f to
c8589f6
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
3 times, most recently
from
October 30, 2026 17:57
15287cd to
83ef1ef
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
November 2, 2026 11:27
83ef1ef to
f65b8eb
Compare
marcus-pousette
marked this pull request as ready for review
November 3, 2026 14:07
Collaborator
|
Release hold lifted. There are no production users and no stored signed ops, so @treecrdt/auth can ship intermediate minors while #255 rewrites the auth profile in place. Expect @treecrdt/auth 0.3.0 once #262, #268 and the #255 rewrite land; anything signed with an earlier draft format must be recreated. |
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.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@treecrdt/wa-sqlite@1.0.0
Major Changes
createTreecrdtClient()options to a requireddocIdplus optionalpersistent,filename,crossTab, andassetsBaseUrloptions. The publicstorage/runtime/ nestedassetsconfiguration and theTreecrdtStorage,TreecrdtRuntime, andTreecrdtAssetstypes are removed. The package now selects storage and runtime internally: in-memory + direct runtime by default, OPFS + dedicated worker forpersistent: true, and a shared worker whencrossTab: true. Browser assets default to Vite'sBASE_URLbut the base remains overridable for custom asset routing; Vite continues to emit and resolve the WASM through its asset graph. Persistent filenames are derived deterministically fromdocIdwhen omitted using a readable prefix and the first 16 bytes of its SHA-256 hash encoded as base64url (the derivation is exported asopfsFilenameForDocId). The previousautodefault (OPFS when available) becomes in-memory; persistence is always explicit and never silently falls back — when OPFS is unavailable or fails to initialize, client creation throws with the reason. Cross-tab mode throws whenSharedWorkeris unavailable. On Node,persistent: trueandcrossTab: truethrow; use@treecrdt/sqlite-nodefor file persistence.Minor Changes
992283a: Use canonical VersionVector v0 bytes across storage and sync. The new
@treecrdt/wasm/codecentrypoint lazily loads the shared Rust implementation and exposes synchronous codec methods once ready.
Recreate development databases that contain the unreleased JSON format.
e1a6f4d: Replace keyset
treeChildrenPagewith optional index/length slices ontreeChildrenandTreecrdtNode.children(). Live (non-tombstoned) children are paginated in stable order.9a0534f: Replace the custom worker RPC with Comlink and split session data access from connection lifecycle.
createWaSqliteApiis removed; low-level callers that open a wa-sqlite handle themselves should initialize the extension, set the doc id, then pass the database tocreateTreecrdtSqliteAdapterfrom@treecrdt/interface/sqlite.createTreecrdtClient()is unchanged for typical apps.e69c29b: Replace the flat public
treesurface with a lazyget()/rootNode API, and split the wa-sqlite session intooperationsandtreesub-objects. Callers navigate withtree.get(id)?.payload()/parent()/children()instead ofexists/getPayload/parent/children; Node handles expose canonical 32-character lowercase hex ids, root aliases resolve to the always-available root handle, andparent()returnsundefinedwhen either the node or its parent is not visible. Select browser runtime wiring via an exhaustive strategy map instead of ad hoc branching.be09f09: Add
tree.changedSince(since, { limit, payloads })to the SQLite-backed engines. It returns each node whose visible state changed after aheadSeq, with its current state and the read'sheadSeq, so applications can keep derived data in step across restarts without rebuilding it. Materialization records each changed node'sheadSeqin a newtree_changestable within the same commit;since = 0reads every node. Existing databases gain the table on open. Paged reads are resumable catch-up, not frozen snapshots: nodes changed during paging may be deferred to the next read. Asinceahead of the database'sheadSeqis rejected. Catch-up reads scan that table, which keeps recording cheap; followonMaterializedbetween them.792a8a0: Initialize the shared TreeCRDT schema through awaited SQL in one transaction,
replacing the custom VFS retry loop. Failed initialization rolls back schema changes.
Document ID setup shares the write transaction so concurrent opens cannot race.
Low-level callers must now pass the connection's SQL runner as the third argument
to
initializeTreecrdtExtension(module, handle, db, docId), with an optional documentID to initialize in the same transaction. Rebuild the vendor WASM and
adapter together.
createTreecrdtClient()callers need no changes.ff82374: Open persistent OPFS databases in WAL mode with exclusive locking, roughly halving the cost of a single-operation commit. A database is now held by one client until it closes: without
crossTab, another client opening the same database, for example in a second tab, waits until the first client closes or its tab goes away. UsecrossTab: trueto share a persistent database between tabs. Connections that open these files directly must runPRAGMA locking_mode=EXCLUSIVEbefore their first statement.Patch Changes
detectOpfsSupport()andcreateTreecrdtClient({ persistent: true })no longer require COOP/COEP headers.@treecrdt/sync-protocol@0.2.0
Minor Changes
closemethod and a read-onlycloseSignal, treat each transport object as one connection lifecycle, propagate malformed frames and WebSocket closure through sync sessions instead of leaving pending work unresolved, and scope protocol session routing to the originating transport. The high-level custom-transport factory now owns transport cleanup and no longer accepts a separate close callback.Patch Changes
@treecrdt/auth@0.2.0
Minor Changes
knownStateinto operation signatures to prevent undetected tampering.Patch Changes
@treecrdt/sync@0.2.0
Minor Changes
closemethod and a read-onlycloseSignal, treat each transport object as one connection lifecycle, propagate malformed frames and WebSocket closure through sync sessions instead of leaving pending work unresolved, and scope protocol session routing to the originating transport. The high-level custom-transport factory now owns transport cleanup and no longer accepts a separate close callback.Patch Changes
@treecrdt/interface@0.3.0
Minor Changes
treeChildrenPagewith optional index/length slices ontreeChildrenandTreecrdtNode.children(). Live (non-tombstoned) children are paginated in stable order.treesurface with a lazyget()/rootNode API, and split the wa-sqlite session intooperationsandtreesub-objects. Callers navigate withtree.get(id)?.payload()/parent()/children()instead ofexists/getPayload/parent/children; Node handles expose canonical 32-character lowercase hex ids, root aliases resolve to the always-available root handle, andparent()returnsundefinedwhen either the node or its parent is not visible. Select browser runtime wiring via an exhaustive strategy map instead of ad hoc branching.tree.changedSince(since, { limit, payloads })to the SQLite-backed engines. It returns each node whose visible state changed after aheadSeq, with its current state and the read'sheadSeq, so applications can keep derived data in step across restarts without rebuilding it. Materialization records each changed node'sheadSeqin a newtree_changestable within the same commit;since = 0reads every node. Existing databases gain the table on open. Paged reads are resumable catch-up, not frozen snapshots: nodes changed during paging may be deferred to the next read. Asinceahead of the database'sheadSeqis rejected. Catch-up reads scan that table, which keeps recording cheap; followonMaterializedbetween them.@treecrdt/sync-protocol.Patch Changes
@treecrdt/wasm@0.1.0
Minor Changes
@treecrdt/wasm/codecentrypoint lazily loads the shared Rust implementation and exposes synchronous codec methods once ready.
Recreate development databases that contain the unreleased JSON format.
Patch Changes
@treecrdt/sync-postgres@0.1.3
Patch Changes
@treecrdt/sync-sqlite@0.1.3
Patch Changes
@treecrdt/sync-server-core@0.1.3
Patch Changes
closemethod and a read-onlycloseSignal, treat each transport object as one connection lifecycle, propagate malformed frames and WebSocket closure through sync sessions instead of leaving pending work unresolved, and scope protocol session routing to the originating transport. The high-level custom-transport factory now owns transport cleanup and no longer accepts a separate close callback.@treecrdt/sync-server-postgres-node@0.1.3
Patch Changes