Repository navigation
Bring in batch 3: 23 reviewed PRs, combined - #2909
Merged
Merged
Conversation
The [omb-turn] admission log fired on every admitted turn via console.error, so healthy turns dominated the error stream: 984 of 1119 error-level server.log lines over five days in this deployment, with only two genuine non-turn errors among them. The line is informational turn telemetry; emit it at info level like the other plain console call sites. Signed-off-by: Brad Hallett <53977268+bradhallett@users.noreply.github.com>
Signed-off-by: Brad Hallett <53977268+bradhallett@users.noreply.github.com>
Signed-off-by: Brad Hallett <53977268+bradhallett@users.noreply.github.com>
Add complete Turkish translation catalog covering all 3,381 UI keys, register Turkish in the locale index, update source hashes, and include tr in test assertions.
…xt is Native <select>s drew the platform arrow, which sits at an inset we cannot pad: ~6px from the edge on Linux Chrome, wider on macOS, never matching the text's left padding. 57 call sites also hand-rolled ~10 look classes each, drifting across 6 backgrounds, 3 border strengths and 6 text sizes. Select owns the look (field/pill, lg/md/sm) and draws its own chevron with its stroke as far from the right edge as the text is from the left. Call sites keep only layout classes, and Select.guard.test.ts fails on a new native <select> or a <Select className> that restyles the field.
the waiting marker was a 10px dot and 11px gray text, the same weight as a preview.
The circle grid had no way to change order.
…n the picker
A Claude Code install pointed at another provider through ~/.claude/settings.json
usually names its models with ANTHROPIC_CUSTOM_MODEL_OPTION (the extra /model
entry) and ANTHROPIC_DEFAULT_{OPUS,SONNET,HAIKU}_MODEL. OpenMausBot read only
ANTHROPIC_MODEL, so those models were missing from the Claude model picker,
while turns already reach the same endpoint through the carried
ANTHROPIC_BASE_URL and key.
List them under "Use a local model": the custom option with its
ANTHROPIC_CUSTOM_MODEL_OPTION_NAME label, and each tier model that is not an
official Claude id. Accept Claude Code's `[1m]` suffix in a model id, which
modelContextWindow already reads. The env values still never reach the bot's
CLI; a bot runs only the model picked for it. The model providers page and its
test say so.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Server config already supports arbitrary openai-compat instances; this surfaces them in the UI instead of requiring hand-edited config.json. - POST/DELETE /api/instances/openai-compat (hot reload, no restart; global openaiCompat slot stays guarded) - describeInstances exposes driver/displayName/url for openai-compat - UI panel: list / add / remove endpoints under Settings > API keys - reject URL-shaped API keys with a clear message - per-endpoint manual model list (managedModels) + refresh button for providers whose /models is auth-gated (e.g. Zhipu GLM)
The profile menu's "Check for updates" came from the packaged app's updater bridge, so a self-hosted server opened in a browser had no way to learn a new version existed (MOCA-276). A self-hosted server cannot replace itself, so the entry now checks and says how to update. - GET /api/updates/check compares this server's version with the latest GitHub release, cached for an hour so menus on many devices make one request. It reports how the server was installed (Docker, npm, a git checkout, a desktop-hosted or a hosted server) and the matching update command from the docs. - Without the updater bridge, the menu shows "Check for updates". It answers "You're up to date · v0.1.94", or "Version X available — release notes" with "Update with: <command>" underneath and a link to the release. Desktop-hosted and hosted servers say how they are updated instead. The packaged app keeps its own updater entry unchanged. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
main now refuses new route handlers in server/index.ts (index-route-ratchet), which failed CI for this branch. The GET /api/updates/check handler moves into server/routes/update-check.ts and is registered with ROUTES.push like the other route modules. It is also added to CLIENT_ALLOW: it only reads a version, so a chat-only teammate on a shared self-hosted server can check too instead of getting "Couldn't check for updates". Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Hermes registers ACP MCP servers idempotently by name for the whole process. main now keeps a thread's integration bearer across ordinary turns, which covers back-to-back turns, but Stop, a changed grant, a stall or a provider reload issues a new bearer. A pooled Hermes process then keeps the agents proxy it started first, so every OpenMausBot tool (list_bots, coordinate_bots, memory_update, ...) answers "unauthorized" until the process goes idle (MOCA-252). Hermes now sets restartOnMcpChange, the mechanism Qwen already uses: a changed MCP config resumes the session on a fresh process. The fake ACP agent gains a list-peers mode that keeps the first agents server it is offered, like Hermes, and the comms e2e runs two turns, Stop, and a third on the Hermes driver. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
A bot that splits work into helper threads (start_thread) left every open one in its thread list beside the person's own threads, and they used up the six visible rows, pushing the person's threads behind "Show all" (MOCA-92). #1108 already folded away the helper threads a bot closes; this handles the ones still open. Open threads a bot opened now sit under one collapsed "Opened by bots" row at the bottom of the bot's list, with a count and a spinner while one is working, and no longer count toward the visible rows. A helper stays in the main list while it needs the person: the open thread, one waiting on a card, or one with something unread. Pinned, filed, closed, archived and snoozed threads keep their current place, and search lists everything as before. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… toolErrors.correctiveRounds setting A done-after-failure ends a turn with tool_error (#2378) and tool_error is not auto-continued, so a routine tool failure (a non-zero host-shell exit, a bad argument) halts the whole turn until a person re-dispatches it. - config.ts: toolErrors.correctiveRounds (0-5, default 0) + getter - contracts.ts: SendTurnInput.toolErrorCorrectiveRounds; index.ts sets it - openai-chat.ts: feed a corrective round back at the done-after-failure check, bounded by the configured cap and only when the turn recorded no denial (denials.length === 0) — a person's "no" is never retried - Settings > General: Tool errors card (mirrors MCP calls, save-on-blur) - locales + source-hashes; parser + config + openai-chat + store tests
…their keywords to General search - McpCallTimeoutSettings: state.config?.mcp?.callTimeoutMinutes (config may exist without the mcp section; the old optional chain only guarded config) - ToolErrorRecoverySettings: same null-safe read for toolErrors - SettingsModal: General section keywords now include tool errors, corrective rounds, mcp calls, timeout, call length, retry, tool calls - en/zh help text now states that 0 preserves the existing tool-error path
Add a Tools layout row to Settings > Appearance: Rows (the current footer, default) and Toolbar. Toolbar lays the same places out as one horizontal row of icon buttons in Comfortable and Compact density, so every place stays one click away with a tooltip, an aria-label, aria-current on the active place, the routines failed-run attention dot and the guided-tour anchors. Icons density is unchanged in both layouts, and Rows renders exactly as before. There is no collapse, no Tools header and no saved collapse state, so the attention dot is never hidden. The choice is one shared renderer store like density: it persists under openmausbot.sidebarToolsLayout across restarts, stays live between Appearance and the sidebar, and sits beside sidebarDensity in both backup client-state allowlists. Tests cover the store default and persistence, both layouts in Comfortable and Compact, the attention dot seen and unseen, Team map only in Advanced, Icons density ignoring the layout, the rows markup staying as it was, the appearance search keywords and the backup allowlists. Co-Authored-By: MiMo-V2.6-Flash <noreply@xiaomi.com> Co-Authored-By: GLM-5.3 (Architect) <noreply@z.ai>
# Conflicts: # src/components/McpCallTimeoutSettings.tsx # src/state/store.tsx
…'s config frame omits it
…led tool op — toolErrors.correctiveRounds setting
…tart prefilled with what is there
…enshots sent before the edit
…rrive # Conflicts: # scripts/testing/file-size-ratchet.test.ts
…ion and a localized name
…llback only after a real device check
…as clickable cards
…clickable cards
…tier models in the picker # Conflicts: # scripts/testing/file-size-ratchet.test.ts
# Conflicts: # scripts/testing/file-size-ratchet.test.ts
… where the text is # Conflicts: # scripts/testing/file-size-ratchet.test.ts
# Conflicts: # src/lib/i18n.test.ts # src/locales/index.ts # src/locales/source-hashes.json
…essages on desktop and Android # Conflicts: # scripts/testing/file-size-ratchet.test.ts # src/components/SettingsModal.tsx
…yout, Vietnamese and Turkish for the batch's new strings Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configuration
📒 Files selected for processing: 172
✨ Finishing Touches
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 |
milind-soni
marked this pull request as ready for review
October 15, 2026 09:19
This was referenced Oct 15, 2026
This branch was successfully deployed
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.
This combines 23 reviewed PRs. Each one is merged as its own merge commit, so GitHub marks each original PR merged when this lands. Every PR was brought up to date with main, fixed where needed, and verified on its own
bringin/Nbranch.Included
Chat
wrapdirective for fenced code blocks (opt-in)Browser, computer panel, Windows
Engines
Sidebar and UI
Selectfor every dropdown (72 converted)Languages and settings
Server
Fixes after combining
Select;SettingsModalimport conflicts.Not included
Verification
tsc -b, the server tsc andoxlint --deny-warningspass on the combined branch.🤖 Generated with Claude Code