yrby 0.2.1-arm64-darwin → 0.2.3-arm64-darwin
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 +4 -4
- data/CHANGELOG.md +41 -9
- data/README.md +13 -11
- data/lib/y/3.4/yrby.bundle +0 -0
- data/lib/y/4.0/yrby.bundle +0 -0
- data/lib/y/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f19b74d3076e3f9dd0007a871776daf2640633a53250dc982d6bec858c45e87c
|
|
4
|
+
data.tar.gz: 5a75d153d831c71c047cb5ff3c4bcdd4f3a83a3c3634696b18ae0c98f6cde8ff
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a42139ba7eede804dea4025819f616f3ccbff9d7d97e88b49228d01f1e526816346ff9e0972b3cb236ae36438943aaf602bef4153c5f5c653e5461e2caf4302f
|
|
7
|
+
data.tar.gz: 55b8320da57ac63f4debf5749b86d8718a3a6305fac0b739fe32c910cc5a011e3a2dbdbb133cdeb315fd1f1d3415af5bac991a5236dfa8f4c8b204570f7ebab0
|
data/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,44 @@ to follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.2.3] - 2026-07-01
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- `Doc#update_advances?` is now exact for **delete-bearing** updates, so an
|
|
14
|
+
already-applied pure-delete retry no longer reports as advancing. Previously any
|
|
15
|
+
update carrying a delete set returned `true` (record it) because deletes don't
|
|
16
|
+
move the state vector, so the cheap state-vector probe couldn't prove a
|
|
17
|
+
duplicate. A lost-ack retry of a deletion the server had already integrated was
|
|
18
|
+
therefore re-recorded and re-broadcast every time. For delete-bearing updates we
|
|
19
|
+
now compare the full encoded document state (which includes the delete set)
|
|
20
|
+
before vs. after a trial apply on an isolated probe: a genuinely new deletion
|
|
21
|
+
changes it (`true`); an already-applied retry re-encodes identically (`false`).
|
|
22
|
+
Insert/format-only updates keep the cheaper state-vector path, so only
|
|
23
|
+
delete-bearing frames — a minority — pay for the exact comparison. The exactly-
|
|
24
|
+
once guarantee is unchanged in the safe direction: a real deletion is never
|
|
25
|
+
dropped.
|
|
26
|
+
|
|
27
|
+
This lets `yrby-actioncable` (and any caller gating `on_change` on
|
|
28
|
+
`update_advances?`) settle a duplicate pure-delete frame as `:applied` — acked,
|
|
29
|
+
but not stored or relayed — so apps no longer need an app-level
|
|
30
|
+
encode-and-compare guard around their durable writes.
|
|
31
|
+
|
|
32
|
+
## [0.2.2] - 2026-06-30
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
|
|
36
|
+
- `Doc#read_xml` now recovers text from **nested** Lexical/Lexxy blocks. Lexical
|
|
37
|
+
embeds child blocks (list items, table cells, nested lists) as `Y.XmlText`
|
|
38
|
+
embeds that `get_string` silently drops, so lists and tables previously came
|
|
39
|
+
back empty. `read_xml` now walks the embeds: text runs build a line, inline
|
|
40
|
+
children (links) join it, and nested block children flush and recurse — so a
|
|
41
|
+
document with headings, formatted text, links, bullet/numbered/check/nested
|
|
42
|
+
lists, blockquotes, code blocks and tables extracts every piece of text.
|
|
43
|
+
Lexical decorator elements (horizontal rule, image) are skipped instead of
|
|
44
|
+
emitting their `<UNDEFINED …>` serialization. ProseMirror handling is
|
|
45
|
+
unchanged.
|
|
46
|
+
|
|
9
47
|
## [0.2.1] - 2026-06-29
|
|
10
48
|
|
|
11
49
|
### Changed
|
|
@@ -15,15 +53,9 @@ to follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
15
53
|
|
|
16
54
|
## [0.2.0] - 2026-06-28
|
|
17
55
|
|
|
18
|
-
First release
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
### Changed
|
|
23
|
-
- **Renamed `yrb-lite` → `yrby`.** Module `YrbLite` → top-level `Y`
|
|
24
|
-
(`Y::Doc`, `Y::Error`, `Y::VERSION`). Require path `require "yrb_lite"` →
|
|
25
|
-
`require "y"`. (The native extension crate shipped as `y_ruby` in 0.2.0; see
|
|
26
|
-
0.2.1 for its rename to `yrby`.)
|
|
56
|
+
First release. The public Ruby interface is the top-level module **`Y`**
|
|
57
|
+
(`Y::Doc`, `Y::Error`, `Y::VERSION`), loaded with `require "y"` — mirroring the
|
|
58
|
+
`y-rb` gem's `Y::Doc` interface.
|
|
27
59
|
|
|
28
60
|
### Added
|
|
29
61
|
- Native `Doc#read_text` and `Doc#read_map` readers — reconstruct plain text and
|
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
|
-
##
|
|
48
|
+
## Scope
|
|
47
49
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
|
-
##
|
|
57
|
+
## Durability and delivery
|
|
56
58
|
|
|
57
|
-
The surface
|
|
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
|
|
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)
|
data/lib/y/3.4/yrby.bundle
CHANGED
|
Binary file
|
data/lib/y/4.0/yrby.bundle
CHANGED
|
Binary file
|
data/lib/y/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: yrby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.3
|
|
5
5
|
platform: arm64-darwin
|
|
6
6
|
authors:
|
|
7
7
|
- JP Camara
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-07-01 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: minitest
|