@ai-matrx/records-ui 0.88.1 → 0.89.2

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,78 @@
1
1
  # Changelog — @ai-matrx/records-ui
2
2
 
3
+ ## 0.89.2
4
+
5
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
6
+ `git diff npm/records-ui/v0.89.1..npm/records-ui/v0.89.2 -- apps/shared/records-ui`).
7
+ No source changes intended and no consumer action required.
8
+
9
+ ## 0.89.1
10
+
11
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
12
+ `git diff npm/records-ui/v0.88.1..npm/records-ui/v0.89.1 -- apps/shared/records-ui`).
13
+ No source changes intended and no consumer action required.
14
+
15
+ ## 0.89.0 (2026-09-26 — merged grid data paths: tranches 6k, 6c, 6d; needs @ai-matrx/records 0.58.20)
16
+
17
+ - **6k · the merged grid's page is the store's answer.** Search box, column filters, header sort and
18
+ page number go to `custom.read_records_page` (`useRecordPage`): a record on page six is found, a
19
+ sort orders the whole table, the count is the store's (`coverage.answeredBy: "source"`), and a
20
+ hand-ordered view pages in its hand order (`view_id`). Column filters become the store's one
21
+ filter shape (`gridPage.ts` `storeQuestion`: equality/null/date window flat; contains, ranges,
22
+ several choices and NOT as a Rule); a filter the store cannot ask is refused by name, never
23
+ applied to the loaded page. Realtime notices patch the rows on screen. Classic is unchanged.
24
+ - **6c · the selection bar works on many rows in ONE `custom.record_change_many`** (`gridBulk.tsx`):
25
+ Set a column (the Field's own editor), Clear a column, Fill down (top ticked row), Duplicate,
26
+ Delete (confirmed with the count), beside the table's row actions. One refused row refuses the
27
+ batch; the store's sentence is shown and nothing changed. The merged grid's paste and range
28
+ fill/clear are one `record_change_many` too.
29
+ - **6d · one undo** (`gridUndo.tsx`, on the design-system undo stack): a committed cell, a paste, a
30
+ bulk change, a range fill/clear and a row action each push ONE step; Undo (toolbar button with
31
+ depth, the notice's one Undo button, Cmd-Z) restores every touched cell in ONE
32
+ `record_change_many` (created rows archived, archived rows restored); Redo (Shift-Cmd-Z) writes
33
+ the after-values. A refused undo changes nothing and keeps the step. The spreadsheet primitive's
34
+ own stack is off in the merged grid (`undoDepth: 0`), so Cmd-Z has one meaning.
35
+ - `GridEditing.forget(cells)` and `useGridEditing({ onWritten })`; `useActionRunner({ onRan })`.
36
+ - Column order (`presentation.columnOrder`) is now a declared view key in the store
37
+ (`custom.view_keys()`, matrx-frontend migration `gridmerge_a_view_keeps_its_column_order.sql`), so a
38
+ moved column is kept on the view.
39
+ - RED → GREEN: `the-merged-grid-pages-edits-and-undoes-through-the-store.test.tsx` (11 of 16 red on
40
+ the 0.88.1 Grid).
41
+
42
+ Presentation tranches in the same release (6e, 6g, 6h, 6i):
43
+
44
+ - **6e · every format renders, edits and reads the same everywhere.** `RecordValue` draws a column's
45
+ "Shows as" (`Field.display_format`) through the registry wherever it is called — grid, record
46
+ panel, gallery, public page — with the older grid's rich drawings (`formattedValue.tsx`: stars,
47
+ a progress bar, mail / phone / web / maps links, a colour swatch, tag chips); card and sentence
48
+ text (`scalarText`) reads it too. A rating is ONE click in the grid (both grids; a second press on
49
+ the chosen star clears it). `FieldControl` is format-aware (`formatControls.tsx`): money typed
50
+ with its symbol and commas, a percent kept as a fraction typed as the percent a person reads
51
+ (45 → 0.45), stars, time, colour, email/link/phone inputs. **"Shows as" is the whole registry**
52
+ (`FieldFormatPicker.tsx`, replacing `ShowsAsPicker`): the formats that fit the column in the
53
+ registry's groups, then "Other kinds · changes what the column stores" (never JSON or a raw list,
54
+ never a worked-out kind), which retypes the column (`type` word) and sets its look in the SAME
55
+ `field_update`; each format's own options (currency, stored-as 45 or 0.45, decimals, duration
56
+ unit, out-of, date style, prefix/suffix, separators). Percent reads the stored `percentScale` and
57
+ never guesses. A `display_format` of `formula` is never a look.
58
+ - **6g · colours through the table's one colour door** (`gridColors.tsx`, merged grid): header menu
59
+ "Colour by…" (rows by a choice/tick column, only its cells, stop; Colour rules…; Highlight
60
+ column), right-click "Highlight cell" / "Highlight row" — each press writes ONE leaf through
61
+ `custom.table_decorate` by Field id and paints the store's answer at once. The rules dialog
62
+ (first match wins, row or cell) saves the whole list as one leaf. `useTableDecorations(tableId,
63
+ revision)` re-reads on the table's realtime notice, so another person's colour arrives live, and
64
+ exposes `apply`. A person without editor on the table sees the controls with the reason.
65
+ - **6h · the merged grid's footer is honest:** it appears only once a column is summarized
66
+ ("Summarize column" in the header menu, `summaryMenuItem`, the store's measures) and goes with
67
+ the last summary. The classic grid's footer is unchanged.
68
+ - **6i · what names each record** (`gridRowLabel.tsx`, table right-click "What names each
69
+ record…"): one column → `title_field` through the table record's update door; "Columns joined"
70
+ says the store's limit before anything is written (a store gap: the store names records by one
71
+ column's words). The label column wears a mark; the right-click Row section is headed by the
72
+ row's own name.
73
+ - RED → GREEN: `the-merged-grid-shows-formats-colours-summaries-and-row-labels.test.tsx` (18 of 20
74
+ red on the 0.88.1 bytes; 20/20 green).
75
+
3
76
  ## 0.88.1 (2026-09-26)
4
77
 
5
78
  - **Fix (merged grid): hiding a column is kept again.** Every hide sent the whole column order
@@ -42,6 +115,16 @@
42
115
  end that hides controls fades (`data-clipped` on the slot, `useSlotScroll` / `clippedEnds`), and a
43
116
  mouse wheel over the slot scrolls it sideways. Walked on the harness (source bytes, dev clone,
44
117
  admin's Grid Parity Fixture) at 1600, 390 and 320: 28/28, no two controls ever overlap.
118
+ - **Fix: every archive confirm says it can be restored from Trash** (lane V25-UI-FIXES; archived
119
+ store tables, records and saved views are listed by personal and Organization Trash since
120
+ TRASH-TABLES). The table's confirm (*Settings → This table → Archive this table*) and the grid's
121
+ record confirm now open with the platform's ONE archive sentence — *"This archives …. It leaves
122
+ this list, and you can restore it from Trash."*, the app's `archiveConfirmSentence` word for word,
123
+ exported here as `archiveConfirmSentence` — instead of "The store keeps them for 365 days, so it
124
+ can still be brought back" (from where?) and "waits in Archived items" (true, silent about Trash).
125
+ The record's confirm still names the table's own Archived items. This package draws no confirm
126
+ for archiving a saved view (census: none exists). Suite `every-archive-confirm-names-trash.test.tsx`
127
+ RED 2/2 on the prior bytes → GREEN 2/2.
45
128
 
46
129
  ## 0.87.0 (2026-09-25 — one-grid merge step 5 + tranches 6a / 6b; needs @ai-matrx/design-system 0.42.0)
47
130
 
@@ -3902,3 +3985,4 @@ First release: `Grid`, `RecordForm`, `FieldEditor`, `TableSettings`,
3902
3985
  refusal surface. Every one of them is proven headlessly against the rehearsal
3903
3986
  branch by `pnpm test`.
3904
3987
 
3988
+