Skip to content

feat(settings): add UI for sandbox execution backend configuration#3265

Merged
senamakel merged 4 commits into
tinyhumansai:mainfrom
senamakel:issue/3263-add-ui-for-sandbox-execution-backend-con
Jun 3, 2026
Merged

feat(settings): add UI for sandbox execution backend configuration#3265
senamakel merged 4 commits into
tinyhumansai:mainfrom
senamakel:issue/3263-add-ui-for-sandbox-execution-backend-con

Conversation

@senamakel
Copy link
Copy Markdown
Member

@senamakel senamakel commented Jun 3, 2026

Summary

  • Add a Settings panel under Agents → Sandbox execution for configuring sandbox execution backends
  • Surface Docker availability status and detected OS-native backend (seatbelt/landlock/etc.)
  • Backend selection dropdown (auto/docker/landlock/firejail/bubblewrap/none)
  • Docker settings: image, memory limit, CPU limit (auto-persist on blur)
  • Environment passthrough display (read-only, shows safe forwarded vars)

Problem

The sandbox backend configuration (Docker image, memory/CPU limits, backend selection) introduced in #3249 / PR #3261 is currently only configurable via TOML config files. There is no UI surface for operators or users to view or change sandbox settings.

Solution

Rust (core):

  • Added config_get_sandbox_settings and config_update_sandbox_settings RPCs in the config controller
  • Added sandbox field to the top-level Config struct using the existing SandboxConfig type
  • Get endpoint returns merged sandbox + Docker runtime config with live Docker availability probe and OS backend detection
  • Update endpoint validates backend names and CPU limits, persists to config.toml

Frontend (app):

  • SandboxSettingsPanel component with auto-persist pattern (no Save button, matches AgentAccessPanel)
  • Monotonic sequence guard for out-of-order RPC responses
  • TypeScript types and RPC wrappers in tauriCommands/config.ts
  • Route at /settings/sandbox-settings, navigation item under Agents section
  • i18n: 31 keys added to en.ts and all 13 locale files with real translations

Submission Checklist

  • Tests added or updated (happy path + at least one failure / edge case)
  • Diff coverage ≥ 80% — 12 Vitest tests covering load, render, persist, validation, error states, desktop-only gate
  • N/A: Coverage matrix updated — new panel, no existing matrix rows affected
  • N/A: All affected feature IDs from the matrix are listed — new feature
  • No new external network dependencies introduced
  • N/A: Manual smoke checklist updated — settings panel, not release-cut surface
  • Linked issue closed via Closes #3263

Impact

  • Desktop only — panel gates on isTauri(), shows "desktop only" message otherwise
  • Docker availability check runs docker info async on settings load (no perf impact on main thread)
  • OS backend detection is synchronous but lightweight (checks /sys/kernel/security/landlock on Linux, hardcoded on macOS/Windows)
  • No migration needed — new sandbox config field defaults cleanly via SandboxConfig::default()

Related


AI Authored PR Metadata (required for Codex/Linear PRs)

Linear Issue

  • Key: N/A
  • URL: N/A

Commit & Branch

  • Branch: issue/3263-add-ui-for-sandbox-execution-backend-con
  • Commit SHA: 57fd690

Validation Run

  • pnpm typecheck — passes
  • Focused tests: 12/12 pass (SandboxSettingsPanel.test.tsx)
  • Rust fmt/check: passes (cargo fmt && cargo check)
  • ESLint: passes on all changed files

Validation Blocked

  • N/A

Behavior Changes

  • Intended behavior change: New settings panel visible under Settings → Agents → Sandbox execution
  • User-visible effect: Users can view/change sandbox backend, Docker image, memory/CPU limits from the UI

Parity Contract

  • Legacy behavior preserved: Existing TOML config continues to work; UI reads/writes the same config fields
  • Guard/fallback/dispatch parity checks: N/A

Duplicate / Superseded PR Handling

  • N/A

Summary by CodeRabbit

Release Notes

  • New Features
    • Added sandbox execution settings panel enabling users to configure sandbox backend selection (Docker, Landlock, Firejail, Bubblewrap, auto-detect, or none)
    • Configurable Docker settings for image selection and resource limits (memory and CPU allocation)
    • Environment variable passthrough management for sandboxed execution
    • Sandbox enablement toggle with automatic Docker availability detection and backend detection
    • Full support in 13 languages

…inyhumansai#3263)

Add a Settings panel under Agents for configuring sandbox execution
backends (Docker image, memory/CPU limits, backend selection) and
viewing sandbox status (Docker availability, detected OS backend).

Rust: config_get_sandbox_settings / config_update_sandbox_settings RPCs
in the config controller, reading from config.sandbox + config.runtime.docker.

Frontend: SandboxSettingsPanel with auto-persist on change, backend
dropdown, Docker settings inputs, env passthrough display, status badges.
12 Vitest tests covering load, render, persist, validation, and error
states. i18n keys added to en.ts and all 13 locale files.
@senamakel senamakel requested a review from a team June 3, 2026 03:12
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Jun 3, 2026

Review Change Stack

Warning

Review limit reached

@senamakel, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 33 minutes and 30 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 4de82eb2-0de9-4f34-893a-6989f93f310f

📥 Commits

Reviewing files that changed from the base of the PR and between 4ec9c8e and 500e076.

📒 Files selected for processing (17)
  • app/src/components/settings/panels/SandboxSettingsPanel.tsx
  • app/src/lib/i18n/ar.ts
  • app/src/lib/i18n/bn.ts
  • app/src/lib/i18n/de.ts
  • app/src/lib/i18n/en.ts
  • app/src/lib/i18n/es.ts
  • app/src/lib/i18n/fr.ts
  • app/src/lib/i18n/hi.ts
  • app/src/lib/i18n/id.ts
  • app/src/lib/i18n/it.ts
  • app/src/lib/i18n/ko.ts
  • app/src/lib/i18n/pl.ts
  • app/src/lib/i18n/pt.ts
  • app/src/lib/i18n/ru.ts
  • app/src/lib/i18n/zh-CN.ts
  • app/src/utils/tauriCommands/config.ts
  • src/openhuman/config/ops.rs
📝 Walkthrough

Walkthrough

This PR implements a complete sandbox settings configuration UI, adding a backend RPC API for managing sandbox execution (Docker image, memory/CPU limits, env passthrough, backend selection), TypeScript types and wrappers, a React settings panel with load/persist flow, navigation integration into Settings, and translations across 14 locales.

Changes

Sandbox Settings Configuration Feature

Layer / File(s) Summary
Rust backend: config schema and RPC API
src/openhuman/config/schema/types.rs, src/openhuman/config/ops.rs, src/openhuman/config/schemas.rs, src/openhuman/sandbox/ops.rs, tests/config_auth_app_state_connectivity_e2e.rs
Config struct gains a sandbox field. get_sandbox_settings fetches merged sandbox/Docker config plus live Docker availability probe and OS-native backend detection (landlock/firejail/bwrap on Linux; fixed labels for macOS/Windows). apply_sandbox_settings validates backend names, updates config fields, saves, and returns snapshot. RPC schema registration and handlers route incoming requests to these operations. E2E test expectations include the two new RPC methods.
Frontend RPC and type contracts
app/src/services/rpcMethods.ts, app/src/utils/tauriCommands/config.ts
Maps configGetSandboxSettings and configUpdateSandboxSettings to core RPC method names. Exports SandboxBackendId union, SandboxSettings (read) and SandboxSettingsUpdate (write) interfaces, and Tauri command wrappers for get/update operations.
React settings panel and test coverage
app/src/components/settings/panels/SandboxSettingsPanel.tsx, app/src/components/settings/panels/__tests__/SandboxSettingsPanel.test.tsx
Panel component manages load/persist lifecycle with sequence-guarded async updates to drop stale responses. Renders status (Docker availability, detected backend), enabled toggle, backend dropdown, Docker image/memory/CPU numeric inputs with validation, env passthrough tag list, and error/success messaging. Tests verify load on mount, persistence of all field types, Tauri-gating (desktop-only), error/success note display, and input validation.
Settings navigation and routing
app/src/components/settings/hooks/useSettingsNavigation.ts, app/src/pages/Settings.tsx
SettingsRoute union, route detection, and breadcrumb generation extended for 'sandbox-settings'. Settings page imports panel, adds nav item with i18n-backed title/description, and wires leaf route at /settings/sandbox-settings.
Internationalization across 14 locales
app/src/lib/i18n/*.ts
Sandbox feature strings (title, description, status/loading/error labels, backend option names, Docker/resource/env config fields) added to English base and translated into Spanish, French, German, Portuguese, Italian, Polish, Russian, Chinese, Bengali, Hindi, Indonesian, Arabic, and Korean. Agent access approval history string also translated in all locales.

Sequence Diagram(s)

sequenceDiagram
  participant React Panel
  participant Tauri Bridge
  participant Rust RPC Handler
  participant Config Ops
  participant Disk
  participant Docker CLI
  
  rect rgba(200, 220, 255, 0.5)
    note over React Panel,Docker CLI: Load sandbox settings on mount
    React Panel->>Tauri Bridge: openhumanGetSandboxSettings()
    Tauri Bridge->>Rust RPC Handler: call openhuman.config_get_sandbox_settings
    Rust RPC Handler->>Config Ops: get_sandbox_settings()
    Config Ops->>Disk: load config file
    Config Ops->>Docker CLI: docker info (availability check)
    Config Ops->>Config Ops: detect_os_sandbox_backend (Linux/macOS/Windows)
    Config Ops-->>Rust RPC Handler: merged sandbox+docker JSON
    Rust RPC Handler-->>Tauri Bridge: CommandResponse<SandboxSettings>
    Tauri Bridge-->>React Panel: settings state, isLoading=false
  end
  
  rect rgba(200, 255, 220, 0.5)
    note over React Panel,Docker CLI: User updates backend selection
    React Panel->>React Panel: onChange backend value
    React Panel->>Tauri Bridge: openhumanUpdateSandboxSettings({backend: "docker"})
    Tauri Bridge->>Rust RPC Handler: call openhuman.config_update_sandbox_settings
    Rust RPC Handler->>Config Ops: load_and_apply_sandbox_settings(patch)
    Config Ops->>Config Ops: apply_sandbox_settings: map "docker" to SandboxBackend enum
    Config Ops->>Disk: save updated config
    Config Ops-->>Rust RPC Handler: post-save config snapshot JSON
    Rust RPC Handler-->>Tauri Bridge: CommandResponse<ConfigSnapshot>
    Tauri Bridge-->>React Panel: update resolved, isSaving=false, show savedNote
  end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Suggested labels

feature, rust-core, agent

Suggested reviewers

  • sanil-23
  • graycyrus

Poem

🐰 A sandbox takes shape, backend and UI unite—
Docker probes, Linux detects, settings persist just right,
From Rust ops to React panels, with translations bright,
Fourteen locales celebrate this feature's flight! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: adding UI for sandbox execution backend configuration in settings.
Linked Issues check ✅ Passed All acceptance criteria from #3263 are met: settings panel shows current backend/config, users can change Docker settings, changes persist via core RPC, i18n strings use useT() across 13 locales, and 12 Vitest tests cover the component.
Out of Scope Changes check ✅ Passed All changes are directly related to sandbox execution backend configuration UI as specified in #3263; no unrelated modifications detected.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Comment @coderabbitai help to get the list of available commands and usage tips.

senamakel added 2 commits June 2, 2026 23:24
Add config_get_sandbox_settings and config_update_sandbox_settings to
the expected controller schema list in worker_a_controller_schemas_are_fully_exposed.
@coderabbitai coderabbitai Bot added feature Net-new user-facing capability or product behavior. rust-core Core Rust runtime in src/: CLI, core_server, shared infrastructure. agent Built-in agents, prompts, orchestration, and agent runtime in src/openhuman/agent/. labels Jun 3, 2026
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
src/openhuman/sandbox/ops.rs (1)

28-44: ⚠️ Potential issue | 🟠 Major | 🏗️ Heavy lift

The new sandbox settings are never consulted during policy resolution.

apply_sandbox_settings() writes config.sandbox.backend and config.sandbox.enabled in src/openhuman/config/ops.rs Lines 2031-2049, but this resolver still derives the backend solely from runtime_config.kind and is_remote_session. That makes the new Settings UI effectively a no-op for actual execution, especially for landlock, firejail, bubblewrap, and none, and it also ignores the enable/disable toggle.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/openhuman/sandbox/ops.rs` around lines 28 - 44, resolve_sandbox_policy
currently ignores the new UI-written sandbox settings and derives backend only
from runtime_config.kind and is_remote_session; update resolve_sandbox_policy to
read and honor runtime_config.sandbox.enabled and runtime_config.sandbox.backend
(as set by apply_sandbox_settings) and use those values to determine
SandboxBackendKind (mapping values like "landlock", "firejail", "bubblewrap",
"none" to the corresponding SandboxBackendKind) and to disable sandboxing when
enabled==false, falling back to the existing
runtime_config.kind/is_remote_session logic only when sandbox settings are
absent or unspecified; locate and change the logic in resolve_sandbox_policy so
it queries config.sandbox.backend and config.sandbox.enabled (or
runtime_config.sandbox.*) before deciding the backend.
tests/config_auth_app_state_connectivity_e2e.rs (1)

2799-2818: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Add real JSON-RPC coverage for the sandbox methods.

This only proves the methods are registered in /schema. It still won't catch param/response drift for the new sandbox settings flow, and the UI depends on the get/update payload shape over the live /rpc surface.

A small follow-up test that calls both methods and asserts the enabled / backend / docker_* round-trip would close that gap.

Based on learnings: "Add/update E2E coverage for user-visible flows and cross-process integration behavior" and "Add or extend JSON-RPC integration-style tests that call the real HTTP JSON-RPC surface ... so methods, params, and outcomes match what the UI will call."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/config_auth_app_state_connectivity_e2e.rs` around lines 2799 - 2818,
The sandbox methods are only being verified as present in /schema, so the live
JSON-RPC payload shape is still untested. Add an E2E-style JSON-RPC call path in
tests/config_auth_app_state_connectivity_e2e.rs that exercises the real /rpc
surface through the sandbox get/update methods, using the existing
openhuman.config_get_sandbox_settings and
openhuman.config_update_sandbox_settings symbols. Assert a full round-trip for
the user-visible fields, especially enabled, backend, and docker_* values, so
param/response drift is caught.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@app/src/components/settings/panels/SandboxSettingsPanel.tsx`:
- Around line 56-57: The component initializes memory/cpu inputs by mapping null
to '' (via setMemoryLimitMb/setCpuLimit) but the blur handlers only send
positive numbers, so clearing the input in the UI doesn’t persist (backend stays
unchanged); update the blur/update handlers in SandboxSettingsPanel (and the
analogous handlers around the 106-118 block) to treat an empty string as null
and send null to the save/update API instead of omitting the field or sending 0,
ensuring the persisted value is cleared; add regression tests that set a limit,
clear the input (simulate blur), and assert the backend receives null for both
docker_memory_limit_mb and docker_cpu_limit.
- Line 267: In SandboxSettingsPanel, replace the hard-coded visible literals
with translations via useT(): import and call useT() in the component and
replace the Docker image placeholder string "alpine:3.20" (placeholder prop on
the image input) and the memory unit label "MB" (rendered next to the memory
input) with calls to t('...') so both the placeholder and unit come from the
i18n keys; ensure keys are descriptive (e.g., sandbox.imagePlaceholder,
sandbox.memoryUnit) and used where the placeholder prop and the MB label are
rendered.
- Around line 26-27: The effect is calling setIsLoading synchronously; instead
initialize isLoading from isTauri() and remove the synchronous set inside
useEffect: change the useState line to const [isLoading, setIsLoading] =
useState<boolean>(isTauri()); then in the useEffect for SandboxSettingsPanel
remove the branch that does if (!isTauri()) { setIsLoading(false); return; } so
the effect only contains asynchronous work and early-returns without setting
state synchronously.

In `@app/src/lib/i18n/de.ts`:
- Around line 3787-3795: Update the two German translation strings: change the
value of 'settings.sandbox.backend.none' from "Keines (kein Sandbox)" to "Keine
(ohne Sandbox)" and change the value of 'settings.sandbox.envPassthroughDesc'
from "Umgebungsvariablen, die in den Sandbox weitergeleitet werden." to
"Umgebungsvariablen, die in die Sandbox weitergeleitet werden."; ensure you edit
those exact keys in app/src/lib/i18n/de.ts so the wording is idiomatic and
grammatically correct.

In `@app/src/lib/i18n/pt.ts`:
- Around line 3732-3764: The new sandbox i18n keys under settings.sandbox mix
pt-PT phrasing into a pt-BR file; update the values for keys like
'settings.sandbox.desktopOnly', 'settings.sandbox.loading',
'settings.sandbox.saving', 'settings.sandbox.saved',
'settings.sandbox.available', 'settings.sandbox.unavailable',
'settings.sandbox.detectedBackend', 'settings.sandbox.enableDesc',
'settings.sandbox.backendDesc', 'settings.sandbox.envPassthroughDesc',
'settings.sandbox.noEnvVars' and related backend labels to use consistent pt-BR
wording (e.g., "aplicativo para desktop" or "aplicativo desktop" instead of
"aplicação de ambiente de trabalho", "Carregando…" instead of "A carregar…",
"Salvando…" instead of "A guardar…", "Salvar — aplica-se a novas sessões do
agente." instead of "Guardado — aplica-se a novas sessões do agente.", and other
phrasing adjustments) so all sandbox strings match the existing pt-BR variant.

In `@app/src/utils/tauriCommands/config.ts`:
- Around line 477-485: Update the partial update type to allow clearing limits
by making docker_memory_limit_mb and docker_cpu_limit nullable (change their
types from number to number | null) in the SandboxSettingsUpdate interface; this
lets callers (including the patch type derived by openhumanUpdateSandboxSettings
/ SandboxSettingsPanel) send null to remove saved limits. Ensure both
docker_memory_limit_mb and docker_cpu_limit fields are updated to accept null
values so the backend receives explicit clears.

In `@src/openhuman/config/ops.rs`:
- Around line 2092-2104: The is_docker_available() probe can block; wrap the
await of the docker Command::status() in a tokio::time::timeout (e.g., a few
seconds) and treat a timeout as "false" (unavailable). Specifically, in
is_docker_available() use tokio::time::timeout(Duration::from_secs(...),
child.status().await) and return false if the timeout or any Err occurs,
otherwise return status.success(); this ensures get_sandbox_settings() won't
hang waiting on the daemon.
- Around line 2050-2052: The current assignment writes empty strings into
config.runtime.docker.image when update.docker_image is Some(""), causing
failures; change the logic around update.docker_image so you trim the string and
only persist it if not empty—i.e. replace the unconditional clone with something
like: if let Some(ref image) = update.docker_image { let image = image.trim();
if !image.is_empty() { config.runtime.docker.image = image.to_string(); } } (or,
alternatively, if your codebase provides a canonical default image getter, set
config.runtime.docker.image = get_default_docker_image() when the trimmed value
is empty). Ensure you reference update.docker_image and
config.runtime.docker.image when making the change.

---

Outside diff comments:
In `@src/openhuman/sandbox/ops.rs`:
- Around line 28-44: resolve_sandbox_policy currently ignores the new UI-written
sandbox settings and derives backend only from runtime_config.kind and
is_remote_session; update resolve_sandbox_policy to read and honor
runtime_config.sandbox.enabled and runtime_config.sandbox.backend (as set by
apply_sandbox_settings) and use those values to determine SandboxBackendKind
(mapping values like "landlock", "firejail", "bubblewrap", "none" to the
corresponding SandboxBackendKind) and to disable sandboxing when enabled==false,
falling back to the existing runtime_config.kind/is_remote_session logic only
when sandbox settings are absent or unspecified; locate and change the logic in
resolve_sandbox_policy so it queries config.sandbox.backend and
config.sandbox.enabled (or runtime_config.sandbox.*) before deciding the
backend.

In `@tests/config_auth_app_state_connectivity_e2e.rs`:
- Around line 2799-2818: The sandbox methods are only being verified as present
in /schema, so the live JSON-RPC payload shape is still untested. Add an
E2E-style JSON-RPC call path in tests/config_auth_app_state_connectivity_e2e.rs
that exercises the real /rpc surface through the sandbox get/update methods,
using the existing openhuman.config_get_sandbox_settings and
openhuman.config_update_sandbox_settings symbols. Assert a full round-trip for
the user-visible fields, especially enabled, backend, and docker_* values, so
param/response drift is caught.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 76736e49-692b-47ec-9248-a4fead1d406f

📥 Commits

Reviewing files that changed from the base of the PR and between 468ca7b and 4ec9c8e.

📒 Files selected for processing (25)
  • app/src/components/settings/hooks/useSettingsNavigation.ts
  • app/src/components/settings/panels/SandboxSettingsPanel.tsx
  • app/src/components/settings/panels/__tests__/SandboxSettingsPanel.test.tsx
  • app/src/lib/i18n/ar.ts
  • app/src/lib/i18n/bn.ts
  • app/src/lib/i18n/de.ts
  • app/src/lib/i18n/en.ts
  • app/src/lib/i18n/es.ts
  • app/src/lib/i18n/fr.ts
  • app/src/lib/i18n/hi.ts
  • app/src/lib/i18n/id.ts
  • app/src/lib/i18n/it.ts
  • app/src/lib/i18n/ko.ts
  • app/src/lib/i18n/pl.ts
  • app/src/lib/i18n/pt.ts
  • app/src/lib/i18n/ru.ts
  • app/src/lib/i18n/zh-CN.ts
  • app/src/pages/Settings.tsx
  • app/src/services/rpcMethods.ts
  • app/src/utils/tauriCommands/config.ts
  • src/openhuman/config/ops.rs
  • src/openhuman/config/schema/types.rs
  • src/openhuman/config/schemas.rs
  • src/openhuman/sandbox/ops.rs
  • tests/config_auth_app_state_connectivity_e2e.rs

Comment thread app/src/components/settings/panels/SandboxSettingsPanel.tsx Outdated
Comment thread app/src/components/settings/panels/SandboxSettingsPanel.tsx
Comment thread app/src/components/settings/panels/SandboxSettingsPanel.tsx Outdated
Comment thread app/src/lib/i18n/de.ts Outdated
Comment thread app/src/lib/i18n/pt.ts
Comment thread app/src/utils/tauriCommands/config.ts
Comment thread src/openhuman/config/ops.rs
Comment thread src/openhuman/config/ops.rs Outdated
- Reject blank Docker images in update_sandbox_settings (Rust)
- Add 5s timeout to Docker availability probe
- Allow null for docker_memory_limit_mb/docker_cpu_limit to clear limits
- Handle empty field clearing in memory/CPU blur handlers
- Move hard-coded placeholder/MB to i18n (dockerImagePlaceholder, memoryUnit)
- Fix synchronous setState in useEffect (init isLoading from isTauri())
- Fix German: "Keines (kein Sandbox)" → "Keine (ohne Sandbox)", article fix
- Fix Portuguese: pt-PT → pt-BR consistency (carregar→carregando, etc.)
coderabbitai[bot]
coderabbitai Bot previously approved these changes Jun 3, 2026
@senamakel senamakel merged commit 2bb692d into tinyhumansai:main Jun 3, 2026
18 of 19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent Built-in agents, prompts, orchestration, and agent runtime in src/openhuman/agent/. feature Net-new user-facing capability or product behavior. rust-core Core Rust runtime in src/: CLI, core_server, shared infrastructure.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add UI for sandbox execution backend configuration

1 participant