Repository navigation
refactor: show the Security section and its pages in Fluent messages - #927
Merged
Merged
Conversation
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
Collaborator
Author
[Medium impact] The PR appears safe to merge; no new actionable issues were found. SummaryMoves the Security section and its alert and report pages to Fluent messages.
Reviews (2) · Last reviewed commit: "refactor: keep the Security filter's pla..." · Reviewed by Greptile |
… i18n/panels-security # Conflicts: # docs/i18n.md
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
Collaborator
Author
|
@greptileai review — the filter placeholder finding is addressed in ebd4b7a ( |
penso
added a commit
that referenced
this pull request
Oct 31, 2026
…essages (#924) * refactor: show Overview, Devices overview, and plan usage in Fluent messages 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 * refactor: let the Overview host meters' labels grow with their language 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 * refactor: keep the device searches' placeholders in the shown language 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 * refactor: show the Security section and its pages in Fluent messages (#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> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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, following #880's patterns. Stacked on #924 (it usesi18n::leak_tests::uncutfrom there); GitHub retargets it tomainonce #924 merges.The activity bar's Security section takes its text from
security.ftl, andsecurity.rsis marked// i18n: migrated. That covers its header, its notes, the reported and per-repository cards, the filter and pills, the list beside an open item, and every tab of an alert's page (Overview, Advisory, Dependency path) and a report's page (Report, Advisory draft, Conversation).label()for agent prompts and gainstext()for the window.id()for element IDs and selectors, sosecurity-tab-Advisorybecomessecurity-tab-advisory.// i18n: data.docs/i18n.mdnow lists agent prompts among what is never translated.Looktakes owned labels for icon buttons, toggles, and compact buttons. Existing&'static strcallers still compile.$errorplaceables.security/tests/en_xa.rsopens the section with every kind of note (quiet, alerts off, unreadable, failed), then each tab of an alert's and a report's page with full GitHub data. Detail lines join facts with " · ", so a line that is not one message is checked fact by fact.English text is unchanged.
Screenshots
Native macOS captures, debug build, against an isolated sandbox daemon. The sandbox has no GitHub sign-in, so the section shows its sign-in note; the cards and pages are covered by the leak test.
QA
just formatjust cion7679e1f1(macOS arm64): passed, 14,940 Rust tests, 0 failed; check-i18n: 1283 messages in 37 files valid and usedjust lint-linux/lint-windowswere not run: nocfggates changed.🤖 Generated with Claude Code
https://claude.ai/code/session_01BFavh5KCVyLoRNDUMJmjfN