@ai-matrx/records-ui 0.89.3 → 0.90.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 CHANGED
@@ -1,5 +1,72 @@
1
1
  # Changelog — @ai-matrx/records-ui
2
2
 
3
+ ## 0.90.1 (2026-09-26 — merged grid 6n/6o live-walk fixes; needs @ai-matrx/design-system 0.44.3)
4
+
5
+ - **The header's "+" is a button of its own, not a button inside the column-reorder button**
6
+ (found live: a real click on "+" did nothing, and React reported a nested button). The column
7
+ declares `reorderable: false` (design-system 0.44.3), so its label is never a drag handle and it
8
+ never moves among the data columns.
9
+ - **Phone (6o), found live at 375 px:** the Tools button was scrolled past search and a 144 px "No
10
+ groups" picker, off the right edge. Search and Tools now sit side by side at the START of the row
11
+ (the same search query), and an ungrouped view draws no group picker on a phone.
12
+ - **A key is never spread into JSX** (found live on the merged grid): `TablePage` spread
13
+ `{ key: "share" }` into `<ShareControl>`; the key is passed directly now, and
14
+ `a-key-is-never-spread-into-jsx.test.tsx` is a census of this package's source (it names the old
15
+ line on 0.90.0).
16
+
17
+ ## 0.90.0 (2026-09-26 — merged grid tranches 6n + 6o, choice colours by option, DOM budget; needs @ai-matrx/records 0.58.22)
18
+
19
+ - **6n · a row is added where you are.** The merged grid draws an "Add row" line under the last
20
+ row (a footer row, `gridAddRow.tsx`), "Add the first row" on an empty table, and a slim "+" at
21
+ the end of the header that opens the package FieldEditor. Every add path (the line, the empty
22
+ state, the toolbar's New record, the right-click's) writes ONE empty record through
23
+ `custom.record_write`, PINS it to the bottom of the page it was added on (the store's sorted page
24
+ would otherwise send a blank record to the last page) and opens its first typeable cell in the
25
+ on-screen column order. What a pinned row holds is re-read by id after every page read; leaving
26
+ the page lets the store's order speak. A refusal is the store's sentence with the full form offered.
27
+ The Open handle sits at the START of the first cell in the merged grid.
28
+ - **6o · a phone.** Below 768 px the merged grid's own controls (sort state, undo/redo, reorder,
29
+ New record, add column, Layout) fold into ONE "Tools" button that opens a bottom sheet; the row
30
+ keeps search.
31
+ - **Colour rules on a choice column match by the OPTION** (the last lane's finding): a record holds
32
+ the option's id (or a moved list's key) while a rule is written by the word. `paintByOption`
33
+ (`gridColors.tsx`) resolves every spelling — id, key, word — to the option's id on the rule, the
34
+ value and the colour lookup, so "is Completed" paints a record holding the id AND one holding
35
+ `completed`, and a colour kept against a word paints a record holding its id. The rule editor
36
+ offers a choice column's options by word (`custom.field_options`, asked once it opens), keeps the
37
+ option's id, and offers only is / is not / empty / not empty on a choice column.
38
+ - **DOM budget:** a page-filling grid (`footer="sticky"`, a bounded scroller) windows its rows past
39
+ 40 instead of the primitive's default 150 — a 100-row page no longer draws every row.
40
+ - **An open record panel follows the row label**: "Use as row label" and the row-label picker tell
41
+ every screen on the table (`tableShapeChanged`), and `useTable` (records 0.58.22) re-reads on it.
42
+ - RED 11/13 → GREEN 13/13 in `the-merged-grid-adds-rows-folds-on-a-phone-and-colours-choices.test.tsx`.
43
+
44
+ ### Also in 0.90.0 — merged grid tranches 6j, 6l, 6m (needs @ai-matrx/design-system with `spreadsheet.onSelectionChange`)
45
+
46
+ - **6j · row actions everywhere the older grid had them.** The right-click Row section lists the
47
+ table's actions ("Run: Check in", "Ask: Ask Dr. Whitfield", a not-runnable one with why) — each
48
+ update action is ONE `custom.action_run` through the grid's one runner, so "Ask before running"
49
+ and the one-step Undo on the grid's undo stack behave exactly as from the row's own button and the
50
+ selection bar. The action editor previews the WHOLE row, every column, now and after, the changed
51
+ cells marked (`rowActionPreview.tsx`); a "Work out" step is read by `custom.formula_parse` (what
52
+ kind of value it gives, or the store's sentence) and never evaluated in the browser (audit R6:
53
+ `custom.formula_eval` is not open to a signed-in person). New host port `iconPicker` draws the
54
+ platform's one icon picker for an action's icon.
55
+ - **6l · the agent is told where she is.** New host port `onGridContext(snapshot)`
56
+ (`GridContextSnapshot`, `gridAgentContext.ts`): the table, its columns in screen order, the row
57
+ actions, the cursor's cell (design-system `spreadsheet.onSelectionChange`), a dragged block as TSV
58
+ with a header of Field keys, the ticked rows, the rows on screen, the total and the search — told
59
+ once per change. "Copy row / cell / table reference" in the right-click menu go through the
60
+ content-transfer `reference` port the host provides; absent when it is not bound.
61
+ - **6m · whole text and Clean HTML.** Shift-Enter on a text cell (or "Edit whole text…" in its Cell
62
+ section) opens the whole text — a value kept as a file is read whole first. New host port
63
+ `cleanText(text)`: "Clean HTML" in the Cell section (disabled with why on a cell with no HTML) and
64
+ in the dialog; every save is the grid's one versioned cell write and one undo step.
65
+ - RED 6/8 on 0.89.3 → GREEN 8/8 in `the-merged-grid-runs-actions-tells-the-agent-and-cleans-text.test.tsx`;
66
+ `an-owner-writes-the-tables-own-buttons.test.tsx` now asserts the whole-row preview.
67
+ - **Consumer action:** bind `onGridContext`, `cleanText` and `iconPicker` where the merged grid is
68
+ mounted (matrx-frontend /data-v2 does, on `?grid=merged`).
69
+
3
70
  ## 0.89.3
4
71
  ### Unreleased
5
72