Repository navigation
fix(app-shell): Home's activity card names each row's object by its label, through the bell's resolver (objectui#12238) - #12260
Merged
objectstack-fleet[bot] merged 2 commits intoOct 12, 2026
Conversation
…abel, through the bell's resolver (objectui#12238) ActivityObjectLabel moves out of InboxPopover.tsx, unchanged in behaviour, into layout/ActivityObjectLabel.tsx, which the bell and HomeActivity both import. Not re-exported from any barrel or the package entry. Claude-Session: https://claude.ai/code/session_01G5TSaEwbEQsKMjhzTB4rEd Co-authored-by: Claude <noreply@anthropic.com>
…bjectui#12238) Claude-Session: https://claude.ai/code/session_01G5TSaEwbEQsKMjhzTB4rEd Co-authored-by: Claude <noreply@anthropic.com>
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
|
objectstack-fleet
Bot
deleted the
claude/issue-12238-home-activity-object-label
branch
October 12, 2026 14:43
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 #12238
Clause-②: no
Home's activity card printed each row's object by its API name (
3 hours ago · crm_lead). It now renders the sameActivityObjectLabelthe bell's Activity tab has rendered since objectui#12212, so both surfaces name an object one way: the label in the reader's language, the API name only as the fallback. One component, not a second resolver; nothing is copied intosys_activity.Written by the os-dev run dispatched from the
domain:uiseat 2, sessionhttps://claude.ai/code/session_01G5TSaEwbEQsKMjhzTB4rEd.What changed
packages/app-shell/src/layout/ActivityObjectLabel.tsx(new).ActivityObjectLabelmoves here out ofInboxPopover.tsx: the same function body (nowexported) and its docstring, with one paragraph added naming Home as the second consumer. Its privatenonEmptyhelper moves with it. ⛔ Not added tolayout/index.tsor the package entry, so the published surface is unchanged.layout/InboxPopover.tsx. Imports the component from the new module and drops the imports only it used (useObjectLabel,findByName,metadataText). Nothing else changes.console/home/HomeRail.tsx,HomeActivity. The row's second line: FROMtimeAgo(a.timestamp, displayLocale) · {a.objectName}TO the same time, thenActivityObjectLabelwithobjectName={a.objectName}. Two docstrings amended:HomeActivitynow names the resolver, andHomeContinue's sentence that this module "does not itself load the metadata cache" now names the activity card's one read (the object list, only while a row is on screen), which this change would otherwise have made false..changeset/12238-home-activity-object-label.md:@object-ui/app-shellpatch.Measured before building
layout/already holds the activity and inbox modules that other directories import and the barrel leaves out:layout/activityItemType.ts(read byhooks/sharedUserFeeds.ts) andlayout/inboxGrouping.ts(read byhooks/useHomeInbox.ts).console/home/already imports from../../layout/./homemountsHomeRouteinsideProtectedRoute, which wrapsConnectedShell, whose inner component mountsMetadataProvider.I18nProviderwrapsAppinapps/console/src/main.tsx. The bell already renders this component in the same subtree:HomeLayoutmountsAppHeader variant="home", which mountsInboxPopover. Outside a provider,useMetadataand the two i18n hooks fall back without throwing; the existingHomeActivity.readingStates-12081suite renders bare and stays green.layout/ActivityFeed.tsxrenders noobjectNameand has no in-tree mount. TheCommandPalettehit onobjectNameis a cmdk filter value, not display text.Tests
New pin
console/home/__tests__/HomeActivity.objectLabel-12238.test.tsx, shaped like the bell'sInboxPopover.activityObjectLabel-12212.test.tsx: realHomeActivity, realI18nProvider, and a fixedMetadataCtxwhoseobjectsread is counted. Its cells:crm_leadwith aLeaddefinition readsLead.线索from the bundle.crm_gone, which has no definition and no bundle entry, readscrm_gone.The bell's pin is unchanged, with no assertion edited, and it is green.
Ablation (direction written in the test header before the run)
The old line was planted back through
ablation-replace.mjs: anchor hits went x1 → x0, replacement x0 → x1, blob87321257e45f→dfa072c29798. Wrapped run of the Home pin:The fallback and summary cells stayed green, as predicted. The restore is proven rather than assumed: the blob after restore equals the HEAD blob
87321257e45f,git diff HEADis empty, andgit status --porcelainprints 0 lines. The restored run of both pins:Tests 11 passed (11).Local runs
At
3c8e2eb4, the code commit (HEAD7217af89adds only the changeset file):turbo run build --filter=@object-ui/app-shell^...gave 28/28 tasks,VERDICT command-exit 0.vitest runoverpackages/app-shell/src/console/home/,packages/app-shell/src/layout/,chrome/KeyboardShortcutsDialog.wiredOnly-11674.test.tsxandhooks/__tests__/sharedInboxFeed.twoSurfaces.test.tsx:Test Files 84 passed (84),Tests 595 passed (595).pnpm --filter @object-ui/app-shell type-check(tsc --noEmit && tsc -p tsconfig.test.json) exited 0.--listFilesontsconfig.test.jsonlists the new test file (1 hit) and the bell's (1 hit).pnpm --filter @object-ui/app-shell lintexited 0 with 0 errors. No warning falls on a line this PR adds; the oneHomeRail.tsxwarning is the pre-existingTFnany.At
7217af89, these all exited 0: control-bytes, new-line-citations (0 new), vi-mock-inherit, vi-mock-specifiers, vi-mock-override-shape, test-path-roots, changeset-no-major, changeset-presence, changeset-claims, pending-changeset-literals, unreferenced-sources, phantom-deps, unused-deps, self-import, type-check:coverage, lint:coverage and i18n-keys.Narrowing declared: the vitest set is the two directories plus the two tests outside them that import the bell or Home modules. The rest of
pnpm testis CI's. NOT MEASURED locally:check:eager-closure: it weighs a fullapps/consoleproduction build, which is CI's Bundle Analysis job.check:readme-exports: it refused on a prerequisite, unbuilt packages outside this closure. This PR touches no README or export.Acceptance notes
nonEmptynow lives privately in three modules:hooks/useNavTargetLabel.ts,hooks/useRecentItemLabel.tsandlayout/ActivityObjectLabel.tsx. That is the same count as before this PR, when the third copy was inInboxPopover.tsx. It is not consolidated here. Carrier: none.Generated by Claude Code