Files
OpenHands/.pr/issue-134/visual-verification.md
T
Graham Neubigandopenhands c8959713b2 Translate hardcoded settings strings (#134, ports OpenHands#14286) (#143)
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>
2026-05-07 12:54:56 -04:00

2.1 KiB

Visual verification — Issue #134 (app-settings polish)

Frames in demo.gif

  1. 01-app-settings-en.png — Settings → Application page rendered by npm run dev. The Git Username and Git Email inputs are emptied so their placeholders are visible. Both placeholders now resolve through t(I18nKey.SETTINGS$GIT_USERNAME_PLACEHOLDER) and t(I18nKey.SETTINGS$GIT_EMAIL_PLACEHOLDER) instead of the previous hardcoded English strings.
  2. 03-mcp-timeout-label.png — Settings → MCP with the "Add MCP Server" form open and Server Type = SHTTP. The "Timeout (seconds)" label now resolves through t(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-i18n regenerates src/i18n/declaration.ts with 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.