Merge #84 (update): Text editing, snapping and text threading (#23)

Review fixes for text editing, paste and threading (fix84-text,
fix84-thread), the Italian/Japanese/Portuguese/Ukrainian Swatches hint
and #83's update merged into the PR branch.

Conflict: ROADMAP.md: header combines #84's threading change with next's 2026-10-11 changes; progress lines and change-log rows both (#84's 2026-10-12 first); stage line #84's (alpha ~5–7 h away)
Conflict: docs/gaps.md: #84's header text plus next's kerning/fonts/print changes
Conflict: docs/roadmap.md: next's M1 row (#186 done), #84's M2 row
Conflict: crates/engine/src/cmd/style.rs: next's side; add_to_swatches calls next's Document::rename_swatch_refs, #84's rename_in_story/rename_in dropped (next's covers text, tables, cells, notes and items); #84's test kept
Conflict: crates/idml/src/tests.rs: next's side (#84 carries #83's tests.rs, already merged in 9196a164)
Conflict: crates/tools/src/select.rs: overlays keeps next's content-move ghosts and live corners, plus #84's snapped loaded-cursor drag frame; a Place click without a drag shows nothing
Conflict: crates/ui-egui/src/i18n/it.rs: next's side (the Swatches hint entry is already further down)
This commit is contained in:
aiongg
2026-10-12 04:20:34 +00:00
20 changed files with 520 additions and 115 deletions
+24 -16
View File
@@ -1,6 +1,6 @@
# Where DesignCraft falls short of InDesign
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-11 · **Change:** minor (Optical kerning from outlines (#181); gap 6: macOS lists fonts that font services and managers activate; shared print spooler; Windows CI passes) · **Target:** Adobe InDesign 2026 (21.6)
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-12 · **Change:** minor (gap 0 shrunk: text threads by hand; threading gaps added; Optical kerning from outlines (#181); gap 6: macOS lists fonts that font services and managers activate; shared print spooler) · **Target:** Adobe InDesign 2026 (21.6)
Every known shortfall against InDesign 2026, one entry each, ranked by how much it stops an
InDesign professional from doing real work. This is the work list: agents pick from the top.
@@ -14,20 +14,14 @@ Kind: **F** feature · **U** UI/UX · **T** typography · **FF** file format ·
## Alpha blocker (the core-workflow gate in [roadmap.md](roadmap.md#alpha-gate))
### 0. Text can't be threaded by hand (F, U) · **ALPHA BLOCKER**
- **Missing:** threading a story from one frame to another. The canvas draws in and out ports
(`crates/ui-egui/src/canvas.rs`), but clicking the out port does nothing: no loaded text
cursor, no click-a-frame or draw-a-frame to continue the story, no unthread by double-clicking
a port, and no `frame.thread` / `frame.unthread` command for the control channel or MCP
(`Document::thread` exists in `crates/doc/src/edit.rs` but only autoflow, IDML import and the
sample call it). Long text flows only through autoflow on Place and Primary Text Frame, which
users report adding pages they can't delete (#165).
- **Evidence:** #352, #194, #165, #140 (Windows and unspecified platforms; the code shows it's
missing everywhere).
- **Impact:** a story can't run from page 2 to page 7, or from one column frame to the next
that the designer drew. That is InDesign's core text workflow.
- **Estimate:** 15–25 h (commands with undo and tests 4–6, out-port loaded cursor and
click/draw/unthread 6–12, Primary Text Frame page add/delete fixes 5–7).
### 0. Primary Text Frame autoflow adds pages users can't delete (F) · **ALPHA BLOCKER**
- **Missing:** fixes to Smart Text Reflow on the Primary Text Frame, which users report adding
pages they can't delete (#165). Threading by hand works (ports, loaded text cursor, `text.thread` / `text.unthread` /
`text.removeFromThread`).
- **Evidence:** #165.
- **Impact:** a long story in a Primary Text Frame document can leave pages the designer can't
remove.
- **Estimate:** 5–7 h.
- **Doc:** [ui-parity.md](ui-parity.md)
## Blocking (beta can't be declared while these are open)
@@ -35,7 +29,7 @@ Kind: **F** feature · **U** UI/UX · **T** typography · **FF** file format ·
### 1. Basic editing fails for many users (U, S)
- **Missing:** object copy/paste on Windows and Linux (#351, #348, #312, #185, #164, #201, text RTF
paste #212); Paste in Place onto the selected page (#348); right-click context menus that don't
open (#238, #187, #160, #312); threading (gap 0); double-click word selection in fields
open (#238, #187, #160, #312); double-click word selection in fields
(#189); character formatting set at a caret is discarded (#289).
- **Evidence:** 16 issues from 2026-10-05 to 2026-10-10, mostly against the 0.4/0.5 release builds.
- **Impact:** a layout artist can't finish the simplest job. This dominates the
@@ -196,6 +190,19 @@ Kind: **F** feature · **U** UI/UX · **T** typography · **FF** file format ·
parallel story composition.
- **Estimate:** 40–80 h.
### 26. Autoflow fills the following pages before it adds pages (F)
- **Missing:** Shift-click autoflow (and autoflow on Place) always adds new pages after the
story's last frame, one margin-sized frame each. InDesign first threads a frame per column on
the existing pages that follow, then adds pages at the end of the document.
- **Impact:** autoflowing into a document that already has pages inserts new pages in the
middle of it instead of using the empty pages.
- **Estimate:** 4–8 h.
### 27. Loaded text cursor can't thread into a frame inside a group (F, U)
- **Missing:** a click with the loaded text cursor on a text frame inside a group hits the group,
so the cursor shows it can't thread there.
- **Estimate:** 2–4 h.
## Lower
### 21. Localization breadth (L)
@@ -231,5 +238,6 @@ Cue. These are excluded from every percentage.
| Date | Change | Summary |
|---|---|---|
| 2026-10-12 | minor | Gap 0 shrunk to the Primary Text Frame page fixes (#165): text threads by hand; gaps added for autoflow onto existing pages and threading into grouped frames |
| 2026-10-10 | minor | Gap 0 added and marked alpha blocker: manual text threading is missing (stage re-normalized to pre-alpha) |
| 2026-10-10 | major | Created: 25 ranked gaps from the full re-measure against InDesign 2026 21.6 and issues #1–#352 |