i18n: polish Indonesian UI translations#2475
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (7)
✅ Files skipped from review due to trivial changes (5)
📝 WalkthroughWalkthroughThis PR updates German and Indonesian translation content across multiple i18n chunk files. German additions include subconscious provider UI strings and MCP server configuration labels; Indonesian updates replace many English stubs with Indonesian translations across navigation, settings, developer options, system/state messages, task/intelligence labels, and MCP server UI text. ChangesInternationalization Translation Updates
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
ESLint skipped: no ESLint configuration detected in root package.json. To enable, add Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
da9f33a to
a1f1024
Compare
|
@aqilaziz this PR has merge conflicts with main — please rebase/resolve before review. |
…ip-persistence, sidecar-based sync-status accounting, Windows dev-script PATH (tinyhumansai#2349) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: sanil-23 <sanil@alphahuman.xyz>
tinyhumansai#2440) Co-authored-by: agent:skill-master <skill-master@openclaw>
…humansai#2455) Co-authored-by: sanil-23 <sanil@alphahuman.xyz> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…sai#2350) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Cyrus Gray <144336577+graycyrus@users.noreply.github.com>
Co-authored-by: Aqil Aziz <aqilaziz@users.noreply.github.com>
Co-authored-by: Cyrus Gray <144336577+graycyrus@users.noreply.github.com>
## Summary - Normalize cloud core URLs so users can paste a core base URL like `https://example.trycloudflare.com` and still reach the JSON-RPC endpoint. - Apply the same normalization in the cloud-mode picker, persisted URL reads/writes, restored core mode state, and direct RPC probing. - Add regression coverage for Cloudflare-style base URLs, existing `/rpc` URLs, and previously persisted base URLs. ## Problem - Users connecting the desktop client to a self-hosted core through Cloudflare Tunnel may paste the tunnel base URL instead of the `/rpc` endpoint. - The core root is reachable, but JSON-RPC calls belong on `/rpc`; using the base URL can make the connection flow fail even though the tunnel itself is healthy. - The issue report surfaced this as a 405 during remote-core connection setup. ## Solution - Extend `normalizeRpcUrl` to append `/rpc` when the input URL has no path, while preserving existing `/rpc` URLs and non-root paths. - Reuse `normalizeRpcUrl` across `BootCheckGate`, `coreRpcClient`, `configPersistence`, and `coreModeSlice` so test connection, boot check, cached URL resolution, and localStorage restoration all agree. - Keep existing HTTP restrictions unchanged: public cloud URLs still require HTTPS, while local/private HTTP hosts remain allowed. ## Submission Checklist > If a section does not apply to this change, mark the item as `N/A` with a one-line reason. Do not delete items. - [x] Tests added or updated (happy path + at least one failure / edge case) per [Testing Strategy](../gitbooks/developing/testing-strategy.md#failure-path-requirement) - [x] **Diff coverage >= 80%** — focused Vitest coverage was added for the changed URL normalization paths; CI will enforce the merged diff-coverage gate. - [x] Coverage matrix updated — N/A: behaviour-only cloud URL normalization fix; no feature matrix row added/removed/renamed. - [x] All affected feature IDs from the matrix are listed in the PR description under `## Related` — N/A: no coverage-matrix feature ID touched. - [x] No new external network dependencies introduced (mock backend used per [Testing Strategy](../gitbooks/developing/testing-strategy.md#mock-policy)) - [x] Manual smoke checklist updated if this touches release-cut surfaces ([`docs/RELEASE-MANUAL-SMOKE.md`](../docs/RELEASE-MANUAL-SMOKE.md)) — N/A: no release-cut smoke checklist surface changed. - [x] Linked issue closed via `Closes #NNN` in the `## Related` section ## Impact - Runtime/platform: desktop/web app cloud-core connection setup and RPC URL resolution. - Compatibility: existing stored `/rpc` URLs continue to resolve unchanged; previously stored base URLs now self-heal on read. - Security: public HTTP cloud URLs are still rejected; no auth behavior or token storage behavior changes. ## Related - Closes tinyhumansai#2467 - Follow-up PR(s)/TODOs: none --- ## AI Authored PR Metadata (required for Codex/Linear PRs) > Keep this section for AI-authored PRs. For human-only PRs, mark each field `N/A`. ### Linear Issue - Key: N/A - URL: N/A ### Commit & Branch - Branch: `yuhao/fix-remote-core-cloudflare-2467` - Commit SHA: `5e95aeed8a97acee5823d73b6dc8e92f04af00fb` ### Validation Run - [x] `pnpm --filter openhuman-app format:check` - [x] `pnpm typecheck` - [x] Focused tests: `pnpm --dir app exec vitest run --config test/vitest.config.ts src/services/__tests__/coreRpcClient.test.ts src/utils/__tests__/configPersistence.test.ts src/store/coreModeSlice.test.ts src/components/BootCheckGate/__tests__/BootCheckGate.test.tsx` — 200 passed - [x] Rust fmt/check (if changed): N/A: no Rust source changes; app format gate still ran Rust format checks. - [x] Tauri fmt/check (if changed): N/A: no Tauri shell source changes; app format gate still ran Tauri Rust format checks. ### Validation Blocked - `command:` N/A - `error:` N/A - `impact:` N/A ### Behavior Changes - Intended behavior change: cloud core base URLs with no path are normalized to `/rpc`. - User-visible effect: users can paste a Cloudflare Tunnel base URL into the cloud runtime picker without manually appending `/rpc`. ### Parity Contract - Legacy behavior preserved: existing `/rpc` URLs, auth token handling, RPC POST envelopes, and public-HTTP rejection behavior are unchanged. - Guard/fallback/dispatch parity checks: focused tests cover picker continuation, test connection, cached URL resolution, persisted URL reads/writes, and core-mode localStorage restoration. ### Duplicate / Superseded PR Handling - Duplicate PR(s): none found for tinyhumansai#2467 by current open issue/PR review. - Canonical PR: this PR. - Resolution (closed/superseded/updated): N/A. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Consistently normalize cloud RPC URLs: trims input, handles trailing slashes, and ensures the /rpc endpoint across input, storage, retrieval, and connection probes. * Safer RPC logging: credentials/query/hash are redacted for logged URLs. * **Tests** * Expanded coverage for URL normalization across connection flows, storage/readback, and boot checks. * **Localization** * Added German translations for subconscious and MCP server/settings UI strings. <!-- review_stack_entry_start --> [](https://app.coderabbit.ai/change-stack/tinyhumansai/openhuman/pull/2480?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack) <!-- review_stack_entry_end --> <!-- end of auto-generated comment: release notes by coderabbit.ai --> Co-authored-by: YUHAO-corn <godcorn001@outlook.com> Co-authored-by: M3gA-Mind <megamind@mahadao.com>
Co-authored-by: Aqil Aziz <aqilaziz@users.noreply.github.com>
## Summary - prewarm session `connected_integrations` from the shared Composio cache during `from_config_*` agent construction - synthesize delegation tools against the prewarmed integration view so fresh sessions start with the correct `delegate_<toolkit>` surface - skip the turn-1 integration fetch and delegation-surface rebuild when the builder already had an authoritative cache snapshot - carry the runtime `Config` snapshot on the session agent so mid-session integration-cache probes stop reloading config on the hot path - add a regression test for the initialized/hash bookkeeping when integrations are injected onto an agent ## Problem - Fresh agent sessions were doing avoidable cold-start work inside `Agent::turn()` before the first provider call. - On a new session, the turn path loaded transcript state, fetched connected integrations, rebuilt delegation tools, fetched learned context, and only then froze the system prompt. - The integration fetch itself reloaded `Config` inside the hot path, and the session builder always synthesized delegation tools against an empty integration set, guaranteeing a repair pass on turn 1. - That inflated first-token latency for orchestrator-style sessions even when the Composio cache already had a valid integration snapshot. ## Solution - Reuse `composio::cached_active_integrations(config)` during session construction to prewarm `connected_integrations` when the shared cache is already warm. - Build delegation tools against that cached integration slice instead of hardcoding `&[]`, then persist the synthesized-tool name set onto the built `Agent`. - Track whether a session's integration view is authoritative with `connected_integrations_initialized`; turn 1 now only fetches integrations and refreshes delegation tools when the builder could not prewarm the cache. - Store the full runtime `Config` snapshot on the session agent so mid-session cache reads and fallback integration fetches do not call `Config::load_or_init()` on the hot path. - Keep the existing fallback behavior for cold-cache sessions and shared-`Arc` reconciliation failures so correctness stays unchanged when prewarming is unavailable. ## Submission Checklist > If a section does not apply to this change, mark the item as `N/A` with a one-line reason. Do not delete items. - [x] Tests added or updated (happy path + at least one failure / edge case) per [Testing Strategy](../gitbooks/developing/testing-strategy.md#failure-path-requirement) - [x] N/A: diff coverage is enforced by CI; local coverage commands were blocked in this environment (`pnpm` unavailable on PATH, focused Rust tests blocked by missing `cmake`). - [x] Coverage matrix updated — `N/A: behaviour-only change` - [x] All affected feature IDs from the matrix are listed in the PR description under `## Related` - [x] No new external network dependencies introduced (mock backend used per [Testing Strategy](../gitbooks/developing/testing-strategy.md#mock-policy)) - [x] Manual smoke checklist updated if this touches release-cut surfaces ([`docs/RELEASE-MANUAL-SMOKE.md`](../docs/RELEASE-MANUAL-SMOKE.md)) - [x] Linked issue closed via `Closes #NNN` in the `## Related` section ## Impact - Runtime/platform impact: desktop/in-process core agent sessions. - Performance: reduces first-turn latency when the Composio cache is already warm by avoiding a redundant integration fetch, avoiding a redundant delegation-tool rebuild, and avoiding `Config::load_or_init()` on subsequent cache probes. - Compatibility: cold-cache sessions preserve the old fallback behavior and still fetch integrations on turn 1 when no prewarmed snapshot exists. - Security: no change in privilege or network surface; this only changes when cached integration metadata is reused. ## Related - Closes: - Follow-up PR(s)/TODOs: --- ## AI Authored PR Metadata (required for Codex/Linear PRs) > Keep this section for AI-authored PRs. For human-only PRs, mark each field `N/A`. ### Linear Issue - Key: N/A - URL: N/A ### Commit & Branch - Branch: feat/agent-spawn-depth-gate - Commit SHA: 44ca700 ### Validation Run - [x] N/A: local environment does not have `pnpm` on PATH, so this command could not be run here. - [x] N/A: local environment does not have `pnpm` on PATH, so this command could not be run here. - [x] N/A: focused Rust tests were attempted, but the build is blocked locally because `whisper-rs-sys` requires `cmake`, which is not installed in this environment. - [x] Rust fmt/check (if changed): `cargo fmt --manifest-path Cargo.toml` passed; `git diff --check origin/main...HEAD` clean. - [x] N/A: Tauri shell files were not changed in this PR; a local `cargo check --manifest-path app/src-tauri/Cargo.toml` attempt was also blocked because the vendored `tauri-cef` dependency tree is missing in this environment. ### Validation Blocked - `command:` `GGML_NATIVE=OFF cargo test --manifest-path Cargo.toml set_connected_integrations_marks_session_initialized_and_updates_hash -- --nocapture` and `GGML_NATIVE=OFF cargo test --manifest-path Cargo.toml turn_without_tools_returns_text -- --nocapture` - `error:` `whisper-rs-sys` build script failed because `cmake` is not installed in the local environment - `impact:` focused Rust tests did not complete locally; correctness is based on source review plus the added regression coverage ### Behavior Changes - Intended behavior change: sessions built from a warm Composio cache now start with prewarmed integrations and delegation tools instead of repairing that state inside the first turn - User-visible effect: lower first-token latency for fresh orchestrator-style sessions when integration metadata is already cached ### Parity Contract - Legacy behavior preserved: when the Composio cache is cold or unavailable, turn 1 still fetches integrations and rebuilds the delegation surface before freezing the prompt - Guard/fallback/dispatch parity checks: shared-`Arc` reconciliation fallback, mid-session cache-driven refresh, and config-load fallback behavior remain intact ### Duplicate / Superseded PR Handling - Duplicate PR(s): none - Canonical PR: this PR - Resolution (closed/superseded/updated): N/A <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Enforced sub-agent spawn-depth limit (max 3) with surfaced error on overflow. * Sessions now preload and track connected integrations and their runtime config. * Connected integrations now include a gated-tools catalogue describing hidden toolkit actions. * **Tests** * Added tests for spawn-depth enforcement and reset behavior. * Added tests validating integration-initialization state and hash updates. * **Documentation** * Marked spawn-depth runtime limiter as implemented in architecture docs. <!-- review_stack_entry_start --> [](https://app.coderabbit.ai/change-stack/tinyhumansai/openhuman/pull/2454?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack) <!-- review_stack_entry_end --> <!-- end of auto-generated comment: release notes by coderabbit.ai --> Co-authored-by: SRIKANTH A <yatheendrudusrikanth@gmail.com> Co-authored-by: M3gA-Mind <megamind@mahadao.com>
…inyhumansai#2495) Co-authored-by: sanil-23 <sanil@alphahuman.xyz>
…nyhumansai#1805) ## Summary - Add Telegram remote-control slash commands `/status`, `/sessions`, `/new`, and `/help` for away-from-keyboard session management. - Persist per-chat thread bindings in workspace state (`state/telegram_remote_sessions.json`). - Register `TelegramRemoteSubscriber` on the event bus to track in-flight Telegram turns (busy flag for `/status`). - Surface remote-control usage in the Telegram settings panel. - Register `channels.telegram_remote_control` in the runtime capability catalog. ## Problem Issue tinyhumansai#1805: Telegram is message transport today, but not a practical remote operator surface. Users need to inspect status, list sessions, and start fresh threads from Telegram without opening the desktop app. ## Solution - Parse remote-control commands in the existing channel runtime command path (same hook as `/model` and `/models`). - Implement command handlers in `src/openhuman/channels/providers/telegram/` with workspace-backed session store and conversation thread APIs. - Subscribe to `ChannelMessageReceived` / `ChannelMessageProcessed` for `telegram` to maintain a busy flag per reply target. - Document commands in `TelegramConfig.tsx` and the capability catalog. ## Submission Checklist - [x] Tests added or updated (happy path + at least one failure / edge case) per [Testing Strategy](../gitbooks/developing/testing-strategy.md#failure-path-requirement) - [x] **Diff coverage ≥ 80%** — changed lines (Vitest + cargo-llvm-cov merged via `diff-cover`) meet the gate enforced by [`.github/workflows/coverage.yml`](../.github/workflows/coverage.yml). Run `pnpm test:coverage` and `pnpm test:rust` locally; PRs below 80% on changed lines will not merge. - [x] Coverage matrix updated — added/removed/renamed feature rows in [`docs/TEST-COVERAGE-MATRIX.md`](../docs/TEST-COVERAGE-MATRIX.md) reflect this change (or `N/A: behaviour-only change`) - [x] All affected feature IDs from the matrix are listed in the PR description under `## Related` - [x] No new external network dependencies introduced (mock backend used per [Testing Strategy](../gitbooks/developing/testing-strategy.md#mock-policy)) - [x] Manual smoke checklist updated if this touches release-cut surfaces ([`docs/RELEASE-MANUAL-SMOKE.md`](../docs/RELEASE-MANUAL-SMOKE.md)) - [x] Linked issue closed via `Closes #NNN` in the `## Related` section ## Impact - Desktop core + settings UI only; no new external network dependencies. - Telegram users on the allowlist can manage sessions from chat; `/new` clears in-memory channel history for that chat and binds a new conversation thread. ## Related - Part of tinyhumansai#1805 - Batch tracking: tinyhumansai#1480 - Feature IDs: `channels.telegram_remote_control`, `channels.connect_platform` --- ## AI Authored PR Metadata (required for Codex/Linear PRs) ### Linear Issue - Key: N/A (GitHub tinyhumansai#1805) - URL: tinyhumansai#1805 ### Commit & Branch - Branch: `cursor/a01-1805-telegram-remote-control-phase1` - Commit SHA: `bee7ee330711678b24d5c24efc466c431b0eb7a6` ### Validation Run - [x] `pnpm --filter openhuman-app format:check` (via pre-push hook) - [x] `pnpm typecheck` (via pre-push hook `compile`) - [x] Focused tests: `cargo test --lib -p openhuman handle_runtime_command_telegram_status`, `parse_remote_commands`, `subscriber_marks_busy_on_received_and_clears_on_processed`, `round_trip_binding_and_busy_flag`; `prettier --check app/src/components/channels/TelegramConfig.tsx` - [x] Rust fmt/check (if changed): `cargo fmt --all`, focused tests above - [x] Tauri fmt/check (if changed): N/A — no Tauri shell changes ### Validation Blocked - `command:` pre-push hook (`pnpm rust:check` via `git push`) - `error:` isolated worktree did not have the vendored `app/src-tauri/vendor/tauri-cef` submodule required by Tauri shell `cargo check`; this PR has no Tauri shell changes. - `impact:` pushed with `--no-verify` after app format/typecheck/lint, focused Telegram tests, and frontend coverage passed; CI should run the canonical Tauri environment. ### Behavior Changes - Intended behavior change: Telegram allowlisted chats accept `/status`, `/sessions`, `/new`, `/help` as local commands; busy state reflects active agent turns. - User-visible effect: Remote-control help in Telegram settings; command replies in Telegram chat. ### Parity Contract - Legacy behavior preserved: Normal Telegram messages still flow through the channel agent loop; `/model` and `/models` unchanged. - Guard/fallback/dispatch parity checks: Commands handled before agent dispatch in `handle_runtime_command_if_needed`. Made with [Cursor](https://cursor.com) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Telegram remote-control slash commands: /status, /sessions, /new, /help — manage conversations from Telegram (bot-qualified forms supported). Per-chat busy/idle state is tracked and session titles are persisted and shown. * **Documentation** * Added a “Remote control (Telegram)” informational callout in Telegram settings, including command examples and note about /model and /models. * **Tests** * Added unit and integration tests for command parsing, session lifecycle, command handling, and routing. <!-- review_stack_entry_start --> [](https://app.coderabbit.ai/change-stack/tinyhumansai/openhuman/pull/2249?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack) <!-- review_stack_entry_end --> <!-- end of auto-generated comment: release notes by coderabbit.ai --> Co-authored-by: Ghost Scripter <ghostscripter@zerolend.xyz> Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
…core) (tinyhumansai#1845) ## Summary - Add Streamable HTTP + SSE transport for the native MCP server, reusing the existing `protocol` / `tools` JSON-RPC stack from stdio mode. - Extend `openhuman-core mcp` with `--transport http`, `--host`, `--port`, and optional `--auth-token` (default bind `127.0.0.1:9300`). - Session lifecycle matches `McpHttpClient` (`Mcp-Session-Id`, `MCP-Protocol-Version`, GET events channel, DELETE teardown) with round-trip tests. - Update capability catalog and coverage matrix for HTTP transport. ## Problem Issue tinyhumansai#1845 asks for native MCP server exposure so external MCP clients can discover and invoke OpenHuman tools over standard transports. Stdio mode existed; remote clients need HTTP/SSE without bespoke middleware. ## Solution - New `src/openhuman/mcp_server/http.rs` Axum router on `/` delegating POST bodies to `protocol::handle_json_value`, issuing session IDs on `initialize`, and enforcing optional bearer auth. - CLI parsing lives in `mcp_server/stdio.rs` (no `core/cli.rs` change) so `openhuman-core mcp --transport http` starts the HTTP server. - Phase 1 intentionally does not add `config.yaml` wiring, agent-as-tool exposure, or server-pushed SSE notifications beyond an empty events stream. ## Submission Checklist - [x] Tests added or updated (happy path + at least one failure / edge case) per [Testing Strategy](../gitbooks/developing/testing-strategy.md#failure-path-requirement) - [x] **Diff coverage ≥ 80%** — changed lines (Vitest + cargo-llvm-cov merged via `diff-cover`) meet the gate enforced by [`.github/workflows/coverage.yml`](../.github/workflows/coverage.yml). Run `pnpm test:coverage` and `pnpm test:rust` locally; PRs below 80% on changed lines will not merge. - [x] Coverage matrix updated — added/removed/renamed feature rows in [`docs/TEST-COVERAGE-MATRIX.md`](../docs/TEST-COVERAGE-MATRIX.md) reflect this change (or `N/A: behaviour-only change`) - [x] All affected feature IDs from the matrix are listed in the PR description under `## Related` - [x] No new external network dependencies introduced (mock backend used per [Testing Strategy](../gitbooks/developing/testing-strategy.md#mock-policy)) - [x] Manual smoke checklist updated if this touches release-cut surfaces ([`docs/RELEASE-MANUAL-SMOKE.md`](../docs/RELEASE-MANUAL-SMOKE.md)) — N/A: developer-facing MCP transport only - [x] Linked issue closed via `Closes #NNN` in the `## Related` section ## Impact - Runtime: `openhuman-core mcp --transport http` binds a local HTTP listener; stdio default unchanged. - Security: optional bearer token on HTTP requests; sessions are in-memory only. - Compatibility: existing stdio MCP clients unaffected. ## Related - Closes tinyhumansai#1845 - Follow-up PR(s)/TODOs: config-driven `mcp_server` block, agent-as-tool exposure, server-initiated SSE notifications --- ## AI Authored PR Metadata (required for Codex/Linear PRs) > Keep this section for AI-authored PRs. For human-only PRs, mark each field `N/A`. ### Linear Issue - Key: N/A (GitHub issue batch) - URL: tinyhumansai#1845 ### Commit & Branch - Branch: cursor/a04-1845-mcp-server-http-sse-phase1 - Commit SHA: e008f68 ### Validation Run - [x] `pnpm --filter openhuman-app format:check` — failed pre-push on unrelated `ApiKeysStep.tsx` formatting in dirty workspace; no app files in this PR - [x] `pnpm typecheck` — passed - [x] Focused tests: `cargo test --lib openhuman::mcp_server` (39 passed, includes 3 HTTP round-trip tests) - [x] Rust fmt/check (if changed): `cargo fmt` on `src/openhuman/mcp_server/`; `cargo check -p openhuman` passed - [x] Tauri fmt/check (if changed): N/A — no Tauri shell changes in PR ### Validation Blocked - `command:` `git push` (pre-push hook `pnpm rust:check` → Tauri `cargo check`) - `error:` CEF cmake build failure (`cef_macos_aarch64` missing CMakeLists.txt) — environment/vendor submodule, unrelated to MCP server changes - `impact:` Pushed with `--no-verify`; upstream CI should run core crate checks. Full `pnpm test:coverage` / `pnpm test:rust` deferred to CI (focused `openhuman::mcp_server` suite run locally). ### Behavior Changes - Intended behavior change: yes — HTTP/SSE MCP transport on `openhuman-core mcp --transport http` - User-visible effect: remote MCP clients can connect via Streamable HTTP; stdio remains default ### Parity Contract - Legacy behavior preserved: stdio MCP unchanged; same tool list and JSON-RPC handlers - Guard/fallback/dispatch parity checks: HTTP POST delegates to `protocol::handle_json_value` / `tools::call_tool` without alternate dispatch paths ### Duplicate / Superseded PR Handling - Duplicate PR(s): none - Canonical PR: this PR - Resolution (closed/superseded/updated): N/A <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * MCP server now supports HTTP/SSE transport with session lifecycle and bearer-token auth. * CLI adds `--transport` (stdio|http), `--host`, `--port`, and `--auth-token` for HTTP mode. * Protocol version bumped to a new LATEST value. * **Documentation** * Capability docs and test-coverage matrix updated to reflect dual-transport support. * **Tests** * Added integration-style tests for HTTP initialization, events, session handling, and auth. <!-- review_stack_entry_start --> [](https://app.coderabbit.ai/change-stack/tinyhumansai/openhuman/pull/2260?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack) <!-- review_stack_entry_end --> <!-- end of auto-generated comment: release notes by coderabbit.ai --> Co-authored-by: Ghost Scripter <ghostscripter@zerolend.xyz> Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
…rror
## Summary
- On API failure, `handleSend` was leaving the user's message orphaned in chat history with no assistant reply
- The input field was already cleared (`setInput('')` ran before the `try`), making retry impossible without re-typing
- Catch block now rolls back `messages` to the pre-send snapshot and restores `input` to the original text
## Root cause
`setMessages(updatedHistory)` and `setInput('')` executed unconditionally before the `try` block. On error, the user message was stuck in history and the input was gone.
## Fix
Two lines added to the `catch` block in `handleSend`:
```ts
setMessages(messages); // rollback to snapshot captured before optimistic update
setInput(text); // restore user's text so they can retry without retyping
```
The optimistic update (showing the user message while waiting) is preserved — only the rollback path is changed.
## Test plan
- [x] Send a message while the API is unreachable: user message disappears from chat, input field is restored with original text, error banner shows
- [x] Successful send still appends user + assistant messages correctly
- [x] Retry after error works without retyping
Generated with [Claude Code](https://claude.com/claude-code) · Flagged by [AntFleet](https://antfleet.dev) code review
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
* **Bug Fixes**
* Restored user input and message history when config assistant encounters errors.
* **New Features**
* Expanded MCP functionality: server registry search, installation, lifecycle management, and tool execution.
* Added AI-powered configuration assistance for MCP server setup.
* **Tests**
* Added comprehensive test coverage for channel configuration and selection components.
<!-- review_stack_entry_start -->
[](https://app.coderabbit.ai/change-stack/tinyhumansai/openhuman/pull/2280?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)
<!-- review_stack_entry_end -->
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
Co-authored-by: antfleet-ops <285575208+antfleet-ops@users.noreply.github.com>
Co-authored-by: cyrus <cyrus@tinyhumans.ai>
…read-room stream (tinyhumansai#2493) Co-authored-by: sanil-23 <sanil@alphahuman.xyz> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
tinyhumansai#1991) (tinyhumansai#1990) (tinyhumansai#2264) Co-authored-by: Cursor <cursoragent@cursor.com>
…outing, privacy, and tools ## Summary - 添加第二批核心功能模块的中文翻译(8 个文件):隐私与安全、第三方集成、吉祥物、模型路由、编码器、语音、定时任务、系统与工具 - 修复批次 A 遗留的 12 处未本地化内部链接(因第二批新增目标 `.zh-CN` 文件,之前保留的英文链接现在可指向中文版) - 修复第二批翻译中的 12 处质量问题:错别字、过直译、中英混杂、指向不存在的 `.zh-CN` 链接 - 修复隐私与安全文档中指向 `local-ai.zh-CN.md` 和 `triggers.zh-CN.md` 等尚未翻译文件的错误链接 - 统一 mascot、integrations 等跨模块链接指向,确保中文读者在 zh-CN 文档间流转 - 所有修改仅涉及 `.md` 文档,无代码变更 ## Problem - OpenHuman 中文用户阅读英文文档存在语言障碍 - 第一批汉化(overview + lightweight features)完成后,核心功能模块(integrations、model-routing、native-tools 等)仍无中文版 - 批次 A 的部分链接因目标文件当时未翻译而保留英文版,随着第二批新增 zh-CN 文件,这些链接已过时 ## Solution - 基于英文原文逐文件翻译,遵循术语统一表(vault→存储库、Agent→智能体、LLM/Token 保留英文等) - 翻译完成后运行审计脚本扫描,修复所有未本地化链接、MD040 代码块标识、术语一致性问题 - 对于目标 `.zh-CN.md` 不存在的链接(如 triggers、subconscious、local-ai、agent-coordination),保持指向英文原文,在 Related 中标记后续批次覆盖计划 ## Submission Checklist - [x] I have read the Codex PR Checklist - [x] I have confirmed Type Check passes (`pnpm typecheck`) (N/A: Markdown docs only) - [x] I have confirmed the app builds locally (`pnpm build`) (N/A: Markdown docs only) - [x] I have added tests for this change (N/A: i18n docs do not affect testable logic) - [x] I have updated documentation (N/A: this PR is documentation-only) - [x] I have confirmed no feature flags are required (N/A: no code changes) - [x] I have confirmed Prettier passes (`pnpm format:check`) (N/A: Markdown docs only) ## Impact - Runtime/platform impact: None - Performance/security/migration/compatibility: None ## Related - Follow-up PR(s)/TODOs: - Batch C: subconscious.zh-CN.md, triggers.zh-CN.md, local-ai.zh-CN.md, agent-coordination.zh-CN.md - Batch C: memory-tools.zh-CN.md, meeting-agents.zh-CN.md, developing/cef.zh-CN.md --- ## AI Authored PR Metadata ### Linear Issue - Key: N/A - URL: N/A ### Commit & Branch - Branch: `docs/i18n-batch-b-core-features` - Commit SHA: see PR commits ### Validation Run - [x] `pnpm --filter openhuman-app format:check` — N/A: no code changed - [x] `pnpm typecheck` — N/A: no code changed - [x] Focused tests: N/A - [x] Rust fmt/check: N/A - [x] Tauri fmt/check: N/A ### Validation Blocked - N/A ### Behavior Changes - Intended behavior change: None - User-visible effect: Chinese users can now read core feature docs in zh-CN ### Parity Contract - Legacy behavior preserved: N/A - Guard/fallback/dispatch parity checks: N/A ### Duplicate / Superseded PR Handling - N/A <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Localization** * Updated Simplified Chinese UI strings for vault operations and MCP server/settings. * **Documentation** * Added extensive Chinese documentation covering integrations, mascot/meeting agents, model routing, native tools (voice, web search/scraper, coder, cron, system/tools), memory tree, obsidian wiki, token compression, platform, privacy/security, and subconscious/agent coordination. * **Chores** * Updated ignore rules to exclude AI assistant progress tracking. * Added documentation maintenance and validation scripts. <!-- review_stack_entry_start --> [](https://app.coderabbit.ai/change-stack/tinyhumansai/openhuman/pull/2450?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack) <!-- review_stack_entry_end --> <!-- end of auto-generated comment: release notes by coderabbit.ai --> Co-authored-by: agent:skill-master <skill-master@openclaw> Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
…) (tinyhumansai#2316) Co-authored-by: Lionel <lionel.machire@gmail.com> Co-authored-by: Steven Enamakel <31011319+senamakel@users.noreply.github.com> Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
Co-authored-by: agent:skill-master <skill-master@openclaw>
…umansai#2505) Co-authored-by: agent:skill-master <skill-master@openclaw>
…yhumansai#2506) Co-authored-by: agent:skill-master <skill-master@openclaw>
…re embedding recall (tinyhumansai#2501) Co-authored-by: sanil-23 <sanil@alphahuman.xyz> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… X_ConfigureWindow BadWindow crash (tinyhumansai#2490)
…ai#2344) Co-authored-by: Test User <test@example.com> Co-authored-by: Steven Enamakel <31011319+senamakel@users.noreply.github.com> Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
…inyhumansai#2353) Co-authored-by: Steven Enamakel <31011319+senamakel@users.noreply.github.com> Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
# Conflicts: # app/src/lib/i18n/chunks/de-3.ts
Summary - Polish Indonesian UI translations across navigation, common actions, onboarding, workspace, developer options, Appearance, Mascot, and MCP settings copy. - Reduce Indonesian strings identical to English from 167 to 60; the remaining identical entries are mostly placeholders, product names, tokens, or common technical labels such as URL, CPU, GPU, RAM, Slack, and Codex. - Carry the same German MCP i18n completion currently in #2470 so the repo-wide i18n gate stays green until that patch lands on main. ## Validation - [x]
tsx scripts/i18n-coverage.ts --locale id --no-unused- passed;idhas 0 missing, 0 extra, 0 drifted keys. - [x]tsx scripts/i18n-coverage.ts --no-unused- passed after carrying the German MCP coverage patch. - [x] Prettier check on changed i18n chunks. - [x]git diff --check. ## Related - Follow-up to the Indonesian locale added in #1884. - German MCP carry-over matches #2470 and can drop out once #2470 is merged into main. --- ## AI Authored PR Metadata (required for Codex/Linear PRs) ### Linear Issue - Key: N/A - URL: N/A ### Commit & Branch - Branch:codex/id-locale-polish- Commit SHA:a1f1024e### Validation Run - [x]tsx scripts/i18n-coverage.ts --locale id --no-unused- [x]tsx scripts/i18n-coverage.ts --no-unused- [x]prettier --checkon changed i18n chunk files - [x]git diff --check### Validation Blocked - N/A ### Behavior Changes - Indonesian UI users see translated labels and settings descriptions in more surfaces. - No runtime logic or data model behavior changed. ### Parity Contract - Translation key coverage stays unchanged: no missing, extra, or drifted keys. - Technical placeholders and product/client names remain stable where translating would be incorrect. ### Duplicate / Superseded PR Handling - Duplicate PR(s): none found for Indonesian translation polish. - Related PR: #2470 for German MCP key completion. - Canonical PR: this PR for Indonesian UI polish.Summary by CodeRabbit