@a3s-lab/office 0.21.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@
2
2
 
3
3
  This roadmap defines one versioned collaboration protocol for every A3S Office
4
4
  editor and for native CLI/coding-agent clients. It complements `ROADMAP.md`,
5
- which tracks editor capability parity with WPS.
5
+ which tracks editor capability parity with Traditional Office.
6
6
 
7
7
  ## Design invariants
8
8
 
package/README.md CHANGED
@@ -22,11 +22,11 @@
22
22
  <a href="https://a3s-lab.github.io/Office/">Playground</a> ·
23
23
  <a href="https://a3s-lab.github.io/Office/docs/">Documentation</a> ·
24
24
  <a href="#quick-start">Quick start</a> ·
25
- <a href="#five-format-native-surfaces">Editors</a> ·
25
+ <a href="#editor-capability-comparison">Editors</a> ·
26
26
  <a href="#real-time-collaboration">Collaboration</a> ·
27
27
  <a href="#native-automation">Automation</a> ·
28
28
  <a href="#architecture">Architecture</a> ·
29
- <a href="ROADMAP.md">WPS gap roadmap</a> ·
29
+ <a href="ROADMAP.md">Capability roadmap</a> ·
30
30
  <a href="COLLABORATION_ROADMAP.md">Collaboration roadmap</a> ·
31
31
  <a href="CONTRIBUTING.md">Contributing</a>
32
32
  </p>
@@ -96,6 +96,86 @@ The images below are committed visual-regression baselines from the real
96
96
  </tr>
97
97
  </table>
98
98
 
99
+ ## Editor capability comparison
100
+
101
+ The tables below compare capability families, not button counts or visual
102
+ similarity. **Supported** means the editable path has deterministic tests or
103
+ native round-trip evidence. **Partial** means a useful path exists with a
104
+ documented fidelity boundary. **Gap** means no product-grade editable path
105
+ exists yet. Traditional Office availability varies by application, platform,
106
+ edition, and subscription; its column describes the conventional suite
107
+ baseline rather than one specific release.
108
+
109
+ ### Document
110
+
111
+ | Capability | A3S Office today | Traditional Office baseline |
112
+ | --- | --- | --- |
113
+ | Text, paragraphs, lists, and styles | **Supported** — structured editing, formatting, clipboard, format painter, and undo/redo | Mature authoring with a broader long-tail style catalog |
114
+ | Page layout and rendering | **Partial** — sections, margins, page size, columns, headers/footers, fields, and live pagination | Desktop-grade pagination, print layout, and vector output |
115
+ | Tables, pictures, and equations | **Partial** — rich table geometry, floating pictures, crop/wrap, and structured OMML | Broader drawings, text boxes, charts, WordArt, and SmartArt |
116
+ | Comments, revisions, and collaboration | **Partial** — comments, suggestions, text/format revisions, decisions, Yjs presence, and host relay contracts | Full revision families plus integrated sharing and review services |
117
+ | References and document generation | **Partial** — bookmarks, links, captions, cross-references, citations, notes, and common fields | TOC/index authoring, mail merge, compare/combine, and broader fields |
118
+ | Ribbon and shortcuts | **Supported** — responsive Office-style ribbon and editor-scoped daily-writing shortcuts | Complete desktop shortcut and contextual-tool surface |
119
+ | Very large documents | **Supported with boundaries** — bounded 100,000-block plain-document windows and measured edit/navigation budgets | Native-engine virtualization with device-dependent limits |
120
+ | DOCX and PDF fidelity | **Partial** — source-aware DOCX preservation and live-layout raster PDF export | Broader legacy/OOXML compatibility and searchable vector PDF output |
121
+
122
+ ### Spreadsheet
123
+
124
+ | Capability | A3S Office today | Traditional Office baseline |
125
+ | --- | --- | --- |
126
+ | Cells, sheets, navigation, and history | **Supported** — multiple sheets, sparse editing, search, clipboard, four-direction fill, exact formula/value copy from above, and undo/redo | Mature grid workflows across desktop and web |
127
+ | Formatting and style rendering | **Partial** — native fonts, colors, borders, alignment, number formats, cell styles, and static date/time entry | Broader themes, locale formats, rich text, and advanced style effects |
128
+ | Ribbon and shortcuts | **Partial** — common Office-style Home/Data/View commands and grid-scoped shortcuts | Larger command catalog and platform-specific accelerators |
129
+ | Formulas and recalculation | **Partial** — dependency-aware calculation and common formula paths | Wider functions, arrays, volatile semantics, and calculation parity |
130
+ | Tables, pivots, charts, and rules | **Partial** — native tables, pivots, charts, conditional formatting, and validation | Calculated columns, slicers, pivot charts, advanced rules, and analysis |
131
+ | Large worksheets | **Supported with boundaries** — maximum-dimension sparse import/editing and viewport-bounded Canvas painting | Highly optimized native grid with hardware-dependent limits |
132
+ | Files and printing | **Partial** — XLS/XLSX/ODS/CSV import, XLSX export, and PDF output | Broader round trips, external data, print fidelity, and legacy conversion |
133
+ | External data, macros, and specialist analysis | **Gap** — active macros are never executed; bounded models are still needed for data connections and solver-like tools | Established data, macro/add-in, scenario, and optimization ecosystems |
134
+
135
+ ### Presentation
136
+
137
+ | Capability | A3S Office today | Traditional Office baseline |
138
+ | --- | --- | --- |
139
+ | Slide and object editing | **Supported** — slide lifecycle, scene editing, multi-selection, grouping, transforms, and guides | Mature slide and drawing workflows |
140
+ | Text, shapes, tables, charts, and images | **Partial** — typed editable objects with native import/export paths | Broader shapes, connectors, effects, SmartArt, and embedded chart editing |
141
+ | Masters and layouts | **Partial** — import/export inheritance with editable common paths | Full visual master, layout, and placeholder authoring |
142
+ | Transitions and timings | **Partial** — fade, push, wipe, split, cut, and click/automatic advance | Broader transition catalog and timing controls |
143
+ | Animations and media | **Gap** — no production animation timeline, trigger model, audio, video, or recording path | Object animation, motion paths, media editing, and recording |
144
+ | Slideshow and presenter workflows | **Supported** — current/beginning start, keyboard playback, notes, timer, and responsive presenter view | Rehearsal, recording, ink/laser, and richer multi-display controls |
145
+ | Review and collaboration | **Partial** — comments, shared presence, remote object locations, and host transport | Threads, assignments, mentions, and integrated cloud review |
146
+ | PPTX, print, PDF, and video | **Partial** — PPTX round trip plus slide/notes/handout PDF models; no video export | Broader print controls, vector fidelity, media preservation, and video export |
147
+
148
+ ### PDF
149
+
150
+ | Capability | A3S Office today | Traditional Office baseline |
151
+ | --- | --- | --- |
152
+ | Rendering and navigation | **Supported** — PDFium pages, thumbnails, zoom, keyboard navigation, and bounded long-file windows | Mature desktop/web viewing and navigation |
153
+ | Search and text evidence | **Supported with boundaries** — browser search and bounded native text-layer evidence | Broader tagged-PDF reading order and accessibility extraction |
154
+ | Annotations, forms, and save | **Supported** — common annotations, appearance controls, form filling, history, and save | Broader stamps, measurements, form authoring, scripts, and signatures |
155
+ | Existing text, image, and object editing | **Gap** — no safe production content-stream editing path | Direct text/object editing with font and layout recovery |
156
+ | Page organization | **Gap** — insert, delete, rotate, reorder, extract, merge, and split are not yet editable | Complete page organization workflows |
157
+ | Compression, conversion, and OCR | **Gap / host boundary** — provider contracts are required for authoritative conversion and OCR | Integrated optimization, conversion, and scanned-document recognition |
158
+ | Signatures, protection, and redaction | **Gap / host boundary** — trusted identity and destructive-content guarantees are required | E-signing, certificate validation, encryption, sanitization, and true redaction |
159
+ | AI and real-time collaboration | **Host-owned** — typed page/text evidence, Yjs review records, presence, and provider-neutral ports | Typically bundled with account, storage, and model services |
160
+
161
+ ### Markdown
162
+
163
+ Markdown is an A3S Office differentiator rather than a parity target.
164
+
165
+ | Capability | A3S Office today | Traditional Office baseline |
166
+ | --- | --- | --- |
167
+ | Source and visual editing | **Supported** — GFM source, visual mode, synchronized split preview, and source-native history | No standard first-class Markdown editor |
168
+ | Tables, tasks, links, images, and code | **Supported** — format-native Markdown structures in both editing modes | Usually represented through rich-document conversion or plain text |
169
+ | Responsive UI and shortcuts | **Supported** — desktop split view, phone single-surface modes, and editor-scoped formatting | Depends on a text editor, add-in, or conversion workflow |
170
+ | Collaboration | **Supported** — Yjs content, Awareness presence, remote selections, and host-owned transport | Usually available only after conversion into a cloud document format |
171
+ | Import, export, and automation | **Supported** — direct Markdown round trip plus typed browser, CLI, MCP, and agent mutations | No shared native Markdown automation contract |
172
+
173
+ Document and Markdown accept public TipTap Extensions. Spreadsheet,
174
+ Presentation, and PDF expose stable host ports rather than private command
175
+ contexts. Editor engines and large runtime assets load only when their surface
176
+ is requested. The complete gap inventory and exit evidence live in the
177
+ [capability roadmap](ROADMAP.md).
178
+
99
179
  ## Why A3S Office
100
180
 
101
181
  - **Product-native UI** — Complete Office-style surfaces with no required
@@ -397,274 +477,6 @@ into the PDF; searchable text and vector output remain future fidelity work.
397
477
  Copyable React, Vue, and Web Component examples live in the
398
478
  [component documentation](https://a3s-lab.github.io/Office/docs/components/).
399
479
 
400
- ## Five format-native surfaces
401
-
402
- Each surface keeps a canonical model that matches its file format and user
403
- interaction model.
404
-
405
- - **Document** — Pagination, sections, focused page-setup tabs, clean page
406
- margins with on-demand header/footer editing, outline navigation with
407
- contextual full-text results, keyboard-operated live physical-page raster
408
- thumbnails with viewport-bounded capture, and shared virtualized
409
- long-document windows for page buttons, heading rows, full-text results, and
410
- tracked-revision and anchored-comment review that preserve native scroll
411
- distance, sparse current/selection/draft pins, and Home/End reachability;
412
- a WPS-familiar command catalog, quick-access undo and redo, a priority-aware
413
- adaptive and persistently collapsible ribbon whose tabs can temporarily
414
- expose commands; WPS-oriented Insert groups and direct Page Layout presets
415
- for margins, orientation, paper size, and columns, with matching advanced
416
- Page Setup destinations; WPS-oriented References, Review, and View groups,
417
- direct tracked-change navigation and decisions, contextual object tabs, and
418
- viewport-calculated 100%, one-page, and page-width zoom; an actionable status
419
- bar with live word-count details, WPS `Ctrl+Shift+G`, keyboard-traversable
420
- view and zoom controls, and compact Web prioritization; editor-scoped WPS
421
- formatting, paragraph, style, and review shortcuts, plus a permission-free
422
- formatting clipboard and one-shot format painter shared with compatible
423
- header and footer formatting, paragraph styles and phone-sized
424
- paragraph-spacing and pagination controls
425
- with touch targets and exact invoker-focus restoration; stable compact-ribbon
426
- edge paging and viewport-bounded list galleries with touch-sized numbering
427
- actions, selection-preserving bullet and numbering commands, and explicit
428
- Escape-to-invoker focus restoration;
429
- grouped bundled, common system, monospace, imported, and host-provided font
430
- choices with live typeface previews, independent table layout algorithms,
431
- auto, percentage, or pixel preferred widths, left/center/right placement,
432
- indentation, table-level cell margins, cell-level margin overrides, and
433
- rendered column measurements for autofit tables. One Table Properties dialog
434
- presents table, row, column, and cell tabs. It combines preferred width,
435
- placement, and indent with selected-row height and pagination, current-column
436
- width, and selected-cell vertical alignment and margins. The complete draft
437
- commits in one TipTap transaction and one undo record while untouched imported
438
- measurements and partial margin inheritance retain their exact source values.
439
- Cancel and Escape discard the draft and restore the exact ribbon invoker;
440
- compact layouts keep tabs, numeric steppers, and footer actions touch-sized. A
441
- contextual Picture Properties workflow combines centimeter width and height,
442
- a per-image aspect-ratio lock, inline/square/top-and-bottom wrapping,
443
- alignment, text distance, and alternative text. It commits only changed
444
- fields in one TipTap history entry, preserves untouched imported dimensions
445
- exactly, and retains the image selection and invoker focus after apply,
446
- cancel, or Escape on desktop and phone layouts. A
447
- reusable table-border pen with all, outside, inside, and individual-edge
448
- targets, per-edge DOCX border preservation, and bounded `basedOn` table-style
449
- inheritance with whole-table, banded row or column, first/last row or column,
450
- and corner-cell formatting. Conditional fills, borders, bold, italic,
451
- underline, strikethrough, fonts, and text colors are materialized before
452
- direct table, cell, paragraph, and run formatting. Conditional paragraph
453
- alignment, direction, indents, spacing and line rules, pagination rules, and
454
- tab stops use the same precedence chain. Paragraph shading follows document
455
- defaults, based-on paragraph styles, conditional table styles, and direct
456
- formatting in that order. The complete Word `w:shd` pattern set, independent
457
- foreground/background colors, `auto`, `nil` resets, and independently tinted
458
- or shaded theme references remain structured through body and page-chrome
459
- HTML; browser previews use bounded CSS masks while DOCX export restores the
460
- native pattern and both theme channels. Preview follows Word's tint-over-shade
461
- precedence when both transforms occur on one theme channel while retaining
462
- both attributes for export. Malformed, duplicated,
463
- namespace-spoofed, relationship-bound, or unresolved theme values fail closed
464
- instead of inheriting stale shading. Theme tint and shade values resolve for
465
- table borders and cell fills across edit, preview, and RGB-stable export.
466
- Paragraph borders use the same precedence chain and retain the complete
467
- `w:pBdr` model: schema-ordered `top`, `left`, `bottom`, `right`, `between`,
468
- and facing-page `bar` edges; all 197 line and art styles; direct, automatic,
469
- and theme colors; eighth-point or point widths; spacing; shadow; and frame.
470
- Physical edges remain editable CSS, while art, between-paragraph, and
471
- facing-page behavior uses a bounded browser approximation; DOCX export
472
- restores the exact native edge set and attributes. Direct CSS edits replace
473
- only the edited edge's theme binding, strict and transitional namespaces are
474
- accepted, and malformed order, duplicates, spoofed namespaces, unsafe
475
- attributes, invalid measures, and unresolved themes fail closed.
476
- Splittable table rows that exceed a full physical page
477
- continue at paragraph boundaries with repeated heading rows on every page,
478
- viewport-safe comment drafting and focus-preserving citation drafts, tracked
479
- changes, notes,
480
- pointer- and Shift+F10-accessible host-defined selection menus, and shared
481
- edit/preview/PDF typography and page-chrome placement. Editing, read-only
482
- preview, and browser PDF export share one live pagination result. Tail edits
483
- reuse the stable physical-page prefix, including resolved first/odd/even
484
- headers, footers, page numbers, and navigation descriptors. Browser DOM
485
- measurement runs in bounded 32 ms slices and yields only between top-level
486
- blocks; document edits abort stale passes before a snapshot is committed, so
487
- long repagination work does not monopolize the browser event loop.
488
- Real DOCX fixtures provide deterministic A3S Test evidence for inherited
489
- table styling across edit and preview, a centered 62.5% table with table and
490
- cell margin overrides, all four Table Properties tabs at 390 px, exact
491
- preservation of untouched cell-margin edges, a complete 390 px Picture
492
- Properties flow, and a 120-paragraph row across three physical pages through
493
- the final table content and following paragraph.
494
- A direct-formatting A4 fixture also runs through a real WPS Writer PDF export
495
- and a page-only browser comparison. Its automatic line spacing, paragraph
496
- gaps, centered fixed table, row heights, borders, fills, and cell margins
497
- stay within the checked one-pixel layout-landmark budget while preserving
498
- the original OOXML line multiples for DOCX export.
499
- Separate 30-row common-font, 36-row CJK-font, 18-row document-grid, and
500
- 30-row multilingual-script matrices now gate text-band positions against
501
- WPS. DOCX import selects the Word `ascii`, `hAnsi`, `eastAsia`, or `cs` font
502
- slot from the run script, including complex-script bold, italic, size, and
503
- RTL overrides. The browser keeps the measured per-font automatic-line
504
- advance, while DOCX round trips retain the section `docGrid` type and line
505
- pitch and each run's `snapToGrid` override.
506
- _DOCX import/export; PDF export._
507
- - **Markdown** — GFM source, visual editing, synchronized and resizable split
508
- preview, source-native undo/redo with typing coalescing and selection restore,
509
- source-aware ribbon formatting and shortcuts, empty-source guidance, task
510
- lists, tables, links, images, code, a flat reading surface with a comfortable
511
- line length, and keyboard-accessible host-defined selection menus across both
512
- editing surfaces. At phone widths, Source and Preview each use the complete
513
- workspace instead of being compressed into two stacked panes. _Markdown
514
- import/export._
515
- - **Spreadsheet** — Multiple sheets, formulas, dependency-aware recalculation,
516
- live selection statistics, an A3S-owned worksheet bar with lifecycle and
517
- color controls, safe deletion confirmation, in-place rename validation, a
518
- grid-aligned single-row responsive workbook footer that keeps the active
519
- worksheet and its actions visible across window and phone-width changes,
520
- selection-preserving undo/redo, deterministic Arrow, Enter, Tab, Home,
521
- PageUp/PageDown, row, column, and all-cells selection shortcuts, Cmd/Ctrl
522
- formatting through root-scoped capture before vendor grid listeners, an
523
- WPS-style Home and Editing Find and Select menu whose editor-owned
524
- `Cmd/Ctrl+F` search finds displayed values, raw values, formulas, and sparse
525
- cells without opening browser Find, plus view-only `Ctrl+G` and `F5` Go To
526
- for direct, quoted cross-sheet, and named ranges without content updates,
527
- Undo records, or sparse materialization, with a viewport-safe phone Find
528
- layout, touch-sized controls, bounded validation, and exact focus restoration,
529
- desktop workbook task panes that become focus-contained phone dialogs with
530
- an inert workbook background and exact ribbon-invoker restoration,
531
- a WPS-familiar command catalog and tab order, quick-access Undo and Redo,
532
- a priority-aware adaptive and collapsible ribbon with temporary tab
533
- expansion, an executable Home clipboard group whose Paste, Cut, and Copy
534
- commands share the permission-resilient local fallback with their WPS
535
- shortcuts, a WPS-style Paste split command with quick All, Values, Formulas,
536
- and Formatting actions plus `Cmd/Ctrl+Alt+V` Paste Special for ten content
537
- modes, arithmetic operations, Skip blanks, Transpose, translated formula
538
- references, rich same-editor styles/comments/validation/merges/column widths,
539
- bounded TSV fallback, one-step Undo, and fail-closed protected or unsafe
540
- targets, an Insert and Links Hyperlink command with grid-scoped `Cmd/Ctrl+K`,
541
- accessible Web page, cell-range, and worksheet targets, explicit Edit and
542
- Remove, immutable dense/sparse updates, content/style/comment preservation,
543
- exact focus restoration, one-step Undo, and fail-closed unsafe, hidden,
544
- protected, pivot, or out-of-bounds targets, a Data and Data Tools Validation
545
- command for lists, whole numbers, decimals, dates, and text length across
546
- multiple ranges, compact rule writes and removal, input messages,
547
- invalid-input blocking, 1900/1904-aware XLSX date round trips, exact focus
548
- restoration, one-step Undo, and fail-closed protected, merged, pivot,
549
- read-only, invalid, out-of-bounds, or over-10,000-cell targets, native
550
- Spreadsheet Tables/ListObjects through Insert and grid-scoped `Cmd/Ctrl+T`,
551
- bounded current-region or explicit-range creation, canonical unique headers,
552
- a contextual Table Design ribbon with editable names, 60 OOXML
553
- Light/Medium/Dark styles, first/last-column emphasis and row/column stripes,
554
- visible-range Canvas styling, sparse-safe Convert to Range, row/column
555
- reconciliation, native XLSX table parts and supported filters, one-step Undo,
556
- browser/Yjs record convergence, and fail-closed overlap, merge, AutoFilter,
557
- protection, pivot, invalid, or over-100,000-cell targets, a WPS-style
558
- Format Painter with
559
- single-use and double-click locked
560
- sessions, cross-sheet range-pattern tiling, Escape cancellation, and native
561
- style-only writes, Home and Font Grow/Shrink Font commands with
562
- `Cmd/Ctrl+Shift+.` / `Cmd/Ctrl+]` and `Cmd/Ctrl+Shift+,` / `Cmd/Ctrl+[` aliases,
563
- per-cell mixed-size stepping, native rectangle compaction, a 10,000-cell
564
- bound, and one-step Undo, a WPS-style Underline split control with single,
565
- double, single-accounting, and double-accounting styles, exact Format Cells
566
- and XLSX round trips, active-style-aware `Cmd/Ctrl+U` toggling, and WPS
567
- `Ctrl+2`, `Ctrl+3`, and `Ctrl+4` aliases for Bold, Italic, and Underline;
568
- Automatic Color and No Fill remove direct text and background colors instead
569
- of hard-coding replacements, a
570
- keyboard-accessible WPS Text Orientation menu with horizontal, both 45-degree
571
- angles, stacked vertical, rotate-up, and rotate-down choices, exact Fortune
572
- `rt` / `tr='3'` and OOXML 0–180 / 255 round trips, a 10,000-cell guard, and
573
- one-batch Undo, plus a cell-border split control with side, all,
574
- outside, inside, horizontal, vertical, clear, independent diagonal-down and
575
- diagonal-up targets, crossed-border composition, ten native line styles,
576
- exact color selection, compact overlapping range writes, exact OOXML
577
- direction preservation through Paste Special, Yjs, XLSX export, and reopen,
578
- `Cmd/Ctrl+Shift+&` Outside Borders and `Cmd/Ctrl+Shift+_` Clear Borders,
579
- single-update undo, and grid-focus restoration, Conditional Formatting under
580
- Home and Styles, executable
581
- sorting plus WPS-style AutoFilter under Data, finite current-region discovery,
582
- `Cmd/Ctrl+Shift+L` toggling, an `Alt+ArrowDown` keyboard filter menu,
583
- a Home and Cells Rows and Columns menu for inserting above, below, left, or
584
- right, deleting selected rows or columns, and hiding or unhiding rows and
585
- columns through the shared structure command port, including grid-scoped
586
- `Cmd/Ctrl+9`, `Cmd/Ctrl+0`, `Cmd/Ctrl+Shift+9`, and `Cmd/Ctrl+Shift+0`
587
- shortcuts with 10,000-row and 1,000-column allocation guards, a Home and
588
- Alignment Merge and Center split control with
589
- Merge Cells, Merge Across, Unmerge Cells, Unmerge and Fill, and the WPS
590
- `Ctrl+M` shortcut through one controlled native workbook batch,
591
- a Home and Editing Clear menu for independently removing content, formats,
592
- comments, hyperlinks, or all cell state while preserving merge geometry,
593
- with Delete and Backspace mapped to Clear Contents,
594
- a Home and Editing Fill menu for Down, Right, Up, and Left with native
595
- relative-formula and style propagation, WPS `Cmd/Ctrl+D` and `Cmd/Ctrl+R`
596
- shortcuts, one-step history, protected-range preflight, a 50,000-target-cell
597
- guard, and sparse-row-safe execution,
598
- a WPS AutoSum split command before Fill with Sum, Average, Count, Maximum,
599
- and Minimum, the editor-scoped `Alt+=` Sum shortcut, contiguous source
600
- inference above or left of a blank target, multi-formula totals rows and
601
- columns, target-style preservation, merged/protected/read-only/pivot and
602
- overwrite preflight, a 1,000-formula bound, sparse-safe native batches, and
603
- one-step history,
604
- Home and Number presets for General, Number, CNY Currency, Accounting,
605
- Percentage, Short Date, Time, Scientific, Fraction, and Text, including the
606
- seven standard `Cmd/Ctrl+Shift` format shortcuts, exact XLSX format-code
607
- round trips, value/formula preservation, and one-step history, plus
608
- 10,000-cell-bounded Increase/Decrease Decimal commands that retain every
609
- cell's format family across mixed selections and commit one native batch,
610
- a WPS-style Format Cells dialog under Home and Number with the editor-scoped
611
- `Cmd/Ctrl+1` shortcut, functional Number, Alignment, Font, Border, Fill, and
612
- Protection tabs, untouched mixed-value preservation, custom native number
613
- codes, compact protection ranges, dense/sparse representation retention,
614
- bounded blank-cell materialization, one controlled update and one Undo
615
- record per Apply, and exact launcher or remounted-grid focus restoration,
616
- a Home and Styles gallery with 17 WPS built-in cell styles grouped as Common,
617
- Data and Model, and Titles and Totals, true native previews, two-dimensional
618
- keyboard navigation, a 10,000-cell bound, blank-cell styling, per-cell border
619
- semantics, current-style recognition without private markers, one-step
620
- history, and direct XLSX font, fill, alignment, wrap, rotation, border, and
621
- number-format XF round trips; imported theme, indexed, automatic, and tint
622
- identities for direct font, solid-fill, and border colors survive unrelated
623
- edits and Yjs transport when the rendered RGB and palette slot still agree,
624
- while changed or conflicting colors safely export as explicit RGB,
625
- a View and Window Freeze Panes menu for current-cell, top-row, first-column,
626
- and unfreeze patterns with XLSX round trips, and visible F9 workbook
627
- recalculation,
628
- Shift+F11 creation, Ctrl/Cmd+PageUp/PageDown switching in edit and read-only
629
- preview,
630
- one shared cell/worksheet context-menu surface with executable shortcut
631
- hints that becomes a touch-sized, scrollable bottom action sheet on phones,
632
- keyboard-operated cells and sheet tabs, direct type-to-edit,
633
- permission-resilient multi-cell cut/copy/paste, clear, F2 editing, and
634
- focus-safe Escape behavior, direct
635
- font-family, vertical-alignment, text-wrap, number-format, and decimal
636
- controls, charts, validation, protection, comments, and print settings.
637
- _XLSX, XLS, ODS, and CSV import; XLSX and PDF export._
638
- - **Presentation** — Typed slide scene graph, multi-selection, groups, object
639
- transforms, keyboard-accessible table-size insertion, Shift+F10-accessible
640
- native slide and object context actions, guides, comments, transitions,
641
- editor-scoped formatting and clipboard shortcuts that restore the selected
642
- object, a docked desktop chart inspector that becomes a focus-contained modal
643
- surface whenever it overlays the canvas, docked desktop comment review that
644
- becomes a readable, touch-sized, focus-contained full-editor modal on phones
645
- with dirty-draft cancellation and exact invoker restoration, a dismissible
646
- phone slide navigator, a top-aligned phone canvas with a priority-aware status
647
- bar, one-step slideshow from the beginning or current slide,
648
- keyboard-complete playback, and a responsive presenter view with one
649
- navigation strip, current/next context, speaker notes, and a session timer.
650
- _PPTX import/export; PDF export._
651
- - **PDF** — PDFium rendering, navigation, search, form filling, annotations,
652
- annotation color, opacity, compatible stroke-width controls, history,
653
- a scrollable page-thumbnail rail with current-page synchronization and
654
- focus-synchronized Arrow/Home/End navigation, a 32-thumbnail hard window,
655
- cancellation of stale PDFium bitmap tasks, bounded main-page rendering for
656
- long files, and a dismissible page drawer whose phone trigger stays in the
657
- page controls instead of covering PDF content,
658
- focus-safe page and search drafts, responsive search-result, navigation, and
659
- zoom controls, editor-scoped shortcuts, and a keyboard-operated overflow menu
660
- that retains secondary annotation tools and appearance settings on phones.
661
- _PDF open/save._
662
-
663
- Document and Markdown accept public TipTap Extensions. Spreadsheet,
664
- Presentation, and PDF expose stable host ports rather than their internal
665
- command contexts. Editor engines and large runtime assets load only when that
666
- surface is requested.
667
-
668
480
  ## Controlled by design
669
481
 
670
482
  A3S Office is headless at the product boundary, not at the UI boundary. The
@@ -1495,10 +1307,10 @@ minor release may still include breaking model changes. Required migrations
1495
1307
  will be called out in the [changelog](CHANGELOG.md).
1496
1308
 
1497
1309
  The project targets predictable browser editing and file preservation, not
1498
- pixel parity with every Microsoft Office or WPS feature. Unsupported OOXML
1499
- semantics and fidelity gaps remain explicit compatibility boundaries instead
1500
- of being silently approximated. Track product depth and release evidence in
1501
- the [editor quality roadmap](docs/latest/en/editor-quality-roadmap.md).
1310
+ pixel parity with every Traditional Office feature. Unsupported OOXML semantics
1311
+ and fidelity gaps remain explicit compatibility boundaries instead of being
1312
+ silently approximated. Track product depth and release evidence in the
1313
+ [editor quality roadmap](docs/latest/en/editor-quality-roadmap.md).
1502
1314
 
1503
1315
  ## Development
1504
1316
 
@@ -1535,6 +1347,8 @@ without hard-coded return URLs.
1535
1347
 
1536
1348
  - [Live Playground](https://a3s-lab.github.io/Office/)
1537
1349
  - [Documentation center](https://a3s-lab.github.io/Office/docs/)
1350
+ - [A3S Office 0.23.0 documentation](https://a3s-lab.github.io/Office/docs/0.23.0/)
1351
+ - [A3S Office 0.22.0 documentation](https://a3s-lab.github.io/Office/docs/0.22.0/)
1538
1352
  - [A3S Office 0.21.0 documentation](https://a3s-lab.github.io/Office/docs/0.21.0/)
1539
1353
  - [A3S Office 0.20.0 documentation](https://a3s-lab.github.io/Office/docs/0.20.0/)
1540
1354
  - [A3S Office 0.19.0 documentation](https://a3s-lab.github.io/Office/docs/0.19.0/)
package/dist/0~6090.js CHANGED
@@ -257,6 +257,8 @@ function shortcutCodeKey(code) {
257
257
  if ('Space' === code) return 'space';
258
258
  if ('Equal' === code) return 'equal';
259
259
  if ('Minus' === code) return 'minus';
260
+ if ('Semicolon' === code) return ';';
261
+ if ('Quote' === code) return "'";
260
262
  if ('Comma' === code) return ',';
261
263
  if ('Period' === code) return '.';
262
264
  return null;