@ai-matrx/records-ui 0.96.0 → 0.100.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,101 @@
1
1
  # Changelog — @ai-matrx/records-ui
2
2
 
3
+ ## 0.100.1
4
+ ### (ROW-TEMPLATES, 2026-10-04)
5
+
6
+ "From template" now reads the Table's templates when its menu opens (Notion's "New ▾"), so a
7
+ table's open asks the store nothing new — the load budget holds. With none it says how to make one.
8
+ 0.100.0 never published (its table open made a twelfth store call).
9
+
10
+ ## 0.100.0
11
+ ### (ROW-TEMPLATES, 2026-10-04)
12
+
13
+ **New from template.** The grid's toolbar shows "From template" beside "New record" when the Table
14
+ has row templates; picking one writes a row that starts with the template's values. A row's menu
15
+ offers "Save as template" (editor on the Table): it keeps the row's values minus its name and
16
+ worked-out columns. Needs `@ai-matrx/records` 0.69.0.
17
+
18
+ ## 0.99.0
19
+ ### (FINISH-THE-SWITCH FTS-2b, wave 6)
20
+
21
+ **RecordForm opens a standard row.** `<RecordForm token="entity:party" recordId columns={[...]} />` (or the bare token) reads the row through `custom.entity_record_read` and shows the host-named real columns, then the organization's custom fields (`CustomFieldsSection`, props via `custom`), in one form. Click a value to edit; Enter or blur saves that one column through `custom.entity_row_write` as the person (with the row's `version` as `expected_version`); Escape puts it back; empty reads "—"; a `required` column emptied is put back with a sentence. `tableId` is optional now (custom-table mode unchanged). New exports: `StandardRecordForm`, `standardTokenOf`, `StandardColumn`, `StandardRecordFormProps`.
22
+
23
+ ## 0.98.3
24
+
25
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
26
+ `git diff npm/records-ui/v0.96.0..npm/records-ui/v0.98.3 -- apps/shared/records-ui`).
27
+ No source changes intended and no consumer action required.
28
+
29
+ ## 0.98.2
30
+ ### (TABLE-EXPERIENCE item 4)
31
+
32
+ **Break down** (BREAK-DOWN): a "Break down…" entry in the table's one action list (group built-on) asks the store's own drill definition for the columns, lets the person pick one with the design-system Select, and keeps the view grouped by it through `groupingFromQuestion`; disabled with "No saved view yet" or "No column to break down by". `breakDown.tsx`.
33
+
34
+ **Saved views, shareable and exportable** (VIEWS-B):
35
+ - **Copy link to view** in the table's ⋯ menu (Share group): copies `<table link>?view=<saved view id>`, which the page already opens on. Disabled with "No saved view yet" when none is active. `viewShare.ts`.
36
+ - **Download CSV** in the same group: one press, no rail — the rows the current view shows (its filter and sort, read through the store's page door, every page to 5,000 rows; "First N rows only" when cut), its visible columns in its order.
37
+ - The **Export rail** now writes the same view's rows and columns (`ExportMenu` prop `view`, `ViewReading`); `rowsForFile` and `download` are exported from `ExportMenu`. `viewExport.ts`.
38
+
39
+ **List layout, quick add in place, card fields** (VIEWS-A, champion Notion/Airtable):
40
+ - **List** is a sixth layout (`VIEW_LAYOUTS`, kept by the store: `STORE_KEPT_LAYOUTS`; `?view=list` now opens it). `ListView`: one compact row per record (title, then the shown fields inline via `RecordValue`), grouped by the grid's own `presentation.grouping.field`, "+ New" at the end of each group pre-filled with that group's value, a "Fields shown" picker writing `presentation.hiddenFields`.
41
+ - **+ New in place** at the foot of every board column (the value a drop there writes) and as the gallery's last card; both open the new record. Offered only when the host lets the person add records and they may write the table; never on a computed group column.
42
+ - **Card fields** on the board: a "Card fields" picker (the gallery's control, now `CardFieldsPicker` in `cardFields.tsx`) saves `presentation.hiddenFields`, and cards draw the shown fields under the title. `VIEW_KEYS` mirrors the store: `hiddenFields` for kanban/calendar/timeline/list, `grouping` for list.
43
+
44
+ ## 0.98.0
45
+
46
+ **Sheet adoption** (v7 lane FINISH-THE-SWITCH, FTS-5 — what the older Sheet did better, now in the store grid):
47
+ - **Cut in the right-click menu** — "Cut cell" / "Cut n cells" beside Copy, Paste, Clear; same as Ctrl-X.
48
+ - **The view in the address bar** — `TablePage` props `viewAddress` (read once on arrival) and
49
+ `onViewAddressChange` (the look as it differs from the saved view: sort, column filters, search, hidden
50
+ columns, page). The package never touches a URL; `viewAddressFromParams` / `viewAddressToParams` /
51
+ `VIEW_ADDRESS_KEYS` are the words (`sort`, `cf`, `q`, `hide`, `page`). "Reset view" in "Your look" now
52
+ also returns the grid's sort, filters, search and page.
53
+ - **Get reference…** in the table's ⋯ menu (whole table, columns only) through the host's content-transfer
54
+ `reference` port; absent without one. `TableReferenceDialog`.
55
+ - **Clean column…** in the column header menu: tidy a text column across EVERY row (hidden characters, odd
56
+ spaces, trim, curly quotes, wrapping markup, HTML entities), review, one bulk write, one Undo step.
57
+ `columnCleanup.ts`, `ColumnCleanDialog`.
58
+ - **Table settings** hold the description (`metadata.description`) and the row label. `TableDetails`.
59
+
60
+ **Consumer action:** pass `viewAddress` / `onViewAddressChange` on the table page route (matrx-frontend does).
61
+
62
+ **Duplicate a table from its menu** (v7 lane TABLE-EXPERIENCE, item 3). `TableDuplicateDialog` — name
63
+ ("<name> (copy)"), "Copy its records" (on), the copy's progress pass by pass, what was copied and what a
64
+ copy never carries, then "Open the copy" — over the live `custom.table_duplicate` door. The table page's
65
+ ⋯ Duplicate opens it (a host's own `actionHost.duplicate` still wins; `actionHost.onDuplicated` opens the
66
+ copy, else its path is followed). Exports `TableDuplicateDialog`, `copyNameFor`, `duplicateProgressWords`.
67
+
68
+ **Consumer action:** list menus (Data home rows) bind their `duplicate` handler to open
69
+ `TableDuplicateDialog`.
70
+
71
+ **A formula over a "source archived" column says so** (item 7): an empty formula cell whose input holds
72
+ the store's source-archived answer draws "Source archived" (archived column on hover), never a blank
73
+ (`formulaSourceArchived`).
74
+
75
+ **A grid right-click is the record's menu** (item 5, Airtable/Notion): on a cell the record's section comes
76
+ first and is primary — Open record, **Rename** (opens the name cell in place), Duplicate, **Copy link**,
77
+ Copy row · Merge with…, Link a record… · Insert above/below, Row history · **Archive record** (was "Delete
78
+ row…") — then the cell's own verbs, the column and the table. `GridMenuActions.renameRow`/`copyRecordLink`.
79
+
80
+ **A table an app's code depends on is archived on purpose, in two steps** (item 6): Settings / ⋯ Archive
81
+ table on a `code_depends` table opens `ArchiveDeliberatelyDialog` — what it breaks, then the typed slug and a
82
+ reason — over `custom.table_archive_deliberately` (looped to done). `codeDependsRefusal(error)` reads the
83
+ store's refusal for any host list (Data home).
84
+
85
+ **The record page's Ask opens on a press** ("Ask about this record"): a conversation is started only when
86
+ somebody asks, never by a visit.
87
+
88
+ ## 0.97.0
89
+
90
+ **A new table takes all its columns at once** (v7 lane TABLE-EXPERIENCE, item 2). TablesHome's New table
91
+ box gains a Columns box: paste a header row from a sheet, a list (one a line) or a sentence ("clients
92
+ with name, email, phone, start date and status") and each column shows as a chip typed from its name
93
+ (email, phone, link, date, date and time, money, percent, number, yes/no, choice — Status starts with
94
+ Not started / In progress / Done —, several choices, formatted text), changeable before the ONE Create
95
+ press, which declares the table with every column (`declareTable` `fields`). New exports in
96
+ `newTableColumns.ts`: `columnNamesFrom`, `columnFromName`, `columnsFrom`, `fieldsForNewColumns`,
97
+ `NEW_COLUMN_TYPES`. No consumer action.
98
+
3
99
  ## 0.96.0
4
100
 
5
101
  **A record is a page** (v7 lane TABLE-EXPERIENCE, item 1). `RecordPanel onPage` now draws, under the