mirror of
https://github.com/storytold/wordcraft.git
synced 2026-10-28 12:27:11 -06:00
One session holds several open documents. The active document stays in
the Session's own fields, so commands and the UI keep working on it; the
others are parked as DocState values and swapped in field by field
(std::mem::swap, no clones or relayout). Session and DocState are
destructured exhaustively, so a new field must be classified as per
document or shared before it builds.
- Session::documents, activate, add_document, close_document,
is_untouched_blank, with_document, find_open, is_open; DocInfo.
- Document ids come from a process-wide counter.
- file.new opens beside the open documents; file.open replaces an
untouched blank document, opens beside the others otherwise, and
activates a file that is already open ("alreadyOpen": true).
- file.closeDocument {id?, force?} closes a document without a window
(refuses unsaved changes unless forced); file.close is unchanged.
- view.switchWindows {id?} lists the open documents or activates one.
- Envelopes, Labels, Finish & Merge and New from Template open their
result as a new document; the main document stays open, with no undo
step for the command.
- Each document keeps its own recovery worker and copy; Read Aloud
readings name their document; with_document tags UI requests with the
document they came from.
1.6 KiB
1.6 KiB
WordCraft feature parity
Generated by cargo xtask parity (wordcraft-cli parity --markdown): the word-processor feature catalog (crates/engine/src/catalog.rs) compared with the live command registry.
499 of 513 catalog features have commands (97.3%).
| Tab | Live | Total |
|---|---|---|
| File | 23 | 23 |
| Quick Access | 5 | 5 |
| Title Bar | 1 | 1 |
| Home | 104 | 105 |
| Insert | 47 | 53 |
| Draw | 10 | 11 |
| Design | 10 | 10 |
| Layout | 22 | 22 |
| References | 25 | 25 |
| Mailings | 19 | 19 |
| Review | 29 | 31 |
| View | 26 | 29 |
| Developer | 11 | 11 |
| Table Design | 8 | 8 |
| Table Layout | 33 | 33 |
| Equation | 21 | 22 |
| Outlining | 13 | 13 |
| Picture Format | 14 | 14 |
| Shape Format | 13 | 13 |
| SmartArt Design | 7 | 7 |
| Chart Design | 5 | 5 |
| Header & Footer | 5 | 5 |
| Editing | 41 | 41 |
| Tools | 7 | 7 |
Missing
Home
- Voice › Dictate (
tools.dictate)
Insert
- Illustrations › Online Pictures (
insert.onlinePicture) - Illustrations › 3D Models (
insert.model3d) - Illustrations › Screenshot (
insert.screenshot) - Add-ins › Get Add-ins (
addins.get) - Media › Online Video (
insert.video) - Symbols › Ink Equation (
insert.inkEquation)
Draw
- Convert › Ink to Math (
draw.inkToMath)
Review
- Language › Translate (
review.translate) - Protect › Block Authors (
review.blockAuthors)
View
- Window › Arrange All (
view.arrangeAll) - Window › View Side by Side (
view.sideBySide) - Window › Synchronous Scrolling (
view.syncScroll)
Equation
- Tools › Ink Equation (
insert.inkEquation)