ensureTitle was sending small-model requests with the same HEADER_TASKID
as the agent session. The gateway saw two different models (kilo-auto/small
and kilo-auto/frontier) under the same task and routed to both. Prefixing
the title sessionID with "title-" isolates it from the agent task.
- Reduce SSE heartbeat timeout from 90s to 15s to detect dead connections faster
- Add independent health poll every 10s as a second detection channel
- Kill entire process group (SIGTERM + SIGKILL fallback) instead of just the child process
- Add orphan detection in serve.ts so the server exits when the extension host dies
- Race Instance.disposeAll() against a 5s timeout to prevent hung MCP subprocesses blocking shutdown
migrate default model IDs from kilo/auto to kilo-auto/frontier and related references across the codebase. update defaults in gateway constants, VSCode provider, tests, UI defaults, and e2e seed. align docs and examples to use kilo-auto/frontier and kilo-auto/free. this is a breaking change for existing configurations
BREAKING CHANGE: update default model IDs to kilo-auto/frontier and kilo-auto/free
kilo/auto and kilo/auto-free no longer used as defaults; update all
references accordingly
BatchTool rebuilds its tool map from ToolRegistry.tools() without
passing the caller agent, so agent-level permission filtering is
bypassed. Add plan_exit to the DISALLOWED set to prevent non-plan
agents from triggering it via batch.
A merge conflict resolution incorrectly gated PlanExitTool behind
KILO_EXPERIMENTAL_PLAN_MODE && KILO_CLIENT === "cli", preventing the
plan agent from signaling completion. This broke the "looks good,
implement" flow — the follow-up prompt never appeared and no new
code-mode session was created.
Regression of #6240.
Add a "Model per Mode" section in Provider settings where users can set
a default model for each primary agent (code, plan, debug, orchestrator,
ask). The per-mode model is used automatically when starting new sessions
in that mode, with the precedence: session override > per-mode config >
global default model.
Also fixes the "unset" bug where clearing a model default didn't persist
because undefined values were stripped during JSON serialization. Now
uses null as a delete sentinel throughout the config pipeline.
The fixDuplicateReasoning workaround was added to handle a bug in
@openrouter/ai-sdk-provider v1 that caused reasoning details to be
duplicated in messages. This was fixed upstream in
https://github.com/OpenRouterTeam/ai-sdk-provider/pull/344/ and the
fix has since been applied to @kilocode/kilo-gateway, making this
workaround no longer necessary.
* feat: add colorblind-friendly theme
Add a new colorblind-accessible theme using a scientifically-designed
palette that works for deuteranopia, protanopia, and tritanopia:
- Primary Blue (#0077BB) for main UI elements
- Secondary Orange (#EE7733) for variables and operators
- Success Teal (#009988) instead of green for success states
- Warning Yellow (#CCBB44) for warnings
- Error Vermillion (#CC3311) instead of red for errors
- Accent Sky (#33BBEE) for functions and links
Key design principles:
- No red/green combinations (most common color blindness)
- Blue/orange as primary contrasting colors
- Teal/vermillion for diff colors instead of green/red
- High luminance contrast between adjacent colors
* Update packages/opencode/src/cli/cmd/tui/context/theme.tsx
Co-authored-by: Marius <marius@kilocode.ai>
* Update packages/opencode/src/cli/cmd/tui/context/theme.tsx
Co-authored-by: Marius <marius@kilocode.ai>
* Update packages/opencode/src/cli/cmd/tui/context/theme/colorblind.json
Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>
* Update packages/opencode/src/cli/cmd/tui/context/theme/colorblind.json
Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>
* fix malformed block
---------
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Co-authored-by: Marius <marius@kilocode.ai>
Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>
These markers are only needed in shared upstream opencode files to prevent
merge conflicts. In kilo-specific packages (kilocode/, kilo-gateway/,
kilo-ui/, kilo-i18n/, kilo-vscode/, etc.) they serve no purpose.
Move the ask agent's deny+allowlist after user config in the merge
order so ask mode's restrictions always win. Previously, user global
permission config (e.g. edit: { 'src/log.ts': 'allow' }) was appended
last, causing PermissionNext.disabled() to stop at the user's specific-
pattern rule and leave edit/write/bash in the LLM's tool list.
Fixes#6235
- introduce ENV_VERSION constant in kilo-gateway and export it
- modify getEditorNameHeader to append version when provided
- export ENV_VERSION from gateway index for external use
- initialize ENV_VERSION from Installation.VERSION in opencode startup
- update tests to verify editor header with and without version