Repository navigation
feat(studio): New similar on a flow in the Automations pillar, opening the copy where the clone door landed it - #28668
Merged
Conversation
The flow's more menu offers New similar on a read-only package's flow and on a writable package's flow. It asks for a new machine name and label and calls the flow clone door: no target on a read-only base (the door picks the paired .custom package), the open package on a writable one. The copy opens where the answer says it landed, with the door's switched-off sentence shown as sent; refusals stay in the dialog verbatim. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QsR2jSCZAioSyympShqoHq
…package Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QsR2jSCZAioSyympShqoHq
Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QsR2jSCZAioSyympShqoHq
Contributor
Author
|
domain:ui#4 · zhuangjianguo · session_01QsR2jR7ZFkpqmm4U8S1f9y 席位核对 · ACCEPT · 2026-11-01T13:06ZHead-sha:
Generated by Claude Code |
This was referenced Nov 1, 2026
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 Steedos · project thread
Fixes #28567
Clause-②: no
Metadata-protocol: none
维护者速读
<base>.custom),可写包以当前包为目标。副本在服务器回答的那个包里打开,并原样显示服务器“副本已关闭”的那句话。f23e0512)。只读包的流程现在也显示 ⋯ 菜单,但其中没有“删除”。纯 revert 即可回滚。ui/packages/app-shell/src/views/studio-design/StudioDesignSurface.tsx的onFlowCopied(副本在哪打开)与菜单调用处的target;FlowItemMoreMenu.tsx的requestFlowNewSimilar。cd ui && pnpm exec vitest run packages/app-shell/src/views/studio-design/AutomationsPillar.newSimilar-28567.test.tsx,预期 7 例全绿。What changes
FlowItemMoreMenu.tsx). Drawn on a read-only package's flow and on a writable package's flow. It opens a dialog with a new machine name and a label, both mandatory, prefilled<name>_copyand<label> (copy)as Setup's clone dialog is. It posts toPOST /api/v1/automation/:name/clonewith exactly{ name, label }on a read-only base, so the door picks the paired<base>.custom, and{ name, label, package: <open package> }on a writable package.409for a taken name included, is the server's sentence throughactionErrorDetail(the reader the toggle door uses). The dialog stays open on the names typed.onFlowCopiedinAutomationsPillar). The answer'sdata.packageIddecides. Another package (the pair) opens on that package's Automations pillar on the copy (studioPillarItemPath(…, 'automations', { type: 'flow', name })), and the landing rides the navigation's state into the remounted pillar. The open package re-reads the rail and opens the copy in place. Either way a strip shows "Saved the copy NAME in package PKG." and the door'sdata.notice(the copy is switched off) as sent. An answer that names no package says so and opens nothing. Nothing says what the copy was made from (ADR-0126 §9).manage_metadatasees the item disabled, titled with the console'sengine.edit.capabilityReadOnlysentence. A held edit is asked about before the dialog opens, as New is. Delete stays a writable package's flow only. The package-less scope draws no menu: it has no pair and no package to name.f23e0512(PackagedAutomationPage.tsxreadsdata.packageIdintoartifactStudioPath). Checked, not touched.@object-ui/i18n's studio namespace (en + zh),engine.studio.auto.newSimilar.*. zh uses 新建类似, the word the permission-set card (Studio: "New similar" on a base permission set — the copy lands where the clone door puts it (<base>.custom) and opens in Studio; Setup's clone button reads the same #28573) uses for the same gesture.Tests
AutomationsPillar.newSimilar-28567.test.tsx(7 cases), the pillar mounted under the Studio's package route and keyed by package as the surface mounts it, the clone door doubled atfetch:{ name, label }; the router lands on/studio/com.acme.crm.custom/automations?surface=flow:approval_copy; the copy's caption opens; the strip names the package and shows the notice byte-for-byte;package: <open package>; the rail re-reads and opens the copy in place; Delete still offered (control);409verbatim, dialog open on the typed names, nothing opens; a422verbatim too;packageIdopens nothing and says so;manage_metadatathe item is disabled with the reason, and nothing is sent;AutomationsPillar.deleteFlow-27356.test.tsx: the read-only case now pins "the menu offers no Delete" (it used to pin "no menu").scripts/ablation-replace.mjson the committed tree, restored,git diff HEADempty after): target always omitted → 1 red (writable); target always sent → 1 red (read-only); never navigate → 1 red; refusal replaced by the fallback → 2 red; notice dropped → 3 red; disabled reason ignored → 1 red; no-package arm removed → 1 red; Delete drawn on read-only → 1 red; menu drawn in the package-less scope → 1 red.Acceptance notes
getFlow), so a writable package's unpublished draft edits are not copied. The writable dialog says so in one sentence.data.packageId.Verification
At head
ea00d7d3(main merged at9da2f4b0; no incoming commit touches these files):cd ui && vitest runover the 36 app-shell test files that nameAutomationsPillarorFlowItemMoreMenu, pluspackages/i18n/: 130/130 files, 1733 passed / 13 skipped (os-verify-lockVERDICT command-exit 0). The full app-shell suite is left to CI's Test UI shards (a declared narrowing).turbo run type-check --filter=@object-ui/app-shell --filter=@object-ui/i18n(bothtsc --noEmitandtsc -p tsconfig.test.json): 66/66 tasks, VERDICT command-exit 0.dispatch-gates --commands --repo objectstack-ai/objectstack: 34 derived gates, every one exit 0;--ranreconciliation 34 derived, 34 run, 0 NOT-MEASURED, 0 UNRUN. The PR-body gates (check-closing-keyword-parity,check-adr-0087-registration,check-changeset-no-major,check-empty-changeset) ran against this body throughGITHUB_EVENT_PATH, re-run at the final head, pluscheck-sdui-manifest(exit 0, no registry source moved).!in the title, no(narrowing)arm), repo-widepnpm lint(CI's).🤖 Generated with Claude Code
https://claude.ai/code/session_01QsR2jSCZAioSyympShqoHq