@ai-matrx/records-ui 0.75.0 → 0.77.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 +63 -0
- package/dist/index.cjs +2156 -1824
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +50 -1
- package/dist/index.d.ts +50 -1
- package/dist/index.js +2078 -1739
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,68 @@
|
|
|
1
1
|
# Changelog — @ai-matrx/records-ui
|
|
2
2
|
|
|
3
|
+
## 0.77.0
|
|
4
|
+
|
|
5
|
+
**A publish button that would hand out a dead link is not drawn.** (lane STORE-OFF, from
|
|
6
|
+
FIX-10A's own "left behind, named".)
|
|
7
|
+
|
|
8
|
+
Of the seventeen published forms live on the main database on 2026-09-22, three belonged to
|
|
9
|
+
ONE organization whose record store is switched off — and `custom.form_public` answered every
|
|
10
|
+
one of them with nothing, which the public route turned into a 404. Their owner pressed
|
|
11
|
+
Publish here, was handed a URL, and sent it to her customers.
|
|
12
|
+
|
|
13
|
+
The STORE always said no: `custom.anon_publish` opens with `custom.assert_store_door`, which
|
|
14
|
+
refuses 42501 while the switch is down. What was missing was the SCREEN. `usePublishGate`
|
|
15
|
+
(new, exported) asks `custom.store_is_open` once per mount, and the forms rail, the form
|
|
16
|
+
builder and the booking builder all read it — so one switch cannot be described three ways.
|
|
17
|
+
The control is ABSENT, never greyed, and `PUBLISH_NEEDS_THE_STORE_ON` says where the switch
|
|
18
|
+
is and that nothing already built is lost.
|
|
19
|
+
|
|
20
|
+
An unreadable switch is deliberately NOT treated as a closed one here — the opposite of the
|
|
21
|
+
store's own rule, for the opposite reason: on a screen the cost of guessing wrong is hiding a
|
|
22
|
+
button from somebody who may press it, so only a definite `false` removes anything and the
|
|
23
|
+
door still refuses.
|
|
24
|
+
|
|
25
|
+
Guard: `src/a-publish-control-needs-the-store-on.test.tsx`, shown RED (1 of 2 clauses) on the
|
|
26
|
+
bytes before this change and GREEN after.
|
|
27
|
+
|
|
28
|
+
**Consumer action:** none — no API changed. `usePublishGate` and
|
|
29
|
+
`PUBLISH_NEEDS_THE_STORE_ON` are available to a host that wants the same gate on its own
|
|
30
|
+
publish surface.
|
|
31
|
+
|
|
32
|
+
## 0.76.0
|
|
33
|
+
|
|
34
|
+
**An archived portal was reachable from nowhere.** (lane PUBLISH-SWEEP, closing ORG-CLEANUP's
|
|
35
|
+
own "left behind, named".)
|
|
36
|
+
|
|
37
|
+
* The store grew `custom.portal_archive`, `custom.portal_restore` and the archive-aware
|
|
38
|
+
`custom.list_portals`, and nine of Rincon Plumbing Co's ten identical "Your jobs and
|
|
39
|
+
invoices" portals were archived through them from a script. No screen could do any of it:
|
|
40
|
+
the Portals rail reads `custom.portals`, which hides archived portals by design — so those
|
|
41
|
+
nine vanished from every client in the platform, with no way to see one, no way to bring one
|
|
42
|
+
back, and no way to archive the tenth when somebody made another mess. The same shape
|
|
43
|
+
`ArchivedView` closed for records, one surface later.
|
|
44
|
+
* `ArchivedDisclosure` (new, exported) is the archived-items law's ONE CLICK, written once so
|
|
45
|
+
any rail that grows an archive reveals it with the same control and the same words:
|
|
46
|
+
the default hides, one press on the surface itself reveals, and an empty archive is a
|
|
47
|
+
sentence rather than a blank.
|
|
48
|
+
* `ArchivedPortals` (new, exported) reads `list_portals(org, 'archived')` — the archive-aware
|
|
49
|
+
door, never a filter over a list that already hid them — and restores through the store's own
|
|
50
|
+
door with the portal's title typed back. It is organization-wide on purpose: a portal is
|
|
51
|
+
archived because nobody is standing on it, and narrowing the archive to the Table you happen
|
|
52
|
+
to be on is how an archived portal becomes unreachable from every page at once.
|
|
53
|
+
* `PortalsPanel` grows both halves: Archive on a live portal, with the consequence said in the
|
|
54
|
+
words of what actually happens before the click and the store's own sentence after it, and
|
|
55
|
+
the archive below the list, re-read whenever the rail changed something or somebody reveals
|
|
56
|
+
it.
|
|
57
|
+
|
|
58
|
+
Guard: `src/an-archived-portal-can-come-back.test.tsx` (Meridian Tax & Bookkeeping's three
|
|
59
|
+
identical client portals), shown RED on the rail wiring removed and the archive lane wrong,
|
|
60
|
+
then GREEN.
|
|
61
|
+
|
|
62
|
+
**The import wizard adds the columns as its own step.** (lane IMPORT-2.)
|
|
63
|
+
|
|
64
|
+
**Consumer action:** none — everything here is additive.
|
|
65
|
+
|
|
3
66
|
## 0.75.0
|
|
4
67
|
|
|
5
68
|
**0.74.0 was tagged and never reached npm** — its release gate failed on
|