yrby 0.3.1-aarch64-linux → 0.4.0-aarch64-linux

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: d23cfc4529b65f1bc9b1ad727c4f21894ce336dcc4c8aac3a676ddade4557ff1
4
- data.tar.gz: 0b40878c0e0fe2cbc8295a074bf6609b45beb80375713e1390a116b301b35787
3
+ metadata.gz: c9eefadd4a715234c45c57dd998258235635393e38a9710d6c64b03bd9695d3a
4
+ data.tar.gz: 65c3398040d4cd407c5f2a18c61dd7446a73631970370286e53fe7ff5300de82
5
5
  SHA512:
6
- metadata.gz: 42fd99039628908e230393760a55a999652d3993441796f4bd45d7371674e80fe9a82ba103183b613608fc737a83e26bbaaeddd83bc6cc87936eea2113225ca3
7
- data.tar.gz: ca67b181166c76f830a997ea0140684395ae68ed452bd1c9afd94e825ba4da64364189c47f20603837df506cd3d84b9e1edc577bc0b2585616c497e678afba78
6
+ metadata.gz: e6fd7fec1a55106e4713c39fce1004b734df40aab2d3efc813210b4491758c832be0e6b0c2287ca7306cbb06c444b7301f74013e57e36660eddae3f3cef8b03c
7
+ data.tar.gz: fbeafe0fb21bd1a0bb11d978418033c1ca2829cf9098a038ed90cc89f826f276467b477c7b1be5c6947042622bab49e2469ad52c48632beb2d852bbeb09ab451
data/CHANGELOG.md CHANGED
@@ -6,6 +6,23 @@ to follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.4.0] - 2026-07-07
10
+
11
+ ### Added
12
+
13
+ - **`Y::ProseMirror` — render ProseMirror/Tiptap documents to HTML.**
14
+ `Y::ProseMirror.new(doc).to_html` turns a Tiptap document into HTML on the
15
+ server, with no Node process or headless editor. The output matches Tiptap's
16
+ own `getHTML()`; the tests check it byte-for-byte against a document captured
17
+ from a real editor. It follows `ueberdosis/tiptap-php` and reads both name
18
+ styles editors use — Tiptap's `bulletList`/`bold` and prosemirror-schema-basic's
19
+ `bullet_list`/`strong`. Covers paragraphs, headings, blockquotes,
20
+ bullet/ordered/task lists, code blocks, links, images, mentions, details,
21
+ hard breaks, horizontal rules, tables, text styles (color, font family), and
22
+ every text mark. A table renders as semantic `<table><tbody>` without the
23
+ editor's column-width styling. A root that isn't ProseMirror (a Lexical
24
+ document, say) returns `nil`.
25
+
9
26
  ## [0.3.1] - 2026-07-01
10
27
 
11
28
  Fixes from a full source review.
data/README.md CHANGED
@@ -175,6 +175,31 @@ guarantees keep serving safe:
175
175
  keeps its pending), while `encode_state_as_update` stays lossless so you can
176
176
  still preserve the raw pending bytes for recovery.
177
177
 
178
+ ### Rendering to HTML
179
+
180
+ `Y::ProseMirror` renders a ProseMirror or Tiptap document to HTML on the
181
+ server, with no Node process or headless editor:
182
+
183
+ ```ruby
184
+ prosemirror = Y::ProseMirror.new(doc)
185
+ prosemirror.to_html # the "default" fragment (Tiptap's default root)
186
+ prosemirror.to_html("content") # or another XML root
187
+ ```
188
+
189
+ The output matches Tiptap's own `getHTML()`, checked byte-for-byte in the tests
190
+ against a document captured from a real editor. So you can render, search, or
191
+ email a collaborative document without running a browser. It follows
192
+ [`tiptap-php`](https://github.com/ueberdosis/tiptap-php) and reads both name
193
+ styles editors use — Tiptap's `bulletList`/`bold` and prosemirror-schema-basic's
194
+ `bullet_list`/`strong`.
195
+
196
+ It covers paragraphs, headings, blockquotes, bullet/ordered/task lists, code
197
+ blocks, links, images, mentions, details, hard breaks, horizontal rules,
198
+ tables, text styles (color, font family), and every text mark. A table renders
199
+ as semantic `<table><tbody>`, without the column-width styling Tiptap's editor
200
+ view adds. A root that isn't ProseMirror — a Lexical document, say — returns
201
+ `nil`.
202
+
178
203
  ### Protocol codec (module functions)
179
204
 
180
205
  Classifying and unwrapping wire frames is stateless, so it's exposed as
@@ -242,21 +267,6 @@ servers:
242
267
  causal dependencies are already in the store (checked against `on_load`); a
243
268
  causally-incomplete update triggers a resync instead, so the log always
244
269
  rebuilds cleanly.
245
- - **An unhealable gap is dropped, not resynced forever.** A resync heals a gap
246
- whose missing dependency is still in flight. But a *permanently*-orphaned update
247
- (its dependency is gone for good) stays gappy through every resync, and a client
248
- retransmitting it would loop endlessly (server resyncs → client resends →
249
- repeat). After `gap_strike_limit` rejections of the same update on one
250
- connection (default 3, minimum 2), the channel settles it with
251
- `{ "ack" => id, "dropped" => true }` and drops it instead of resyncing again —
252
- breaking the loop while never dropping a *healable* gap (those heal within a
253
- resync or two, and healing frees the strike). The `dropped` flag lets the
254
- client surface the loss (`yrby-client` reports it via `onError`) instead of
255
- silently showing synced. Set `gap_strike_limit nil` to disable. Works on both
256
- transports: plain ActionCable keeps strikes on the channel instance; under
257
- AnyCable (fresh instance per RPC command) they persist through
258
- anycable-rails' `state_attr_accessor` (istate), declared automatically when
259
- anycable-rails is loaded.
260
270
  - **`on_change` is at-least-once, and the durable guarantee is that replaying the
261
271
  log reconstructs the document.** Every update triggers `on_change` before it's acked or
262
272
  broadcast (record-before-distribute). If exactly-once updates matter for you, **you
data/lib/y/3.4/yrby.so CHANGED
Binary file
data/lib/y/4.0/yrby.so CHANGED
Binary file
data/lib/y/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Y
4
- VERSION = "0.3.1"
4
+ VERSION = "0.4.0"
5
5
  end
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.3.1
4
+ version: 0.4.0
5
5
  platform: aarch64-linux
6
6
  authors:
7
7
  - JP Camara
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-07-02 00:00:00.000000000 Z
11
+ date: 2026-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest