@ai-matrx/records-ui 0.83.1 → 0.84.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 +46 -0
- package/dist/index.cjs +1 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +24 -2
- package/dist/index.d.ts +24 -2
- package/dist/index.js +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,51 @@
|
|
|
1
1
|
# Changelog — @ai-matrx/records-ui
|
|
2
2
|
|
|
3
|
+
## 0.84.0
|
|
4
|
+
|
|
5
|
+
**A refusal is said once, with the doors that fit it, and a change a person made is kept or
|
|
6
|
+
said — never dropped.** (lane RECORDS-UI-FIX, VERIFIER-15 H2, H3, M3, M4, M6, M7.)
|
|
7
|
+
|
|
8
|
+
* **The grid's cell refusal is the one notice.** A rule refusal (`-3` in a column "at least
|
|
9
|
+
0") used to draw a small red line with *Try again* (which re-sent the refused value) and
|
|
10
|
+
*Keep theirs* (conflict wording when nobody else wrote). It is now `RefusalNotice` with
|
|
11
|
+
**Keep editing** — the cell reopens holding `-3`, the reason still beside it — and
|
|
12
|
+
**Discard**. *Try again* / *Keep theirs* appear only on a real version conflict, beside
|
|
13
|
+
the other person's value. A tick box's refusal carries Discard.
|
|
14
|
+
* **The record form says a refusal once, with Keep editing / Discard, and before Save.** The
|
|
15
|
+
mirror's per-column notice is the store's rule, so the store's copy under the form is no
|
|
16
|
+
longer drawn beside it; the mirror speaks the moment a changed column would be refused.
|
|
17
|
+
What was typed survives the (slower) version read landing late. An edit sends only the
|
|
18
|
+
columns the person changed, and a Save with nothing changed writes nothing.
|
|
19
|
+
* **A board's layout or grouping change is kept, or said.** Every view save carried a version
|
|
20
|
+
read from the view's history, which can stop short of the record, so every Kanban / Group
|
|
21
|
+
by press was refused `stale_write` and dropped in silence. New `saveViewPatch` (the one
|
|
22
|
+
view-save door) writes on the version the refusal names; a save still refused is said
|
|
23
|
+
through `RefusalNotice` with Try again / Discard.
|
|
24
|
+
* **"Someone else wrote first" only when somebody did.** The store's `contested_fields`
|
|
25
|
+
carries each patched column's current value; when every one is still what the screen
|
|
26
|
+
started from, the write goes once more on the winning version (the grid cell session, the
|
|
27
|
+
record form and saved views apply the same rule — internal `updateOnTheWinningVersion`).
|
|
28
|
+
* **The next digest summary is never in the past.** New export `nextSummaryAt(subscription,
|
|
29
|
+
now)` carries a passed due time forward by whole periods to the first slot after now,
|
|
30
|
+
keeping the store's alignment (tested at a fixed clock).
|
|
31
|
+
* **Table Settings never cuts a field name to two letters** — the name wraps with a readable
|
|
32
|
+
minimum and the row wraps its controls first.
|
|
33
|
+
* **On a phone the table's rail is a sheet over the table** — below the design system's
|
|
34
|
+
breakpoint (`useIsMobile`, 768px) it renders through the canonical `BottomSheet`, the way
|
|
35
|
+
`Dialog` and `CommandDialog` already do; dragging it down closes the rail.
|
|
36
|
+
* Tests (each shown failing on the prior bytes): `src/a-refused-cell-keeps-what-you-typed`,
|
|
37
|
+
`src/a-form-refusal-is-said-once-with-its-doors`, `src/a-board-layout-change-is-kept`,
|
|
38
|
+
`src/the-next-summary-is-never-in-the-past`, `src/a-rail-on-a-phone-is-a-sheet`, and a
|
|
39
|
+
new clause in `src/TableSettings.hooks.test`.
|
|
40
|
+
|
|
41
|
+
**Store-side, reported to the chair (not in this package):** `custom.record_update` of an
|
|
42
|
+
unchanged value moves `version` and writes no history row (reproduced on the dev clone), and
|
|
43
|
+
the digest runner computes the next slot from the last summary SENT, so an empty window
|
|
44
|
+
freezes it.
|
|
45
|
+
|
|
46
|
+
**Consumer action (matrx-frontend):** none required — install picks it up. A host that
|
|
47
|
+
shows a digest's next time outside `SubscriptionsPanel` should use `nextSummaryAt`.
|
|
48
|
+
|
|
3
49
|
## 0.83.1
|
|
4
50
|
|
|
5
51
|
**A table shared by link is in the World lane, not Community.** (lane HUB-FIX, chair ruling
|
package/dist/index.cjs
CHANGED
|
@@ -256,6 +256,7 @@ __export(src_exports, {
|
|
|
256
256
|
mayNotRestoreLine: () => mayNotRestoreLine,
|
|
257
257
|
memberName: () => memberName,
|
|
258
258
|
nextInWords: () => nextInWords,
|
|
259
|
+
nextSummaryAt: () => nextSummaryAt,
|
|
259
260
|
openingRail: () => openingRail,
|
|
260
261
|
openingView: () => openingView,
|
|
261
262
|
pageViewFromParam: () => pageViewFromParam,
|