@a3s-lab/office 0.37.3 → 0.37.5

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.
@@ -1498,13 +1498,30 @@ view, then uses one stable comparator for both orientations. Relative formula
1498
1498
  references are translated along the moved row or column axis with the same
1499
1499
  bounded reference engine used by Paste Special, while absolute references stay
1500
1500
  fixed.
1501
- One accepted operation crosses the Fortune boundary as one range write and one
1502
- controlled Undo record. Table, worksheet-AutoFilter, hyperlink-map,
1503
- imported-formula-metadata, and border-sidecar intersections fail closed because
1504
- those models still own coordinates outside the cell matrix. Moving large sorts,
1505
- large aggregate/rank scans, remaining advanced filter predicates, and
1506
- structural sidecar reconciliation into the Worker/WASM kernel remains Stage 3
1507
- work.
1501
+ An unfiltered accepted operation crosses the Fortune boundary as one range
1502
+ write and one controlled Undo record. A separate structural-owner planner
1503
+ recognizes the exact sortable range of one native table or worksheet AutoFilter
1504
+ from any contained selection. It excludes table totals, freezes the structural
1505
+ header, locks top-to-bottom movement, and carries the owner kind plus table ID
1506
+ when applicable. The command derives that fingerprint again at apply time;
1507
+ changed ownership fails before allocation or mutation.
1508
+
1509
+ Filter-active owned sorts use one controlled workbook replacement instead of a
1510
+ range write. The matrix engine returns its stable source-row permutation beside
1511
+ the translated cells. `spreadsheet-filter-reconciliation` evaluates typed
1512
+ worksheet and table criteria against the sorted dense/sparse sheet, remaps
1513
+ opaque Fortune value/color `rowhidden` ownership through that permutation, and
1514
+ rebuilds the combined hidden-row map while retaining independent manual rows.
1515
+ Fortune range reads that omit hidden rows fall back to the bounded controlled
1516
+ snapshot. Sort area and filter rescans have explicit one-million-cell budgets,
1517
+ and unrelated filters do not divert ordinary ranges from the native path.
1518
+
1519
+ Partial intersections that do not resolve to one exact structural owner, plus
1520
+ hyperlink-map, imported-formula-metadata, and border-sidecar intersections,
1521
+ still fail closed because those sidecars own coordinates outside the cell
1522
+ matrix. Moving large sorts, large aggregate/rank scans, remaining advanced
1523
+ filter predicates, and structural sidecar reconciliation into the Worker/WASM
1524
+ kernel remains Stage 3 work.
1508
1525
  Direct host focus of the native grid now enters the same bounded focus observer
1509
1526
  used by ribbon commands. If a controlled workbook update replaces the focused
1510
1527
  Fortune overlay, focus transfers to its connected replacement; deliberate
@@ -1557,8 +1574,10 @@ number as a date. Relative weeks begin on Sunday; calendar month and quarter
1557
1574
  families classify independently of year. Column profiling is cached per
1558
1575
  immutable sheet and keeps typed dates out of numeric rank actions. The editor
1559
1576
  uses the current local clock, while model tests inject a deterministic clock.
1560
- The controlled model still normalizes dates to the 1900 system; source-level
1561
- 1904 retention remains an explicit import boundary.
1577
+ The controlled model carries one workbook-owned `dateSystem`; omission means
1578
+ 1900 and imported 1904 workbooks retain the explicit alternate epoch. Numeric
1579
+ date serials remain numeric through import, filtering, controlled remounts,
1580
+ collaboration, export, and reopen, including valid 1904 serial zero.
1562
1581
 
1563
1582
  The same closed `WorkSpreadsheetFilterCriteria` union now serves worksheet and
1564
1583
  table native OOXML. Package scan and import read only the worksheet root's
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@a3s-lab/office",
3
- "version": "0.37.3",
3
+ "version": "0.37.5",
4
4
  "description": "Open-source collaborative browser editors for documents, Markdown, spreadsheets, presentations, and PDFs.",
5
5
  "keywords": [
6
6
  "office",
@@ -111,6 +111,7 @@
111
111
  "playground:visual:spreadsheet-row-sort": "playwright test visual-tests/spreadsheet-row-sort.functional.spec.ts --config playwright.config.ts",
112
112
  "playground:visual:spreadsheet-text-sort": "playwright test visual-tests/spreadsheet-text-sort.functional.spec.ts --config playwright.config.ts",
113
113
  "playground:visual:spreadsheet-sort-range": "playwright test visual-tests/spreadsheet-sort-range.functional.spec.ts --config playwright.config.ts",
114
+ "playground:visual:spreadsheet-owned-range-sort": "playwright test visual-tests/spreadsheet-owned-range-sort.functional.spec.ts --config playwright.config.ts",
114
115
  "playground:visual:spreadsheet-font-dialog-shortcuts": "playwright test visual-tests/spreadsheet-font-dialog-shortcuts.functional.spec.ts --config playwright.config.ts",
115
116
  "playground:visual:spreadsheet-diagonal-borders": "playwright test visual-tests/spreadsheet-diagonal-borders.functional.spec.ts --config playwright.config.ts",
116
117
  "playground:visual:spreadsheet-font-colors-shortcuts": "playwright test visual-tests/spreadsheet-font-colors-shortcuts.functional.spec.ts --config playwright.config.ts",
@@ -202,6 +203,8 @@
202
203
  "test:e2e:spreadsheet-text-sort:check": "a3s-test check tests/e2e/spreadsheet-text-sort.acl --json",
203
204
  "test:e2e:spreadsheet-sort-range": "A3S_TEST_SUITE=tests/e2e/spreadsheet-sort-range.acl bash scripts/run-a3s-test-web-gate.sh",
204
205
  "test:e2e:spreadsheet-sort-range:check": "a3s-test check tests/e2e/spreadsheet-sort-range.acl --json",
206
+ "test:e2e:spreadsheet-owned-range-sort": "A3S_TEST_SUITE=tests/e2e/spreadsheet-owned-range-sort.acl bash scripts/run-a3s-test-web-gate.sh",
207
+ "test:e2e:spreadsheet-owned-range-sort:check": "a3s-test check tests/e2e/spreadsheet-owned-range-sort.acl --json",
205
208
  "test:e2e:spreadsheet-cell-fill": "a3s-test run tests/e2e/spreadsheet-cell-fill.acl --json",
206
209
  "test:e2e:spreadsheet-cell-fill:check": "a3s-test check tests/e2e/spreadsheet-cell-fill.acl --json",
207
210
  "test:e2e:spreadsheet-auto-sum": "a3s-test run tests/e2e/spreadsheet-auto-sum.acl --json",
@@ -220,6 +223,8 @@
220
223
  "test:e2e:spreadsheet-diagonal-borders:check": "a3s-test check tests/e2e/spreadsheet-diagonal-borders.acl --json",
221
224
  "test:e2e:spreadsheet-date-time": "a3s-test run tests/e2e/spreadsheet-date-time.acl --json",
222
225
  "test:e2e:spreadsheet-date-time:check": "a3s-test check tests/e2e/spreadsheet-date-time.acl --json",
226
+ "test:e2e:spreadsheet-1904-date-system": "A3S_TEST_SUITE=tests/e2e/spreadsheet-1904-date-system.acl bash scripts/run-a3s-test-web-gate.sh",
227
+ "test:e2e:spreadsheet-1904-date-system:check": "a3s-test check tests/e2e/spreadsheet-1904-date-system.acl --json",
223
228
  "test:e2e:spreadsheet-copy-from-above": "A3S_TEST_SUITE=tests/e2e/spreadsheet-copy-from-above.acl bash scripts/run-a3s-test-web-gate.sh",
224
229
  "test:e2e:spreadsheet-copy-from-above:check": "a3s-test check tests/e2e/spreadsheet-copy-from-above.acl --json",
225
230
  "test:e2e:spreadsheet-font-dialog-shortcuts": "A3S_TEST_SUITE=tests/e2e/spreadsheet-font-dialog-shortcuts.acl bash scripts/run-a3s-test-web-gate.sh",