Repository navigation
fix(console): a nav entry with no icon draws its object's icon, record labels in one style, a small count axis fits, a failed entry load retries (#30126) - #30573
Merged
Conversation
… style Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L6bhgVUJuSB1qgbeFwydba
…d field labels in one style Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L6bhgVUJuSB1qgbeFwydba
Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L6bhgVUJuSB1qgbeFwydba
Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L6bhgVUJuSB1qgbeFwydba
Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L6bhgVUJuSB1qgbeFwydba
Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L6bhgVUJuSB1qgbeFwydba
…oot retry (#30126) Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L6bhgVUJuSB1qgbeFwydba
Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L6bhgVUJuSB1qgbeFwydba
…he next commit) Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L6bhgVUJuSB1qgbeFwydba
…s commit) Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L6bhgVUJuSB1qgbeFwydba
Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L6bhgVUJuSB1qgbeFwydba
Contributor
Author
|
domain:ui#4 · os-sales · session_01L6bhgVfPeFZkN1FP93imKU 维护者速读
席位核对 — ACCEPT · head e6792b4
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 Sales · project thread
Part of #30126
Clause-②: yes (widening)
Metadata-protocol: none
维护者速读
mainand are fixed inui/**: rows 4, 6, 11 and 14. Rows 5 and 10 do not reproduce (readings below). Row 8 reproduces, but its fix is a server object definition, outside this PR.objectnav entry with noicondraws the icon its object declares, in the sidebar and in thenav:menublock. It reads the object by name from metadata the console already holds, adds no request and writes nothing to the navigation.REPAIR COSTno longer reads in capitals beside负责人. They now use the highlights strip's label class.@object-ui/layoutgainsresolveNavItemIcon,NavIconTarget,NavTargetIconResolverand an optionalresolveTargetIconprop onNavigationRenderer, which mirrorsresolveTargetLabel. That is a widening, soClause-②: yes (widening)(the claim saidno, and the seat corrects it). No metadata key, no i18n key, nothing underpackages/**.What changes
ui/packages/layout/src/NavigationRenderer.tsx:resolveNavItemIcon(item, resolver)returns the authored icon; failing that, for anobjectentry, the resolver's answer; otherwiseundefined(the generic icon). The leaf row, including rows inside groups, draws it.ui/packages/app-shell/src/hooks/useNavTargetIcon.ts(new): the console's resolver. It readsreadObjectsByNamefrom the metadata cache, the same by-name read the entry's label already makes. It is wired intoUnifiedSidebar(app arm) andnav-menu-renderer, and added to theopenPathObjectReaders-12811census as abyNamereader.ui/packages/plugin-detail/src/DetailSection.tsx: the field label class goes fromtext-xs font-medium text-muted-foreground uppercase tracking-widetotext-xs font-medium text-muted-foreground(theHeaderHighlightlabel class).ui/packages/plugin-charts/src/normalizeChartSchema.ts+AdvancedChartImpl.tsx:wholeNumberTickCount(axis, values)givesmax + 1ticks when every value is a non-negative integer,1 ≤ max ≤ 3, and the axis has no authoredmin/max/stepSize. Otherwise it returnsundefined, and the axis is drawn as before. This is not exported from the package index.ui/apps/console/index.html: the boot splash adds a captureerrorlistener for a failedtype=moduleentry script before mount. It keeps a per-tab retry count insessionStorage(os-boot-entry-retries, max 5), backs off 1/2/4/8/16 s, clears the count on mount, and does not retry where storage is blocked. The splash still ships no copy.Row readings (real stack,
origin/mainc045c341, showcase app, zh, 1440×900 unless noted)file-text(shot)folder-kanban/check-square/building/receipt, the dashboard row staysfile-text(shot)Users). The Setup labels are English in zh, which belongs to #30504.负责人besideEMAIL/PHONE(shot); en project record:OWNER EMAIL,SPENT,START DATEin capitals (shot)sys_inbox_messageviewmineshows the raw topicnotify(list, popover). The column list is inpackages/services/service-messaging/src/objects/inbox-message.object.ts, outsideui/**, so it is left for the server lane.Row 14 was emulated with a Playwright route abort on the entry chunk, not with a real
os devrestart.Tests
ui/packages/layout/src/__tests__/NavigationRenderer.iconInheritsObject-30126.test.tsx(5): the resolver's precedence and controls, plus rows at the top level and in a group.ui/packages/app-shell/src/views/__tests__/nav-icon-inherits-object-30126.render.test.tsx(3): both surfaces against oneMetadataCtx. It checks that an authored icon stays, an object with no icon and a dashboard entry keep the generic glyph, and a changed object icon shows on rerender with the navigation unchanged.ui/packages/plugin-detail/src/__tests__/DetailSection.labelStyle-30126.test.tsx(2): Latin and CJK labels share one class with nouppercase, and match the highlights strip.ChartRenderer.integerMeasureTicks-11681.test.tsx: plus 6 tests for the small-count axis and its controls (fractional, count ≥ 4, authored max).apps/console/src/__tests__/bootSplash.test.ts: plus 5 tests for the retry, back-off, cap, reset on mount, and storage blocked.item.icon, thenav:menurow back toitem.icon,uppercaserestored on the section label, the axistickCountspread dropped, the splash'slocation.reload()removed, and the reset of the retry count on mount removed.Verification
@object-ui/layout,plugin-detail,plugin-charts,app-shell(re-run after themainmerge),console.anywarning inbootSplash.test.tsfixed).node scripts/pm/dispatch-gates.mjs --commands: 36 derived families pluspnpm --dir ui run check:new-line-citations, all exit 0.pnpm --dir ui exec vitest run scripts/was OOM-killed beside the loop and passed run alone: 170 files passed (2 skipped), 4985 tests.origin/main(f33b094f):vitest run packages/layout/ packages/plugin-detail/ packages/plugin-charts/ apps/console/src/__tests__/ packages/app-shell/src/layout/ packages/app-shell/src/views/__tests__/ packages/app-shell/src/hooks/+ theopenPathObjectReaders-12811census: 923 files passed (1 skipped), 8557 tests passed (27 skipped).a0ade7b6(evidence/30126/, removed from the tree by the next commit).Acceptance notes
maxBarSizewould change every bar chart, so it was left alone.columnsof viewmine) and rows 9, 12, 13, 15, 16 stay on the card.🤖 Generated with Claude Code
https://claude.ai/code/session_01L6bhgVUJuSB1qgbeFwydba