Repository navigation
feat(app-shell): the product mark stays top-left as the home button; the app menu gains Back to home, All apps and Settings (objectui#12605) - #12650
Closed
objectstack-fleet[bot] wants to merge 7 commits into
Conversation
…tton; the app menu gains Back to home, All apps and Settings Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XVp19E1MYUTFM3dnkwz8gB
…p menu order (objectui#12605) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XVp19E1MYUTFM3dnkwz8gB
…n any (objectui#12605) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XVp19E1MYUTFM3dnkwz8gB
…tes that stub the app pill keep the header (objectui#12605) Eleven-plus AppHeader suites stub ../AppSwitcher with a bare factory; with GO_HOME_SHORTCUT exported from AppSwitcher the header read undefined off the stub and every one of them failed. The chord now lives in chrome/advertisedShortcuts beside the other registry types, read by both holders.
…ng the sidebar trigger's slot (objectui#12605) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XVp19E1MYUTFM3dnkwz8gB
Contributor
✅ Console Performance Budget
The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it. 📦 Bundle Size Report
Size Limits
|
Contributor
Author
|
Superseded by #12651: the same tree for every file this PR changed, rebuilt on current main as one commit (ba5461f) with the model-free trailer pair, because this branch's commits carry model-named co-author trailers. Closing this one; the branch is left as is. Generated by Claude Code |
This was referenced Oct 16, 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.
Fixes #12605
Clause-②: no
Inside an app the product mark stays top-left as the home button, and the app pill's menu gains Back to home, All apps and Settings, per the maintainer-approved artboard (
AppBar.html).What changed
AppHeader.tsx): sidebar trigger, the product mark, a drawn/rule, the app pill, the PREVIEW chip. The mark is one component (ProductHomeMark) used on every surface, the home page, the organizations and Studio front doors and inside every app: a 32 px link holding a 24 px tile on--primarywith the stack glyph (or the deployment logo). Its accessible name islayout.appSwitcher.productHome({{product}} home/ 「{{product}} 首页」) fromgetProductName(); it links tohomePath(/homeunless the deployment declares a landing, the objectui#7256 rule the old logo already followed).h-7 w-7 shrink-0 mr-1,aria-hidden) before the mark; the mark does not jump when the viewer goes home.⌘⇧H/Ctrl+Shift+Hgoes home from any app page with a push (Back returns). It skips text inputs, textareas, selects, content-editable regions and ARIA textboxes, and events alreadydefaultPreventedor composing. The chord lives in the shortcut registry (chrome/advertisedShortcuts.ts,GO_HOME_SHORTCUT) and is advertised to the keyboard-shortcuts dialog under the same gate as the listener.AppSwitcher.tsx): Switch Application lists the installed apps with the current one checked and without Setup; a divider; Back to home (keycaps drawn from the same chord), All apps, Settings (the Setup app, shown only when the viewer's app list carries it; checked inside Setup); then Edit APP in Studio after a second divider, its gate untouched.titlenames the app (tooltip and accessible name). The pill was previously hidden belowsm.layout.appSwitcher.backToHome,layout.appSwitcher.settings,layout.appSwitcher.productHome,console.shortcuts.goHomein all ten locales; zh uses the card's words (返回首页, 系统设置, 首页).data-testidstays; new ones:app-bar-product-home,app-bar-home-separator,app-bar-trigger-slot,app-switcher-home,app-switcher-settings.Tests (head 0590733)
AppHeader.homeMark-12605.test.tsx(left-group order, name +/homelink, click lands home, pill drawn at every width, chord advertised as ⌘⇧H, ⌘ and Ctrl push/homeand Back returns, chord left to a text field, ⌘H alone does nothing, home page: same mark, no rule, no advertisement, trigger slot held),AppSwitcher.homeMenu-12605.test.tsx(menu order, Setup absent from the switch group, keycaps, Settings target and check, no Settings without Setup, sub-smclasses and title).--maxWorkers=1, repo root): all 80packages/app-shell/src/layoutsuites +src/chrome(36 + 58 files, 290 + 382 tests, exit 0),src/__tests__+console/home(43 files, 567 tests, exit 0),packages/i18n(83 files, 1321 tests, exit 0). After mergingmain: AppHeader/AppSwitcher suites + every app-shell test file the merge brought in (31 files, 264 tests, exit 0).switchApps = activeApps(Setup filter removed), landed viaablation-replace.mjs(anchor 1 to 0, blob 3f315e70 to 656696e8) and turned 3 of 7 menu tests red; restored withgit checkout HEAD --,git diff HEADempty, blob hash matches HEAD.@object-ui/i18nand@object-ui/app-shell: exit 0 (after rebuilding the four depsmainchanged: auth, components, fields, i18n).check:*listed in the dispatch),check-hand-rolled-comment-mask,check-changeset-fixed: all exit 0; i18n, control-bytes, unreferenced-sources, self-import, phantom-deps and changeset-fixed re-run on the merged head, exit 0.--no-inline-config --format json): 16 files, 0 errors, 20 warnings (allno-explicit-anyon pre-existing lines). The config enables no type-aware linting, so this diff cannot move any untouched file's verdict.packages/app-shellpackage (1442 test files; at--maxWorkers=1it exceeds the foreground cap), andapps/consolesuites.Acceptance notes
AppHeader.appIdentity-12201.test.tsxchanged: its item-4 cell pinned "no platform mark in app context", the ruling this card reverses. It now pins the mark before the pill; the "no crumb separator precedes the pill" cell is unchanged in substance.AppSwitcherreadsSETUP_APP_PACKAGE_ID/SETUP_APP_NAMEfromconsole/ConsoleShell(render-time use only), resolving Setup in the same order asresolveSetupAppPath.size-8) and fits.Changeset
.changeset/12605-app-bar-home-mark.md:@object-ui/app-shellpatch,@object-ui/i18npatch. No package export is added (GO_HOME_SHORTCUTis internal tochrome/advertisedShortcuts, not re-exported from the package index).Generated by Claude Code