All notable changes to Yorkie will be documented in this file.
The format is based on Keep a Changelog, and Yorkie adheres to Semantic Versioning.
- Enhance housekeeping to add variety of tasks by @hackerwins in yorkie-team#932
- Enhance GetDocuments API by adding bulk retrieval by @kokodak in yorkie-team#931
- Improve performance for creating crdt.TreeNode by @m4ushold in yorkie-team#939
- Update
updated_at
only when there are operations in changes by @window9u in yorkie-team#935
- Provide error codes for enhancing error handling from clients by @hackerwins in yorkie-team#927
- Prevent exposure of removed documents when searching by @hackerwins in yorkie-team#918
- Ensure proper deletion of documents in MemDB by @hackerwins in yorkie-team#920
- Handle local changes correctly when receiving snapshot by @raararaara in yorkie-team#923
- Remove node from index during GC by @raararaara in yorkie-team#913
- Add GetDocuments API returning document summaries by @hackerwins in yorkie-team#909
- Update CI workflow to trigger Pull Request CI only on code-level changes by @kokodak in yorkie-team#906
- Return ErrAlreadyDetached when reattaching by @hackerwins in yorkie-team#908
- Add Project field to YorkieService logs by @hackerwins in yorkie-team#911
- Remove commit revision in version command by @hackerwins in yorkie-team#905
- Fix missing document detachments when client is deactivated by @raararaara in yorkie-team#907
- Fix duplicate changes when syncing and detaching by @hackerwins in yorkie-team#896
- Fix miscalculation of tree size in concurrent editing by @raararaara in yorkie-team#891
- Add RHTNode removal to converter for consistency by @hackerwins in yorkie-team#888
- Handle concurrent Tree.RemoveStyle by @hackerwins in yorkie-team#883
- Return ErrClientNotActivated for deactivated clients on WatchDocument by @hackerwins in yorkie-team#877
- Fix incorrect tree snapshot encoding/decoding by @raararaara in yorkie-team#881
- Implement RHT.GC by @hackerwins in yorkie-team#864
- Add Resource Configuration in
yorkie-mongodb
Helm chart by @krapie in yorkie-team#872 - Add snapshot-disable-gc flag by @hackerwins in yorkie-team#874
- Move ToXML from RHT to TreeNode by @raararaara in yorkie-team#863
- Apply GCPair to TreeNode, TextNode by @hackerwins in yorkie-team#866
- Handle concurrent editing and styling in Tree by @hackerwins in yorkie-team#854
- Fix inconsistent garbage collection for multiple nodes in text and tree type by @chacha912 in yorkie-team#855
- Support
yorkie-monitoring
andyorkie-argocd
Charts on NCP by @krapie in yorkie-team#846
- Support NCP ALB by @hackerwins in yorkie-team#835
- Move Client.Watch inside Client.Attach by @krapie in yorkie-team#803
- Use DBConnectionURI directly by @hackerwins in yorkie-team#833
- Move
istio-ingressgateway
to Yorkie Namespace by @krapie in yorkie-team#836
- Provide CODECOV_TOKEN to codecov-action by @hackerwins in yorkie-team#843
- Fix incorrect calculation in
indexTree.treePosToPath
operation by @raararaara in yorkie-team#824 - Fix logic errors in TreeNode.DeepCopy by @raararaara in yorkie-team#821
- Fix missing escapeString in Tree Marshal by @chacha912 yorkie-team#830
- Add Swagger Serving Command by @devleejb in yorkie-team#812
- Add MongoDB sharding document by @sejongk in yorkie-team#781
- Add merge and split concurrency tests by @justiceHui in yorkie-team#780
- Prevent RunTestConcurrency from creating garbage clients by @justiceHui in yorkie-team#793
- Add Test Server Wait Helper Function by @krapie in yorkie-team#787
- Update Design Document for Missing Document Link and Instructon by @krapie in yorkie-team#782
- Introduce MongoDB sharding rules to Project-wide and Document-wide collections by @sejongk in yorkie-team#776
- Add Helm chart for MongoDB sharded cluster by @sejongk in yorkie-team#769
- Improve object creation with an initial value of specific types by @highcloud100 in yorkie-team#766
- Refactor concurrency tests for basic Tree.Edit by @justiceHui in yorkie-team#772
- Remove unnecessary
String()
calls withstringer
interface by @sejongk in yorkie-team#777
- Add API for Retrieving All Documents by @raararaara in yorkie-team#755
- Introduce object creation interface with initial values by @highcloud100 in yorkie-team#756
- Implement Tree.RemoveStyle by @justiceHui in yorkie-team#748
- Fix RHT.Remove and Add test code by @justiceHui in yorkie-team#752
- FIx Finding Housekeeping Candidates and Modify Housekeeping Structure by @devleejb in yorkie-team#749
- Add concurrent editing test cases in Tree by @sejongk in yorkie-team#751
- Introduce TreeToken and tokensBetween to Tree by @sejongk in yorkie-team#747
- Add RPC and profiling ports to Yorkie deployment by @hackerwins in yorkie-team#727
- Change CLI TLS configuration to HTTP2 by @krapie in yorkie-team#742
- Replace grpcstatus.Errorf with connect.Error by @chacha912, @highcloud100 in yorkie-team#741
- Fix
getGarbageLen
to retrun correct size by @devleejb in yorkie-team#743 - Fix typo in
MAINTAINING.md
by @devleejb in yorkie-team#739
- Support concurrent insertion and splitting in Tree by @sejongk in yorkie-team#725
- Migrate RPC to ConnectRPC by @krapie, @hackerwins yorkie-team#703
- Address duplicate nodeIDs in Tree.Split @sejongk yorkie-team#724
- Add Rate Limit using Istio Envoy by @joonhyukchoi in yorkie-team#674
- Implement splitLevel of Tree.Edit by @hackerwins in yorkie-team#705
- Bump github.com/spf13/viper from 1.15.0 to 1.17.0 by @dependabot in yorkie-team#693
- Bump github.com/jedib0t/go-pretty/v6 from 6.4.0 to 6.4.9 by @dependabot in yorkie-team#695
- Bump actions/setup-go from 3 to 4 by @dependabot in yorkie-team#698
- Bump helm/chart-releaser-action from 1.5.0 to 1.6.0 by @dependabot in yorkie-team#699
- Bump docker/login-action from 2 to 3 by @dependabot in yorkie-team#700
- Bump google.golang.org/grpc from 1.58.2 to 1.58.3 by @dependabot in yorkie-team#701
- Bump golang.org/x/crypto from 0.14.0 to 0.16.0 by @dependabot in yorkie-team#702
- Bump github.com/rs/xid from 1.4.0 to 1.5.0 by @dependabot in yorkie-team#697
- Implement merge elements in Tree.Edit by @hackerwins in yorkie-team#659
- Add PushPull benchmark test by @sejongk in yorkie-team#658
- Setup Dependabot by @jongwooo in yorkie-team#675
- Bump up golangci-lint and fix lint errors by @hackerwins in yorkie-team#660
- Modify converter to allow setting values for object and array by @chacha912 and @hackerwins in yorkie-team#687
- Bump golang.org/x/net from 0.10.0 to 0.17.0 by @dependabot in yorkie-team#649
- Bump google.golang.org/grpc from 1.54.0 to 1.56.3 by @dependabot in yorkie-team#654
- Fix ArgoCD version to v2.7.10 by @krapie in yorkie-team#653
- Rename StructureAsString to toTestString by @hackerwins in yorkie-team#656
- Revise Prometheus PVC Spec Syntax Error by @krapie in yorkie-team#650
- Remove skip storing MinSyncedTicket when the ticket is initial by @hackerwins in yorkie-team#655
- Introduce Broadcast API by @sejongk in yorkie-team#631
- Add context to CLI for simplifying CLI commands by @Wu22e and @hackerwins in yorkie-team#647
- Add Tree.Edit benchmark by @JOOHOJANG in yorkie-team#637
- Bump checkout from v3 to v4 by @Yaminyam in yorkie-team#641
- Remove panic from crdt.Primitive @fourjae and @hackerwins in yorkie-team#636
- Remove unused trie by @hackerwins in yorkie-team#646
- Support concurrent formatting of Text by @MoonGyu1 in yorkie-team#639
- Fix typo in retention design document by @LakHyeonKim in yorkie-team#633
- Update Design Document for Missing Document Links and Ordering by @krapie in yorkie-team#630
- Recover Select to prevent unsupported operation by @hackerwins in yorkie-team#629
- Set cobra default output to stdout by @blurfx in yorkie-team#599
- Fetch latest snapshot metadata to determine snapshot creation need by @hyemmie in yorkie-team#597
- Update contributing docs by @MoonGyu1 in yorkie-team#601
- Add Pagination to Listing Projects for Housekeeping by @tedkimdev in yorkie-team#587
- Update workflow with latest versions of the actions which runs on Node16 by @jongwooo in yorkie-team#620
- Add integration tree test for sync with js-sdk by @MoonGyu1 in yorkie-team#611
- Add testcases for sync with js-sdk by @MoonGyu1 in yorkie-team#621
- Add tree document by @MoonGyu1 in yorkie-team#608
- Cache ProjectInfo by @blurfx in yorkie-team#586
- Handle concurrent editing of Tree.Edit by @hackerwins, @MoonGyu1, @sejongk in yorkie-team#607
- Support multi-level and partial element selection by @sejongk, @hackerwins in yorkie-team#624
- Remove Select operation from Text by @joonhyukchoi in yorkie-team#589
- Change 'Documents' from plural to singular in DocEvent by @chacha912 in yorkie-team#613
- Cleanup proto by @chacha912 in yorkie-team#614
- Replace matrix strategy with environment variable by @jongwooo in yorkie-team#619
- Change TreeNode to have IDs instead of insPrev, insNext by @JOOHOJANG in yorkie-team#622
- Fix typos and invalid link in the yorkie design document by @g2hhh2ee in yorkie-team#591
- Clean up code by @hackerwins in yorkie-team#595
- Clean up methods related to presence by @chacha912 in yorkie-team#594
- Remove panic from crdt.RGATreeList by @sejongk in yorkie-team#596
- Fix treePos calculating logic for text node by @JOOHOJANG in yorkie-team#615
- Move Presence from Client to Document by @chacha912, @hackerwins in yorkie-team#582
- Add include-snapshot flag to ListDocuments API by @YoonKiJin, @hackerwins in yorkie-team#575
- Revise log messages by @hackerwins in yorkie-team#574
- Bump google.golang.org/grpc from 1.50.0 to 1.53.0 by @dependabot in yorkie-team#576
- Allow users to pass multi nodes when calling Tree.edit by @JOOHOJANG in yorkie-team#579
- Remove unnecessary codes from gc by @JOOHOJANG in yorkie-team#581
- Add logout command to CLI by @blurfx in yorkie-team#571
- Add RemoveIfNotAttached flag to Detach by @emplam27 in yorkie-team#560
- Make attributes display properly in dashboard by @YoonKiJin in yorkie-team#564
- Remove panic from crdt.Tree and index.Tree by @JOOHOJANG in yorkie-team#570
- Add force flag to RemoveDocument command by @emplam27 in yorkie-team#558
- Apply garbage collection for tree by @JOOHOJANG in yorkie-team#566
- Resolve CI failure with longer MaxConnectionAge by @krapie in yorkie-team#556
- Update ClientInfo with ID and extract
testcases
package by @emplam27 in yorkie-team#557 - Filter out removed documents from ListDocuments API by @hackerwins in yorkie-team#563
- Add a workaround to prevent retrieving removed documents from MemDB by @hackerwins in yorkie-team#565
- Add TLS Option & Insecure Flag in Admin CLI by @krapie in yorkie-team#548
- Implement Tree.Style for setting attributes to nodes by @krapie, @hackerwins in yorkie-team#549
- Abstract the workflow to base-docker-publish.yml by @jongwooo in yorkie-team#552
- Change k8s version of yorkie-cluster chart to 1.23 by @emplam27 in yorkie-team#550
- Support UTF16 Code Units in yorkie.Tree by @krapie in yorkie-team#545
- Implement yorkie.Tree for text editors using tree model by @hackerwins in yorkie-team#535
- Add remove document command to CLI by @emplam27 in yorkie-team#540
- Remove panic method in crdt array by @emplam27 in yorkie-team#524
- Revise Helm Charts for Production Installations by @krapie in yorkie-team#537
- Resolve concurrent map issue by @chacha912 in yorkie-team#538
- Add Sharded Cluster Mode Design Document by @krapie in yorkie-team#523
- Remove panic and wrapping informational error from server by @emplam27 in yorkie-team#519
- Remove panic method in crdt text by @emplam27 in yorkie-team#522
- Integrate SDK RPC Server and Admin RPC Server to Single RPC Server by @krapie in yorkie-team#532
- Update Helm Chart Releaser Action by @krapie in yorkie-team#516
- Revise Helm charts & README.md by @krapie in yorkie-team#525
- Resolve Helm Chart Installation Fail on Custom Release Name by @krapie in yorkie-team#531
- Add Yorkie Helm Charts by @krapie in yorkie-team#507
- Add gRPC MaxConnectionAge & MaxConnectionAgeGrace Options by @krapie in yorkie-team#512
- Extend PushPull to support sync mode by adding push-only flag by @humdrum in yorkie-team#500
- Remove etcd-based cluster mode and replace it with sharding by @hackerwins in yorkie-team#504
- Lock watchDocuments depending on the client and doc by @chacha912 in yorkie-team#506
- Fixed a guide about path of docker-compose.xml file by @maruldy in yorkie-team#511
- Add ClientDeactivateThreshold field in admin CLI project list by @krapie in yorkie-team#477
- Add RemoveDocument API by @hackerwins in yorkie-team#484
- Add user agent metrics by @emplam27 in yorkie-team#492
- Add shard key in context by @hackerwins in yorkie-team#499
- Add pagination flags to document ls command by @emplam27 in yorkie-team#489
- Allow uppercase letters(A-Z) for document keys by @shiningsoo in yorkie-team#483
- Bump golang.org/x/net from 0.0.0-20221004154528-8021a29435af to 0.7.0 by @dependabot in yorkie-team#486
- Change the structure of WatchDocument API by @chacha912 in yorkie-team#491
- Add ClientDeactivateThreshold in Project by @krapie in yorkie-team#454
- Add validation module and document key validation by @easylogic in yorkie-team#467
- Filter out unsubscribed documents key in DocEvent by @chacha912 in yorkie-team#463
- Remove priority queue from RHTPQMap and entire project by @blurfx in yorkie-team#462
- Remove duplicated backslash in string escaping by @cozitive in yorkie-team#458
- Fix invalid index of SplayTree with single node by @hackerwins in yorkie-team#470
- Merge Text and RichText by @hackerwins in yorkie-team#438
- Fix the value type of Counter and remove double type from Counter by @cozitive in yorkie-team#441
- Fix wrong string escape in Text's attrs by @cozitive in yorkie-team#443
- Increase CRDT Counter in local change by @cozitive in yorkie-team#449
- Bump up Go to 1.19.2 by @hackerwins in yorkie-team#425
- Bump up libraries to the latest version by @hackerwins in yorkie-team#426
- Remove use of bou.ke/monkey library by @chromato99 in yorkie-team#427
- Replace deprecated ioutil library by @chromato99 in yorkie-team#428
- Remove duplicate logging when the function returns error by @hackerwins in yorkie-team#429
- Fix typo by @ppeeou in yorkie-team#421
- Fix invalid JSON from marshaling dates and use UNIX ms for Date by @hackerwins in yorkie-team#432
- Add additional unwrap code in ToStatusError gRPC error handler by @Krapi0314 in yorkie-team#434
- Add signup validation: #407
- Remove unused nodeMapByCreatedAt in RHT: #408
- Remove size cache from RGATreeList and use SplayTree instead: #415
- Adjust indexes so that each user has separate project names: #418
- Bind project and user with owner field: #398
- Validate fields when creating or updating a project: #399
- Add
--backend-snapshot-with-purging-changes
flag: #370
- Fix history command authentication error: #397
- Add
--auth-webhook-url
,--name
flag to updateProject command: #376
- Rename package names to match JS SDK: #395
- Introduce
buf
to enforce lint rules designed to guarantee consistency: #382 - Extract admin settings with flags and configurations: #384
- Change uint64 to int64 among data inserted into the DB: #381
- Add
[jstype = JS_STRING]
field option in admin.proto: #380
- Add signup and login commands and APIs: #357
- Fix the problem local changes were applied twice: #375
- Add document list command to CLI: #366
- Add SearchDocuments admin API: #363
- Fix incorrect index for nodes newly created then concurrently removed: #364
- Apply gRPC error details to update project api: #354
- Implement pagination flags to history command: #360
- Add MaxCallRecvMsgSize option to client: #353
- Improve performance of deletion in Text: #356
- Fix a bug when deleting blocks concurrently: #b645cf1
- Add history command to CLI: #349
- Introduce validator for project name: #345
- Revert text delection improvements: #350
- Add UpdateProject admin API: #338
- Improve performance of deletion in Text: #341
- Expose the missing exit code: #e87d9d3
- Skip storing the initial ticket to prevent GC interruption: #339
- Cache removed elements when creating a document from a snapshot: #340
- Detach the attached documents when deactivating the client: #342
- Update Go version to 1.18: #326
- Add trylock to memory locker: #234
- Print projects in table format: #324
- Fetch documents by project: #330
- Add time attributes to document API: #325
- Fix invalid JSON returns from document.Marshal: #328, #332
- Add the missing admin-port flag for CLI
- Rename projectID written in invalid conventions to project_id
- Add Project(Multi-tenancy): #313, #319
- Add Admin API(ListDocuments, GetDocument, ListProjects): #309, #312, #315, #320
- Cache ActorID.String to reduce memory usage: #308
- Rename Agent to Server: #311
- Rename Client Metadata to Presence: #323
- Fix LRU cache expiration when updating same key: #314
- Remove collection from document: #318
- Introduce named logging to separate logs by request or routine: #296
- Add missing serverSeq of change.ID in Protobuf: #f5a0c49
- Cache the key of RGATreeSplitNodeID to prevent instantiation: #306
- Cache the key of TimeTicket to prevent instantiation: #307
- Fix for use on Windows: #295
- Fix snapshot interval to make them trigger properly in memdb: #297
- Run tests using monkey patch only on amd64: #299
- Fix a warning that directory does not exist when running make proto: #c441b7b
- Add log-level flag: #290
- Fix a bug that reads config file incorrectly: #4cf184d
- Calculate minSyncedTicket based on time.Ticket: #289
- Allow users to set up logger of the client: #285
- Housekeeping to deactivate clients that have not been updated: #286
- Run GC when saving snapshots: #287
- Clean up client options: #284
2nd year release
2nd year release
- Monitoring #155
- Supporting TLS and Auth webhook #6
- Providing Cluster Mode #11
- Improved Peer Awareness #153
- Providing MemoryDB for Agent without MongoDB #276
- Fix a bug to pull changes from other documents in MemDB: #9c2af2e
- Add MemDB to run Yorkie without MongoDB: #276
- Add rpc-max-requests-bytes flag to set client request limit: #e544cdb
- Avoid creating snapshots of a document at the same time in ETCD: #274
- Extract auth-webhook-cache-size as config and flag: #3256b95
- Fix a bug where text nodes with tombstones were not counted: #277
- Add enable-pprof flag to open pprof via profiling server: #265
- Build multiple architecture docker images: #10d8c8b
- Add operations metrics in PushPull API: #d23fc14
- Replace XXXGauges with XXXCounters: #266
- Reduce memory usage in PushPull API: #268
- Fix goroutine leaks on subscriptions: #265
- Add missing go process collector on metrics: #35cefdb
- Fix missing gRPC interceptors for metrics: #901e4fa
- Add ETCD username and password flags: #259
- Change the flag missed when renaming to AuthWebHookXXX: #feb831d
- Fix a bug that gRPC metrics were not displayed: #02c1995
- Fix a bug that Go process metrics were not displayed: #262
- Revert "Replace hex.EncodeTostring with ActorID.key in Text and RichText (#255)"
- Improve Client's metadata to be updatable: #153
- Build binaries for environments when releasing a new version: #175
- Add config validation: #206
- Clean up flags in AuthXXX and XXXSec patterns: #168
- Update MaxConcurrentStreams to max: #227
- Clear performance bottlenecks: #251
- Change config format to YAML: #223
- Fix reduce array size when deleting the same position: #235
- Fix invalid version package path: #241
- Add registry missing in PR 185 to Metrics: #e65d5bb
- Add Cluster Mode: #183
- Add Authorization check to Watch API: #209
- Add authorization-webhook-methods flag: #193
- Add retry logic to Authorization webhook: #194
- Add authorization webhook cache: #192
- Change Watch events to be similar to JS SDK: #137
- Close Watch streams on agent shutdown: #208
- Fix a bug where deleted values from objects are revivded after GC: #202
- Add basic behavior of authorization webhook: #188
- Fix the concurrent editing issue of Move Operation: #196
- Delete RequestHeader in Protobuf: #188
- Add gRPC health checking: #176
- Add ca-certificates to access remote DBs such as MongoDB Atlas: #6d3e176
- Expose only basic command in Dockerfile: #317320b
- Fix incorrect sequences when detaching documents: #173
- Add more metrics related to PushPull API: #166
- Add command-line flags for agent command: #167
- Support for null values: #160
- Update Go version to 1.16: #161
- Calculate the size of Text in UTF-16 code units: #165
- Fix invalid states of SplayTree: #162
- Remove errors that occur when insPrev does not exist: #164
- Add customizable metadata for peer awareness: #138
- Use Xid instead of UUID for SubscriptionID: #142
- Replace the type of client_id to a byte array to reduce payload: #145
- Fix actorID loss while converting Change to ChangeInfo: #144
- Add version tag when pushing image: #102
- Add garbage collection for TextElement: #104
- Use multi-stage build for docker image: #107
- Wrap additional information to sentinel errors: #129
- Use status for one-dimensional value: #131
- Remove panics in the converter: #132, #135
- Fix check already attached document: #111
- Delete removed elements from the clone while running GC: #103
- Fix to use internal document when pulling snapshot from agent: #120
First public release
- Add basic structure of Yorkie such as
Document
,Client
, and Agent(yorkie
) - Add Custom CRDT data type
Text
for code editor: #2 - Add Snapshot API to reduce payload: #9
- Add Garbage Collection to clean CRDT meta: #3
- Add Custom CRDT data type
RichText
for WYSIWYG editor: #7 - Add Peer Awareness API: #48
- Add Prometheus metrics: #76
- Add Custom CRDT data type
Counter
: #82