@ai-matrx/records-ui 0.93.2 → 0.93.4

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,22 @@
1
1
  # Changelog — @ai-matrx/records-ui
2
2
 
3
+ ## 0.93.4
4
+ ### Unreleased
5
+ ### lane RENDER-3 (2026-09-27): one cell edit redraws one row — and none of the data table's toolbar, headers or footer
6
+
7
+ - **The grid hands the data table's chrome props that hold still** (design-system `MatrxTableChrome`, same release train). `query`, `footerRows`, `spreadsheet`, `toolbar`, `coverage`, `detail`, `window` and `virtualize` were written inline and so were new on each of the grid's ~9 renders per cell edit. Each is now rebuilt only when what it draws changes; the handlers whose inputs move with every keystroke act through refs (`sheetNow`, `addRowRef`, `footerNow`).
8
+ - **Columns are held by what they hold.** The merged grid's header menus are rebuilt whenever their context moves (every accepted cell); a menu and a column filter are now held while what they SHOW is the same, a menu choice runs the handler its place holds NOW, and `columns` is the same array while every column in it is. `useMergedGridControls().columns` is memoised.
9
+ - **The footer redraws when its cells would draw differently** — the summaries chosen, their values, the row count, loading, the "Add row" busy state — and never otherwise; its buttons act through `footerNow`.
10
+ - **The Undo / Redo pair reads its own source** (`useUndoSource`, `UndoRedoLive`, `UndoFace`): a new undo step redraws the pair, not the toolbar around it. `UndoRedoButtons` is unchanged for other callers.
11
+ - **Proof:** `one-cell-edit-redraws-one-row.test.tsx` now also asserts the data table's toolbar, column headers and footer (with the pager) render ZERO times on a cell edit and on a realtime notice, in both grids, and the merged grid's Undo pair at most once. `testkit/renderCensus.ts` counts by region (header / footer / toolbar / undo) and only components React actually ran (its PerformedWork flag — a memo wrapper whose compare bailed out no longer counts). RED 4/5 on the pre-lane bytes (a HEAD export of records-ui + design-system), GREEN 5/5 after. Merged-grid cell edit in jsdom: 7,750 renders → 1,482.
12
+
13
+ ## 0.93.3
14
+ ### lane RENDER-AUDIT (2026-09-26): one cell edit redraws one row, and nothing above the table
15
+
16
+ - **`RecordsMount` keeps the host's identity while its parts are the same.** It spread the host into a new object on every render (`{ ...host }`) — the value of the context every screen of this package reads — so ANY render above the mount (a search parameter moving, the organization list arriving, a toast) re-rendered the table page, its view bar, the grid and every cell. Guard: `one-cell-edit-redraws-one-row.test.tsx` ("the host's route re-renders").
17
+ - **The grid hands the data table stable parts.** The cells read the editing session through one handle that never changes (they closed over a session object rebuilt on every keystroke, save and refusal, which rebuilt every column); `editing.rowSignature(rowId)` (new on `GridEditing`) tells the table which row changed, as `rowVersion`. The summary and "Add row" footer cells read the latest summaries through a ref instead of rebuilding every column; `getRowId`, the selection's `isRowSelectable`, the copy config, the table style and the row actions are held still, their handlers reaching the grid as it is now. `withAddRowCells` also takes a function that draws the line.
18
+ - **Proof (design-system memoised rows + the records client's row sharing):** `one-cell-edit-redraws-one-row.test.tsx` — on Cedar Ridge's Appointments table page, one cell edit renders the page chrome (a shell beside it, the page header, `TablePage`, `ViewBar`) zero times and redraws only the edited row (plus the row Tab carried the cursor to); a realtime notice about one record redraws that one row without re-reading the page; a host route render with an inline host redraws nothing below the mount. RED 5/5 on the pre-lane bytes, GREEN 5/5 after. `testkit/renderCensus.ts` is the counter (a minimal React DevTools hook).
19
+
3
20
  ## 0.93.2 (2026-09-26 — files from the app's own window; notes read formatted)
4
21
 
5
22
  - **New host port `pickFiles({ multiple, accept? }) → file ids | null`.** An attachment cell opens