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