@ai-matrx/records 0.80.8 → 0.81.1

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,28 @@
1
1
  # Changelog — @ai-matrx/records
2
2
 
3
+ ## 0.81.1
4
+ ### lane SORT-REACTS
5
+
6
+ - A live page no longer patches a changed row in place when the change decides its place: `useRecordPage` / `useRecords` read the page again when a realtime notice or this page's own write changed a value the page is sorted by (the group key included), or any value on a filtered or searched page. A date edited to the top now moves to the top, and a row edited out of the filter leaves the page, without a reload. An edit that places nothing still patches in place and reads no page (`react/pageOrder.ts`).
7
+
8
+ **Consumer action:** none.
9
+
10
+ ## 0.81.0
11
+ ### SSR-ROWS: a page's first answers, asked on the server, drawn in the server's HTML
12
+
13
+ - NEW `/core`: `recordingDataSource(source)` — ask through it as the person, then `.seed()` is a `RecordsSeed` (`{ at, answers: [{ door, args, data }] }`): every door answer that came back, a bundle's (`table_page_bundle`, `record_page_bundle`) parts spread into answers of their own doors. Errors and refusing parts are never seeded. Also `seededDataSource`, `seedIndex`, `seedKey`; `canonicalArgs` is exported from the client.
14
+ - NEW `/react`: `<RecordsSeedProvider seed>` — under it every records hook runs its own door call against the seed in the FIRST pass (on the server, and while hydrating in the browser), suspending on that microtask-only run, so the answer is in the server's HTML and the browser hydrates onto the same answer and asks nothing. A hook whose call asks one door the seed does not hold is not seeded (loading in both passes, asked after hydration as before). The seed answers only until the provider's first commit; a seed older than `SEED_FRESH_MS` is drawn and re-asked. In the browser the seed's bundles are also primed (`primeTablePageBundle`), so effects after hydration open the table from them.
15
+ - NEW `/react`: `useSeededAnswer(key, run)` — the same, for a screen that holds a read in its own state: start from it, skip the first effect read.
16
+
17
+ **Consumer action:** none (additive). A server-rendering host: ask a seed as the person and mount `<RecordsSeedProvider>` above the screen.
18
+
19
+ ## 0.80.9
20
+ ### `@ai-matrx/records/templates` — the 20% governance quota is a gallery card's bar, not a one-off's
21
+
22
+ - `validateTemplate(spec, { profile: "describe" })` (and so `describeCheck`) no longer refuses a spec because fewer than 20% of its own fields are public, confidential or restricted. That quota teaches governance on a published gallery card and stays in the gallery bar; a person's one-off setup owes only the floor, which the describe autofix already raises (`sensitivityFloorOf`). The owner's /make "creator post tracker" answer (2026-10-08) was refused at "Only 2 of 27 fields say anything but internal"; it now passes the describe check with zero problems (`describe/governance-quota.test.ts`, real answer). "Every field says internal" is unchanged.
23
+
24
+ **Consumer action:** none.
25
+
3
26
  ## 0.80.8
4
27
 
5
28
  Automatic changed-only republish (docs/metadata drift since the last tag — see