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