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.
- 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