Skip to content

fix(example-showcase): the showcase_account extension declares the plural with its renamed label - #30738

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-30465-showcase-plural-label
Nov 6, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-30465-showcase-plural-label

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Elon · project thread

Fixes #30465

Clause-②: no
Metadata-protocol: none
Skills-docs: none — showcase example only

维护者速读

  • 改了什么:showcase 的 showcase_account 对象扩展在改名 Account (Success Overlay) 的同时补上复数 Accounts (Success Overlay)。
  • 为什么改:PR fix(objectql,rest)!: serve an object an extension renames without the base's plural (#30391) #30459 之后,只改 label 不写复数的扩展不再返回旧复数,列表标题会退回单数名。
  • 风险与回滚:只动示例与一条 dogfood 用例,无发布包;回滚即撤本 PR。
  • 先看:examples/app-showcase/src/data/extensions/account.extension.ts,再看 dogfood 文件里新增的 [#30465] 用例。
  • 两分钟验证:pnpm --filter @objectstack/dogfood exec vitest run test/showcase-object-extension-scalar-divergence.dogfood.test.ts,预期 8 条全绿。
  • 需要你做的:无,席位落地。

What changes

  • examples/app-showcase/src/data/extensions/account.extension.ts: the extension that renames showcase_account to Account (Success Overlay) now declares pluralLabel: 'Accounts (Success Overlay)'. Since PR fix(objectql,rest)!: serve an object an extension renames without the base's plural (#30391) #30459 a rename without a plural is served with no plural, and the Console titles a list by the served plural, else the label; so the list title had fallen back to the singular.
  • packages/qa/dogfood/test/showcase-object-extension-scalar-divergence.dogfood.test.ts (the file that already pins this object's served label): one new case. The extension declares the plural, and GET /meta/object/showcase_account and GET /meta/object both serve the label and the plural as declared, in en and in zh-CN.
  • No translation change. The card asked for a zh-CN plural in examples/app-showcase/src/system/translations/** only if one is wanted. That bundle is the showcase's code catalog, not a .custom pair. translateObject reads a scalar that diverges from the packaged base only from the pair's catalog (The i18n catalog is resolved ahead of the document, so a tenant's own Studio rename never reaches either /meta/object read — and neither do extension scalar overrides #8284 comparison rule, ADR-0146 D2). So a zh-CN entry there would not be served for either string. In zh-CN the singular is served as written (Account (Success Overlay)), and the plural now matches it. The pin measures exactly that.

Acceptance notes

  • The commit message carries a Fixes #30465 line. The dev contract keeps card relations to the PR body only. An amend plus a lease-guarded force-push of this unshared branch was refused by the session's permission classifier, so the line stays. It closes the same card this body closes.

Verification

Pin, reverse leg, typecheck, derived gates — head 32c6f57
  • Dogfood closure build: pnpm --filter '@objectstack/dogfood^...' build under os-verify-lock.sh: VERDICT command-exit 0.
  • Touched pin: pnpm --filter @objectstack/dogfood exec vitest run --maxWorkers=2 test/showcase-object-extension-scalar-divergence.dogfood.test.ts: VERDICT command-exit 0, Test Files 1 passed, Tests 8 passed (8).
  • Reverse leg: the extension file restored to origin/main (git restore --source=origin/main; the showcase resolves from source, so no rebuild): the new case fails (exit 1, 1 failed), and the other 7 pass. Restored with git checkout HEAD --; blob equals HEAD and git diff HEAD is empty.
  • pnpm --filter @objectstack/example-showcase --filter @objectstack/dogfood typecheck: both ran tsc --noEmit, VERDICT command-exit 0.
  • eslint on the two changed files: exit 0.
  • node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack at 32c6f57: 55 commands, each run with its exit code captured before any pipe. 53 exit 0 on the first pass. check-plugin-teardown-shape --self-test exit 3 (its pinned fixture commit was outside the shallow clone), then exit 0 after fetching that commit. pnpm check:dual-build-cjs-loads exit 3, NOT MEASURED: it needs a whole-workspace build, and only the dogfood closure was built. CI runs it.
  • dispatch-gates --ran: 55 derived, 54 run, 1 NOT-MEASURED, 0 UNRUN, exit 0.
  • Changeset: none. @objectstack/example-showcase and @objectstack/dogfood are both private: true, so skip-changeset.
  • Full dogfood not run: the title has no ! and Clause-② has no narrowing arm.

Generated by Claude Code

🤖 Generated with Claude Code

…ural with its renamed label

An extension that renames an object without a pluralLabel is served with
no plural, so the showcase list title fell back to the singular. Declare
'Accounts (Success Overlay)' beside 'Account (Success Overlay)' and pin
that both translated /meta/object reads serve the pair in en and zh-CN.

Fixes #30465

Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WV4cytQjG9X1CrCgytUM5
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Nov 6, 2026
@github-actions

github-actions Bot commented Nov 6, 2026

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

Nothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 0 changed package(s)), so this run has no opinion about the docs.

What this run could not see

Coarse fallback — 0 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json 447226b222467709ed74ca99eaf808c178656b33 → packageMentionDocs.

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:server#3 · os-elon-musk · session_016WV4cytQjG9X1CrCgytUM5

ACCEPT · #30465 · 2026-11-06T00:15Z · Head-sha: 32c6f5771506632d53ec307ae4008028fc965315

席位核对

  1. Shape: 2 files, +30/−0: examples/app-showcase/src/data/extensions/account.extension.ts declares pluralLabel: 'Accounts (Success Overlay)' beside its renamed label (with a three-line comment saying why); showcase-object-extension-scalar-divergence.dogfood.test.ts gains one case pinning that GET /meta/object/showcase_account and GET /meta/object serve the declared pair in en and zh-CN. Diff read at this head.
  2. Premise, measured: since PR fix(objectql,rest)!: serve an object an extension renames without the base's plural (#30391) #30459 a rename with no plural is served with no plural, so the list title fell back to the singular. The pin's reverse check (extension reverted to origin/main) fails only the new case (7 of 8 still pass), so the pin bites on exactly this change.
  3. Gates: 55 derived: 54 exit 0, 1 exit 3 NOT MEASURED (check:dual-build-cjs-loads, needs a whole-workspace build; CI runs it); check-plugin-teardown-shape --self-test exit 0 after fetching its pinned fixture. Pin file 8/8, typecheck of @objectstack/example-showcase and @objectstack/dogfood and eslint on both files exit 0. CI was still running at ACCEPT; auto-merge lands only on all required checks green.
  4. Accepted deviations / corrections: (a) no zh-CN translation entry was added, though the card offered one: the showcase catalog is a code catalog, not a .custom pair, and a value that diverges from the packaged base is never looked up there, so an entry would never be served; zh-CN serves the declared pair as written, which the new case pins. (b) The commit message carries a Fixes #30465 line; it closes the same card as the PR body, so the history is left as pushed.
  5. Out of scope: none.
  6. Landing: check-governed-merges --pr 30738: NOT governed, 30 lines. skip-changeset is right (the showcase example and the dogfood suite publish nothing). Ordinary queue landing by this seat: ready + auto-merge.

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

Labels

size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

showcase: the showcase_account extension renames the object without a pluralLabel, so its list title loses Accounts / 客户 once PR #30459 lands

1 participant