Repository navigation
refactor(i18n): show browser tabs, page notes, VS Code, and px0 through Fluent - #942
Merged
Merged
Conversation
#905 (iOS app, one pairing for every machine) and #926 (localized errors) merged independently. #905 moved herdr-automate's binary, checksum, and platform failures into host_build::Error and added herdr_client::Error::TerminalAttach, remote control's app::Error::Enroll, and the root Error::Nearby, none of which had a Localize mapping, so main no longer compiled. Each new enum gets its own mapping and .ftl file, as #926 set out: host_build (error-host-build.ftl, which takes over the three automation messages), terminal_attach (error-client-terminal-attach.ftl), nearby (error-nearby.ftl), and enroll (in error-remote-control.ftl). Per-variant tests cover each. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BFavh5CsF9aiVsJURUwioh
…gh Fluent Part of Phase 2 of docs/i18n.md. browser/ is marked migrated: every text it shows comes from browser.ftl, browser-notes.ftl, browser-vscode.ftl, and browser-px0.ftl. Errors a page, VS Code's server, or px0 report go through localize() instead of to_string(). Tab titles stay saved in English, as the command line lists them; the window shows the title the app gives a tab it draws (Review, Orchestrator, Devices, Terminal, New Tab) in its language. The prompt an agent receives with page notes stays English, marked as data. Inline test modules of three files move to their own tests.rs, and the browser gains an en-XA leak test.
Collaborator
Author
|
|
[Medium impact] The PR appears safe to merge; both previously reported tab-name problems are fixed. SummaryMoves browser text to Fluent while keeping saved tab titles in English.
Reviews (3) · Last reviewed commit: "fix(i18n): show a terminal tab's program..." · Reviewed by Greptile |
Under en-XB the page toolbar kept its left-to-right order, so Back pointed away from the side it should lead from. The row now runs from the start side, and Back and Forward point along it.
penso
added a commit
that referenced
this pull request
Oct 31, 2026
7 of 10 tasks
# Conflicts: # crates/herdr-gpui/locales/en-US/error-client-terminal-attach.ftl # crates/herdr-gpui/locales/en-US/error-host-build.ftl # crates/herdr-gpui/locales/en-US/error-nearby.ftl # crates/herdr-gpui/locales/en-US/error-remote-control.ftl # crates/herdr-gpui/src/i18n/errors/client/terminal_attach.rs # crates/herdr-gpui/src/i18n/errors/host_build.rs # crates/herdr-gpui/src/i18n/errors/nearby.rs # crates/herdr-gpui/src/i18n/errors/remote_control.rs # crates/herdr-gpui/src/i18n/errors/tests/nearby.rs
… own line rustfmt had pulled the keep-sorted end marker onto the match arm's closing brace, so just check-sorted failed on main.
✅ Deploy Preview for herdr-ui canceled.
|
Tab::label() called every tab without a location New Tab, but an editor tab also starts without one while its server starts or waits for license consent. It now keeps the product name the store gave it.
The debug build already takes about 17 of its 20 seconds on a shared Windows runner, so slower runs timed out after every layout passed. The deadline only bounds a hung fixture; just test-perf measures speed.
Collaborator
Author
|
@greptileai review |
…inal Location::drawn_title() names every herdr-core terminal tab Terminal in the window's language, so Tab::label() hid the title the active pane's program reports. The label now keeps that title once a program sets one and translates only the default name.
Collaborator
Author
|
@greptileai review |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merged with
main, including main's own fix for the #905 build break (3f18590). It takes main's side of everyi18n/errorsfile, so it no longer depends on #937. It also carries one style commit:mainfailedjust check-sorted, because rustfmt had folded thekeep-sorted endmarker ini18n/errors/host_build.rsonto a closing brace. #941 makes the same edit.Summary
Part of Phase 2 of
docs/i18n.md(string migration), following #880, #924, #925, #926, and #928. This PR covers browser tabs. Chats follow in a stacked PR.browser/is marked// i18n: migratedas a whole. Its text comes from four new files:browser.ftl(tabs, toolbar, address, placeholders),browser-notes.ftl(the page notes panel and its flashes),browser-vscode.ftl(the VS Code tab and its license prompt), andbrowser-px0.ftl.localize()instead ofto_string().herdr-gpui tab list). The window shows the title the app gives a tab it draws (Review · branch, Orchestrator · repo, Devices, Terminal, New Tab) in its own language through a newTab::label.// i18n: data, as Security's prompts are. So areLocation::display(used only in that prompt), the cut note an agent reads inbrowser feedback, and CSS, HTML, JS, and product names.set_placeholder_with, so they follow a language change.location.rs,view.rs, andannotate_view/screenshots.rsmove to their owntests.rs. The checker would otherwise read their fixtures as shown text, and AGENTS.md keeps test bodies out of production files.browser/view_tests/en_xa.rscovers a blank tab with its toolbar and placeholder, the empty notes panel, the composer, a note in the list, and a VS Code tab whose server refuses its token.direction::Logical::row, and its arrows usedirection::icon.view_tests/rtl.rscovers it.docs/i18n.md: "What is left" and the leak-test list are updated.Still English
agent_notes, which the code view's notes share. It is outside this PR's scope and is listed in "What is left".Screenshots
Native macOS captures, debug build, against an isolated sandbox daemon. The tabs were opened with
herdr-gpui browser openandrun new_browser_tab, and the language was switched withherdr-gpui language set; no synthetic input was used. The page's own text stays as the page wrote it.language set en-XB: the placeholder follows the switch, and the toolbar runs from the rightThe notes panel needs a click on Annotate, so it is not captured; the leak test covers it.
QA
just formatjust cionbfdfebb54(macOS arm64): passedjust lint-linux: passed. The first run caught acfggate moved onto the wronguse; it is fixed in this commit.just lint-windows: passedscripts/check-i18n.py: every English message is used, andbrowser/holds no English literal outside data markersherdr-gpui browser open https://example.com), click Annotate, add a note on the page, and check the panel, flashes, and tab title🤖 Generated with Claude Code
https://claude.ai/code/session_01BFavh8DuqfoT8UKWKk97Kq