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.

Report page goes blank (React error #31) when a report's label or description is the spec's inline locale map (I18nLabel { zh-CN, en }) #13470

Closed

Description

@objectstack-fleet

Category: ① defect with reach — every app that gives a report an inline-locale label/description (the only way to translate a report: the translation bundle has no reports group) gets a blank report page for every viewer.

Who acts: objectui maintainer seat (app-shell ReportView).

Dedupe: searched objectui + objectstack for "report label locale map React error 31 / I18nLabel report crash" — 0 hits on reports; 22 hits in the same family (closed: objectui#13380 public form, objectui#11158 Studio nav rail, objectui#10847 dashboard designer widget title, objectui#10993 form submitText). ReportView was not covered by any of them.

Repro

  • @objectstack/spec / runtime 18.0.0, console from the same release.
  • Report metadata (valid under ReportSchema, whose label is string | I18nLabel):
defineReport({
  name: 'srm_delivery_scorecard',
  label: { 'zh-CN': '供应商交付与质量(按期间)', en: 'Supplier Delivery and Quality by Period' },
  description: { 'zh-CN': '…', en: '…' },
  type: 'summary',
  dataset: 'srm_delivery_metrics',
  rows: ['period', 'supplier'],
  values: ['line_count', 'otd_rate'],
})
  • Open /_console/apps/<app>/report/srm_delivery_scorecard as any user.

Actual

Whole page is blank; console: Minified React error #31 … object with keys {zh-CN, en}.

Expected

The label and description resolve to the viewer's locale, like object/field labels do.

Where

packages/app-shell/src/views/ReportView.tsx renders {previewReport.title || previewReport.label || 'Report Viewer'} and {previewReport.description} raw (still so on main). The report lists (全部报表, nav) may need the same resolution.

Downstream

objectstack-ai/hotsrm works around it by using a plain Chinese label (English lost for this report) until this is fixed.

Filed from Claude session session_01E7UNrUkwEKDrg7BXnKF5LU (hotsrm v0.4 browser acceptance).

Activity

  1. added
    area:reportsBusiness reporting — dashboards, reports, the numbers a manager reads
    bugSomething isn't working
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat
    on Oct 24, 2026
  2. objectstack-fleet commented on Oct 24, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first grade — bug · priority:p1 · domain:ui · area:reports · pm:queue · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-24T17:00Z

    ⛔ Not a claim, ⛔ not a dispatch.

    • p1: a valid ReportSchema document blanks the whole report page for every viewer (React Task: Refactor Monorepo to Support Lazy-Loaded Plugins #31). An inline locale map is the only way to translate a report today.
    • Route: ReportView.tsx resolves label / description through the same locale resolution the objectui#13380 family used. Pin it with a report whose label is { 'zh-CN', en }.

    Generated by Claude Code

  3. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 · 2026-10-25T00:23Z
    Session: session_01EsHaC5nYMcJgk2Nr6fbVdG (the card session that works this card; claim written by the domain:ui seat 4 session session_01XWGTsmqrtrt1Zqh1ioWqsT)
    Account: os-elon-musk
    Branch: claude/project-thread-j5a2c7 (platform-assigned at spawn; the card session can push only this branch)
    Worktree: objectui-issue-13470
    Domain: domain:ui
    Seat: domain:ui#4
    File surface: packages/app-shell/src/views/ReportView.tsx and the report list / nav surfaces that print a report label or description, their tests, .changeset/13470-*.md (stop on breach; explain in the report)
    Container & model: M, p1, mode:thread, model: default tier (dispatch-gates --tier --repo objectstack-ai/objectui: no path-derived mandate), effort: xhigh
    Clause-②: no
    Metadata-protocol: none
    Responsibility: objectui's ReportView prints the spec's string | I18nLabel label and description raw | the locale resolution the objectui#13380 family already uses | every viewer of a report whose label or description is an inline locale map; objectstack-ai/hotsrm works around it today
    Thread-read: 6387018532
    Premise: holds — ReportView.tsx:405-407 on objectui main cd70b78 still renders previewReport.title || previewReport.label and previewReport.description raw
    Serial constraints cleared: none — seat 1's in-flight objectui#13442, #13449, #13450 declare no path under packages/app-shell/src/views/**
    Writes: all PR, comment and label writes go only through objectstack's relay (scripts/pm/fleet-write); never write with GitHub MCP.

    • Clause-② reason: the console starts rendering a shape the spec already declares (ReportSchema.label is string | I18nLabel); no objectui accept set or export widens.
    • Ruling section: no maintainer ruling on this card; triage's route (6387018532) is a suggestion, verify it.
  4. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 13470,
      "status": "done",
      "branch": "claude/project-thread-j5a2c7",
      "pr": "https://github.com/objectstack-ai/objectui/pull/13487",
      "session": "session_01EsHaC5nYMcJgk2Nr6fbVdG",
      "premise_still_valid": true,
      "summary": "Premise held on main cd70b78: ReportView drew the report's string-or-I18nLabel label and description raw, and so did the AppHeader report crumb (via reportLabel's untouched fallback), so an inline locale map blanked the report page with React #31; a whole-report drill titled its drawer [object Object]. All four sites now resolve the map in the viewer's language with metadataText (the reader useAppReportEntries already uses for the report index and the palette's app-report rows, which were checked and needed no change). One changeset, @object-ui/app-shell patch, carrying Clause-② no / Metadata-protocol none.",
      "tests": "At head 899902d. New pins ReportView.inlineLocaleLabel-13470 + AppHeader.reportCrumbInlineLocale-13470 (real components, real I18nProvider, en and zh-CN legs, plain-string control): Test Files 2 passed (2), Tests 12 passed (12). Every test file importing ReportView / AppHeader / AppReportIndexView / appReportIndex (39 files): Test Files 39 passed (39), Tests 323 passed (323). Ablation per site on the committed fix, restored via git checkout HEAD with git diff HEAD empty after each: heading reverted 6 failed/6 passed (React #31, object with keys {zh-CN, en}); description reverted 6 failed/6 passed (same); drill title reverted 2 failed/10 passed (drawer reads [object Object]); crumb reverted 2 failed/10 passed (React #31). Whole packages/app-shell suite at --maxWorkers=2 printed nothing for 60 min and was stopped: NOT MEASURED locally, family left to CI's sharded pnpm test; narrowing and its blind spot declared in the PR body.",
      "gates": "Local, at 899902d: turbo run type-check --filter=@object-ui/app-shell --concurrency=2 :: exit 0 (30/30 tasks); eslint on the 4 touched files :: exit 0 (0 errors, 44 pre-existing warnings, none on a changed line); node scripts/check-changeset-presence.mjs :: exit 0; pnpm check:new-line-citations :: exit 0 (0 new); node scripts/check-changeset-no-major.mjs :: exit 0. objectui has no dispatch-gates.mjs, so there is no --ran reconciliation; the list was derived by hand from package.json. CI check-runs on PR #13487 had just started at report time: NOT MEASURED, the seat reads them at ACCEPT.",
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "mcp_calls": "5 — mcp__github__issue_read x4 (get, get_comments x3), mcp__github__pull_request_read x1 (get, PR 13391 for the sibling shape); no write tool",
      "api_writes": "3 — relay fleet-write: pr_create (objectui PR 13487, draft forced, assignee os-elon-musk; read-back identical 6323 bytes), pr_request_reviewers (PR 13487, os-elon-musk), comment (this report on objectui issue 13470); plus 2 git push to the branch (not REST)",
      "open_questions": [],
      "out_of_scope_findings": [
        "class: a · reach: AppHeader mounted at /apps/srm/page/welcome (this PR's crumb harness, real useObjectLabel) with that page's label set to { 'zh-CN', en } throws Objects are not valid as a React child (found: object with keys {zh-CN, en}) — a page whose label is an inline locale map blanks its route · evidence: AppHeader's page branch hands pageDef.label to pageLabel as its fallback, PageSchema.label is I18nLabel; probe not committed · dedupe words: page label locale map React error 31, AppHeader page routeTitle I18nLabel, page inline locale label blank",
        "carrier: none — DatasetReportRenderer resolveText (joined-report block heading) reads only a map's default entry, so a block label { 'zh-CN', en } shows the block name; read-only code reading, not measured · noted in Acceptance notes, not filed",
        "carrier: none — ReportView still reads an undeclared root title before label (ReportSchema declares no title; the dashboard twin retired under ADR-0049) · noted in Acceptance notes, not filed"
      ]
    }

    Generated by Claude Code

  5. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT → PR #13487 comment 6392158345 · domain:ui#4 · 2026-10-25T01:52Z. Landing under the maintainer's standing word.

  6. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · domain:ui#4 · 2026-10-25T02:13Z

    PR #13487 merged at 2026-10-25T02:08Z, merge commit 23e912e40684dd5c8943889712adac6b47fd899d. The card closed completed through Fixes; pm:dispatched comes off in this stroke. The page-route twin is filed as objectui#13488. objectui merges publish nothing (the changesets release is a human act).


    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:reportsBusiness reporting — dashboards, reports, the numbers a manager readsbugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p1

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions