@ai-matrx/records-ui 0.51.0 → 0.52.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,50 @@
1
1
  # Changelog — @ai-matrx/records-ui
2
2
 
3
+ ## 0.52.0
4
+
5
+ **Four things this package could make and no screen could reach: a form, a
6
+ booking page, a client portal and a scheduled summary.**
7
+
8
+ The product walk of 2026-09-21 opened a real table filled with a real business's
9
+ records. The Forms, Bookings and Portals rails each said the same thing — *none
10
+ yet, ask an agent for one in a sentence* — and offered nothing else to press;
11
+ dashboards worked and nothing could schedule one. A person who did not know what
12
+ to say to an agent was finished. The agent path is the faster one; it was never
13
+ meant to be the only one.
14
+
15
+ * **`BuildOrAsk`** — the shared empty state every builder now uses. Two buttons,
16
+ one row, every rail identical, the agent named first because it is faster and
17
+ the builder beside it because it always works. "Ask an agent" is the host's new
18
+ `onAskForOne` port and is **absent, never greyed**, when a host has not bound
19
+ it — only a server can honestly speak as an agent.
20
+ * **Forms** — `FormBuilder` opens in place in the Forms rail. It has written the
21
+ same `custom.anon_form` row through the same `custom.form_declare` door since
22
+ 0.33.0 and was reachable from nowhere.
23
+ * **`BookingBuilder`** — Calendly's four decisions: how long an appointment is,
24
+ which hours of the week you are free, the gap kept between them, and what the
25
+ person sees after booking. It declares through `custom.booking_declare` and
26
+ shows the availability the STORE normalised, so the builder and the visitor's
27
+ picker cannot hold two ideas of what is free. `slot`, `status` and
28
+ `booked_with` are never offered — the door refuses a question naming any of
29
+ the three, and an always-refused control is a dead control.
30
+ * **`PortalBuilder`** — four questions, and the second is the product: which
31
+ Table holds the clients, which Field on each exposed Table NAMES one of them,
32
+ what they may read, and separately what they may change. A Table with no
33
+ relation pointing at the client Table gets no field picker at all and the
34
+ remedy is named, because "only theirs" has to be answerable before anything is
35
+ published. Re-stating replaces what a portal shows and the screen says so
36
+ above Save; the invitation is a separate act and the door's own sentence is
37
+ shown verbatim, so "invited" is never read as "signed in".
38
+ * **`DigestScheduler`** — "send this every Monday at 8 to these people", mounted
39
+ on the dashboard and in the notifications rail. It saves the thing in front of
40
+ the person as a view (`custom.view_declare`) and writes the subscription over
41
+ it (`custom.subscription_declare`). No new cron and no second notifier: the one
42
+ pg_cron tick and `communication.notification` do the work. "These people" is
43
+ one subscription each, deliberately — admission is tested as the SUBSCRIBER, so
44
+ three recipients is three tests and three summaries, each holding only what
45
+ that person may see — and the per-person outcome is shown, so a partial success
46
+ is never reported as a whole one.
47
+
3
48
  ## 0.51.0
4
49
 
5
50
  **Paste fifty rows out of a spreadsheet, see what they will become, and only