@ai-matrx/records-ui 0.93.73 → 0.93.74

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,5 +1,11 @@
1
1
  # Changelog — @ai-matrx/records-ui
2
2
 
3
+ ## 0.93.74
4
+
5
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
6
+ `git diff npm/records-ui/v0.93.73..npm/records-ui/v0.93.74 -- apps/shared/records-ui`).
7
+ No source changes intended and no consumer action required.
8
+
3
9
  ## 0.93.73
4
10
 
5
11
  Automatic changed-only republish (docs/metadata drift since the last tag — see
@@ -9,6 +15,7 @@ No source changes intended and no consumer action required.
9
15
  ## 0.93.72
10
16
  ### Unreleased
11
17
 
18
+ - **Rows that are not a file read as rows after the write** (lane SAVE-AS-TABLE-EVERYWHERE, walked 2026-09-29): after rows from a chat answer landed, the wizard said "the rows above has been sent to this table … To import another file, choose it above" under a line still promising "Nothing is written until you press Import". With a `source`, it now says "These rows have been sent to this table" and the pre-write line is gone.
12
19
  - **An import no longer calls every row of a choice column refused** (lane SAVE-AS-TABLE-EVERYWHERE, found walking Cedar Ridge 2026-09-29): the pre-write rule check judged a choice column without its options and said "3 of 3 rows would be refused … its options have not been read yet" over words that WERE choices, and held Import behind "Import the rest anyway". `checkImportRules` now takes the options the wizard reads for the enum ask; a choice column is judged only once they are in hand, and a word it does not know is the enum ask's to raise. The wizard's source line for rows with no title reads "From the rows above".
13
20
  - **Changing a booking page never sends the store's own columns back** (lane HANDOVER, 2026-09-29): with the page's stored questions loaded, "Change it" also sent the store's hidden `slot`, `status` and `booked_with`, and the save was refused ("A booking page never asks for \"slot\""). Hidden questions and `STORE_ANSWERS_THESE` are left out on load. Proof: `a-booking-page-that-exists-can-be-changed.test.tsx` (the stored list as the store keeps it), red on the old builder.
14
21
 
@@ -45,6 +52,13 @@ No source changes intended and no consumer action required.
45
52
  beside `field`/`then`), so Save keeps the exploration as a Saved view; the drill trail also
46
53
  narrows the page the grid reads ("See these records"). Proof:
47
54
  `a-grid-drills-through-the-store.test.tsx`, red 4/5 on the HEAD grid.
55
+ - **The drill reads the one read door** (lane DRILL-TABLE-PRIMITIVE, after D1/D2): Dimensions, Measures and
56
+ drill paths come from `platform.drill_describe` (a custom Table's from `custom.table_dimensions`, with its
57
+ overrides) and every grouping from `platform.drill_ask` — nothing is inferred in the browser any more.
58
+ `useDrill({ source })` is the port for ANY source: a custom Table `{kind: "table", id}` or a standard table
59
+ `{kind: "entity", token}`, drawn by the same table; relation groups read by the names the door read as the
60
+ person. A view whose question is nested (a Rule filter, which the contract's flat `where` does not carry
61
+ yet) is answered by the store's aggregate door `drill_ask` itself delegates to, with the same rule.
48
62
 
49
63
  ## 0.93.67
50
64
 
package/dist/index.cjs CHANGED
@@ -269,6 +269,10 @@ __export(src_exports, {
269
269
  declareView: () => declareView,
270
270
  defaultViewOf: () => defaultViewOf,
271
271
  designatedLayoutOf: () => designatedLayoutOf,
272
+ drillDimensionsOf: () => drillDimensionsOf,
273
+ drillMeasuresOf: () => drillMeasuresOf,
274
+ drillPathsOf: () => drillPathsOf,
275
+ drillWhere: () => drillWhere,
272
276
  editorKindFor: () => editorKindFor,
273
277
  ensureSystemTable: () => ensureSystemTable,
274
278
  entityReferenceSpec: () => entityReferenceSpec,
@@ -378,6 +382,9 @@ __export(src_exports, {
378
382
  unknownViewLine: () => unknownViewLine,
379
383
  useCanShare: () => useCanShare,
380
384
  useChoiceNudge: () => useChoiceNudge,
385
+ useDrill: () => useDrill,
386
+ useDrillAnswers: () => useDrillAnswers,
387
+ useDrillDefinition: () => useDrillDefinition,
381
388
  useEmbedHandshake: () => useEmbedHandshake,
382
389
  useEnrichCells: () => useEnrichCells,
383
390
  useGridEditing: () => useGridEditing,
@@ -11449,7 +11456,7 @@ function ImportWizard({ tableId, source, onDone, onWrote, className }) {
11449
11456
  /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "text-muted-foreground", children: table.data?.name }),
11450
11457
  fields.data && table.data ? null : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "ml-auto text-muted-foreground", children: fields.data ? "Reading this table\u2026" : "Reading this table's fields\u2026" })
11451
11458
  ] }),
11452
- source ? /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("p", { className: "text-muted-foreground", "data-import-source": "", children: [
11459
+ source && !afterWrite ? /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("p", { className: "text-muted-foreground", "data-import-source": "", children: [
11453
11460
  "From ",
11454
11461
  source.name,
11455
11462
  " \u2014 ",
@@ -11483,8 +11490,8 @@ function ImportWizard({ tableId, source, onDone, onWrote, className }) {
11483
11490
  phase === "reading" ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "text-muted-foreground", children: "Reading the file\u2026" }) : null,
11484
11491
  phase === "planning" ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "text-muted-foreground", children: "Working out what each column is\u2026" }) : null,
11485
11492
  plan && parsed && afterWrite ? /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("p", { className: "text-muted-foreground", "data-import-after-write": "", children: [
11486
- fileName ? `${fileName} has been sent to this table` : "This file has been sent to this table",
11487
- ledger && !ledger.final ? ", but the run stopped part-way. Importing it again would write the rows that already landed a second time, so fix the file (or keep only the rows below the ones that landed) and choose it again." : ". What landed and what was refused is below. To import another file, choose it above."
11493
+ source ? `These rows have been sent to this table${ledger && !ledger.final ? ", but the run stopped part-way." : ". What landed and what was refused is below."}` : fileName ? `${fileName} has been sent to this table` : "This file has been sent to this table",
11494
+ source ? null : ledger && !ledger.final ? ", but the run stopped part-way. Importing it again would write the rows that already landed a second time, so fix the file (or keep only the rows below the ones that landed) and choose it again." : ". What landed and what was refused is below. To import another file, choose it above."
11488
11495
  ] }) : null,
11489
11496
  plan && parsed && !afterWrite ? /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
11490
11497
  titleKey ? /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex flex-wrap items-center gap-2 rounded border bg-muted/40 px-2 py-1.5", children: [