Repository navigation
feat(studio): New Package asks only for a name; the package ID, namespace, version and type sit behind Advanced - #27883
Merged
Conversation
…nd Advanced The create dialog's Basics card now holds the display name and the description. The derived package ID and namespace are summarised under the name; the ID, namespace, version and type move into one collapsed Advanced disclosure (mounted while closed, `hidden`), which opens by itself whenever one of its rows keeps Create disabled. The spec form's own Advanced rows join that disclosure instead of rendering a second one. The dialog description drops the reverse-domain explanation. Claude-Session: https://claude.ai/code/session_01Utp6CZHUokxLoPS381KzP6 Co-Authored-By: Claude <noreply@anthropic.com>
…s the id or dependencies The dependencies editor control and the live switcher spec reach rows that now sit in the collapsed Advanced section on create. Claude-Session: https://claude.ai/code/session_01Utp6CZHUokxLoPS381KzP6 Co-Authored-By: Claude <noreply@anthropic.com>
…cription pin The positive control reads the description through `t`; in zh the first render starts the on-demand catalogue fetch, so the control could read the zh sentence while the dialog had rendered the en fallback (red in CI Test UI 4/16). Loading the catalogue first makes both read zh. Claude-Session: https://claude.ai/code/session_01Utp6CZHUokxLoPS381KzP6 Co-Authored-By: Claude <noreply@anthropic.com>
Contributor
Author
|
domain:ui#3 · os-bill · session_01Utp6CaJoinvGQSbHeDaWBe 席位核对ACCEPT · head
Generated by Claude Code |
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.
Requested by Bill · project thread
维护者速读
PackageFormDialog.tsx的advancedNeeded/showAdvanced两行和Collapsible一段;PackageFormDialog.nameOnlyFirstStep-27833.test.tsx。Field Service点「创建软件包」,应直接建成,名称下方先显示自动生成的 ID(有当前组织时形如com.ORG.field-service)和命名空间field_service;改输工单中心,「高级」应自动展开并提示需要手填 ID。Fixes #27833
Clause-②: no
Metadata-protocol: none
What changes
Create mode of
PackageFormDialog(Home → New → New Package, Packages → New Package, the Studio switcher's New package):engine.packages.create.derivedSummary).PackageIdInput), object namespace, version and type move into one Advanced disclosure, collapsed by default, with a hint line ("Package ID, namespace, version and type, filled in from the name."). The spec form's own Advanced rows (defaultDatasource) and the dependencies editor join the same disclosure, so the dialog no longer shows two sections both called Advanced.forceMountplushidden), so the id input keeps its own state across a collapse and the rows leave the accessibility tree while hidden.advancedNeeded). A name with no Latin letters (no id derived), an id the spec refuses, or an emptied namespace never leaves the author at a disabled button with the reason folded away; while that holds, the disclosure cannot be closed.check:i18n-driftrequires for the studio catalogue).Unchanged: the derivation rules (objectui#11792 id from the name, framework#2694 namespace from the id, objectui#12512 marks and select-on-focus), the spec validation, the POST body, and edit / view mode.
Tests
PackageFormDialog.nameOnlyFirstStep-27833.test.tsx(7 cases): the first step's textboxes are exactly name + description and the technical rows are out of the accessibility tree; a name alone creates the package with the derived id / namespace / version / type in the POST; Advanced shows the derived id and namespace and both are editable; an edited id does not move on relabel; a hand-typed id the spec refuses is refused in words (idRule.formatHint), Create waits, and the disclosure cannot be folded; a CJK-only name opens Advanced by itself at theidRule.notDerivedline; edit mode has no disclosure and keeps the locked id and the version row.derivedFields-12512(id / namespace / version now ordered under Advanced, the name still first in Basics),createCopy-13126(positive control is the description's own sentence, since the example id left the copy),dependenciesEditor-13278(e) (opens Advanced first), and the live specui/e2e/live/studio-object-designer.spec.tsF1 (clicks Advanced before filling the id; Playwright'sfillwaits for a visible input).Acceptance notes
{ id: 'com.field-service', namespace: 'field_service', name: 'Field Service', version: '0.1.0', type: 'app' }after typing only the name. With an active organization the id iscom.ORG.field-service, as before (the card'scom.default.field-serviceis that rule with the org slugdefault).idDerive-11792,editDependencies-13121,createScope-12869,EditPackageDialog).BuilderLanding.environmentOverlayCopy-12171; this card's step does not need it. The English help lines under the id and version rows are stillManifestSchema's.describe()text ("Unique package identifier — must match reverse-domain notation …", "Package version (SemVer 2.0.0 …)"); they now sit under Advanced, where that developer wording fits, andhelpTextI18nkeeps the spec as their one English producer. Rewording them at the source is apackages/specchange, named as a seam in the report, not taken here.hidden,aria-expanded); the live spec F1 (ui/e2e/live/studio-object-designer.spec.ts) drives the dialog in Chromium wherever the live e2e suite runs.Verification
Tests (head 05d9ba6)
pnpm --dir ui exec vitest runover 37 named files (every test that rendersPackageFormDialog,CreatePackageDialog,EditPackageDialog,PackagesPageorBuilderLanding) pluspackages/i18n/src/__tests__/, under the verify lock: first runTest Files 1 failed | 126 passed (127) · Tests 1 failed | 1666 passed | 13 skipped; the one red wasdependenciesEditor-13278(e), which now opens Advanced first, thenTests 5 passed (5)on that file.Test Files 3 passed (3) · Tests 23 passed (23).app-shellsuite and the live e2e; CI runs both.Ablations (scripts/ablation-replace.mjs, mutation proven on disk, restored to the HEAD blob)
app-shell tests import
src, so no dist build is involved.const advancedNeeded = createMode→const advancedNeeded = false && !'ABLATED_27833_A' && createMode(the disclosure no longer opens by itself):Tests 2 failed | 5 passed (7), red on "a hand-typed id the spec refuses … Advanced cannot fold it away" and "a name that derives no id opens Advanced by itself". Restored: blob1cc49767f808== HEAD,git diff HEADempty.hidden={!showAdvanced}→hidden={false && !'ABLATED_27833_B'}(the closed disclosure stays visible):Tests 1 failed | 6 passed (7), red on "opens with the name and the description in reach, the technical rows folded away". Restored the same way.Gates (head 05d9ba6)
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 34 commands; each run and its exit code recorded before any pipe;--ranreconciliation:34 derived, 34 run, 0 NOT-MEASURED, 0 UNRUN. Four more run because the diff changes studio copy, app-shell / i18n sources and an e2e spec (outside the derivation):Everything CI runs beyond this subset: the PR's check-runs.
Generated by Claude Code