@a3s-lab/office 0.9.2 → 0.11.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.
Files changed (31) hide show
  1. package/COLLABORATION_ROADMAP.md +29 -5
  2. package/README.md +19 -6
  3. package/dist/{0~7754.js → 0~5093.js} +1449 -3
  4. package/dist/0~document-editor.js +8 -1
  5. package/dist/0~work-docx-export.js +482 -16
  6. package/dist/0~work-docx-import.js +31 -1142
  7. package/dist/0~work-office-diagnostics.js +9 -5
  8. package/dist/4104.js +1 -1
  9. package/dist/8928.js +763 -149
  10. package/dist/internal/features/work/work-document-format-change-tracking.d.ts +9 -0
  11. package/dist/internal/features/work/work-document-format-changes.d.ts +28 -0
  12. package/dist/internal/features/work/work-document-paragraph-format-change-tracking.d.ts +7 -0
  13. package/dist/internal/features/work/work-document-paragraph-format-changes.d.ts +8 -0
  14. package/dist/internal/features/work/work-docx-format-change-export.d.ts +17 -0
  15. package/dist/internal/features/work/work-docx-import.d.ts +3 -1
  16. package/dist/internal/features/work/work-docx-paragraph-alignment-import.d.ts +1 -0
  17. package/dist/internal/features/work/work-docx-paragraph-borders-import.d.ts +1 -0
  18. package/dist/internal/features/work/work-docx-paragraph-direction-import.d.ts +1 -0
  19. package/dist/internal/features/work/work-docx-paragraph-format-change-export.d.ts +13 -0
  20. package/dist/internal/features/work/work-docx-paragraph-format-change-import.d.ts +17 -0
  21. package/dist/internal/features/work/work-docx-paragraph-indent-import.d.ts +1 -0
  22. package/dist/internal/features/work/work-docx-paragraph-pagination-import.d.ts +1 -0
  23. package/dist/internal/features/work/work-docx-paragraph-shading-import.d.ts +1 -0
  24. package/dist/internal/features/work/work-docx-paragraph-spacing-import.d.ts +1 -0
  25. package/dist/internal/features/work/work-docx-run-formatting-import.d.ts +10 -0
  26. package/dist/internal/features/work/work-docx-tab-stop-import.d.ts +1 -0
  27. package/dist/internal/features/work/work-types.d.ts +1 -1
  28. package/dist/office-kernel.wasm +0 -0
  29. package/dist/styles.css +28 -0
  30. package/docs/latest/en/browser-editor-architecture.md +18 -0
  31. package/package.json +7 -3
@@ -110,14 +110,16 @@ Redis/NATS fan-out plus a distributed writer/lock policy.
110
110
 
111
111
  Status: browser collaboration foundation, participant roster, remote
112
112
  selection/caret projection, participant navigation, durable review-only
113
- comment and suggestion modes, immutable suggestion-decision audit, and native
114
- text/options/bounded structural paragraph/comment/suggestion mutations
115
- implemented; rich native mutation parity remains pending.
113
+ comment and suggestion modes, character- and paragraph-formatting revisions,
114
+ immutable decision audit, and native text/options/bounded structural
115
+ paragraph/comment/suggestion mutations implemented; rich native mutation
116
+ parity remains pending.
116
117
 
117
118
  - TipTap is bound to `document.content` through
118
119
  `@tiptap/extension-collaboration`; StarterKit undo/redo is disabled and the
119
120
  collaboration binding owns local history.
120
- - Section/page OOXML state, comment anchors, and tracked-change marks converge
121
+ - Section/page OOXML state, comment anchors, text tracked-change marks, and
122
+ character-formatting marks or paragraph-formatting node revisions converge
121
123
  in the ProseMirror fragment. Document-level page color, tracking mode,
122
124
  comment threads/replies, and bibliography sources use conflict-local typed
123
125
  roots instead of a serialized document blob.
@@ -166,6 +168,20 @@ implemented; rich native mutation parity remains pending.
166
168
  converge, a second conflicting final decision fails closed, old Documents
167
169
  without the additive roots remain readable, and a final decision clears
168
170
  local history that could otherwise resurrect the decided mark.
171
+ - Character-formatting commands over existing text create one `formatting`
172
+ change mark with a bounded prior-direct-mark snapshot. Accept removes only
173
+ the revision wrapper and keeps the new formatting; reject restores the prior
174
+ bold, italic, underline, strike, sub/superscript, font, size, color,
175
+ highlight, and grid marks without changing text. Supported DOCX
176
+ `w:rPrChange` records import into the same model and export natively.
177
+ - Paragraph-formatting commands create one shared `paragraph-formatting`
178
+ identity across every affected paragraph or heading and retain the complete
179
+ canonical old-property snapshot on each node. Accept keeps current paragraph
180
+ properties; reject atomically restores alignment, direction, indentation,
181
+ spacing and line rules, pagination controls, contextual spacing, outline
182
+ level, tab stops, borders, shading, and collapsed state without changing
183
+ text. Supported strict or transitional DOCX `w:pPrChange` records use the
184
+ same model and export natively.
169
185
  - Rust, CLI, MCP, and A3S Code expose `document-comment-create`,
170
186
  `document-comment-reply`, `document-comment-set-resolved`,
171
187
  `document-comment-delete`, `document-suggestion-create`, and
@@ -183,13 +199,21 @@ implemented; rich native mutation parity remains pending.
183
199
  content, structure, options, non-suggestion formatting, authorship, order,
184
200
  claims, anchors, foreign deletion, or foreign suggestion changes fail before
185
201
  the durable store changes.
202
+ - Native Yrs validation admits only the bounded character- and
203
+ paragraph-formatting schemas, preserves them across restart and
204
+ duplicate/reordered delivery, exposes `formatting` and
205
+ `paragraph-formatting` in immutable decision projections, and makes
206
+ `suggest` updates retain existing formatting revisions byte-semantically.
207
+ Formatting revisions are Document change kinds, not native
208
+ insertion/deletion suggestion kinds; the current closed
209
+ `document-suggestion-*` mutations remain text-only.
186
210
 
187
211
  Remaining:
188
212
 
189
213
  - Prove concurrent full-table, list-restructure, section, comment, and revision
190
214
  workflows, plus DOCX import/export after merged edits.
191
215
  - Expand native convergence from bounded paragraph edits to complete table,
192
- list, and section operations, comments, and tracked revisions.
216
+ list, and section operations, comments, and the remaining tracked revisions.
193
217
 
194
218
  Exit criterion: two browsers and one native client converge on document
195
219
  content and review state; local undo never removes a remote change; a DOCX
package/README.md CHANGED
@@ -47,8 +47,10 @@ workflows, and a separate Rust automation plane.
47
47
  - **Collaborate across every editor** with shared Yjs/Yrs content, Awareness
48
48
  participants and remote locations, plus browser, CLI, MCP, and A3S Code peers.
49
49
  Document reviewers can submit attributed insertions, deletions, and
50
- replacements without directly changing canonical text; editors accept or
51
- reject each proposal with an immutable shared decision record.
50
+ replacements without directly changing canonical text. Editors can also
51
+ track character- and paragraph-formatting revisions, accept the new
52
+ formatting or restore the exact prior marks/properties, and retain either
53
+ result in the immutable shared decision audit.
52
54
  - **Automate deterministically** through the native CLI, standard MCP server,
53
55
  or packaged Office Skill.
54
56
 
@@ -148,7 +150,9 @@ The images below are committed visual-regression baselines from the real
148
150
  Presentation scene-element and z-order, and PDF annotation, form-value, and
149
151
  review changes, including attributable Document selection comments, replies,
150
152
  text suggestions, and atomic final decisions, retain browser/native actor
151
- attribution, and checkpoint without replacing a whole Office file.
153
+ attribution, validate browser-created character- and paragraph-formatting
154
+ revisions and their audit records, and checkpoint without replacing a whole
155
+ Office file.
152
156
 
153
157
  ## Real-time collaboration
154
158
 
@@ -171,9 +175,13 @@ deletions, and replacements while canonical text, structure, formatting,
171
175
  options, comments, and other actors' suggestions remain protected. An `edit`
172
176
  participant accepts or rejects a proposal and appends the final actor-attributed
173
177
  decision to the immutable `document.change-decisions` audit trail. The A3S Boot
174
- service validates both comment and suggestion semantics under the durable room
175
- lock before it persists or broadcasts caller-supplied Yjs bytes. `suggest` on
176
- non-Document formats remains receive-only.
178
+ service also persists `edit`-mode character- and paragraph-formatting revisions
179
+ and validates their bounded prior-format snapshots before broadcast. Character
180
+ decisions keep or restore direct marks. Paragraph decisions keep or restore
181
+ alignment, direction, indentation, spacing, pagination, outline, tab stops,
182
+ borders, shading, and collapsed state without deleting text. Authenticated
183
+ `suggest` updates must preserve both revision kinds and cannot rewrite their
184
+ identity or snapshot. `suggest` on non-Document formats remains receive-only.
177
185
  See the bilingual [real-time collaboration guide](https://a3s-lab.github.io/Office/docs/components/collaboration.html)
178
186
  for React, Vue, Web Component, reconnect, security, and native-agent setup.
179
187
  The repository also ships a runnable
@@ -196,6 +204,9 @@ bun run playground
196
204
 
197
205
  Then open the local URL printed by the development server. For a zero-install
198
206
  tour, use the [live Playground](https://a3s-lab.github.io/Office/).
207
+ Choose **体验格式修订**, open **审阅**, then **查看修订(2)** to inspect the
208
+ independent Formatting and Paragraph Formatting cards and exercise accept or
209
+ reject semantics.
199
210
 
200
211
  ### Embed a controlled React editor
201
212
 
@@ -1327,6 +1338,8 @@ without hard-coded return URLs.
1327
1338
 
1328
1339
  - [Live Playground](https://a3s-lab.github.io/Office/)
1329
1340
  - [Documentation center](https://a3s-lab.github.io/Office/docs/)
1341
+ - [A3S Office 0.11.0 documentation](https://a3s-lab.github.io/Office/docs/0.11.0/)
1342
+ - [A3S Office 0.10.0 documentation](https://a3s-lab.github.io/Office/docs/0.10.0/)
1330
1343
  - [A3S Office 0.9.2 documentation](https://a3s-lab.github.io/Office/docs/0.9.2/)
1331
1344
  - [A3S Office 0.9.1 documentation](https://a3s-lab.github.io/Office/docs/0.9.1/)
1332
1345
  - [A3S Office 0.9.0 documentation](https://a3s-lab.github.io/Office/docs/0.9.0/)