Repository navigation
feat(studio): Data rail search + inline new-object (draft into the package) - #2169
Merged
Merged
Conversation
…ckage) Close the two remaining v1 rail gaps (builder-ui §4): the objects rail gains a search filter and an inline 新建对象 creator (显示名 + auto-derived snake_case 标识符, hand-editable for CJK labels). Creation saves the object as a DRAFT in the current package (runtime create), seeds one text field, and lands in 表单·布局 — the metadata-level designer. Draft-only objects (no physical table until the package publish) get honest placeholders: the Records grid explains data arrives after publish instead of firing SQL at a missing table, and 预览 explains there is no published definition yet. After the package publish both become live automatically (publishNonce). Browser-verified end-to-end on a fresh backend: search filters; creating into a read-only code package surfaces the ADR-0070 writable_package_required error; creating into a writable base (POST /packages) lands in 布局 with 变更·1; both placeholders show; top-bar 发布 → drafts 0, physical table created (data query 200), grid + preview turn live. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Contributor
✅ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
akarma-synetal
pushed a commit
to akarma-synetal/objectui
that referenced
this pull request
Aug 3, 2026
…silently (objectstack-ai#3190) `ActionDef` ends with `[key: string]: any`, so it accepted any key of any type — a typo (`targt`) and a retired spec key (`execute`) both type-checked, then the runner silently bound no handler (the objectstack-ai#2169 shape). Step 1 made that audible with a dev-mode warning; this is step 2, promoting the keys that warning identified as legitimate into real fields. - Promote 18 spec-owned keys to explicit optional fields, every type DERIVED from `@objectstack/spec`'s `ActionInput` rather than hand-copied. A hand-written duplicate of a spec shape is a second contract that drifts, which is the failure this issue is about. - Derive from `z.input`, not `z.infer`: `ActionSchema` is a `ZodPipe` whose transform narrows `visible` to the `{ dialect, source }` envelope alone. This runner reads authored rows unparsed, so it sees the input shape; `Action` would have rejected the raw-string predicate ActionEngine supports. - Delete three `as any` casts in `ActionEngine` (`visible`, `requiredPermissions`, `locations`) that existed only because the fields were undeclared. Package `as any` count drops 9 -> 3. - Mark `@deprecated` only the four dialect keys the runner itself proves are aliases: `actionType` -> `type`, `api`/`endpoint` -> `target`, `navigate` -> flat `target`/`openIn`. The rest are runner mechanics with no spec spelling. `shortcut` and `bulkEnabled` derive to `undefined` because spec 17 retired both as `retiredKey()` tombstones — so authoring either, already a hard parse rejection, is now a compile error too. Hand-copying would have quietly re-legitimized two dead keys. The index signature stays; removing it is step 3, and the inverted pin asserting it is still present remains the issue's completion check. Refs objectstack-ai/objectstack#4075 Claude-Session: https://claude.ai/code/session_012C2cd7tL8QDoZ2QKN3djJ5 Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes the two remaining v1 rail gaps from the builder design (§4).
What
Verified in-browser (fresh backend, worktree vite)
writable_package_requirederror clearly ✓ (correct gate, correct message)POST /packages→ com.example.workbench): lands in 布局 with the seeded field, header shows 未发布草稿, top bar 变更 · 1 ✓_drafts= 0,GET /data/repair_ticket= 200 (physical table created), grid placeholder gone + Create live, 预览 renders the published form ✓type-check: 0 errors.🤖 Generated with Claude Code