@ai-matrx/records-ui 0.95.3 → 0.95.10
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 +127 -0
- package/dist/index.cjs +7265 -6066
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +149 -26
- package/dist/index.d.ts +149 -26
- package/dist/index.js +6894 -5685
- package/dist/index.js.map +1 -1
- package/dist/object-actions.cjs +17 -12
- package/dist/object-actions.cjs.map +1 -1
- package/dist/object-actions.d.cts +1 -1
- package/dist/object-actions.d.ts +1 -1
- package/dist/object-actions.js +19 -12
- package/dist/object-actions.js.map +1 -1
- package/dist/{objectActions-DozKWxks.d.cts → objectActions-CUR8KdPr.d.cts} +11 -2
- package/dist/{objectActions-DozKWxks.d.ts → objectActions-CUR8KdPr.d.ts} +11 -2
- package/dist/pickers.cjs +98 -34
- package/dist/pickers.cjs.map +1 -1
- package/dist/pickers.d.cts +4 -0
- package/dist/pickers.d.ts +4 -0
- package/dist/pickers.js +98 -34
- package/dist/pickers.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,128 @@
|
|
|
1
1
|
# Changelog — @ai-matrx/records-ui
|
|
2
2
|
|
|
3
|
+
## 0.95.10
|
|
4
|
+
|
|
5
|
+
Automatic changed-only republish (docs/metadata drift since the last tag — see
|
|
6
|
+
`git diff npm/records-ui/v0.95.4..npm/records-ui/v0.95.10 -- apps/shared/records-ui`).
|
|
7
|
+
No source changes intended and no consumer action required.
|
|
8
|
+
|
|
9
|
+
## 0.95.9
|
|
10
|
+
|
|
11
|
+
Automatic changed-only republish (docs/metadata drift since the last tag — see
|
|
12
|
+
`git diff npm/records-ui/v0.95.4..npm/records-ui/v0.95.9 -- apps/shared/records-ui`).
|
|
13
|
+
No source changes intended and no consumer action required.
|
|
14
|
+
|
|
15
|
+
## 0.95.8
|
|
16
|
+
|
|
17
|
+
Automatic changed-only republish (docs/metadata drift since the last tag — see
|
|
18
|
+
`git diff npm/records-ui/v0.95.4..npm/records-ui/v0.95.8 -- apps/shared/records-ui`).
|
|
19
|
+
No source changes intended and no consumer action required.
|
|
20
|
+
|
|
21
|
+
## 0.95.7
|
|
22
|
+
|
|
23
|
+
Automatic changed-only republish (docs/metadata drift since the last tag — see
|
|
24
|
+
`git diff npm/records-ui/v0.95.4..npm/records-ui/v0.95.7 -- apps/shared/records-ui`).
|
|
25
|
+
No source changes intended and no consumer action required.
|
|
26
|
+
|
|
27
|
+
## 0.95.6
|
|
28
|
+
### (lane CHAIR-STORE-PERF — a door the clock cut off says try again)
|
|
29
|
+
|
|
30
|
+
- **The `timed_out` remedy is one that is true of every door**: "Nothing was changed. Try again in a
|
|
31
|
+
moment." The store cancels the whole statement at its clock, so a timed-out create, column add or
|
|
32
|
+
page read wrote nothing; the old table sentence ("Try a smaller page, or…") was written for the page
|
|
33
|
+
read and was printed to a person adding one row to a three-row table. A door whose page can shrink
|
|
34
|
+
says so in its own hint, which still wins (`a-door-the-clock-cut-off-says-try-again.test.tsx`).
|
|
35
|
+
|
|
36
|
+
### (lane CHAIR-REACH — Ask a table in one line; the condition builder's pickers)
|
|
37
|
+
|
|
38
|
+
- **An Ask box in the table page's own header bar** (`TableAsk`, first of the page actions
|
|
39
|
+
`TablePage` hands the host's header — or its own toolbar row). One line in ("count where
|
|
40
|
+
status is open by unit", "sum of copay where status is completed by month"), read by
|
|
41
|
+
`questionFromWords` (`askWords.ts`) into the Question builder's own `QuestionSpec`, answered by
|
|
42
|
+
its own runner (`askQuestion` → `custom.record_aggregate`) and drawn by its own answer view
|
|
43
|
+
(`QuestionAnswerView`, now exported), so the number is the one Questions gives. The line as it
|
|
44
|
+
was understood is printed over the answer; a word that names no column is said back
|
|
45
|
+
("No column named “flavour”"), never dropped. A value on a choice column is matched to the
|
|
46
|
+
column's choice whatever its capitals. **Open in Questions** opens that question in the builder
|
|
47
|
+
(`QuestionPanel` prop `draft`). Exported: `TableAsk`, `askExampleFor`, `questionFromWords`,
|
|
48
|
+
`ASK_EXAMPLE`, `QuestionAnswerView`. Guard: `a-table-is-asked-in-one-line.test.tsx` (the
|
|
49
|
+
probe's truths: $147, 9, the four statuses).
|
|
50
|
+
- **The condition builder draws no native `<select>`**: the column, the comparison and the
|
|
51
|
+
group joiner are `PickOne` (`Condition.tsx` leaves the native-select allowlist; each picker
|
|
52
|
+
carries `data-condition="field|comparison|joiner"`). Tests drive them through
|
|
53
|
+
`testkit/pickOne`.
|
|
54
|
+
|
|
55
|
+
Consumer action: none. A host header receives Ask inside `actions` as before.
|
|
56
|
+
|
|
57
|
+
### (lane CHAIR-REACH — "Link a record…" on every store record's menu)
|
|
58
|
+
|
|
59
|
+
- **A record's one action list gains `link-record`** ("Link a record…", after Merge with…): a
|
|
60
|
+
card's ⋯ and right-click (Gallery, Kanban, Pipeline) and the grid row's right-click (`row-link`).
|
|
61
|
+
The package draws only the entry; the HOST opens its one record picker and writes the link
|
|
62
|
+
through its own reference door — new optional port `RecordsUiHost.linkRecord({ tableId,
|
|
63
|
+
recordId, name })` (`RecordActionHost.link`, `GridMenuActions.linkRow`). Reading the record is
|
|
64
|
+
enough to link to it. Unbound, the entry says "Not available here".
|
|
65
|
+
Guard: `one-record-action-list-every-card-menu-draws-the-same.test.tsx` (THE_ORDER).
|
|
66
|
+
|
|
67
|
+
Consumer action: bind `linkRecord` on `<RecordsUiProvider>` (matrx-frontend binds it in
|
|
68
|
+
`recordsUiHostFor`; a build before the port ignores the key).
|
|
69
|
+
## 0.95.5
|
|
70
|
+
|
|
71
|
+
Automatic changed-only republish (docs/metadata drift since the last tag — see
|
|
72
|
+
`git diff npm/records-ui/v0.95.4..npm/records-ui/v0.95.5 -- apps/shared/records-ui`).
|
|
73
|
+
No source changes intended and no consumer action required.
|
|
74
|
+
|
|
75
|
+
## 0.95.4
|
|
76
|
+
### (VISION-REACH lane 5 — an import never drops a row quietly)
|
|
77
|
+
|
|
78
|
+
- **Rows that share a name are combined, by default, before the write** (`ImportWizard`, persona
|
|
79
|
+
P03's families file: one row per student). The panel says "Family repeats: 140 names on 173
|
|
80
|
+
rows", opens on *are one record; other columns keep every value* when another column pins the
|
|
81
|
+
rows to one record (`sameRecordLikely`), lists the columns that became lists, and sets "Same row
|
|
82
|
+
means the same" to the name column. Every other column keeps every distinct value ("Zoe; Max");
|
|
83
|
+
a few-words column that became a list is made as Text, never a dropdown. `combineRows`,
|
|
84
|
+
`titleRepeats`, `sameRecordLikely` are exported (`importCombine`).
|
|
85
|
+
- **The name column is never a date or a number.** `obviousTitleColumn` skips columns whose values
|
|
86
|
+
are mostly numbers, read as dates or are blank on most rows, and when the only column of words
|
|
87
|
+
points at another table (a pledge's Family) it names the record AND keeps the link: the rows
|
|
88
|
+
carry the words a second time under `TITLE_COPY` (`__name__`), mapped to the title column.
|
|
89
|
+
- **The relation ask runs for a relation column the import is about to make** ("Create and
|
|
90
|
+
import"), not only for one the table already has — and its ambiguous choice gains *combine the
|
|
91
|
+
duplicates in <table>* (`client.migrateMerge`, then the names are read again).
|
|
92
|
+
- **Refusals are loud and persistent.** After the write: "43 of 220 rows were not added." with the
|
|
93
|
+
reasons grouped (`groupReasons`) and *Download the rows not added* (`refusedRowsCsv`). The table
|
|
94
|
+
page mounts `ImportNotice` above the data: the newest finished run that refused rows, the same
|
|
95
|
+
grouping and file, *Open import*, and *Dismiss* (this viewer's, kept in the browser). Exported:
|
|
96
|
+
`ImportNotice`, `runToNotice`, `groupReasons`, `refusedRowsCsv`, `refusedFileName`.
|
|
97
|
+
Guards: `an-import-never-doubles-a-family-or-drops-its-pledges.test.tsx`,
|
|
98
|
+
`a-table-says-its-last-import-left-rows-out.test.tsx`, `import-refusals-and-combine.test.tsx`.
|
|
99
|
+
|
|
100
|
+
Consumer action: none (TablePage carries the notice). Hosts mounting `ImportWizard` alone may mount
|
|
101
|
+
`ImportNotice` beside their table.
|
|
102
|
+
|
|
103
|
+
### (wave 5)
|
|
104
|
+
|
|
105
|
+
- Structural verbs a person can reach (TABLE-ACTIONS wave 5, item 24):
|
|
106
|
+
- A record's menu carries **Merge with…** (`recordActions`, id `merge`, icon `git-merge`, after
|
|
107
|
+
Duplicate; needs write). `MergeRecordDialog` picks another record of the table, says what will
|
|
108
|
+
happen, merges into the record the menu was opened on (`client.migrateMerge`) and announces it
|
|
109
|
+
through `notify.reversible` (verb `merge`) with Undo (`client.migrateUndo`). Cards' ⋯ and
|
|
110
|
+
right-click open it; the grid's row right-click has it too (`row-merge`).
|
|
111
|
+
- A column's header menu carries **Change type…** (`col-retype`), opening the column's
|
|
112
|
+
`FieldRetype` in a dialog. A change made through `migrate_retype` is announced with Undo (verb
|
|
113
|
+
`change`), which puts its Migration back.
|
|
114
|
+
Guards: `two-records-merge-into-the-one-you-opened.test.tsx`,
|
|
115
|
+
`a-column-changes-type-and-a-row-merges-from-their-menus.test.tsx`, the Undo case in
|
|
116
|
+
`the-field-panel-changes-what-a-column-holds.test.tsx`.
|
|
117
|
+
|
|
118
|
+
Consumer action: a renderer that maps `ObjectActionIcon` exhaustively maps `git-merge`.
|
|
119
|
+
|
|
3
120
|
## 0.95.3
|
|
4
121
|
|
|
122
|
+
- Table chord labels speak the platform's words through the design system's `formatShortcut`:
|
|
123
|
+
"⌥⇧S" on a Mac, "Alt+Shift+S" on Windows and Linux (Archive: "⌥⇧Backspace" / "Alt+Shift+Backspace").
|
|
124
|
+
`TABLE_ACTION_CHORDS` holds the chord specs; `TABLE_ACTION_KEYS` the labels. Consumer action: none.
|
|
125
|
+
|
|
5
126
|
Automatic changed-only republish (docs/metadata drift since the last tag — see
|
|
6
127
|
`git diff npm/records-ui/v0.95.2..npm/records-ui/v0.95.3 -- apps/shared/records-ui`).
|
|
7
128
|
No source changes intended and no consumer action required.
|
|
@@ -20,6 +141,12 @@ No source changes intended and no consumer action required.
|
|
|
20
141
|
|
|
21
142
|
## Unreleased
|
|
22
143
|
|
|
144
|
+
- Speed (T5.3 / PROOF-BOOK 1.18): a merged-grid open asks the store 11 times in the clinic bench
|
|
145
|
+
(was 16): the table's own version is read only when a write needs it (two controls each read it on
|
|
146
|
+
every open: 2 × `record_headers` + 2 × `io_revisions`), and the colours are not read again when
|
|
147
|
+
the Field list first arrives. A cell write on a LIVE page no longer re-reads the whole page — its
|
|
148
|
+
realtime notice re-reads the written row. Guard: `a-table-load-asks-the-store-within-its-budget.test.tsx`.
|
|
149
|
+
- One undo stack (PROOF-BOOK 1.5): a record added from the grid is an undo step (Undo archives it).
|
|
23
150
|
- `QuestionPanel`: a date column's groups read as the grid prints the date (Sep 28, 2026, never the
|
|
24
151
|
stored 2026-09-28; the key stays on the row's `data-group`), and the Sort row wraps on a phone
|
|
25
152
|
instead of pushing "Show" onto two lines. Guard: `a-saved-question-opens-for-a-second-member.test.tsx`.
|