@ai-matrx/records-ui 0.4.3 → 0.6.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,126 @@
1
1
  # Changelog — @ai-matrx/records-ui
2
2
 
3
+ ## 0.6.0
4
+
5
+ Editing where the value is shown, and four other things an independent walk of
6
+ the real screens (19 September) found a person could not do.
7
+
8
+ - **`Grid` edits in place** (`src/gridEditing.tsx`). Click a cell, or focus it
9
+ and press Enter, and the Field's own editor opens there; Enter saves, Escape
10
+ cancels, Tab saves and opens the next cell. The write goes through the one
11
+ write door carrying the version the person started from, so the STORE decides
12
+ whether somebody else got there first — and on `PT409` the cell shows the
13
+ other person's value with Try again and Keep theirs beside it. Optimistic,
14
+ and the value comes back off the screen the moment the store refuses.
15
+ - **Rows can be added and deleted from the grid.** "New record" writes an empty
16
+ record and opens its first cell; a Table with a required Field refuses in its
17
+ own words and the grid offers the whole form by name. Delete names the
18
+ consequence and the Table's own restore window before it happens.
19
+ - **`PersonPicker`** (new) and the **`members` port** on `RecordsUiProvider`. A
20
+ person field offers the organization's members and resolves whoever is picked
21
+ to their record in the kernel Person Table. It no longer offers the Homes
22
+ that also live in that Table.
23
+ - **Kanban and calendar carry the picker their sentence always promised.** The
24
+ group-by Field and the date Field are chosen on the board and saved onto the
25
+ view record (`onViewChange` → `viewPatchDocument`), so the choice is
26
+ remembered per saved view. `ViewBar`'s duplicate layout `select` is gone: the
27
+ switcher owns the layout, and the two controls can no longer disagree.
28
+ - **`TablePage` says when a table is not reachable** (`TABLE_NOT_REACHABLE`)
29
+ instead of rendering an endless skeleton, and takes `onLeave` for the way out.
30
+ - **Names, never tokens** (`src/names.ts`). Field headers, table cards, record
31
+ chips and type words all read as a person writes them; the app's own
32
+ bookkeeping Tables get their own lane in `TablesHome` ("Kept by the app")
33
+ instead of sitting among a person's data under their slug.
34
+ - A `json` parity editor, and honest empty states for a choice field whose
35
+ options Table is empty versus one that names no Table at all.
36
+
37
+ ### Consumer action
38
+
39
+ `RecordsUiHost.members` is OPTIONAL: unbound, a person field is absent with
40
+ `NO_MEMBERS_REASON` rather than offering the wrong things. Bind it to your
41
+ host's organization roster to get the picker. `Grid` takes `editable` (default
42
+ true) — pass `false` on a read-only surface. `TableLane` gained `"app"`, so an
43
+ exhaustive switch over it needs the new arm.
44
+
45
+ ## 0.5.4
46
+
47
+ Makes the live FormBuilder certification wait for the editor state that follows
48
+ the saved-form tab, instead of asserting synchronously between the two React
49
+ effects.
50
+
51
+ ### Consumer action
52
+
53
+ None. This changes only the live certification harness.
54
+
55
+ ## 0.5.3
56
+
57
+ Makes the certification harness's raw record selector hide soft-deleted rows
58
+ by default, matching the active-record behavior of the store's public read
59
+ doors. An explicit `deleted_at` filter still allows a test to inspect
60
+ tombstones intentionally.
61
+
62
+ ### Consumer action
63
+
64
+ None. This changes only the live certification harness.
65
+
66
+ ## 0.5.2
67
+
68
+ Resets records inside the test organization's harness-owned `records_ui_*`
69
+ package Tables through the real delete door when certification starts. A view,
70
+ form, or action edited by an earlier run can no longer override the next run's
71
+ declared seed while product behavior continues to preserve real user edits.
72
+
73
+ ### Consumer action
74
+
75
+ None. This changes only the live certification harness.
76
+
77
+ ## 0.5.1
78
+
79
+ Builds the 0.5.0 system-table reconciliation against the refreshed 240-door
80
+ `@ai-matrx/records` contract after the dependency's live release guard caught
81
+ two newly registered store doors.
82
+
83
+ ### Consumer action
84
+
85
+ None. The public API is unchanged.
86
+
87
+ ## 0.5.0
88
+
89
+ **A package Table that changed SHAPE under an organization that already had a
90
+ copy.** `ActionInbox` could not record an outcome in one organization: its copy
91
+ of `records_ui_action` held `status` as a uuid-shaped Field while this package
92
+ declares it `text`, so every outcome write was refused `22P02 invalid input
93
+ syntax for type uuid: "open"`. The store was right; this package was the one out
94
+ of date. `ensureSystemTable` reconciled a MISSING Field on every load and never
95
+ looked at a Field it already had, so the organization that got its copy first
96
+ was the one where the package quietly stopped working.
97
+
98
+ Reconciliation is now two questions, not one — which Fields are missing, and
99
+ which are there with the wrong shape. Shape means exactly the two properties
100
+ that decide what a value is MADE OF, and therefore what the store will accept:
101
+ the behaviour (FLD-1) and whether it is multi (FLD-2). Label, sort, required and
102
+ config are deliberately left alone — they are presentation and policy, an
103
+ organization may legitimately have moved them, and none of them can make a write
104
+ fail. Nothing is ever renamed or removed.
105
+
106
+ Also fixed alongside it: a refusal from the FIRST declaration of a package Table
107
+ was both returned as this package's never-throw envelope and left as an
108
+ unhandled promise rejection, so a refusal that had in fact been reported
109
+ properly also produced a red console (and, under a test runner, a failed run).
110
+
111
+ Proved against the LIVE store in `demo/system-table-shape.test.tsx`: the Table
112
+ is declared with the old behaviour, the module is reloaded — which is what a
113
+ page load is, and the only way an organization ever meets a newer package — and
114
+ the new spec is ensured over it. RED without the fix: `expected 'range' to be
115
+ 'text'`.
116
+
117
+ ### Consumer action
118
+
119
+ None. The public API is unchanged, and the reconciliation is automatic on the
120
+ next load of any screen that opens a package-owned Table. An organization whose
121
+ copy drifted is levelled the first time a person opens that screen — there is
122
+ nothing to run and nothing to migrate.
123
+
3
124
  ## 0.4.3
4
125
 
5
126
  Resets the harness-owned demo table through the store's real read and delete