Ports the i18n half of upstream OpenHands frontend PR #14286 ('fix(i18n): translate hardcoded settings strings'): - app-settings.tsx: replaced the hardcoded placeholder='Username for git commits' and placeholder='Email for git commits' strings on the Git Settings inputs with t(I18nKey.SETTINGS$GIT_USERNAME_PLACEHOLDER) and t(I18nKey.SETTINGS$GIT_EMAIL_PLACEHOLDER). - mcp-server-form.tsx: replaced the hardcoded label='Timeout (seconds)' on the SHTTP timeout input with t(I18nKey.SETTINGS$MCP_TIMEOUT_LABEL). All three new keys ship with translations for every locale agent-canvas bundles (en/ja/zh-CN/zh-TW/ko-KR/no/it/pt/es/ar/fr/tr/de/uk/ca), and make-i18n regenerates declaration.ts with matching enum members. The companion upstream PR #14291 — which drops the ENABLE_SANDBOX_GROUPING() feature-flag gate around the sandbox-grouping-strategy dropdown — is a no-op here: the sandbox-grouping field, the dropdown, and the feature flag were all already stripped from agent-canvas during the original OSS port, and sandbox_grouping_strategy is not exposed by openhands-agent-server's settings schemas (verified against 1.20.1). Per the issue's own acceptance criteria, this PR therefore does not re-introduce the control; see .pr/issue-134/visual-verification.md for details. Visual verification + demo GIF: .pr/issue-134/ This commit was created by an AI agent (OpenHands) on behalf of the user. Co-authored-by: openhands <openhands@all-hands.dev>
2.1 KiB
Visual verification — Issue #134 (app-settings polish)
Frames in demo.gif
01-app-settings-en.png—Settings → Applicationpage rendered bynpm run dev. The Git Username and Git Email inputs are emptied so their placeholders are visible. Both placeholders now resolve throught(I18nKey.SETTINGS$GIT_USERNAME_PLACEHOLDER)andt(I18nKey.SETTINGS$GIT_EMAIL_PLACEHOLDER)instead of the previous hardcoded English strings.03-mcp-timeout-label.png—Settings → MCPwith the "Add MCP Server" form open andServer Type = SHTTP. The "Timeout (seconds)" label now resolves throught(I18nKey.SETTINGS$MCP_TIMEOUT_LABEL)instead of the previous hardcoded English label.
The page boots, all related queries succeed, and the new keys round-trip
through make-i18n's declaration generator with no missing translations.
Functional verification
npm run typecheck— clean.npm run build— clean (build/server/index.js 1,136.20 kB).npx vitest run __tests__/routes/app-settings.test.tsx __tests__/routes/mcp-settings.test.tsx __tests__/components/features/settings/mcp-settings/— 10 / 10 passed.make-i18nregeneratessrc/i18n/declaration.tswith the three new enum entries (SETTINGS$GIT_USERNAME_PLACEHOLDER,SETTINGS$GIT_EMAIL_PLACEHOLDER,SETTINGS$MCP_TIMEOUT_LABEL).
On the sandbox-grouping half (#14291)
Upstream PR #14291 drops the ENABLE_SANDBOX_GROUPING() feature-flag
gate around the sandbox-grouping-strategy dropdown in
app-settings.tsx. That dropdown — and the sandbox_grouping_strategy
setting it edits — was already stripped from agent-canvas during the
original OSS port (the field is not present in src/types/settings.ts,
not exposed by either /api/settings/agent-schema or
/api/settings/conversation-schema on openhands-agent-server 1.20.1,
and feature-flags.ts no longer carries the SANDBOX_GROUPING flag).
Per the issue's own acceptance criteria ("if the field isn't part of the schema, gate on schema presence rather than re-introducing the flag"), this PR is a no-op for #14291: there is nothing to ungate.