* fix(jetbrains): normalize duplicate PTY OpenAPI tag
* refactor(jetbrains): extract OpenAPI spec normalization into dedicated package
Move NormalizeOpenApiSpecTask into a `normalization` package and split
configuration (duplicate tag names, final tag mappings, operation id
routing) into a separate NormalizeOpenApiSpecConfig file.
The task now handles arbitrary duplicate tags via config-driven rules
and rewrites both tag metadata and path operation tags, replacing the
previous single-purpose pty-only implementation.
* feat(jetbrains): add OpenApiSpecNormalizer with unit tests and decouple logic from Gradle task
Introduce OpenApiSpecNormalizer as a pure-function object that owns all
JSON parsing, tag deduplication, and path rewriting logic. The Gradle
task now delegates to this normalizer, keeping task wiring minimal.
Add JUnit 5 test infrastructure to the build-tasks module and cover the
normalizer with tests for successful renames, no-op passthrough, and
missing-operation error handling. Replace Array usages in config data
classes with List for idiomatic Kotlin collections.
* chore: generate
* sync release versions for v1.14.33
* refactor(cli): convert pr command to effectCmd (#25465)
* chore: generate
* refactor(cli): convert export command to effectCmd (#25471)
* refactor(cli): convert plugin command to effectCmd (#25473)
* refactor(cli): convert import command to effectCmd (#25467)
* refactor(cli): convert stats command to effectCmd (#25474)
* chore: generate
* refactor(cli): convert session subcommands to effectCmd (#25483)
* feat: refactor bash tool with shell-aware prompts for bash, pwsh+powershell, and cmd (#20039)
* refactor(cli): convert debug agent command to effectCmd (#25485)
* chore: generate
* refactor(cli): convert debug subcommands to effectCmd (#25479)
* chore: generate
* fix(instance): run bootstrap from instance store (#25475)
* chore: generate
* feat(cli): auto-dispose InstanceContext after effectCmd handlers (#25481)
* docs: clarify LSP and formatter opt-in config (#25502)
* chore: generate
* test(httpapi): add route exerciser
* chore: generate
* Normalize instance lifecycle wiring (#25501)
* chore: generate
* refactor(cli): drop redundant explicit Effect.ensuring(store.dispose) (#25503)
* chore: generate
* feat: default HTTP API backend to on for dev/beta channels
* feat(cli): add instance: false opt-out to effectCmd (#25507)
* refactor(cli): convert web + account to effectCmd (instance: false) (#25512)
* Refactor v2 session events as schemas (#24512)
* chore: generate
* refactor(lifecycle): bootstrap as pure orchestration (#25510)
* feat(cli): allow effectCmd instance to be a function of args (#25517)
* refactor(cli): convert debug wait, agent list, acp to effectCmd (#25518)
* refactor(cli): convert run command to effectCmd (#25519)
* chore: generate
* refactor(acp): drop async from synchronous ACP.init (#25520)
* chore: rm log statement (#25470)
* fix(desktop): limit zoom handler to zoom keys (#25516)
* chore(opencode): exclude .map files from CLI binary build (#25500)
* refactor(cli): convert github subcommands to effectCmd (#25522)
* chore: generate
* refactor(cli): convert mcp list, auth, auth list, logout to effectCmd (#25521)
* chore: generate
* chore: bump Effect beta (#25524)
* refactor(cli/stats): Stage 4 — fully Effect-native body (#25523)
* fix(httpapi): pagination Link header echoes request host (#25527)
* refactor(cli): convert agent / providers / mcp to effectCmd (#25525)
* chore: generate
* fix(session): encode v2 session responses (#25528)
* chore: update nix node_modules hashes
* fix: regression w/ auth login where stderr was ignored instead of inherited (#25529)
* refactor(cli/mcp+agent): Stage 4 — drop AppRuntime.runPromise bridges (#25530)
* refactor(cli/providers): Stage 4 — drop inline AppRuntime.runPromise calls (#25532)
* fix(cli): bridge Instance.current ALS in effectCmd handlers (regression from #25522) (#25546)
* Add debug info command (#25550)
* ci
* core: update triage agent to use qwen3.6-plus model for improved response quality
* core: simplify triage workflow to focus on issue ownership
Switch triage agent to gpt-5.4-nano for faster issue assignment. Remove label
management from the triage tool so it only assigns owners based on team
ownership rules. This reduces noise in the issue tracker and ensures issues
get to the right team member immediately without unnecessary labels.
Update team structures to reflect current ownership and add script for
processing unassigned issues.
* chore: generate
* ci: remove automatic labels from GitHub issue templates to allow manual triage
* ci: remove vouch-based contributor filtering workflows
Removes the automated vouch system that filtered issues and PRs from non-vouched users. This simplifies the contribution process by removing the requirement for maintainers to manually vouch contributors before they can participate.
* ci: stop sending daily community recap notifications
* ignore: remove triage-unassigned.ts script
This script was used to batch-triage open GitHub issues without assignees.
Removing as the triage workflow has evolved and this batch approach is no longer needed.
* fix(vcs): avoid unbounded diff memory usage (#25581)
* refactor(server): extract Hono-coupled utilities to backend-neutral modules (#25542)
* chore: generate
* feat(server): Server.openapi() backed by HttpApi spec, parity-checked against Hono output (#25545)
* chore: generate
* feat(server): native HttpApi listener with Bun.serve + WS upgrade (#25547)
* fix(acp): pass server auth to internal client (#25591)
* fix(sdk+cli): surface real errors instead of bare {} when server returns empty body (#25592)
* chore: generate
* fix(httpapi): add basic auth challenge for browser login
Adds a WWW-Authenticate challenge for unauthorized experimental HttpApi UI fallback responses so browsers open the Basic Auth prompt when a server password is configured.
* chore: generate
* ci: only build electron desktop (#19067)
* feat: group changelog bugfixes (#25597)
* fix(auth): respect server username in clients (#25596)
* refactor(config+core): drop ConfigPaths.readFile, add AppFileSystem.readFileStringSafe, flatten TuiConfig.loadState (#25602)
* chore: generate
* refactor(cli/github+run): Stage 4 — drop AppRuntime.runPromise bridges (#25539)
* refactor(cli/providers): flatten — Effect-native handlers end-to-end (#25537)
* chore: generate
* fix(auth): add username option for basic auth in RunCommand (#25600)
Co-authored-by: Shoubhit Dash <shoubhit2005@gmail.com>
* fix(server): support desktop PTY websockets with HttpApi (#25598)
* chore: generate
* Add v2 session failure events (#25628)
* chore: generate
* fix(server): serve embedded UI from bunfs (#25632)
* chore: generate
* refactor(cli): effectify provider commands (#25633)
* fix(app): preserve auth token credentials (#25636)
* Effectify plugin agent regression test (#25646)
* fix: allow Codex Spark with Codex OAuth (#25640)
* feat(server): pty websocket auth tickets (#25660)
* chore: generate
* fix(app): prevent terminal recovery loops (#25710)
* chore: generate
* fix(opencode): strip transfer-encoding in UI proxy and allow public manifest assets (#25698)
Co-authored-by: Kit Langton <kit.langton@gmail.com>
* test(server): regression reproducers for #25698 (#25714)
* chore: generate
* fix: ensure anthropic sdk properly resolves when using azure (#25721)
* sync
* chore(docs): rename firmware provider to frogbot (#25453)
* fix(worktree): fork workspace worktree boot (#25723)
* fix(server): provide fresh ConfigProvider per HttpApi listener (#25726)
* test(agent): skip InstanceBootstrap in plugin-agent regression test (#25737)
* sync
* fix: ensure effect server middleware properly parses errors (#25717)
* release: v1.14.34
* refactor: kilo compat for v1.14.34
* feat(kilocode): migrate kilo HTTP routes to Effect HttpApi layer
Introduce a structured Effect HttpApi surface for all Kilo-specific
endpoints, replacing inline Hono handler logic with declarative group
definitions, typed schemas, and composable handler layers.
Key changes:
- Add HttpApi group and handler modules for commit-message, enhance-prompt,
indexing, kilocode, network, remote, session-import, suggestion, and
telemetry
- Extract allow-everything permission logic into a reusable Effect function
- Register all Kilo HttpApi groups in InstanceHttpApi and wire route
forwarding in the Hono instance router
- Export Suggestion.RequestSchema and annotate schemas with identifiers
- Use NonNegativeInt for indexing status fields and Schema.Finite for
network wait timestamps
- Add httpapi-bridge test asserting parity between Hono and Effect specs
for all 22 Kilo overlay routes
- Regenerate SDK types and openapi.json to reflect the new endpoints
* style: apply formatting and lint fixes across packages
Reformat code with consistent line breaks, trailing commas, semicolons,
and line-length compliance. No logic changes — purely whitespace,
indentation, and punctuation adjustments driven by the project formatter.
- Break long function signatures and conditionals across multiple lines
- Remove trailing blank lines and stray leading newlines
- Replace string-expression JSX whitespace with literal spaces
- Convert quoted object keys to unquoted where valid
- Remove erroneous shell command prefix from openapi.json
- Deduplicate SessionNetworkWait1 schema and simplify Finite unions to
plain number type in OpenAPI spec
* feat(kilo-gateway): add Effect HttpApi endpoints for kilo gateway operations
Extract shared handler logic from Hono routes into reusable functions in
kilo-gateway/server/handlers.ts and wire up new Effect HttpApi endpoints
for profile, notifications, organization switching, claw status, and
claw chat credentials.
- Add handlers.ts with pure business logic (getProfile, getNotifications,
setOrganization, getClawStatus, getClawChatCredentials)
- Define KiloGatewayApi group with typed schemas for all endpoints
- Implement Effect-based handler layer in httpapi/handlers/kilo-gateway.ts
- Register kilo gateway routes in instance router and HttpApi composition
- Add config/warnings endpoint to config group and handler
- Regenerate SDK types and client methods for new endpoints
- Update OpenAPI spec with /kilo/* and /config/warnings paths
- Export new constants (KILO_CHAT_URL, KILO_EVENT_SERVICE_URL) and
handler utilities from kilo-gateway package index
* refactor(kilo-gateway): extract cloud sessions logic and wire up cloud sync endpoints
Move inline cloud-sessions fetch logic from Hono route handler into a
reusable getCloudSessions function in handlers.ts, and introduce new
Effect HttpApi endpoints for fetching and importing individual cloud
sessions.
- Extract getCloudSessions handler from routes.ts inline implementation
- Export fetchCloudSession, fetchCloudSessionForImport, importSessionToDb
from kilo-gateway package
- Add cloudSession (GET /kilo/cloud/session/:id) endpoint for previewing
remote session data
- Add cloudSessionImport (POST /kilo/cloud/session/import) endpoint to
download and persist cloud sessions locally
- Define CloudSession, CloudSessionData, CloudMessage schemas in the
kilo-gateway API group
- Change claw status error response from 500 InternalServerError to
503 ServiceUnavailable
- Register new cloud routes in instance router
- Add test coverage for route disambiguation between import and :id paths
- Regenerate SDK types and OpenAPI spec
* feat(kilocode): add worktree diff, FIM proxy, audio transcription, and session viewed endpoints
Introduce several new Effect HttpApi endpoints across the kilo-gateway
and experimental API groups to support agent manager workflows and
enhanced gateway proxying.
- Add worktree diff endpoints (diff, diff/summary, diff/file) for
comparing worktree changes against a base branch
- Add FIM completion proxy endpoint with streaming SSE response and
timeout handling
- Add audio transcriptions proxy endpoint forwarding to Kilo Gateway
- Add organization modes endpoint to fetch custom modes config
- Add session/viewed endpoint to track which sessions the user has open
- Extend session list query with projectID and worktrees parameters
- Register all new routes in Hono instance router
- Regenerate SDK types and OpenAPI spec
* refactor(kilo-gateway): clean up proxy auth naming, error handling, and OpenAPI schema alignment
Rename `proxy` helper to `proxyAuth` for clarity, switch modes endpoint
to gracefully handle missing auth instead of returning BadRequest, remove
redundant Content-Type header from audio transcriptions response, and
fix OpenAPI parameter types:
- Change `worktrees` query param from string enum to boolean
- Add `^que.*` pattern to network endpoint requestID path params
- Register experimental session worktrees in query parameter schemas
- Re-enable and update Effect HttpApi route parity tests
* fix(opencode): migrate Instance.provide calls to WithInstance.provide
Replace direct `Instance.provide` usage with `WithInstance.provide` across
source modules and test files to decouple runtime context provisioning
from the core Instance singleton.
- Update kilo-sessions, remote-sender, roll-call, and plan-followup source
- Remove unused `Instance` imports where only `WithInstance` is needed
- Drop unnecessary `init` param from indexing-worktree test calls
- Add missing `WithInstance` import in fixture-dependent test files
* refactor(opencode): extract indexing event schema and align OpenAPI contracts
Move the IndexingStatus Effect schema out of the KiloIndexing namespace into
a dedicated `indexing-event.ts` module so it can be shared between the bus
event system and the HttpApi layer without circular imports.
Additionally fix several OpenAPI spec inconsistencies:
- Inline PermissionReplyBody into the endpoint payload schema
- Make `organizationId` nullable in the organization set endpoint
- Replace opaque string response for `/kilo/fim` with a structured
streaming completion schema
- Register `indexing.status` as a typed SSE event in the global event union
- Add `matchLegacyKiloOpenApi` post-processor for backward-compatible
nullable fields and FIM response shape
- Relocate Kilo-specific bridge tests to `test/kilocode/server/` and trim
duplicated assertions from the core bridge test file
* feat(opencode): rename InstanceStore to InstanceRuntime and refine model schema
Rename the `InstanceStore` module to `InstanceRuntime` across all consumer
sites to better reflect its role as a runtime lifecycle manager rather than
a persistence layer. Update the kilo-gateway route dependency key from
`InstanceStore` to `Instances` for clarity.
Additional changes:
- Replace `Schema.Number` with `Schema.Finite` for `recommendedIndex` in
both the provider and models schemas
- Inject `InstanceStore.Service` into the ProviderAuth layer and use its
`disposeAll()` method instead of escaping to a raw promise
- Remove obsolete `getBootstrapRunEffect` usage from indexing startup tests
- Add missing `warnings` method to the test config fixture
* refactor(kilocode): decouple provider-auth lifecycle, add cloud-fork CLI option, and migrate indexing config to Effect Schema
Extract `disposeAllInstancesAfterProviderAuthCallback` into a dedicated
module and invoke it from the provider OAuth callback handler instead of
coupling it to the ProviderAuth layer. This removes the InstanceStore
dependency from `ProviderAuth.layer`.
Additional changes:
- Add `--cloud-fork` CLI option to the run command for fetching sessions
from cloud and continuing locally
- Replace the Zod-bridged `Schema.Any` indexing config with a native
Effect `IndexingSchema` definition in kilo-indexing, propagating typed
config through the SDK OpenAPI spec
- Use `optionalOmitUndefined` for `recommendedIndex` to emit clean JSON
- Fix `request.source.signal` access by guarding with `instanceof Request`
- Replace `Effect.catchAllCause` with `Effect.catchCause` in telemetry
- Migrate tests from `BashTool` to `ShellTool`, extract `TestConfig`
fixture, and convert stats-subagent-cost tests to use `testEffect`
- Reorder SDK event union members to match updated OpenAPI schema
- Export `aggregateSessionStats` for Kilo regression test coverage
- Widen `setViewedSessions` input to accept readonly arrays
* feat(kilocode): introduce EffectBridge for async-to-effect interop and lazify runtime constructors
Replace raw `Effect.promise` calls across HTTP API handlers with
`EffectBridge.fromPromise` / `EffectBridge.make` to ensure proper error
propagation and context forwarding when bridging imperative async code
into the Effect runtime.
Wrap top-level `makeRuntime` calls in `plan-followup.ts` with `lazy()`
to defer service instantiation until first access, avoiding eager
initialization side-effects during module loading.
Also reorder SDK event union members and type definitions to reflect
updated OpenAPI schema generation output.
* refactor(kilo-sessions): lazify WithInstance and InstanceRuntime imports to break circular module dependencies
Convert static imports of WithInstance and InstanceRuntime to dynamic
imports across kilo-sessions, remote-sender, agent, and plan-followup
modules. This eliminates module initialization cycles that caused
undefined references during test execution (e.g. Worktree → bootstrap →
kilo-sessions → remote-sender → app-runtime → Worktree).
Each call site now uses an async `provide()` helper or inline dynamic
`import()` to defer resolution until runtime, preserving the same
behavioral semantics while decoupling the static dependency graph.
* fix(test): replace Instance.provide with WithInstance.provide in network tests
Update session network test to use the correct WithInstance.provide API,
aligning with the refactored import structure introduced in the circular
dependency fix.
* refactor(session): use Schema.Finite for network restored time and deduplicate event type
Replace Schema.Number with Schema.Finite to enforce finite numeric
values for the time field in session network restored events. Remove
the duplicate EventSessionNetworkRestored1 type from the OpenAPI spec
and SDK, consolidating on a single EventSessionNetworkRestored with a
plain number type instead of the anyOf union with NaN/Infinity strings.
* refactor(remote): simplify effect bridge usage in enable handler
Replace `EffectBridge.make()` and `bridge.promise()` pattern with
direct `Effect.runPromise(EffectBridge.fromPromise(...))` call,
removing the unnecessary intermediate bridge instance.
* refactor(repo): rebrand to kilo and improve issue triage configuration
Replace legacy "opencode" references with "kilo" in CLI output,
API metadata, SDK error messages, and documentation. Add automatic
labels to GitHub issue templates, expand triage agent with jetbrains
and extension teams, and update the github-triage tool to target the
Kilo-Org/kilocode repository.
* fix(opencode): resolve race conditions and update tests for kilo compatibility
Remove eager publish call in indexing initialization that caused
premature event emission. Add foreign key constraint tolerance in
next-message projector to handle writes racing against deleted
sessions. Fix test environment isolation for gateway headers and
permission tests, update auth test assertions to use "kilo" username,
and remove stale indexing route from httpapi-bridge expectations.
* fix(opencode): replace InstanceLayer.layer with explicit dependencies in instance context test
Avoid InstanceLayer.layer's lazy bootstrap import in the test graph by
directly providing InstanceStore.defaultLayer with InstanceBootstrap.defaultLayer,
preventing unintended side effects during test execution.
* test(opencode): increase timeout for flaky plugin lifecycle CI test
Bump dispose resolution timeout from 7s to 15s to reduce flakiness
in CI environments where resource cleanup may take longer.
---------
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: opencode <opencode@sst.dev>
Co-authored-by: Kit Langton <kit.langton@gmail.com>
Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com>
Co-authored-by: Dax <mail@thdxr.com>
Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
Co-authored-by: Youssef Achy <19510452+PanAchy@users.noreply.github.com>
Co-authored-by: Dax Raad <d@ironbay.co>
Co-authored-by: Shoubhit Dash <shoubhit2005@gmail.com>
Co-authored-by: OpeOginni <107570612+OpeOginni@users.noreply.github.com>
Co-authored-by: Brendan Allan <14191578+Brendonovich@users.noreply.github.com>
Co-authored-by: Utkub24 <76127062+Utkub24@users.noreply.github.com>
Co-authored-by: Frank <frank@anoma.ly>
Co-authored-by: Colby Gilbert <colby@firmware.ai>
Avoid InstanceLayer.layer's lazy bootstrap import in the test graph by
directly providing InstanceStore.defaultLayer with InstanceBootstrap.defaultLayer,
preventing unintended side effects during test execution.
Remove eager publish call in indexing initialization that caused
premature event emission. Add foreign key constraint tolerance in
next-message projector to handle writes racing against deleted
sessions. Fix test environment isolation for gateway headers and
permission tests, update auth test assertions to use "kilo" username,
and remove stale indexing route from httpapi-bridge expectations.
Replace legacy "opencode" references with "kilo" in CLI output,
API metadata, SDK error messages, and documentation. Add automatic
labels to GitHub issue templates, expand triage agent with jetbrains
and extension teams, and update the github-triage tool to target the
Kilo-Org/kilocode repository.
Replace `EffectBridge.make()` and `bridge.promise()` pattern with
direct `Effect.runPromise(EffectBridge.fromPromise(...))` call,
removing the unnecessary intermediate bridge instance.