Filing-gate category: ① a product defect with named sites, class (a). reach: a public door, measured: the Studio Interfaces pillar on an app whose own label is a spec-valid I18nLabel map.
- Measured. The objectui#11158 dev ran an uncommitted probe (deleted after, tree clean): the real
InterfacesPillar in PR objectui#11179's harness (happy-dom, mocked metadata client), with an app whose label is { en: 'Acme', 'zh-CN': '顶点' }. The rail heading reads [object Object] · Navigation under en and [object Object] · 导航 under zh.
- Confirmed at source. PR objectui#11179's contract review (
5906038524, ③ (a)) confirmed the sites below at its head e591e1dfd, pre-existing and outside every hunk. AppSchema.label is I18nLabelSchema.
This is the family's closure card. The family: a Studio read of a spec I18nLabel as a string.
- Earlier members: objectui#11100 (the app preview), objectui#11128 (the app designer's canvas), objectui#11148 (the nav-item inspector), objectui#11158 (the Interfaces rail's nav labels).
- The enumeration below is meant to be complete for
packages/app-shell/src/views/studio-design/. A later site in that directory with an I18nLabel read through String() rides this card, ⛔ not a new one.
Reader: triage first (grade and route), then the seat that dispatches it. Filed by domain:ui seat 2 (session_011p7ikEivgXefNDaE5S5Uec) at the ACCEPT of PR objectui#11179 (objectui#11158), from the dev report's out_of_scope_findings[0] (5905816901) and the review's enumeration. ⛔ Not graded here.
The enumeration (non-test sources at PR objectui#11179's head; cite by content)
All four sites are in packages/app-shell/src/views/studio-design/StudioDesignSurface.tsx and read the app's own label.
StudioDesignSurface, the resolvePackageApp callback: String(a.label ?? a.name ?? '') over shellClient.list('app', { packageId }), into packageApp. Latent today: packageApp is read only as a boolean gate.
StudioDesignSurface, the resolvePackageApp callback: String(d.label ?? d.name) over the first listDrafts({ type: 'app' }) header, into the same sink.
InterfacesPillar, the app-load effect: String(published[0].label ?? published[0].name ?? packageId) into label, then setAppLabel(label). This is visible in the rail heading through tFormat('engine.studio.if.navHeading', …).
InterfacesPillar, the app-load effect: setAppLabel(String(body.label ?? body.name ?? label)), under a typeof body.label === 'string' || typeof body.name === 'string' guard, which a map label beside a string name passes. This is the measured [object Object] · Navigation.
Excluded, with the review's reason (the spec types these labels as z.string(), not I18nLabel):
- the object labels in
loadPackageObjects, InterfacesPillar's package-objects effect, DataPillar's rail load, and PackageOwdOverviewPanel (two sites);
- the field label in
ObjectFormDesigner.fieldLabelOf;
- the hook label in
ObjectHooksPanel;
- the permission-set label in
AccessPillar's rail load;
packageSurfaces.loadPackageSurfaces.
Adjacent, for the same pass:
ObjectActionsPanel.labelText is a second local resolver of ActionSchema.label (an I18nLabel). It should be the one helper, not a String() read, and not a second copy of the key choice.
- Read in source, not measured: PR objectui#11179 resolves a nav item's label once, into the
Surface held while a leaf is open, so after a designer-language switch the canvas caption and breadcrumb keep the old locale's text until another leaf is picked. A nav-editing rename leaves the caption stale the same way, and that half predates PR objectui#11179.
Direction (for triage, not a ruling)
- Sites 1–4 resolve through the family's one helper, the spec's
resolveI18nLabel in the designer locale (as navItemLabelText does), and ⛔ never String() a label.
- Sites 3–4 feed the rail heading.
ObjectActionsPanel.labelText folds onto that helper.
- Pins:
- under en and under zh, a map-labelled app shows its text in the rail heading, with no
[object Object];
- a plain-string label is unchanged (the control).
- Serial.
StudioDesignSurface.tsx is objectui#11167's file (the Edit toggle's read-only race), so the two run one after the other.
Dedupe
The 1000 most recently updated objectui issues and PRs (down to #10338) were grepped:
navHeading and resolvePackageApp: 0 hits.
appLabel: objectui#7388 and objectui#10617 only, both closed and both about other components.
- An app label printing
[object Object]: objectui#11100 / PR objectui#11127 / PR objectui#11098, the app PREVIEW, closed.
No card covers the Studio designer's own app-label reads.
Generated by Claude Code
Filing-gate category: ① a product defect with named sites, class (a).
reach:a public door, measured: the Studio Interfaces pillar on an app whose ownlabelis a spec-validI18nLabelmap.InterfacesPillarin PR objectui#11179's harness (happy-dom, mocked metadata client), with an app whose label is{ en: 'Acme', 'zh-CN': '顶点' }. The rail heading reads[object Object] · Navigationunder en and[object Object] · 导航under zh.5906038524, ③ (a)) confirmed the sites below at its heade591e1dfd, pre-existing and outside every hunk.AppSchema.labelisI18nLabelSchema.This is the family's closure card. The family: a Studio read of a spec
I18nLabelas a string.packages/app-shell/src/views/studio-design/. A later site in that directory with anI18nLabelread throughString()rides this card, ⛔ not a new one.Reader: triage first (grade and route), then the seat that dispatches it. Filed by
domain:uiseat 2 (session_011p7ikEivgXefNDaE5S5Uec) at the ACCEPT of PR objectui#11179 (objectui#11158), from the dev report'sout_of_scope_findings[0](5905816901) and the review's enumeration. ⛔ Not graded here.The enumeration (non-test sources at PR objectui#11179's head; cite by content)
All four sites are in
packages/app-shell/src/views/studio-design/StudioDesignSurface.tsxand read the app's own label.StudioDesignSurface, theresolvePackageAppcallback:String(a.label ?? a.name ?? '')overshellClient.list('app', { packageId }), intopackageApp. Latent today:packageAppis read only as a boolean gate.StudioDesignSurface, theresolvePackageAppcallback:String(d.label ?? d.name)over the firstlistDrafts({ type: 'app' })header, into the same sink.InterfacesPillar, the app-load effect:String(published[0].label ?? published[0].name ?? packageId)intolabel, thensetAppLabel(label). This is visible in the rail heading throughtFormat('engine.studio.if.navHeading', …).InterfacesPillar, the app-load effect:setAppLabel(String(body.label ?? body.name ?? label)), under atypeof body.label === 'string' || typeof body.name === 'string'guard, which a map label beside a string name passes. This is the measured[object Object] · Navigation.Excluded, with the review's reason (the spec types these labels as
z.string(), notI18nLabel):loadPackageObjects,InterfacesPillar's package-objects effect,DataPillar's rail load, andPackageOwdOverviewPanel(two sites);ObjectFormDesigner.fieldLabelOf;ObjectHooksPanel;AccessPillar's rail load;packageSurfaces.loadPackageSurfaces.Adjacent, for the same pass:
ObjectActionsPanel.labelTextis a second local resolver ofActionSchema.label(anI18nLabel). It should be the one helper, not aString()read, and not a second copy of the key choice.Surfaceheld while a leaf is open, so after a designer-language switch the canvas caption and breadcrumb keep the old locale's text until another leaf is picked. A nav-editing rename leaves the caption stale the same way, and that half predates PR objectui#11179.Direction (for triage, not a ruling)
resolveI18nLabelin the designer locale (asnavItemLabelTextdoes), and ⛔ neverString()a label.ObjectActionsPanel.labelTextfolds onto that helper.[object Object];StudioDesignSurface.tsxis objectui#11167's file (the Edit toggle's read-only race), so the two run one after the other.Dedupe
The 1000 most recently updated objectui issues and PRs (down to #10338) were grepped:
navHeadingandresolvePackageApp: 0 hits.appLabel: objectui#7388 and objectui#10617 only, both closed and both about other components.[object Object]: objectui#11100 / PR objectui#11127 / PR objectui#11098, the app PREVIEW, closed.No card covers the Studio designer's own app-label reads.
Generated by Claude Code