Skip to content

Commit 0b7b056

Browse files
authored
Merge branch 'main' into fix/durable-package-install
2 parents 4cdb925 + 2d34e69 commit 0b7b056

192 files changed

Lines changed: 1481 additions & 171 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ jobs:
7474
# ADR-0085 (hotcrm#423) — the intended break, explicitly digested
7575
# downstream. Bump this ref whenever a deliberate spec surface
7676
# removal ships a matching hotcrm release.
77-
HOTCRM_REF: v1.2.1
77+
HOTCRM_REF: v1.2.2
7878
run: bash scripts/downstream-smoke.sh
7979

8080
- name: Create Release Pull Request or Publish to npm

.objectui-sha

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
9aec6817d8f682e42eab6b7539391e8d9dc04d21
1+
09e1b261563284fbeddc7c5c1bde753330ccab87

AGENTS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,7 @@ export default {
261261
never `gh pr merge --auto`). A finished task = a merged PR, not a dirty
262262
working tree.
263263
3. **Add a changeset for feature work.** When the change is a feature or functional improvement, run `pnpm changeset` (or add a `.changeset/*.md` entry) describing it before committing. Pure bug fixes do **not** require a changeset.
264+
**Breaking changesets must carry their migration.** If the change removes or renames anything an author can write (a spec key, an export, a config field), the changeset body must state the FROM → TO mapping and the one-line fix — this text ships to consumers as `CHANGELOG.md` inside the npm package and is what an upgrading agent greps after the tombstone error. Removing an authorable spec key also requires a tombstone entry in the relevant `UNKNOWN_KEY_GUIDANCE` map (see `object.zod.ts`) so the rejection itself carries the prescription.
264265
4. Update `CHANGELOG.md` / `ROADMAP.md` if user-facing or architectural.
265266
5. **Delete temporary artifacts** — screenshots, traces, scratch logs, `.playwright-mcp/`, throwaway `tmp*.ts`, ad-hoc scripts. Repo must look identical to before, minus intended changes.
266267

content/docs/guides/data-modeling.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ export const MyObject = ObjectSchema.create({
6767
| `icon` | string | Icon identifier | `'building'` |
6868
| `description` | string | Help text | `'Companies...'` |
6969
| `titleFormat` | string | Record title template (`{{record.field}}` interpolation) | `'{{record.name}} - {{record.id}}'` |
70-
| `highlightFields` | string[] | Most-important fields, in priority order (default columns, cards, previews, detail highlight strip; ADR-0085 — formerly `compactLayout`, still accepted as an alias) | `['name', 'status']` |
70+
| `highlightFields` | string[] | Most-important fields, in priority order (default columns, cards, previews, detail highlight strip; ADR-0085 — formerly `compactLayout`; the old spelling was retired and is now rejected) | `['name', 'status']` |
7171

7272
### Enable Features
7373

content/docs/guides/metadata/object.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ export const Account = ObjectSchema.create({
6868
| :--- | :--- | :--- | :--- |
6969
| `displayNameField` | `string` | optional | Field used as record display name (defaults to `'name'`) |
7070
| `titleFormat` | `string` | optional | Title expression (e.g. `'{name} - {code}'`) |
71-
| `highlightFields` | `string[]` | optional | Most-important fields in priority order — default list columns, cards, previews, detail highlight strip (ADR-0085; formerly `compactLayout`, accepted as an alias) |
71+
| `highlightFields` | `string[]` | optional | Most-important fields in priority order — default list columns, cards, previews, detail highlight strip (ADR-0085; formerly `compactLayout` — the old spelling was retired and is now rejected) |
7272
| `stageField` | `string \| false` | optional | Linear lifecycle field; `false` declares the status field non-linear and suppresses stage heuristics (ADR-0085) |
7373
| `recordName` | `object` | optional | Record name auto-generation config |
7474

examples/app-crm/CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# @objectstack/example-crm
22

3+
## 4.0.69
4+
5+
### Patch Changes
6+
7+
- Updated dependencies [6a9397e]
8+
- Updated dependencies [c0efe5d]
9+
- @objectstack/spec@11.10.0
10+
- @objectstack/runtime@11.10.0
11+
312
## 4.0.68
413

514
### Patch Changes

examples/app-crm/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@objectstack/example-crm",
3-
"version": "4.0.68",
3+
"version": "4.0.69",
44
"description": "Minimal CRM example — a smoke-test workspace that exercises the metadata loading pipeline (objects → views → app → dashboard → hook → flow → seed). For a full-featured enterprise CRM see https://github.com/objectstack-ai/hotcrm.",
55
"license": "Apache-2.0",
66
"private": true,

examples/app-showcase/CHANGELOG.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
# @objectstack/example-showcase
22

3+
## 0.2.15
4+
5+
### Patch Changes
6+
7+
- Updated dependencies [6a9397e]
8+
- Updated dependencies [c0efe5d]
9+
- @objectstack/spec@11.10.0
10+
- @objectstack/cloud-connection@11.10.0
11+
- @objectstack/connector-rest@11.10.0
12+
- @objectstack/connector-slack@11.10.0
13+
- @objectstack/driver-sql@11.10.0
14+
- @objectstack/runtime@11.10.0
15+
316
## 0.2.14
417

518
### Patch Changes

examples/app-showcase/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@objectstack/example-showcase",
3-
"version": "0.2.14",
3+
"version": "0.2.15",
44
"description": "Kitchen-sink showcase workspace — exercises every metadata type, every view type, every chart type, and the major end-to-end capability chains (security, automation, AI). Built for demonstration, debugging, and coverage-driven verification.",
55
"license": "Apache-2.0",
66
"private": true,

examples/app-showcase/src/objects/project.object.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,24 @@ export const Project = ObjectSchema.create({
5656
start_date: Field.date({ label: 'Start Date' }),
5757
end_date: Field.date({ label: 'Target End Date' }),
5858
owner: Field.text({ label: 'Owner', maxLength: 200 }),
59+
// Multi-value fields — the payload for the grid's *bulk-edit* showcase. A
60+
// multiselect (fixed options) and a multi-user field are exactly the two
61+
// shapes that, before #2185, the bulk dialog could not set: its people /
62+
// select picker collapsed to a single value and overwrote the array. The
63+
// list view's `bulkActionDefs` below now sets both with real multi-select
64+
// controls, writing an array patch.
65+
labels: {
66+
type: 'multiselect',
67+
label: 'Labels',
68+
options: [
69+
{ label: 'Frontend', value: 'frontend', color: '#3B82F6' },
70+
{ label: 'Backend', value: 'backend', color: '#8B5CF6' },
71+
{ label: 'Design', value: 'design', color: '#EC4899' },
72+
{ label: 'QA', value: 'qa', color: '#F59E0B' },
73+
{ label: 'DevOps', value: 'devops', color: '#10B981' },
74+
],
75+
},
76+
team_members: Field.user({ label: 'Team Members', multiple: true }),
5977
// Roll-up summaries — recomputed server-side whenever a child task is
6078
// inserted / updated / deleted (FK auto-detected: showcase_task.project).
6179
task_count: Field.summary({

0 commit comments

Comments
 (0)