Skip to content

Commit d599ceb

Browse files
juanma-devclaude
andcommitted
docs: sync README/ROADMAP with v0.5.2 and record today's fixes
The README still announced v0.3.0 and the ROADMAP header said v0.5.0 / 2026-05-27 — two releases behind the code, against this file's own 'lags by zero commits' rule. README gains a v0.4/v0.5 highlights section and current test counts; ROADMAP's two known issues are struck through with their root causes; CHANGELOG gets the Unreleased entries. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 0932220 commit d599ceb

3 files changed

Lines changed: 71 additions & 18 deletions

File tree

CHANGELOG.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,25 @@ Pre-1.0, minor version bumps may include breaking API changes.
88

99
## [Unreleased]
1010

11+
### Fixed
12+
13+
- **Drag-selecting multiple words no longer intermittently clips the trailing
14+
word(s)** (so a following Bold / heading / alignment command missed them).
15+
Both adapters mirror the browser selection into state on `selectionchange`,
16+
and the reactive effect then re-synced the DOM selection *from* state — but
17+
the effect runs a beat after the handler, so when the user had extended the
18+
selection in between (mid drag-select), the effect wrote the stale mirrored
19+
range back into the browser, snapping the selection's tail off. Mirror
20+
updates are now tagged (`selection_from_dom`) and the effect skips the
21+
write-back for them. Regression browser tests reproduce the race
22+
deterministically in both adapters.
23+
- **`basic-dioxus` demo reaches full toolbar parity with `basic-leptos`.**
24+
The Dioxus demo ran on 6 extensions (no lists at all); it now uses the same
25+
13-extension set and full toolbar: inline `code`, Link/Unlink, Image,
26+
blockquote, code-block, alignment, bullet/ordered lists + lift, upper/lower
27+
case, Select all, and the missing table buttons (− Row, − Col, column
28+
width).
29+
1130
## [0.5.2] - 2026-06-11
1231

1332
### Added

README.md

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,48 @@ JS dependency at runtime**.
1313

1414
It is part of the `taino-*` family, following `taino-dnd-*`.
1515

16-
## Status: v0.3.0 released
17-
18-
Seven crates on crates.io. v0.3 adds **full tables** (span-correct
19-
structural editing, cell selection + merge/split, and pointer
20-
interaction) on a new reusable `ViewPlugin` platform, and brings the
21-
Dioxus adapter to event-wiring parity with Leptos. Tests pass
16+
## Status: v0.5.2 released
17+
18+
Seven crates on crates.io. The v0.5 line adds a **`schema!` macro**,
19+
**inline (range-level) decorations** drawn as a scroll-aware overlay,
20+
**editor-owned keyboard input** in both adapters (synchronous,
21+
live-selection — no stale-caret bugs), and a string of editing fixes
22+
surfaced by dog-fooding (caret motion across block boundaries, ordered-list
23+
numbering, multi-block commands, selection-mirror race). Tests pass
2224
workspace-wide:
2325

2426
| | |
2527
|---|---|
26-
| Host tests | **184** (model, schema, content automaton, replace, steps, transforms, state, history, commands, keymap, input-rules, plugin registry, Markdown serializer + parser, the `Selection::Cell` variant, and **13 extensions** including the full table command set) |
27-
| Browser tests | wasm-bindgen cases in headless Chromium 148 — mount, diff/patch, selection sync, DOM-typing → Transform, IME, clipboard, drag/drop, focus, decorations, Leptos + Dioxus component/event wiring, **table rendering**, the **`ViewPlugin` infra**, and **`TableView` pointer interaction** (cell drag-select, highlight, resize) |
28+
| Host tests | **214** (model, schema, content automaton, replace, steps, transforms, state, history, commands, keymap, input-rules, plugin registry, Markdown serializer + parser, the `Selection::Cell` variant, and **13 extensions** including the full table command set) |
29+
| Browser tests | wasm-bindgen cases in headless Chromium 148 — mount, diff/patch, selection sync, DOM-typing → Transform, IME, clipboard, drag/drop, focus, node + inline decorations, Leptos + Dioxus component/event/keymap wiring, **table rendering**, the **`ViewPlugin` infra**, and **`TableView` pointer interaction** (cell drag-select, highlight, resize) |
2830

2931
See **[DESIGN_NOTES.md](DESIGN_NOTES.md)** for the architecture, the
3032
scope budget, and the resolved design decisions; **[ROADMAP.md](ROADMAP.md)**
3133
tracks phase progress and what's deferred.
3234

35+
## What's new in v0.4 / v0.5 (2026-05-26 … 2026-06-11)
36+
37+
- **`schema! { .. }` macro** — declarative sugar over `SchemaBuilder`
38+
(plain `macro_rules!`, no proc-macro crate).
39+
- **Inline (range-level) decorations**`Decoration::Inline` highlights
40+
arbitrary inline ranges (search hits, comments, remote selections) as a
41+
scroll-aware overlay that never splits the editable text nodes.
42+
- **The editor owns keyboard input** in both adapters: `keydown` reads the
43+
*live* DOM selection, runs the keymap command and applies the result
44+
synchronously, eliminating the "stale model selection" class of bugs.
45+
- **Coordinate-free table primitives**`select_caret_row()` /
46+
`select_caret_column()` make "merge this row/column" one-liners that
47+
stay correct as the table grows.
48+
- **`Code` inline mark** (`Mod-e`) with Markdown backtick round-trip
49+
(shipped in v0.3.1).
50+
- **Dioxus `ViewPlugin` parity** — interactive tables (drag-select,
51+
highlight, resize) in Dioxus too; `basic-dioxus` runs the same
52+
13-extension toolbar as `basic-leptos`.
53+
- Editing fixes: caret motion across block boundaries, ordered-list
54+
numbering after lifting a middle item, block commands applying to every
55+
selected block, empty-textblock focusability, and the
56+
selection-mirror race that clipped multi-word drag-selections.
57+
3358
## What's new in v0.3 (2026-05-22)
3459

3560
- **Full tables** — a `Table` extension (`table`/`table_row`/`table_cell`
@@ -124,7 +149,7 @@ Examples under [`examples/`](examples/):
124149

125150
```toml
126151
[dependencies]
127-
taino-edit = { version = "0.3", features = ["leptos"] } # or "dioxus"
152+
taino-edit = { version = "0.5", features = ["leptos"] } # or "dioxus"
128153
```
129154

130155
No adapter is enabled by default — pick `leptos` or `dioxus`. Add the

ROADMAP.md

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ This document is the single source of truth for **what has been done, what is in
1111

1212
| | |
1313
| ---------------------------- | -------------------------------------------------------- |
14-
| **Current release** | `v0.5.0``schema!` macro + inline (range-level) decorations + editing fixes |
15-
| **Last updated** | 2026-05-27 |
14+
| **Current release** | `v0.5.2`editor-owned keyboard input in both adapters + coordinate-free table row/column primitives + list/caret editing fixes |
15+
| **Last updated** | 2026-06-12 |
1616
| **First milestone** | `v0.1.0` — publishable MVP (done) |
1717
| **Second milestone** | `v0.2.0` — closing v0.1 gaps + platform broadening (done)|
1818
| **Third milestone** | `v0.3.0` — full tables + pointer-interaction platform (done)|
@@ -275,13 +275,22 @@ pointer-interaction platform.
275275

276276
## Known issues
277277

278-
- 🐛 Applying a mark/block type to a multi-word selection occasionally leaves
279-
the trailing word(s) unformatted — an intermittent selection-boundary
280-
mapping issue (reported during v0.5 manual testing). Next-up to investigate.
281-
- 🐛 The Dioxus adapter exposes fewer editing options than the Leptos one
282-
(lists in particular are missing from `basic-dioxus`'s toolbar, and the
283-
extension surface should be re-checked end-to-end for parity). Treat it
284-
as a Dioxus-adapter parity audit, not a single command fix.
278+
- *(none currently open)*
279+
- [x] ~~Applying a mark/block type to a multi-word selection occasionally
280+
leaves the trailing word(s) unformatted~~**fixed 2026-06-12**. Root
281+
cause: a race between the `selectionchange` mirror and the reactive
282+
effect's DOM-selection re-sync — the effect wrote the (by then stale)
283+
mirrored range back into the browser mid drag-select, clipping the
284+
selection's tail before the command ran. Mirror updates are now tagged
285+
(`selection_from_dom`) and the effect skips the write-back for them, in
286+
both adapters; deterministic regression browser tests added.
287+
- [x] ~~The Dioxus adapter exposes fewer editing options than the Leptos
288+
one~~**fixed 2026-06-12**. Parity audit done: the adapter itself was
289+
already at parity; the gap was `basic-dioxus`, which ran on 6 extensions.
290+
The demo now uses the same 13-extension set and full toolbar as
291+
`basic-leptos` (inline code, link/image, blockquote, code-block,
292+
alignment, lists + lift, case transforms, select-all, − Row / − Col /
293+
column width).
285294

286295
## Deferred (v0.4+)
287296

0 commit comments

Comments
 (0)