Repository navigation
refactor: show Overview, Devices overview, and plan usage in Fluent messages - #924
Merged
Merged
Conversation
…essages
Part of Phase 2 of docs/i18n.md: the activity bar's Overview, the Devices
overview tab, and plan usage (status bar segments, the panel they open,
and the Usage section) take their text from overview.ftl,
devices-overview.ftl, and usage.ftl, and their modules are marked
migrated.
- Hand-built plurals (agent and device counts, report counts) are Fluent
selectors; times ("4m", "Mon 09:00", "2h 53m") are messages, with the
weekday chosen in the message.
- usage/text.rs renders herdr-usage's typed values (limit kinds,
countdowns, pace, balances) through messages; what a service names
itself stays as reported, and docs/i18n.md lists the text herdr-usage
still writes.
- The Overview summary stresses each count inside one message rather than
splicing the number beside a fragment.
- Snooze presets and the device table's columns name message IDs, checked
by tests.
- Each surface has an en-XA leak test. i18n::leak_tests gains `uncut`,
which drops the cuts GPUI shapes while measuring a truncated element.
English text is unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BFavh5KCVyLoRNDUMJmjfN
The CPU and MEM labels on a host card had a fixed 30 px width, so a longer translation ran under its bar (seen under en-XA). The width is now a minimum. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BFavh5KCVyLoRNDUMJmjfN
👷 Deploy Preview for herdr-ui processing.
|
✅ Deploy Preview for herdr-ui canceled.
|
Collaborator
Author
|
|
[Medium impact] The PR appears safe to merge; no actionable defects were found. SummaryMoves Overview, Devices overview, and plan-usage text into Fluent messages.
Reviews (2) · Last reviewed commit: "Merge remote-tracking branch 'origin/mai..." · Reviewed by Greptile |
4 of 7 tasks
Review follow-ups for the Overview, Devices overview, and usage
migration:
- The Devices overview's search and the sidebar's device tree search
format their placeholders again when the language changes
(`set_placeholder_with`), as Settings' searches do.
- claude-swap's notes on other accounts ("token expired", "disabled")
come from usage.ftl, chosen by the account's status, which
herdr-usage now exports as `ClaudeAccountStatus`; a test checks every
status reads as the crate's English did.
- The leak tests cover OpenAI's daily spend, claude-swap's other
accounts, and the Overview's Closed shelf with Reopen and Forget.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BFavh5KCVyLoRNDUMJmjfN
…usage # Conflicts: # docs/i18n.md
Collaborator
Author
|
@greptileai review — the leak-test finding is addressed in 0e4a6a8 (OpenAI daily spend, claude-swap's other accounts, and the Overview's Closed shelf). |
…927) * refactor: show the Security section and its pages in Fluent messages Part of Phase 2 of docs/i18n.md: the activity bar's Security section, its list and filter, and an alert's or a report's page take their text from security.ftl, and security.rs is marked migrated. - Hand-built plurals (reports in triage, open alerts) are Fluent selectors; relative times and dates ("Oct 14, 2026 · 5 h ago") are messages, with the month chosen in the message. - Severity keeps its English label for agent prompts and gains `text()` for the window; page tabs keep a stable `id()` for element IDs and selectors, so `security-tab-Advisory` becomes `security-tab-advisory`. - The fix and investigate prompts written for an agent stay English, as do upgrade commands and GraphQL queries (`// i18n: data`); docs/i18n.md adds agent prompts to what is never translated. - The orchestrator's Look takes owned labels for icon buttons, toggles, and compact buttons. - An en-XA leak test opens the section with every kind of note, then each tab of an alert's and a report's page. English text is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BFavh5KCVyLoRNDUMJmjfN * refactor: keep the Security filter's placeholder in the shown language The filter field is built once per window, so its placeholder kept the language it was built in. It now formats again when the language changes (`set_placeholder_with`), as Settings' searches do. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BFavh5KCVyLoRNDUMJmjfN --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…usage # Conflicts: # docs/i18n.md
This was referenced Oct 31, 2026
shin1ohno
added a commit
to shin1ohno/herdr-gpui
that referenced
this pull request
Nov 1, 2026
Brings in upstream's 16 commits, among them the native Herdr Remote app and one pairing for every machine (sheprd-labs#905), the device picker rebuilt as unfolding devices (sheprd-labs#939), and the i18n Fluent migrations with exhaustive error mappings (sheprd-labs#913, sheprd-labs#915, sheprd-labs#924, sheprd-labs#925, sheprd-labs#926, sheprd-labs#941). Conflicts: upstream's picker, sessions and usage code win; the iPad's needs are re-applied on top. The iPad's Sessions entry now lives on the unfolded SSH Herdr 1 device (the old footer button and Page::Sessions are gone upstream). Every error variant this branch added has a Fluent message, and the iPad's cloud, update and remote notices say iPadOS instead of Windows. The local scan never runs on iPad. On the desktop, the picker and sidebar read the selected device's connection state from the window, as this branch did before. View-level iPad picker and Sessions behaviour is type-checked; its pure predicates run in the host tests.
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.
Summary
Part of Phase 2 of
docs/i18n.md(string migration), following #880's patterns. This PR covers three of the activity bar's surfaces: the Overview, the Devices overview tab, and plan usage (status bar segments, the panel a segment opens, and the Usage section). Orchestrator, Security, Review, and Automations follow in their own PRs.overview.ftl,devices-overview.ftl, andusage.ftlhold every string these surfaces show.overview.rs,devices_overview.rs,usage.rs, andpull_request.rs(which shows no text) are marked// i18n: migrated.usage/text.rsrenders the crate's typed values through messages: limit kinds, countdowns, pace ("11% in reserve · Lasts until reset"), "N% left", and balances ("$12.30 of $50.00"). Text a service reports, or that herdr-usage writes for one (fact and share titles, balance labels, count units, named windows, setting help), still shows as is.docs/i18n.mdlists it under What is left.i18n::takes.overview/tests/en_xa.rs,devices_overview/tests/en_xa.rs,usage/tests/en_xa.rs).i18n::leak_tests::uncutdrops the cut copies GPUI shapes while measuring a truncated element, which the recorder otherwise reports as leaks. Text from modules other agents are migrating (sidebar status names, the browser's "Devices" tab title) is passed as data for now.$errorplaceables.Visible change: the Overview host card's CPU/MEM label width is now a minimum instead of fixed, since under en-XA the label ran under its bar. English looks as before.
Screenshots
Native macOS captures, debug build, against an isolated sandbox daemon (no agents). Under en-XB the Devices search field still shows en-XA: it was built before the switch, as
docs/i18n.mddocuments.The Overview en-XA capture is after the host-meter fix; before it, "[ĆƤŨŨ]" and "[ḾḖḖḾ]" ran under their bars.
QA
just formatjust cion646e499e(macOS arm64): passed, 14,938 Rust tests, 0 failed; check-i18n: 1171 messages in 36 files valid and usedjust lint-linux/lint-windowswere not run: nocfggates changed.🤖 Generated with Claude Code
https://claude.ai/code/session_01BFavh5KCVyLoRNDUMJmjfN