@ai-matrx/records-ui 0.85.8 → 0.85.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 CHANGED
@@ -1,5 +1,90 @@
1
1
  # Changelog — @ai-matrx/records-ui
2
2
 
3
+ ## Unreleased
4
+
5
+ ### Lane GRID-MANUAL (2026-09-25) — a hand-set order is the grid's sort
6
+
7
+ * **The Grid draws a hand-ordered view in its hand order, and says so.** The store's ORDER-FIX rule
8
+ (live): a saved view is ordered by its sort OR by hand, never both. A view whose definition says
9
+ `order: "manual"` is now read through the order door (`custom.read_records_in_view_order`, paged;
10
+ with a filter, the store's filtered page is put in the door's positions), opens with no column
11
+ sort, and the toolbar reads **"Sort: Manual · set by hand"** — the Sheet's words. A column sort
12
+ over it reads **"Sorted by X ↑ · hand-set order set aside"** with **Back to manual** and, where
13
+ the host can write the view, **Use this sort instead** (a `view_declare` with `sorts`, which the
14
+ store takes as turning the hand order off; the notice says the sort replaced it).
15
+ * **Reorder writes nothing until Save.** A Reorder dialog (drag, or Up/Down per row) starts in the
16
+ order on screen and says what Save replaces; Save is ONE `custom.view_record_order_set` with the
17
+ whole list. No `view_declare`.
18
+ * **The board, calendar and gallery** read a hand-ordered view through the same door, so a kanban
19
+ column lists its cards in the hand order; the membership line adds "Sort: Manual — the cards are
20
+ in the order set by hand."
21
+ * A sorted view now OPENS in its own `sorts` (first clause) over the table's `default_sort`.
22
+ * The Grid holds its table query (`controlled-local`) so it can see the person's column sort;
23
+ filtering, search and sort still run locally exactly as before.
24
+ * New API: `GridProps.viewOrder` (`GridViewOrder`), `ViewSwitcherProps.viewId` / `onOrderPlaced`,
25
+ `SavedViewSpec.order` (read-only; never written by a patch), `viewOrderOf`. `TablePage` wires them.
26
+ Suite `a-hand-set-order-is-the-grids-sort.test.tsx`: RED 7/13 on the 0.85.10 Grid/ViewSwitcher,
27
+ GREEN 13/13. **Consumer action:** none; with this published and installed, a hand-ordered view no
28
+ longer needs to open as the Sheet.
29
+
30
+ ## 0.85.10 (2026-09-25 — published by PUBLISH-SWEEP-5)
31
+
32
+ **Needs `@ai-matrx/records` 0.58.8** (`TableHomeDestination.slug`). Carries UI-FIX-19's move-destination
33
+ address (`461302fbf7`), the lane-tag filter in `hintForAPerson` (`1fd6f9a527`) and the move confirmation
34
+ through the host's notify (`7b7936fb27`).
35
+
36
+ ### Lane MOVE-AND-OUTSIDER (2026-09-24)
37
+
38
+ * **A refused move stays on the confirm and says why, with the store's remedy.** `WhereItLives`
39
+ dropped the confirm on a refusal and drew only the message, then re-read the table (the panel
40
+ flipped to "Asking…"); the store's hint was never shown, and on production the panel closed with
41
+ nothing on the screen (VERIFIER-19 #1). Now the refusal is drawn inside the confirm as
42
+ "Nothing moved. <the store's sentence> <its hint>", the button reads **Try again**, **Cancel**
43
+ goes back to the list and re-reads, and a focus shift outside the panel (a toast, the error pill)
44
+ never closes it — only the person does. The success answer is unchanged. Suite
45
+ `a-refused-move-keeps-the-panel-open.test.tsx`: RED on the prior bytes (hint missing, confirm
46
+ gone), GREEN. The store half (`custom.table_move` now finds or makes the destination's home) is
47
+ on production. **Consumer action:** none.
48
+
49
+ ### Lane UI-FIX-19 (2026-09-24)
50
+
51
+ * **A landed move is said even when the host re-reads.** `WhereItLives` says "… now lives in …"
52
+ through the host's `notify` when it is bound (and only there — one home per sentence), because
53
+ a host's `onMoved` re-read re-mounts an object page's header and the chip's own sentence died
54
+ unread (MOVE-AND-OUTSIDER). Unbound, it is said in the panel as before. `Grid`'s duplicate
55
+ refusal is no longer ALSO toasted beside its inline sentence. Suite
56
+ `a-landed-move-is-said-after-the-host-rereads.test.tsx`: RED on the prior bytes, GREEN.
57
+ **Consumer action:** bind `notify` on the mount that hosts the chip.
58
+ * **A build lane's tag is never shown to a person.** `MACHINE_IDENTITY` gains the lane-tag shape
59
+ (capital words joined by hyphens, then a colon — `STORE-TAILS-3:`), so `hintForAPerson` drops a
60
+ store hint written for an engineer; the refused "Bring it back" drew "STORE-TAILS-3: a restore
61
+ brings back…" to the Birchwood owner. Suite `a-lane-tag-is-never-shown-to-a-person.test.tsx`:
62
+ RED 2/7 on the prior bytes, GREEN 7/7.
63
+ * **The move list tells two organizations with one name apart.** `WhereItLives` draws a
64
+ destination's web address beside a name another destination also carries — in the list and in
65
+ "Move … to …?" — the way GitHub shows owner/name (VERIFIER-19 #9); exports `sharedNameAddress`.
66
+ Needs `@ai-matrx/records` with `TableHomeDestination.slug`. Suite
67
+ `two-organizations-with-one-name-are-told-apart.test.tsx`: RED on the prior bytes, GREEN.
68
+ * **An inbox kind is a noun.** `WORK_INBOX_KIND_LABEL` (and `ActionInbox.KIND_WORD`) read
69
+ `Approve` / `Yours` / `Agent`; the bordered kind badge at the left of every row therefore read as
70
+ a live **Approve** control on each withdrawn and decided item (VERIFIER-19 #6 — the closed row
71
+ already drew no Approve button). Now `Approval` / `Assigned` / `Agent proposal`. Suite
72
+ `inbox-groups-and-closed-items.test.tsx` gains "no element that reads as a decision on a closed
73
+ item": RED on the prior bytes, GREEN 7/7. **Consumer action:** none, unless a host matched the
74
+ old words.
75
+ * **A dashboard save is judged by value.** `whatTheStoreDidNotKeep` compared canonical strings, so
76
+ a target the store kept and filled with its own defaults (`per: "period"`, `measure`) was
77
+ reported as "The store did not keep its target" right above *Target 150,000* (VERIFIER-19 #7).
78
+ Every key that was SENT must be held at the same value; a key the store added is not a loss; a
79
+ setting removed must be held as nothing. Suite `a-dashboard-save-says-what-the-store-did-not-keep`:
80
+ RED 1 on the prior bytes, GREEN 7/7.
81
+
82
+ ## 0.85.9
83
+
84
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
85
+ `git diff npm/records-ui/v0.85.7..npm/records-ui/v0.85.9 -- apps/shared/records-ui`).
86
+ No source changes intended and no consumer action required.
87
+
3
88
  ## 0.85.8
4
89
 
5
90
  Automatic changed-only republish (docs/metadata drift since the last tag — see