chore: version packages#1032
Open
github-actions[bot] wants to merge 1 commit into
Open
Conversation
9a62604 to
1577c55
Compare
1577c55 to
5a22a20
Compare
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
loro-crdt-map@1.13.7
loro-crdt-map
1.13.6
Patch Changes
1.13.5
Patch Changes
1727258: Improve text insert and snapshot import performance by avoiding duplicate text boundary validation and skipping eager imported change block parsing.
52d8168: Recover two per-operation editing slowdowns regressed since 1.11.
Both are constant-factor regressions on the per-op (auto-commit) editing path
introduced by the lazy-snapshot work in perf: reduce snapshot read memory retention #985, measured against the 1.11.1
release.
MapHandler/ListHandler/MovableListHandlerinsert validated itsvalue with
ensure_no_regular_container_value, which heap-allocated aVecon each call even for scalar values (the common case). A scalar fast-path now
skips the allocation and traversal entirely.
map create 10^4 key:~19.4ms -> ~10.7ms.
TextHandler::len/len_unicode/len_utf16)took two
DocStatelocks — one to check whether the container state wasdecoded, then another to query the length. These are now consolidated into a
single
DocState::get_text_lenthat takes one lock and one container-storelookup. The lazy-snapshot memory behavior is preserved: a still-lazy
container reads its cached length metadata without materializing the full
richtext state.
bench_text B4 apply(per-op text editing): ~389ms -> ~352ms.1.13.4
Patch Changes
4d577ad: Fix two O(n^2) editing slowdowns.
validated each position by materializing the entire
[0, pos)prefix string,making every
insert/delete/splice/markO(n) and a run of edits O(n^2)(regression since 1.12.0). The boundary check now reads the rope's prefix
caches via the cursor (O(log n)). Unicode-indexed editing was unaffected.
one event batch (e.g. random-position inserts, or many distinct map-key
writes), building the event cloned the growing accumulated diff on every
compose — O(n^2) in the number of fragments. The diffs are now composed in
place. This affected text, map and list events.
scanned the chunk char-by-char, so editing/slicing a large contiguous chunk
(a big insert, a loaded document, or a long run of typed text that merges into
one chunk) was O(chunk length) per op. Chunks that contain no astral-plane
characters (UTF-16) or are pure ASCII (UTF-8) now convert in O(1), covering
essentially all real-world text (ASCII/Latin/CJK).
1.13.0
Minor Changes
ensureMergeable{Counter,Map,List,MovableList,Text,Tree}onLoroMap. A mergeable child lives at a deterministicContainerIDderived from(parent, key, kind), and its visibility is driven by a binary ref the parent map stores at the key, so deletes and kind conflicts resolve through the map's regular LWW.getOrCreateContaineris deprecated for lazy map-child creation; migrate those call sites toensureMergeable*.setContainerandinsertContainerregular semantics are unchanged.1.12.4
Patch Changes
1.12.2
Patch Changes
cc587ed: Add a browser package remapping so Vite/Rolldown production builds load WASM without top-level await or circular wasm wrapper chunks.
Also make the base64 entry easier to bundle with plain esbuild, Rollup, and Next.js Webpack by avoiding static Node builtin
require()calls and top-level await in browser bundles.8f57f4c: Reduce memory usage for read-only access to snapshot-imported documents by avoiding unnecessary lazy container state initialization.
1.12.0
Minor Changes
7dfda87: Make update imports atomic across oplog and document state application.
importandimport_json_updatesnow roll back imported oplog changes when state application fails, so malformed updates do not leave the document with oplog/state divergence.Patch Changes
64aa97c: Harden encoding, snapshot, and import paths against malformed input
import_json_updates): out-of-range compressed peer indices now returnDecodeErrorinstead of being silently accepted as raw peer IDs; mismatchedJsonOpContentvs container type returnsDecodeErrorinstead of panicking.decode_op): malformed op streams (missing delete iterators, type mismatches) now returnDecodeDataCorruptionErrorinstead of panicking.decode_snapshot_blob_meta): truncated or oversized section lengths now returnDecodeDataCorruptionErrorinstead of panicking on slice indexing.import_all): corruptedVersionVector/Frontiersmetadata now returnsDecodeDataCorruptionErrorinstead of panicking.LoroValueKind::from_u8,read_str): invalid byte values and invalid UTF-8 now returnDecodeDataCorruptionErrorinstead of panicking.LoroDoc::diff(): checkout failures during diff calculation are now propagated asLoroErrorinstead of panicking; state restore usesunwrap()to fail-fast on internal errors.try_get_text/list/map/tree/movable_list/counter: now returnNonefor wrong root container types instead of panicking.LoroError::OutOfBoundinstead of panicking.mov_after/mov_beforeon deleted node: returnsTreeNodeDeletedOrNotExistinstead of panicking.JsonChange::op_len: empty ops array returns0instead of panicking.renew_peer_id: avoids theoretical collision withPeerID::MAX.0977ad1: Fix lock-order panics when JavaScript callbacks re-enter Loro APIs.
opCount()no longer reacquires the OpLog lock while the current thread already holds a higher-order lock.LoroText.iter()snapshots text chunks before invoking the user callback, so callback code can safely read or mutate the document.ef100e6: Reduce memory spikes when exporting snapshots from shallow documents.
When a shallow document is re-exported from its existing shallow root with only a small tail of updates, Loro now reuses the stored shallow-root state instead of decoding all containers just to re-encode the same state.
933d5d6: feat: add clearRedo and clearUndo methods
feat(undo): add clearRedo and clearUndo methods #921
17dc6c0: Fix several edge-case contract violations in document, text, and JSONPath APIs.
value(...)comparisons now handle boolean values consistently with other scalar comparisons.ExpandType::BeforeandExpandType::Bothat documented insertion boundaries.LoroError::OutOfBoundinstead of panicking.1.11.1
Patch Changes
1.10.8
Patch Changes
1.10.6
Patch Changes
1.10.5
Patch Changes
1.10.4
Patch Changes
1.10.3
Patch Changes
1.10.2
Patch Changes
1.10.1
Patch Changes
1.10.0
Minor Changes
ce16b52: feat: add sliceDelta method to slice a span of richtext feat: add sliceDelta method to slice a span of richtext #862
Use
text.sliceDelta(start, end)when you need a Quill-style delta for only part of a rich text field (for example, to copy a styled snippet). The method takes UTF-16 indices; usesliceDeltaUtf8if you want to slice by UTF-8 byte offsets instead.Patch Changes
1.9.0
Minor Changes
10a405b: feat: JSONPath rfc9535 feat(jsonpath): rfc9535 #848
Thanks to @zolero for the thorough implementation of JSONPath support!
LoroDoc now supports querying and mutating document data using JSONPath, following the RFC 9535 specification.
🧩 API
📚 Query Examples
Example data setup
10a405b: refactor!: remove deprecated encoding format in v0.x refactor!: remove deprecated encoding format in v0.x #849
Patch Changes
1.8.9
Patch Changes
loro-crdt@1.13.7
Patch Changes
3986805: Speed up snapshot import. When decoding a Loro snapshot, the redundant per-block SSTable validation (eager block-metadata decode and per-block checksums) is now skipped, because the whole snapshot body is already protected by the document-level checksum verified during decoding. This removes a second hash pass over the data (roughly halving B4 snapshot import time) while preserving integrity guarantees.
This fast path is internal to Loro's snapshot decoding. The public
MemKvStore::import_allstill verifies every block's checksum; a separateimport_all_uncheckedopts into the unchecked path and is only used where an outer checksum already guarantees integrity.9b6330d: Speed up local text editing (~35% faster on the B4 editing trace). Three hot-path
changes: the lock-order debug instrumentation is now compiled out of release
builds (it ran on every per-op lock acquisition); the visible-op count is bumped
incrementally for local ops instead of recomputing it from the version vectors
(which also allocated) on every op; and a couple of per-op allocations on the
text insert/delete path were removed (lazy error-context formatting and inline
storage for entity ranges).