yrby-actioncable 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1ab50fed7379fc20924fec613bc32b7c4b34f2cac85ed446c6f562bd31ae3f5f
4
- data.tar.gz: 7d17034c1eca75b303c4c0b839f7b14c1c23745ce3629b8e68cb21e161570bef
3
+ metadata.gz: 761e38cb9b0e73b19aef2bc906d4170bc340c54fe09cae9aa6099814a7876dbb
4
+ data.tar.gz: 83d55bc7f20aca3cf82e7ee46adf6c8a163638f468afb1de35b339b5167a913e
5
5
  SHA512:
6
- metadata.gz: '06697a55539569ee6010e11d6b80c5eaceb6e9643c71f355c91a4e286aaf664a00698ef1893cc37dd5005e6d47fcfcac6a08b352029f3866da2660d918269995'
7
- data.tar.gz: 7a3cab1a4fe6d5171ac7ada2312cc6ece5dbd10e896c27132927d158ce19dae1e6ac06b768ad392b20ba8def7c0579eaa314f67d01f0c3dbf07ac74b92aaec9a
6
+ metadata.gz: 07d8e355e0eb3fa8fba54bb33a9250a7e5cc932e5a0dc0ab042b4aad96f07df010b2601f8b3f20f26733f5112639ee38b0b15fc089846e8b379862c4193ef156
7
+ data.tar.gz: 94d632ddca4cdebab57f63eb75d82bf94264bf1a2031baf5a50151d3564b10b4b6f904815cc95fd9b7726eddfb1fad7eb7d77454b916d5d54a6089afeac50527
@@ -6,6 +6,18 @@ this project aims to follow [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.2.2] - 2026-07-01
10
+
11
+ ### Changed
12
+ - Raised the `yrby` floor to `>= 0.2.3`. That release makes `Doc#update_advances?`
13
+ exact for **delete-bearing** updates. The sync channel gates durable
14
+ record-before-distribute on `update_advances?` (`return :applied unless
15
+ doc.update_advances?(update)`), so with an older core a lost-ack retry of a
16
+ deletion the server had already integrated was re-recorded and re-broadcast
17
+ each time. No code change here — pinning the floor just makes the gem's
18
+ exactly-once durable-recording guarantee self-enforcing instead of dependent on
19
+ the app updating the core gem.
20
+
9
21
  ## [0.2.1] - 2026-06-29
10
22
 
11
23
  ### Changed
@@ -15,15 +27,8 @@ this project aims to follow [Semantic Versioning](https://semver.org/spec/v2.0.0
15
27
 
16
28
  ## [0.2.0] - 2026-06-28
17
29
 
18
- First release under the **`yrby-actioncable`** name (previously developed as
19
- `yrb-lite-actioncable`).
20
-
21
- ### Changed
22
- - **Renamed `yrb-lite-actioncable` → `yrby-actioncable`.** Channel concern
23
- `YrbLite::ActionCable::Sync` → **`Y::ActionCable::Sync`**; require
24
- `require "yrb_lite/action_cable"` → `require "y/action_cable"`. (The stream
25
- prefix shipped as `y_ruby:` in 0.2.0; see 0.2.1 for its rename to `yrby:`.)
26
- Depends on `yrby >= 0.2.0`.
30
+ First release. The y-websocket sync channel concern is **`Y::ActionCable::Sync`**,
31
+ loaded with `require "y/action_cable"`. Depends on `yrby >= 0.2.0`.
27
32
 
28
33
  ### Notes
29
34
  - Full y-websocket protocol over ActionCable/AnyCable: origin-filtered relay,
data/README.md CHANGED
@@ -41,23 +41,25 @@ npm install yrby-client
41
41
  one-include ActionCable concern.
42
42
  - Authoritative record-before-distribute semantics: each document change can be
43
43
  recorded durably before it goes out to anyone.
44
- -
44
+ - Optional server-side reads: `Doc#read_text` and `Doc#read_map` reconstruct a
45
+ document's contents in Ruby - no Node process - for search, exports, validation,
46
+ or server-side rendering.
45
47
 
46
- ## Why "lite"
48
+ ## Scope
47
49
 
48
- The "lite" is the size of the surface. `yrby` binds just the part of `y-crdt` you
49
- need to *sync and persist* collaborative documents - a `Doc`, awareness, and the
50
- y-websocket protocol primitives. The Ruby side treats a document as opaque CRDT
51
- state: it applies updates, answers sync handshakes, and records deltas, but never
52
- reaches in to read or edit the contents. The browser editor owns the document's
53
- shape.
50
+ `yrby` binds just the part of `y-crdt` you need to *sync and persist* collaborative
51
+ documents - a `Doc`, awareness, and the y-websocket protocol primitives. By default
52
+ the Ruby side treats a document as opaque CRDT state: it applies updates, answers
53
+ sync handshakes, and records deltas without reaching into the contents - the browser
54
+ editor owns the document's shape. When you do need to look inside, `Doc#read_text`
55
+ and `Doc#read_map` reconstruct it server-side, in Ruby.
54
56
 
55
- ## What isn't "lite"
57
+ ## Durability and delivery
56
58
 
57
- The surface area may be "lite", but a core focus is on durability, resiliency, delivery
59
+ The surface is intentionally small, but the focus is durability, resiliency, delivery
58
60
  guarantees, correctness, and thread safety.
59
61
 
60
- Towards that goal, `yrby` adds capabilities that may even stand out in the Yjs ecosystem:
62
+ Towards that goal, `yrby` adds capabilities that stand out even in the Yjs ecosystem:
61
63
 
62
64
  - Built-in update acknowledgement: the `ActionCableProvider` in `yrby-client` will continue to
63
65
  send updates until an ack is received from the server. [`yrby-actioncable`](https://rubygems.org/gems/yrby-actioncable)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Y
4
4
  module ActionCable
5
- VERSION = "0.2.1"
5
+ VERSION = "0.2.2"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yrby-actioncable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - JP Camara
@@ -29,14 +29,14 @@ dependencies:
29
29
  requirements:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 0.2.1
32
+ version: 0.2.3
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 0.2.1
39
+ version: 0.2.3
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: actioncable
42
42
  requirement: !ruby/object:Gem::Requirement