Repository navigation
i18n(zh-CN): "pillar" translated as 支柱 with pillar names left in English; timezone settings keys missing #11801
Description
Filing gate ① — product defect with a named location and a reproduction. reach: Studio in zh-CN, and first open of an app in en.
Who acts on it: objectui triage → the Studio / app-shell owner. ⛔ Not a claim. Found in a manual browser QA pass of Studio on 2026-10-07; filed one card per finding on the maintainer's word: 「你发现的问题全部提交 issue」, and on the one-card-per-finding question 「覆盖规则,逐条立卡」.
What happens
- zh-CN strings translate "pillar" literally as 支柱 and leave pillar names in English: "这个软件包还没有对象 — 先到 Data 支柱创建。"
- The workspace-timezone prompt (first app open) logs at least 25 "[object-ui i18n] Missing translation for "workspace|sidebar|user|organization|app.settings.localization.keys.timezone.*" (language "en")" warnings; its help reads "IANA zone for today()/daysFromNow, analytics date buckets, and rendered datetimes."
Suggested direction (triage to rule)
Use 数据 / 自动化 / 界面 (the zh tab labels already used) in all zh strings; add the timezone keys and an author-facing help line.
Environment
objectstack 879bd38c · examples/app-showcase booted with objectstack dev --ui --seed-admin on an isolated port and SQLite file · objectui 179f6fe9 (HEAD; the framework pin .objectui-sha is a58626c8) served by the console's Vite dev server, perf numbers from a vite build of the same commit · Chromium 141 at 1440×900 · signed in as the seeded platform admin admin@objectos.ai unless stated.
Duplicate check
- Semantic issue search on objectstack-ai/objectui (open and closed), zh-CN pillar translation 支柱 timezone missing translation keys: 2 hits (0 open, 2 closed).
- Semantic issue search on objectstack-ai/objectui (open and closed), zh-CN Studio untranslated strings English left in Chinese UI timezone settings: 8 hits (0 open, 8 closed).
- Related, not the same defect:
- finding(app-shell,i18n): 19 designer preview files render English chrome under zh-CN — the designer-English family's successor closure card once objectui#10848 closes #10862 (closed) — zh-CN designer leftovers family
- finding(core,app-shell,i18n): console strings PR objectui#10953 left English under zh-CN — the runner's other fallbacks, the other system/* breadcrumb segments, the Build Doctor drawer body, and 'manifest ID' in every pack #10969 (closed) — zh-CN leftovers family
- console: the localization fetch drops the
timezonethe server sends for the signed-in user, so no renderer can show dates in the user's or tenant's zone #11693 (closed) — timezone handling, but data plumbing not missing translation keys
- Positive control in the same run: related lists action id refusal notice shown to end users on objectstack-ai/objectui returned related lists: an action id the related object does not define draws a refusal notice above the list for whoever opens the record — an authoring fault shown to end users; scope it to authors/admins #11768: yes.
Dedupe words: zh-CN pillar 支柱 translation · timezone settings missing translation keys · IANA zone help text
Filed by Claude Code (session session_01D76mrPJrSSdaKRxR2rvrMG) from that QA pass.
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 7, 2026
Path: ② the capabilities an end user meets in the app — the zh-CN interface | 缺项 | P3
Triage: first grade,
bug·priority:p3·domain:ui·area:i18n·pm:queue. Direction as the body proposesTriage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-07T17:24Z. ⛔ Not a claim, ⛔ not a dispatch.Triage: lands in the zh-CN locale (
packages/i18n/src/locales) ⇒domain:ui; rationale: a Studio or console surface in objectui. Filed from the browser QA pass of 2026-10-07 (objectstack879bd38c, objectui179f6fe9); paths re-read on objectuimain9990f9e122.Clause-②: no. Patch changeset in objectui.objectstack-fleet commentedon Oct 8, 2026
Claim: PM loop round 8
Session:
session_01DrKzdPdyLLBW3qpZ4vtk7zAccount:
huangyiireneBranch:
claude/issue-11801-zh-pillar-timezone-labelsWorktree:
objectui-issue-11801Domain:
domain:uiSeat:
domain:ui#1File surface (line numbers on
5aa7f55):packages/app-shell/src/views/metadata-admin/i18n.tsthat say 支柱 or leave a pillar name in English inside Chinese text. Examples:engine.studio.nav.noObjects(:5992) andengine.studio.if.objectHintPost(:6010). Values only, in the zh tab labels already in use (数据 / 自动化 / 界面). The dev enumerates every such row with a grep and names each one.Clause-②: noroute.apps/console/src/pages/settings/useSettingsLabel.ts:resolve()'s probing (about:70–:85), only if the ~25 "Missing translation" warnings come from it probing namespaces that hold no tree for this settings namespace.apps/console/src/pages/settings/WorkspaceTimezonePrompt.tsx: only if the prompt renders its help text itself..changeset/11801-*.md.⛔ Not on it:
6050311093):ObjectFieldInspector.tsx's Label input and itsdesigner.field.*rows.packages/i18n/**.en.tsends inas constand exportsTranslationKeys = typeof en, so a new key there widens a published type. That isClause-②: yes.TranslationData.settings.<namespace>. That is another repository.If item 2's keys can only go into
packages/i18nor into objectstack, the dev stops that item and reportsneeds_decisionwith the four-axis analysis. Item 1 then lands alone asRefs #11801 (item 1). Any other file outside this list: the dev reports it before opening the PR (stop on breach; explain in the report).Container & model:
M,mode:subagent,model: opus(dispatch-gates --tier --repo objectstack-ai/objectuiover these paths: no path-derived mandate; default tier)Clause-②: no
Responsibility:
objectui app-shell Studio and console settings: zh strings translate "pillar" as 支柱 and leave the pillar names in English, and the workspace-timezone prompt logs ~25 missing-translation warnings and shows developer help text | item 1: none, the zh tab labels already exist; item 2: measured first, because the settings label convention reads TranslationData.settings.<namespace>, which may be the server's | every zh-CN author in Studio, and every administrator at an app's first open, measured by the filer in the 2026-10-07 QA passThread-read: 6043149043
Serial constraints cleared:
noneblocking.area:i18nin flight: seat 3's objectui#11782 (claim6050311093). Its surface isObjectFieldInspector.tsx's Label input and newdesigner.field.*rows. This card edits only existing ZH rows elsewhere ini18n.ts, plus console settings files, so the two are disjoint.i18n.ts(objectui#11786, a11y: form-designer drag-and-drop announces internal ids ("Draggable item f:name … g:new_group") #11802, studio(interfaces): create flows for list views, dashboards, reports and pages in a writable package (ADR-0084), after #11790's nav item types #11823 and others) add rows under their own prefixes. This card changes values of existing rows, so whichever lands second mergesmain.apps/console/src/pages/settings/orpackages/i18n/. Read 2026-10-08T02:07Z.batch3, on the maintainer's word in this session's chat: 「改为并行派发,batch 3」, and 「继续派发」 today.Why
Clause-②: no: item 1 changes values of app-shell's unexportedENGINE_STRINGS. Item 2 may only take a route that adds no published key and no accepted input;packages/i18nand objectstack are fenced off above, and the dev stops if the fix needs either.objectstack-fleet commentedon Oct 8, 2026
os-dev-report
{
"issue": 11801,
"status": "needs_decision",
"branch": "claude/issue-11801-zh-pillar-timezone-labels",
"pr": "#11870",
"session": "session_01DrKzdPdyLLBW3qpZ4vtk7z",
"premise_still_valid": true,
"summary": "Item 1 landed. Every zh designer-table value was enumerated through readDesignerPairs, and exactly two rows said 支柱: engine.studio.nav.noObjects (also English "Data") and engine.studio.if.objectHintPost. Both now name the Data pillar by its zh tab label 「数据」 (objectHintPre ends in 「). The object-leaf hint's English "Data" was a literal span in StudioDesignSurface.tsx, not a table row, so that one line now renders t('engine.studio.pillar.data', locale). It is outside the claim's file surface and was taken under the bounded in-place exemption: all four conditions hold, no claim holds that line, and the en text is byte-identical. The seat should add it to the claim's surface. EN rows name the pillar by its en tab label, so no EN change. Item 2 split. The warnings half landed console-only: useSettingsLabel.resolve() now calls i18n.exists(key) before t(key), so convention probes that fall back by design log nothing. This adds no key, export or input (Clause-② no) and keeps the one settings-label convention (TranslationData.settings served under app, manifest literal as fallback). The help-wording half cannot be done here: the developer help line is objectstack service-settings copy (translations en/zh-CN/ja-JP/es-ES plus the localization.manifest.ts description). Its four-axis decision is in open_questions, and the PR first line is "Refs #11801 (item 1, and the missing-translation warnings of item 2; …)". Premise: the defects are real, but the triage mechanism for item 2 ("add the missing timezone keys to every locale") is falsified. objectstack already serves settings.localization.keys.timezone.label/.help in all four locales. The warnings were probes into four built-in namespaces whose settings member is a menu label or another page's strings (workspace, sidebar, user, organization), plus app.…timezone.options.ZONE probes that the server deliberately leaves untranslated.",
"tests": "HEAD for the gate union: 3c268bb (git rev-parse --short HEAD), the merge commit "Merge origin/main (456238c) into claude/issue-11801-zh-pillar-timezone-labels", made per the PM note so the branch carries objectui#11852 (5d69133, ancestor check exit 0) and its lowered eager-closure ceiling. It merged cleanly, with no lockfile or package.json change, and the item-1 rows and span survive it (0 支柱 rows; zh enumeration re-run on the merged tree: only the two non-pillar false positives). Branch commits: fe632eb (fix + pins + changeset), 4143a03 (test typing), 3c268bb (merge). files_changed (vs merge-base 456238c): .changeset/11801-zh-pillar-timezone-labels.md · apps/console/src/pages/settings/useSettingsLabel.ts · apps/console/src/pages/settings/tests/useSettingsLabel.conventionProbe-11801.test.tsx (new) · packages/app-shell/src/views/metadata-admin/i18n.ts (3 ZH values) · packages/app-shell/src/views/studio-design/StudioDesignSurface.tsx (1 line) · packages/app-shell/src/views/studio-design/StudioDesignSurface.zhPillarNames-11801.test.tsx (new). || HYPOTHESES. H1: holds with a correction. The 支柱 rows are exactly two (engine.studio.nav.noObjects, engine.studio.if.objectHintPost). Only one ZH row leaves a pillar name in English (noObjects, "Data"). The other English "Data" is a JSX literal span in StudioDesignSurface.tsx, not a ZH row. The case-insensitive probe also hit engine.inspector.appNav.mode.filters ("/data" path) and perm.posture.private.tip ("access.default" key); neither names a pillar. Tab labels measured: the tab bar renders t(
engine.studio.pillar.${p.key}) = 数据/自动化/界面/权限. H2: holds with corrections. (a) The bundles: the four namespaces workspace/sidebar/user/organization are the BUILT-IN packages/i18n en pack (settings members: three menu-label strings and the organization page group). app is server-delivered TranslationData, put under app by transformSpecTranslations in apps/console loadLanguage. Every other settings namespace's labels live the same way: objectstack service-settings translations served as TranslationData.settings, manifest literal as fallback. (b) The count is larger than ~25. Measured with the real 17-option timezone spec: 93 distinct warnings with the server tree served (label 4 + help 4 + options 17x5) and 76 with none served (app not discovered). The card's 25 is a lower bound. (c) Not only namespaces without a tree: app misses every option label because the server en tree has none, by design. H3: holds. The help text "IANA zone for today()/daysFromNow, analytics date buckets, and rendered datetimes." is objectstack packages/services/service-settings/src/translations/en.ts settings.localization.keys.timezone.help (zh-CN/ja-JP/es-ES carry the same developer wording). A near-copy ("IANA zone used to resolve …") is the manifest description in localization.manifest.ts. Read at objectstack origin/main 033e5c53. Owner: objectstack service-settings. || RED-FIRST + REVERSE (all through os-verify-lock; mutations through objectstack scripts/ablation-replace.mjs: anchor x1 -> x0, blob changed; restore blob == HEAD and git diff HEAD empty in every leg). Item 2 pin on unmodified source: "Tests 2 failed | 1 passed (3)". 169 warning lines captured across the two no-warning cases. After the fix: "Tests 3 passed (3)". Reverse on the committed fix, deleting the i18n.exists line: "Tests 2 failed | 1 passed (3)" (predicted: turns red). Item 1 leg A, literal Data span restored with the zh rows kept: "Tests 1 failed | 3 passed (4)". Received "运行态列表预览 · 改字段 / 结构请到「Data」" (predicted: only the zh render pin reds). Item 1 leg B, all four item-1 edits reverted: "Tests 3 failed | 1 passed (4)". Offenders ["ENGINE_STRINGS_ZH engine.studio.nav.noObjects","ENGINE_STRINGS_ZH engine.studio.if.objectHintPost"]; the en render pin stays green (predicted). No build/dist leg is involved: every subject is imported by relative src path. || GATES (command -> exit -> verdict line). pnpm --workspace-concurrency=2 --filter '@object-ui/console^...' build -> 0 -> "VERDICT command-exit 0" (the closure includes app-shell and its dependency closure). pnpm --workspace-concurrency=2 --no-bail --filter @object-ui/app-shell --filter @object-ui/console type-check -> 0 -> "packages/app-shell type-check: Done" / "apps/console type-check: Done". The first attempt was red: TS7016 on the untyped scripts/.mjs import, fixed in 4143a03 the way sibling suites do. tsc --listFilesOnly shows both new tests in their programs (1/1). pnpm exec vitest run --maxWorkers=2 on the union (apps/console/src/pages/settings/ + every app-shell test importing StudioDesignSurface or metadata-admin/i18n + scripts/tests/check-i18n-designer-table-parity.test.ts + check-i18n-en-drift.test.ts) re-derived on the merged tree, at HEAD=3c268bb -> 0 -> "Test Files 156 passed (156) / Tests 1610 passed (1610)" (the pre-merge run at 4143a03 read 149/1538). The closure build and both type-checks were re-run at 3c268bb -> 0 -> "VERDICT command-exit 0". All check gates below were re-run at 3c268bb after the merge, i18n-designer-parity and i18n-drift included, each exit 0. pnpm check:control-bytes -> 0 -> "check-control-bytes: OK". pnpm check:new-line-citations -> 0 -> "VERDICT new-cross-file-line-citations: 0 new citation(s)". pnpm check:changeset-claims -> 0 -> "No pending changeset names a file this change touches." pnpm check:pending-changeset-literals -> 0 -> "No test source names a pending changeset." pnpm check:i18n-designer-parity -> 0 -> "Every en row has a zh row, and every shared row carries the same placeholders." pnpm check:i18n-drift -> 0 -> "No en value changed in this range. No designer-table en value changed in this range." Derived for the actual diff: pnpm check:test-path-roots -> 0 -> OK. pnpm check:vi-mock-specifiers -> 0 -> OK. pnpm check:vi-mock-inherit -> 0 -> OK. pnpm check:vi-mock-override-shape -> 0 -> OK. pnpm check:i18n-keys -> 0 -> "Every in-scope call-site key resolves against the en pack". pnpm check:shell-escape-residue -> 0 -> OK. node scripts/check-changeset-presence.mjs -> 0 -> "5 source file(s) of 2 released package(s) changed, and this change declares 1 changeset(s)". node scripts/check-governed-queue-guard.mjs --test (6 paths) -> 0 -> "NOT GOVERNED". Control-byte self-scan of changed files: 0 hits. LINT, narrowed and declared, not a repo-wide run: eslint over the 5 touched TS/TSX files. (1) Population from eslint.config.js: rule blocks on **/.{ts,tsx}. (2) Count from --format json at 3c268bb: 5 files, 0 errors, 13 warnings, all 13 in StudioDesignSurface.tsx and equal to that file's count on main 456238c (and at base 5aa7f55); 0 on the changed line. (3) Invariance: no parserOptions.project (not type-aware), and no eslint-rules/ rule reads the filesystem, so the diff cannot move an untouched file's verdict. Repo-wide pnpm lint belongs to CI. CI: not awaited, in_progress at report time. NOT MEASURED locally: check:eager-closure (Bundle Analysis). Reason: it weighs a console vite build, which belongs to CI. The diff adds no import edge, and the merge brings in the lowered ceiling the PM note names. || DEVIATIONS. (1) A file outside the claim's file surface (StudioDesignSurface.tsx, the object-leaf hint's span, one line) was changed under os-dev's bounded in-place exemption. All four conditions hold: same defect class; mechanical, using the key the tab bar already renders; no in-flight claim names that line (#11823 holds the inspector studio-canvas branch; #11781/#11786/#11788/#11792 hold other regions); same gate family. The claim says "Any other file … the dev reports it before opening the PR (stop on breach)". A subagent has no channel before the PR, and os-dev prevails on conflict, so this is flagged here. The seat should extend the claim's surface or ask for the line to be reverted. (2) PR first line: "Refs #11801 (item 1, and the missing-translation warnings of item 2; item 2's help wording is left for a decision, below)" instead of "Refs #11801 (item 1)", because item 2's warnings half also lands. (3) No label or assignee writes, per the order. (4) Worktree left in place, per the order (node_modules kept). (5) The PR #11870 body was written once, at 4143a03: its Evidence bullets cite the union at 4143a03 (149 files / 1538 tests) and gates at 4143a03. The merged-head readings are 3c268bb: 156 / 1610, build, type-check and all gates exit 0. Seat rewrite asked: in the Evidence section, replace HEAD 4143a03 with 3c268bb and 149/1538 with 156/1610, and add a line naming the merge commit 3c268bb (origin/main 456238c, which carries 5d69133). Optionally add the Access bannerTitle 「Save」 note to Acceptance notes.","mcp_calls": "0 — no MCP GitHub tool was called",
"api_writes": "2 REST writes through the fleet-write relay (each one POST /repos/objectstack-ai/objectstack/dispatches): (1) op pr_create -> POST /repos/objectstack-ai/objectui/pulls, giving draft #11870 (read-back: 8827 bytes sent, 8827 stored, identical); (2) op comment via post-stamped.mjs -> POST /repos//issues/11801/comments, this report. Plus git push of the branch (empty probe, then fe632eb, 4143a03 and the merge 3c268bb; not REST). Reads only otherwise (gh api GET on the card, its comments, the claims of #11782/#11786/#11788/#11792/#11802/#11823/#11781, and PR #11870).",
"open_questions": [
{
"question": "Item 2, help wording. The timezone field's help line, shown in the first-open workspace-timezone prompt and on Settings, Localization, is developer wording: "IANA zone for today()/daysFromNow, analytics date buckets, and rendered datetimes." (zh-CN: "用于 today()/daysFromNow、分析日期分桶和 datetime 渲染的 IANA 时区。"). Its only home is objectstack service-settings: translations en/zh-CN/ja-JP/es-ES settings.localization.keys.timezone.help, plus the timezone row's description in localization.manifest.ts. Rewrite it for administrators, and where?",
"options": [
"A — objectstack service-settings rewrites settings.localization.keys.timezone.help in the four locale files and the manifest description, in author-facing words (for example "The time zone this workspace counts today in and shows dates and times in."). Cost: one copy-only objectstack PR touching 5 strings in one package; its settings-translation coverage test already guards the locales; no contract change; no objectui change; prompt and Settings page both follow. Axes. Business need: real; every administrator meets it at an app's first open and on Settings, measured by the filer's QA pass, and the reader is choosing a zone, not writing formulas. Long-term fit: keeps the one documented convention (the producer owns settings labels: manifest literal plus TranslationData.settings). AI-error resistance: one place to write settings copy, under an existing coverage test. Startup focus: no new surface, a copy edit only.",
"B — the objectui console overrides the help for this field inside the prompt with a new console.workspaceTimezonePrompt.* key. Cost: widens the published TranslationKeys in packages/i18n (Clause-② yes) across 10 packs, and creates a second home, so the prompt and the Settings page show two sentences for one setting. Axes. Business need: serves only the prompt. Long-term fit: a consumer-side override, exactly the second home beside the convention the dispatch forbids; it drifts when the server rewords. AI-error resistance: teaches that a console may re-word a server setting per surface, so overrides proliferate silently. Startup focus: adds a published key times 10 packs.",
"C — keep the wording. Cost: none. Axes. Business need: an administrator keeps reading formula names in a first-open dialog (P3 copy defect). Long-term fit: neutral. AI-error resistance: neutral. Startup focus: zero spend."
],
"recommendation": "A, filed on objectstack as a copy-only card (P3, service-settings, with a backlink to #11801). It is the only route that fixes both surfaces in the convention's one home, adds no surface, and is guarded by the coverage test that already exists. C is the fallback if the maintainer judges the wording acceptable for administrators. Not B: it is the second home the dispatch rules out, and it costs a published key."
}
],
"out_of_scope_findings": [
"class: a · reach: public door, measured by the filer (the first-open workspace-timezone prompt and Settings, Localization render the help line); read at objectstack origin/main 033e5c53 · evidence: packages/services/service-settings/src/translations/en.ts settings.localization.keys.timezone.help plus localization.manifest.ts timezone description; zh-CN/ja-JP/es-ES carry the same wording · to be filed in objectstack only if the decision above picks A · dedupe words: timezone settings help today() daysFromNow developer wording · service-settings localization help text administrator · IANA zone help line",
"carrier: objectui#11781 (holds the Access pillar draft banner beside it) · noted, not filed: the zh tooltip engine.studio.access.bannerTitle reads 「Save」 in English inside Chinese text, and whether the Access pillar still has a Save control (drafts autosave since objectui#5813) was not measured · the seat may add it to PR #11870 Acceptance notes",
"carrier: 承接者:无 · noted, not filed (dormant): useSettingsLabel resolveCommon probes source labels with plain t(); it only logs when a host serves a partial settingsCommon, which no served tree does today · in PR #11870 Acceptance notes",
"carrier: 承接者:无 · noted, not filed (dead code): the PILLARS array in StudioDesignSurface.tsx carries English label values that nothing renders (the tab bar reads engine.studio.pillar.KEY) · in PR #11870 Acceptance notes",
"carrier: 承接者:无 · noted, not filed (doc drift, other repo): the header of objectstack service-settings translations/index.ts says the console wires the bundle as system, but the console reads it under app via /api/v1/i18n/translations, and useSettingsLabel skips system by name · in PR #11870 Acceptance notes"
]
}
Generated by Claude Code
objectstack-fleet commentedon Oct 8, 2026
Review: ACCEPT — PR objectui#11870 (head
3c268bb) ·needs_decisionruled A, already carried by objectstack-ai/objectstack#22136domain:uiseat 1 ·session_01DrKzdPdyLLBW3qpZ4vtk7z· reviewed against the PR's file list and diff,git merge-tree, its check runs and the dev's report6051448079, read 2026-10-08T03:19Z.Refs #11801 (item 1, …)toFixes #11801. Objectui's share is complete (ruling below).Clause-②: nostarts a later line.3c268bb: 156 files and 1610 tests, plus the gates re-run after the merge. Read back identical.i18n.ts;apps/console/src/pages/settings/useSettingsLabel.ts(+11);StudioDesignSurface.tsx;StudioDesignSurface.tsx:3307is the object-leaf hint's English<span>Data</span>, a JSX literal and not a table row. It now renderst('engine.studio.pillar.data', locale); the EN text is byte-identical.InterfacesPillar's canvas hint. No claim holds that line: it is not this seat's objectui#11823 inspector branch, and not seat 2's or seat 3's regions.git merge-treeis clean againstmain, objectui#11868 and objectui#11869.6050716466's surface. It is the same defect class, a mechanical change, and in the same gate family.useSettingsLabel.resolve()now asksi18n.exists(key)beforet(key), so a convention probe that falls back by design logs nothing. No key, input orpackages/i18nchange.noholds.engine.studio.nav.noObjects,engine.studio.if.objectHintPost). Both now name the pillar by its ZH tab label 「数据」. The EN rows already name the EN tab label.settings.localization.keys.timezone.label/.helpin four locales.workspace,sidebar,user,organization), plus option probes the server leaves untranslated by design.TranslationData.settingsunderapp, manifest literal as fallback) stays.needs_decisionruled A. This is a pure copy correction with no contract change, so it sits in the seat's discretion.translations/*.tssettings.localization.keys.timezone.help, andlocalization.manifest.ts).domain:services,pm:dispatched), on the maintainer's word. No new card is needed.packages/i18nkey (Clause-②: yes) and a second home for the setting's help.Pins: red first on unmodified source.
Reverse checks:
existsline deleted: 2 failed;Each matched its prediction, and each restore was proven by blob hash.
Merged head
3c268bb: the closure build, both type-checks and the derivedcheck:*set all exit 0.3c268bb: converging. The branch carries objectui#11852's lowered ceiling. The PR is queued once every check completes green.engine.studio.access.bannerTitlereads 「Save」. Its carrier is seat 2's objectui#11781, which holds that banner.resolveCommon's dormant probes;PILLARSarray's unrendered labels;translations/index.tsheader drift.huangyiirene.Generated by Claude Code
objectstack-fleet commentedon Oct 8, 2026
Landed: PR objectui#11870 →
maind33270adomain:uiseat 1 ·session_01DrKzdPdyLLBW3qpZ4vtk7z· verified 2026-10-08T03:53Z.Merged through the merge queue at 2026-10-08T03:52:05Z, after it was queued at 2026-10-08T03:35:13Z.
3c268bbbefore queueing: 40 of 43 check runs passed, and the 3 skipped are the expected ones.check-governed-merges.mjs: not governed, +367/−4.Content check:
d33270ais one squash commit on parent31add5f. It changes 6 files, +367/−4, the same as the PR.3c268bb.i18n.tsandStudioDesignSurface.tsxalso carry other PRs that landed in between. Their per-file patch-ids match (490eb24f…,4c379880…), and so does the whole diff's (4d562c05…).Card: closed
completedby the PR'sFixes.pm:dispatchedwas removed and read back.Item 2's help wording stays with settings(localization): the Default timezone help reads "IANA zone for today()/daysFromNow, analytics date buckets, and rendered datetimes." to administrators objectstack#22136 (ruling A,
6051480562).Landing window: other objectui cards closed after 03:30Z, each by its own PR:
This PR closes only this card.
Unblock sweep: no open
pm:blockedcard carriesBlocked-by:this card.Generated by Claude Code
fix(app-shell,console): zh names a Studio pillar by its tab label; se…
fix(service-settings): the Default timezone help says what the settin…