@ai-matrx/records-ui 0.85.8 → 0.85.9
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 +37 -0
- package/dist/index.cjs +17 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +17 -11
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,42 @@
|
|
|
1
1
|
# Changelog — @ai-matrx/records-ui
|
|
2
2
|
|
|
3
|
+
## 0.85.9
|
|
4
|
+
|
|
5
|
+
Automatic changed-only republish (docs/metadata drift since the last tag — see
|
|
6
|
+
`git diff npm/records-ui/v0.85.7..npm/records-ui/v0.85.9 -- apps/shared/records-ui`).
|
|
7
|
+
No source changes intended and no consumer action required.
|
|
8
|
+
|
|
9
|
+
## Unreleased
|
|
10
|
+
|
|
11
|
+
### Lane MOVE-AND-OUTSIDER (2026-09-24)
|
|
12
|
+
|
|
13
|
+
* **A refused move stays on the confirm and says why, with the store's remedy.** `WhereItLives`
|
|
14
|
+
dropped the confirm on a refusal and drew only the message, then re-read the table (the panel
|
|
15
|
+
flipped to "Asking…"); the store's hint was never shown, and on production the panel closed with
|
|
16
|
+
nothing on the screen (VERIFIER-19 #1). Now the refusal is drawn inside the confirm as
|
|
17
|
+
"Nothing moved. <the store's sentence> <its hint>", the button reads **Try again**, **Cancel**
|
|
18
|
+
goes back to the list and re-reads, and a focus shift outside the panel (a toast, the error pill)
|
|
19
|
+
never closes it — only the person does. The success answer is unchanged. Suite
|
|
20
|
+
`a-refused-move-keeps-the-panel-open.test.tsx`: RED on the prior bytes (hint missing, confirm
|
|
21
|
+
gone), GREEN. The store half (`custom.table_move` now finds or makes the destination's home) is
|
|
22
|
+
on production. **Consumer action:** none.
|
|
23
|
+
|
|
24
|
+
### Lane UI-FIX-19 (2026-09-24)
|
|
25
|
+
|
|
26
|
+
* **An inbox kind is a noun.** `WORK_INBOX_KIND_LABEL` (and `ActionInbox.KIND_WORD`) read
|
|
27
|
+
`Approve` / `Yours` / `Agent`; the bordered kind badge at the left of every row therefore read as
|
|
28
|
+
a live **Approve** control on each withdrawn and decided item (VERIFIER-19 #6 — the closed row
|
|
29
|
+
already drew no Approve button). Now `Approval` / `Assigned` / `Agent proposal`. Suite
|
|
30
|
+
`inbox-groups-and-closed-items.test.tsx` gains "no element that reads as a decision on a closed
|
|
31
|
+
item": RED on the prior bytes, GREEN 7/7. **Consumer action:** none, unless a host matched the
|
|
32
|
+
old words.
|
|
33
|
+
* **A dashboard save is judged by value.** `whatTheStoreDidNotKeep` compared canonical strings, so
|
|
34
|
+
a target the store kept and filled with its own defaults (`per: "period"`, `measure`) was
|
|
35
|
+
reported as "The store did not keep its target" right above *Target 150,000* (VERIFIER-19 #7).
|
|
36
|
+
Every key that was SENT must be held at the same value; a key the store added is not a loss; a
|
|
37
|
+
setting removed must be held as nothing. Suite `a-dashboard-save-says-what-the-store-did-not-keep`:
|
|
38
|
+
RED 1 on the prior bytes, GREEN 7/7.
|
|
39
|
+
|
|
3
40
|
## 0.85.8
|
|
4
41
|
|
|
5
42
|
Automatic changed-only republish (docs/metadata drift since the last tag — see
|
package/dist/index.cjs
CHANGED
|
@@ -2535,9 +2535,9 @@ var DUE_STATE_LABEL = {
|
|
|
2535
2535
|
};
|
|
2536
2536
|
var WORK_INBOX_KINDS = exhaustiveValuesOf()(["assignment", "approval", "proposal"]);
|
|
2537
2537
|
var WORK_INBOX_KIND_LABEL = {
|
|
2538
|
-
assignment: "
|
|
2539
|
-
approval: "
|
|
2540
|
-
proposal: "Agent"
|
|
2538
|
+
assignment: "Assigned",
|
|
2539
|
+
approval: "Approval",
|
|
2540
|
+
proposal: "Agent proposal"
|
|
2541
2541
|
};
|
|
2542
2542
|
var WORK_INBOX_KIND_GROUP_LABEL = {
|
|
2543
2543
|
approval: "Approvals",
|
|
@@ -19236,14 +19236,20 @@ var COMPARE_LABEL = {
|
|
|
19236
19236
|
function compareKey(block, fields) {
|
|
19237
19237
|
return block.bucket?.key ?? block.compare?.key ?? offerableFields(onePerKey(fields), "date")[0]?.key ?? null;
|
|
19238
19238
|
}
|
|
19239
|
-
function
|
|
19240
|
-
|
|
19241
|
-
if (
|
|
19242
|
-
if (
|
|
19243
|
-
|
|
19244
|
-
return
|
|
19239
|
+
function holds(sent, stored) {
|
|
19240
|
+
const absent = (v) => v === void 0 || v === null;
|
|
19241
|
+
if (absent(sent)) return absent(stored);
|
|
19242
|
+
if (absent(stored)) return false;
|
|
19243
|
+
if (Array.isArray(sent)) {
|
|
19244
|
+
return Array.isArray(stored) && stored.length === sent.length && sent.every((v, i) => holds(v, stored[i]));
|
|
19245
19245
|
}
|
|
19246
|
-
|
|
19246
|
+
if (typeof sent === "object") {
|
|
19247
|
+
if (typeof stored !== "object" || Array.isArray(stored)) return false;
|
|
19248
|
+
return Object.entries(sent).every(
|
|
19249
|
+
([k, v]) => absent(v) || holds(v, stored[k])
|
|
19250
|
+
);
|
|
19251
|
+
}
|
|
19252
|
+
return Object.is(sent, stored);
|
|
19247
19253
|
}
|
|
19248
19254
|
var KEPT_SETTINGS = [
|
|
19249
19255
|
["kind", "its shape"],
|
|
@@ -19260,7 +19266,7 @@ function whatTheStoreDidNotKeep(sent, stored) {
|
|
|
19260
19266
|
lost.push(`\u201C${block.title}\u201D`);
|
|
19261
19267
|
return;
|
|
19262
19268
|
}
|
|
19263
|
-
const what = KEPT_SETTINGS.filter(([key]) =>
|
|
19269
|
+
const what = KEPT_SETTINGS.filter(([key]) => !holds(block[key], kept[key])).map(([, words]) => words);
|
|
19264
19270
|
if (what.length) lost.push(`${what.join(" and ")} for \u201C${block.title}\u201D`);
|
|
19265
19271
|
});
|
|
19266
19272
|
if (lost.length === 0) return null;
|