@colixsystems/widget-sdk 0.56.0 → 0.57.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/README.md +9 -5
- package/dist/contract.cjs +1 -1
- package/dist/contract.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -52,11 +52,15 @@ See the design reference for the full architecture: [`docs/architecture/widget-m
|
|
|
52
52
|
|
|
53
53
|
## Status
|
|
54
54
|
|
|
55
|
-
`v0.
|
|
55
|
+
`v0.57.0` — pre-publish. The package surface (types, function names, export paths) is the v1 contract; runtime behaviour for some hooks is stubbed (each hook documents what's wired and what isn't). It is **not yet published to npm**.
|
|
56
|
+
|
|
57
|
+
### What's new in 0.57.0
|
|
58
|
+
|
|
59
|
+
**A `required: true` `tableRef` must ship a matching `datastoreTemplate` table (sc-2791).** A widget property that the author cannot skip — a `tableRef` you mark `required: true` — must have a table to bind on install, or the end user has nothing to pick and the widget can't load its data. The marketplace analyzer now enforces this at publish: the check `manifest.requiredTableRefsHaveTemplate` rejects a manifest whose `datastoreTemplate.tables` count is fewer than its `required` `tableRef` property count, naming the offending properties. Two ways to clear it: seed a `datastoreTemplate` table for each required `tableRef` (the default — the widget owns its data), OR make the property **optional** when it binds a table the app already owns (shared data the user names). This tightens the existing "always ship a `datastoreTemplate` for a data widget" guidance into an enforced rule for the `required` case. No export, type, or hook changed shape — additive publish-gate + documentation. `CONTRACT` is unchanged (no new field).
|
|
56
60
|
|
|
57
61
|
### What's new in 0.55.0
|
|
58
62
|
|
|
59
|
-
**Dynamic record selection for `valueRef` (sc-2327).** The `valueRef` binding gains an optional `mode` field: `"static"` (the default — pin a specific `recordId`, the only prior behaviour) or `"latest"` (resolve the most recently created row live, sorting on the host-managed `created_at` descending with `limit: 1`; `recordId` is ignored). The built-in
|
|
63
|
+
**Dynamic record selection for `valueRef` (sc-2327).** The `valueRef` binding gains an optional `mode` field: `"static"` (the default — pin a specific `recordId`, the only prior behaviour) or `"latest"` (resolve the most recently created row live, sorting on the host-managed `created_at` descending with `limit: 1`; `recordId` is ignored). The built-in Data Value widget reads it to offer a "Latest entry" that updates as records are added, with no per-host code — the same baked widget source and the same injected `@colixsystems/datastore-client` run on the web Player and the native Expo export. The `ValueRefBinding` type adds `mode?: "static" | "latest"`. Existing bindings carry no `mode` and read as static. `CONTRACT.version` → `1.39.0`. Additive — no existing field changed shape.
|
|
60
64
|
|
|
61
65
|
### What's new in 0.56.0
|
|
62
66
|
|
|
@@ -127,7 +131,7 @@ See the design reference for the full architecture: [`docs/architecture/widget-m
|
|
|
127
131
|
|
|
128
132
|
### What's new in 0.42.0
|
|
129
133
|
|
|
130
|
-
**RELATION columns hydrate with a display label (sc-1181).** Record reads now return `{ id, label }` for ONE_TO_ONE / ONE_TO_MANY and `[{ id, label }, ...]` for MANY_TO_MANY (empty array when no links) — `label` is the value of the column pointed at by the new optional `display_column_id` on `DatastoreSchemaColumn`, or, when unset, the first STRING/TEXT column on the target table. Widgets should render `record.<rel>.label` (or `record.<rel>.map(r => r.label).join(", ")` for M:M) directly; `.id` is still there for the foreign-key case. The cell-formatting helpers in the built-in `DataList` and `
|
|
134
|
+
**RELATION columns hydrate with a display label (sc-1181).** Record reads now return `{ id, label }` for ONE_TO_ONE / ONE_TO_MANY and `[{ id, label }, ...]` for MANY_TO_MANY (empty array when no links) — `label` is the value of the column pointed at by the new optional `display_column_id` on `DatastoreSchemaColumn`, or, when unset, the first STRING/TEXT column on the target table. Widgets should render `record.<rel>.label` (or `record.<rel>.map(r => r.label).join(", ")` for M:M) directly; `.id` is still there for the foreign-key case. The cell-formatting helpers in the built-in `DataList` and `DataValue` widgets already walk arrays and prefer `label` over `name` / `id` — author widgets that need the same can copy that pattern. `CONTRACT.version` is unchanged.
|
|
131
135
|
|
|
132
136
|
### What's new in 0.41.0
|
|
133
137
|
|
|
@@ -254,10 +258,10 @@ Also: `useFileSignatures(fileIds)` is now **self-scoped** (the caller's own sign
|
|
|
254
258
|
|
|
255
259
|
**New `valueRef` propertySchema type — bind a widget to a single value in the datastore (REQ-WDG-VALUEREF).**
|
|
256
260
|
|
|
257
|
-
- **`valueRef`** is a composite picker: the Studio Properties Panel renders three cascading dropdowns — pick a **table**, then a **record**, then a **column** — and the bound widget resolves the one cell. It is the discoverable replacement for hand-typing a `tableRef` + a raw record-id `string` + a `columnRef` separately (the old
|
|
261
|
+
- **`valueRef`** is a composite picker: the Studio Properties Panel renders three cascading dropdowns — pick a **table**, then a **record**, then a **column** — and the bound widget resolves the one cell. It is the discoverable replacement for hand-typing a `tableRef` + a raw record-id `string` + a `columnRef` separately (the old Data Value shape).
|
|
258
262
|
- **Persisted value is an object** `{ tableId, recordId, column }` (new `ValueRefBinding` type), unlike every other ref type, which is a bare string. A widget reads it with `useDatastoreRecord(value.tableId, value.recordId)` then `record[value.column]`; any missing piece means "no value".
|
|
259
263
|
- **tenant-copy** remaps `tableId` to the copied table and **nulls `recordId`** (records are business data and are never copied), so a copied workspace shows the widget's fallback until the new operator re-picks a record. `column` (a name) is preserved verbatim.
|
|
260
|
-
- The built-in **
|
|
264
|
+
- The built-in **Data Value** widget now uses `valueRef` (back-compatible: already-saved Data Value widgets that stored `tableId`/`recordId`/`column` as separate props keep rendering).
|
|
261
265
|
- **`CONTRACT.version` → `1.12.0`** (additive: one new optional propertySchema type). No existing export or type changed signature.
|
|
262
266
|
|
|
263
267
|
### What's new in 0.21.1
|
package/dist/contract.cjs
CHANGED
|
@@ -1862,7 +1862,7 @@ const CONTRACT = deepFreeze({
|
|
|
1862
1862
|
// an optional `mode` field: "static" (a pinned recordId, the default and
|
|
1863
1863
|
// the only prior behaviour) or "latest" (the most recently created row,
|
|
1864
1864
|
// resolved live by `created_at` desc with limit 1; recordId ignored). The
|
|
1865
|
-
//
|
|
1865
|
+
// Data Value widget reads it to show a live "latest entry". Existing
|
|
1866
1866
|
// bindings have no `mode` and read as static — additive, minor bump.
|
|
1867
1867
|
version: "1.39.0",
|
|
1868
1868
|
sharedTranslationKeys: SHARED_TRANSLATION_KEYS,
|
package/dist/contract.js
CHANGED
|
@@ -1862,7 +1862,7 @@ const CONTRACT = deepFreeze({
|
|
|
1862
1862
|
// an optional `mode` field: "static" (a pinned recordId, the default and
|
|
1863
1863
|
// the only prior behaviour) or "latest" (the most recently created row,
|
|
1864
1864
|
// resolved live by `created_at` desc with limit 1; recordId ignored). The
|
|
1865
|
-
//
|
|
1865
|
+
// Data Value widget reads it to show a live "latest entry". Existing
|
|
1866
1866
|
// bindings have no `mode` and read as static — additive, minor bump.
|
|
1867
1867
|
version: "1.39.0",
|
|
1868
1868
|
sharedTranslationKeys: SHARED_TRANSLATION_KEYS,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@colixsystems/widget-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.57.0",
|
|
4
4
|
"description": "Common widget interface for AppStudio. Implements WidgetManifest, WidgetContext, property schema, and helper hooks.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|