Repository navigation
feat(app-shell): a Studio item header keeps the item name readable; chips, tools and labels give way first - #29765
Merged
Conversation
The title keeps its first twelve characters readable; on a narrower row the identity chips and the item tools fold into the item's more menu (the pillar's own, or one the header draws), so the menu trigger stays inside the column. The pillar rails draw the customization mark as its glyph alone. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QsR2jUYXmZ6DQBWc6piyyF
Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QsR2jUYXmZ6DQBWc6piyyF
… actions icon-only Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QsR2jUYXmZ6DQBWc6piyyF
…ools' sheets Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QsR2jUYXmZ6DQBWc6piyyF
Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QsR2jUYXmZ6DQBWc6piyyF
Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QsR2jUYXmZ6DQBWc6piyyF
…r in the item's folded menu At the live job's 1280 px window with the Interfaces inspector open, the item header folds its identity chips into the item's more menu so the item's name stays readable, so the published pair's override chip is looked for in the row first, then in the menu's chips entry, and the menu is closed again before the next step. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QsR2jUYXmZ6DQBWc6piyyF
Contributor
Author
|
domain:ui#4 · zhuangjianguo · session_01QsR2jR7ZFkpqmm4U8S1f9y 席位核对 · ACCEPT · 2026-11-03T04:59ZHead-sha:
Generated by Claude Code |
This was referenced Nov 3, 2026
Merged
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.
domain:ui#4 · zhuangjianguo · session_01QsR2jR7ZFkpqmm4U8S1f9y
Requested by Steedos · project thread
Fixes #29693
Clause-②: no
Metadata-protocol: none
维护者速读
foldMenu的标题行行为不变。回滚即 revert 本 PR。StudioItemHeader.tsx(折叠测量useTitleRowFold与菜单内容StudioItemHeaderFoldedItems)、StudioItemTools.tsx(工具交出菜单形态)、StudioDesignSurface.tsx(三个标题行的foldMenu)。What changes
The item header's title row (
StudioItemHeader) now keeps the item's name readable, measured on the header's own row, never the viewport:chips: kind, override, pair) and the five item tools leave the row. They read at the top of the ⋯ menu: the chips as one menu entry whose choice keeps the menu open, then the tools as menu items with the same test ids as the buttons, opening the same sheets.StudioItemToolshands its menu form to the header throughuseStudioItemHeaderFold.STUDIO_FOLD_LABEL, agroup-datavariant ofsr-onlykeyed on the actions slot'sdata-foldattribute). Customize keeps the first slot of the actions.foldMenu):'pillar'for Interfaces and Automations, whose own ⋯ menus mountStudioItemHeaderFoldedItems; an object for the Data header (and for an Interfaces or flow item while its own menu is not drawn), where the header draws a ⋯ of its own while something is folded. A header withoutfoldMenu(Access, the permission matrix) is unchanged.RailCustomizationMarkdrawsCustomizationMarkwithcompact: the glyph alone (violet pencil-ruler for customized, emerald plus for added), the text as its accessible name and the first line of its tooltip. The All metadata lists keep the text mark.Files beyond the claim's first surface (
StudioCustomizeControls.tsx,FlowLedgerSwitch.tsx,StudioItemTools.tsx,FlowItemMoreMenu.tsx) are covered by the seat's amendment record 6593712299.For the cards that build on this header
StudioItemHeaderrendered between the title-row div and thenavtab row. Keep it out of the title row: the fold measures the title row's boxes only, so a line under it costs the title nothing.studio-item-header-folded-chips, which keeps the menu open when chosen, so a popover trigger on the chip still works from there. Restore package original also stays a ⋯ menu item in both the Interfaces and flow menus.Tests
StudioItemHeader.titleRowFold-12897.test.tsx(shared stubbed-geometry harness), two new describes: stage 1 at 330 px, the menu's contents and a tool firing its action, following the row both ways, a 470 px CONTROL that stays folded, a 632 px CONTROL with nothing folded, and a CONTROL header withoutfoldMenu; then the order: stage 1 alone at 560 px, stage 2 at 420 px, the title cut last at 300 px with the ⋯ still there, unfolding in reverse, icon-only Customize and ledger switch keeping their labels as accessible names and firing the same handlers, and the chips as one menu entry.StudioDesignSurface.itemTools-28239.test.tsx: the realStudioItemToolsfolded into the header's ⋯; each of Layers, References, History, Audit and Source opens its sheet from the menu and reads the same door as its button.StudioDesignSurface.oneSurface-28572.test.tsx: the Interfaces rail's customized and added marks are glyph-only with their text as accessible name and tooltip lead.Readings
titleRowFold-1289717/17,itemTools-282399/9,oneSurface-2857213/13.scripts/ablation-replace.mjs, restored to the HEAD blob):titleRowFold-1289710 failed, 7 passed; the 7 are the five objectui#12897 cases and the two no-fold CONTROLs.git grep -lover StudioItemHeader, StudioItemTools, CustomizationMark, StudioRailCustomizations, FlowItemMoreMenu, FlowLedgerSwitch, StudioCustomizeControls, studio-tokens, StudioDesignSurface): 228 files, 1713 tests, all passed, in five locked batches at head 08039a0. The later commits are the changeset text, a test prop the type-check asked for, and the merge ofmain.main(head eaea6c6, 23 incoming commits, one touchingStudioDesignSurface.tsx's Access banner, no overlap): app-shelltype-check(src and tests) exit 0;check-sdui-manifestexit 0; the three pin files plus the two incoming Studio tests that touchStudioDesignSurface(accessPairCopy-29674,customizePublish-28562): 5 files, 49 tests passed. Mergedmainagain right before opening (head 205c453, six incoming commits; one changesStudioDesignSurface.tsx's field-name helpers only): app-shelltype-checkexit 0,check-sdui-manifestexit 0, the three pin files 39/39.pnpm --dir ui exec vitest run scripts/: 170 files passed, 2 skipped.dispatch-gates --commands): 35 derived, 35 run, all exit 0;--ranreconciles 0 NOT-MEASURED.studio-customize-journey.spec.ts, seat amendment record 6595035315): at the job's 1280 x 720 window with the Interfaces inspector open, the header folds its identity chips, so the published pair's override chip is looked for in the row, else instudio-item-header-folded-chipsafter openingif-item-more, and the menu is closed again. Run locally against the showcase backend (ui/e2e/live/ci/start-backend.sh, Console built withVITE_BASE_PATH=/and served byvite preview): the spec at 205c453 fails at L137 exactly as CI job 125715096807 did (studio-override-chipnot found); with the fix (b0949a5) 3 of 3 runs pass (19.3 s, 17.3 s, 17.8 s). Derived gates on b0949a5: 35 derived, 35 run, all exit 0;--ran0 NOT-MEASURED; eslint on the spec 0.Acceptance notes
foldMenu: it has no chips or tools to fold, and its name was whole before and after.Verification
Live, on the showcase app (
objectstack dev --seed-admin --fresh) with the Console on Vite, Chromium at 1024 x 768, zh-CN, right panel open. The report and the flow were customized, published, and edited again, so each header carries its kind chip, override chip, draft status, the five tools and ⋯. Before = this branch with the nine changed source files swapped back toorigin/main; after = this branch.Before, the three folding rows were wider than the row (scroll widths 643, 558 and 631 px for a 436 px row). After, the ⋯ menus list the folded chips entry, then Layers, References, History, Audit, Source, then the pillar's own items. The flow rail's selected customized row reads "Project Budget …" with the glyph mark. Screenshots and the raw readings are with the seat.
Generated by Claude Code