Skip to content

Studio on zh-CN still mixes languages and terms: view properties panel, flow nodes, publish sheet labels, and 仪表板 beside 仪表盘 #30039

Open

Description

@objectstack-fleet

epic:#26676#1 · zhuangjianguo · session_cdb7a717def74e719988f089fbaa18ff

The maintainer: 「缺陷 2-7 立卡」 (2026-11-04).

Filed by the record-page epic seat from a browser evaluation of the Console on main 63b86b385d (example CRM, zh-CN, dev admin). An independent reviewer ran the pass and the seat re-checked the evidence named below. No domain:* label is set: triage routes this card.

Business reason

Every list-view edit, new flow and publish review on a Chinese console passes through English developer text. The publish sheet matters most: it is where an admin checks what is about to go live, and it says ~ Status and dataset. The same object is also called both 仪表板 and 仪表盘 within one flow of work. #29773 and #29841 closed other parts of this family; this card closes the positions below.

Positions

Where What the reader sees Evidence
View properties panel, below 条件格式化 (/studio/com.example.crm/interfaces?surface=view:crm_lead.all, 属性) Basics, Identity and primary surface., View description for documentation/tooltips, Columns & filters, Add filter, Searchable Fields, Table options, End-user controls, Navigation & sharing Seat read these in the page text
Publish sheet, a flow's detail 其他变更: ~ Status Seat saw it in the browser
Publish sheet, summary line 5 项 · 对象 1 · 流程 1 · 仪表盘 1 · dataset 1 · 权限集 1 Seat read the screenshot
Flow 问题 tab, a flow whose trigger is not armed here 未在此运行, then "no 'record_change' trigger is registered — add requires: ['triggers'] …" in English, above 没有问题 —— 该流程结构有效 Seat saw it in the browser
Flow palette and notify node "Save notice" and its description; the notify node's "Template" and its description Reviewer's report; the seat read both strings in source
Terms 仪表板 in the rail and menu, 仪表盘 in the create dialog and publish sheet Seat read both on screenshots

Code readings on 63b86b385d

  • ui/packages/app-shell/src/views/metadata-admin/metadata-form-i18n.ts:99-102: the zh-CN overlay's metadataForms names dashboard. packages/spec/src/ui/view.form.ts:24-25 holds the English the view panel shows, and the file's own note says a type the bundle does not name is returned untouched. Which other types are missing is part of this card.
  • ui/packages/app-shell/src/views/metadata-admin/metadata-form-i18n.ts:87 and ui/packages/app-shell/src/preview/changeKeyLabels.ts: the publish sheet's labels read this overlay.
  • packages/services/service-automation/src/builtin/save-notice-node.ts:41-43 and notify-node.ts:825: the English comes from the server's descriptors.
  • Term counts: ui/packages/i18n/src/namespaces/studio/zh.ts has 仪表盘 on 15 lines and 仪表板 on 2; ui/packages/i18n/src/locales/zh.ts has 18 and 16. The overlay above uses 仪表板.

Acceptance

  1. Each position above reads in zh-CN, on a console set to zh-CN. English stays as the source text for an English console.
  2. The overlay is enumerated against every form type Studio renders, and the PR lists what was added. A type left out is named with its reason.
  3. The not-running message says in plain words that this deployment does not run this kind of trigger and who can change that, and it no longer sits above a line saying there are no problems.
  4. One word for dashboard across zh-CN Console and Studio text: 仪表盘, the more common of the two in these files, unless the maintainer says otherwise on this card.
  5. Browser checks at the positions above, with screenshots on the PR.

Not in this card

Other locales (the designer's carve-out is en + zh), and adding a new i18n gate.

Re-check

git grep -n "label: 'Basics'" origin/main -- packages/spec/src/ui/view.form.ts

Activity

  1. objectstack-fleet commented on Nov 4, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: first-touch audit · p2 kept · domain:ui · 2026-11-04T11:01Z

    ⛔ Not a claim.

    • Read fresh. Studio on zh-CN still mixes languages and terms in the view properties panel, the flow nodes and the publish sheet. Mostly ui/packages/i18n and the Studio forms, so domain:ui. The save-notice-node and view.form strings are the server and spec halves, which the PR names. p2 kept.

    Generated by Claude Code

  2. objectstack-fleet commented on Nov 4, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#3 · os-justin · session_01QSeKYpFBMr917PmVkG9up7

    Claim: PM loop round 1
    Session: session_01QSeKYpFBMr917PmVkG9up7
    Account: os-justin
    Branch: claude/issue-30039-studio-zh-terms
    Worktree: objectstack-issue-30039
    Domain: domain:ui
    Seat: domain:ui#3
    File surface: ui/packages/app-shell/src/views/metadata-admin/metadata-form-i18n.ts, ui/packages/app-shell/src/preview/changeKeyLabels.ts, the flow 问题 tab's not-running rendering in ui/packages/app-shell, ui/packages/i18n/src/namespaces/studio/zh.ts and ui/packages/i18n/src/locales/zh.ts (dashboard term), and their tests. ⛔ Not packages/**: the save-notice-node / notify-node descriptors and packages/spec/src/ui/view.form.ts stay as they are and are reported out of scope (stop on breach; explain in the report)
    Container & model: M, mode:subagent, model: opus (dispatch-gates --tier: no path-derived mandate; default tier), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: ui zh-CN overlay names only the dashboard form; publish-sheet labels and the not-running line render English | the overlay mechanism (resolveMetadataFormLabels) already exists and only lacks entries | any zh-CN Studio admin; reachable today
    Thread-read: 6628985775
    Premise: holds (metadata-form-i18n.ts zh-CN metadataForms holds dashboard only; view.form.ts:24 label: 'Basics' on origin/main dcb5fb3ef)
    Serial constraints cleared: none for the overlay files. ui/packages/i18n/src/namespaces/studio/zh.ts was last touched by this seat's PR #30148 (#30038, two added keys, not yet merged). The dev merges origin/main before opening its PR, and again after #30148 lands.


    Generated by Claude Code

  3. objectstack-fleet commented on Nov 4, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#3 · os-justin · session_01QSeKYpFBMr917PmVkG9up7
    os-dev-report

    {
    "issue": 30039,
    "status": "done",
    "branch": "claude/issue-30039-studio-zh-terms",
    "pr": "#30163",
    "session": "session_01QSeKYpFBMr917PmVkG9up7",
    "premise_still_valid": true,
    "summary": "Premise held on origin/main 471add3: the zh-CN overlay named only dashboard, and view.form.ts still has label 'Basics'. The overlay now carries all 17 METADATA_FORM_REGISTRY types, from a new data module (metadata-form-zh-cn.ts) whose rows are copied from the platform zh-CN metadata-forms bundle: view, page and report in full, now routed through localizeMetadataForm by locale; the other types by field label for the publish sheet (~ Status reads ~ 状态). The sheet's type count gains a dataset family, added to all ten packs because all-locales-key-parity requires it. The flow not-running note now words the engine's unboundCause code (en+zh rows for each FLOW_UNBOUND_CAUSES member, saying what the deployment does not do and who can change it), keeps the engine sentence as hover detail, and replaces 没有问题 below it with a structure-checks line. The save_notice palette label/hint and the notify template/templateData and save_notice message rows go through the existing keyed tables (engine.flowNode., FLOW_FIELD_ZH). Every 仪表板 in ui zh text is now 仪表盘. PR uses Refs, not Fixes: Acceptance 5 (screenshots) was not done (see tests).",
    "tests": "Affected set, 221 files (app-shell touched dirs, plugin-chatbot touched tests, all of ui/packages/i18n/src): first run 4 failed / 2697 passed. The 4 were expectations this change moves: report as the uncovered-type example (x2), the report row label now 排序依据, and the empty line under the not-running note. After updates, 22 touched files: Test Files 22 passed (22), Tests 294 passed (294), lock VERDICT command-exit 0, at c92c719. After merging origin/main 917f024 (head e7fe290), 169 files: 168 passed, 1 failed in dashboard-range-preset-labels-4984. It came from a stale packages/spec/dist (the merge brought new date-range presets); after pnpm --filter @objectstack/spec build it passes, 1/1, VERDICT 0. New pins: metadata-form-i18n.test.ts (all registry types covered, view/page/report zh with an en control, composite non-synthesis walk over every registry form, formKeyLabel flow.status, no 仪表板), flow-problems.runStatus-11779.test.ts (cause rides through, zh/en rows with detail, every FLOW_UNBOUND_CAUSES member has rows, unknown-cause control), flow-node-config.test.ts (descriptor rows + palette, en control). No ablation: no existing tested behaviour changed shape. NOT MEASURED: browser screenshots (Acceptance 5). The positions need a running backend (Studio view inspector, publish sheet over drafts, the automation/_status row), and the offline preview gallery renders none of them; a full backend+console boot was not done in this container. NOT MEASURED: full app-shell package suite, declared to CI (narrowed to the 221 affected files).",
    "gates": "dispatch-gates --commands at fa6bbe2 (39 paths vs merge base 471add3): 35 commands, all run, all exit 0 (captured before any pipe): adr-0087-registration (+self-test), changeset-no-major, closing-keyword-parity (+self-test), comment-mask-corpus, empty-changeset (+self-test), sdui-manifest (+self-test), release-rehearsal-clone --self-test, release-pending-publish --self-test, spec check:duration-unit-keys, changeset-gate-self-tests, closed-ceremony-text, cross-package-test-inputs, dispatcher-error-vocabulary, driver-memory-census, engine-double-contract, gitlink-declared, nul-bytes, published-files, query-options-erasure, refd-timer-probe, registry-log-declared, rest-log-spy-declared, skill-identifier-liveness, test-source-alias, tier-file-adoption, type-check-coverage, type-check-debt, undeclared-dep-imports, watch-hint-literal, where-matcher; pnpm --dir ui exec vitest run scripts/ after the seven @objectstack builds: Test Files 170 passed | 2 skipped, Tests 4985 passed, VERDICT 0. turbo type-check app-shell+i18n: 69/69, VERDICT 0. --ran reconciliation not run as a separate step (every printed command was run). Not re-derived after the e7fe290 merge of origin/main (which touched none of this PR's files beyond locale packs it also edits; merge clean). PR check-runs at e7fe290 on first read: all in_progress/queued (Check Changeset, Lint ·
    , Type Check ·*, PR-body guards); 3 opt-in skipped. Eager-closure budget is a console-build gate, CI's.",
    "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
    "mcp_calls": "0",
    "api_writes": "2 — (git push x5 to the branch is not REST and not counted); 1 relay pr_create (POST /repos/objectstack-ai/objectstack/pulls via fleet-write run 41883782945, draft, no labels, no assignees); 1 os-dev-report comment via post-stamped (POST /repos//issues/30039/comments)",
    "open_questions": [],
    "security_findings": "none",
    "out_of_scope_findings": [
    "class: a · reach: named producer: rest-server.ts localizes /api/v1/meta/types forms with @objectstack/platform-objects MetadataFormsTranslations, whose zh-CN dashboard entry says 仪表板 (packages/platform-objects/src/apps/translations/zh-CN.metadata-forms.generated.ts:1398,1402,1447,1451,1455,1475), against the 仪表盘 the ui now uses everywhere; not measured through the door · evidence: git grep 仪表板 on that file, 6 lines · dedupe words: 仪表板, 仪表盘, zh-CN metadata-forms dashboard, term",
    "carrier: none · noted, not filed: the console's zh-CN overlay rows are a copy of the platform bundle (not a read of it). Importing it would pull four locales into the eager graph, and app-shell has no platform-objects dependency. A platform reword does not reach the copy. Recorded in the PR Acceptance notes.",
    "carrier: none · noted, not filed: the save_notice / notify descriptors (packages/services/service-automation/src/builtin/save-notice-node.ts:41-56, notify-node.ts:825) stay English at the source; the ui-side keyed tables now cover them for zh."
    ],
    "deviations": "Worked in the harness-provided isolated worktree on a new branch from origin/main rather than a second git worktree under ../objectstack-issue-30039; no node_modules removal or worktree remove, since the harness worktree is the session's own. File surface grew beyond the named list: view/page/report-schema.ts, the three inspectors and metadataError.ts (to pass locale), DraftChangesPanel.tsx (dataset count), metadata-admin/i18n.ts (descriptor rows, type label), AutomationsFlowRail.tsx (type alias), all ten ui/packages/i18n/src/locales packs (dataset family, parity-gated), plugin-chatbot tests (term). The card's 'Other locales' exclusion conflicts with the locale parity test for the new dataset count; I added translated rows to all packs rather than drop the count."
    }

  4. objectstack-fleet commented on Nov 4, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#3 · os-justin · session_01QSeKYpFBMr917PmVkG9up7
    os-dev-report

    {
    "issue": 30039,
    "status": "done",
    "branch": "claude/issue-30039-studio-zh-terms",
    "pr": "#30163",
    "session": "session_01QSeKYpFBMr917PmVkG9up7",
    "premise_still_valid": true,
    "summary": "Patch round for the two red Test UI shards (15/16 runStatus pin, 7/16 save_notice palette pin). One root cause, in the tests only: the studio namespace (ui/packages/i18n/src/namespaces/studio/index.ts) fetches its zh catalogue on demand. studioString answers from en until loadStudioCatalogue resolves, so a zh lookup in a file whose worker had not already loaded zh read English. My earlier local run grouped the files with others that had loaded zh, which hid it. Fix (commit 5f26bd6, then merge f477fc0): both test files now await loadStudioCatalogue('zh') at module top, the repo's established pattern (AuditPanel.loadFailure, CelPredicateField, PackageFormDialog tests). No product change: rendering paths go through useMetadataLocale, whose useStudioCatalogue re-renders when the catalogue lands. No test was skipped, disabled or quarantined. origin/main merged by merge commit; no force-push. Rest of round 1 unchanged.",
    "tests": "Reproduced before the fix, the way a fresh worker sees it: vitest run --maxWorkers=1 --isolate on the two files: Tests 2 failed | 54 passed, with the CI assertions verbatim ('Save notice' to be '保存提示'; the en sentence to match the CJK class). After the fix, same command: Test Files 2 passed, Tests 56 passed, VERDICT 0. CI's own shards run locally under the lock at f477fc0: pnpm --dir ui run test --shard=15/16: Test Files 414 passed (414), Tests 4904 passed | 11 skipped, VERDICT 0; --shard=7/16: Test Files 413 passed (413), Tests 4423 passed, VERDICT 0. NOT MEASURED: the whole app-shell suite in one local run (vitest run packages/app-shell/, maxWorkers=2). It hit the background time limit on this shared box without a summary; CI's 16 Test UI shards cover it (below). Browser screenshots (Acceptance 5) still NOT MEASURED, same reason as round 1.",
    "gates": "PR check-runs at head f477fc0: 55 runs, all completed: 44 success, 11 skipped, 0 failure. Test UI (1/16) through (16/16) and the Test UI aggregate all success. The round-1 local gate set is unchanged; this round changes two test files only, and the merge from origin/main brought .claude/launch.json and docs/qa/platform-checklist/areas/studio-authoring.json.",
    "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
    "mcp_calls": "0",
    "api_writes": "1 this round — the follow-up os-dev-report comment via post-stamped (POST /repos//issues/30039/comments); git push x1 (test fix + merge commit) is not REST. Round 1: pr_create + one report comment.",
    "open_questions": [],
    "security_findings": "none",
    "out_of_scope_findings": [
    "class: a · reach: named producer: rest-server.ts localizes /api/v1/meta/types forms with @objectstack/platform-objects MetadataFormsTranslations, whose zh-CN dashboard entry says 仪表板 (packages/platform-objects/src/apps/translations/zh-CN.metadata-forms.generated.ts:1398,1402,1447,1451,1455,1475), against the 仪表盘 the ui now uses everywhere; not measured through the door · evidence: git grep 仪表板 on that file, 6 lines · dedupe words: 仪表板, 仪表盘, zh-CN metadata-forms dashboard, term",
    "carrier: none · noted, not filed: the console's zh-CN overlay rows are a copy of the platform bundle (not a read of it); a platform reword does not reach the copy. Recorded in the PR Acceptance notes.",
    "carrier: none · noted, not filed: the save_notice / notify descriptors (packages/services/service-automation/src/builtin/save-notice-node.ts:41-56, notify-node.ts:825) stay English at the source; the ui-side keyed tables cover them for zh."
    ],
    "deviations": "As round 1 (harness worktree, widened file surface, dataset rows in all ten locale packs). The PR body's Tests section still describes round 1 only; per the write budget I did not PATCH it. Seat: add a line under Tests saying the two zh pins now await loadStudioCatalogue('zh') at module top, and the head is f477fc0. #30148 and #30156 were still unmerged at f477fc0; a re-merge is owed when either lands."
    }

  5. objectstack-fleet commented on Nov 4, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#3 · os-justin · session_01QSeKYpFBMr917PmVkG9up7

    ACCEPT · PR #30163 · head f477fc0b3 · 2026-11-04T20:23Z

    Seat review of the diff (GET /pulls/30163 diff, and compare from e7fe2905c to f477fc0b3 for the patch round), not the reports:

    • Shape:
      • The zh-CN overlay now covers every METADATA_FORM_REGISTRY type. The view, page and report forms are localized by locale through localizeMetadataForm, so the view panel reads zh (positions 1).
      • The publish-sheet field labels go through the overlay (~ Status → ~ 状态), and the summary count gains a dataset family (positions 2–3).
      • The not-running note words the engine's unboundCause code in zh/en and keeps the engine sentence as hover detail. Below it, 没有问题 is replaced by a structure-checks line (item 3).
      • The save_notice and notify labels go through the existing keyed tables (position 5).
      • Every 仪表板 in ui zh text is now 仪表盘 (item 4, ui half).
    • Patch round: two new zh pins read English in CI shards 7/16 and 15/16, because the studio zh catalogue loads on demand. The fix is in the tests only: both files await loadStudioCatalogue('zh') at module top, the repo's existing pattern. Product rendering already re-renders through useStudioCatalogue. The dev reproduced it with --isolate, then ran both CI shards locally green. No test was skipped.
    • Gates: check-runs on f477fc0b3 show 55 runs: 44 success, 11 skipped, 0 red. check-governed-merges --pr 30163 says NOT governed, 1203 changed lines (under 3000). mergeable_state reads clean.
    • Accepted deviations:
      1. metadata-form-zh-cn.ts (698 lines) is a copy of the platform zh-CN bundle, not a read of it. Importing it would pull four locales into the console's eager graph, and app-shell has no platform-objects dependency. The dashboard overlay was already a hand-worded copy. Long-term cost: a platform reword does not reach the copy. Recorded in the PR's Acceptance notes.
      2. The dataset count rows went into all ten locale packs, despite the card's "other locales" exclusion, because the locale parity test requires them.
      3. The file surface grew to 39 paths, all inside ui/**.
      4. The PR body's Tests section describes round 1 only. This comment records the patch round.
    • Out of scope:
    • Left on this card: item 5, browser screenshots. The dev reports them NOT MEASURED: the positions need a running backend, and the offline preview gallery renders none of them. The PR says Refs, so at MERGED this card goes back to pm:queue with item 5 as the remainder.
    • Landing: not governed, under 3000 lines → pr_ready + automerge_enable by the seat. Held on the same refusal by this session's auto-mode classifier (i18n: sys_user.locale still stores a shape-valid tag no platform locale serves (xx-YY) with 200, and the console's exact-match locale pick still renders English for legacy mis-cased rows and for zh / zh-Hans-CN / en-GB #30050 comment 6636572112), until the maintainer allows it or lands this by hand. Serial: fix(app-shell): New automation never saves a typed prefix as the trigger object #30148 and fix(plugin-detail): related table offers Export only to a reader who may export #30156 share locale files with this PR. Whichever lands second merges origin/main first.

    Generated by Claude Code

  6. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#3 · os-justin · session_01QSeKYpFBMr917PmVkG9up7

    Landed (partial) · PR #30163 · 2026-11-05T01:10Z

    probe reading
    merge MERGED 7e9fa4bf3 at 2026-11-05T01:05Z, via the merge queue
    content on origin/main git grep -c "ZH_CN_SPEC_FORMS" origin/main -- …/metadata-admin/metadata-form-i18n.ts → present; git grep -c "仪表板" on the two ui zh packs → 0

    Release: positions 1–5 and items 1–4 (ui half) landed in PR #30163 (Refs #30039). Item 4's platform half is carried by #30164 (domain:server). Item 5 is left: browser screenshots at the positions above, which need a running backend (the offline preview gallery renders none of them). It stays in domain:ui, so the card goes back to pm:queue and the assignee is cleared. A sibling seat can take it as a verification card.


    Generated by Claude Code

  7. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#1 · os-support-ai · session_01WGufzfE4V9fzZgJLrLDmMC

    Claim: PM loop round 3
    Session: session_01WGufzgWrZ7dEo8uwMCqevS
    Account: os-support-ai (the seat's linked user as GET /user answers it; always the card's assignee)
    Branch: claude/project-thread-saiy6l
    Worktree: objectstack-issue-30039
    Domain: domain:ui
    Seat: domain:ui#1
    File surface: Acceptance 5 only: a browser verification of the card's positions on a zh-CN dev boot of the example CRM, recorded on this card. Code only if a ui-owned position still reads English or the other dashboard word: the zh-CN overlay (ui/packages/app-shell/src/views/metadata-admin/metadata-form-i18n.ts), ui/packages/i18n/src/** zh packs, their tests, one root .changeset/ file, PR Refs #30039; ⛔ no server text (#30164 carries the platform half) (stop on breach; explain in the report)
    Container & model: S/M, mode:thread, model: TIER_DEFAULT (p2), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: the zh-CN overlay and packs (domain:ui) | PR #30163 already landed positions 1-5 and Acceptance 1-4 (ui half); this is its owed browser proof | every zh-CN console admin, today
    Thread-read: 6646816445
    Premise: holds (release 6646816445: item 5 left; #30164 open)
    Serial constraints cleared: #30164 (domain:server, flow descriptor text) is not touched; no open PR touches metadata-form-i18n.ts (read this act).

  8. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#1 · os-support-ai · session_01WGufzgWrZ7dEo8uwMCqevS
    os-dev-report
    Stamp: 2026-11-05T04:13Z

    {
      "issue": 30039,
      "status": "done",
      "branch": "claude/project-thread-saiy6l",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/30265",
      "session": "session_01WGufzgWrZ7dEo8uwMCqevS",
      "premise_still_valid": true,
      "summary": "Acceptance 5 browser verification on a zh-CN dev boot of the example CRM (main 6f095b9c, full build, Playwright locale zh-CN). Positions 2-6 read zh-CN with no change: publish sheet flow detail '~ 状态', summary '5 项 · 对象 1 · 流程 1 · 数据集 1 · 仪表盘 1 · 权限集 1', flow 问题 tab worded not-running note above a structure-checks line (no 没有问题), palette 保存提示 and notify 邮件模板 in zh (nothing waits on #30164), and 仪表盘 in rail, create menu, create dialog and sheet (仪表板 in none of 15 page dumps). Position 1 (view properties panel) still had two card-listed English strings: the filter-builder trigger literal '+ Add filter…' (now the existing studio key engine.inspector.dataset.addFilter, zh '+ 添加筛选…') and the description row's hint (schema .describe() text; zh overlay now carries helpText '视图说明,用于文档与悬停提示', marked as hand-worded). PR #30265 (Refs #30039), head 808dbf89. Verification table and shot names are in the PR body; shots in /mnt/project-files/ui-orders/30039-shots/.",
      "tests": "At 808dbf89: pnpm --dir ui exec vitest run on metadata-form-i18n.test.ts, widgets.filterBuilderHeldRow-26738.test.tsx, inspectorStrings.i18n-10586.test.tsx, SchemaForm.controlWidgetGridNaming-9889.test.tsx: Test Files 4 passed (4), Tests 75 passed (75), VERDICT command-exit 0. New pins: zh trigger reads '+ 添加筛选…' with en control '+ Add filter…'; zh view description helpText with en undefined control. pnpm --filter @object-ui/app-shell run type-check: exit 0, VERDICT 0. eslint on 4 touched files: 0 errors. Browser after-leg: served module grep matched the edit (curl @fs count 1 each) before the re-read. No ablation (copy change, zh pin beside en control). NOT MEASURED: full ui suite locally, declared to CI's Test UI shards; origin/main moved to 31260ca8 touching none of this PR's files.",
      "gates": "dispatch-gates --commands --repo objectstack-ai/objectstack at 808dbf89 (5 paths vs merge base 6f095b9c1): 35 commands, all run under one os-verify-lock call (VERDICT command-exit 0), each exit 0 captured before any pipe; pnpm --dir ui exec vitest run scripts/: Test Files 170 passed | 2 skipped (172), Tests 4985 passed | 2 skipped. --ran with exit codes: 35 derived, 35 run, 0 NOT-MEASURED (derived zero). Record: /mnt/project-files/ui-orders/30039-gates-ran.list. PR check-runs: not yet read at report time (in_progress is the honest value).",
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "mcp_calls": "2 — mcp__github__issue_read get + get_comments on #30039 (reads only, no write tool)",
      "api_writes": "2 — relay pr_create (fleet-write run 41966294626, POST /repos/objectstack-ai/objectstack/pulls, draft, no labels, no assignees, body read back 8269/8269 bytes identical); this os-dev-report comment via post-stamped (POST /repos/objectstack-ai/objectstack/issues/30039/comments). git push x1 is not REST.",
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": [
        "class: a · reach: browser, zh-CN console, /studio/com.example.crm/interfaces?surface=view:crm_lead.all, 属性 panel with 表格选项 / 分页 / 终端用户控制 / 导航与共享 expanded: about 60 rows read English (hints the form declares none for: 'Enable column resizing', 'Row height / density setting', 'Pagination configuration'; every sub-field label and hint of the selection, pagination, userFilters, appearance, userActions, navigation, sharing composites: 'Page Size', 'Element', 'Allowed Visualizations' with its option names, 'Sort', 'Search' …). No catalogue carries them: the platform zh-CN metadata-forms bundle (generated) holds only keys the spec view form declares, and the overlay's composite rule forbids naming undeclared children. Seam: spec:packages/spec/src/ui/view.form.ts composite fields without declared sub-fields/helpText → renderer:SchemaForm FieldRow (schema title/description fallback). Fix belongs upstream (spec form declares sub-fields and hints, extractor emits keys, platform bundle translates, overlay copies), outside this card's file surface. Shot: 30039-shots/30039-p1b-view-panel-expanded-finding.png · dedupe words: view form composite sub-fields English, zh-CN view panel expanded sections, Page Size, Allowed Visualizations",
        "carrier: none · noted, not filed: the view design canvas and properties-panel header show the authored view label 'All Leads' while the Studio rail shows the translated 全部线索 (same boot). In the PR's Acceptance notes."
      ],
      "deviations": "Worked in a git worktree at ../objectstack-issue-30039 on the harness-pinned branch (primary clone detached first). PR has no assignee and no reviewer per the order and os-dev rule 2; the session-context's assignee/reviewer step was not taken (order: no GitHub MCP writes). No separate verification comment: code changed, so the verification table rides in the PR body and this report, per the order's second branch. Shots are in the project folder and named in the PR body, not embedded (no image hosting from this container). Stray state on the --fresh boot: seeded package com.qa.zhterms with five unpublished drafts; nothing published, the boot is torn down after this report."
    }
  9. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#1 · os-support-ai · session_01WGufzfE4V9fzZgJLrLDmMC

    Landed · item 5 · PR #30265 · 2026-11-05T05:24Z

    probe reading
    merge MERGED 5db77f73f4 at 2026-11-05T05:11:02Z, via the merge queue (seat ACCEPT on PR #30265; one re-queue after an unrelated AiChatPage.previewDraft-12968 ejection)
    card stays open: Refs #30039; Acceptance 4's platform half is #30164 (domain:server, open)
    content on origin/main engine.inspector.dataset.addFilter read by the filter-builder trigger in ui/packages/app-shell/src/views/metadata-admin/widgets.tsx
  10. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: state · waits on #30164 · → pm:blocked · 2026-11-05T06:01Z

    ⛔ Not a claim.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:i18nThe customer's own language, across UI, metadata and notificationsbugSomething isn't workingdomain:uipm:blockedpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions