You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit fa457cd
Browse filesBrowse the repository at this point in the historyBrowse files
docs(skills): the objectui data-integration guide stops teaching the MSW plugin removed in 12.0
7
+
8
+
Clause-②: no
9
+
Metadata-protocol: none
10
+
11
+
-**Before.**`skills/objectui/guides/data-integration.md` taught a frontend-first setup built on the MSW plugin package, removed in 12.0 (its last npm release is 11.0.0, so the install still succeeds and pulls an 11.x plugin into the current stack), and eval 2 of `evals/data-integration.json` rewarded that answer.
12
+
-**Now.** The section "Frontend-first development" names the two supported paths: a static scope with no backend, or the real server run locally with `os dev` behind a Vite `/api` proxy. It states that `os dev` persists to SQLite, that `--fresh` gives a throwaway database, and that the retired in-memory driver is refused. Eval 2 grades `os dev`, `proxy` and `objectstack.config`, and refuses the MSW setup. Net -35 lines in the guide.
13
+
-**Console.**`VITE_USE_MOCK_SERVER`, which no source reads, leaves `.env.development`, `.env.production` and the Vercel build command. The `mockServiceWorker.js` rewrite exclusion and the `vendor-msw` chunk row in `docs/deployment.md` go too. No runtime behaviour changes.
fix(metadata-protocol): promoting a permission set with no draft answers `NO_DRAFT` before another owner's name collision
6
+
7
+
Clause-②: no
8
+
Metadata-protocol: none
9
+
10
+
The draft promotion (`POST /api/v1/meta/permission/:name/publish`, and `publishPackageDrafts`, which promotes through the same step) asked the permission-set name judge (`NAMESPACE_CONFLICT` / 422) even when no draft existed at the address, so a publish with nothing to publish, of a name another package holds, answered the collision instead of `NO_DRAFT` / 404. The name judge now runs only when a draft was read, like the promotion's other draft judges, so the caller is told about its own state first. Refusal for refusal: with no draft the promotion was refused before and is refused now, and with a draft the same refusals run in the same order.
fix(studio): the flow Problems list says what the publish will refuse, and a blank expression reads "This value needs an expression"
7
+
8
+
Clause-②: no
9
+
Metadata-protocol: none
10
+
11
+
On the Studio's Automations page, a flow's Problems list judged only the canvas structure, so an Update Records value written as an expression and left blank showed a refusal under the value while Problems said "No problems — this flow is structurally valid", and Publish then refused the flow.
12
+
13
+
The Problems list now reads the verdict the pending draft's read already carries, the one the step inspectors read and the one Publish enforces, so a value the publish refuses is listed, located by the server's own words naming the step and the field. The value cell and the Problems row say the same thing, in business words: "This value needs an expression. Write one, or switch the value back to text." Any other refusal is shown as before.
fix(studio): a report's new Order or Blocks item, or a chart type picked before its axes, is held until it is filled in, instead of being autosaved and refused
7
+
8
+
Clause-②: no
9
+
Metadata-protocol: none
10
+
11
+
In the Studio's Interfaces pillar, a report's properties used to autosave an unfinished edit: "Add item" under **Order** sent an empty sort key, "Add item" under a joined report's **Blocks** sent an empty block, and picking a **Chart type** before its X and Y axes sent a chart without them. The draft door refused each (422), and every later save of the report carried the same body and was refused too, so an edit made afterwards was lost on reload.
12
+
13
+
Such a report is now held the way a dashboard's unfinished list item is: nothing is sent while the report's own schema refuses the item, or the chart, only for inputs it leaves unset. A neutral line names what it needs (for example "Order By on item #1 of “Order” needs a value", or "X-Axis (dimension) on the report’s chart needs a value") with a **Show me** that opens the report's properties at that input, and Publish refuses while it is held. Once the input is filled in, the next autosave sends every edit kept meanwhile. An item or a chart refused for a value it holds is not held: it is sent, and the refusal it draws shows as before.
Copy file name to clipboardExpand all lines: packages/metadata-protocol/src/protocol.permission-set-name-cross-package.test.ts
+14Lines changed: 14 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -524,6 +524,20 @@ describe('the draft promotion refuses a permission-set draft whose name another
524
524
]);
525
525
});
526
526
527
+
it('with no draft at the address, the caller is told about its own state first: the repository\'s NO_DRAFT (404), not the collision another owner\'s name would raise',async()=>{
528
+
consth=makeProtocol();
529
+
// B holds the active name; A has no draft of it at all.
Copy file name to clipboardExpand all lines: skills/objectui/evals/data-integration.json
+6-6Lines changed: 6 additions & 6 deletions
Original file line number
Diff line number
Diff line change
@@ -21,18 +21,18 @@
21
21
},
22
22
{
23
23
"id": 2,
24
-
"prompt": "Set up MSW mock data for my ObjectUI app so I can develop the frontend without a running backend. I have a Todo object with title, completed, and dueDate fields.",
25
-
"expected_output": "Provides MSW browser setup using ObjectKernel + InMemoryDriver + MSWPlugin, objectstack.config with the Todo schema, and main.tsx bootstrap pattern.",
24
+
"prompt": "I want to build my ObjectUI frontend before the backend is deployed. I have a Todo object with title, completed, and dueDate fields. How do I get a working API locally?",
25
+
"expected_output": "Runs the real server locally with os dev (the Todo object in objectstack.config) and proxies /api to it from the Vite dev server; no MSW plugin.",
By default `os dev` persists to a SQLite file and seeds a dev admin
377
+
(`admin@objectos.ai` / `admin123`) on an empty database. It has no in-memory
378
+
driver (`--database-driver memory` is refused); `--database :memory:` is
379
+
SQLite's in-memory database. Commands and flags: the `objectstack-platform` skill.
380
+
413
381
### Test DataSource helper
414
382
415
383
<!-- os:check -->
@@ -507,8 +475,6 @@ unsubscribe?.();
507
475
508
476
- Spelling `QueryParams` options without the `$` prefix (`limit`, `filter`, `sort`): the index signature accepts them, nothing reads them, and a dropped `$top` fetches the whole table.
509
477
- Importing `fetch` directly in components instead of using DataSource from context.
510
-
- Forgetting to await `startMockServer()` before rendering — MSW intercepts aren't ready.
511
-
- Mismatched `baseUrl` between MSW plugin and ObjectStackAdapter — requests bypass mocks.
512
478
- Not providing `getObjectSchema()` — plugins that need field metadata will fail.
513
479
- Passing a DataSource adapter instance where a static object is expected (or vice versa).
514
480
- Not handling loading/error states in components that fetch data.
0 commit comments