@ai-matrx/records 0.81.2 → 0.82.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 (42) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/app-table/index.cjs +1 -1
  3. package/dist/app-table/index.cjs.map +1 -1
  4. package/dist/app-table/index.d.cts +3 -3
  5. package/dist/app-table/index.d.ts +3 -3
  6. package/dist/app-table/index.js +1 -1
  7. package/dist/app-table/index.js.map +1 -1
  8. package/dist/{client-DLIKeBWF.d.cts → client-CesQciPd.d.cts} +1 -1
  9. package/dist/{client-D1LTezMZ.d.ts → client-TU-nvgcF.d.ts} +1 -1
  10. package/dist/core/index.cjs +3 -3
  11. package/dist/core/index.cjs.map +1 -1
  12. package/dist/core/index.d.cts +4 -4
  13. package/dist/core/index.d.ts +4 -4
  14. package/dist/core/index.js +3 -3
  15. package/dist/core/index.js.map +1 -1
  16. package/dist/data/index.cjs +1 -1
  17. package/dist/data/index.cjs.map +1 -1
  18. package/dist/data/index.d.cts +2 -2
  19. package/dist/data/index.d.ts +2 -2
  20. package/dist/data/index.js +1 -1
  21. package/dist/data/index.js.map +1 -1
  22. package/dist/{declareTable-02uao-5n.d.cts → declareTable-B9sr2E0h.d.cts} +2 -2
  23. package/dist/{declareTable-C5FlIS0z.d.ts → declareTable-COXYIOiT.d.ts} +2 -2
  24. package/dist/index.cjs +1 -1
  25. package/dist/index.cjs.map +1 -1
  26. package/dist/index.d.cts +2 -2
  27. package/dist/index.d.ts +2 -2
  28. package/dist/index.js +1 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/react/index.cjs +3 -3
  31. package/dist/react/index.cjs.map +1 -1
  32. package/dist/react/index.d.cts +3 -19
  33. package/dist/react/index.d.ts +3 -19
  34. package/dist/react/index.js +3 -3
  35. package/dist/react/index.js.map +1 -1
  36. package/dist/{table-kind-LodkBhCZ.d.cts → table-kind-B4vIKJVM.d.cts} +3 -19
  37. package/dist/{table-kind-COmkYYkc.d.ts → table-kind-C5T-DOdc.d.ts} +3 -19
  38. package/dist/templates/index.cjs +147 -4
  39. package/dist/templates/index.cjs.map +1 -1
  40. package/dist/templates/index.js +147 -4
  41. package/dist/templates/index.js.map +1 -1
  42. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # Changelog — @ai-matrx/records
2
2
 
3
+ ## Unreleased — lane DESCRIBE-BENCH2: a rollup or lookup in the wrong shape is read, not refused
4
+
5
+ - `autofixDescribeSpec` (so `describeCheck` and the live box) rewrites a rollup or lookup written as `{rollup:{relation,field,fn}}`, `{lookup:{relationField,targetField}}`, `rollupVia/rollupField/rollupFn`, `through/aggregate` and ~20 other spellings into the validator's `via` / `pick` / `agg`, with an auto-fix note, when the relation field, the far field and the aggregate word are unambiguous (sum/total, count, avg/average/mean, min, max …). A rollup through a single link makes that link a list (and its relationship `many`). An unknown relation or aggregate is left for the check to name — nothing is invented.
6
+ - `describeVocabulary()` gains `rollup_shape` and `lookup_shape`: the rule in one sentence and one tiny example in the validator's keys, handed to every describe arm.
7
+ - Confirmed: the 20% governance quota is a gallery bar and the describe profile does not refuse it (0.80.9; guarded by `governance-quota.test.ts`).
8
+ - Bench scripts read a raw answer through the platform's whole-document repair (`content-ir` json-extract), never a hand slice; the scorer re-runs the box's post-processing (safeReuses → describeCheck) with the current package.
9
+
10
+ **Consumer action:** none (matrx-frontend picks it up on update).
11
+
12
+ ## 0.82.0 — workbook bytes from print, no alchemy
13
+
14
+ - Spreadsheet import/export reads and writes through `@ai-matrx/print/xlsx` (the one SheetJS
15
+ engine). records no longer depends on `@ai-matrx/alchemy`, removing the records -> alchemy
16
+ layer violation (architecture step 13).
17
+
18
+ Consumer action: none.
19
+
20
+ ## 0.81.3
21
+ ### lane DRILL-FACTS: a records page is its count
22
+
23
+ - `DrillRowsPage` loses `counted` and `settling`. The records behind a summary-backed number are now the same stored facts the number was counted from, cut at the same `as_of`, so they cannot differ and the door (`platform._drill_run_declared`, migration `drillfacts_d_a_records_page_is_its_count`) no longer sends a second count or a "… more has landed since the count" sentence. `measures` (what the records add up to) and `as_of` are unchanged.
24
+
25
+ **Consumer action:** stop reading `counted` / `settling` from a records page; show freshness from `as_of`.
26
+ ## 0.81.2 (also in these bytes)
27
+ ### lane TABLE-EDITING-EDGES: a date typed as bare digits is read
28
+
29
+ - `readTypedDate` (the one reader every typed-date door uses) now reads digits with no separators: `10142026` (MMDDYYYY, or DDMMYYYY by a day-first locale), `101426` (MMDDYY, the spreadsheet two-digit-year window) and `20261014` (YYYYMMDD, when it is the only reading), with an optional time after. `1014`, `1014202` and impossible days are still refused.
30
+
31
+ **Consumer action:** none.
32
+
3
33
  ## 0.81.2
4
34
  ### lane DESCRIBE-INSTALL: a form the box builds works the moment it is built
5
35
 
@@ -944,7 +944,7 @@ function exportCellText(value) {
944
944
  return JSON.stringify(value);
945
945
  }
946
946
  async function exportPageXlsx(page2, labels = {}, sheetLabel = "Records") {
947
- const { writeWorkbookBytes } = await import("@ai-matrx/alchemy/operate/formats/xlsx");
947
+ const { writeWorkbookBytes } = await import("@ai-matrx/print/xlsx");
948
948
  const header = page2.columns.map((c) => labels[c] ?? c);
949
949
  const body = page2.rows.map((row) => page2.columns.map((c) => exportCellText(row[c])));
950
950
  const name = sheetLabel.replace(/[\\/?*[\]:]/g, " ").trim().slice(0, 31) || "Records";