@ai-matrx/records-ui 0.50.0 → 0.51.0

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,45 @@
1
1
  # Changelog — @ai-matrx/records-ui
2
2
 
3
+ ## 0.51.0
4
+
5
+ **Paste fifty rows out of a spreadsheet, see what they will become, and only
6
+ then write them.**
7
+
8
+ Real-data crew C, 2026-09-21, entering fifty US airports: *"No 'Paste' control
9
+ (bulk paste of a spreadsheet block) exists on the `/data-v2` grid toolbar —
10
+ only 'New record' (one blank row at a time) and per-cell double-click
11
+ editing"*. That is two hundred and fifty double-clicks for one ordinary
12
+ spreadsheet. The canonical grid has had Excel/Sheets TSV paste since lane
13
+ GRID-ONE; the store's own table never opted in.
14
+
15
+ It opts in now, with the three things a paste into a real store needs and a
16
+ spreadsheet's paste has none of:
17
+
18
+ * **Per-cell refusals in plain words, before the write.** Every clipboard
19
+ string is coerced the way that column's own editor coerces it — `$1,250.50`
20
+ is 1250.5 on a money column, `(75.00)` is −75, `TRUE`/`yes`/`N` are a tick
21
+ box — and what cannot be coerced is left alone and named: *"Callout fee holds
22
+ a number, and “waived” is not one."* A list, a person, a file or another
23
+ record is an identity rather than a word, so a pasted word into one of those
24
+ is refused with the control that does hold it. Then the row is put to
25
+ `predictValueRefusals`, the package's mirror of `custom.validate_values`, so
26
+ a required column left empty comes back in the STORE's sentence rather than
27
+ one this screen invented.
28
+ * **A preview.** The grid's new `onPastePlan` means the primitive applies
29
+ nothing: the person sees the values as they will be stored, how many records
30
+ change and how many are **created**, and every cell that will be left alone
31
+ with its reason — then presses the button themselves.
32
+ * **Success only after a read-back.** The writes go through the two doors the
33
+ grid already uses — `recordUpdate` for a row that exists, `recordWrite` for
34
+ one that does not — one call per row rather than per cell, and then the table
35
+ is READ AGAIN and the values counted. The door's yes is not the answer; that
36
+ confusion is what made "Add field" report success over a column that was not
37
+ there.
38
+
39
+ The rows past the last row become new records, which is the whole point: a
40
+ person filling a new table has three rows on screen and fifty lines on the
41
+ clipboard. Needs `@ai-matrx/design-system` 0.29.0.
42
+
3
43
  ## 0.50.0
4
44
 
5
45
  **Rules for entering this stage — the screen that writes a gate.**