Proto commits in yorkie-team/yorkie-js-sdk

These commits are when the Protocol Buffers files have changed: (only the last 100 relevant commits are shown)

Commit:2355936
Author:JiHwan Yim
Committer:GitHub

Add disablePresence option for presence-free Documents (#1285) Adds `disablePresence?: boolean` to `DocumentOptions` and `AttachOptions` so a Document can opt out of producing, consuming, or storing presence. The flag is sent on `AttachDocumentRequest`, fixated server-side on first attach (paired with yorkie-team/yorkie#1841), and read back from the response so late attachers learn the persisted value. When the resolved value is true, `client.attach` skips the initial presence push and `Document.update` silently drops any presence emit from the user callback (`ChangeContext.dropPresenceChange` + `clearReversePresence`), warning once per Document instance. A change carrying no operations after the strip never enqueues. `DocumentProvider` accepts the prop and threads it through `useYorkieDoc` into both `new Document` and `client.attach`, redepping on the value so a flipped prop spawns a fresh Document. Unit and integration tests cover local gating and the server-fixated strip across clients.

The documentation is generated from this commit.

Commit:63afb29
Author:hackerwins

deploy: 1a919e142e2377277ef8330bf5526a570a10e4a7

This commit does not contain any .proto files.

Commit:4500c4f
Author:Youngteac Hong
Committer:GitHub

Add disableGC attach option (#1265) Mirrors the wire contract from yorkie-team/yorkie#1822. Surfaces a disableGC attach option so a client can opt out of receiving the response VersionVector and participating in server-side minVV tracking. Targets high-fan-out Counter or primitive workloads where no client consumes tombstones. await client.attach(doc, { disableGC: true }); Adds bool disable_gc to AttachDocumentRequest (field 4) and PushPullChangesRequest (field 5) in the SDK's proto. Stores disableGC on the per-document Attachment so every subsequent PushPullChanges carries the flag, matching the server's per-request reading. The SDK option controls only the wire contract. It is distinct from any local-only Document GC pass. Misuse on a document that uses Tree, Text, or Array deletions leads to undefined GC behavior on this client; this is documented on the option's JSDoc.

Commit:c92a34f
Author:JOOHOJANG
Committer:GitHub

Channel lifecycle via RefreshChannel only (#1258) Align the JS SDK with the yorkie server change that folded ActivateClient, AttachChannel, and RefreshChannel into a single RefreshChannel call. The first call carries client_key and metadata, and the response delivers the assigned client_id and session_id. Drop the AttachChannel and DetachChannel RPC calls and route channel attach/detach through RefreshChannel only. Allow client.attach(channel) and peekChannel without a prior client.activate(); channel-only clients are activated lazily by the first heartbeat. Defer opening the Realtime watch stream until the first heartbeat populates client.id, which the watch RPC requires. Default the channel heartbeat to 5s (TTL/3 for the server's new 15s ChannelSessionTTL); document polling default stays at 3s. Auto-recover when the server returns ErrSessionNotFound by clearing the local sessionID so the next tick transparently re-attaches. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

Commit:8cd527e
Author:JOOHOJANG
Committer:GitHub

Add PeekChannel client + usePeekChannel React hook (#1256) Pairs with yorkie-team/yorkie#1805. Exposes the new server-side PeekChannel RPC as `client.peekChannel(channelKey): Promise<number>` and a `usePeekChannel(channelKey, opts)` React hook on top of it. PeekChannel reads a channel's session_count without creating a Session on the server, without subscribing to broadcasts, and without paying pubsub fan-out cost. Use it for read-only displays of the count (e.g. an "N writing" badge shown on many surrounding pages) where ChannelProvider(readOnly) would have every viewer occupy a Session. The hook supports one-shot fetch (default), continuous polling via pollInterval, an enabled flag, and an imperative refetch(). The SDK method is serialised through the client task queue so concurrent calls cannot race deactivate(). The hook tracks mount state so refetch() after unmount no longer leaks setState calls. A polling playground demo (StockDetail WritersPeekCTA, WritePostPage) shows the recommended usage pattern. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

Commit:045a227
Author:Youngteac Hong
Committer:GitHub

Apply array-move-convergence with LWW position register (#1227) Port the LWW position register design from the Go SDK to fix Array.MoveAfter non-convergence. Core changes: - Separate element identity from position with ElementEntry and RGATreeListNode (matching Go SDK structure) - MoveAfter with LWW check, dead position node creation for losers - Register dead position nodes for GC in all local move paths (moveBeforeInternal, moveAfterInternal, moveFrontInternal, moveLastInternal) - Convert element identity to position identity at insert call sites (insertAfter proxy, insertIntegerAfterInternal, splice) - Remove getPrevCreatedAt legacy fallback, delegate to findPrevCreatedAt - DeepCopy preserves dead position nodes and posMovedAt metadata - Snapshot serialization with position_created_at, position_moved_at, position_removed_at fields - Skip set-after-move undo tests (requires proto-level fix) Tests: - Array Concurrency Table: 49 op-pair cases - Complicated concurrent array operations: 4 double-move cases Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Commit:8a2b55b
Author:Youngteac Hong
Committer:GitHub

Add Counter dedup mode with HyperLogLog for UV measurement (#1215) Add a dedup Counter variant (IntDedup) that uses HyperLogLog to count unique actors, matching the Go server implementation. Key changes: - HyperLogLog with xxhash64 (pure BigInt, zero dependencies) — produces identical output to Go's cespare/xxhash/v2 - New CounterType.IntDedup encodes dedup mode at creation - DedupCounter class with add(actor) API for clean usage - IncreaseOperation carries optional actor field, disables undo/redo for dedup (HLL is append-only) - Dedup Counter blocks plain increase(), enforces delta == 1, validates actor, masks BigInt shift to 64 bits - HLL state serialized in snapshots, restore validates payload size Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

Commit:bb112b8
Author:Youngteac Hong
Committer:GitHub

Mirror tree merge snapshot encoding fix from Go SDK (#1210) Port yorkie-team/yorkie#1729 to keep JS clients consistent with the server's new snapshot encoding for merge runtime state. Without this, a JS replica attaching after a remote merge and receiving a concurrent insert targeting the merged-away parent would silently drop the insert. Add merged_from (#9) and merged_at (#10) optional fields to the TreeNode proto; regenerate resources_pb.ts (yorkie_pb.ts also rides along, picking up pre-existing source drift). toTreeNodes writes both fields; fromTreeNode reads them. CRDTTree gains a rebuildMergeState pass called from the constructor, reconstructing mergedInto on source parents from the moved children's mergedFrom and falling back to source.removedAt for mergedAt on pre-fix snapshots. CRDTTreeNode drops mergedChildIDs entirely; its two use sites (propagateMergeDeletes and the redirect branch in findTreeNodesWithSplitText) now recompute the list via mergeTarget.allChildren filtered by mergedFrom. Final merge- field count on CRDTTreeNode: 4 -> 3, matching Go. See yorkie-team/yorkie#1729 for the full rationale, including the review that caught the source.removedAt mutability issue. Verified by a new converter_test.ts regression, 237 unit tests, and 141 + 1128 integration cases across tree_test.ts and tree_concurrency_test.ts. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Commit:95fcdb6
Author:Youngteac Hong
Committer:GitHub

Add tree-level schema validation and ProseMirror example (#1181) Implement ProseMirror-compatible content expression system to validate CRDTTree structure against schema-defined node rules. This enables defining tree node types with content expressions, marks, and groups directly in the Yorkie schema DSL (e.g. yorkie.Tree<{ doc: { content: "paragraph+"; }; }>). Changes: - Extend ANTLR grammar and RulesetBuilder to parse tree schema definitions - Implement content expression parser/matcher with backtracking support - Add tree validator that checks node types, content rules, and marks - Integrate tree schema validation into the ruleset validator pipeline - Add protobuf TreeNodeRule support and API converter - Add ProseMirror tree-schema example with setup script - Add comprehensive unit and integration tests Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

Commit:994bae2
Author:Youngteac Hong
Committer:GitHub

Add undo/redo support for Text.Style operations (#1174) Add reverse operation construction to StyleOperation.execute() so that text style changes can be undone and redone. This follows the existing TreeStyleOperation pattern with attributesToRemove for style removal. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

Commit:8013490
Author:Youngteac Hong
Committer:GitHub

Replace WatchDocument and WatchChannel with unified Watch RPC (#1161) Update JS SDK to use the unified Watch RPC instead of the removed WatchDocument and WatchChannel RPCs. Split Document.applyWatchStream into applyWatchInit and applyDocEvent methods for cleaner separation of initialization and event handling. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

Commit:fb8eb1c
Author:emplam27
Committer:GitHub

Refactor channel terminology from presence to session (#1154) Rename the term "presence" to "session" across channel logic. Update Protobuf field name from "count" to "session_count" in channel API responses.

Commit:244a37f
Author:Youngteac Hong
Committer:GitHub

Remove RemoveIfNotAttached option from SDK (#1148) The option is now managed at the project level and has been removed from the SDK. For more details: https://github.com/yorkie-team/yorkie/pull/1622

Commit:4e1896b
Author:emplam27
Committer:GitHub

Rename presence_count to session_count (#1142)

Commit:b0f363e
Author:Youngteac Hong
Committer:GitHub

Add GetRevision for retrieving specific revisions (#1133)

Commit:fe1dbc2
Author:Youngteac Hong
Committer:GitHub

Implement revision management (#1127) Introduce full revision management for documents, including creation, paginated listing, and restore operations with labels and descriptions.

Commit:2d5fb05
Author:Youngteac Hong
Committer:GitHub

Update CHANGELOG.md for v0.6.39 (#1125)

Commit:3ba4f37
Author:Youngteac Hong
Committer:GitHub

Rename Presence to Channel (#1103) This commit refactored Presence to a more general-purpose Channel. The new Channel abstraction supports both presence tracking and message broadcasting within the same interface. All presence-related RPC methods have been renamed to their channel-based counterparts: AttachChannel, DetachChannel, RefreshChannel, and WatchChannel. Request and response message types have been updated to align with the channel architecture, and a new ChannelEvent type was introduced for unified event streaming and management. This change introduces breaking updates—existing integrations using Presence must migrate to the new Channel APIs.

Commit:ed6476f
Author:Youngteac Hong
Committer:GitHub

Refactor broadcast handling in Presence (#1102) This commit refactored the broadcast system to use Presence as the primary communication channel instead of Document. PresenceEvent now supports broadcast events with publisher, topic, and payload details. It also removed document-based broadcast logic and updated request structures to use presence keys rather than document identifiers.

Commit:2f909f2
Author:Youngteac Hong
Committer:GitHub

Enhance presence with manual and realtime sync (#1096) - Modified `refreshPresence` to return presence count.

Commit:6b78c18
Author:Youngteac Hong
Committer:GitHub

Add real-time presence tracking (#1091) This commit introduces real-time presence tracking in the JS SDK, allowing clients to attach, detach, refresh, and watch presence states with live count updates and heartbeat-based session management. A unified attach/detach model has been added for both documents and presence, based on the new Attachable and Attachment resource model. The SDK now exposes presence events (initialized, count-changed), configurable heartbeat intervals, and a demo page showing join/leave and online counts. The document-level presence type has been renamed from Presence to DocPresence, and Presence is now exported from the top-level API.

Commit:f14b06e
Author:Youngteac Hong
Committer:Youngteac Hong

Introduce Dedicated Presence

Commit:46d1148
Author:Youngteac Hong
Committer:Youngteac Hong

Introduce presence counter

Commit:36e35d6
Author:Youngteac Hong
Committer:Youngteac Hong

Introduce presence counter

Commit:35fc014
Author:Youngteac Hong
Committer:Youngteac Hong

Introduce presence counter

Commit:6435b07
Author:Youngteac Hong
Committer:GitHub

Add getOthersPresences and synchronous deactivation (#1081) This commit introduces the doc.getOthersPresences() API, which allows retrieving the presences of other collaborators in a document while excluding the caller’s own presence. In addition, a synchronous option has been added to client deactivation to support cases where a synchronous shutdown flow is required. This commit also reflects recent Admin API changes.

Commit:88f853e
Author:Youngteac Hong
Committer:GitHub

Remove deprecated SelectOperation (#1038) SelectOperation in Text is no longer needed since presence is now handled via Change. It was kept for backward compatibility, but has become obsolete after document compaction. This commit removes it completely.

Commit:c4890e7
Author:Youngteac Hong

Revise the codes

Commit:6b78d99
Author:yonguk-k

Add clientKey field to yorkie API requests for clients collection key-wide hashed sharding

Commit:938838c
Author:yonguk-k

Add client_key field to multiple request messages in API

Commit:9774951
Author:Yourim Cha
Committer:GitHub

Add schema support (#1010) This commit introduces schema support to validate and manage the structure of collaborative documents. Schemas can be created and updated via the dashboard UI, and are stored and validated using the @yorkie-js/schema package. A schema can be attached to a document using the SDK before any clients are attached. If a schema is already attached or the document has active clients, the attachment is ignored. During local edits, the attached schema is used to validate changes, and schema violations result in client-side errors. Via the AdminService API, schemas can also be updated or detached from documents. The UpdateDocument API supports different behaviors depending on whether the `root` and `schemaKey` fields are present or empty. Currently, only primitive type validations are supported. Additional rule types will be implemented later in the ruleset generation and validation logic.

Commit:616e468
Author:Youngteac Hong
Committer:GitHub

Bump up presence protocol (#1008)

Commit:5dd44fe
Author:Yourim Cha

Update proto

Commit:34df77b
Author:Yourim Cha
Committer:Yourim Cha

Move schema rules from ChangePack to AttachResponse

Commit:fa59385
Author:Yourim Cha

Merge branch 'main' of https://github.com/yorkie-team/yorkie-js-sdk into schema

Commit:8e4251a
Author:JiHwan Yim
Committer:GitHub

Introduce size limit for documents (#992) Added size limit for documents(10 MiB default), enforced during the document editing. Local updates will be checked against this limit, but remote changes exceeding the limit will still be accepted. This helps prevent excessive resource usage and ensures stable client-server interactions.

Commit:1cf121d
Author:raararaara

Add test for document size limit

Commit:dff5b14
Author:raararaara

Introduce doc size limit

Commit:52fa09a
Author:Yourim Cha

Merge branch 'main' of https://github.com/yorkie-team/yorkie-js-sdk into schema

Commit:45c9d3d
Author:Yourim Cha
Committer:GitHub

Remove deprecated MinSyncedTicket and MaxCreatedAtMapByActor (#969) This commit removes legacy fields and logic related to Lamport timestamp synchronization: - Removed `MinSyncedTicket` and its associated logic - Removed `MaxCreatedAtMapByActor` and related code These were previously retained for backward compatibility during the migration to VersionVectors and are no longer needed.

Commit:1a2bb22
Author:Youngteac Hong
Committer:Youngteac Hong

Add schema support

Commit:6a2351f
Author:Youngteac Hong
Committer:Youngteac Hong

Add schema support

Commit:14e0fc2
Author:Yourim Cha
Committer:Yourim Cha

Removed the deprecated MaxCreatedAtMapByActor field and its associated logic

Commit:59661f3
Author:Yourim Cha

Remove deprecated MinSyncedTicket field and related functionality

Commit:a2c785c
Author:emplam27
Committer:GitHub

Add metadata to Client for MAU tracking (#942) Enhances client information tracking by adding metadata fields. These additions enable accurate Monthly Active User measurements and allow for storage of additional user-specific data in the analytics system.

Commit:2124689
Author:JOOHOJANG
Committer:GitHub

Introducing version vector to solve GC problem (#899) This change introduces Lamport Synced Version Vector to resolve defects in the existing garbage collection system that used syncedSeq. Key improvements include: - Added Version Vector implementation with Lamport timestamp support - Implemented database storage and update mechanisms for version vectors - Created min version vector computation for safe garbage collection - Added handling for detached client's version vectors to prevent memory leaks - Updated change ID generation to incorporate version vector information The Version Vector ensures all changes are properly synchronized across replicas before garbage collection occurs, improving system reliability and reducing memory waste from detached clients. --------- Co-authored-by: Youngteac Hong <susukang98@gmail.com>

Commit:cdeeef7
Author:Youngteac Hong
Committer:GitHub

Update target to ES2020 and replace Long with bigint (#912) This commit Streamlines data type handling by replacing Long with native. It also updates target to ECMAScript 2020. Despite the introduction of bigint, but Long still remains in Counter. We need to remove Long.

Commit:ee8e411
Author:JOOHOJANG

Remove min synced version vector from proto

Commit:cae3f9c
Author:JOOHOJANG

Remove snapshot version vector

Commit:e0988d0
Author:JOOHOJANG

Update Proto

Commit:6f0c315
Author:JOOHOJANG

Build proto to reflect versionvector and min synced version vector

Commit:2f1cd8b
Author:Gunwoo Baik
Committer:Youngteac Hong

Introduce monorepo to manage packages using `pnpm` (#880) Workspace: ``` examples/ - nextjs-scheduler - profile-stack - react-tldraw - react-todomvc - simultaneous-cursors - vanilla-codemirror6 - vanilla-quill - vuejs-kanban packages/ - create-yorkie-app - devtools - sdk <-- previous yorkie-js-sdk package ``` Command: ``` `sdk` - [x] pnpm sdk build - [x] pnpm sdk build:proto - [x] pnpm sdk build:docs - [x] pnpm sdk build:ghpages - [x] pnpm sdk dev - [x] pnpm sdk test - [x] pnpm sdk test:watch - [x] pnpm sdk test:bench - [x] pnpm sdk test:ci - [x] pnpm sdk test:yorkie.dev - [x] pnpm sdk lint - [x] pnpm sdk prepare `devtools` - [x] pnpm devtools dev - [x] pnpm devtools build - [x] pnpm devtools test `create-yorkie-app` - [x] pnpm create-yorkie-app start - [x] pnpm create-yorkie-app build - [x] pnpm create-yorkie-app build:copy-assets ``` --------- Co-authored-by: Youngteac Hong <susukang98@gmail.com>

Commit:ef412fa
Author:Youngteac Hong
Committer:Youngteac Hong

Introduce VersionVector

Commit:9e12b9e
Author:JiHwan Yim
Committer:GitHub

Add RHTNode removal to converter for consistency (#842) This commit addresses the missing `isRemoved` encoding in the RHT. Similar to other CRDTs like ElementRHT, including tombstone nodes like `isRemoved` during encoding is crucial. However, the RHT did not include tombstone nodes in its encoding, leading to inconsistencies in snapshots. --------- Co-authored-by: Youngteac Hong <susukang98@gmail.com>

Commit:e086ad7
Author:JiHwan Yim
Committer:GitHub

Handle concurrent editing and styling in Tree (#803) We will use maxCreatedAtMapByActor until the introduction of VersionVector.

Commit:2af8a0c
Author:JiHwan Yim
Committer:GitHub

Implement Protocol Changes for Tree.RemoveStyle (#755) This commit reflects protocol changes for the Tree.RemoveStyle. Proto file and converter were modified to reflect requirements related to the Tree.RemoveStyle patch.

Commit:2882578
Author:Sejong Kim
Committer:GitHub

Restore interface changes due to server DB sharding (#740) This commit restores passing sharding keys to the SDK in accordance with yorkie-team/yorkie#776.

Commit:363229b
Author:Sejong Kim
Committer:GitHub

Reflect interface changes of server DB sharding (#726) This commit reflects passing sharding keys to the SDK in advance before releasing the server with MongoDB sharding applied.

Commit:7368454
Author:Kevin Park
Committer:Youngteac Hong

Migrate RPC to ConnectRPC (#698) With this support, we can resolve several issues: - Removes dependency with Envoy proxy to communicate with grpc-web - Reduces SDK bundle size by half bundle size of #434 - Standardizes API interfaces to powerful fetch API For more information about this migration, follow: yorkie#703 --------- Co-authored-by: Youngteac Hong <susukang98@gmail.com>

Commit:6e8150c
Author:Kevin Park

Set connect-es js import style to commonjs & enable benchmark

Commit:2b52110
Author:Youngteac Hong
Committer:Youngteac Hong

Clean up yorkie.proto and remove grpc-web from package.json

Commit:4cc4c10
Author:Kevin Park
Committer:Kevin Park

Update client runWatchLoop to avoid async promise executor

Commit:1280b13
Author:Kevin Park
Committer:Kevin Park

Update protobuf and client

Commit:2b0b7f6
Author:Youngteac Hong
Committer:GitHub

Implement splitLevel of Tree.Edit (#704) When a user positions the cursor within a paragraph and hits the enter key, the paragraph is divided into two separate paragraphs: - Original: `<p>a|b</p>` - Result: `<p>a</p><p>b</p>` In this commit, `splitLevel` is introduced to support this scenario. ```ts doc.update((root) => { root.tree.edit([0,0], {type:'p',children:[{type:'text', value: 'ab'}]}); root.tree.edit([2,2], undefined, 1); // split the paragraph }); ``` This commit does not cover all test cases that may arise due to the split operation. This is because we need to verify the interface first. we need to add test cases in the simultaneous editing situation to verify the algorithm later. Tasks: - Refactor Tree.Edit logic to implement splitLevel of Tree.Edit - Remove skip from the unit tests related to splitLevel

Commit:5716e26
Author:Yourim Cha

Remove createdAtMapByActor in EditReverseOperation

Commit:5f9263f
Author:Yourim Cha
Committer:Yourim Cha

Replace TextNodeIDWithLength to RGATreeSplitPos

Commit:d2a88c2
Author:Yourim Cha

Merge branch 'feat/undo-redo-arch' of https://github.com/yorkie-team/yorkie-js-sdk into feat/text-edit-reverse

Commit:fd6ae03
Author:Yourim Cha
Committer:Yourim Cha

Merge branch 'main' of https://github.com/yorkie-team/yorkie-js-sdk into feat/undo-redo-arch

Commit:ce14cb0
Author:Yourim Cha
Committer:Yourim Cha

Add fields markOpsBefore and markOpsAfter to TextNode in protobuf

Commit:5bef0ad
Author:MoonGyu1
Committer:MoonGyu1

Add boundary type 'none' and apply lint

Commit:79c4f41
Author:MoonGyu1

Update protocol

Commit:4b1d850
Author:hyemmie

Update protocol buffer to add EditReverse

Commit:1594345
Author:gyuwonMoon
Committer:GitHub

Support concurrent formatting of Text (#642) Currently, we are unable to check for concurrent cases when applying the Text.setStyle operation. This pull request introduces a map called latestCreatedAtMapByActor to track the causality between the operations of the two clients and ensures that the results converge into one.

Commit:76370be
Author:hyemmie

Update protocol buffer

Commit:5523983
Author:JOOHOJANG
Committer:GitHub

Change TreeNode to have IDs instead of insPrev, insNext (#627) During the conversion, it's hard to find insPrev, insNext nodes from IDs because we can't use LLRB at that moment. Therefore, this commit changed it to keep IDs of insPrev and insNext and find the actual nodes when we need them.

Commit:990a6d6
Author:ehua
Committer:GitHub

Concurrent case handling for Yorkie.tree (#611) Introduced a new logical timestamp for identifying the position in local/remote editing, and ensures commutative editing in concurrent cases. This logical timestamp consists of {parentID, leftSiblingID}. This allows editing at the front of text nodes by using a reference to the parent, as well as getting rid of the local offset used to access an element node's children previously by using the leftSiblingID. --------- Co-authored-by: JOOHOJANG <jayjangjoo@gmail.com> Co-authored-by: Youngteac Hong <susukang98@gmail.com> Co-authored-by: sejongk <sepaper@naver.com> Co-authored-by: MoonGyu1 <s201801402@hufs-gsuite.kr>

Commit:7b390c6
Author:Yourim Cha
Committer:Yourim Cha

Cleanup proto - Remove unused client id(key) from API response - Change clientID type from bytes to string in the API

Commit:eb7ef2f
Author:Yourim Cha
Committer:Yourim Cha

Change 'Documents' from plural to singular in DocEvent

Commit:78f36dd
Author:Yourim Cha
Committer:GitHub

Move Presence from Client to Document (#574) To ensure atomic delivery of data for `Document` and `Presence` to users, we are removing `Presence` from the `Client` and moving it to the `Document`. In the future, we plan to further modify it by changing `Document` to `Channel` or `Room` and rename `Root` as `Document`. UpdatePresence `UpdatePresence API` has been removed. Now, document and presence changes are transmitted using the `PushPull API`. Consequently, the presence is no longer transmitted as a component of the `Client`, but rather included within the change. ChangePack now contains `presence`. WatchDocument In the `WatchDocument API`, both the request and response only include the client ID, excluding the presence. --------- Co-authored-by: Youngteac Hong <susukang98@gmail.com>

Commit:a300e36
Author:Yourim Cha
Committer:Yourim Cha

Update presence batch protobuf

Commit:3ce9b66
Author:Yourim Cha
Committer:Yourim Cha

Merge branch 'main' of https://github.com/yorkie-team/yorkie-js-sdk into presence-batch

Commit:36cf042
Author:JOOHOJANG
Committer:GitHub

Bump up protobuf (#570)

Commit:6132b6a
Author:Yourim Cha

Rename PresenceInfo to Presence

Commit:69a2b88
Author:Yourim Cha
Committer:Yourim Cha

Remove clock infomation from presence

Commit:de51392
Author:Yourim Cha

Merge branch 'main' of https://github.com/yorkie-team/yorkie-js-sdk into presence-batch

Commit:5b0e809
Author:Youngteac Hong
Committer:GitHub

Implement Tree.Style and Tree.StyleByPath (#542) * Implement pathToPosRange (#545) * Implement Tree.Style and Tree.StyleByPath * Move Parse/Stringify object method to object util and apply those methods when tree editing/styling --------- Co-authored-by: JOOHOJANG <jayjangjoo@gmail.com>

Commit:9852473
Author:Yourim Cha

Change documents event to singular form

Commit:0b1c274
Author:Yourim Cha

Build the presence map from the snapshot

Commit:5fe4b8d
Author:JOOHOJANG

update proto

Commit:814b4c7
Author:Yourim Cha

Handle peers-changed events via `peers` topic in `doc.subscribe`

Commit:02ad604
Author:Yourim Cha
Committer:Yourim Cha

Merge branch 'main' of https://github.com/yorkie-team/yorkie-js-sdk into presence-batch

Commit:b64d829
Author:Youngteac Hong
Committer:Youngteac Hong

Implement yorkie.Tree for text editors using tree model (#507) In order to support collaborative editing in text editors like ProseMirror that use Tree-based model, yorkie.Tree is provided. yorkie.Tree is implemented based on RGATreeSplit. The Tree allows specifying the position of content using index or path --------- Co-authored-by: 장주호 <jooho.jang@navercorp.com> Co-authored-by: easylogic <cyberuls@gmail.com>

Commit:5492370
Author:Youngteac Hong

Clean up codes and add proto message for yorkie.Tree

Commit:4b116e4
Author:Yourim Cha
Committer:Yourim Cha

Send updated PresenceInfo within the Change instead of ChangePack

Commit:600186f
Author:Yourim Cha
Committer:Yourim Cha

Move presence from client to document and include presence updates in ChangePack

Commit:913d608
Author:Yourim Cha
Committer:GitHub

Add Client sync mode (#495) Co-authored-by: Youngteac Hong <susukang98@gmail.com>

Commit:1e2c32d
Author:Yourim Cha
Committer:GitHub

Add RemoveDocument API (#480) Co-authored-by: Youngteac Hong <susukang98@gmail.com>

Commit:738d1dd
Author:Yourim Cha
Committer:GitHub

Remove duplicated key from TextNodeAttr (#429) * Remove duplicated key from TextNodeAttr * Rename getAttr to getAttrs

Commit:afcdb1a
Author:Yourim Cha
Committer:GitHub

Merge Text and RichText (#425)

Commit:e18ed0d
Author:Youngteac Hong
Committer:GitHub

Bump up proto files to the latest (#367)