Skip to content

[Maintainer] i18n: migrate the dormer, skylight and solar panel inspectors - #1183

Merged
Aymericr merged 4 commits into
mainfrom
cursor/i18n-roof-feature-inspectors-8160
Oct 27, 2026
Merged

Aymericr merged 4 commits into
mainfrom
cursor/i18n-roof-feature-inspectors-8160

Conversation

@Aymericr

@Aymericr Aymericr commented Oct 27, 2026 •

Copy link
Copy Markdown
Member

What does this PR do?

Localizes the dormer, skylight and solar panel inspectors. Part of #621. main (ac2ba6e, with #1180–#1182, #1186 and #1187) is merged in with normal merge commits. There are two, because #1186 landed after the first. The compiled en and en-XA catalogs and the literal baseline were regenerated with i18n:extract, i18n:literals update and i18n:compile. i18n/pseudo-surfaces.ts merged cleanly and keeps all 40 surfaces once. Reviewed entries stay at 85 per locale, and release-check finds no draft compiled in. Stored scene data is unchanged.

  • Option arrays become lazy descriptors:

    • dormer roof type, shed high side and section;
    • skylight type cards;
    • solar panel preset cards.

    The cards wrap their labels instead of truncating them.

  • Dormer window rows:

    • "Window {number}";
    • "Edit {name}" and "Move {name}" as the icon buttons' accessible names;
    • one summary message for the face and size ("{face} · {width} × {height} m"). The face was the raw enum shown capitalised; it is now an ICU select. Sizes use formatFixed instead of toFixed.
  • Preset names. Skylight types and solar panel presets are translated at display time. Core's SKYLIGHT_TYPE_PRESETS and SOLAR_PANEL_PRESET_LABELS stay English.

  • Solar panel. The auto-fit message ("Setbacks too large to fit a panel.") is translated, and the panel sizes use formatFixed.

  • Audit. New dormer-panel, skylight-panel and solar-panel-panel surfaces. They run on the furnished project with a dormer, a skylight and a solar panel seeded on its roof segment.

  • Catalogs. 100 new messages. zh-CN, fr, es and ja drafts are fuzzy with Review: required, so they show English until reviewed. The literal baseline drops by 93, from 951 on main to 858.

How to test

  1. bun run i18n:check passes after the merge, with 3,095 entries per locale awaiting review. bun scripts/i18n.ts release-check --base origin/main passes too.
  2. Run bun dev with ?lang=en-XA. Select a dormer (and its Windows section), a skylight and a solar panel: each inspector is bracketed and accented, and the cards wrap.
  3. Run bunx turbo run build --filter=@pascal-app/nodes, then bun run i18n:pseudo-audit -- dormer-panel skylight-panel solar-panel-panel: all three pass. I ran this.
  4. Tests I ran after the merge, with core and nodes rebuilt first:
    • packages/nodes: 5,028 pass, 1 skip.
    • packages/editor bun test src: 2,704 pass.
    • apps/editor bun test lib: 74 pass.
    • bun test scripts/: 131 pass.
    • The editor, nodes and app type checks are clean, and bun run check reports no errors.

Still English after this PR

Screenshots / screen recording

en-XA, captured by i18n:pseudo-audit (UTC, metric). The images are served from the image-only branch cursor/i18n-audit-screenshots-8160, which is never merged.

Dormer:
Dormer panel en-XA

Skylight (type cards wrap):
Skylight panel en-XA

Solar panel:
Solar panel en-XA

Checklist

  • I've tested this locally with bun dev
  • My code follows the existing code style (run bun check to verify)
  • I've updated relevant documentation (if applicable)
  • This PR targets the main branch
Open in Web Open in Cursor 

Note

Low Risk
UI copy and translation catalogs only; inspector behavior and scene schema are unchanged aside from display formatting.

Reviewed by Cursor Bugbot for commit 17a851c. Bugbot is set up for automated code reviews on this repo. Configure here.

Option arrays become lazy descriptors and option cards wrap; window rows,
their summary and their button names are whole messages; sizes use
formatFixed; skylight and solar panel preset names are translated at display
time. New audit surfaces on a roof seeded with a dormer, skylight and panel.
@Aymericr Aymericr added the bot:maintainer label Oct 27, 2026 — with Cursor
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review 🔄 Running since 2026-10-27T16:48:47.047711Z e52693e PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Copy link
Copy Markdown
Member Author

Tooling cross-review at e52693e: APPROVE

No P0/P1/P2.

  • Stored data: dormer, skylight and solar-panel copy is display only. Solar presets show PRESET_CARDS messages, and core's SOLAR_PANEL_PRESET_LABELS stay English (the English messages match). The auto-fit message is UI state only. Nothing translated reaches updateNode or MCP.
  • Numbers: dormer window and skylight sizes move from toFixed(2) to formatFixed(..., 2, locale), which doesn't group, so English output is unchanged. No # plurals.
  • Catalogs: +100 entries per locale, all fuzzy with Review: required. Reviewed stays at 85 per locale and drafts are 2626 for each locale.
  • No Security areas are touched.

Findings

Checks run locally (Node 22; core and nodes dist rebuilt at this head):

  • Tests: editor 2704 pass; nodes 5026 run, 0 fail; scripts/i18n*.test.ts 56 pass.
  • tsc clean for editor and nodes. Biome clean.
  • i18n:check PASS, catalogs in sync. release-check --base origin/main shows no reviewed regression and no draft compiled in. i18n-literals check reports no new literals.

CI at this SHA: Changed paths, quality, cli-smoke and Cursor Bugbot all succeeded.

Conflicts in the compiled en and en-XA catalogs are regenerated with
i18n:extract and i18n:compile, and the literal baseline with i18n:literals
update. i18n/pseudo-surfaces.ts merged cleanly and keeps every surface once.
#1186 landed after the previous merge. The compiled en and en-XA catalogs are
regenerated again with i18n:extract and i18n:compile.

Copy link
Copy Markdown
Member Author

Tooling cross-review at 17a851c: APPROVE

Delta review since the e52693e approval:

  • Parents check out: 68cafd8 = e52693e + b41339b (main, [Maintainer] i18n: migrate the column, chimney and elevator inspectors #1182), and 17a851c = 68cafd8 + ac2ba6e (main, Agents: units in author_scene and shared unit tools; opening frames follow the wall #1186). Both are normal merges, with no rebase.
  • A clean local merge of e52693e with ac2ba6e conflicts only in the compiled en and en-XA messages.ts packs. Once those are taken from the head, the merge tree is identical to 17a851c (empty diff).
  • A fresh i18n:extract, i18n:compile and i18n-literals update leave git status clean, and i18n:check passes.
  • pseudo-surfaces.ts has 40 surfaces with no duplicate names (dormer-panel, skylight-panel and solar-panel-panel were added).
  • The literal baseline goes from 951 to 858. That drop of 93 is exactly dormer (4+2+11+21), skylight (33) and solar-panel (22). The allowlist, scripts/ and .github are unchanged versus main, and the PR adds no i18n-ignore.
  • 85 strings are reviewed, the same as main (3180 messages, 3095 awaiting review per locale). release-check --base origin/main is clean (exit 0).
  • On Node 22, after rebuilding core and nodes: nodes 5,028 pass (1 skip, 0 fail), editor 2,704 pass (0 fail), and check-types passes (14/14).
  • quality, cli-smoke, Changed paths and Cursor Bugbot are all green at this head. The PR is mergeable/clean against main ac2ba6e.

Nit, not blocking: pseudo-surfaces.ts now has two separate imports from ../packages/core/src/schema. They could be folded into one.

@Aymericr
Aymericr merged commit 20d6497 into main Oct 27, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants