@ai-matrx/office 0.8.31 → 0.8.32

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/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Changelog
2
2
 
3
- ## 0.8.31
3
+ ## 0.8.32
4
4
 
5
5
  UNVERIFIED: this release has no Unreleased entry and the source comparison could not be made (the caller supplied no source comparison). Whether source changed is unknown; consumer action is unknown.
6
6
  Check the package's gitHead on npm against this version's gitHead: `git diff <previous gitHead> <this gitHead> -- apps/shared/office/src`.
@@ -112,9 +112,9 @@ Changed shipped source files (2):
112
112
  - **Docs state hash: plugin resources by content, zoom never.** The browser editor (full docs preset) writes one `resources` entry per plugin on every save (`"[]"`, `""`, `{"links":[]}`, `{"data":{},"order":[]}`) and `settings.zoomRatio`; a stored row and a headless load have neither, so live seats still refused a restore after 0.8.18. The canonical form now parses each resource, drops empty ones, sorts by name, and drops the zoom. Forcing case: the live row and what the browser held after loading it (red on 0.8.18, green). Consumer action: none.
113
113
 
114
114
  ## 0.8.18
115
- ### C7a restore hash, stale checkpoints, collaborator colours
115
+ ### C7a restore hash, stale checkpoints, collaborator colors
116
116
 
117
- - **Docs co-editing: one canonical state hash, before and after Univer loads it (C7a follow-up).** `canonicalDocsSnapshot` now first brings a snapshot to the form every seat holds after loading it (`asLoadedDocsSnapshot`: deterministic ids, `sanitizeUniverDocSnapshot`, Univer's own `DocumentDataModel` defaults) and drops `sectionId` like `paragraphId`. A History restore of a document not open in this tab hashed the raw row while every open seat hashed what Univer held, so both seats refused it (`checkpoint_hash at rev 10`) and kept the old text; now the two agree (corpus + real History versions, through a real Univer load and save). Docs rooms: a keystroke the session refused while reloading puts the seat back on the room's document instead of staying on that seat alone; collaborator colours by join order (`claimCollaboratorColor` from data). `sanitizeUniverDocSnapshot` takes `{ quiet }`. Consumer action: none (no live room predates this hash; every existing room is on a trashed test document).
117
+ - **Docs co-editing: one canonical state hash, before and after Univer loads it (C7a follow-up).** `canonicalDocsSnapshot` now first brings a snapshot to the form every seat holds after loading it (`asLoadedDocsSnapshot`: deterministic ids, `sanitizeUniverDocSnapshot`, Univer's own `DocumentDataModel` defaults) and drops `sectionId` like `paragraphId`. A History restore of a document not open in this tab hashed the raw row while every open seat hashed what Univer held, so both seats refused it (`checkpoint_hash at rev 10`) and kept the old text; now the two agree (corpus + real History versions, through a real Univer load and save). Docs rooms: a keystroke the session refused while reloading puts the seat back on the room's document instead of staying on that seat alone; collaborator colors by join order (`claimCollaboratorColor` from data). `sanitizeUniverDocSnapshot` takes `{ quiet }`. Consumer action: none (no live room predates this hash; every existing room is on a trashed test document).
118
118
 
119
119
  ## 0.8.17
120
120
 
@@ -163,6 +163,7 @@ Changed shipped source files (8):
163
163
 
164
164
  ### Unreleased
165
165
 
166
+ - **US spelling: the British spelling of "color" no longer exists in this package (Arman, 2026-10-21).** Every label, template string, comment, identifier, CSS class/variable and test name that spelled it the British way now says color. Guard: `design-system/src/us-spelling.test.ts` scans all of `apps/` for the word. Consumer action: none for imports; if you matched on a British-spelled identifier, class or CSS variable from this package, use the `color` spelling; update the package.
166
167
  - **Sheets co-editing on the ordered log (C6).** `@ai-matrx/office/univer/collab` adds the Sheets room: `openSheetsOtRoom` (the C2 session over the C5a/C5b group transform, saves at a quiet point with a matching hash, restore through `collab_replace`, undo items rebased over every remote op), `univerSheetsOtPort` (capture: onlyLocal/fromCollab filtered, grouped by outermost command with a try/finally depth guard on both execute paths, params allowlist, completeCellContent, exact merge removals, style objects never ids, whole-style overrides restated as merges, annotateFormulas, inverses from the applied params against a pre-state copy; a barrier or unknown id is `not_shared` and rolls the seat back), `sheetsStateHash` / `canonicalSheet` (merges as a set, defined names by id; the transform fuzz now hashes through it), and `startWorkbookOtRoom` / `workbookUsesOrderedRoom` (the `udt_workbook_snapshots` store, the C1 doors, presence). A remote row/column insert, remove or move carries this seat's selection along and never leaves it past the sheet's edge (the port's `selections` option; a stale whole-row selection after a peer's column delete crashed the editor in the live run). Remote applies run with `{ fromCollab: true }` only (not `onlyLocal`): Univer's formula engine skips onlyLocal value writes, so a peer's formula showed blank on every other seat in the live run. Flip is per room exactly like Docs. Consumer action: matrx-frontend's WorkbookEditor opens it when the workbook's room exists or `collab.ot_rooms` says so (shipped with this release); every other consumer: none.
167
168
 
168
169
  - **`Workbook` and `DocumentRow` carry `test_expires_at` / `test_run_id`** — the `workbench.udt_workbooks` / `udt_documents` rows gained these test-fixture columns; the hand-written types now match the generated row again (matrx-frontend `features/data-tables/office-types-agree.ts`). Consumer action: none (a literal building one of these rows must add the two fields, `null` for real records).