Commit 703dcec
feat(studio): spec-driven package create/edit/view form in a modal (#2535)
* feat(studio): spec-driven package create/edit/view form in a modal
Package create/edit/view were three hand-rolled forms (CreatePackageDialog,
EditPackageDialog, BuilderLanding's inline form) with two different
id-validation regexes — a package created on one surface was rejected by
another, and neither matched what the server accepts. Replace them with ONE
modal (PackageFormDialog) that renders the manifest form from the spec
(ManifestSchema → z.toJSONSchema → SchemaForm), mirroring the existing
page-schema / view-schema pattern.
- package-schema.ts: spec-derived JSONSchema + a curated FormView (Basics +
collapsible Advanced). id/type/namespace/scope are `immutable` — editable on
create, locked on edit (the REST PATCH only persists name/description/version).
- PackageFormDialog: create → POST, edit → PATCH, view → readOnly. Duplicate
409 maps to a friendly "already exists" message. Create sends NO scope, so a
runtime-created base stays writable (not 只读).
- CreatePackageDialog / EditPackageDialog kept as thin wrappers so call sites
(ResourceListPage, the Studio switcher) don't change; BuilderLanding's inline
form now opens the dialog; PackageDetailSheet gains a "View info" (readOnly
spec form) action.
Net −254 lines (three forms collapse into one spec-driven component).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* fix(studio): port namespace field into the spec-form create dialog
The merge with main brought in CreatePackageDialog.namespace.test.tsx
(framework#2694), which targeted the old hand-rolled form's test ids and broke
now that CreatePackageDialog renders the spec form. PackageFormDialog already
auto-derives namespace from the id and gates submit on NAMESPACE_RE; this adds
keystroke sanitization (lowercase + allowed alphabet) to match the old field,
and rewrites the test to target the spec form by label.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>1 parent 2b30583 commit 703dcec
8 files changed
Lines changed: 606 additions & 440 deletions
File tree
- packages/app-shell/src/views
- metadata-admin
- studio-design
Lines changed: 13 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
6 | | - | |
7 | | - | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
8 | 12 | | |
9 | 13 | | |
10 | 14 | | |
| |||
17 | 21 | | |
18 | 22 | | |
19 | 23 | | |
20 | | - | |
21 | | - | |
22 | | - | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
23 | 28 | | |
24 | 29 | | |
25 | 30 | | |
26 | | - | |
| 31 | + | |
27 | 32 | | |
28 | 33 | | |
29 | 34 | | |
| |||
50 | 55 | | |
51 | 56 | | |
52 | 57 | | |
53 | | - | |
| 58 | + | |
54 | 59 | | |
55 | 60 | | |
56 | | - | |
57 | 61 | | |
58 | 62 | | |
59 | 63 | | |
| |||
Lines changed: 21 additions & 32 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
9 | | - | |
10 | | - | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
11 | 14 | | |
12 | 15 | | |
13 | 16 | | |
| |||
22 | 25 | | |
23 | 26 | | |
24 | 27 | | |
25 | | - | |
26 | 28 | | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
| 29 | + | |
31 | 30 | | |
32 | 31 | | |
33 | 32 | | |
| |||
39 | 38 | | |
40 | 39 | | |
41 | 40 | | |
42 | | - | |
43 | | - | |
| 41 | + | |
| 42 | + | |
44 | 43 | | |
45 | 44 | | |
46 | 45 | | |
47 | 46 | | |
48 | | - | |
49 | | - | |
50 | | - | |
51 | | - | |
52 | | - | |
| 47 | + | |
| 48 | + | |
53 | 49 | | |
54 | 50 | | |
55 | 51 | | |
56 | | - | |
| 52 | + | |
57 | 53 | | |
58 | 54 | | |
59 | 55 | | |
60 | | - | |
61 | | - | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
62 | 61 | | |
63 | 62 | | |
64 | | - | |
| 63 | + | |
65 | 64 | | |
66 | 65 | | |
67 | 66 | | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | 67 | | |
80 | 68 | | |
81 | 69 | | |
82 | 70 | | |
83 | 71 | | |
84 | 72 | | |
85 | | - | |
| 73 | + | |
| 74 | + | |
86 | 75 | | |
87 | 76 | | |
88 | 77 | | |
89 | 78 | | |
90 | 79 | | |
91 | 80 | | |
92 | | - | |
| 81 | + | |
93 | 82 | | |
94 | 83 | | |
95 | 84 | | |
| |||
Lines changed: 82 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
0 commit comments