@a3s-lab/office 0.6.0 → 0.7.1
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.
- package/COLLABORATION_ROADMAP.md +24 -18
- package/README.md +38 -5
- package/dist/office-kernel.wasm +0 -0
- package/package.json +4 -2
package/COLLABORATION_ROADMAP.md
CHANGED
|
@@ -150,9 +150,10 @@ round trip preserves supported and untouched unsupported OOXML.
|
|
|
150
150
|
|
|
151
151
|
### Phase 3: Presentation
|
|
152
152
|
|
|
153
|
-
Status: browser collaboration foundation and native conflict-local
|
|
154
|
-
mutations implemented; rich-text CRDT,
|
|
155
|
-
round-trip concurrency
|
|
153
|
+
Status: browser collaboration foundation and native conflict-local
|
|
154
|
+
scene-element content and z-order mutations implemented; rich-text CRDT,
|
|
155
|
+
remaining structural native operations, and PPTX round-trip concurrency
|
|
156
|
+
coverage are pending.
|
|
156
157
|
|
|
157
158
|
- Stable slide/master/layout order arrays and ID-keyed record maps avoid a
|
|
158
159
|
serialized whole-deck root. Scene elements and slide comments are ID-keyed
|
|
@@ -171,21 +172,25 @@ round-trip concurrency coverage are pending.
|
|
|
171
172
|
- Tests cover bootstrap, identity validation, separate-record convergence,
|
|
172
173
|
stale snapshots, concurrent comments, local-only undo, permissions, mounted
|
|
173
174
|
projection, and framework adapters.
|
|
174
|
-
- Rust, CLI, MCP, and A3S Code can create, optimistically update, or
|
|
175
|
-
one element in a slide, master, or layout. Creation can insert
|
|
176
|
-
active element. Update compares complete
|
|
177
|
-
writes only changed top-level fields, so
|
|
178
|
-
while a stale same-field edit fails
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
175
|
+
- Rust, CLI, MCP, and A3S Code can create, optimistically update, move, or
|
|
176
|
+
tombstone one element in a slide, master, or layout. Creation can insert
|
|
177
|
+
after a stable active element. Update compares complete
|
|
178
|
+
expected/current/next records and writes only changed top-level fields, so
|
|
179
|
+
unrelated concurrent changes merge while a stale same-field edit fails
|
|
180
|
+
atomically. Move compares stable observed and requested predecessor IDs,
|
|
181
|
+
treats an already-satisfied destination as idempotent, and changes only the
|
|
182
|
+
moved element's order entry; `null` means the first order position. Delete
|
|
183
|
+
requires an exact complete-element match. Browser/Yrs fixtures, native
|
|
184
|
+
restart, duplicate and reordered delivery, real CLI/MCP subprocesses, and
|
|
185
|
+
the Playground cover update/create/move/delete interoperability.
|
|
182
186
|
|
|
183
187
|
Remaining:
|
|
184
188
|
|
|
185
189
|
- Bind editable scene text to collaborative XML fragments instead of scalar
|
|
186
190
|
text/run replacement.
|
|
187
191
|
- Add structural native operations and explicit conflict handling for slide
|
|
188
|
-
order,
|
|
192
|
+
order, grouping, and theme changes; extend z-order beyond stable scene-element
|
|
193
|
+
moves where a concrete browser workflow requires it.
|
|
189
194
|
- Keep derived thumbnails and layout measurements local and prove this in UI
|
|
190
195
|
tests.
|
|
191
196
|
- Add offline/reordered-update property tests plus merged PPTX export/reopen.
|
|
@@ -389,10 +394,11 @@ projection are pending.
|
|
|
389
394
|
an exact complete-cell match. They preserve the browser's field-addressed
|
|
390
395
|
representation, dense/sparse projection mode, and atomic fail-closed
|
|
391
396
|
semantics without replacing a worksheet or workbook.
|
|
392
|
-
- Presentation scene-element mutations create, update, or tombstone one
|
|
393
|
-
object inside a slide, master, or layout. Canonical creation claims
|
|
394
|
-
conflicting same-ID reuse, optimistic top-level field guards merge
|
|
395
|
-
concurrent edits,
|
|
397
|
+
- Presentation scene-element mutations create, update, move, or tombstone one
|
|
398
|
+
stable object inside a slide, master, or layout. Canonical creation claims
|
|
399
|
+
prevent conflicting same-ID reuse, optimistic top-level field guards merge
|
|
400
|
+
unrelated concurrent edits, stable predecessor guards move one order entry
|
|
401
|
+
without array indexes, and exact deletion guards prevent a stale destructive
|
|
396
402
|
write without replacing the deck or container.
|
|
397
403
|
- PDF form-value mutations write the browser-compatible conflict-local record
|
|
398
404
|
roots by fully-qualified field name, retain idempotent receipts and optional
|
|
@@ -422,7 +428,7 @@ projection are pending.
|
|
|
422
428
|
an authorization token.
|
|
423
429
|
- Cross-language tests apply deterministic native UTF-16 Markdown, ProseMirror
|
|
424
430
|
Document text/options/paragraph, Spreadsheet cell, Presentation
|
|
425
|
-
scene-element, and PDF annotation/form-value updates in browser Yjs,
|
|
431
|
+
scene-element content/z-order, and PDF annotation/form-value updates in browser Yjs,
|
|
426
432
|
including concurrent browser/native paragraph, cell-leaf, element-field,
|
|
427
433
|
annotation-leaf, and PDF form edits, in addition to importing browser Yjs
|
|
428
434
|
fixtures in Yrs.
|
|
@@ -432,7 +438,7 @@ projection are pending.
|
|
|
432
438
|
|
|
433
439
|
Remaining:
|
|
434
440
|
|
|
435
|
-
- Extend typed format-model mutations to Spreadsheet and Presentation
|
|
441
|
+
- Extend typed format-model mutations to Spreadsheet and remaining Presentation
|
|
436
442
|
structural/rich-text operations plus PDF signatures; deepen Document
|
|
437
443
|
mutations to additional nested structures and review operations, and add
|
|
438
444
|
durable comment/suggest operations before enabling those modes for local
|
package/README.md
CHANGED
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
<a href="https://a3s-lab.github.io/Office/docs/">Documentation</a> ·
|
|
24
24
|
<a href="#quick-start">Quick start</a> ·
|
|
25
25
|
<a href="#five-format-native-surfaces">Editors</a> ·
|
|
26
|
+
<a href="#real-time-collaboration">Collaboration</a> ·
|
|
26
27
|
<a href="#native-automation">Automation</a> ·
|
|
27
28
|
<a href="#architecture">Architecture</a> ·
|
|
28
29
|
<a href="ROADMAP.md">WPS gap roadmap</a> ·
|
|
@@ -43,6 +44,8 @@ workflows, and a separate Rust automation plane.
|
|
|
43
44
|
lowest-common-denominator model.
|
|
44
45
|
- **Own the product boundary**: your application controls content, storage,
|
|
45
46
|
permissions, collaboration, and model providers.
|
|
47
|
+
- **Collaborate across every editor** with shared Yjs/Yrs content, Awareness
|
|
48
|
+
participants and remote locations, plus browser, CLI, MCP, and A3S Code peers.
|
|
46
49
|
- **Automate deterministically** through the native CLI, standard MCP server,
|
|
47
50
|
or packaged Office Skill.
|
|
48
51
|
|
|
@@ -139,9 +142,24 @@ The images below are committed visual-regression baselines from the real
|
|
|
139
142
|
server, and Office Skill share bounded mutation contracts. Coding agents can
|
|
140
143
|
also keep a durable Yrs replica, exchange standard Yjs v1 updates and state
|
|
141
144
|
vectors, perform authorized typed Markdown, Document, Spreadsheet cell,
|
|
142
|
-
Presentation scene-element, and PDF annotation, form-value, and
|
|
143
|
-
changes, retain browser/native actor attribution, and checkpoint
|
|
144
|
-
replacing a whole Office file.
|
|
145
|
+
Presentation scene-element and z-order, and PDF annotation, form-value, and
|
|
146
|
+
review changes, retain browser/native actor attribution, and checkpoint
|
|
147
|
+
without replacing a whole Office file.
|
|
148
|
+
|
|
149
|
+
## Real-time collaboration
|
|
150
|
+
|
|
151
|
+
Document, Markdown, Spreadsheet, Presentation, and PDF expose the same
|
|
152
|
+
transport-neutral collaboration boundary. Two browser clients can edit one
|
|
153
|
+
artifact live, render an accessible participant roster, and project remote
|
|
154
|
+
text selections, cells, scene objects, pages, or annotations without moving
|
|
155
|
+
the local user's viewport or focus. Native Yrs replicas join the same state
|
|
156
|
+
through the CLI, standard MCP server, or A3S Code.
|
|
157
|
+
|
|
158
|
+
The host owns rooms, authentication, authorization, network delivery, offline
|
|
159
|
+
buffering, persistence, and the `Y.Doc`; A3S Office owns format-specific
|
|
160
|
+
bindings, local undo, validated presence, and conflict-local typed mutations.
|
|
161
|
+
See the bilingual [real-time collaboration guide](https://a3s-lab.github.io/Office/docs/components/collaboration.html)
|
|
162
|
+
for React, Vue, Web Component, reconnect, security, and native-agent setup.
|
|
145
163
|
|
|
146
164
|
## Quick start
|
|
147
165
|
|
|
@@ -1038,6 +1056,14 @@ cargo run -p a3s-office-cli -- collab mutate .a3s/deck.replica \
|
|
|
1038
1056
|
--operation-id edit-46 \
|
|
1039
1057
|
--mutation '{"type":"presentation-update-element","containerKind":"slide","containerId":"slide-1","elementId":"title-1","expectedElement":{"id":"title-1","type":"text","x":10,"y":10,"width":80,"height":20,"text":"Draft"},"nextElement":{"id":"title-1","type":"text","x":16,"y":10,"width":80,"height":20,"text":"Final"}}' --json
|
|
1040
1058
|
|
|
1059
|
+
# Move that element to the first order position after verifying its currently
|
|
1060
|
+
# observed predecessor. Destination and source positions use stable IDs, not
|
|
1061
|
+
# array indexes; null means no predecessor.
|
|
1062
|
+
cargo run -p a3s-office-cli -- collab mutate .a3s/deck.replica \
|
|
1063
|
+
--artifact-id deck --kind presentation --actor-id agent-7 --mode edit \
|
|
1064
|
+
--operation-id move-46 \
|
|
1065
|
+
--mutation '{"type":"presentation-move-element","containerKind":"slide","containerId":"slide-1","elementId":"title-1","expectedAfterElementId":"background-1","afterElementId":null}' --json
|
|
1066
|
+
|
|
1041
1067
|
# Set one PDF form value through its stable fully-qualified field name.
|
|
1042
1068
|
cargo run -p a3s-office-cli -- collab mutate .a3s/application.replica \
|
|
1043
1069
|
--artifact-id application --kind pdf --actor-id agent-7 --mode edit \
|
|
@@ -1106,8 +1132,13 @@ plus a canonical immutable claim inside a slide, master, or layout and can
|
|
|
1106
1132
|
place it after a stable active element. Presentation update compares complete
|
|
1107
1133
|
expected/current/next elements and writes only changed top-level fields, so
|
|
1108
1134
|
unrelated concurrent geometry, text, or style changes merge while a stale
|
|
1109
|
-
same-field edit fails.
|
|
1110
|
-
|
|
1135
|
+
same-field edit fails. Presentation move compares the stable observed and
|
|
1136
|
+
requested predecessor IDs instead of array indexes; `null` means the first
|
|
1137
|
+
element-order position. An already-satisfied destination is idempotent, while
|
|
1138
|
+
a stale source position or unavailable anchor fails before a durable update.
|
|
1139
|
+
Only the moved element's order entry changes; no object fields, container, or
|
|
1140
|
+
deck are replaced. Exact deletion writes a durable tombstone, and element IDs
|
|
1141
|
+
and types never drift or become reusable. PDF annotation creation accepts the
|
|
1111
1142
|
portable browser record for FreeText, Highlight, Underline, StrikeOut, or Ink,
|
|
1112
1143
|
writes `source: created`, and commits its immutable claim atomically. An update
|
|
1113
1144
|
supplies complete `expectedAnnotation` and `nextAnnotation` values; recursive
|
|
@@ -1185,6 +1216,8 @@ without hard-coded return URLs.
|
|
|
1185
1216
|
|
|
1186
1217
|
- [Live Playground](https://a3s-lab.github.io/Office/)
|
|
1187
1218
|
- [Documentation center](https://a3s-lab.github.io/Office/docs/)
|
|
1219
|
+
- [A3S Office 0.7.1 documentation](https://a3s-lab.github.io/Office/docs/0.7.1/)
|
|
1220
|
+
- [A3S Office 0.7.0 documentation](https://a3s-lab.github.io/Office/docs/0.7.0/)
|
|
1188
1221
|
- [A3S Office 0.6.0 documentation](https://a3s-lab.github.io/Office/docs/0.6.0/)
|
|
1189
1222
|
- [A3S Office 0.5.0 documentation](https://a3s-lab.github.io/Office/docs/0.5.0/)
|
|
1190
1223
|
- [A3S Office 0.4.0 documentation](https://a3s-lab.github.io/Office/docs/0.4.0/)
|
package/dist/office-kernel.wasm
CHANGED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@a3s-lab/office",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Open-source browser editors for documents, Markdown, spreadsheets, presentations, and PDFs.",
|
|
3
|
+
"version": "0.7.1",
|
|
4
|
+
"description": "Open-source collaborative browser editors for documents, Markdown, spreadsheets, presentations, and PDFs.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"office",
|
|
7
7
|
"document-editor",
|
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
"spreadsheet",
|
|
10
10
|
"presentation",
|
|
11
11
|
"pdf",
|
|
12
|
+
"collaboration",
|
|
13
|
+
"yjs",
|
|
12
14
|
"react",
|
|
13
15
|
"vue",
|
|
14
16
|
"web-components"
|