Adds wordcraft_render::icon_lib, 61 monochrome icons in ten categories
(Arrows, Communication, Office, People, Nature, Weather, Shapes, Symbols,
Technology, Transport). They are original WordCraft artwork: simple
geometric line drawings designed on a 24x24 grid as path data in code, with
no icon files and nothing copied from another icon set.
insert.icon {"id", "color"?, "size"?} renders the chosen icon with vello_cpu
to a transparent PNG at about 300 ppi and inserts it at the caret through the
ordinary picture path, so it saves to .docx and every other format. Without
an id it lists the library (narrowed by query and category) and asks the
front end for the picker. picture.iconColor repaints a one-colour picture
in a new colour and keeps its transparency.
Insert > Illustrations > Icons opens a dialog with a search box, category
chips and a grid of icons drawn live by the egui painter from the same path
data; Insert or a double click places the selection. Picture Format > Adjust
gains an Icon Color menu. New strings are translated in every catalog.
Catalog parity 393/434 -> 394/434 (90.8%).
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Brandon Thomas <echelon@gmail.com>
14 KiB
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 | 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, document grid, Asian Typography options (Phonetic Guide landed, #288; Enclose Characters landed, #297) | Catalog misses para.asianTypography |
Chinese, Japanese and Korean documents | 16–24 | 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 | Insert › Icons landed (#309); removed from the objects gap |
| 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-11 | trivial | Enclose Characters landed (#297); removed from the East Asian typography gap |
| 2026-10-11 | trivial | Phonetic Guide (ruby) landed (#288): gap 17 narrowed |
| 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 |