@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 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,