@ai-matrx/records-ui 0.95.2 → 0.95.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,60 @@
1
1
  # Changelog — @ai-matrx/records-ui
2
2
 
3
+ ## 0.95.4
4
+ ### (VISION-REACH lane 5 — an import never drops a row quietly)
5
+
6
+ - **Rows that share a name are combined, by default, before the write** (`ImportWizard`, persona
7
+ P03's families file: one row per student). The panel says "Family repeats: 140 names on 173
8
+ rows", opens on *are one record; other columns keep every value* when another column pins the
9
+ rows to one record (`sameRecordLikely`), lists the columns that became lists, and sets "Same row
10
+ means the same" to the name column. Every other column keeps every distinct value ("Zoe; Max");
11
+ a few-words column that became a list is made as Text, never a dropdown. `combineRows`,
12
+ `titleRepeats`, `sameRecordLikely` are exported (`importCombine`).
13
+ - **The name column is never a date or a number.** `obviousTitleColumn` skips columns whose values
14
+ are mostly numbers, read as dates or are blank on most rows, and when the only column of words
15
+ points at another table (a pledge's Family) it names the record AND keeps the link: the rows
16
+ carry the words a second time under `TITLE_COPY` (`__name__`), mapped to the title column.
17
+ - **The relation ask runs for a relation column the import is about to make** ("Create and
18
+ import"), not only for one the table already has — and its ambiguous choice gains *combine the
19
+ duplicates in <table>* (`client.migrateMerge`, then the names are read again).
20
+ - **Refusals are loud and persistent.** After the write: "43 of 220 rows were not added." with the
21
+ reasons grouped (`groupReasons`) and *Download the rows not added* (`refusedRowsCsv`). The table
22
+ page mounts `ImportNotice` above the data: the newest finished run that refused rows, the same
23
+ grouping and file, *Open import*, and *Dismiss* (this viewer's, kept in the browser). Exported:
24
+ `ImportNotice`, `runToNotice`, `groupReasons`, `refusedRowsCsv`, `refusedFileName`.
25
+ Guards: `an-import-never-doubles-a-family-or-drops-its-pledges.test.tsx`,
26
+ `a-table-says-its-last-import-left-rows-out.test.tsx`, `import-refusals-and-combine.test.tsx`.
27
+
28
+ Consumer action: none (TablePage carries the notice). Hosts mounting `ImportWizard` alone may mount
29
+ `ImportNotice` beside their table.
30
+
31
+ ### (wave 5)
32
+
33
+ - Structural verbs a person can reach (TABLE-ACTIONS wave 5, item 24):
34
+ - A record's menu carries **Merge with…** (`recordActions`, id `merge`, icon `git-merge`, after
35
+ Duplicate; needs write). `MergeRecordDialog` picks another record of the table, says what will
36
+ happen, merges into the record the menu was opened on (`client.migrateMerge`) and announces it
37
+ through `notify.reversible` (verb `merge`) with Undo (`client.migrateUndo`). Cards' ⋯ and
38
+ right-click open it; the grid's row right-click has it too (`row-merge`).
39
+ - A column's header menu carries **Change type…** (`col-retype`), opening the column's
40
+ `FieldRetype` in a dialog. A change made through `migrate_retype` is announced with Undo (verb
41
+ `change`), which puts its Migration back.
42
+ Guards: `two-records-merge-into-the-one-you-opened.test.tsx`,
43
+ `a-column-changes-type-and-a-row-merges-from-their-menus.test.tsx`, the Undo case in
44
+ `the-field-panel-changes-what-a-column-holds.test.tsx`.
45
+
46
+ Consumer action: a renderer that maps `ObjectActionIcon` exhaustively maps `git-merge`.
47
+
48
+ ## 0.95.3
49
+
50
+ - Table chord labels speak the platform's words through the design system's `formatShortcut`:
51
+ "⌥⇧S" on a Mac, "Alt+Shift+S" on Windows and Linux (Archive: "⌥⇧Backspace" / "Alt+Shift+Backspace").
52
+ `TABLE_ACTION_CHORDS` holds the chord specs; `TABLE_ACTION_KEYS` the labels. Consumer action: none.
53
+
54
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
55
+ `git diff npm/records-ui/v0.95.2..npm/records-ui/v0.95.3 -- apps/shared/records-ui`).
56
+ No source changes intended and no consumer action required.
57
+
3
58
  ## 0.95.2
4
59
 
5
60
  - Table chords (TABLE-ACTIONS wave 4): `TABLE_ACTION_KEYS` gives the core verbs ⌥⇧ + a key (Share S,
@@ -14,6 +69,15 @@
14
69
 
15
70
  ## Unreleased
16
71
 
72
+ - Speed (T5.3 / PROOF-BOOK 1.18): a merged-grid open asks the store 11 times in the clinic bench
73
+ (was 16): the table's own version is read only when a write needs it (two controls each read it on
74
+ every open: 2 × `record_headers` + 2 × `io_revisions`), and the colours are not read again when
75
+ the Field list first arrives. A cell write on a LIVE page no longer re-reads the whole page — its
76
+ realtime notice re-reads the written row. Guard: `a-table-load-asks-the-store-within-its-budget.test.tsx`.
77
+ - One undo stack (PROOF-BOOK 1.5): a record added from the grid is an undo step (Undo archives it).
78
+ - `QuestionPanel`: a date column's groups read as the grid prints the date (Sep 28, 2026, never the
79
+ stored 2026-09-28; the key stays on the row's `data-group`), and the Sort row wraps on a phone
80
+ instead of pushing "Show" onto two lines. Guard: `a-saved-question-opens-for-a-second-member.test.tsx`.
17
81
  - `RecordPanel`: one record whole (form, history, the host's sections, checklists, comments) — the
18
82
  table rail draws it, and so does a host's record page. With `hrefForRecord` bound, the record
19
83
  menu's Open, Open in new tab and Copy link go to that page.