Files
wordcraft/docs/gaps.md
T
dba6e66d53 Choose which side of an object text wraps on (#364)
* Tight and Through wrapping follow the object's outline (#354)

Text now wraps around a Tight or Through object's shape instead of its
bounding box. The outline is the object's wrap polygon (wp:wrapPolygon,
in the 21600-unit space of its frame) when it has one; otherwise it is
derived: a shape's geometry (ellipse, triangle, star, heart... flattened),
the convex hull of a picture's opaque pixels (alpha threshold on a coarse
grid, at most 64 points), or the rectangle. The outline turns and flips
with the object, keeps the left/right and top/bottom distances from text,
and is built once per placed object; each line asks it which stretches of
its band it covers. Through also lets text into gaps inside the outline
that are wide enough.

DOCX reads and writes wp:wrapPolygon (with edited) for wrapTight and
wrapThrough; a shape without one gets its outline written, other objects
their rectangle, since the schema requires a polygon. Square, top and
bottom, behind and in front of text are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Choose which side of an object text wraps on (#354)

Square, Tight and Through objects now have a wrap side, like Word's
"Wrap text" choice: both sides (the default), left only, right only, or
the largest side. Left keeps the band to the object's right empty on
every line beside it, Right the band to its left, and Largest picks the
wider side line by line. It works with contour wrapping and with turned
objects, and right-to-left paragraphs mirror it.

The setting is Float::wrap_text, read from and written to wrapText on
wp:wrapSquare, wp:wrapTight and wp:wrapThrough (previously always
written as bothSides). The new arrange.wrapText command
{"side": "bothSides|left|right|largest"} sets it on the selected object
as one undo step. The ribbon's Wrap Text button is now a menu with the
wrap styles and a Wrap Text Sides submenu, translated in every
interface language.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Brandon Thomas <echelon@gmail.com>
2026-10-11 12:39:42 -04:00

13 KiB
Raw Blame History

Where WordCraft falls short of Word

Last reviewed: 2026-10-10 · Last updated: 2026-10-11 · Change: trivial (#24 narrowed: Customize Keyboard and Customize Ribbon landed; previously trivial: formatting revisions landed, #41; previously trivial: Draw Table and Eraser landed, #303; previously minor: beta distance restated: ~15 points, ~150–230 h; previously: first version; every known shortfall from the 2026-10-10 re-measure, ranked) · Target: Microsoft Word (Microsoft 365) for Mac 16.113.4

The work list. One entry per shortfall, ranked by how much it stops a Word user from switching (B = blocks beta). Each says what's missing, the evidence, who it hurts, an Opus 5.5 agent wall-clock estimate, and which parity document tracks it. Agents: pick from the top, check open PRs first (gh pr list), and update this file and the parity doc when a gap closes.

Ranked

# Gap B Evidence Impact Hours Doc
1 DOCX never tested on real-world files. No corpus of files from Word, Google Docs, LibreOffice and Pages has been opened, rendered and round-tripped and compared with Word page by page B No corpus in the repo; crates/docx/tests are synthetic fixtures; "DOCX fidelity corpus: not started" since 2026-10-06 Everyone: the files people receive are the files that break 30–50 file-format-parity.md
2 Ink and drawing canvases are dropped on open and lost on save, silently; OLE objects show only their picture B No ink or drawing-canvas (wpc) handling in crates/docx; group shapes (wpg) read and written (#267). Charts and SmartArt are drawn (#292) and, with OLE objects, written back with all their parts on save (#319) Documents with diagrams drawn in Word or pen notes lose content without warning 4–8 to preserve ink and drawing canvases; 45–70 to render and edit charts and SmartArt (#13) file-format-parity.md
3 Crashes and freezes in the field: startup crash on Intel UHD Graphics (#170) (lag on GPUs without a DirectX 12 driver fixed, #316), freezes (#77, #59 Thai fonts, #31 font selector), no writes without admin on Windows 11 (#218), broken shape tool (#142), images can't be moved (#82) B 62 open issues, ~15 of them crashes, hangs or data-path failures Anyone hit loses work or trust; the never-crash standard covers panics, not hangs or GPU driver faults 20–30 target-app-parity.md (Stability)
4 Pagination differs from Word: Aptos has no metric-matched substitute; columns don't balance; custom footnote continuation separators and notices aren't read; legacy compatibility options ignored; no page-by-page comparison harness B layout-parity.md; typing-parity.md Known gaps Page counts and line breaks differ, which matters for forms, legal and academic work 30–50 + owner (font) layout-parity.md
5 Move tracking and content controls are lost (w:moveFrom/w:moveTo read as insert/delete; w:sdt unwrapped). Formatting revisions landed (#41): w:rPrChange/w:pPrChange/w:tblPrChange/w:trPrChange/w:tcPrChange/w:sectPrChange/w:numberingChange round-trip, are recorded while tracking, accepted/rejected and shown in balloons; still missing: tracked style-definition changes and table/section changes made in WordCraft B Issue #41; source grep Legal and editorial review workflows; templates with form controls 8–12 file-format-parity.md
6 No native printing on desktop: File › Print opens the PDF in the system viewer, which prints (#286); no print dialog of our own (printer, copies, ranges); web prints through the browser (#209) B ui.print → apps/wordcraft/src/print.rs; issue #15 Everyone who prints 5–8 hardware-parity.md
7 Dialog depth: 35 modal dialogs vs Word's ~100 (Caption, Index, TOC options, Citation, Compare, Protect, Language, Hyphenation, Line Numbers, Envelopes, Labels, AutoCorrect, Options panes…) B Dialog enum in crates/ui-egui/src/dialogs.rs Power users reach for dialogs the ribbon alone doesn't cover 20–30 ui-parity.md
8 Proofing is English only; no language per run, no dictionaries for other languages crates/proof has one dictionary; Word ships 120 proofing tools; issues #25, #40, #100 Every non-English writer 25–45 localization-parity.md
9 Password-protected files can't be opened or saved #55; docbin detects and refuses RC4/XOR Corporate and legal users 6–10 file-format-parity.md
10 Objects: no group (#267 open), rotated text-box text (free rotation and flips landed, #332; contour wrap and wrap side landed, #354), shape effects, WordArt, connectors, Drawing Canvas, Icons parity-checklist.md (Shape Format 2/6, Layout › Group) Newsletters, flyers, reports with diagrams 20–30 target-app-parity.md
11 Interface languages: 8 of the 12 key languages missing (hi, ar, fr, id, de, ko, vi, pt-PT); no mirrored RTL interface; ~5% of strings still English in the six translated catalogs localization-parity.md Most of the world's writers 50–80 localization-parity.md
12 Draw tab / ink: pens, pencil, highlighter, eraser, Select and Hide Ink landed (#307); missing: Lasso Select, Add Pen, Ink to Shape, Ink to Math, Ink Replay, pressure, Word's own ink (w14:contentPart/InkML) parity-checklist.md (Draw 5/11) Pen and tablet users 8–14 hardware-parity.md
13 Charts and SmartArt editing (own renderer, chart data editing, SmartArt layouts) insert.chart, insert.smartArt missing Reports and business documents 45–70 target-app-parity.md
14 .doc can't be written; metafile pictures and Word 6/95 files refused crates/docbin is read-only Users exchanging files with old Word or legacy systems 25–40 file-format-parity.md
15 References depth: sources not saved in DOCX (#169 open); no EndNote/Mendeley desktop integration Sources live only in the session (#169 open) Students and researchers 6–10 target-app-parity.md
16 Right-to-left completeness: RTL sections and tables, kashida, RTL in HTML/ODT/RTF; eight older RTL bug reports to re-verify after #207 (#215, #211, #199, #66, #63, #48, #19) layout-parity.md Arabic, Persian, Hebrew writers 10–15 layout-parity.md
17 East Asian typography: vertical text, ruby/Phonetic Guide, Enclose Characters, document grid, Asian Typography options Catalog misses format.phonetic, format.enclose, para.asianTypography Chinese, Japanese and Korean documents 20–30 layout-parity.md
18 Screen-reader access to the document canvas untested AccessKit enabled; no tests Blind and low-vision users; public-sector procurement 10–15 ui-parity.md
19 RTF and ODT depth: notes, comments, revisions, sections, RTL ~1,500 lines each in crates/formats Users exchanging with LibreOffice or older tools 18–27 file-format-parity.md
20 Performance on large real-world documents unmeasured (500+ pages, many pictures) Only the 188-page sample benchmark Thesis and book authors 10–20 layout-parity.md
21 Mail merge data sources: no Excel, Outlook/Contacts, email merge; CSV and typed lists only (#247) Office administrators 6–10 target-app-parity.md
22 Ecosystem: no VBA execution (macros preserved only), no Office add-ins, no cloud storage, no real-time co-authoring .docm keeps macros (#172) Enterprise users with macro templates; teams 40–80 + owner decisions target-app-parity.md
23 PDF Reflow (open a PDF as an editable document, Word for Windows) Users who edit PDFs they receive 30–50 file-format-parity.md
24 Default shortcuts: ~135 of Word's ~250 (#330, #339, #343; Customize Keyboard #368, Customize Ribbon and the Quick Access Toolbar #379 landed) ui-parity.md Power users 4–7 ui-parity.md
25 In-app AI assistant (Copilot-style draft, rewrite, summarize) Chat PR #178 open Users expecting Copilot 15–30 + owner (provider) target-app-parity.md
26 Minor formats: Flat OPC XML, Word 2003 XML, MHT, Works/WordPerfect Rare 20–35 file-format-parity.md
27 View windows: Side by Side, Synchronous Scrolling, Arrange All, Switch Windows parity-checklist.md (View 25/29) Comparing documents 3–5 ui-parity.md
28 Dictate tools.dictate missing Dictation users 8–15 + owner (speech model) hardware-parity.md
29 Equations: ink equations #191 notes; long display equations wrap at operators (#326) Maths-heavy documents 2–3 layout-parity.md

Beta needs #1–#7 (~150–230 h with the stability and layout work they imply): they are the blocking gaps, and closing them lifts file formats, layout, stability and UI enough to take the full number from ~60% to ~75%. Everything else is depth on the way to full parity.

By kind

The same gaps grouped the way the parity documents are, for agents working in one area.

  • Feature gaps: #2 (preserve), #5, #10, #12, #13, #15, #17, #21, #25, #27, #28, #29; Clipboard pane, Manage Styles, Group (open PRs exist for the first three — review and merge before re-implementing). Paste Special, Advanced Find, Column Selection, Style Inspector, custom table styles, and Draw Table and Eraser (#303) landed on 2026-10-10.
  • UI/UX gaps: #7, #18, #24; crop handles on the canvas (rotation handle landed, #332); table column drag on the ruler (#49, #217); context menus for objects and tables; Linux title bar theming (#78).
  • File-format gaps: #1, #2, #5, #9, #14, #19, #23, #26; embedded fonts; glossary/building blocks.
  • Hardware gaps: #6, #12, #28; scanner/Continuity Camera insert; KDE soft text (#140).
  • Localization gaps: #8, #11, #16, #17; native-speaker review of every catalog (human).
  • Stability and performance gaps: #3, #20.

Revision history

Date Change Summary
2026-10-11 trivial #24 narrowed: Customize Ribbon and Quick Access Toolbar customization landed (#379); the default shortcuts remain
2026-10-11 trivial #24 narrowed: Customize Keyboard landed (#368); Customize Ribbon and the Quick Access Toolbar remain
2026-10-11 trivial #24: Word's field keys (Alt+F9, Shift+F9, Ctrl+Shift+F9, Ctrl+F11, Ctrl+Shift+F11, F11, Shift+F11) (#339)
2026-10-10 trivial #24: 125 of ~250 keyboard shortcuts after #330
2026-10-11 trivial Collapsed duplicate rows left by parallel merges
2026-10-11 trivial All 12 bibliography styles landed (#383); removed from References depth
2026-10-11 trivial Formatting revisions landed (#41); gap #5 narrowed to move tracking and content controls, 8–12 h
2026-10-10 trivial Draw Table and Eraser landed (#303); removed from the feature-gap list
2026-10-10 trivial Tabs and Borders and Shading dialogs landed (#320); removed from the dialog-depth list
2026-10-10 trivial Columns, Symbol and Field dialogs landed (#321); removed from the dialog-depth list
2026-10-10 trivial #2 narrowed: charts and SmartArt drawn (#292), and with OLE objects kept on save (#319); group shapes landed (#267); ink and drawing canvases remain
2026-10-10 trivial #4: long footnotes continue onto the next page (#352)
2026-10-10 trivial Define New Multilevel List and Track Changes Options dialogs landed (#328); removed from the dialog-depth list
2026-10-10 trivial #10: wrap side (both sides, left, right, largest) for Square, Tight and Through objects (#354)
2026-10-10 trivial #10: Tight and Through wrapping follow the object's outline (#354)
2026-10-10 trivial #10: free rotation and flips for pictures, shapes and text boxes, with a rotation handle (#332); text boxes rotate their frame; their text stays upright
2026-10-10 trivial #29: long display equations wrap across lines (#326)
2026-10-10 trivial #3: Windows lag on GPUs without a DirectX 12 driver fixed with an OpenGL fallback (#316)
2026-10-10 trivial #6: desktop File › Print opens the system PDF viewer (#286)
2026-10-10 trivial Table Properties dialog landed (#44); removed from the dialog-depth list
2026-10-10 trivial Merged main: landed features removed from the feature-gap list
2026-10-10 minor Beta note restated: full number back to the additive ~60% (method aligned with the standard, no new evidence)
2026-10-10 major First version, from the full re-measure: 29 ranked gaps with evidence, impact and hours
2026-10-10 trivial #307: Draw tab pens, eraser and Hide Ink landed; ink gap narrowed