@ai-matrx/records 0.81.3 → 0.82.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/CHANGELOG.md +23 -0
- package/dist/app-table/index.cjs +1 -1
- package/dist/app-table/index.cjs.map +1 -1
- package/dist/app-table/index.js +1 -1
- package/dist/app-table/index.js.map +1 -1
- package/dist/core/index.cjs +3 -3
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.js +3 -3
- package/dist/core/index.js.map +1 -1
- package/dist/data/index.cjs +1 -1
- package/dist/data/index.cjs.map +1 -1
- package/dist/data/index.js +1 -1
- package/dist/data/index.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/index.js.map +1 -1
- package/dist/templates/index.cjs +542 -5
- package/dist/templates/index.cjs.map +1 -1
- package/dist/templates/index.js +542 -5
- package/dist/templates/index.js.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# Changelog — @ai-matrx/records
|
|
2
2
|
|
|
3
|
+
## 0.82.1
|
|
4
|
+
### lane DESCRIBE-BENCH2 (sweep): the mechanical wrong shapes are read, not refused
|
|
5
|
+
|
|
6
|
+
- `autofixDescribeSpec` also rewrites, each with an auto-fix note and only when unambiguous: view `filters` written as a list of `{field, op, value}` (→ the store's map; several values → `anyOf`; a condition the store cannot express is dropped and SAID), `sort`/`orderBy` → `sorts`, `group_by`/`date_field`/… → `groupBy`/`dateField`/…, an exact duplicate view dropped; a field typed with `kind`/`type` (or by a plain label) → `parityType`; a formula over bare field names → `{Label}`; a relationship `inverseKey` that is already a field of the target (the store then read the rollup's link as a plain formula) renamed; a rollup named for a status with no filter → the filter when exactly one far-side choice/tick box is that word; a real-looking phone → a fictional one; a copy of the shared team_member block → an ordinary table (name, role, notes).
|
|
7
|
+
- `describeVocabulary()` gains `view_filters_shape`, `field_shape`, `formula_shape`, `relationship_shape`, `phone_rule`, `team_rule`.
|
|
8
|
+
|
|
9
|
+
## Earlier in this release — a rollup or lookup in the wrong shape is read, not refused
|
|
10
|
+
|
|
11
|
+
- `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.
|
|
12
|
+
- `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.
|
|
13
|
+
- 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`).
|
|
14
|
+
- 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.
|
|
15
|
+
|
|
16
|
+
**Consumer action:** none (matrx-frontend picks it up on update).
|
|
17
|
+
|
|
18
|
+
## 0.82.0 — workbook bytes from print, no alchemy
|
|
19
|
+
|
|
20
|
+
- Spreadsheet import/export reads and writes through `@ai-matrx/print/xlsx` (the one SheetJS
|
|
21
|
+
engine). records no longer depends on `@ai-matrx/alchemy`, removing the records -> alchemy
|
|
22
|
+
layer violation (architecture step 13).
|
|
23
|
+
|
|
24
|
+
Consumer action: none.
|
|
25
|
+
|
|
3
26
|
## 0.81.3
|
|
4
27
|
### lane DRILL-FACTS: a records page is its count
|
|
5
28
|
|
package/dist/app-table/index.cjs
CHANGED
|
@@ -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/
|
|
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";
|