Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

zh-CN: the Studio home button reads "新建软件包(可写 base)" — "base" left untranslated #13131

Closed

Description

@objectstack-fleet

Filing gate: ① a user-visible UX defect with a named landing point and a reproduction (pm:queue class).
Reader: the objectui lane owning packages/app-shell/src/views/metadata-admin/i18n.ts — the fix PR there.
Dedupe (open AND closed, semantic search on objectstack-ai/objectui): "zh-CN untranslated Studio home new package writable base" → 8 hits (top: #10900, #12688, #5801, #2264, #3979 — all closed, none on this string); none covers this item.

reach: measured in the console UX walkthrough — stock showcase with --seed-admin, framework objectstack-ai/objectstack@54159fd742e5, console pin objectui@12dc7b47c340 (dist stamp equal to the pin), Chromium at 1440x900; re-checked against objectui main source at df943a2 when found and ed28057 when split (the cited files are unchanged between the two).
type: Bug

Split out of #13115 (item 10), which folded fifteen independent defects into one card under the per-fire filing quota, which the maintainer has since ruled does not bind a concentrated test run such as a walkthrough. Split by the 18.0 QA wave dispatch session session_01CfRDy7SuTfUqaTu2AEH2Hi, on the maintainer's instruction there, verbatim: 「#13115 你可以拆」.

Where

Switch the language to 中文(中国) → Studio home.

Actual

"新建软件包(可写 base)".

Expected

Fully translated text, for example 新建软件包(可写基础包).

Source

packages/app-shell/src/views/metadata-admin/i18n.ts — zh engine.studio.pkg.new.


Generated by Claude Code

Activity

  1. added
    area:i18nThe customer's own language, across UI, metadata and notifications
    bugSomething isn't working
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat
    and removed on Oct 20, 2026
  2. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 16 (priority:p3)
    Session: session_01XVp19E1MYUTFM3dnkwz8gB
    Account: baozhoutao (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-13131-zh-pkg-new-base
    Worktree: objectui-issue-13131
    Domain: domain:ui
    Seat: domain:ui#2
    File surface:

    • packages/app-shell/src/views/metadata-admin/i18n.ts: zh engine.studio.pkg.new only, plus any other zh row in that table that leaves the same word "base" untranslated in the same sense (enumerate it in the report);
    • one test beside the table's existing locale pins;
    • one .changeset/13131-zh-pkg-new-base.md (@object-ui/app-shell patch).

    ⛔ No en row changes, no new key. Stop on breach; explain in the report.
    Container & model: S, mode:subagent, model: opus (default tier; no path-derived mandate)
    Clause-②: no (copy only)
    Responsibility: the zh row carries an English word | the zh table already translates the term elsewhere | every zh-CN Studio user on the home screen
    Thread-read: none
    Serial constraints cleared:

    • objectui#13195 (objectui#13127, another seat, ready) edits other rows of the same i18n.ts. Different lines; whichever lands second merges main.
    • objectui#13190 (objectui#13126, 7e62822253, same table) landed.
      Claimed at: 2026-10-20T09:08Z

    Generated by Claude Code

  3. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 13131,
    "status": "done",
    "branch": "claude/issue-13131-zh-pkg-new-base",
    "pr": "#13206",
    "session": "session_01XVp19E1MYUTFM3dnkwz8gB",
    "premise_still_valid": true,
    "summary": "Premise held on origin/main 3cec090: zh engine.studio.pkg.new read '新建软件包(可写 base)'. The zh table already renders a writable base (package) as 基座 (engine.package.writableRequired, engine.packages.detail.duplicated/adoptConfirm/adopted), so per ruling 1 the row now reads '新建软件包(可写基座)'. The sweep (case-insensitive \bbase\b over the zh portion of i18n.ts) found exactly one more row in the same sense, engine.studio.landing.dupTitle '(类似 duplicate base)', now '(类似「复制基座」)'. No en row changed, no key added; a census test plus a patch changeset for @object-ui/app-shell. Card assignee left untouched (baozhoutao); PR assignee baozhoutao read back.",
    "files_changed": [
    "packages/app-shell/src/views/metadata-admin/i18n.ts (2 zh rows: engine.studio.pkg.new, engine.studio.landing.dupTitle)",
    "packages/app-shell/src/views/metadata-admin/zh-base-term.i18n-13131.test.ts (new)",
    ".changeset/13131-zh-pkg-new-base.md (new, @object-ui/app-shell patch)"
    ],
    "tests": "All at HEAD 270afc1. vitest from repo root, --maxWorkers=1, under os-verify-lock: new test + artifact-locked-banner.i18n.test.ts + studio-locale.i18n.test.tsx -> 'Test Files 3 passed (3) / Tests 10 passed (10)', VERDICT command-exit 0; families naming the changed keys BuilderLanding.duplicateIdRule-11855.test.tsx + BuilderLanding.readonlyRoutes-11808.test.tsx -> 'Test Files 2 passed (2) / Tests 15 passed (15)', VERDICT command-exit 0. Full packages/app-shell/ directory declared to CI. Pins: (a) zh pkg.new no /\bbase\b/i and contains 基座; (b) census over every ENGINE_STRINGS_ZH value read from comment-masked source (scripts/js-comment-mask.mjs), regex /\bbase\b/i on values only, exclusions = keys, comments, identifiers like baseObject; positive control >3000 rows and includes engine.studio.pkg.new; (c) en pkg.new === 'New package (writable base)'. Ablation via objectstack scripts/ablation-replace.mjs restoring old zh row: anchor 1->0, blob ea90fd3092->ec639b7f7b, run 'Tests 2 failed | 1 passed (3)' with (a) and (b) red ('expected [ engine.studio.pkg.new ] to deeply equal []') and (c) green; restore: blob after restore == HEAD blob ea90fd309248, git diff HEAD empty (no dist leg: the test imports ./i18n source directly).",
    "gates": {
    "build closure pnpm --filter '@object-ui/app-shell^...' build": 0,
    "pnpm --filter @object-ui/app-shell type-check (tsconfig.test.json includes src/**/*.test.ts)": 0,
    "vitest targeted (2 runs)": "0, 0",
    "lint narrowed: eslint --no-inline-config --format json on the 2 changed TS files": "0 — 2 files, 0 errors, 0 warnings; population: both resolve via eslint.config.js (--print-config ok); invariance: no type-aware parserOptions in eslint.config.js",
    "check:phantom-deps/self-import/unreferenced-sources/doc-example-readers/handler-key-reads/side-effects-array/element-data-source-declaration/spec-symbols/action-forward-parity/designer-field-key-parity/icon-record-names/i18n-keys/i18n-drift/i18n-designer-parity/control-bytes": "all 0",
    "check-hand-rolled-comment-mask.mjs": 0,
    "check-changeset-fixed.mjs": 0,
    "check-changeset-presence.mjs": 0,
    "check:spec-floors": "1 — NOT MEASURED: no-artifact (needs whole-workspace build), expected on main per order, not caused by this diff"
    },
    "line_budget": "i18n.ts +2/-2; new test 60 lines; changeset 5 lines",
    "deviations": [
    "The first edits (the two i18n rows, the test and the changeset) were written before AGENTS.md was read; it was read right after, and nothing in it changed the edits (the u-flag/\p{L} i18n regex rule does not apply: the census targets an ASCII Latin word, where \b is the correct boundary, as the PR body states).",
    "Labels: the order named none and objectui has no gate that reads them -> zero label writes."
    ],
    "mcp_calls": "0",
    "api_writes": "2 relay strokes (objectstack-fleet[bot]) — pr_create (POST /repos/objectstack-ai/objectui/pulls, draft, + POST .../issues/13206/assignees [baozhoutao]); this os-dev-report comment (POST /repos//issues/13131/comments). Plus 2 git pushes (empty branch probe, fix commit).",
    "open_questions": [],
    "out_of_scope_findings": []
    }


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT — PR #13206 @ 270afc12b3f6e98b147996be0e2a21ecf5d12d0e · domain:ui seat 2 (session_01XVp19E1MYUTFM3dnkwz8gB)

    • Clause-②: no. Copy only; no export, key or en row moves. No contract review is owed, and the seat read the report.
    • Seat review: the zh table already renders a writable base package as 基座 (engine.package.writableRequired, engine.packages.detail.duplicated / adoptConfirm / adopted). Ruling 1 reuses it: engine.studio.pkg.new reads 「新建软件包(可写基座)」. The ruling-2 sweep found one more row with the same meaning, engine.studio.landing.dupTitle, now 「(类似「复制基座」)」. Identifiers such as baseObject and the keys are untouched.
    • Pins: (a) the zh row carries no Latin base and contains 基座. (b) A census over every zh value, read with comments masked, finds no \bbase\b; its positive control spans more than 3000 rows. (c) CONTROL: the en row is unchanged. The ablation turned (a) and (b) red with (c) green, and the restore was proven by blob. The BuilderLanding families that read these keys are green.
    • Changeset: @object-ui/app-shell patch.
    • CI: all 36 check-runs completed on the head, 33 passed and 3 skipped.
    • Path fork: no governed path. Seat landing.
    • Findings: none.

    Next: ready + auto-merge; landing is verified by content on main.


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · domain:ui seat 2 · session_01XVp19E1MYUTFM3dnkwz8gB

    • Merged: PR fix(app-shell): translate "base" in the zh Studio home new-package button #13206 through the merge queue as main 2af42d9e50.
    • Verified by content: 2 of the 3 files the PR changes have the same blob at 2af42d9e50 as at the accepted head 270afc12b3. i18n.ts also carries changes that landed first; there the PR's own hunks are identical in the merge. The merge message carries no model identifier.
    • Landed: zh Studio home reads 「新建软件包(可写基座)」, and engine.studio.landing.dupTitle reads 「(类似「复制基座」)」. Both use the term the zh table already uses. A census pin keeps a bare base out of zh values.

    pm:dispatched is removed.


    Generated by Claude Code

  6. added a commit that references this issue on Oct 28, 2026
    2af42d9
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:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions