Compare commits

...

4959 Commits

Author SHA1 Message Date
Christiaan Arnoldus f232e95a39 Merge pull request #11301 from Kilo-Org/console-explore-privacy-filter
CodeQL Advanced / Analyze (actions) (push) Has been cancelled
CodeQL Advanced / Analyze (javascript-typescript) (push) Has been cancelled
Check Links / link-checker (push) Has been cancelled
typecheck / typecheck-js (push) Has been cancelled
typecheck / typecheck-jetbrains (push) Has been cancelled
typecheck / typecheck (push) Has been cancelled
feat(cli): add a privacy filter to Console model Explore
2026-06-19 17:22:47 +02:00
Marian Alexandru Alecu 0255a4a7eb Merge pull request #11155 from Kilo-Org/fix/local-review-scale-sub-agents
fix(cli): scale local-review sub-agents based on diff size and complexity
2026-06-19 18:03:00 +03:00
Alex Alecu a0305b337b test(review): update prompt assertions 2026-06-19 17:45:47 +03:00
Marian Alexandru Alecu db26772c67 Merge branch 'main' into fix/local-review-scale-sub-agents 2026-06-19 16:21:13 +03:00
Catriel Müller 646d2104cd Merge pull request #9795 from Fatty911/docs/chunk-idle-timeout-silent-dropout
docs(cli): propagate chunkTimeout to streamText and document provider options
2026-06-19 10:19:52 -03:00
Christiaan Arnoldus 55957a153f Merge pull request #11418 from Kilo-Org/docs/custom-provider-options
docs(vscode): clarify custom provider protocol selection
2026-06-19 15:14:52 +02:00
Christiaan Arnoldus 30e62509b7 Merge branch 'main' into docs/custom-provider-options 2026-06-19 14:57:13 +02:00
chrarnoldus 2edb3eeca5 fix(cli): limit privacy filtering to gateway models
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-19 12:51:10 +00:00
Catriel Müller c1589777ff Merge pull request #11212 from IamCoder18/fix/headless-docs-dialog
fix(cli): improve headless docs dialog UX
2026-06-19 09:49:42 -03:00
Christiaan Arnoldus 4d018deffd Merge branch 'main' into docs/custom-provider-options 2026-06-19 14:38:23 +02:00
Catriel Müller ab7c32d7d4 refactor: kilocode isolation 2026-06-19 09:33:33 -03:00
Catriel Müller 77a72858d1 refactor: merge main 2026-06-19 09:28:42 -03:00
Catriel Müller 5a18c2a468 Merge pull request #11319 from grandmaster451/fix/headless-docs-url
fix(tui): show docs URL in dialog when browser cannot open on headless systems
2026-06-19 09:19:58 -03:00
chrarnoldus baf5cea43e fix(cli): scope privacy filter to Kilo Gateway
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-19 12:13:59 +00:00
Marius c829642054 fix(vscode): keep chat streaming after revert (#11464) 2026-06-19 14:09:46 +02:00
Christiaan Arnoldus 2700c39eb1 Merge branch 'main' into console-explore-privacy-filter 2026-06-19 14:08:11 +02:00
Christiaan Arnoldus 32e124d55a Merge branch 'main' into docs/custom-provider-options 2026-06-19 14:07:49 +02:00
Christiaan Arnoldus 033aefec9a Apply suggestion from @chrarnoldus 2026-06-19 14:07:33 +02:00
Catriel Müller f2bb02dd83 Merge pull request #11446 from nyxst4ck/fix/settings-context-help
fix(console): add context to settings fields
2026-06-19 09:05:17 -03:00
Fatty911 12d20074bf fix(cli): fall back to item.options for chunkTimeout when not in merged options
ProviderTransform.options() does not merge arbitrary provider options into
the merged options object. Read chunkTimeout from item.options as a fallback
so provider.<id>.options.chunkTimeout works as documented.

Addresses kilo-code-bot review finding in PR #9795.
2026-06-19 08:59:21 -03:00
Fatty911 c3e15d1486 docs(cli): add chunkTimeout to provider options and propagate to streamText
Add chunkTimeout propagation to Vercel AI SDK streamText timeout.chunkMs
for silent stream dropout detection. The config option already existed in
the provider schema and worked at the fetch wrapper level, but was not
passed through to the streamText call. This adds dual-layer protection
at both the fetch layer and the SDK stream consumer layer.

Also updates docs to document chunkTimeout with failure scenario and
recommended values (15-30s).
2026-06-19 08:58:30 -03:00
Catriel Müller e8bcb70b9a fix: minimal css fix 2026-06-19 08:46:11 -03:00
Marius b0e7f4ac48 Merge pull request #11463 from Kilo-Org/uttermost-reindeer
fix(agent-manager): speed up worktree hover cards
2026-06-19 12:51:43 +02:00
Johnny Eric Amancio f714423511 fix: Add vercel bypass token to opencode release watcher (#11460) 2026-06-19 10:45:42 +00:00
Marius f67ea4dea6 Merge pull request #11455 from Kilo-Org/opaque-mole
fix: hide provider errors after session revert
2026-06-19 12:42:50 +02:00
marius-kilocode 909ec73b9c fix(agent-manager): speed up worktree hover cards 2026-06-19 12:35:39 +02:00
kilo-maintainer[bot] 4bfd65264f chore: update nix node_modules hashes 2026-06-19 10:12:49 +00:00
Christiaan Arnoldus ff7db0dab4 Merge pull request #11421 from Kilo-Org/feat/byok-model-badges
feat: indicate BYOK availability in model pickers
2026-06-19 12:08:19 +02:00
Marius 87b6b8e9f8 Merge pull request #11453 from Kilo-Org/wool-jeans
fix: silence subagent completion sounds
2026-06-19 12:05:30 +02:00
Marius c726f8776e Merge pull request #11433 from Kilo-Org/candy-mouth
fix(agent-manager): stabilize concurrent subagent rendering
2026-06-19 12:00:50 +02:00
Christiaan Arnoldus 9b6b7754f9 Merge pull request #11416 from Kilo-Org/docs/hide-prompt-training-models
docs: document prompt-training model visibility
2026-06-19 12:00:38 +02:00
Marius 576a6fb154 Merge pull request #11423 from Kilo-Org/honored-responsibility
fix(vscode): keep diff identifiers intact
2026-06-19 11:56:08 +02:00
marius-kilocode 4d0933371c fix: hide provider errors after session revert 2026-06-19 11:51:50 +02:00
marius-kilocode d3c58e6c1f test(cli): preserve promise facade ratchet 2026-06-19 11:47:48 +02:00
marius-kilocode f7e68d19d9 fix: silence subagent completion sounds 2026-06-19 11:41:57 +02:00
Marius 3a0a4a40cf Merge pull request #10940 from mjnaderi/fix/vscode-panel-command-registration
fix(vscode): tolerate duplicate panel command registration
2026-06-19 11:40:19 +02:00
Christiaan Arnoldus 5f54b5433d Merge branch 'main' into feat/byok-model-badges 2026-06-19 11:26:39 +02:00
Marius 02a728da52 Merge pull request #11451 from Kilo-Org/small-leaf
fix(vscode): widen chat readable lane
2026-06-19 11:24:28 +02:00
marius-kilocode 6bd1e79c58 fix(vscode): preserve panel command outcomes 2026-06-19 11:23:35 +02:00
github-actions[bot] d319acac10 chore: update kilo-vscode visual regression baselines 2026-06-19 09:07:06 +00:00
marius-kilocode 732fbc30dc fix(vscode): widen chat readable lane 2026-06-19 11:03:50 +02:00
Marian Alexandru Alecu 37026c392c Merge branch 'main' into fix/local-review-scale-sub-agents 2026-06-19 11:21:36 +03:00
Christiaan Arnoldus b78c9b5ad8 Merge branch 'main' into feat/byok-model-badges 2026-06-19 10:04:54 +02:00
nyxst4ck 5d7b1bf4a3 fix(console): add context to settings fields 2026-06-19 02:43:43 -03:00
Catriel Müller 6f86c95279 Merge pull request #11434 from Kilo-Org/zest-canoe
feat: add account profile to Kilo Console
2026-06-18 16:03:39 -03:00
Kirill Kalishev 7a1be0564a Merge pull request #11435 from Kilo-Org/jetbrains/release/v7.0.1-rc.12
release(jetbrains): v7.0.1-rc.12
2026-06-18 14:41:52 -04:00
Kirill Kalishev 33fb3a2f28 docs(jetbrains): edit changelog for v7.0.1-rc.12 2026-06-18 14:04:26 -04:00
kilo-maintainer[bot] d1bfd7dbee release(jetbrains): v7.0.1-rc.12 2026-06-18 17:50:34 +00:00
Catriel Müller b45dd9b303 feat: add account profile to Kilo Console 2026-06-18 14:10:09 -03:00
Rietie 1cd34f2e3e Merge pull request #11431 from Kilo-Org/docs/add-auto-efficient-tier
docs: add Auto Efficient tier to Auto Model documentation
2026-06-18 19:00:05 +02:00
marius-kilocode 2dcd90e176 test(agent-manager): cover rendered tool identity 2026-06-18 18:47:04 +02:00
marius-kilocode 9d2c8965ec test(agent-manager): remove implicit DOM dependency 2026-06-18 18:37:59 +02:00
marius-kilocode 8e622255d5 test(agent-manager): verify rendered tool identity 2026-06-18 18:31:47 +02:00
marius-kilocode 867beac3a1 fix(agent-manager): stabilize concurrent subagent rendering 2026-06-18 17:30:52 +02:00
kiloconnect[bot] c18baae9ca docs: add Auto Efficient tier to Auto Model documentation 2026-06-18 15:11:38 +00:00
chrarnoldus 4ff799f4ac docs: clarify BYOK badge applicability in documentation
Update documentation and changesets to specify that BYOK badges
apply specifically to Kilo Gateway models and do not apply to models
selected through other providers.

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-18 14:39:48 +00:00
chrarnoldus f0b432e1dc fix: prioritize BYOK model badges
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-18 14:04:40 +00:00
Christiaan Arnoldus 48b28e8195 Merge branch 'main' into feat/byok-model-badges 2026-06-18 15:40:58 +02:00
chrarnoldus f6a05fb3d4 fix(jetbrains): distinguish BYOK model badges
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-18 13:17:00 +00:00
chrarnoldus 2d9e55d914 docs: retain custom provider screenshots
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-18 13:15:26 +00:00
github-actions[bot] ac3550b76e chore: update kilo-vscode visual regression baselines 2026-06-18 13:10:23 +00:00
chrarnoldus 8b32375fe6 docs(vscode): clarify custom provider protocols
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-18 13:07:22 +00:00
marius-kilocode aa17a8a419 fix(vscode): keep diff identifiers intact 2026-06-18 15:01:12 +02:00
chrarnoldus ccec216238 feat: show BYOK availability in model pickers
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-18 12:42:54 +00:00
chrarnoldus c442402281 docs: clarify reasoning split API support
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-18 12:35:39 +00:00
chrarnoldus e5115c90e2 docs: scope provider API recommendations to VS Code
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-18 12:34:26 +00:00
Christiaan Arnoldus b930a19b7b Merge pull request #11412 from Kilo-Org/fix/kilo-gateway-data-collection
fix: deny Kilo Gateway data collection
2026-06-18 14:29:01 +02:00
chrarnoldus 0e614dd452 docs: refine custom provider recommendations
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-18 12:28:53 +00:00
Mark IJbema d59825c697 Merge pull request #11419 from Kilo-Org/revert-11379-add-top-level-announcement-notification
Revert "Add top-level announcement notification"
2026-06-18 14:11:33 +02:00
Mark IJbema 6190c704c8 Revert "Add top-level announcement notification" 2026-06-18 14:10:07 +02:00
grandmaster451 9569166fec fix(tui): use kilocode_change start/end markers for headless docs fallback
Per review feedback.
2026-06-18 15:10:00 +03:00
chrarnoldus 51f3a0a14d docs: document custom provider API options
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-18 12:09:01 +00:00
kilo-maintainer[bot] b134c1c18f release: v7.3.49 2026-06-18 12:00:41 +00:00
chrarnoldus c8a05db140 docs: document prompt-training model visibility
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-18 12:00:13 +00:00
Mark IJbema 47a302f346 Merge pull request #11303 from Kilo-Org/mark/replace-roo-code-session-import
feat(vscode): import sessions from Roo Code
2026-06-18 13:44:59 +02:00
kilo-maintainer[bot] 6187a557ba release: v7.3.48 2026-06-18 11:39:42 +00:00
kilo-maintainer[bot] bcae818d91 chore: update nix node_modules hashes 2026-06-18 11:38:06 +00:00
Imanol Maiztegui 036d1cf4f6 Merge pull request #11356 from Kilo-Org/imanolmaiztegui/kilo-opencode-v1.15.9
OpenCode v1.15.9
2026-06-18 13:26:40 +02:00
Christiaan Arnoldus a5277487fa Merge branch 'main' into fix/kilo-gateway-data-collection 2026-06-18 13:25:48 +02:00
Imanol Maiztegui b46a40d537 Merge branch 'main' into imanolmaiztegui/kilo-opencode-v1.15.9 2026-06-18 13:09:27 +02:00
Marius ec00d6c9cd Merge pull request #11404 from Kilo-Org/toothsome-mask
fix(vscode): stop moved active sessions
2026-06-18 12:52:06 +02:00
chrarnoldus 3bb2b20268 refactor(gateway): transform request bodies once
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-18 10:45:30 +00:00
Marius bbd520dce2 Merge pull request #11410 from Kilo-Org/jungle-cobbler
fix(cli): share session runtime with HTTP listeners
2026-06-18 12:41:32 +02:00
marius-kilocode 09a7e89f5b refactor(vscode): extract session abort tracking 2026-06-18 12:37:11 +02:00
Mark IJbema f8156de65e style(vscode): format Roo import translations 2026-06-18 12:35:40 +02:00
chrarnoldus 2c9e72c14a fix: deny Kilo Gateway data collection
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-18 10:34:30 +00:00
Imanol Maiztegui 145a9b4e63 chore(sync): trim irrelevant upstream entries and rebrand env vars in changeset
Remove v2 HTTP API error-schema notes and `opencode login` default
that do not apply to the Kilo fork. Rename OPENCODE_PERMISSION to
KILO_PERMISSION to reflect the correct environment variable.
2026-06-18 12:28:02 +02:00
markijbema 44d427520b i18n(vscode): translate Roo Code import strings for all locales
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-18 10:25:48 +00:00
Marius 338630bd84 Merge pull request #11400 from Kilo-Org/docs/remove-managed-indexing
docs(kilo-docs): remove Managed Indexing documentation
2026-06-18 12:21:33 +02:00
markijbema d83fe7206e refactor(vscode): drop dead meta parameter from session migrate()
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-18 10:09:36 +00:00
marius-kilocode 344a6a5f0f fix(cli): share listener session runtime 2026-06-18 11:42:49 +02:00
markijbema 31f1f3118c fix(vscode): make Roo session discovery reliable
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-18 09:21:48 +00:00
Mark IJbema 7606ee893c Merge pull request #11401 from Kilo-Org/mark/stabilize-visual-regression
test(vscode): stabilize visual regression snapshots
2026-06-18 11:11:44 +02:00
Marius 30debe190c Merge pull request #11402 from Kilo-Org/humorous-manuscript
fix(vscode): prevent shell output from blanking webview
2026-06-18 11:05:27 +02:00
marius-kilocode d43df066d8 refactor(vscode): minimize moved session abort fix 2026-06-18 10:54:34 +02:00
marius-kilocode f35d9c5fa3 fix(vscode): stop moved active sessions 2026-06-18 10:37:34 +02:00
markijbema 9994679cfe test(vscode): fail fast when screenshots do not settle
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-18 08:25:49 +00:00
Mark IJbema 37d88a0f86 Merge pull request #11342 from Kilo-Org/ci/jetbrains-use-container
ci(jetbrains): run inside pre-built container, drop manual setup steps
2026-06-18 10:24:00 +02:00
github-actions[bot] 911e31dc42 chore: update kilo-vscode visual regression baselines 2026-06-18 08:21:29 +00:00
marius-kilocode 146c4f4396 fix(vscode): avoid animating shell output panels 2026-06-18 10:16:27 +02:00
marius-kilocode ee3846fe24 docs(kilo-docs): remove managed indexing docs 2026-06-18 10:11:30 +02:00
kilo-maintainer[bot] 3d26a7c52b chore: update nix node_modules hashes 2026-06-18 07:19:39 +00:00
Imanol Maiztegui 326ff35146 docs(changeset): add upstream sync notes for opencode v1.15.4 to v1.15.9
Document all incorporated upstream changes including native OpenAI
runtime preview, diff viewer redesign, Grok OAuth support, v2 HTTP API
error schemas, and numerous bugfixes across plugin loading, session
management, and TUI keybinds.
2026-06-18 09:19:19 +02:00
markijbema 9bb8a0ddf6 test(kilo-vscode): add settle function to visual regression tests
Introduce a `settle` helper function to improve the stability of visual
regression tests. The function ensures that fonts are loaded, animation
frames have processed, and specific dynamic elements (like code blocks)
have finished rendering before snapshots are taken. This helps reduce
flakiness caused by asynchronous rendering in Storybook.

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-18 07:14:15 +00:00
markijbema 7a17de11a3 refactor(vscode): drop unused data payload from migrationState message
The wizard always re-requests migration data via requestMigrationData on
mount, so the data attached to migrationState was never read. Send only
the needed flag and source.

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-18 07:10:48 +00:00
markijbema 77105faf38 fix(vscode): bound migration cache by evicting stale and completed operations
Each wizard mount generated a fresh operationId and left its cached
discovery in the per-provider map forever. Prune entries from abandoned
operations when a new data request arrives, and delete an operation's
entry once its migration finishes.

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-18 07:09:47 +00:00
Mark IJbema 576d71e4e2 Merge pull request #11387 from Kilo-Org/fix/console-pierre-dependency
fix(cli): restore Kilo Console release build
2026-06-18 09:07:03 +02:00
markijbema 0ae925230f fix(vscode): keep legacy session detection history-driven and stat-only
Split scanTaskStore into a history mode (legacy) that trusts taskHistory
and only stats each conversation file, and a discover mode (Roo) that
enumerates and parses task directories. This restores the prior legacy
behavior of not surfacing on-disk tasks missing from history and avoids
parsing every conversation file during detection.

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-18 07:06:42 +00:00
markijbema 45eab88930 docs(vscode): correct Roo import changeset to match settings UX
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-18 07:04:17 +00:00
Joshua Lambert 390de4b12a Merge pull request #9758 from Kilo-Org/sleepy-stoplight
fix(cli): restore source file when reverting a move across folders
2026-06-18 00:12:47 -04:00
Brian Turcotte ebac27ae62 Merge pull request #11379 from Kilo-Org/add-top-level-announcement-notification
Add top-level announcement notification
2026-06-17 18:23:59 -04:00
kiloconnect[bot] ba0f49ac45 style: fix prettier formatting in notifications.tsx 2026-06-17 21:50:38 +00:00
kiloconnect[bot] 42617c0009 chore: update source-links.md with notifications.tsx URLs 2026-06-17 21:50:16 +00:00
Josh Lambert 9ec1beb6e1 ci: cache console production build 2026-06-17 17:07:10 -04:00
Josh Lambert 89b1829199 fix(cli): declare console diff dependency 2026-06-17 16:33:08 -04:00
Catriel Müller 67655c47cd Merge pull request #10788 from noobezlol/fix/bash-permission-string-migration
fix(cli): handle string permission migration
2026-06-17 17:15:20 -03:00
Catriel Müller 7e1deaf1cf refactor: fix permission bypass 2026-06-17 16:46:14 -03:00
Catriel Müller 4ff5df9160 refactor: move test to kilo folder 2026-06-17 16:35:32 -03:00
Kirill Kalishev d07428d50a Merge pull request #11382 from Kilo-Org/jetbrains/release/v7.0.1-rc.11
release(jetbrains): v7.0.1-rc.11
2026-06-17 15:14:28 -04:00
github-actions[bot] a87906700c chore: update kilo-vscode visual regression baselines 2026-06-17 18:09:49 +00:00
Imanol Maiztegui 6b6b04bd96 Merge branch 'main' into imanolmaiztegui/kilo-opencode-v1.15.9 2026-06-17 20:05:58 +02:00
noobezlol 941007b68d test(cli): cover json permission migration 2026-06-17 14:48:28 -03:00
noobezlol ab1c90b68c fix(cli): handle string permission migration 2026-06-17 14:48:28 -03:00
kiloconnect[bot] 7cd018af3a fix(vscode): update star giveaway notification message and make dismissible 2026-06-17 17:37:44 +00:00
Kirill Kalishev 4592ddd4be docs(jetbrains): edit changelog for v7.0.1-rc.11 2026-06-17 13:21:44 -04:00
kilo-maintainer[bot] 1e0df0cbc4 release(jetbrains): v7.0.1-rc.11 2026-06-17 17:20:54 +00:00
Imanol Maiztegui 9c182afcd0 fix(providers): enforce provider ID matching to isolate custom configurations
Provider plugins (llmgateway, nvidia, openrouter, vercel, zenmux) now
verify the provider ID before applying attribution headers, preventing
custom-defined providers sharing the same endpoint URL from being
mutated by built-in plugin logic.

Additional changes:
- Add auth-v2.json migration path for multi-account store continuity
- Remove obsolete @ai-sdk/xai patch and ConsoleCommand registration
- Add native LLM session recordings for anthropic, openai-oauth, and zen
- Update CLI help snapshots to reflect Kilo branding
- Expand i18n with usage-exceeded dialog strings (it, nl, uk)
2026-06-17 19:11:26 +02:00
Kirill Kalishev 2b5d4fef6e Merge pull request #11378 from Kilo-Org/fix/jetbrains-publish-install
ci(jetbrains): install deps before publish build
2026-06-17 13:06:15 -04:00
kiloconnect[bot] f02deb5517 feat(vscode): add top-level announcement notification 2026-06-17 16:57:12 +00:00
kirillk 90b90f0f04 docs(jetbrains): clarify release PR handoff 2026-06-17 12:48:06 -04:00
kirillk 05ed4b6a70 ci(jetbrains): install deps before publish build 2026-06-17 12:46:57 -04:00
Kirill Kalishev 4de69af48f Merge pull request #11374 from Kilo-Org/jetbrains/release/v7.0.1-rc.10
release(jetbrains): v7.0.1-rc.10
2026-06-17 12:25:39 -04:00
Kirill Kalishev 6ef2c111e5 docs(jetbrains): edit changelog for v7.0.1-rc.10 2026-06-17 12:09:33 -04:00
Mark IJbema fd4f66950d Merge pull request #11365 from Kilo-Org/mark/fork-cli-tips
refactor(cli): fork TUI tips
2026-06-17 18:04:06 +02:00
kilo-maintainer[bot] 7bfbca20e2 release(jetbrains): v7.0.1-rc.10 2026-06-17 16:03:22 +00:00
markijbema 68c7755f26 ci(jetbrains): rely on image-provided JBR libraries
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-17 16:02:01 +00:00
markijbema 31732111b0 Merge remote-tracking branch 'origin/main' into ci/jetbrains-use-container
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-17 16:01:20 +00:00
Mark IJbema 6f06eee326 Merge pull request #11372 from Kilo-Org/ci/complete-jetbrains-image
ci: complete the JetBrains test container
2026-06-17 17:51:13 +02:00
github-actions[bot] 45e3f552e7 chore: update kilo-vscode visual regression baselines 2026-06-17 15:48:34 +00:00
kiloconnect[bot] 57622a1f39 fix(cli): update kilocode_change markers in tips-view TIPS array 2026-06-17 15:47:50 +00:00
Mark IJbema 464fcb0a66 refactor(vscode): share session migration pipeline 2026-06-17 17:45:12 +02:00
Kirill Kalishev a91b33b6bc Merge pull request #11324 from Kilo-Org/leather-peace
feat(jetbrains): add session copy controls
2026-06-17 11:34:05 -04:00
Mark IJbema 45c6048312 Merge branch 'main' into mark/fork-cli-tips 2026-06-17 17:32:06 +02:00
Marius 52b3a01092 Merge pull request #11373 from Kilo-Org/poised-exoplanet
fix: silence interrupted session notifications
2026-06-17 17:32:03 +02:00
Kirill Kalishev 901ecd7c65 Merge pull request #11221 from Kilo-Org/tidy-antlion
Add JetBrains provider settings management
2026-06-17 11:31:53 -04:00
Kirill Kalishev 7fa2239ce5 Merge branch 'main' into leather-peace 2026-06-17 11:17:07 -04:00
markijbema 2ab9316913 ci: keep stable JetBrains image layers before dependency cache
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-17 15:15:51 +00:00
Kirill Kalishev b53183b658 Merge branch 'main' into tidy-antlion 2026-06-17 11:14:17 -04:00
Kirill Kalishev ca014e6907 Merge branch 'main' into poised-exoplanet 2026-06-17 11:13:59 -04:00
Marius 45dff0b7fa Merge pull request #11146 from Kilo-Org/feat/gitkilo
Polish VS Code tool call previews
2026-06-17 17:11:40 +02:00
markijbema 57b7177d7c ci: prewarm the JetBrains image Bun package cache
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-17 15:09:53 +00:00
marius-kilocode f21a34a1e6 fix: silence interrupted session notifications 2026-06-17 17:09:03 +02:00
Mark IJbema 3b1ff4f986 Merge pull request #9807 from truffle-dev/fix/cli-best-effort-telemetry-shutdown-on-exit-9788
fix(cli): bound Telemetry.shutdown so unreachable PostHog endpoint cannot block CLI exit
2026-06-17 17:04:42 +02:00
Imanol Maiztegui d5f1495f12 refactor(build): remove sidecar models-snapshot distribution
The models snapshot is now embedded directly in the compiled binary,
eliminating the need for a separate models-snapshot.json file alongside
the CLI executable.

- Delete script/kilocode/models-snapshot.ts build-time preparation
- Delete src/kilocode/provider/models-snapshot.ts runtime loader
- Remove snapshot copy steps from vscode, jetbrains, and opencode builds
- Remove snapshot existence checks from PrepareLocalCliTask/CheckCliTask
- Remove snapshot-related .gitignore and .prettierignore entries
- Simplify watch-cli, local-bin, and build scripts
- Update smoke test error messages to say "embedded" not "sidecar"
- Simplify models-snapshot tests to validate parsing only
- Remove models-snapshot from extract-source-links skip list
2026-06-17 17:03:15 +02:00
kirillk 0f9605dd48 Merge remote-tracking branch 'origin/leather-peace' into leather-peace 2026-06-17 11:01:47 -04:00
kirillk c541d849f7 fix(jetbrains): localize session copy strings 2026-06-17 11:01:01 -04:00
Kirill Kalishev f9c691dfe1 Merge branch 'main' into leather-peace 2026-06-17 11:00:27 -04:00
markijbema 9dd4711c9a ci: complete the JetBrains test container
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-17 14:55:20 +00:00
Brian Turcotte b384922444 Merge pull request #11335 from Kilo-Org/briant/addLanguages
adding alternate language readmes
2026-06-17 10:51:53 -04:00
github-actions[bot] b76752dd11 chore: update kilo-vscode visual regression baselines 2026-06-17 14:47:50 +00:00
Mark IJbema f59a0f1584 Merge branch 'main' into fix/cli-best-effort-telemetry-shutdown-on-exit-9788 2026-06-17 16:45:51 +02:00
markijbema 1cf9041541 test(kilocode): update command branding test file path
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-17 14:44:50 +00:00
marius-kilocode 5746b1e061 fix(vscode): restore tool preview motion 2026-06-17 16:43:31 +02:00
Imanol Maiztegui abdef9a7ee feat(opencode): add tool metadata buffering and migrate virtua to v0.42.3
Introduce a `metadata` method on SessionProcessor.Handle that buffers
metadata emitted before tool-call registration, then applies it on the
running transition. This decouples metadata emission timing from
tool-call lifecycle.

Downgrade virtua from 0.49.1 to 0.42.3 and migrate the virtualizer API:
- Replace `findItemIndex(scrollOffset)` with `findStartIndex()`
- Replace `bufferSize` prop with `overscan` (count-based)

Additional changes:
- Change Permission.reply return type from Promise<boolean> to Promise<void>
- Make Ruleset type readonly and remove unnecessary array spreads
- Update nvidia provider headers to reference Kilo branding
- Reorder SDK event type definitions for installation events
- Reduce promise facade allowlist in check script
2026-06-17 16:41:43 +02:00
Mark IJbema 9b12e1ca29 test(cli): avoid global runtime mock 2026-06-17 16:35:09 +02:00
marius-kilocode 9a8e271737 Merge remote-tracking branch 'origin/main' into feat/gitkilo 2026-06-17 16:25:24 +02:00
Mark IJbema d3aa48c707 refactor(cli): comment unused upstream tips 2026-06-17 16:17:33 +02:00
kirillk 00b795946a fix(jetbrains): preserve provider config scope 2026-06-17 10:16:18 -04:00
Mark IJbema 53940cbe7b refactor(cli): empty unused upstream tips 2026-06-17 16:15:36 +02:00
markijbema f40302719b ci(jetbrains): refresh apt indexes before installing font libraries
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-17 14:15:24 +00:00
Mark IJbema 93941001f6 chore: add telemetry shutdown changeset 2026-06-17 16:13:02 +02:00
Mark IJbema 0f2fc6f332 test(cli): cover rejected telemetry shutdown 2026-06-17 16:13:02 +02:00
Mark IJbema 549725be57 fix(cli): preserve successful exit when telemetry times out 2026-06-17 16:12:50 +02:00
Brian Turcotte d981c35e50 docs: fix readme source link 2026-06-17 10:12:10 -04:00
Brian Turcotte e208bfb5f6 docs: fix localized readme source links 2026-06-17 10:05:00 -04:00
Marius 565f740e1e Merge pull request #11351 from Kilo-Org/humorous-exhaust
fix: sync remote sessions across extension surfaces
2026-06-17 15:49:15 +02:00
Marius 97f115dbca Merge pull request #11352 from Kilo-Org/fix-a11y-model-navigation
fix(vscode): improve screen reader model navigation
2026-06-17 15:42:36 +02:00
Marius 26b36c80f8 Merge pull request #11366 from Kilo-Org/abrasive-scarer
fix(vscode): widen chat readable lane from 78ch to 88ch for more content space
2026-06-17 15:40:12 +02:00
Marius 41dcfb6528 Merge pull request #11367 from Kilo-Org/night-saltasaurus
feat(agent-manager): open pull requests with keyboard shortcut
2026-06-17 15:39:17 +02:00
Kirill Kalishev c5d8ae87b8 Merge branch 'main' into leather-peace 2026-06-17 09:21:30 -04:00
markijbema c1bef8604a ci(jetbrains): install font libs needed by JBR inside container
The JetBrains Runtime bundled with IntelliJ ships libfontmanager.so
but expects libfreetype.so.6 and libfontconfig1 on the host system.
The container image currently lacks these, causing UnsatisfiedLinkError
in any test that initialises Swing font metrics.

Install them explicitly until the updated container image (which will
include these packages in the Dockerfile) is available.

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-17 13:17:00 +00:00
kirillk c860f6c701 Merge remote-tracking branch 'origin/main' into leather-peace
# Conflicts:
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt
2026-06-17 09:16:52 -04:00
kirillk f6083176b1 Merge remote-tracking branch 'origin/main' into tidy-antlion
# Conflicts:
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/profile/LoggedOutProfileUi.kt
2026-06-17 09:16:29 -04:00
Kirill Kalishev 2a74b20f65 Merge pull request #11310 from Kilo-Org/docs/jetbrains-eap-copyline
fix(kilo-docs): copy JetBrains EAP URL without newline
2026-06-17 09:13:54 -04:00
Kirill Kalishev f6589aaec6 Merge pull request #11332 from Kilo-Org/horn-icon
fix(jetbrains): harden release skill
2026-06-17 09:05:27 -04:00
markijbema 0b267c6bff ci(jetbrains): install bun dependencies inside container
The container image has bun pre-installed but not the project's
node_modules.  Gradle's generateOpenApiSpec task runs 'bun dev generate'
which needs drizzle-orm and other packages from node_modules.

Add an explicit 'bun install' step after checkout.

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-17 13:03:05 +00:00
github-actions[bot] 019ca99bf7 chore: update kilo-vscode visual regression baselines 2026-06-17 12:51:42 +00:00
Mark IJbema e93a65c0bc Merge branch 'main' into fix/cli-best-effort-telemetry-shutdown-on-exit-9788 2026-06-17 14:51:11 +02:00
marius-kilocode 1933cf7cab feat(agent-manager): open pull requests with keyboard shortcut 2026-06-17 14:49:27 +02:00
Marius ce7ec1deda Merge pull request #11358 from Kilo-Org/swamp-isthmus
fix(agent-manager): clean up failed session moves
2026-06-17 14:49:21 +02:00
Mark IJbema c04d47b479 Merge branch 'main' into mark/fork-cli-tips 2026-06-17 14:49:10 +02:00
marius-kilocode 47399547e1 fix(vscode): widen chat readable lane from 78ch to 88ch for more content space 2026-06-17 14:48:22 +02:00
Mark IJbema 1494f05123 refactor(cli): fork TUI tips 2026-06-17 14:43:42 +02:00
Mark IJbema 349aff8fb5 Merge branch 'main' into ci/jetbrains-use-container 2026-06-17 14:41:43 +02:00
Catriel Müller 4b624b9a2b Merge pull request #10781 from shssoichiro/title-bar-status
feat(cli): show terminal title status indicators
2026-06-17 09:39:37 -03:00
Imanol Maiztegui b1045ac091 Merge branch 'main' into imanolmaiztegui/kilo-opencode-v1.15.9 2026-06-17 14:32:32 +02:00
Mark IJbema 910f198586 Merge pull request #11361 from Kilo-Org/fix/replace-oc-with-kilo-tip
fix(cli): comment out tips for GitHub Actions features Kilo doesn't offer
2026-06-17 14:27:29 +02:00
Mark IJbema f8052d939d Merge pull request #11343 from Kilo-Org/perf/jetbrains-test-synchronization
perf(jetbrains): eliminate fixed waits from session tests
2026-06-17 14:26:42 +02:00
Catriel Müller 7b97e4624c refactor: made this change configurable 2026-06-17 09:24:00 -03:00
Joshua Lambert 391a313a29 Merge pull request #11317 from Kilo-Org/feat/vscode-switch-deep-links
feat(vscode): support agent switch links
2026-06-17 08:22:56 -04:00
markijbema f7bc48e0bb fix(cli): comment out tips for GitHub Actions features Kilo doesn't offer
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-17 12:09:23 +00:00
markijbema dcb86c799d refactor(jetbrains): share coroutine test harness
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-17 12:05:20 +00:00
Imanol Maiztegui d2162d868a fix(opencode): remove duplicate import in httpapi-sdk test 2026-06-17 14:05:00 +02:00
Imanol Maiztegui 27d19a8deb Merge branch 'main' into imanolmaiztegui/kilo-opencode-v1.15.9 2026-06-17 14:03:20 +02:00
Mark IJbema 280fa5414e Merge branch 'main' into mark/replace-roo-code-session-import 2026-06-17 13:59:56 +02:00
Catriel Müller 1b25a4363d Merge branch 'main' into title-bar-status 2026-06-17 08:32:46 -03:00
Mark IJbema fb6b5ed63f Merge pull request #11347 from Kilo-Org/mark/fix-llm-user-agent-main
fix(cli): identify Kilo in LLM user agent
2026-06-17 13:32:18 +02:00
Marius fc92aa65dd Merge pull request #11357 from Kilo-Org/even-conifer
fix(vscode): show line numbers in edit approval diffs
2026-06-17 13:26:41 +02:00
Marius 3bf66b18e1 Merge pull request #11354 from Kilo-Org/solar-honeycrisp
fix(cli): skip bundled Atomic Chat in plugin loader
2026-06-17 13:20:35 +02:00
github-actions[bot] 757c4c7e8f chore: update kilo-vscode visual regression baselines 2026-06-17 11:10:28 +00:00
marius-kilocode 0920b3ffa8 fix(agent-manager): clean up failed session moves 2026-06-17 13:09:04 +02:00
Catriel Müller deb502482a Merge pull request #10758 from cooper-oai/codex/codex-refresh-process-lock
fix(cli): serialize Codex OAuth refresh across processes
2026-06-17 08:08:47 -03:00
marius-kilocode 14cb3dfd04 fix(vscode): show line numbers in edit approval diffs 2026-06-17 13:06:47 +02:00
Imanol Maiztegui 7a8626ad70 refactor(kilo): align codebase with upstream v1.15.9 API changes
Adapt Kilo-specific code to breaking changes introduced by the v1.15.9
merge:

- Migrate LLM test helpers to use LLMEvent factory constructors instead
  of raw event object literals
- Update provider cost extraction from `usage.raw` to native
  `usage.providerMetadata` keyed by provider name
- Preserve AI SDK raw usage in providerMetadata for billing continuity
- Replace `findStartIndex()` with `findItemIndex(scrollOffset)` in
  virtualizer calls
- Replace `overscan` prop with pixel-based `bufferSize` in virtual lists
- Change provider `all` data shape from array to Map
- Remove `useCommandPalette` dependency, replaced by mode stack pattern
- Fix ToolResultValue schema to avoid circular inference with tsgo
- Add missing test layer dependencies (HttpClient, RepositoryCache,
  Command)
- Remove obsolete models-snapshot files
- Fix Permission reply routing tests to expect NotFoundError instead of
  boolean false
- Normalize config references and fix nested type narrowing
2026-06-17 12:56:49 +02:00
marius-kilocode b2eef5cff4 chore(cli): add Atomic Chat fix changeset 2026-06-17 12:48:16 +02:00
marius-kilocode 2b304461f8 fix(cli): skip bundled Atomic Chat in plugin loader 2026-06-17 12:40:33 +02:00
marius-kilocode 5dd5c9a0de fix(vscode): improve screen reader model navigation 2026-06-17 12:38:40 +02:00
marius-kilocode 94bdfb9f8e fix: sync remote sessions across extension surfaces 2026-06-17 12:34:53 +02:00
Marius e9894141c5 Merge pull request #11349 from Kilo-Org/shadow-rhythm
fix(vscode): highlight exact changed characters in diffs
2026-06-17 12:20:15 +02:00
Marius d190725c3c fix(vscode): name compact settings tabs (#11348) 2026-06-17 10:18:02 +00:00
github-actions[bot] a5f2a84a62 chore: update kilo-vscode visual regression baselines 2026-06-17 10:06:11 +00:00
Marius 40cda29006 Merge branch 'main' into feat/gitkilo 2026-06-17 12:03:21 +02:00
marius-kilocode a5395a3521 fix(vscode): highlight exact changed characters in diffs 2026-06-17 12:02:53 +02:00
Marius 632cef9477 Merge pull request #11294 from Kilo-Org/mica-potassium
feat(agent-manager): add quick search for worktrees and sessions
2026-06-17 11:53:55 +02:00
Marius d82982d054 Merge pull request #11295 from Kilo-Org/quilt-asp
fix(vscode): restore authenticated speech input
2026-06-17 11:53:03 +02:00
Marius 27ac18b23e Merge pull request #11258 from Kilo-Org/utopian-approval
feat(vscode): render images in diff viewer
2026-06-17 11:38:38 +02:00
Mark IJbema a75da5542c test(cli): keep user agent marker focused 2026-06-17 11:27:46 +02:00
Mark IJbema 074a3363ea test(cli): annotate LLM user agent assertion 2026-06-17 11:26:43 +02:00
kilo-maintainer[bot] 6cff96c2e1 chore: update nix node_modules hashes 2026-06-17 09:25:57 +00:00
Mark IJbema b518a76aea fix(cli): identify Kilo in LLM user agent 2026-06-17 11:25:16 +02:00
Mark IJbema e50cd89758 Merge pull request #11345 from Kilo-Org/chore/remove-unused-hono-zod-validator
chore(cli): remove unused @hono/zod-validator dependency
2026-06-17 11:12:52 +02:00
Mark IJbema fb31e56f84 Merge pull request #11344 from Kilo-Org/chore/remove-stale-sst-env-types
chore: remove stale sst-env.d.ts artifacts
2026-06-17 11:12:34 +02:00
Marius cf94613c32 Merge pull request #10261 from singhvishalkr/fix/7216-ime-enter-submit
fix(webview-ui): ignore Enter during IME composition
2026-06-17 11:11:22 +02:00
github-actions[bot] 2d46adb54a chore: update kilo-vscode visual regression baselines 2026-06-17 08:59:54 +00:00
kilo-maintainer[bot] 9a9f9ad931 chore: update nix node_modules hashes 2026-06-17 08:59:33 +00:00
Marius 069685edc7 Merge branch 'main' into feat/gitkilo 2026-06-17 10:57:15 +02:00
Marius 5eff92154f Merge branch 'main' into sleepy-stoplight 2026-06-17 10:52:08 +02:00
markijbema e38c53e6e7 chore(cli): remove unused @hono/zod-validator dependency
Nothing imports @hono/zod-validator anywhere in the repo, and its peer dependency hono was removed in #10993, leaving an unmet peer. opencode was the only consumer, so the root catalog entry is dropped too.

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-17 08:46:49 +00:00
markijbema 33a82f23cb chore: remove stale sst-env.d.ts artifacts
These auto-generated SST type files reference a root sst-env.d.ts that does not exist and import the "sst" package, which was removed in #10993. Kilo is CLI-only with no hosted platform, so these are dead artifacts. The upstream-merge tooling already lists sst-env.d.ts in skipFiles, so they won't be re-added.

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-17 08:45:06 +00:00
Mark IJbema 96e6fdca4a Merge branch 'main' into perf/jetbrains-test-synchronization 2026-06-17 10:43:14 +02:00
Imanol Maiztegui b37a546450 resolve merge conflicts 2026-06-17 10:42:43 +02:00
Mark IJbema b586f1a345 Merge pull request #10993 from idreesmuhammadqazi-create/chore/remove-unused-deps
chore: remove 33 unused dependencies across monorepo
2026-06-17 10:42:35 +02:00
Marius ed565abb8a Merge branch 'main' into utopian-approval 2026-06-17 10:33:14 +02:00
Marius 74c48c902a Merge branch 'main' into quilt-asp 2026-06-17 10:33:07 +02:00
Marius f854c920af Merge branch 'main' into mica-potassium 2026-06-17 10:32:54 +02:00
Christiaan Arnoldus 474171a6a1 Merge pull request #10195 from truffle-dev/fix/custom-provider-picker-persists-after-add-10139
fix(vscode): keep custom provider picker open after partial add
2026-06-17 10:32:15 +02:00
Christiaan Arnoldus 7d6e2a5c57 Merge branch 'main' into console-explore-privacy-filter 2026-06-17 10:07:13 +02:00
Christiaan Arnoldus fab2faea9f Merge branch 'main' into fix/custom-provider-picker-persists-after-add-10139 2026-06-17 10:03:04 +02:00
Marius 0599442e08 Merge pull request #11331 from Kilo-Org/aged-front
feat(agent-manager): add close others tab action
2026-06-17 10:01:11 +02:00
markijbema 56205ea748 perf(jetbrains): eliminate fixed waits from session tests
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-17 07:42:15 +00:00
markijbema dbc3d2e884 chore: regenerate dependency lockfile
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-17 09:29:06 +02:00
markijbema af370bd56b ci(jetbrains): run inside pre-built container, drop manual setup steps
Switch the JetBrains unit job to run inside
ghcr.io/kilo-org/build/jetbrains:24.04, which already contains Bun,
Java 21, and the Gradle 9.4.1 distribution pre-cached in
GRADLE_USER_HOME.  The three manual setup steps (bun, java, gradle)
are no longer needed and are removed.

A 'Mark workspace as git-safe' step is added after checkout because
container jobs mount the workspace from the host with different file
ownership.  Git exit-128 errors otherwise occur when Gradle spawns a
'git tag' subprocess (build.gradle.kts:85).

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-17 07:21:19 +00:00
Mark IJbema 5767094edd Merge pull request #11339 from Kilo-Org/mark/extract-jetbrains-tests
ci: extract JetBrains test workflow
2026-06-17 09:15:07 +02:00
Mark IJbema c4e81f6271 Merge pull request #11309 from Kilo-Org/bead-moonstone
test(jetbrains): inject UI timers per test
2026-06-17 09:12:25 +02:00
Mark IJbema ab1e5b836d ci: extract JetBrains test workflow 2026-06-17 06:34:21 +00:00
Marius 0a50a5017e Merge pull request #11182 from Kilo-Org/skinny-poetry
feat(cli): share codebase indexes across worktrees
2026-06-17 08:21:31 +02:00
Mark IJbema cf820cdb82 Merge pull request #11306 from Kilo-Org/ci/use-prebuilt-jetbrains-container
ci: add jetbrains container image and fix containers.yml trigger
2026-06-17 08:19:12 +02:00
Joshua Lambert 7849909d50 Merge pull request #11141 from singhvishalkr/docs/agent-permission-rules
docs(customize): clarify agent permission rules
2026-06-16 23:29:54 -04:00
Joshua Lambert df6f7d1c6f Merge branch 'main' into docs/agent-permission-rules 2026-06-16 23:16:41 -04:00
Josh Holmer 8ff1550ee9 chore: change title bar symbols 2026-06-16 23:01:57 -04:00
Brian Turcotte 3bd11cfdc7 adding alternate language readmes 2026-06-16 22:42:28 -04:00
kirillk 2e056c980c chore(vscode): format provider catalog test 2026-06-16 22:39:43 -04:00
kirillk 1c7d5ca7d3 fix(jetbrains): restore popular provider settings 2026-06-16 22:21:24 -04:00
kirillk 9b73bf91e4 fix(vscode): restore popular provider settings 2026-06-16 22:02:19 -04:00
github-actions[bot] 0aaef83323 chore: update kilo-vscode visual regression baselines 2026-06-17 01:52:09 +00:00
Kirill Kalishev af92e1ee10 Merge branch 'main' into leather-peace 2026-06-16 21:52:01 -04:00
Iván Uruchurtu 2dcd5a42c4 Merge origin/feat/gitkilo into fix/vscode-tool-call-preview-polish 2026-06-16 19:48:13 -06:00
Iván Uruchurtu 33def8874a fix(vscode): restore tool preview behavior 2026-06-16 19:47:30 -06:00
Kirill Kalishev cb0a1ee447 Merge branch 'main' into aged-front 2026-06-16 21:36:55 -04:00
kirillk 53219a8d09 docs: skip routine Java preflight checks 2026-06-16 21:34:30 -04:00
kirillk 625c034360 fix(jetbrains): harden release skill 2026-06-16 21:32:26 -04:00
kirillk c5bd1b3e09 feat(agent-manager): add close others tab action 2026-06-16 21:31:39 -04:00
kirillk 9df96468d5 chore: remove session copy plan files 2026-06-16 21:25:21 -04:00
kirillk 6e69bac728 chore: remove provider settings plan files 2026-06-16 21:20:44 -04:00
Brian Turcotte 461c87576c Merge pull request #11326 from Kilo-Org/briant/updateREADME
Revise README for improved clarity and details
2026-06-16 20:40:53 -04:00
Joshua Lambert 33a2436f1b Merge branch 'main' into feat/vscode-switch-deep-links 2026-06-16 20:34:20 -04:00
Emilie Lima Schario d7c7b4cbd3 Merge pull request #11328 from Kilo-Org/fix/composio-toolkits-link 2026-06-16 19:33:37 -04:00
Brian Turcotte c763d31343 docs: fix README badge and table formatting 2026-06-16 19:28:20 -04:00
kirillk 29d2cc4df9 fix(jetbrains): stabilize session UI tests 2026-06-16 19:24:18 -04:00
kirillk ccbdb34eb0 fix(jetbrains): restore provider settings checks 2026-06-16 19:01:04 -04:00
Josh Lambert c8bad77f19 refactor(vscode): inline switch link parsing 2026-06-16 19:01:01 -04:00
kirillk 2cbd155ca7 fix(jetbrains): harden session copy UI 2026-06-16 18:57:52 -04:00
kirillk 6455aa0da4 fix: remove provider metadata duplication 2026-06-16 18:39:47 -04:00
Josh Lambert b3bb59c2c7 fix(docs): update Composio toolkits link 2026-06-16 18:24:49 -04:00
Joshua Lambert f703f7e3c0 Merge branch 'main' into feat/vscode-switch-deep-links 2026-06-16 18:16:09 -04:00
Brian Turcotte f45003a9c9 Update README.md
Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>
2026-06-16 17:49:20 -04:00
Brian Turcotte 2673ff9ce0 Revise README for improved clarity and details
Updated README to enhance clarity and provide additional details about Kilo Code's features and installation.
2026-06-16 17:43:36 -04:00
Iván Uruchurtu 3623676d78 fix(vscode): eliminate phantom tool gaps 2026-06-16 15:11:07 -06:00
Josh Lambert 61729fd785 fix(vscode): require agent parameter in switch links 2026-06-16 16:59:57 -04:00
Josh Lambert 214b8da6c6 fix(vscode): allow agent-only switch links 2026-06-16 16:54:18 -04:00
kirillk 358135f69e feat(jetbrains): add session message copy toolbar 2026-06-16 16:28:18 -04:00
Catriel Müller 64ff1084c0 fix: fix tests 2026-06-16 17:25:55 -03:00
kirillk 46b24e0c07 Merge remote-tracking branch 'origin/main' into tidy-antlion 2026-06-16 16:13:20 -04:00
kirillk db96e31e65 fix(jetbrains): show provider in model picker trigger 2026-06-16 16:04:59 -04:00
kirillk b0183f9846 fix(jetbrains): prefer headless provider oauth 2026-06-16 15:49:13 -04:00
kirillk f90644471b fix(jetbrains): keep hover copy button opaque 2026-06-16 15:11:47 -04:00
grandmaster451 fb37d9c773 fix(tui): show docs URL in dialog when browser cannot open on headless systems
Resolve merge conflict with main (command structure refactored from
onSelect to run) and add missing changeset.
2026-06-16 22:03:16 +03:00
Catriel Müller e9bea70872 fix: fix typecheck 2026-06-16 16:02:28 -03:00
Catriel Müller 93dd00b6bc Merge pull request #11262 from Kilo-Org/console-model-training-filter
feat(cli): add prompt-training model filter to Kilo Console
2026-06-16 16:01:21 -03:00
Marius 1321d7eb14 Merge pull request #11318 from Kilo-Org/oceanic-angelfish
fix(vscode): remove chat input separator
2026-06-16 20:36:39 +02:00
Catriel Müller 3e20e43b3d refactor: prevent infinite lock 2026-06-16 15:34:48 -03:00
kirillk f11450c81c fix(jetbrains): stabilize session hover copy overlay 2026-06-16 14:27:46 -04:00
kirillk e13ee2fe23 fix(jetbrains): keep provider auth overlay fixed 2026-06-16 14:25:29 -04:00
kirillk bc7f9b05e8 feat(jetbrains): add session hover copy overlay 2026-06-16 14:17:37 -04:00
Kirill Kalishev 76555a96e5 Merge branch 'main' into bead-moonstone 2026-06-16 13:46:11 -04:00
github-actions[bot] eb000f3c8c chore: update kilo-vscode visual regression baselines 2026-06-16 17:43:30 +00:00
marius-kilocode 7f18708308 fix(vscode): remove chat input separator 2026-06-16 19:40:13 +02:00
Vishal Kumar Singh 0804178b9f docs(kilo-docs): keep permission examples in precedence order 2026-06-16 23:04:48 +05:30
kirillk f0ad6db182 fix(jetbrains): gate settings on CLI readiness 2026-06-16 13:31:12 -04:00
Marius 1b65317fca Merge pull request #11316 from Kilo-Org/delirious-lung
fix(cli): prevent tests from deleting session database
2026-06-16 19:19:09 +02:00
kirillk 5e853801cf Merge remote-tracking branch 'origin/main' into bead-moonstone 2026-06-16 13:18:48 -04:00
Vishal Kumar Singh 6e99eb0612 docs(kilo-docs): update Composio toolkit link 2026-06-16 22:48:30 +05:30
Vishal Kumar Singh 0770d1d288 docs(kilo-docs): align auto-approval examples with precedence 2026-06-16 22:47:47 +05:30
Vishal Kumar Singh 61f2d6cee2 docs(kilo-docs): clarify permission rule precedence 2026-06-16 22:47:47 +05:30
Vishal Kumar Singh 6afe3553ca docs: clarify agent permission rules 2026-06-16 22:47:46 +05:30
Vishal Kumar Singh 968c651051 docs(customize): clarify agent permission rules 2026-06-16 22:47:45 +05:30
Ligia Zanchet e629fd0823 Merge pull request #11313 from Kilo-Org/docs/kiloclaw-settings-linear-composio
docs: rename Development Tools to Settings, add Linear and Composio integration pages
2026-06-16 19:10:33 +02:00
marius-kilocode 714f1ad4e0 fix(cli): prevent tests from deleting session database 2026-06-16 19:02:20 +02:00
Ligia Zanchet 4efd7baee3 Merge branch 'main' into docs/kiloclaw-settings-linear-composio 2026-06-16 18:55:21 +02:00
Kirill Kalishev 2caccfcfee Merge pull request #11315 from Kilo-Org/puzzled-abacus
fix(cli): restore permission override tests
2026-06-16 12:54:08 -04:00
kiloconnect[bot] 80a54c4804 docs: rename Settings to Integrations, update Composio intro examples 2026-06-16 16:53:29 +00:00
kirillk 8e13875e29 Revert "fix(jetbrains): preserve copy selection on context menu"
This reverts commit 057c5b7fcc.
2026-06-16 12:40:59 -04:00
kiloconnect[bot] f56871e494 docs: move Tools nav section into Settings, rename to Settings Tools 2026-06-16 16:40:52 +00:00
kirillk b203b8ecdc fix(cli): use test instance fixture in permission override tests 2026-06-16 12:36:20 -04:00
kiloconnect[bot] 0878300880 docs(kilo-docs): rename Development Tools to Settings, add Linear and Composio integration pages 2026-06-16 16:25:25 +00:00
Josh Lambert a2ccf574a7 feat(vscode): support agent switch links 2026-06-16 12:07:21 -04:00
Kirill Kalishev 422d995c00 Merge branch 'main' into bead-moonstone 2026-06-16 11:47:37 -04:00
github-actions[bot] 6c7eb360f8 chore: update kilo-vscode visual regression baselines 2026-06-16 15:46:21 +00:00
marius-kilocode 5120e1510d refactor(agent-manager): extract worktree header actions 2026-06-16 17:38:39 +02:00
marius-kilocode c961f66bd4 feat(agent-manager): add worktree and session search 2026-06-16 17:38:39 +02:00
kirillk f89bbe3390 test(jetbrains): tighten test UI timers 2026-06-16 11:30:44 -04:00
Catriel Müller 273a4fcee8 Merge branch 'main' into codex/codex-refresh-process-lock 2026-06-16 12:30:07 -03:00
Marius 34f16a507f Merge pull request #10091 from shssoichiro/deny-system-agents-tools
fix(core): always deny tool calls for system agents
2026-06-16 16:57:37 +02:00
Mark IJbema 5fed0d72b3 Merge branch 'main' into chore/remove-unused-deps 2026-06-16 16:57:34 +02:00
kilo-maintainer[bot] 1807e26584 chore: update nix node_modules hashes 2026-06-16 14:53:34 +00:00
kirillk 23d60433c1 test(jetbrains): inject UI timers per test 2026-06-16 10:52:15 -04:00
Joshua Lambert 749f6655f3 Merge pull request #11189 from Kilo-Org/docs/model-deep-link-protocol-handler
docs: document VS Code model deep link protocol handler
2026-06-16 10:49:03 -04:00
Mark IJbema 53102237df Merge pull request #11293 from Kilo-Org/mark/filter-jetbrains-tests
ci: skip unrelated JetBrains tests
2026-06-16 16:45:13 +02:00
Mark IJbema 8c36dde027 Merge pull request #11299 from Kilo-Org/mark/stabilize-session-cancellation-tests
test(cli): remove session cancellation timing races
2026-06-16 16:44:15 +02:00
Marius 18b39abd5e Merge pull request #11305 from Kilo-Org/shadow-pharaoh
fix(cli): clean up slow snapshot progress
2026-06-16 16:41:05 +02:00
Mark IJbema 2c1a48393b Merge pull request #11288 from Kilo-Org/mark/kilo-console-ui-boundary
refactor(kilo-console): use Kilo UI boundary
2026-06-16 16:39:51 +02:00
Ligia Zanchet 7abe19a6d9 Merge pull request #10697 from Kilo-Org/docs/kilo-pass-links-approved-isolated
Docs: update Kilo Pass links
2026-06-16 16:33:50 +02:00
Ligia Zanchet 360598c003 Merge pull request #10699 from Kilo-Org/docs/dolthub-approved
Docs: add DoltHub coverage
2026-06-16 16:33:32 +02:00
Ligia Zanchet 420a7391f6 Merge pull request #10693 from Kilo-Org/docs/org-custom-modes-approved-isolated
Docs: document organization custom modes
2026-06-16 16:30:41 +02:00
Mark IJbema 38f33f1a3c ci: drop no-op docs/** filter exclusion
There is no top-level docs/ directory in the repo (docs live under
packages/kilo-docs/, already excluded), so the '!docs/**' entry never
matched anything. Remove the dead filter line.
2026-06-16 16:29:57 +02:00
Ligia Zanchet f43928aedb Merge pull request #10702 from Kilo-Org/docs/webhook-triggers-overview-approved
Docs: document webhook trigger overview
2026-06-16 16:28:48 +02:00
Ligia Zanchet e1b83e13a4 Merge pull request #10700 from Kilo-Org/docs/mobile-kilo-pass-link-approved
Docs: update mobile Kilo Pass link
2026-06-16 16:28:45 +02:00
kilo-code-bot[bot] 290d5f4a15 feat(vscode): remove dead layout setting from Display settings (#11312)
The layout (auto | stretch toggle) in the Display settings tab was dead
code: the backend schema marks it @deprecated with the note 'Always uses
stretch layout', and the engine ignores the user choice entirely.

Remove the setting from:
- DisplayTab.tsx (UI row + LAYOUT_OPTIONS array)
- Config type (layout field)
- settings-io.ts KNOWN_KEYS allowlist
- All 20 language i18n files (80 translation keys total)

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-16 14:27:01 +00:00
Catriel Müller 6509034326 refactor: address comments 2026-06-16 11:23:18 -03:00
Marius 11be7dda63 Merge pull request #10929 from shssoichiro/fix/copy-command-scope
ux(cli): change `/copy` command to copy last message
2026-06-16 16:21:26 +02:00
marius-kilocode 017907febe Merge remote-tracking branch 'origin/main' into skinny-poetry
# Conflicts:
#	packages/kilo-indexing/test/kilocode/indexing/manager.test.ts
2026-06-16 16:19:52 +02:00
Catriel Müller 6291375d56 chore: remove out-of-scope PR files 2026-06-16 11:00:25 -03:00
Marius e02e532fa4 Merge pull request #11308 from Kilo-Org/tarry-henley
feat(vscode): align chat content in readable lane
2026-06-16 16:00:25 +02:00
kirillk 2ea9f0c24d fix(kilo-docs): copy JetBrains EAP URL without newline 2026-06-16 09:57:11 -04:00
marius-kilocode 42627729b4 fix(cli): refine shared index concurrency 2026-06-16 15:56:44 +02:00
Catriel Müller 0e2132f36b fix: file diff loading 2026-06-16 10:56:29 -03:00
Catriel Müller b5df14024b fix: fix persistence of sidebar width 2026-06-16 10:56:29 -03:00
Catriel Müller 2ee379a19f refactor: kilo-web-ui export required ui components 2026-06-16 10:56:29 -03:00
markijbema c68dbc952b refactor(kilo-console): use Kilo UI boundary
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-16 10:55:42 -03:00
Z User 8824fa0b35 fix: restore @opencode-ai/ui in kilo-console — it is actively imported
kilo-console's ProjectConsoleRoute.tsx imports @opencode-ai/ui/file,
@opencode-ai/ui/context/file, and @opencode-ai/ui/session-review.
The removal was a false positive from depcheck which failed to detect
the workspace package references. Count now 33 deps removed.
2026-06-16 13:54:46 +00:00
kirillk 0155b49617 test(jetbrains): make UI timers static 2026-06-16 09:53:47 -04:00
kirillk d319f7468e test(jetbrains): add fakeable UI timers 2026-06-16 09:37:49 -04:00
github-actions[bot] b4b445cb91 chore: update kilo-vscode visual regression baselines 2026-06-16 13:26:12 +00:00
marius-kilocode d56bfdd9aa feat(vscode): align chat content in readable lane 2026-06-16 15:22:24 +02:00
marius-kilocode 9240b506d9 test(cli): stabilize hosted timeout coverage 2026-06-16 15:18:06 +02:00
Mark IJbema 8fe0b8afc0 fix(vscode): use migration wizard for Roo import 2026-06-16 15:17:29 +02:00
markijbema 4a0117500e ci: annotate containers.yml branch change with kilocode_change
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-16 12:58:27 +00:00
markijbema 5686915e01 ci: add jetbrains container image and fix containers.yml trigger
- Add packages/containers/jetbrains/Dockerfile extending bun-node with
  Java 21 (apt-get, multi-arch safe) and Gradle 9.4.1 pre-cached in
  GRADLE_USER_HOME so the wrapper skips the network download
- Register the new image in build.ts (after bun-node, before rust) and
  update README
- Fix containers.yml branch trigger: dev → main so images are actually
  published from the default branch on every relevant push

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-16 12:55:41 +00:00
Mark IJbema c6f332e51c fix(vscode): import Roo sessions with UI-only history 2026-06-16 14:53:55 +02:00
Mark IJbema 3a360a8951 test(cli): replace remaining wall-clock sleeps in prompt tests
Convert the remaining `Effect.sleep(50)` synchronization hacks in
`prompt.test.ts` to either `Effect.yieldNow` or `waitFor` against
`SessionStatus`, mirroring the pattern already used elsewhere in the
file. Same motivation as the previous commit: stop making correctness
depend on how quickly CI schedules fibers.

- "concurrent loop callers all receive same error result": yieldNow
  before resolving the gate, so the queued caller joins the run on a
  scheduler turn instead of a 50ms window.
- "loop waits while shell runs ..." / "shell completion resumes
  queued loop callers": yieldNow before asserting `llm.calls === 0`
  while the shell is still running. The shell is already gated on
  `waitFor("shell busy", ...)`.
- "cancel interrupts loop queued behind shell": waitFor shell busy
  before forking the loop, then yieldNow before cancelling.
- "shell rejects when another shell is already running": waitFor
  shell busy before issuing the second shell call.

The `Effect.sleep(20)` at line 93 is the poll interval inside the
`waitFor` helper itself and is left unchanged.
2026-06-16 14:50:45 +02:00
marius-kilocode 04ed322aad fix(cli): clean up slow snapshot progress 2026-06-16 14:35:37 +02:00
Mark IJbema e49e5fef21 ci: keep existing VS Code path filters 2026-06-16 12:35:16 +00:00
chrarnoldus b4cdbf2052 docs: clarify Console privacy filter release note
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-16 12:32:20 +00:00
Mark IJbema a2efd4c8af feat(vscode): add Roo import to settings UI 2026-06-16 14:25:28 +02:00
Marius 2f8f652e0c Merge pull request #11302 from Kilo-Org/fix/vscode-code-edit-block-flicker
fix(vscode): stabilize expanded edit blocks
2026-06-16 14:21:28 +02:00
github-actions[bot] 1bffc5337c chore: update kilo-vscode visual regression baselines 2026-06-16 12:20:21 +00:00
marius-kilocode ac1f0c8bd9 chore(vscode): format speech model selector 2026-06-16 14:16:28 +02:00
Mark IJbema fd512efaad Merge remote-tracking branch 'origin/main' into mark/replace-roo-code-session-import 2026-06-16 14:14:37 +02:00
marius-kilocode e50bb7d1d3 refactor(vscode): simplify speech state lookups 2026-06-16 14:12:47 +02:00
marius-kilocode 2fa0890928 fix(vscode): restore speech input availability 2026-06-16 14:12:47 +02:00
Marius c734bb1625 Delete .changeset/steady-code-edit-blocks.md 2026-06-16 14:06:31 +02:00
marius-kilocode 87157ae99e fix(vscode): stabilize expanded edit blocks 2026-06-16 14:04:13 +02:00
chrarnoldus 081b65325f feat(cli): filter prompt-training models in Explore
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-16 11:53:42 +00:00
Mark IJbema 327eddb196 Merge pull request #11080 from Githubguy132010/codex/add-default-diff-expansion-setting
[codex] Add code edit block display setting
2026-06-16 13:52:02 +02:00
Mark IJbema c1865af86f Merge pull request #11201 from shssoichiro/agent-descriptions
fix(cli): improve guidelines for `kilo agent create`
2026-06-16 13:46:22 +02:00
Mark IJbema dca49f29b6 chore(ci): mark VS Code workflow as Kilo-only 2026-06-16 11:37:25 +00:00
Mark IJbema d82649a073 Merge branch 'main' into chore/remove-unused-deps 2026-06-16 13:36:04 +02:00
Z User df34a36446 fix: restore storybook addons and revert knip workaround per review feedback
Storybook addons (addon-docs, addon-a11y, addon-themes) are configured
features, not unused dependencies. Their removal disabled documentation,
accessibility, and theme panels rather than pruning dead code. This restores:
- kilo-ui: addon-docs, addon-themes, addon-a11y
- kilo-vscode: addon-docs, addon-a11y
- .storybook/main.ts configs to their original addon arrays
- knip.json: reverts story file entry point additions (addons serve as
  implicit entry points for story files)

Remaining removals (34 deps) are unaffected.
2026-06-16 11:29:06 +00:00
markijbema 670f2fad30 test(cli): remove session cancellation timing races
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-16 11:23:08 +00:00
Mark IJbema ca8515ade0 Merge pull request #11289 from Kilo-Org/mark/disable-issue-triage
ci: disable upstream issue maintenance workflows
2026-06-16 12:53:17 +02:00
Marius 33e26a1e7a Merge pull request #11297 from Kilo-Org/lime-supermarket
fix(vscode): remove diff viewer corner artifacts
2026-06-16 12:34:48 +02:00
marius-kilocode 45d1b63b84 fix(vscode): comply with Agent Manager CSS prefix guard 2026-06-16 12:20:20 +02:00
marius-kilocode 06da363599 fix(vscode): remove diff viewer corner artifacts 2026-06-16 12:16:06 +02:00
Mark IJbema 3095d990bb fix(ci): let paths-filter select event base 2026-06-16 10:13:22 +00:00
Mark IJbema 42ceb15e53 ci: filter editor-specific test suites 2026-06-16 10:06:16 +00:00
Christiaan Arnoldus f09ae31034 Merge pull request #11239 from Kilo-Org/feature/custom-provider-reasoning-options
feat(vscode): expand custom provider configuration
2026-06-16 12:04:19 +02:00
Mark IJbema cae7cd9d01 Merge pull request #11291 from Kilo-Org/mark/fix-atomic-chat-plugin-loading
fix(cli): load Atomic Chat as bundled plugin
2026-06-16 11:57:31 +02:00
Mark IJbema 07097d8020 Merge branch 'main' into mark/disable-issue-triage 2026-06-16 11:56:00 +02:00
Christiaan Arnoldus eb62097e65 Merge pull request #11236 from kapelame/feat/minimax-m3-thinking-toggle
feat(provider): add MiniMax M-series reasoning toggle
2026-06-16 11:55:50 +02:00
Mark IJbema 829466d99b Merge pull request #11292 from Kilo-Org/mark/stabilize-jetbrains-session-timeout-tests
test(jetbrains): make session timeout tests deterministic
2026-06-16 11:54:30 +02:00
Mark IJbema e6d2994651 fix(ci): use built-in JetBrains change detection 2026-06-16 09:45:19 +00:00
markijbema dd441e78ea fix(cli): keep bundled plugin initialization silent
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-16 09:43:09 +00:00
Mark IJbema 8b2612fa1d ci: skip unrelated JetBrains tests 2026-06-16 09:40:51 +00:00
Christiaan Arnoldus 6e019c4388 Merge pull request #11290 from Kilo-Org/docs/mistral-ai-byok-label
docs(kilo-docs): clarify Mistral AI BYOK label
2026-06-16 11:36:28 +02:00
markijbema 36998d26b9 test(jetbrains): make session timeout tests deterministic
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-16 09:23:26 +00:00
marius-kilocode 8d0c7dd606 Merge remote-tracking branch 'origin/main' into utopian-approval 2026-06-16 11:18:26 +02:00
Marius 3416b9222c Merge pull request #10824 from Kilo-Org/docs/session-renaming
docs(kilo-docs): document inline session renaming
2026-06-16 11:17:56 +02:00
Marius e1c5a55a5d Merge pull request #11242 from Kilo-Org/confirm-11208-indexing-api-key
fix: support unauthenticated OpenAI-compatible indexing
2026-06-16 11:16:58 +02:00
Marius 22d0c1e81e docs(kilo-docs): clarify snapshots without Git (#11233) 2026-06-16 11:16:19 +02:00
Marius 5561d90bd1 Merge pull request #11113 from Kilo-Org/fix/local-prompt-elapsed
fix(vscode): count pending submission time
2026-06-16 11:15:50 +02:00
Marius 5fc77819ad Merge pull request #11241 from Kilo-Org/stone-mind
feat(agent-manager): track feature button usage
2026-06-16 11:14:38 +02:00
Mark IJbema ca237c4252 Merge pull request #11257 from Kilo-Org/mark/opencode-changeset-script
Add opencode changeset generator
2026-06-16 11:13:57 +02:00
Mark Bema 01359fc52a ci: disable upstream issue maintenance workflows 2026-06-16 09:12:21 +00:00
markijbema 4436139fab fix(cli): load Atomic Chat as bundled plugin
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-16 09:10:32 +00:00
Mark Bema f6fe95d529 ci: restore disabled triage workflow from upstream 2026-06-16 09:08:52 +00:00
chrarnoldus d8b033d094 docs(kilo-docs): clarify Mistral AI BYOK label
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-16 09:04:13 +00:00
Mark Bema a49bcb7ed8 ci: disable automatic issue triage 2026-06-16 08:54:31 +00:00
kiloconnect[bot] 173837d097 style(vscode): fix prettier formatting in roo-import/service.ts 2026-06-16 08:44:52 +00:00
kiloconnect[bot] d34d91455f fix(vscode): inspect migrate() result and improve Roo Code session metadata
- command.ts: check migrate() return value, count failures, and surface
  error count in the completion notification instead of silently ignoring
  failed session imports (fixes bot WARNING)
- service.ts: read history_item.json for accurate title, workspace, and
  timestamp — falls back to parsing api_conversation_history.json when
  the file is absent
- service.ts: add rooveterinaryinc.roo-code and rooveterinaryinc.roo-code-nightly
  to the list of Roo Code extension IDs to probe
2026-06-16 08:41:31 +00:00
Mark IJbema af7228e846 fix binary name 2026-06-16 10:38:07 +02:00
Mark IJbema 05b59ba0f7 fix: validate upstream changeset range start 2026-06-16 10:35:35 +02:00
Mark IJbema b4f9904f15 fix: require named opencode changeset versions 2026-06-16 10:14:20 +02:00
Mark IJbema 01c25930f6 fix: harden upstream changeset generation 2026-06-16 10:06:49 +02:00
Mark IJbema a67d57b97f fix: strip all options except --from/--to 2026-06-16 09:57:53 +02:00
Mark IJbema cdb30bf14c fix: always overwrite generated changesets 2026-06-16 09:54:48 +02:00
Mark IJbema edd3fad1d7 fix: flatten upstream changeset notes 2026-06-16 09:31:42 +02:00
Githubguy132010 40ccca44a0 Merge upstream/main into codex/add-default-diff-expansion-setting
Resolve conflicts in:
- packages/opencode/src/config/config.ts
- packages/kilo-vscode/webview-ui/src/types/messages/config.ts
- packages/kilo-vscode/webview-ui/src/components/settings/settings-io.ts
- packages/sdk/js/src/v2/gen/types.gen.ts
- packages/sdk/openapi.json
- packages/opencode/test/kilocode/cli/error.test.ts
- packages/opencode/test/kilocode/config/indexing-default-plugin.test.ts

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-16 05:57:41 +00:00
Catriel Müller caae74d51f Merge pull request #11279 from Kilo-Org/catrielmuller/kilo-console-persist
fix(cli): stabilize Kilo Console worktree flows
2026-06-16 01:22:20 -03:00
Catriel Müller e17cab995e fix: kilo markers 2026-06-16 00:45:53 -03:00
Kirill Kalishev 17ed51d9b5 Merge pull request #11278 from Kilo-Org/towering-talk
fix(jetbrains): clean up restartless unload
2026-06-15 23:19:06 -04:00
Catriel Müller 339513190e fix: fix tests 2026-06-16 00:15:21 -03:00
Josh Holmer 7a1c908d5b fix(core): improve guidelines for kilo agent create
Currently the `kilo agent create` command generates extremely long agent
descriptions. This is because the system prompt for the `generate` agent
tells it to include multiple verbose examples of when the agent should
be used. This is unnecessary and increases system context bloat without
improving the parent agent's ability to choose a subagent.

This change updates the system prompt to exclude the guidance about
examples, and instead includes official guidance from Anthropic's
documentation on best practices for agent descriptions.
2026-06-15 22:07:32 -04:00
Catriel Müller fbdcc75d30 refactor: fix kilo markers 2026-06-15 21:44:31 -03:00
Catriel Müller 3ba0de1fc6 refactor: regenerate sdk 2026-06-15 21:42:35 -03:00
Catriel Müller 0c0b95fac6 fix: fix tests 2026-06-15 21:27:50 -03:00
Catriel Müller 04d25fdf6d fix(cli): prevent unsafe console worktree actions 2026-06-15 21:08:16 -03:00
Catriel Müller e91eef2b38 fix: session list on tui 2026-06-15 21:08:16 -03:00
Catriel Müller 8c1cdf53a9 fix: kilo console sidebar size 2026-06-15 21:03:15 -03:00
Catriel Müller 2f69c132b0 refactor: hot reload kilo console configs 2026-06-15 21:03:15 -03:00
Catriel Müller f82828a02f Merge pull request #11270 from Kilo-Org/warp-shell
fix(cli): rebrand OpenCode leftovers
2026-06-15 20:51:09 -03:00
kirillk 76b4930326 test(jetbrains): stabilize side panel timeout tests 2026-06-15 19:05:18 -04:00
kirillk 057c5b7fcc fix(jetbrains): preserve copy selection on context menu 2026-06-15 17:44:10 -04:00
Joshua Lambert b1b0797109 Merge branch 'main' into docs/model-deep-link-protocol-handler 2026-06-15 17:41:36 -04:00
Catriel Müller 371d0f0397 fix: fix jb test 2026-06-15 18:32:36 -03:00
Joshua Lambert 2fe8da18ab Merge branch 'main' into feat/gitkilo 2026-06-15 17:24:12 -04:00
kirillk dfd34405d1 fix(jetbrains): suppress intentional stderr cleanup warning 2026-06-15 17:02:09 -04:00
kirillk b4864ebd43 fix(jetbrains): scope session copy context 2026-06-15 16:55:01 -04:00
Catriel Müller 0675b201b7 refactor: fix markers 2026-06-15 17:32:32 -03:00
kirillk 62e42c1efb fix(jetbrains): clean up restartless unload 2026-06-15 16:29:30 -04:00
Catriel Müller 8b5261d2f1 fix: test 2026-06-15 17:12:55 -03:00
kirillk d8b6efd58c fix(jetbrains): show cancellable provider oauth progress 2026-06-15 15:58:36 -04:00
Catriel Müller 79e4af75fa test(cli): stabilize Windows session tests 2026-06-15 16:37:11 -03:00
Kirill Kalishev d13e4ff79b Merge pull request #11275 from Kilo-Org/lean-sidecar
fix(jetbrains): cap prompt input growth
2026-06-15 15:31:02 -04:00
kirillk 2b60686f11 docs(jetbrains): add provider settings plans 2026-06-15 15:22:30 -04:00
kirillk 0086e0dcb9 fix(jetbrains): widen provider api key dialog 2026-06-15 15:21:21 -04:00
kirillk bf7779d177 fix(jetbrains): keep provider toolbar fixed 2026-06-15 15:04:53 -04:00
chrarnoldus 9250846de3 Merge remote-tracking branch 'origin/main' into console-model-training-filter
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-15 19:03:02 +00:00
kirillk aa6cd198fe test(jetbrains): cover prompt enhance telemetry 2026-06-15 14:49:17 -04:00
kirillk 0aae6277a2 fix(jetbrains): hide prompt soft wrap glyphs 2026-06-15 14:34:02 -04:00
Kirill Kalishev ccd9890c46 Merge pull request #11271 from Kilo-Org/jetbrains/release/v7.0.1-rc.9
release(jetbrains): v7.0.1-rc.9
2026-06-15 14:27:48 -04:00
kirillk b92ae903d1 docs(jetbrains): clarify CLI artifact refresh guidance 2026-06-15 14:21:27 -04:00
kirillk 3c319a59a2 fix(jetbrains): cap prompt input growth 2026-06-15 14:09:24 -04:00
Kirill Kalishev 5f99f9be09 docs(jetbrains): edit changelog for v7.0.1-rc.9 2026-06-15 13:54:43 -04:00
kilo-maintainer[bot] b107604a72 release(jetbrains): v7.0.1-rc.9 2026-06-15 17:44:34 +00:00
V Keerthi Vikram 8baf3e3138 fix(ci): skip watch-opencode-releases on forks (#11269)
The schedule trigger fires on every repo where the file exists,
including contributor forks. Forks don't have access to
OPENCODE_WATCH_SLACK_WEBHOOK, so the Slack step fails. The previous
vars.OPENCODE_WATCH_ENABLED guard evaluated to true on forks (empty
!= 'false'), so it didn't protect anything.

Add the same github.repository == 'Kilo-Org/kilocode' guard used by
18 other workflows in this repo.
2026-06-15 19:43:44 +02:00
Iván Uruchurtu abaf048832 Merge remote-tracking branch 'origin/main' into fix/vscode-tool-call-preview-polish 2026-06-15 11:35:34 -06:00
Catriel Müller c5d39d090c fix(cli): rebrand opencode leftovers 2026-06-15 14:33:01 -03:00
kirillk 8fc46998f6 Merge remote-tracking branch 'origin/main' into tidy-antlion 2026-06-15 13:26:49 -04:00
Kirill Kalishev cb9b29c3b8 Merge pull request #11095 from Kilo-Org/truthful-allspice
feat(jetbrains): improve shell and markdown rendering
2026-06-15 13:23:21 -04:00
Joshua Lambert c06539145e Merge branch 'main' into docs/model-deep-link-protocol-handler 2026-06-15 12:57:36 -04:00
Iván Uruchurtu f394c5b6de Merge origin/feat/gitkilo into fix/vscode-tool-call-preview-polish 2026-06-15 10:53:54 -06:00
Iván Uruchurtu 486a709fc1 fix(vscode): restore shell command highlighting 2026-06-15 10:53:10 -06:00
Catriel Müller c7c95885ae Merge pull request #11264 from Kilo-Org/wind-wind
fix(cli): use Kilo packages for upgrades
2026-06-15 13:32:26 -03:00
kirillk 0b8c7228ca Merge remote-tracking branch 'origin/main' into truthful-allspice
# Conflicts:
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/prompt/PromptPanel.kt
#	packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ui/SessionUiUpdateTest.kt
2026-06-15 12:19:56 -04:00
Johnny Eric Amancio 046b03a19d fix(cli): prefix generated plan filenames with timestamp (#11245) 2026-06-15 18:19:41 +02:00
Mark IJbema 425ced4292 fix: omit SDK from upstream changesets 2026-06-15 18:14:20 +02:00
kirillk 681b8090f3 fix(jetbrains): consolidate shell terminal parsing 2026-06-15 12:12:43 -04:00
Mark IJbema f42789d0ef chore: add bundled opencode changeset 2026-06-15 18:08:38 +02:00
kiloconnect[bot] 1c39c4416e docs: address PR review comments on model deep link docs 2026-06-15 15:59:05 +00:00
Catriel Müller 312c3ab012 chore(cli): annotate Kilo upgrade switch 2026-06-15 12:53:39 -03:00
Catriel Müller f78e54c81c fix(cli): use Kilo packages for upgrades 2026-06-15 12:53:05 -03:00
kirillk 88bc6887c4 Merge remote-tracking branch 'origin/main' into tidy-antlion
# Conflicts:
#	packages/opencode/src/server/routes/instance/httpapi/handlers/provider.ts
2026-06-15 11:42:27 -04:00
chrarnoldus 0903183799 feat(cli): expose model training filter in console
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-15 15:40:30 +00:00
Mark IJbema b498488c4f fix: bundle upstream release changesets 2026-06-15 17:30:46 +02:00
Catriel Müller de0c3eb151 Merge pull request #11171 from Kilo-Org/fix/tui-news-read-state
fix(cli): persist read TUI news
2026-06-15 12:14:34 -03:00
Mark IJbema f5440b7c7f fix: filter upstream changeset notes 2026-06-15 17:14:09 +02:00
Christiaan Arnoldus 24083eb82b Merge branch 'main' into feat/minimax-m3-thinking-toggle 2026-06-15 17:08:15 +02:00
Kirill Kalishev 533323f6c2 Merge pull request #11077 from Kilo-Org/balanced-backpack
feat(jetbrains): support prompt and transcript attachments
2026-06-15 11:06:14 -04:00
kiloconnect[bot] 6faa3f14b6 feat(vscode): add Import Sessions from Roo Code command
Adds a new VS Code command 'kilo-code.new.importRooCodeSessions' that
discovers and imports conversation history from a Roo Code installation.

- Extend migrate() in legacy-migration/sessions/migrate.ts with optional
  overrides (custom dir + pre-resolved LegacyHistoryItem) so the existing
  parsing pipeline can be reused without modification for any extension's
  tasks directory.
- Add packages/kilo-vscode/src/roo-import/service.ts which locates Roo
  Code global storage as a sibling of the current extension's storage, scans
  the tasks/ directory, and derives session metadata (title from first user
  message, timestamp from numeric task ID).
- Add packages/kilo-vscode/src/roo-import/command.ts with a VS Code quick-pick
  + progress-notification flow.
- Register the command in extension.ts and package.json.

Closes #11243
2026-06-15 14:55:59 +00:00
Christiaan Arnoldus 83c7b08250 Merge branch 'main' into feature/custom-provider-reasoning-options 2026-06-15 16:48:06 +02:00
kilo-maintainer[bot] 105d3be8ae chore: update nix node_modules hashes 2026-06-15 14:30:32 +00:00
Mark IJbema 7ef41f5a9b chore: move opencode changesets into upstream scripts 2026-06-15 16:20:36 +02:00
Johnny Eric Amancio 38459184f2 feat(cli): align native plan with architect (#11170)
* feat(cli): align native plan with architect

* fix(cli): support repo-root plan files

* test(cli): focus native plan reminder assertions
2026-06-15 14:20:19 +00:00
marius-kilocode a081fe37f9 style(vscode): format image diff translations 2026-06-15 16:20:03 +02:00
Marius 884c54f4f8 Merge pull request #11098 from Kilo-Org/feat/vscode-attention-notifications
feat(vscode): add attention sounds
2026-06-15 16:12:12 +02:00
Z User f52ffab517 fix: restore htmlparser2 — accidentally dropped during rebase conflict
htmlparser2 was added by upstream but lost during rebase conflict
resolution in packages/opencode/package.json. It is actively
imported at packages/opencode/src/tool/webfetch.ts:3
2026-06-15 14:09:35 +00:00
marius-kilocode 148b324c94 fix(vscode): translate image diff labels 2026-06-15 16:08:50 +02:00
marius-kilocode 056e06911b feat(vscode): render images in diff viewer 2026-06-15 16:00:12 +02:00
Mark IJbema d880a536b7 fix: annotate opencode changeset script 2026-06-15 15:56:54 +02:00
Mark IJbema d3c0c03f3b feat: add opencode changeset generator 2026-06-15 15:54:49 +02:00
Z User b63d43cf81 chore: update bun.lock after rebase 2026-06-15 13:51:06 +00:00
Z User 5135ab95cf fix: add storybook story files to knip entry points
Story files in webview-ui/src/stories/ were flagged as unused by knip
after storybook addon references were removed from .storybook/main.ts.
Adding them as explicit knip entry points resolves the CI failure.
2026-06-15 13:50:34 +00:00
Z User 19e5d17821 fix: remove orphaned storybook addon references from .storybook/main.ts
packages/kilo-ui and packages/kilo-vscode still referenced
@storybook/addon-docs, @storybook/addon-a11y, @storybook/addon-themes
in their addons array after the deps were removed.
2026-06-15 13:50:34 +00:00
Z User 7753659911 chore: remove 39 unused dependencies across monorepo
Removed unused packages identified via depcheck static analysis
and verified with full codebase grep to confirm zero usage.

Root (5):
- @aws-sdk/client-s3, heap-snapshot-toolkit, @morphllm/morphsdk
- @actions/artifact, sst

packages/core (1):
- @types/semver

packages/ui (6):
- @shikijs/transformers, @solid-primitives/bounds, luxon
- marked-katex-extension, marked-shiki, @types/luxon

packages/kilo-gateway (1):
- @kilocode/sdk

packages/kilo-ui (3):
- @storybook/addon-a11y, @storybook/addon-docs, @storybook/addon-themes

packages/kilo-vscode (3):
- dotenv, @storybook/addon-a11y, @storybook/addon-docs

packages/kilo-console (1):
- @opencode-ai/ui

packages/opencode (20):
- @hono/node-server, @hono/node-ws, @hono/standard-validator
- @openauthjs/openauth, partial-json, zod-to-json-schema
- @standard-schema/spec, @babel/core, @types/babel__core
- @npmcli/config, @opentelemetry/context-async-hooks
- @opentelemetry/exporter-trace-otlp-http, @pierre/diffs
- chokidar, glob, hono, hono-openapi, minimatch
- rotating-file-stream, xdg-basedir, @types/npmcli__arborist

Result: 264 packages pruned from node_modules (3962 -> 3698)
2026-06-15 13:50:34 +00:00
Imanol Maiztegui cdae2ce7df merge: record upstream v1.15.9 2026-06-15 14:48:06 +02:00
Imanol Maiztegui 5b9e33cfef refactor: kilo compat for v1.15.9 2026-06-15 14:48:05 +02:00
marius-kilocode 04ad8d760b feat(vscode): add global sound selection 2026-06-15 14:47:31 +02:00
Christiaan Arnoldus 535da33164 Merge branch 'main' into feature/custom-provider-reasoning-options 2026-06-15 14:47:26 +02:00
Marius c9ffc0b7df Merge pull request #11249 from Kilo-Org/indecisive-uranium
fix: format provider rate limit errors
2026-06-15 14:36:45 +02:00
marius-kilocode 2c30dc75ce fix: format provider rate limit errors 2026-06-15 14:17:44 +02:00
marius-kilocode a4b967662b refactor(vscode): align sounds with opencode attention 2026-06-15 14:13:57 +02:00
chrarnoldus d22d773003 style(vscode): format custom provider settings
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-15 12:05:19 +00:00
Christiaan Arnoldus 2ddf6f6352 Merge pull request #11158 from Kilo-Org/hide-training-models
feat: hide Kilo Gateway models that may train on prompts
2026-06-15 14:04:28 +02:00
kape c4bcdc504f Merge branch 'main' into feat/minimax-m3-thinking-toggle 2026-06-15 19:59:18 +08:00
chrarnoldus 8f6a722895 refactor(vscode): extract provider form initialization
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-15 11:53:36 +00:00
chrarnoldus 239369a8e5 refactor(vscode): simplify custom provider dialog
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-15 11:45:29 +00:00
Marius 583bef064c Merge pull request #11246 from Kilo-Org/sprout-principal
fix: include prerelease notes in stable releases
2026-06-15 13:41:40 +02:00
chrarnoldus a10caf9195 fix(vscode): complete custom provider translations
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-15 11:32:04 +00:00
marius-kilocode 3f1c8fae36 fix: include prerelease notes in stable releases 2026-06-15 13:22:43 +02:00
chrarnoldus a65f780fdd feat(vscode): configure provider output effort
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-15 11:19:01 +00:00
Christiaan Arnoldus 33b13f810c Merge branch 'main' into hide-training-models 2026-06-15 13:15:38 +02:00
chrarnoldus f97b6bc1bc Merge remote-tracking branch 'origin/main' into feature/custom-provider-reasoning-options
# Conflicts:
#	packages/kilo-vscode/src/shared/custom-provider.ts

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-15 10:17:30 +00:00
kilo-maintainer[bot] 5fab7b38d7 release: v7.3.46 2026-06-15 10:14:38 +00:00
Christiaan Arnoldus 3ccd205a9f Merge pull request #11206 from IamCoder18/fix/triage-model-path
fix(agent): fix triage model provider path for gpt-5-nano
2026-06-15 12:09:39 +02:00
chrarnoldus f121d70a00 Merge remote-tracking branch 'origin/main' into hide-training-models
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-15 10:06:19 +00:00
Christiaan Arnoldus 5e3d3dd25e Merge branch 'main' into feat/minimax-m3-thinking-toggle 2026-06-15 12:03:11 +02:00
Christiaan Arnoldus 44f144c8fc Apply suggestions from code review
Co-authored-by: Christiaan Arnoldus <christiaan.arnoldus@outlook.com>
2026-06-15 12:02:48 +02:00
Marius fb2db2e018 fix(vscode): allow removing provider reasoning (#11238)
* fix(vscode): allow removing provider reasoning

* style(vscode): format provider regression test

---------

Co-authored-by: Christiaan Arnoldus <christiaan.arnoldus@outlook.com>
2026-06-15 10:00:37 +00:00
chrarnoldus 998fa212a7 style(vscode): format prompt-training translations
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-15 09:59:02 +00:00
marius-kilocode 87a7e80f6d fix: harden keyless indexing handling 2026-06-15 11:54:06 +02:00
chrarnoldus 02f1d12985 Merge branch 'main' into hide-training-models 2026-06-15 09:49:44 +00:00
Marius 7f886c75ef Merge pull request #11240 from Kilo-Org/confirm-11227-skill-removal
fix: prevent recursive skill removal
2026-06-15 11:47:43 +02:00
marius-kilocode 9211000aad fix: support unauthenticated indexing endpoints 2026-06-15 11:45:39 +02:00
Christiaan Arnoldus 08e5fbe5e5 Merge pull request #11234 from Kilo-Org/chore/regenerate-v2-sdk-types
chore(sdk): regenerate v2 client
2026-06-15 11:44:48 +02:00
marius-kilocode 048aebf1b8 feat(agent-manager): track feature button usage 2026-06-15 11:33:50 +02:00
marius-kilocode f820e57bab fix: prevent recursive skill removal 2026-06-15 11:31:52 +02:00
chrarnoldus 3ffb1ad64a fix(vscode): avoid variant tuple inference
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-15 09:28:25 +00:00
chrarnoldus ef3ad342fc feat(vscode): select custom provider API
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-15 09:25:44 +00:00
Christiaan Arnoldus 7126d8737b Merge branch 'main' into chore/regenerate-v2-sdk-types 2026-06-15 11:20:36 +02:00
chrarnoldus a5b87fafa3 feat(vscode): support custom reasoning options
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-15 09:13:52 +00:00
marius-kilocode c6b335c6e5 Merge remote-tracking branch 'origin/main' into skinny-poetry
# Conflicts:
#	packages/opencode/src/kilocode/indexing-worker-client.ts
#	packages/opencode/test/kilocode/indexing-worktree.test.ts
2026-06-15 11:09:32 +02:00
kapelame 1511d13b3f chore: add changeset for MiniMax M-series reasoning toggle 2026-06-15 16:59:00 +08:00
Marius 14a8018795 Merge pull request #11231 from Kilo-Org/cleanup/vscode-unused-code-2
refactor(vscode): remove unused extension code
2026-06-15 10:49:19 +02:00
kilo-maintainer[bot] 69ab318178 chore: update nix node_modules hashes 2026-06-15 08:43:43 +00:00
Imanol Maiztegui f326be4b6c fix(vscode): clarify doom loop permissions (#11232) 2026-06-15 10:41:21 +02:00
chrarnoldus 214985428c chore(sdk): regenerate v2 client types
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-15 08:38:51 +00:00
kapelame c6ead9137e feat(provider): add MiniMax M-series reasoning toggle
MiniMax models (id contains "minimax") were in the variants() exclusion
list, so M3 exposed no reasoning control on any route despite supporting
the Anthropic `thinking` field (type: adaptive | disabled).

Remove minimax from the exclusion list and add instant/thinking variants,
mirroring the glm/kimi/qwen toggle added in #8484:
- @ai-sdk/anthropic (direct provider): map to native
  thinking:{type:"disabled"} / thinking:{type:"adaptive"}
- @kilocode/kilo-gateway + @openrouter/ai-sdk-provider: reuse the
  reasoning:{enabled} shape, translated by kiloProviderOptions.

Replace the obsolete "minimax returns empty object" test with coverage
for the direct-anthropic and kilo-gateway routes.
2026-06-15 16:38:18 +08:00
chrarnoldus 33937dc7bc chore(sdk): prepare v2 client regeneration
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-15 08:36:09 +00:00
Marius 64d7b1a5dd Merge pull request #11090 from Kilo-Org/marius-kilocode/kilo-opencode-v1.15.4
OpenCode v1.15.4
2026-06-15 10:30:22 +02:00
marius-kilocode 019270e407 test(cli): await ordinary workspace indexing 2026-06-15 10:28:16 +02:00
Marius 488b886ace Merge pull request #11183 from Kilo-Org/fix/vscode-redo-session-state
fix(vscode): restore session state on first redo
2026-06-15 10:19:07 +02:00
marius-kilocode 38333f62fb refactor(vscode): remove unused extension code 2026-06-15 10:13:23 +02:00
chrarnoldus 8eea56eb0b docs(ui): simplify hide prompt training description in i18n
Refactor the description for the `settings.models.hidePromptTraining` setting across all supported languages to remove the redundant "across all Kilo clients" phrase, making the text more concise.

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-15 08:07:53 +00:00
Christiaan Arnoldus ccdcc3634c Merge pull request #11121 from truffle-dev/fix/custom-provider-fetch-uses-stored-key-10139
fix(vscode): use stored API key for model fetches when editing a custom provider
2026-06-15 10:03:08 +02:00
marius-kilocode bbdc1f15b4 Merge remote-tracking branch 'origin/main' into skinny-poetry 2026-06-15 10:01:18 +02:00
marius-kilocode a61f3e66d0 Merge remote-tracking branch 'origin/main' into review/upstream-11090
# Conflicts:
#	packages/opencode/src/snapshot/index.ts
2026-06-15 10:00:37 +02:00
Christiaan Arnoldus 1648e69830 Merge branch 'main' into hide-training-models 2026-06-15 09:49:48 +02:00
Josh Lambert b0ce1b0b12 test(cli): cover reverting moved files 2026-06-14 23:04:33 -04:00
Josh Lambert 650f81c826 Merge stale PR history onto current main 2026-06-14 21:48:56 -04:00
Josh Lambert 8db7b68583 fix(cli): restore moved files during snapshot revert 2026-06-14 21:48:49 -04:00
kirillk a2185f2335 fix(jetbrains): align session transcript padding 2026-06-14 21:46:24 -04:00
kirillk 1f44036e6c fix(jetbrains): address prompt attachment review 2026-06-14 21:42:04 -04:00
kirillk 9d00369439 refactor(jetbrains): share CLI tool tag parsing 2026-06-14 21:21:43 -04:00
kirillk 90ceadd70a fix(jetbrains): retain streamed terminal blocks 2026-06-14 19:11:41 -04:00
kirillk 389ad42a7c fix(jetbrains): address attachment review feedback 2026-06-14 18:56:54 -04:00
kirillk 9eddaf1712 fix(jetbrains): highlight shell tool commands 2026-06-14 13:46:50 -04:00
kirillk 89e44f92a1 Merge remote-tracking branch 'origin/main' into truthful-allspice
# Conflicts:
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/prompt/PromptPanel.kt
2026-06-14 13:44:42 -04:00
kirillk f4843ae506 Merge remote-tracking branch 'origin/main' into tidy-antlion 2026-06-14 13:41:48 -04:00
kirillk 887f58ccc7 fix(jetbrains): render provider descriptions 2026-06-14 13:41:39 -04:00
kirillk 97041973c8 fix(jetbrains): address attachment review fixes 2026-06-14 13:41:24 -04:00
Aarav Sharma 8649ab6dcd fix(cli): improve headless docs dialog UX
- Add dialog to show docs URL when no display server is detected on Linux
- Simplify dialog to show 'No display detected' with docs URL
- Remove unnecessary browser open attempt in headless environments
- Add kilocode_change markers for new dialog component

The previous implementation tried to open a browser even on headless systems,
which would fail silently. The new dialog clearly communicates the situation
and provides the docs URL for manual access.
2026-06-13 21:00:55 -06:00
kirillk 7df78e8cfc fix(jetbrains): resolve prompt panel merge fallout 2026-06-13 14:41:13 -04:00
kirillk e9517784f0 Merge remote-tracking branch 'origin/balanced-backpack' into balanced-backpack
# Conflicts:
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/controller/SessionController.kt
#	packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle.properties
#	packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ui/PromptPanelTest.kt
2026-06-13 14:38:43 -04:00
kirillk 19842bc1aa Merge remote-tracking branch 'origin/main' into balanced-backpack
# Conflicts:
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/controller/SessionController.kt
#	packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle.properties
#	packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ui/PromptPanelTest.kt
2026-06-13 14:37:39 -04:00
kirillk 38a40836d2 fix(jetbrains): open attachments through frontend vfs 2026-06-13 14:23:21 -04:00
Thomas Brugman 9498af281c chore: merge upstream main into code edit setting 2026-06-13 19:45:18 +02:00
Aarav Sharma 0846f9e24c chore(agent): fix triage model provider path for gpt-5-nano
Corrects the model identifier to `kilo/openai/gpt-5-nano`. Previously, running the triage agent failed because the prefix was missing, throwing an Model Not Found error. Resolved by explicitly using the `kilo/openai/gpt-5-nano` target path.
2026-06-13 07:32:45 -06:00
kirillk 683c32b742 Merge remote-tracking branch 'origin/balanced-backpack' into balanced-backpack
# Conflicts:
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/MessageView.kt
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/ViewFactory.kt
#	packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ui/SessionUiUpdateTest.kt
2026-06-13 00:47:44 -04:00
kirillk 551b9e20b7 Merge remote-tracking branch 'origin/main' into balanced-backpack
# Conflicts:
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/controller/SessionController.kt
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/SessionMessageListPanel.kt
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/MessageView.kt
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/TurnView.kt
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/ViewFactory.kt
#	packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle.properties
#	packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ui/PromptPanelTest.kt
2026-06-13 00:42:49 -04:00
github-actions[bot] f8ee07f84c chore: update kilo-vscode visual regression baselines 2026-06-13 01:21:55 +00:00
Iván Uruchurtu 241f68b7ec Merge origin/main into fix/vscode-tool-call-preview-polish 2026-06-12 19:14:57 -06:00
Josh Holmer 66af690700 feat(cli): show terminal title status indicators 2026-06-12 18:41:26 -04:00
kiloconnect[bot] d0d1eee3f4 docs: document VS Code model deep link protocol handler 2026-06-12 21:09:09 +00:00
Iván Uruchurtu 8d243a35bd fix(vscode): soften tool output surfaces 2026-06-12 15:02:04 -06:00
Iván Uruchurtu d0167ebec5 fix(vscode): unify tool card rhythm 2026-06-12 14:48:19 -06:00
Vishal Kumar Singh 258b8bae13 style(vscode): format IME Enter guard files 2026-06-13 01:24:51 +05:30
Vishal Kumar Singh 8efc296ae5 chore(vscode): add changeset for IME Enter composition guard
Release notes entry for the webview-ui fix that ignores Enter during IME
composition (incl. Windows keyCode 229), per AGENTS.md / kilo-review.
2026-06-13 01:22:49 +05:30
Vishal Kumar Singh 38e27d4789 test(webview-ui): centralize IME Enter guard and add unit tests
Extract isEnterKeyCommitNotIme so PromptInput, docks, selectors, and KiloClaw
inputs share one definition. Bun tests cover Enter, composing, and keyCode 229.
2026-06-13 01:22:48 +05:30
Vishal Kumar Singh 7ada6206d6 fix(webview-ui): ignore Enter during IME composition
Treat keyCode 229 and isComposing like other stacks so Enter does not send, pick models, rename, or submit docks while an IME is confirming text.

Fixes #7216
2026-06-13 01:22:28 +05:30
kirillk 4aa2d429f9 fix(jetbrains): polish shell output layout 2026-06-12 15:48:44 -04:00
Iván Uruchurtu cd846d93d0 fix(vscode): normalize chat block output surfaces 2026-06-12 13:46:59 -06:00
Iván Uruchurtu 5a36af64df fix(vscode): align chat block preview surfaces 2026-06-12 13:29:20 -06:00
kirillk 987da27287 feat: share provider metadata 2026-06-12 15:25:46 -04:00
Catriel Müller fcb8802aa5 Merge pull request #11178 from Kilo-Org/perf/durable-snapshot-initialization
perf(cli): accelerate durable snapshot initialization
2026-06-12 16:08:51 -03:00
Marius 37a761839a Merge pull request #11184 from Kilo-Org/snow-recorder
feat: support subagent reasoning overrides
2026-06-12 20:57:57 +02:00
marius-kilocode 0f2fe8db9c perf(cli): optimize all root snapshot initialization 2026-06-12 20:38:23 +02:00
Marius 96a16102b2 fix(cli): validate external download inputs (#11179) 2026-06-12 20:37:56 +02:00
kirillk 98a14c3328 fix(jetbrains): open attachments as physical kilo files 2026-06-12 14:36:52 -04:00
marius-kilocode 0b34c14db8 perf(cli): avoid quadratic snapshot path matching 2026-06-12 20:36:05 +02:00
marius-kilocode 0e735ba7b6 test(cli): align semantic search registry coverage 2026-06-12 20:35:23 +02:00
marius-kilocode adf03a9824 feat: support subagent reasoning overrides 2026-06-12 20:35:02 +02:00
marius-kilocode 6e915601b2 fix(cli): stabilize shared worktree indexing 2026-06-12 20:28:01 +02:00
marius-kilocode 9870615130 test(cli): cover snapshot fallback and interruption edges 2026-06-12 20:13:53 +02:00
marius-kilocode 1380be41ef fix(cli): harden snapshot materialization cleanup 2026-06-12 20:13:53 +02:00
marius-kilocode c4f91031c8 test(cli): stabilize snapshot materialization checks 2026-06-12 20:13:52 +02:00
marius-kilocode f63e77153c perf(cli): accelerate durable snapshot initialization 2026-06-12 20:13:52 +02:00
marius-kilocode b9d0d838c8 style(vscode): format session event guard 2026-06-12 20:13:01 +02:00
marius-kilocode 1fd0960cbc fix(vscode): restore session state on first redo 2026-06-12 20:09:30 +02:00
marius-kilocode 973d02cfd1 feat(cli): share codebase indexes across worktrees 2026-06-12 20:08:02 +02:00
marius-kilocode 850a3e546f Merge remote-tracking branch 'origin/main' into review/upstream-11090 2026-06-12 20:03:12 +02:00
marius-kilocode 6880928994 fix: preserve latest main state after merge 2026-06-12 20:02:44 +02:00
kilo-maintainer[bot] c6d5325d65 release: v7.3.45 2026-06-12 17:50:21 +00:00
marius-kilocode 390b0c3eb7 Merge remote-tracking branch 'origin/main' into review/upstream-11090 2026-06-12 19:45:41 +02:00
marius-kilocode 06e87cf653 fix: resolve OpenCode v1.15.4 merge regressions 2026-06-12 19:45:14 +02:00
Marius 1362bcf76b Merge pull request #11169 from Kilo-Org/immediate-tricorne
fix(vscode): route questions through request directories
2026-06-12 19:36:46 +02:00
Marius 579caef24b Merge pull request #11152 from Kilo-Org/resisted-conchoraptor
fix: abort Agent Manager prompts during startup
2026-06-12 19:33:52 +02:00
kirillk f651e0819d fix(jetbrains): align code block gap with session views 2026-06-12 13:24:04 -04:00
kirillk c4aac528ef fix(jetbrains): balance markdown code padding 2026-06-12 13:16:44 -04:00
Marius f8b17e2f67 fix(jetbrains): clean up prompt enhancement lifecycle (#11176) 2026-06-12 17:10:29 +00:00
github-actions[bot] a55b661b7f chore: update kilo-vscode visual regression baselines 2026-06-12 17:03:54 +00:00
marius-kilocode fc68b934a8 fix: isolate runner startup ordering 2026-06-12 19:00:54 +02:00
Marius 21bcd4be49 Merge pull request #11175 from Kilo-Org/fix/vscode-hide-todo-outcome-warning
fix(vscode): hide unfinished todo warnings
2026-06-12 18:59:36 +02:00
marius-kilocode cacbcc6285 fix(vscode): prune stale question routes 2026-06-12 18:59:04 +02:00
kirillk bde3d6c149 fix(jetbrains): restore markdown code block defaults 2026-06-12 12:58:55 -04:00
Marius 555dc23593 feat(vscode): render submitted review comments across chat surfaces (#11173)
* feat(vscode): render submitted review comments interactively

* chore: update kilo-vscode visual regression baselines

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-06-12 16:45:47 +00:00
marius-kilocode fb62e61caf fix(vscode): hide unfinished todo warnings 2026-06-12 18:41:27 +02:00
Catriel Müller b38f87a03b Merge pull request #11138 from IamCoder18/cli-console-restart-on-port-mismatch
fix(cli): restart daemon when console requested host/port don't match
2026-06-12 13:33:36 -03:00
Marius 57f2e794ca Add agent autonomy presets (#9750)
* feat(vscode): add agent autonomy presets

* feat(work-style): simplify onboarding state to use config-only persistence and add skipped state

Replace globalState-based `onboardingShown` flag with a new `skipped`
enum value in the `agentWorkStyle` VS Code setting. This makes the
onboarding flow re-triggerable by setting the config back to `unset`
and removes the need for extension context in work-style handlers.

- Add `skipped` to WorkStyleState enum for dismissing without choosing
- Remove `onboardingShown` from messages and context provider
- Add `watchWorkStyleConfig` to reactively push changes to webview
- Extract `SidebarEmptyState` and `WelcomeEmptyState` components from
  MessageList for cleaner separation of concerns
- Pass `emptyState` prop through ChatView to allow sidebar-specific
  onboarding UI without coupling MessageList to WorkStyleProvider

* chore: update kilo-vscode visual regression baselines

* feat(work-style): refine onboarding preferences

* feat(webview): re-request work style on extensionDataReady if still loading

Add a listener for the extensionDataReady message so that the
WorkStyleProvider retries data fetching when the extension signals
readiness, preventing a stale loading state caused by race conditions
during webview initialization.

* chore: update kilo-vscode visual regression baselines

* feat(work-style): improve onboarding flow

* chore: update kilo-vscode visual regression baselines

* refactor(onboarding): extract work style display logic into pure state resolver

Decouple onboarding visibility from the persisted WorkStyleState by
introducing a dedicated `display` signal driven by
resolveWorkStyleOnboarding(). The onboarding panel now auto-persists
"skipped" on first render (one-off semantics) and dismisses itself on
newTaskRequest events. Unit tests cover the three resolution branches.

* style(welcome): widen responsive breakpoint for work-style empty state

* fix(vscode): make work style onboarding updates reliable

Persist skipped state only after onboarding is bypassed, apply presets through one rollback-aware extension operation, and use the human-in-the-loop identifier consistently.

* fix(work-style): remove duplicate payload post after apply handler

The apply handler already posts the updated work-style payload
internally, so the additional post here caused a redundant message
to be sent to the webview after each style application.

* refactor(onboarding): relocate settings access from toast into picker card

Move the "Go to Settings" call-to-action out of the post-save toast
and into a persistent inline link at the bottom of the WorkStylePicker.
Simplify the success toast to a short 2-second confirmation, tighten
choice descriptions for conciseness, drop the bash detail row, and
remove the small-viewport rule that hid mode details.

* chore: update kilo-vscode visual regression baselines

---------

Co-authored-by: Imanol Maiztegui <imanol.mzd@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-06-12 16:17:01 +00:00
Catriel Müller 04ebc7413c fix(cli): persist read TUI news 2026-06-12 13:14:02 -03:00
Catriel Müller e2b56eb925 refactor: fix test 2026-06-12 13:12:24 -03:00
kirillk 370ddce5ae fix(jetbrains): refine tool header spacing 2026-06-12 12:02:31 -04:00
marius-kilocode e2939c7557 fix(vscode): route questions through request directories 2026-06-12 17:44:55 +02:00
Marius 35a708062d Merge pull request #11165 from Kilo-Org/occipital-element
Add prompt enhancement to JetBrains
2026-06-12 17:39:58 +02:00
kirillk a73ee5329c feat(jetbrains): render shell output as markdown 2026-06-12 11:36:16 -04:00
kirillk ad3be6cae9 fix(jetbrains): restore provider catalog sections 2026-06-12 11:26:13 -04:00
Joshua Lambert 518aa7866c Merge pull request #10827 from Kilo-Org/feat/opus-vscode-deep-link
feat(kilo-vscode): support promoted model deep links
2026-06-12 11:25:14 -04:00
marius-kilocode bf6715594b feat(jetbrains): add prompt enhancement 2026-06-12 17:23:51 +02:00
Catriel Müller 680f50581a refactor: fix test 2026-06-12 12:23:11 -03:00
marius-kilocode 6a1377abaa Merge origin/main into OpenCode v1.15.4 2026-06-12 17:04:00 +02:00
Joshua Lambert 7922c92784 Merge branch 'main' into feat/opus-vscode-deep-link 2026-06-12 11:03:46 -04:00
Catriel Müller d8671cc393 refactor: improve flaky test 2026-06-12 11:56:47 -03:00
Catriel Müller be0d5ef3bb Merge branch 'main' into cli-console-restart-on-port-mismatch 2026-06-12 11:33:46 -03:00
Catriel Müller 5413c807de refactor: refactor solution to include daemon command 2026-06-12 11:32:16 -03:00
Christiaan Arnoldus 6b3b26567d Merge branch 'main' into fix/custom-provider-fetch-uses-stored-key-10139 2026-06-12 16:21:55 +02:00
marius-kilocode 76518dd24f Merge origin/main into OpenCode v1.15.4 2026-06-12 16:19:19 +02:00
Johnny Eric Amancio b90ab85c3b ci: clarify auto-close reopen message (#11163) 2026-06-12 16:18:45 +02:00
marius-kilocode 941accc2fc Merge origin/main into OpenCode v1.15.4 2026-06-12 16:10:38 +02:00
kilo-maintainer[bot] 4711209072 release: v7.3.44 2026-06-12 13:51:52 +00:00
Catriel Müller 0edfcf3e3c Merge pull request #11147 from Kilo-Org/catrielmuller/kilo-console-ui-improvements
feat: improve Kilo Console worktree review
2026-06-12 10:34:37 -03:00
Imanol Maiztegui 9df58d79ab fix(vscode): correct changeset package name (#11162) 2026-06-12 15:25:10 +02:00
Catriel Müller 4b5e7e6229 refactor: fix merge 2026-06-12 10:17:51 -03:00
Catriel Müller ef017c528e Merge branch 'main' into cli-console-restart-on-port-mismatch 2026-06-12 10:10:59 -03:00
Catriel Müller 91eb3ed444 Merge pull request #11148 from senguangd/fix/powershell-encoding
fix(shell): use EncodedCommand for PowerShell to fix Windows encoding issues
2026-06-12 10:07:58 -03:00
Catriel Müller 2f7657fd83 Merge pull request #11143 from IamCoder18/feat/cli-port-discovery-warning
feat(cli): warn when --port is outside discovery range
2026-06-12 09:42:13 -03:00
Catriel Müller c220a75525 refactor: isolate the changes inside of the kilo folders 2026-06-12 09:40:39 -03:00
Catriel Müller 303b67a265 refactor: fix kilo marker 2026-06-12 09:30:00 -03:00
kiloconnect[bot] 5e02f67cb7 feat(cli): extend dead-code track to flag bloated functions and files 2026-06-12 12:20:26 +00:00
kiloconnect[bot] ba5f681b38 fix(cli): resolve conflicting instructions in local-review prompt files
- Replace 'Review only these things:' with an explicit statement that
  the six tracks are permitted topics but not all are spawned for every
  review, removing the contradiction with the tiered sub-agent system
- Align track names (duplication, dead code) between Review Focus and
  Required Workflow step 3 so both sections use the same identifiers
- Scope the deploy safety, duplication, and dead code rules to their
  respective tracks with 'apply only when this track is active' so they
  don't imply mandatory coverage when those tracks are not spawned
2026-06-12 11:35:58 +00:00
Catriel Müller eb4d2e6ff6 fix: fix kilo pierre theme 2026-06-12 07:49:44 -03:00
Marius 9129844225 perf(agent-manager): virtualize expanded diff reviews (#11154)
* perf(agent-manager): reuse metadata while loading diffs

* perf(agent-manager): virtualize expanded diff reviews

* fix(agent-manager): reset virtual rows between reviews

* test(agent-manager): preserve review comment scrolling

* test(agent-manager): explain review context reset

* chore: update kilo-vscode visual regression baselines

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-06-12 10:47:33 +00:00
Marius 78d83c0651 fix(cli): inherit reasoning in task subagents (#11160) 2026-06-12 10:45:36 +00:00
Imanol Maiztegui 7955f865d8 Render streaming assistant rows outside virtualizer (#11153)
* fix(vscode): render streaming assistant rows outside virtualizer to prevent layout jumps

Replace the `keepMounted` index-based approach with a direct rendering
suffix for active assistant turns. Rows belonging to the streaming turn
are partitioned out of the virtualizer and rendered as plain DOM elements,
eliminating measurement instability caused by rapidly growing content
while preserving virtualized history for completed turns.

* Update packages/kilo-vscode/webview-ui/src/components/chat/MessageList.tsx

Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>

* fix(vscode): complete direct row ID rename

* refactor(transcript-rows): restrict direct partition to only the latest visible turn

Simplify partitionRows so that older streaming turns are no longer
retained in the direct (non-virtualized) output once a newer turn
becomes visible. The lookup now checks only the final row's turn
against the direct set, ensuring completed assistant turns move back
into the virtualizer immediately when the conversation advances.

---------

Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>
2026-06-12 12:16:05 +02:00
chrarnoldus 4dc1fd9d86 fix: share prompt-training model filtering
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-12 10:11:03 +00:00
Catriel Müller 65e6d0c8ed refactor: address comments 2026-06-12 06:57:45 -03:00
Marius 0d026ef4cf Merge pull request #11104 from Kilo-Org/flicker-hockey
fix(vscode): speed up subagent transcript loading
2026-06-12 11:52:16 +02:00
github-actions[bot] 27624ce2cb chore: update kilo-vscode visual regression baselines 2026-06-12 09:41:52 +00:00
chrarnoldus 9b94818497 refactor(vscode): isolate gateway model filtering
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-12 09:39:01 +00:00
chrarnoldus 8ff8371176 feat(vscode): hide prompt-training gateway models
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-12 09:37:33 +00:00
senguangd 846505368b Merge branch 'main' into fix/powershell-encoding 2026-06-12 17:07:45 +08:00
kiloconnect[bot] 1af5639350 fix(cli): scale local-review sub-agents based on diff size and complexity
Small diffs (<100 LOC, ≤3 files) now use 1-2 sub-agents instead of always
spawning six, reducing cost for simple changes. Medium diffs (100-300 LOC)
use 3-4, and large/complex diffs retain the full six-agent workflow.
2026-06-12 08:49:07 +00:00
Remon Oldenbeuving 5128211fa6 Merge pull request #11144 from Kilo-Org/feat/terminal-integrated-font
feat(vscode): use terminal.integrated font settings in Agent Manager xterm
2026-06-12 10:43:53 +02:00
Marius 84a62a12c6 Merge pull request #11151 from Kilo-Org/fix/vscode-binary-diffs
fix(vscode): keep binary diffs collapsed
2026-06-12 10:40:56 +02:00
marius-kilocode 77fe7c9e3f fix(vscode): keep binary diffs collapsed 2026-06-12 10:25:43 +02:00
Kirill Kalishev 68fd8ccce4 fix(vscode): route permission replies through request directories (#11133)
* fix(vscode): route permission replies through request directories

* fix(vscode): preserve permission routes during recovery

---------

Co-authored-by: marius-kilocode <marius@kilocode.ai>
2026-06-12 07:59:02 +00:00
marius-kilocode b23d3dfd75 fix: abort prompts during startup 2026-06-12 09:57:49 +02:00
marius-kilocode 5ebd5fea99 refactor(vscode): focus notifications on sounds 2026-06-12 09:30:07 +02:00
marius-kilocode a5f1514685 test(vscode): isolate terminal font defaults 2026-06-12 09:08:04 +02:00
marius-kilocode 3cd4628a52 fix(vscode): complete Agent Manager terminal font sync 2026-06-12 08:55:45 +02:00
marius-kilocode a09dafe61b fix(vscode): abort moved active sessions 2026-06-12 08:54:50 +02:00
Senguang Ding 6e0639b8c0 fix(shell): use EncodedCommand for PowerShell to fix Windows encoding issues
On Windows, PowerShell commands with non-ASCII characters (e.g., Chinese, Japanese, Cyrillic) produce garbled output (mojibake) because the console encoding defaults to the system OEM code page rather than UTF-8.

Switch from `-Command` to `-EncodedCommand` with a Base64-encoded UTF-16LE payload that explicitly sets `[Console]::InputEncoding`, `[Console]::OutputEncoding`, and `$OutputEncoding` to UTF-8 before executing the original command. This ensures both input and output are properly encoded as UTF-8 regardless of the system locale.

Fixes #4138
Fixes #2422
Fixes #2939
2026-06-12 12:56:10 +08:00
Catriel Müller 9a187d5aad feat: improve Kilo Console project review 2026-06-12 01:08:09 -03:00
Iván Uruchurtu eaece449b1 chore: trim tool preview PR scope 2026-06-11 21:09:35 -06:00
Aarav Sharma 12144cf827 chore: add changeset for port discovery warning 2026-06-11 20:54:28 -06:00
Aarav Sharma e35430580b chore: add changeset for console restart fix 2026-06-11 20:52:43 -06:00
Catriel Müller 35dd730dcc feat: kilo console dialogs 2026-06-11 23:18:42 -03:00
Iván Uruchurtu e04593219a style(vscode): format tool call preview files 2026-06-11 20:05:32 -06:00
Aarav Sharma 63294a4b2a fix(cli): restart daemon when console requested host/port don't match
When `kilo console --port 4321` reuses an already-running daemon on a

different port (e.g. 4097), the new options were silently ignored. Now

`kilo console` checks if the running daemon matches the requested

host/port, and restarts if they differ.

The restart only occurs when explicit `--port` or `--hostname` options

are provided via CLI, not when using default values.
2026-06-11 19:51:19 -06:00
Iván Uruchurtu c9c4c794ae test(vscode): update shell preview contract 2026-06-11 19:50:25 -06:00
github-actions[bot] 0277983d6f chore: update kilo-vscode visual regression baselines 2026-06-12 01:41:08 +00:00
Iván Uruchurtu 481f8361cf fix(vscode): polish chat tool call previews 2026-06-11 19:37:26 -06:00
Aarav Sharma 4ba2bac7a2 feat(cli): warn when --port is outside discovery range
Print a yellow non-fatal warning when kilo console or kilo daemon
start/restart is invoked with an explicit --port outside 4097-4116.
Auto-discovery only scans that window, so an out-of-range port can
silently break later manual or auto-connect attempts.

Implementation stays entirely in Kilo-owned files to avoid touching
upstream shared code:

- Added packages/opencode/src/kilocode/cli/port-warning.ts helper
  exporting warnPort(port), which skips port 0 (auto-pick) and emits
  a yellow console.warn when the explicit port is outside
  Daemon.PortRange.
- Hooks the helper from console.ts and daemon.ts (start/restart)

The command still succeeds; the warning is informational only.
2026-06-11 19:14:39 -06:00
kirillk 709a53cda1 fix(jetbrains): keep kilo vfs editor state backend-owned 2026-06-11 19:22:13 -04:00
kirillk ef7aa7fdf8 fix(jetbrains): stabilize provider settings actions 2026-06-11 18:49:45 -04:00
kirillk 5058050167 fix(jetbrains): polish session markdown styling 2026-06-11 18:37:56 -04:00
Josh Lambert 14d0cc2b96 refactor(vscode): reuse model selection for deep links 2026-06-11 17:19:49 -04:00
kiloconnect[bot] 287f75aa2b feat(vscode): use terminal.integrated font settings in Agent Manager xterm terminals
Reads terminal.integrated.fontFamily and terminal.integrated.fontSize (with
editor font fallback) instead of the editor font CSS var. A config watcher
broadcasts fontChanged messages so live terminals update without a reload.
Nerd Font glyphs now render correctly in Agent Manager terminal tabs.
2026-06-11 21:16:26 +00:00
kirillk abacee3099 fix(jetbrains): adjust session inner padding 2026-06-11 16:40:35 -04:00
Catriel Müller 43f783b7dc Merge pull request #11139 from Kilo-Org/catrielmuller/fix-cli-upstream-jun-11
fix(cli): restore Kilo CLI initialization after upstream merge
2026-06-11 17:27:37 -03:00
Catriel Müller ff7537a9da Merge pull request #10866 from Kilo-Org/fix/10841-indexing-sidebar
fix(cli): move indexing status to sidebar
2026-06-11 17:27:10 -03:00
Johnny Eric Amancio 50b249e498 fix: improve auto close filter logic (#11119) 2026-06-11 20:26:37 +00:00
Catriel Müller 72266359d4 chore(cli): add release note for restored commands 2026-06-11 16:34:43 -03:00
Catriel Müller 988cb02fe8 fix: fix kilo cli init 2026-06-11 16:33:07 -03:00
Catriel Müller 71cc624f59 fix: fix test 2026-06-11 14:59:37 -03:00
Catriel Müller 4e0c7248a9 fix: fix facades 2026-06-11 14:37:18 -03:00
github-actions[bot] e41da65205 chore: update kilo-vscode visual regression baselines 2026-06-11 17:25:12 +00:00
Catriel Müller a4952b0836 fix: fix tests 2026-06-11 14:19:49 -03:00
kirillk b6bbb839e6 fix(jetbrains): add provider settings disconnect flow 2026-06-11 13:10:58 -04:00
kirillk c47cb365ce fix(jetbrains): simplify prompt input chrome 2026-06-11 13:09:21 -04:00
kirillk e06aa64d8d fix(jetbrains): polish session header spacing 2026-06-11 12:52:56 -04:00
Thomas Brugman 622658efae fix(cli): restore prompt loop formatting 2026-06-11 18:39:47 +02:00
Thomas Brugman b4aa8f1a71 fix(cli): avoid unannotated shared formatting churn 2026-06-11 18:35:27 +02:00
Thomas Brugman 55f1630413 Merge upstream/main into codex/add-default-diff-expansion-setting 2026-06-11 18:20:47 +02:00
Catriel Müller d5112edf90 fix: code indexing on kilo core 2026-06-11 12:29:01 -03:00
Catriel Müller 35e3cd1803 fix(cli): log indexing poll failures 2026-06-11 12:23:56 -03:00
Catriel Müller 22149292ea Merge pull request #11124 from Kilo-Org/clover-tuck
fix: prevent Bun downgrades during upstream merges
2026-06-11 11:46:41 -03:00
Marius 286d99cc38 Merge pull request #11126 from Kilo-Org/strong-question
fix(agent-manager): avoid blocked native autofocus
2026-06-11 16:34:11 +02:00
Josh Lambert 4c5b17a0e5 refactor(vscode): simplify model deep link handling 2026-06-11 10:33:06 -04:00
Catriel Müller 2e4b59399a fix: address Bun merge validation review 2026-06-11 11:31:04 -03:00
marius-kilocode 50dbbb30d1 fix(agent-manager): avoid blocked native autofocus 2026-06-11 16:19:23 +02:00
Marius 9c0e4f76e8 Merge pull request #10997 from Kilo-Org/telling-angora
fix(vscode): disable Copilot in extension dev host
2026-06-11 16:00:27 +02:00
Marius b64d7e0095 fix(agent-manager): preserve named worktrees on collision (#11001)
* fix(agent-manager): preserve named worktrees on collision

* fix(agent-manager): keep collision fallback deterministic

* style(agent-manager): format branch resolver
2026-06-11 15:56:14 +02:00
Marius cdef15c6ae Merge pull request #11075 from Kilo-Org/canyon-stage
perf: speed up large session forks
2026-06-11 15:55:07 +02:00
Marius 8a5a64becf Merge pull request #11074 from Kilo-Org/adjoining-quality
perf(agent-manager): overlap MCP startup with worktree creation
2026-06-11 15:52:04 +02:00
Catriel Müller ea92eb2244 chore: remove implementation plan 2026-06-11 10:46:28 -03:00
Catriel Müller fee5cf441a fix: prevent Bun downgrades during upstream merges 2026-06-11 10:44:33 -03:00
kirillk 517777da63 Merge remote-tracking branch 'origin/main' into balanced-backpack 2026-06-11 09:33:44 -04:00
Christiaan Arnoldus f1d07ad375 Merge pull request #11107 from Kilo-Org/docs/update-gateway-byok-providers
docs: update gateway BYOK providers
2026-06-11 15:20:09 +02:00
truffle 15ddb4122e fix(vscode): use stored API key for model fetches when editing a custom provider
Keys are stripped from provider payloads before they reach the webview,
so the model-fetch request for an existing provider always went out
unauthenticated and gated endpoints returned 401. Retain providerID->key
extension-side in fetchProviderData, send providerID from the dialog when
the key field is untouched, and resolve the stored key in the fetch
handler — only when the requested URL matches the provider's configured
baseURL, so a stored secret can never be redirected to a different host.

Addresses the API-key half of #10139.
2026-06-11 13:15:41 +00:00
kilo-maintainer[bot] e2b4be5bf8 chore: update nix node_modules hashes 2026-06-11 13:15:23 +00:00
kirillk a4b58411be Merge remote-tracking branch 'origin/main' into truthful-allspice 2026-06-11 09:09:45 -04:00
Joshua Lambert 83973c1217 Merge branch 'main' into docs/update-gateway-byok-providers 2026-06-11 09:06:02 -04:00
Marius fe4a1ffd70 Merge pull request #11118 from Kilo-Org/carnation-trilby
fix(vscode): dismiss stale permission responses
2026-06-11 15:02:58 +02:00
Marius d8457d28ad Merge pull request #11117 from Kilo-Org/fix/recover-vercel-provider-upgrades
fix(cli): recover Cerebras, xAI, and OpenAI-compatible SDK upgrades
2026-06-11 15:01:01 +02:00
marius-kilocode 143ae8e992 fix(vscode): dismiss stale permission responses 2026-06-11 14:46:57 +02:00
marius-kilocode b75af0de88 fix(cli): recover Vercel AI SDK provider upgrades 2026-06-11 14:44:04 +02:00
Marius d245b7c20c Merge pull request #11102 from Kilo-Org/fix-cli-notification-duplication
fix(cli): consolidate TUI notifications
2026-06-11 14:42:41 +02:00
marius-kilocode 6ae28b5504 Merge branch 'main' into review/upstream-11090 2026-06-11 14:18:08 +02:00
marius-kilocode 351741f912 docs(kilo-docs): document CLI attention sounds 2026-06-11 14:04:00 +02:00
chrarnoldus 28df9a416b docs: retain Codestral BYOK option
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-11 11:56:24 +00:00
Christiaan Arnoldus f150b8e8b9 Merge branch 'main' into docs/update-gateway-byok-providers 2026-06-11 13:36:10 +02:00
Imanol Maiztegui 4a953bb242 refactor(ui): extract user activity tracking from auto-scroll into dedicated module (#11115)
Split scroll-related concerns into smaller, focused units:
- Move user interaction detection (pointer, key, touch, wheel) into
  a new `createUserActivity` hook with mark/consume/isRecent API
- Extract `distanceFromBottom` and `canScroll` as pure utility helpers
- Simplify `createAutoScroll` by replacing inline state and event
  handlers with the composable user activity tracker
- Rename internal actions for clarity (scrollToBottom → follow/force)
2026-06-11 13:33:10 +02:00
Marius 9eac326768 Merge pull request #11111 from Kilo-Org/chore/celebrate-pr-11111
chore: celebrate PR 11111
2026-06-11 13:12:04 +02:00
marius-kilocode c758008181 fix(cli): restore local console command 2026-06-11 12:24:15 +02:00
marius-kilocode 5935fce9d5 fix(vscode): count pending submission time 2026-06-11 12:22:33 +02:00
chrarnoldus 797c3df265 docs: order gateway BYOK providers
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-11 10:15:54 +00:00
Marius 8b2a100084 fix(agent-manager): show local prompt feedback immediately (#11103)
* fix(agent-manager): show initial prompt feedback immediately

* chore: update kilo-vscode visual regression baselines

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-06-11 10:11:22 +00:00
Marius 13a3cf55c4 docs: update Kilo copyright year 2026-06-11 12:10:47 +02:00
Marius 604e6408fa chore: remove PR milestone marker 2026-06-11 12:08:53 +02:00
Marius c643013162 chore: celebrate PR 11111 2026-06-11 12:07:44 +02:00
chrarnoldus 1d6fde23f6 docs: update gateway BYOK providers
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-11 10:05:25 +00:00
Marius 294c532f6a fix(cli): prevent subagents asking questions (#11101) 2026-06-11 11:59:40 +02:00
marius-kilocode 514af4c361 fix(vscode): speed up subagent transcript loading
Paginate child histories and preserve reasoning updates that arrive while their initial transcript loads.
2026-06-11 11:53:44 +02:00
marius-kilocode d80c99b4ed fix(vscode): make notifications explicit opt-ins 2026-06-11 11:53:40 +02:00
marius-kilocode 8a727084ae fix(cli): consolidate TUI notifications 2026-06-11 11:52:00 +02:00
Marius 237fd10602 Merge pull request #11097 from Kilo-Org/fix/remove-vscode-paste-summary
fix(vscode): remove unsupported paste summary setting
2026-06-11 11:50:57 +02:00
Marius c922ca7f91 Merge pull request #11100 from Kilo-Org/neighborly-visitor
fix(vscode): keep HTTP status with error title
2026-06-11 11:23:29 +02:00
github-actions[bot] 2e9d1f7b77 chore: update kilo-vscode visual regression baselines 2026-06-11 08:49:03 +00:00
marius-kilocode 5f7e5e8bd5 fix(ui): align tool error text baselines 2026-06-11 10:45:27 +02:00
kilo-code-bot[bot] 5bc8df843a fix(cli): cap cloud-managed shell command timeouts (#10478)
* fix(cli): cap cloud-managed shell command timeouts

* refactor(cli): isolate hosted shell timeout policy

* chore(cli): annotate hosted timeout message

* test(cli): provide runtime flags to timeout coverage

---------

Co-authored-by: Evgeny Shurakov <eshurakov@users.noreply.github.com>
2026-06-11 10:40:17 +02:00
marius-kilocode 5b38d299c4 fix(vscode): keep HTTP status with error title 2026-06-11 10:29:30 +02:00
marius-kilocode 9162067743 fix(vscode): suppress focused session sounds 2026-06-11 10:22:21 +02:00
marius-kilocode b0ec91cef4 feat(vscode): add attention notifications 2026-06-11 10:06:23 +02:00
Christiaan Arnoldus f31d370ea1 Merge pull request #11085 from Kilo-Org/indicate-empty-model-list
Indicate when the model list is empty
2026-06-11 10:02:25 +02:00
marius-kilocode f8ec1dc7a8 fix(vscode): remove unsupported paste summary setting 2026-06-11 09:37:44 +02:00
kilo-maintainer[bot] 13fe106872 chore: update nix node_modules hashes 2026-06-11 07:26:56 +00:00
Christiaan Arnoldus d52fb8003a Merge pull request #11091 from Kilo-Org/fix/question-reply-locks
fix: prevent duplicate streamed tool calls
2026-06-11 09:16:34 +02:00
Joshua Lambert b06d91de45 Merge branch 'main' into feat/opus-vscode-deep-link 2026-06-11 00:28:56 -04:00
Joshua Lambert b16647471d Merge branch 'main' into fix/question-reply-locks 2026-06-10 21:12:26 -04:00
Joshua Lambert 3f9b5bed31 Merge pull request #11051 from Kilo-Org/fix/question-custom-answer-selection
fix(vscode): improve custom question answers
2026-06-10 21:12:10 -04:00
kirillk bb31723e73 fix(jetbrains): polish session header controls 2026-06-10 20:21:39 -04:00
Joshua Lambert f93fd619bd Merge branch 'main' into fix/question-custom-answer-selection 2026-06-10 19:54:56 -04:00
kirillk 7749efdbf2 fix(jetbrains): order editor disposal fallback 2026-06-10 18:48:33 -04:00
kirillk 3dc1ac5f51 fix(jetbrains): stabilize Kilo VFS keys 2026-06-10 18:44:58 -04:00
Joshua Lambert f798faf720 Merge branch 'main' into fix/question-reply-locks 2026-06-10 18:15:40 -04:00
Josh Lambert a58ec826d3 chore(gateway): remove provider regression test 2026-06-10 18:04:27 -04:00
Josh Lambert 3f9c025bbc fix(gateway): prevent duplicate streamed tool calls 2026-06-10 17:05:06 -04:00
Colin McDonnell 34f94e3b16 fix: bump @openrouter/ai-sdk-provider to 2.9.0 (#30800) 2026-06-10 17:02:32 -04:00
Marius 77ad0bdd9c Merge pull request #11094 from Kilo-Org/perf-opencode-transcript-model
perf(vscode): virtualize bounded transcript rows
2026-06-10 22:46:06 +02:00
marius-kilocode a823944798 style(vscode): format transcript virtualization 2026-06-10 22:08:08 +02:00
marius-kilocode cfb24f7db3 docs(vscode): describe shared transcript performance 2026-06-10 22:01:38 +02:00
marius-kilocode 4acc1f8bcc adopt row based virtualization 2026-06-10 21:47:13 +02:00
Christiaan Arnoldus 2aeb55934c Merge pull request #11081 from Kilo-Org/fix/model-selector-metadata-badges
fix: respect model badge metadata
2026-06-10 21:17:52 +02:00
Christiaan Arnoldus df0b145b35 Merge branch 'main' into fix/model-selector-metadata-badges 2026-06-10 20:04:19 +02:00
marius-kilocode b5a67e5e0f Merge remote-tracking branch 'origin/main' into marius-kilocode/kilo-opencode-v1.15.4 2026-06-10 20:03:59 +02:00
marius-kilocode 72a11b02af resolve merge conflicts 2026-06-10 20:03:42 +02:00
Josh Lambert c17588304b fix(vscode): simplify custom answer actions 2026-06-10 13:53:55 -04:00
Josh Lambert 57bef8ae68 fix(vscode): prevent question reply locks 2026-06-10 13:52:07 -04:00
sylwester-liljegren f180658b99 feat(vscode): add category labels and clarify command titles in packa… (#10084)
* feat(vscode): add category labels and clarify command titles in package.json

Add "Kilo Code" category to all command contributions for better
organization in the VS Code command palette. Clarify the "Open in Tab"
command title to be more descriptive instead of generic "Kilo Code".

This improves discoverability and user experience when browsing available
commands in VS Code.

* chore: add command palette changeset

---------

Co-authored-by: Sylwester Liljegren <sylwester.liljegren@softronic.se>
Co-authored-by: Johnny Amancio <johnnyeric@gmail.com>
2026-06-10 19:35:24 +02:00
Marius 6addc10c3e Merge pull request #11087 from Kilo-Org/fix-vscode-shared-session-db
fix(vscode): restore sessions after channel database regression
2026-06-10 19:15:12 +02:00
Marius e59f8863f6 Merge pull request #11086 from Kilo-Org/necessary-open
chore: remove codesearch tool
2026-06-10 18:48:15 +02:00
marius-kilocode 5969a4c210 fix(vscode): restore shared session database 2026-06-10 18:45:01 +02:00
chrarnoldus a367fa1e14 fix(cli): scope empty model warning to provider
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-10 16:43:48 +00:00
chrarnoldus c4d5f20964 fix(vscode): show training badge for paid models
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-10 16:42:34 +00:00
Marius 7edba02494 Merge pull request #11082 from Kilo-Org/feat/lancedb-default
feat: default semantic search to LanceDB
2026-06-10 18:40:03 +02:00
marius-kilocode e7d0f9ec78 chore: remove codesearch tool 2026-06-10 18:32:06 +02:00
Christiaan Arnoldus 81de7502ae Merge branch 'main' into fix/model-selector-metadata-badges 2026-06-10 18:24:34 +02:00
Catriel Müller 5d04b253b3 Merge pull request #10922 from Kilo-Org/laced-secure
fix(cli): avoid repeat compaction from stale totals
2026-06-10 13:15:46 -03:00
Josh Lambert 7b54044cce test(vscode): remove question dock browser spec 2026-06-10 11:58:33 -04:00
github-actions[bot] f6e18b7668 chore: update kilo-vscode visual regression baselines 2026-06-10 15:53:51 +00:00
marius-kilocode a16e82a77a feat: default semantic search to LanceDB 2026-06-10 17:47:57 +02:00
Josh Lambert f0a9977828 refactor(vscode): clarify custom answer selection 2026-06-10 11:47:22 -04:00
marius-kilocode 10f48c24c6 merge: record upstream v1.15.4 2026-06-10 17:38:11 +02:00
marius-kilocode 00554bd24c refactor: kilo compat for v1.15.4 2026-06-10 17:38:09 +02:00
Thomas Brugman 47467425bf Merge upstream/main into codex/add-default-diff-expansion-setting 2026-06-10 17:17:34 +02:00
chrarnoldus 2a6596b0c5 fix(cli): indicate an empty model list
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-10 15:16:00 +00:00
chrarnoldus c5ffbd1aed chore(sdk): regenerate model metadata types
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-10 15:13:41 +00:00
chrarnoldus 9c279a16b4 fix: respect model badge metadata
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-10 15:09:51 +00:00
Josh Lambert 94e8aba9f4 refactor(vscode): derive custom question selection 2026-06-10 11:05:59 -04:00
Marius 9e2994ca6b Merge pull request #11006 from Kilo-Org/intriguing-hurricane
fix(cli): refresh connected provider models
2026-06-10 16:50:35 +02:00
marius-kilocode fd566bbc69 fix(cli): detach background task references 2026-06-10 16:46:56 +02:00
marius-kilocode 31eb7e1c08 test(vscode): avoid TSX import in hydration unit test 2026-06-10 16:46:56 +02:00
marius-kilocode a86f60dc4f fix(cli): adapt fork writer to sync service 2026-06-10 16:46:56 +02:00
marius-kilocode e17ce0c9ec perf: speed up large session forks 2026-06-10 16:46:56 +02:00
Catriel Müller bc3af9a145 fix(cli): avoid repeat compaction from stale totals 2026-06-10 11:43:32 -03:00
Thomas Brugman e335f97856 Add code edit block display setting 2026-06-10 16:40:15 +02:00
kirillk 71484fb6c1 Merge remote-tracking branch 'origin/main' into balanced-backpack
# Conflicts:
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/SessionMessageListPanel.kt
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/MessageView.kt
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/TurnView.kt
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/ViewFactory.kt
2026-06-10 09:32:32 -04:00
Marius 5637375874 Merge pull request #11072 from Kilo-Org/curious-swordtail
perf(cli): seed Agent Manager snapshots from worktree index
2026-06-10 15:27:05 +02:00
kirillk 2f9c6ecdd0 feat(jetbrains): open embedded attachments in editor tabs 2026-06-10 09:24:14 -04:00
marius-kilocode 884602b4d3 test(cli): normalize snapshot fixture line endings 2026-06-10 15:12:14 +02:00
Marius a261b7e016 chore: track local plans (#11062) 2026-06-10 08:50:13 -04:00
Josh Lambert 69f193d3f8 fix(vscode): submit selected question option 2026-06-10 08:46:47 -04:00
Josh Lambert 856fc66656 fix(vscode): sync custom question selection 2026-06-10 08:46:47 -04:00
kilo-maintainer[bot] 8df2f1e072 chore: update nix node_modules hashes 2026-06-10 12:43:59 +00:00
marius-kilocode c1166dd562 fix(cli): align snapshot seed with process runner 2026-06-10 14:41:32 +02:00
marius-kilocode 915ecfbefb perf(agent-manager): overlap MCP startup with worktree creation 2026-06-10 14:39:07 +02:00
marius-kilocode 69a0b384e6 fix(cli): refresh connected provider models 2026-06-10 14:37:40 +02:00
marius-kilocode 6920f37b77 perf(cli): seed Agent Manager snapshots from worktree index 2026-06-10 14:31:58 +02:00
Marius a17c167c03 Merge pull request #11031 from Kilo-Org/marius-kilocode/kilo-opencode-v1.14.51
OpenCode v1.14.51
2026-06-10 14:27:20 +02:00
kilo-maintainer[bot] a7a18b2e25 release: v7.3.42 2026-06-10 12:26:35 +00:00
Imanol Maiztegui b98fb9afdb fix(kilo-ui): preserve paused chat scroll position during non-overflow layouts (#11067)
Remove logic that automatically unpaused scroll when the container
temporarily stopped overflowing. Previously, layout changes that reduced
content height below the viewport would reset the userScrolled flag,
causing the chat to jump back to the bottom when the user had
intentionally scrolled up.

The stop/pause function now accepts a force parameter to bypass the
canScroll check, ensuring an explicit user pause is never cleared by
transient layout changes.
2026-06-10 13:51:54 +02:00
marius-kilocode b2798ef41e fix(vscode): preserve partial session updates 2026-06-10 13:47:46 +02:00
Catriel Müller 45c4902aae Merge pull request #11050 from Kilo-Org/tattered-echinodon
fix(cli): keep Console terminals in TUI mode
2026-06-10 08:38:48 -03:00
Imanol Maiztegui 339c70a947 fix(ui): pause chat auto-scroll on upward wheel over nested content (#11065)
Remove the `isNested` helper that previously allowed upward scrolling
inside nested scrollable regions (tool output, code blocks) without
disabling auto-scroll. Now any upward wheel input anywhere in the
transcript immediately pauses auto-scroll, reflecting the user's intent
to review earlier content even when a nested region would consume the
event.

The wheel handler is registered with `capture: true` so it fires before
nested elements can intercept the event, and `markUser` no longer
triggers on wheel events since the capture handler handles that intent.
2026-06-10 12:53:44 +02:00
Marius 1a7cae4266 Merge pull request #11063 from Kilo-Org/chocolate-lunaria
feat(agent-manager): add fork action to completed sessions
2026-06-10 12:52:13 +02:00
Marian Alexandru Alecu 9581c6afee Merge pull request #11064 from Kilo-Org/fix/review-prompt
fix(cli): allow review follow-up fixes
2026-06-10 13:40:00 +03:00
Alex Alecu db7707d49c fix(cli): allow review follow-up fixes 2026-06-10 13:20:20 +03:00
github-actions[bot] 8d248e9e34 chore: update kilo-vscode visual regression baselines 2026-06-10 10:15:33 +00:00
marius-kilocode 262ce0896d chore(agent-manager): remove PR screenshot asset 2026-06-10 12:12:40 +02:00
marius-kilocode 4446102dac feat(agent-manager): add completed session fork action 2026-06-10 12:10:17 +02:00
marius-kilocode abf9f79868 refactor(vscode): keep Copilot dev setting focused 2026-06-10 11:05:48 +02:00
marius-kilocode bbfd59b85c fix(cli): preserve Scout code search 2026-06-10 11:05:09 +02:00
marius-kilocode d6cde9fc4a Merge remote-tracking branch 'origin/main' into marius-kilocode/kilo-opencode-v1.14.51 2026-06-10 10:49:54 +02:00
marius-kilocode 28a26b11c1 fix(cli): restore TUI streaming and indexing layout 2026-06-10 10:46:18 +02:00
Joshua Lambert c7a06d2f4b Merge pull request #11016 from Kilo-Org/docs/accept-http-202-links
fix(kilo-docs): accept HTTP 202 links
2026-06-10 04:13:03 -04:00
Catriel Müller 8535d3d51b fix(cli): keep Console terminals in TUI mode 2026-06-10 00:29:16 -03:00
Joshua Lambert 729c06204e Merge pull request #10751 from Kilo-Org/fix/session-ingest-env-auth
fix(cli): sync sessions authenticated by KILO_API_KEY
2026-06-09 16:34:59 -04:00
Kirill Kalishev 419510cf5b Merge pull request #11045 from Kilo-Org/jetbrains/release/v7.0.1-rc.8
release(jetbrains): v7.0.1-rc.8
2026-06-09 15:14:17 -04:00
kirillk 22310e1dbb Merge branch 'glaze-fireplace' into balanced-backpack 2026-06-09 14:46:20 -04:00
Kirill Kalishev 6563aa789a docs(jetbrains): edit changelog for v7.0.1-rc.8 2026-06-09 14:43:47 -04:00
Kirill Kalishev 4bece69535 docs(jetbrains): edit changelog for v7.0.1-rc.8 2026-06-09 14:42:25 -04:00
Kirill Kalishev ac1451f130 docs(jetbrains): edit changelog for v7.0.1-rc.8 2026-06-09 14:39:16 -04:00
kilo-maintainer[bot] 707917c7f5 release(jetbrains): v7.0.1-rc.8 2026-06-09 18:35:29 +00:00
Kirill Kalishev 08c0ef63eb Merge pull request #11015 from Kilo-Org/tide-clipper
Improve JetBrains session usability
2026-06-09 14:26:02 -04:00
kirillk 9f8f698e38 fix(jetbrains): refine prompt attachment rendering 2026-06-09 14:15:34 -04:00
kirillk 5792f44e41 fix(jetbrains): release session UI editors in tests 2026-06-09 14:00:28 -04:00
kirillk c90846a989 fix(jetbrains): preserve session scroll intent 2026-06-09 14:00:28 -04:00
kirillk 52dfa5453e fix(jetbrains): sanitize read payloads in parser 2026-06-09 13:22:00 -04:00
Kirill Kalishev bfa719af55 Merge branch 'main' into tide-clipper 2026-06-09 12:58:53 -04:00
Joshua Lambert 9ae35e869d Merge pull request #11011 from Kilo-Org/revert/pr-10924-session-export
revert(cli): re-enable session export
2026-06-09 12:18:47 -04:00
kirillk 49339a2583 feat(jetbrains): support pasting prompt attachments 2026-06-09 11:30:21 -04:00
kirillk b7d4f7efed style(jetbrains): compact session spacing 2026-06-09 11:18:20 -04:00
kirillk 3658deaf4e fix(jetbrains): keep completed reasoning expanded 2026-06-09 10:54:34 -04:00
kirillk bbe6f25e21 fix(jetbrains): bound streaming reasoning resources 2026-06-09 10:49:47 -04:00
kilo-maintainer[bot] adb8d3e31e release: v7.3.41 2026-06-09 14:27:34 +00:00
Marius 7a50184fae Merge pull request #11037 from Kilo-Org/perf-agent-manager-timeline-renderer
perf(vscode): coalesce task timeline performance optimization
2026-06-09 16:25:23 +02:00
Johnny Eric Amancio 7f84c13bce feat: add Kilo auto close workflow isolated from upstream (#11040) 2026-06-09 16:09:09 +02:00
Marius 422bc8aca8 fix(vscode): remove stale speech setting (#11039) 2026-06-09 15:58:13 +02:00
kirillk b85ce6df66 fix(jetbrains): refine drop overlay icon spacing 2026-06-09 09:25:28 -04:00
marius-kilocode ace77d96a1 fix(cli): restore Kilo Gateway provider integration 2026-06-09 15:14:49 +02:00
Marius ff2e66ed3a Merge pull request #11038 from Kilo-Org/perf-renderer-self-test
perf(ui): render streamed markdown incrementally
2026-06-09 13:09:11 +02:00
marius-kilocode dfbcbfc4f2 fix(cli): use native ripgrep on Windows 2026-06-09 13:03:49 +02:00
marius-kilocode fd6fd50236 fix(cli): stabilize file search and event tests 2026-06-09 12:46:32 +02:00
marius-kilocode d363965df9 test(ui): restore incremental markdown coverage 2026-06-09 12:46:28 +02:00
marius-kilocode 9c490cfea8 test(ui): run markdown DOM coverage in browser 2026-06-09 12:32:12 +02:00
marius-kilocode fe1ac4bcc2 test(ui): declare markdown DOM test dependency 2026-06-09 12:19:46 +02:00
marius-kilocode 70f9441b50 perf(ui): render streamed markdown incrementally 2026-06-09 12:09:25 +02:00
marius-kilocode 1aabc41b13 docs(vscode): clarify shared timeline behavior 2026-06-09 12:02:04 +02:00
marius-kilocode 246ba995a7 docs(agent-manager): explain timeline scroll batching 2026-06-09 12:00:33 +02:00
marius-kilocode 15d771e8fa perf(agent-manager): coalesce timeline auto-scroll 2026-06-09 11:59:17 +02:00
marius-kilocode 56c9abc6a3 fix(kilo-docs): ignore DigitalOcean API base link 2026-06-09 11:56:30 +02:00
marius-kilocode 5ccde61b30 Merge remote-tracking branch 'origin/main' into marius-kilocode/kilo-opencode-v1.14.51 2026-06-09 11:54:48 +02:00
marius-kilocode 27d2c148d0 fix: complete OpenCode v1.14.51 integration 2026-06-09 11:53:08 +02:00
Marius c77aca3fa3 Merge pull request #11033 from Kilo-Org/groovy-brook
fix(vscode): keep concurrent Agent Manager streams responsive
2026-06-09 11:49:40 +02:00
Marius 574dc19204 Merge pull request #11034 from Kilo-Org/nova-success
fix(cli): reset forked session costs
2026-06-09 11:11:20 +02:00
Aarav 82b22f7858 feat: add .ods (OpenDocument Spreadsheet) support to read tool (#10761)
* feat: add .ods (OpenDocument Spreadsheet) support to read tool

* fix(cli): handle ODS compatibility edge cases

---------

Co-authored-by: marius-kilocode <marius@kilocode.ai>
2026-06-09 09:01:58 +00:00
marius-kilocode 0d76fa6273 fix(cli): reset forked session costs 2026-06-09 10:52:25 +02:00
Marius fd41e295dd Merge branch 'main' into groovy-brook 2026-06-09 10:45:28 +02:00
Marius feed20b72f Merge pull request #11032 from Kilo-Org/fix/session-prompt-queue-message-id
test(cli): fix prompt queue message ID fixture
2026-06-09 10:42:01 +02:00
marius-kilocode 10520d04e1 fix(vscode): avoid logging every streamed event 2026-06-09 10:38:40 +02:00
marius-kilocode 8addd087be test(cli): use valid prompt queue message ID 2026-06-09 10:26:21 +02:00
marius-kilocode 0e21edbca0 Merge remote-tracking branch 'origin/main' into marius-kilocode/kilo-opencode-v1.14.51 2026-06-09 10:18:20 +02:00
marius-kilocode 1d23dc2171 resolve merge conflicts 2026-06-09 10:17:21 +02:00
Marius d881bfcc68 Merge pull request #10094 from IamCoder18/fix/agent-manager-model-sync
fix: agent-manager model sync on config change
2026-06-09 09:48:18 +02:00
Marius dbddefd2df Merge pull request #10109 from IamCoder18/fix/session-prompt-queue-memory-leak
fix: prevent memory leak in KiloSessionPromptQueue.cancel for sessions without active tails
2026-06-09 09:29:05 +02:00
marius-kilocode f78492d73e merge: record upstream v1.14.51 2026-06-09 08:29:03 +02:00
marius-kilocode 6ecaaab48a refactor: kilo compat for v1.14.51 2026-06-09 08:29:02 +02:00
kirillk d1fa4506c8 fix(jetbrains): align session view icons 2026-06-08 20:52:36 -04:00
kirillk 793cf934b7 feat(jetbrains): add session file drop overlay 2026-06-08 20:51:27 -04:00
kirillk d8b40526ef chore(jetbrains): add UI implementation plans 2026-06-08 19:23:33 -04:00
kirillk 5cf95c548e fix(jetbrains): align reasoning toggle 2026-06-08 19:17:08 -04:00
kirillk 2c0b17678c fix(jetbrains): tune question card spacing 2026-06-08 19:10:01 -04:00
kirillk a0c3f4be27 fix(jetbrains): align session progress footer 2026-06-08 18:47:24 -04:00
kirillk 952241ee07 fix(jetbrains): refine session card outlines 2026-06-08 18:40:38 -04:00
kirillk 7481b6f8cb feat(jetbrains): refine attachment preview cards 2026-06-08 18:34:37 -04:00
kirillk b9bff3b69c fix(jetbrains): reset session card hover styling 2026-06-08 17:35:33 -04:00
kilo-maintainer[bot] 372a406298 chore: update nix node_modules hashes 2026-06-08 21:21:02 +00:00
kirillk a8b127e0ca feat(jetbrains): support prompt file attachments 2026-06-08 17:07:45 -04:00
Marius 21a808468b Merge pull request #10996 from Kilo-Org/marius-kilocode/kilo-opencode-v1.14.48
OpenCode v1.14.48
2026-06-08 23:04:28 +02:00
kirillk 1864e441d5 fix(jetbrains): render search targets as regular text 2026-06-08 17:01:20 -04:00
kirillk 8c4c3375b9 fix(jetbrains): show search paths relative to repo 2026-06-08 16:56:48 -04:00
Josh Lambert 6b2d879e50 Revert "Merge pull request #11017 from Kilo-Org/docs/fix-deepseek-link-check"
This reverts commit 9ca9489388, reversing
changes made to 0b0f0959e5.
2026-06-08 16:19:23 -04:00
Josh Lambert 8dbb830641 Merge branch 'main' of https://github.com/Kilo-Org/kilocode into docs/accept-http-202-links 2026-06-08 16:18:56 -04:00
kirillk e56e0f2450 chore: remove local plan files 2026-06-08 16:12:42 -04:00
kirillk 38c774ca86 fix(jetbrains): preserve scroll position on expand 2026-06-08 16:11:45 -04:00
kirillk 406f92afe3 fix(jetbrains): left-align search tool targets 2026-06-08 16:10:52 -04:00
Christiaan Arnoldus bb1cfcd27e Merge pull request #10992 from Kilo-Org/rename-mercury-autocomplete-labels
Rename Mercury autocomplete model labels
2026-06-08 21:50:30 +02:00
marius-kilocode da67373ad5 Merge remote-tracking branch 'origin/main' into marius-kilocode/kilo-opencode-v1.14.48
# Conflicts:
#	packages/opencode/src/session/processor.ts
2026-06-08 21:45:00 +02:00
Marius 08d0dd4c7a Merge pull request #11010 from Kilo-Org/button-viburnum
fix(cli): compact before configured context threshold
2026-06-08 21:38:11 +02:00
kirillk 5518d6636c feat(jetbrains): render tool output with editor bodies 2026-06-08 15:26:09 -04:00
kirillk df39c2cc14 feat(jetbrains): add editor tab VFS infrastructure 2026-06-08 14:52:59 -04:00
kirillk 7afccae4ec refactor(jetbrains): split tool view renderers 2026-06-08 14:06:28 -04:00
marius-kilocode 9a1f424e35 fix(cli): harden proactive compaction replay 2026-06-08 19:52:13 +02:00
kirillk 5736a39459 feat(jetbrains): render search tools with dedicated views 2026-06-08 13:47:15 -04:00
Marius 9ca9489388 Merge pull request #11017 from Kilo-Org/docs/fix-deepseek-link-check
fix(kilo-docs): use stable DeepSeek links
2026-06-08 19:42:42 +02:00
marius-kilocode 8c4636b613 fix(kilo-docs): use stable DeepSeek links 2026-06-08 19:23:34 +02:00
marius-kilocode e7ac3bf151 Merge remote-tracking branch 'origin/main' into marius-kilocode/kilo-opencode-v1.14.48
# Conflicts:
#	packages/opencode/test/kilocode/session-export/e2e.test.ts
2026-06-08 19:22:31 +02:00
Josh Lambert a40ca7aca8 fix(kilo-docs): accept HTTP 202 links 2026-06-08 13:07:53 -04:00
Joshua Lambert 0b0f0959e5 Merge pull request #10879 from Kilo-Org/feat/terminal-bench-model-details
feat: show Terminal Bench model details
2026-06-08 12:53:39 -04:00
Joshua Lambert 3ca1ab6280 Merge branch 'main' into revert/pr-10924-session-export 2026-06-08 12:45:41 -04:00
Joshua Lambert 621acf986b Merge branch 'main' into feat/terminal-bench-model-details 2026-06-08 12:33:31 -04:00
Marius ad93990ca9 fix(ui): restore pointer cursors for clickable controls (#10999)
* fix(ui): restore pointer cursors for clickable controls

* fix(ci): raise VS Code Storybook heap limit

* fix(ci): extend heap to visual test server
2026-06-08 16:32:49 +00:00
Joshua Lambert 79ca8e120d Merge pull request #11014 from Kilo-Org/fix/vscode-storybook-heap
ci: raise VS Code Storybook heap limit
2026-06-08 12:23:05 -04:00
marius-kilocode 79c6e1a1f9 Merge remote-tracking branch 'origin/main' into button-viburnum 2026-06-08 18:14:28 +02:00
kirillk c772cc4031 Merge remote-tracking branch 'origin/tiny-chokeberry' into tide-clipper 2026-06-08 12:14:16 -04:00
Marius 994cbc0023 fix(kilo-docs): link directly to MiniMax console (#11007) 2026-06-08 16:13:01 +00:00
Marius 0925eba8b0 Merge pull request #11012 from Kilo-Org/fix/remove-session-export-worker-e2e
test(cli): remove network-dependent session export case
2026-06-08 18:12:55 +02:00
Joshua Lambert ab37a7675c Merge branch 'main' into revert/pr-10924-session-export 2026-06-08 12:08:11 -04:00
marius-kilocode 18c3020ab2 fix(cli): annotate proactive compaction hooks 2026-06-08 18:06:17 +02:00
Joshua Lambert 4b8992112b Merge branch 'main' into feat/terminal-bench-model-details 2026-06-08 12:05:28 -04:00
Josh Lambert 636586a3e2 ci: apply Storybook heap limit to visual job 2026-06-08 11:58:55 -04:00
marius-kilocode 5505a567a7 Merge remote-tracking branch 'origin/main' into button-viburnum 2026-06-08 17:53:57 +02:00
marius-kilocode fd4b7a27d3 test(cli): remove network-dependent session export case 2026-06-08 17:52:38 +02:00
Josh Lambert 0d6f263bdd ci: raise VS Code Storybook heap limit 2026-06-08 11:52:08 -04:00
Igor Šćekić 6ee090b5a4 Restore cloud session diffs on import (#10948)
* feat(cli): restore cloud session diffs on import

* fix(cli): hide git diff restore subprocesses

* fix(cli): harden session diff path guard

* test(cli): keep diff restore test synchronous

* test(cli): normalize diff restore line endings

* fix(cli): preserve imported diffs across session forks

* chore: remove session ingest findings doc

* fix(cli): avoid duplicate cumulative session diffs

* test(cli): isolate session export test failures

* fix(cli): preserve cumulative cloud fork diffs

* fix(cli): avoid cumulative diff prefix duplication
2026-06-08 15:44:03 +00:00
kirillk 6add3130a9 Merge remote-tracking branch 'origin/main' into tide-clipper 2026-06-08 11:02:25 -04:00
kirillk 9fd22517ec Merge remote-tracking branch 'origin/main' into tiny-chokeberry 2026-06-08 11:01:53 -04:00
Josh Lambert 9f072b05d4 chore(cli): add session export changeset 2026-06-08 10:57:41 -04:00
Josh Lambert b1db6bb532 Revert "Merge pull request #10924 from Kilo-Org/fix/temporarily-disable-session-export"
This reverts commit e2e070da2f, reversing
changes made to e02efb5ce6.
2026-06-08 10:56:54 -04:00
marius-kilocode 39dbf7fd0b test(cli): remove redundant exit binding loop 2026-06-08 14:43:53 +02:00
marius-kilocode cc03ffc581 fix: harden OpenCode v1.14.48 integration 2026-06-08 14:38:13 +02:00
marius-kilocode a13064167d fix(cli): compact before context threshold overflow 2026-06-08 14:02:20 +02:00
Josh Holmer ece8453ad0 fix(core): avoid copying visible planning chat into new sessions (#10991) 2026-06-08 13:56:59 +02:00
Marius 2f3e32895d Merge pull request #11004 from Kilo-Org/fix-worktree-project-skills
fix(cli): discover project skills in worktree sessions
2026-06-08 13:45:58 +02:00
Marius 741b00f2e0 fix(cli): restore subagent isolation in session forks (#11000) 2026-06-08 11:36:44 +00:00
marius-kilocode 16e334ff8c fix(cli): discover project skills in worktree sessions 2026-06-08 13:30:20 +02:00
Christiaan Arnoldus 2d7c49d2a8 Update Mercury autocomplete model labels 2026-06-08 13:22:17 +02:00
Marius 12e83e1d3b Merge pull request #10998 from Kilo-Org/voltaic-veterinarian
fix(cli): restore automatic session titles
2026-06-08 13:21:41 +02:00
Marius 8918bb767a Merge pull request #10787 from Kilo-Org/picayune-yacht
fix(vscode): route worktree permission approvals correctly
2026-06-08 13:04:32 +02:00
Marius 65f0c3e44e Merge pull request #10995 from Kilo-Org/fix/ignore-legacy-model-snapshots
fix(cli): ignore legacy models snapshots
2026-06-08 13:03:37 +02:00
marius-kilocode a59b255b31 fix(cli): restore automatic session titles 2026-06-08 13:03:28 +02:00
marius-kilocode 5706abce76 chore(cli): normalize upstream annotations 2026-06-08 12:45:47 +02:00
marius-kilocode d71b1e3442 revert(sdk): keep generation on pinned Bun 2026-06-08 12:36:30 +02:00
marius-kilocode 26f3f72ab5 fix(vscode): disable Copilot in extension dev host 2026-06-08 12:33:10 +02:00
marius-kilocode 97dd460482 fix(sdk): stabilize generated event ordering 2026-06-08 12:31:59 +02:00
marius-kilocode 5b32c368c9 refactor(sdk): simplify Bun version lookup 2026-06-08 12:25:44 +02:00
marius-kilocode cc2167fc52 fix(sdk): reject mismatched Bun generation 2026-06-08 12:17:29 +02:00
marius-kilocode cf08de3f44 resolve merge conflicts 2026-06-08 12:04:21 +02:00
marius-kilocode 4550e0d883 fix(cli): ignore legacy models snapshots 2026-06-08 11:50:27 +02:00
marius-kilocode 1f5103cc1b merge: record upstream v1.14.48 2026-06-08 10:58:11 +02:00
marius-kilocode e610b1d390 refactor: kilo compat for v1.14.48 2026-06-08 10:58:10 +02:00
kirillk cdccebe279 fix(jetbrains): refine reasoning block spacing 2026-06-07 15:45:17 -04:00
kilo-maintainer[bot] 1181567b26 release: v7.3.40 2026-06-06 02:29:27 +00:00
Johnny Eric Amancio be5f42f158 fix: support custom plan exit paths (#10952) 2026-06-06 00:50:58 +02:00
kirillk 256fe3a819 fix(jetbrains): improve streaming reasoning display 2026-06-05 17:56:57 -04:00
Catriel Müller 011477a915 Merge pull request #10925 from Kilo-Org/improvement/cli-suggest-skills
Suggest skill slash commands in CLI
2026-06-05 18:38:30 -03:00
kilo-maintainer[bot] f018b8ffa9 release: v7.3.39 2026-06-05 21:13:04 +00:00
Catriel Müller 3b1549d20a Merge pull request #10961 from Kilo-Org/catrielmuller/remove-macos-intel
refactor: fix intel mac runner
2026-06-05 17:59:09 -03:00
Catriel Müller 17f5619c59 refactor: flag intel mac 2026-06-05 17:57:39 -03:00
Josh Lambert 706aa5fba6 Merge remote-tracking branch 'origin/main' into resolve-terminal-bench-kilo
# Conflicts:
#	packages/sdk/js/src/v2/gen/types.gen.ts
2026-06-05 16:51:49 -04:00
Catriel Müller 9a53a602d4 Merge pull request #10958 from Kilo-Org/fix/cli-disable-bun-splitting
fix(cli): disable Bun code-splitting to fix baseline release crash
2026-06-05 17:46:49 -03:00
Josh Lambert 210f587826 test: focus Terminal Bench coverage 2026-06-05 16:41:49 -04:00
Catriel Müller 8b5fd89708 refactor(cli): drop morphsdk compat layer and CJS build plugin
The compat re-export and the build's CJS-redirect plugin only existed to work
around the 'G9' crash that's actually a Bun --splitting bug (now fixed by
splitting:false). With splitting off the morphsdk ESM barrel bundles cleanly,
so import it directly in warpgrep.ts and remove the indirection.
2026-06-05 16:49:16 -03:00
Catriel Müller 4ca4700359 fix(cli): disable Bun code-splitting to fix baseline startup crash
The real cause of the 'Exported binding G9 needs to refer to a top-level
declared variable' SyntaxError is a Bun 1.3.14 --splitting codegen bug
(oven-sh/bun#25621), not @morphllm/morphsdk. With splitting:true Bun emits
invalid cross-chunk re-exports (import{vn as G9}) that crash the compiled
baseline binary at startup. Disabling splitting produces a valid binary;
verified the 'as G9' artifact is gone from the compiled output.
2026-06-05 16:35:18 -03:00
Catriel Müller fae783dc14 Merge pull request #10957 from Kilo-Org/fix/morphsdk-cjs-resolve-subpath
fix(cli): resolve morphsdk client.cjs via exported subpath
2026-06-05 16:23:24 -03:00
Catriel Müller d7df07a1eb fix(cli): resolve morphsdk client.cjs via exported subpath
The morphsdkCjsPlugin called require.resolve on the raw dist/.../client.cjs
path, which is not an exported subpath in the package's exports map, so Bun
aborted the release build with 'Cannot find module ...client.cjs'.

Resolve through the public specifier @morphllm/morphsdk/tools/warp-grep/client
instead — require.resolve uses the package's "require" condition, mapping it
straight to client.cjs.
2026-06-05 16:22:01 -03:00
Catriel Müller 7d241ee6ff Merge pull request #10956 from Kilo-Org/fix/morphsdk-cjs-build-plugin
fix(cli): use build plugin to redirect morphsdk ESM barrel to CJS
2026-06-05 16:09:12 -03:00
Catriel Müller bd1e3e4a14 fix(cli): use build plugin to redirect morphsdk ESM barrel to CJS
The createRequire approach from #10955 did not prevent the Bun ESM
splitter from generating invalid output. Bun 1.3.14 with
`conditions: ["browser"]` resolves @morphllm/morphsdk via the "import"
condition (pre-split ESM barrel) even inside createRequire() calls,
pulling in 52 chunk-*.js files that cause:

  SyntaxError: Exported binding 'G9' needs to refer to a top-level declared variable.

Fix: add a morphsdkCjsPlugin in script/build.ts using Bun's onResolve
API to redirect the module specifier to the absolute path of client.cjs
before the ESM splitter is invoked. client.cjs is a self-contained
~2300-line CJS bundle with no chunk-*.js imports.

morphsdk.ts is simplified to a plain re-export — the CJS redirection
happens at build time, no source-level workaround needed.
2026-06-05 15:52:14 -03:00
Catriel Müller d9cbaa31e6 Merge pull request #10955 from Kilo-Org/fix/cli-release-validation-runtime
fix(cli): prevent Bun ESM splitter crash and fix Alpine musl validation
2026-06-05 15:35:11 -03:00
kirillk 3411c37d99 Merge remote-tracking branch 'origin/main' into tide-clipper 2026-06-05 14:11:09 -04:00
Catriel Müller f7970c99ed fix(cli): prevent Bun ESM splitter crash and Alpine musl validation
Two independent release validation failures introduced by kilo-opencode-v1.14.33 (morphsdk) and the new all-arch validation jobs.

**@morphllm/morphsdk pre-split ESM (intermittent SyntaxError on Windows)**

@morphllm/morphsdk/tools/warp-grep/client ships as a 805-byte ESM barrel that
re-exports from 13 internal chunk-*.js files (52 chunks total). When Bun 1.3.14
bundles the CLI with splitting+minify enabled, merging these external pre-split
chunks into its own chunk graph intermittently produces invalid minified ESM:

  SyntaxError: Exported binding 'G9' needs to refer to a top-level declared variable.

Non-deterministic because Bun's parallel bundler uses different orderings per run;
same build sometimes succeeds, sometimes fails on Windows x64.

Fix: load morphsdk via createRequire (forces CJS bundle, client.cjs 2292 lines,
self-contained) instead of the ESM barrel. Wrapper lives in kilocode/compat/ with
a comment explaining how to detect and fix this pattern for future third-party deps.

Scanned all 40+ third-party packages imported by packages/opencode/src — morphsdk
is the only one with pre-split ESM; all others ship single-file ESM or CJS only.

**Alpine musl validation (libstdc++/libgcc missing)**

Bun's musl target (bun-linux-{arch}-musl) is not fully static — it links against
libstdc++.so.6 and libgcc_s.so.1 (GCC C++ runtime). Alpine base does not ship
these by default. The fix adds apk add --no-cache libstdc++ libgcc at the start of
the Alpine Docker smoke test, matching the runtime requirement that any Alpine user
of the CLI would also need.
2026-06-05 15:10:16 -03:00
Joshua Lambert 6ba7c84fc2 Merge pull request #10951 from Kilo-Org/fix/vscode-preserve-sidebar-on-reload
fix(vscode): preserve Explorer after window reload
2026-06-05 13:21:21 -04:00
Catriel Müller 2e2c07b292 Merge pull request #10949 from Kilo-Org/alder-xenoposeidon
Fix CLI models snapshot release validation
2026-06-05 13:48:56 -03:00
kirillk d505677d88 fix(jetbrains): prevent transcript scrollbar overlap 2026-06-05 12:45:02 -04:00
kirillk d1214fcc7a Merge remote-tracking branch 'origin/main' into tide-clipper 2026-06-05 12:17:52 -04:00
kirillk cd80323c0f test(jetbrains): add markdown stress leak coverage 2026-06-05 12:16:30 -04:00
kirillk 01f2886190 fix(jetbrains): speed up session mouse wheel scrolling 2026-06-05 12:03:35 -04:00
Kirill Kalishev 452a34d7a6 Merge pull request #10917 from Kilo-Org/plastic-munchkin
feat: add JetBrains release skill
2026-06-05 11:55:29 -04:00
kirillk 3b762484f3 fix(jetbrains): hide markdown separators 2026-06-05 11:28:42 -04:00
Ari Messer ed4c402fde Merge pull request #10911 from Kilo-Org/docs/update-nvidia-nemotron-model 2026-06-05 08:02:27 -07:00
kiloconnect[bot] 2a54288a26 docs: update NVIDIA Nemotron model ID and description in gateway models list 2026-06-05 07:45:29 -07:00
Josh Lambert ca5c4d9a91 test(vscode): remove sidebar reload regression guard 2026-06-05 10:27:45 -04:00
Josh Lambert 54534bd641 fix(vscode): preserve sidebar on window reload 2026-06-05 10:24:18 -04:00
Joshua Lambert e2e070da2f Merge pull request #10924 from Kilo-Org/fix/temporarily-disable-session-export
fix(cli): temporarily disable session export
2026-06-05 10:00:36 -04:00
Aarav e02efb5ce6 docs(security): reflect Security Agent availability in docs (#10898)
The previous docs stated Security Agent was restricted to Teams and
Enterprise plans, which no longer matches the product behavior.

The personal and organization sidebars both expose Security Agent
unconditionally, with no plan gate or feature flag. This keeps the
docs aligned with that behavior.

Reason for change: docs were out of sync with UI/backend access rules.
2026-06-05 15:52:01 +02:00
Catriel Müller f828478689 Merge pull request #10933 from Kilo-Org/fix/mcp-json-strict-output
fix(cli): write strict JSON for MCP config
2026-06-05 10:25:35 -03:00
Imanol Maiztegui 225b914b59 perf(chat): reserve layout space for working indicator to prevent content shift (#10950)
Wrap the WorkingIndicator in a persistent slot container with a fixed
min-height so that toggling between the spinner and session actions
does not cause the chat content to jump. This stabilizes the scroll
position when live output finishes.
2026-06-05 13:15:51 +00:00
Catriel Müller 2dd5100eea fix(vscode): validate local CLI snapshot sidecar 2026-06-05 09:40:38 -03:00
Catriel Müller 78117d1a25 fix: validate CLI models snapshot before release builds 2026-06-05 09:28:40 -03:00
Imanol Maiztegui 6a64794a5b fix(auto-scroll): ignore control interactions when detecting user scroll intent (#10946)
Extract helper utilities to identify interactive elements (buttons,
inputs, textareas, contenteditable) and nested scrollable containers.
Skip pausing auto-scroll when the user interacts with form controls
or question answer elements, preventing false positives that would
stop the chat from following new content.
2026-06-05 12:22:20 +00:00
Imanol Maiztegui f5b5797580 refactor(chat): use ResizeObserver to maintain scroll position on container resize (#10944)
Replace the custom event approach for resuming auto-scroll when the
permission dock disappears. Instead, observe the scroll container's
dimensions directly via createResizeObserver in the auto-scroll hook,
eliminating the coupling between ChatView and MessageList through
window events. The scroll ref is now tracked in the store to enable
resize observation alongside the existing content observer.
2026-06-05 13:11:01 +02:00
Imanol Maiztegui 049d567d13 fix(ui): prevent false auto-scroll pauses from programmatic scroll events (#10942)
Remove lastScrollTop tracking that incorrectly classified virtualization
and layout-driven scroll position changes as user-initiated scrolling.
Now only explicit user input (detected via recentlyInteracted()) can
pause the auto-scroll following behavior, keeping chat pinned to the
bottom during programmatic or layout-driven updates.
2026-06-05 09:41:04 +00:00
Christiaan Arnoldus b198441247 Merge pull request #10901 from Kilo-Org/fix/webfetch-unsupported-images
fix(cli): reject unsupported webfetch images
2026-06-05 10:56:13 +02:00
Mohammad Javad Naderi 4de82931ed fix(vscode): tolerate duplicate panel command registration 2026-06-05 11:31:32 +03:30
Evan Jacobson c992b92842 fix(cli): annotate command Kilo changes 2026-06-04 23:20:33 -06:00
Evan Jacobson 48466850a9 Undo extra changeset 2026-06-04 22:53:52 -06:00
Evan Jacobson 2099feba9b fix(cli): disambiguate skill slash commands 2026-06-04 22:38:19 -06:00
Josh Holmer be234fa926 fix(core): always deny tool calls for system agents 2026-06-04 23:50:49 -04:00
kilo-maintainer[bot] 5c6b83ad28 release: v7.3.33 2026-06-05 03:24:39 +00:00
Joshua Lambert 62ff9162ab Merge pull request #10935 from Kilo-Org/fix/cli-release-build-state
fix(cli): isolate release target builds
2026-06-04 23:15:54 -04:00
Joshua Lambert 7afef4aa85 Merge branch 'main' into fix/cli-release-build-state 2026-06-04 23:00:29 -04:00
Josh Lambert 254b070bb0 ci: limit CLI artifact validation to version 2026-06-04 22:55:22 -04:00
Josh Lambert 8295ab3096 ci: validate Linux CLI release artifacts 2026-06-04 22:52:27 -04:00
Josh Lambert 6cab5f18e7 fix(cli): isolate release target builds 2026-06-04 22:40:06 -04:00
kilo-maintainer[bot] 77c6b802c5 release: v7.3.32 2026-06-05 02:17:45 +00:00
Catriel Müller a0eb3b7cb6 fix(cli): write strict JSON for MCP config 2026-06-04 22:50:37 -03:00
Evan Jacobson 881a451f8a Changeset 2026-06-04 17:01:39 -06:00
Evan Jacobson 8094ba6ab3 feat(cli): suggest skill slash commands 2026-06-04 16:30:01 -06:00
kilo-maintainer[bot] 7341745449 release: v7.3.31 2026-06-04 22:12:32 +00:00
Josh Lambert 189f251866 fix(cli): temporarily disable session export 2026-06-04 17:28:28 -04:00
kilo-maintainer[bot] 3178592e0c release: v7.3.30 2026-06-04 19:53:43 +00:00
Catriel Müller b0f22d998e Merge pull request #10905 from Kilo-Org/npm-package-readme
docs(cli): refresh npm package README
2026-06-04 14:41:58 -03:00
Catriel Müller 0af454de08 fix(cli): preserve npm package metadata 2026-06-04 14:21:38 -03:00
kirillk 80be074c9c fix: ignore stale JetBrains publish runs 2026-06-04 12:44:04 -04:00
Kirill Kalishev c9c3341c8e Merge pull request #10916 from Kilo-Org/different-sunday
docs(kilo-docs): update JetBrains EAP guidance
2026-06-04 12:42:02 -04:00
kirillk 1060fa4e5e docs(jetbrains): reference release skill 2026-06-04 12:35:42 -04:00
kirillk a7a9ccee9c fix: make JetBrains release merge optional 2026-06-04 12:33:52 -04:00
kirillk 41ab86f42c fix: address JetBrains release skill review 2026-06-04 12:28:13 -04:00
kirillk 341c5f8bdc docs(kilo-docs): refine JetBrains EAP compatibility wording 2026-06-04 12:23:46 -04:00
Kirill Kalishev 103daf3e66 Merge pull request #10913 from Kilo-Org/fix/book-open-check-training-icon
fix(vscode): replace brain-circuit with book-open-check for training disclosure
2026-06-04 12:21:05 -04:00
Kirill Kalishev c45b8fbad1 Merge pull request #10915 from Kilo-Org/jetbrains/release/v7.0.1-rc.7
release(jetbrains): v7.0.1-rc.7
2026-06-04 12:20:54 -04:00
kirillk 8ee6caf512 feat: add JetBrains release skill 2026-06-04 12:15:45 -04:00
kirillk dc793e2cb3 docs(kilo-docs): clarify JetBrains auto-update setting 2026-06-04 12:11:52 -04:00
kirillk ddb6005e14 docs(kilo-docs): update JetBrains EAP guidance 2026-06-04 12:04:14 -04:00
Kirill Kalishev cbebc0294d Merge branch 'main' into fix/book-open-check-training-icon 2026-06-04 12:01:07 -04:00
Kirill Kalishev 77db3cb311 Update CHANGELOG.md 2026-06-04 11:58:17 -04:00
kilo-maintainer[bot] 88bc5d8af7 release(jetbrains): v7.0.1-rc.7 2026-06-04 15:50:26 +00:00
kiloconnect[bot] ae91a34525 fix(vscode): replace brain-circuit with book-open-check for training disclosure icon
Aligns the VSCode extension and kilo-ui with the JetBrains plugin, which
replaced the brain-circuit icon with the book-open-check icon for the
'may be used for training data' indicator in the model picker.
2026-06-04 14:55:06 +00:00
Kirill Kalishev c1c6ec9d34 Merge pull request #10910 from Kilo-Org/skitter-porkpie
fix(jetbrains): render multi-release change notes
2026-06-04 10:49:55 -04:00
Kirill Kalishev 58e8efd321 Merge branch 'main' into skitter-porkpie 2026-06-04 10:29:16 -04:00
Kirill Kalishev d6df2d5e98 Update packages/kilo-jetbrains/build.gradle.kts
Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>
2026-06-04 10:29:04 -04:00
Josh Lambert c6ec517124 Merge remote-tracking branch 'origin/main' into feat/opus-vscode-deep-link 2026-06-04 10:29:02 -04:00
kilo-maintainer[bot] d38c2aaf8c chore: update nix node_modules hashes 2026-06-04 14:12:59 +00:00
yanalialiuk 2d109462db Add Atomic Chat as a first-class local provider. (#10555)
* Add Atomic Chat as a first-class local provider.

Ship the atomic-chat plugin with auto-discovery on localhost:1337, register the provider in models.dev fixtures, and document setup for VS Code and CLI.

* Remove dead code

Removed atomicChat provider mapping from legacy migration.

* Update Atomic Chat provider icon to theme-colored vector.

Replace the embedded raster icon with a currentColor SVG symbol so it matches provider icon styling and inherits UI color consistently.

* Allow optional API key for local Atomic Chat and LM Studio providers.

Load the atomic-chat plugin despite named constant exports, register local-server auth in the plugin, and let CLI and VS Code connect with an empty key on localhost.

* Gate Atomic Chat discovery behind explicit opt-in

* Update packages/plugin-atomic-chat/src/utils/should-probe-atomic-chat.ts

* Remove dead branch in atomic-chat model ref probe.

Drop the modelID check (never equals provider key) and the duplicate providerID branch.

* Fix PR CI: register atomic chat plugin and complete i18n.

Restore atomic-chat in default-plugins after main merge, add missing sidebar locale keys, and annotate shared upstream diffs.

* Format i18n locale files and ProviderConnectDialog with Prettier.

* Address PR review: docs order, narrow annotations, plugin fixes.

Reorder local-models providers per maintainer feedback; use inline kilocode_change markers in dialog-provider. Share ModelStatusCache, fix config discovery abort/timeout, throw on fetch failure, and resolve bot review warnings.

* Align dialog-provider with upstream keymap bindings after rebase.

Restore useBindings instead of useKeyboard so shared-file diff stays minimal and passes annotation checks.

* Update packages/kilo-vscode/webview-ui/src/components/settings/ProviderConnectDialog.tsx

* Deduplicate Atomic Chat /v1/models fetch on config discovery.

Use a single shared models endpoint request in enhanceConfig instead of separate health and discovery calls.

* Fix kilo-code-bot review: import provider key and log cache errors.

Export ATOMIC_CHAT_PROVIDER_KEY from local-providers for the webview, log cache warm failures, and throw on network errors in fetchModelsEndpoint.

* fix(plugin-atomic-chat): harden discovery and reduce chat toasts

Reuse auto-detect model list to avoid duplicate /v1/models calls, wire AbortSignal into fetch, replace silent catches with logging, and only surface validation errors in chat.params.

* fix(plugin-atomic-chat): refresh model cache on chat validation retries

Bypass the 15s model list cache after the first failed attempt so retryWithBackoff can observe newly loaded models.

* Update packages/plugin-atomic-chat/src/utils/index.ts

* fix(plugin-atomic-chat): repair categorizeError not_found branch

Restore return statement and map "not loaded" validation errors to not_found after bot commit broke the if block.

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>
2026-06-04 16:03:00 +02:00
Kirill Kalishev 6cace2a29a Update packages/kilo-jetbrains/build.gradle.kts
Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>
2026-06-04 09:58:46 -04:00
kirillk 49ccf6e45b fix(jetbrains): render multi-release change notes 2026-06-04 09:45:12 -04:00
Kirill Kalishev 3b3ce7e80a Merge pull request #10890 from Kilo-Org/thoracic-plume
test(jetbrains): stabilize backend SSE tests
2026-06-04 09:01:14 -04:00
Josh Lambert 7691373d86 fix(vscode): refresh catalog for model deep links 2026-06-04 08:59:45 -04:00
chrarnoldus 714f920b1e fix(cli): report unsupported icons as tool errors
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-04 12:43:30 +00:00
chrarnoldus 165009df5f refactor(cli): clarify icon mime handling
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-04 12:13:46 +00:00
kilo-maintainer[bot] facf8b6b89 chore: update nix node_modules hashes 2026-06-04 10:58:53 +00:00
Christiaan Arnoldus 674ae29022 Merge pull request #10906 from Kilo-Org/christiaan/nvidia
Add NVIDIA Trial Terms of Service to docs
2026-06-04 12:49:09 +02:00
Christiaan Arnoldus 0f61fd6724 Merge pull request #10881 from Kilo-Org/christiaan/mistral
Add Mistral Kilo gateway provider
2026-06-04 12:48:29 +02:00
chrarnoldus 1a1c0bd86a fix(cli): narrow webfetch image rejection
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-04 10:45:51 +00:00
chrarnoldus 627afaccf0 fix(kilo-docs): exclude xAI account link from checks
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-04 10:26:32 +00:00
Christiaan Arnoldus fa53e52392 Add NVIDIA Trial Terms of Service to docs 2026-06-04 12:14:40 +02:00
Joshua Lambert 2e1945c287 fix(cli): resolve plan exit approval submissions (#10895)
* fix(cli): resolve plan exit approval submissions

* refactor(cli): remove plan followup question fallback
2026-06-04 12:08:33 +02:00
Christiaan Arnoldus 38eb5879f5 Merge pull request #10862 from Kilo-Org/chrarnoldus-patch-1
Add additional Mistral model IDs for reasoning
2026-06-04 11:48:13 +02:00
chrarnoldus bbc80dfac9 fix(sdk): regenerate Mistral provider schema
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-04 09:33:24 +00:00
Job Rietbergen 60059d5e66 chore(cli): normalize npm keywords 2026-06-04 11:25:03 +02:00
Job Rietbergen 10bf693c8e chore(cli): mark npm package publishable 2026-06-04 11:22:58 +02:00
Job Rietbergen e60a7562b9 docs(cli): use npm-safe readme image URL 2026-06-04 11:22:17 +02:00
Job Rietbergen d8d16ccff0 docs(cli): refresh npm package readme 2026-06-04 11:17:12 +02:00
Christiaan Arnoldus d8217fcba9 Add Mistral 2026-06-04 11:15:05 +02:00
chrarnoldus a8a8dd8724 fix(cli): reject unsupported webfetch images
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-04 08:30:11 +00:00
kilo-maintainer[bot] b7ce077c91 release: v7.3.29 2026-06-04 07:50:57 +00:00
Josh Lambert 235e769fb3 fix(vscode): generalize model deep links 2026-06-03 23:31:59 -04:00
Josh Lambert d1b29009dd fix(vscode): harden promoted model deep links 2026-06-03 23:07:24 -04:00
Kirill Kalishev 1c8653130a Merge pull request #10892 from Kilo-Org/jetbrains/release/v7.0.1-rc.6
release(jetbrains): v7.0.1-rc.6
2026-06-03 19:58:48 -04:00
Kirill Kalishev 7970274229 Update CHANGELOG.md 2026-06-03 19:41:53 -04:00
kilo-maintainer[bot] 089770ad71 release(jetbrains): v7.0.1-rc.6 2026-06-03 23:37:26 +00:00
Kirill Kalishev a4cdb16495 Merge pull request #10889 from Kilo-Org/jetbrains/release/v7.0.1-rc.5
release(jetbrains): v7.0.1-rc.5
2026-06-03 19:25:58 -04:00
kirillk 287d154233 fix(jetbrains): use tooltip html helper 2026-06-03 18:47:52 -04:00
kirillk fbb118d8f7 fix(jetbrains): update model picker training disclosure 2026-06-03 18:41:26 -04:00
kirillk 3227a8ab2f fix(jetbrains): position session model picker above control 2026-06-03 18:41:26 -04:00
kirillk 806a2e6147 test(jetbrains): coordinate SSE callback contention 2026-06-03 18:37:02 -04:00
Kirill Kalishev 8bc1ea02fa Update CHANGELOG.md by removing 7.3.23 section
Removed the 7.3.23 section from the changelog and consolidated some entries under the 7.0.1-rc.5 section.
2026-06-03 18:10:25 -04:00
kirillk fd6c6a8584 docs(jetbrains): clarify rc changelog 2026-06-03 18:03:27 -04:00
Jean du Plessis 19db7e69cc Merge pull request #10887 from Kilo-Org/docs/security-architecture-content
docs(kilo-docs): clarify contributor architecture docs
2026-06-03 23:57:57 +02:00
kirillk e8b3f5e8bf test(jetbrains): stabilize backend SSE tests 2026-06-03 17:53:09 -04:00
Josh Holmer 9329682775 ux(cli): change /copy command to copy last message 2026-06-03 17:51:20 -04:00
kilo-maintainer[bot] 6feabcb1f0 release(jetbrains): v7.0.1-rc.5 2026-06-03 21:47:50 +00:00
Joshua Lambert 6fd42be1d0 Update .changeset/sync-api-key-sessions.md
Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>
2026-06-03 17:42:33 -04:00
Kirill Kalishev e27ea8ab7f Merge pull request #9976 from Kilo-Org/crystalline-dive
fix(jetbrains): add editor-backed code blocks and optimize session UI
2026-06-03 17:41:09 -04:00
Imanol Maiztegui b89d4ea029 Extract Marketplace logic from KiloProvider (#10850)
* feat(marketplace): extract marketplace into standalone webview panel

* fix(marketplace): correct fetchData directory arg and add error logging

Replace swallowed catch block with console.warn for session status
sync failures, and pass `this.directory()` instead of `project` as the
second positional argument to `fetchMarketplaceData`.
2026-06-03 23:07:11 +02:00
kirillk 9e065d84cb docs(jetbrains): move log helper notes 2026-06-03 17:03:30 -04:00
Christiaan Arnoldus 9c5a461f81 Fix 2026-06-03 22:58:35 +02:00
kirillk 41e50ab5fd test(cli): rollback prompt timeout 2026-06-03 16:56:16 -04:00
kirillk aa5c0fbfaf chore(jetbrains): move dev log helper 2026-06-03 16:52:39 -04:00
kirillk 01df91d871 test: stabilize PR checks 2026-06-03 16:37:02 -04:00
kilo-maintainer[bot] b6ba97a09f release: v7.3.28 2026-06-03 19:24:41 +00:00
kilo-maintainer[bot] d8ee60adde chore: update nix node_modules hashes 2026-06-03 19:05:45 +00:00
Marius ac02d821b1 Merge pull request #10822 from Kilo-Org/marius-kilocode/kilo-opencode-v1.14.46
OpenCode v1.14.46
2026-06-03 20:54:22 +02:00
marius-kilocode 8b1ee6628c fix: restore routed APIs and task restrictions 2026-06-03 20:36:51 +02:00
Jean du Plessis ec6eebb858 docs(kilo-docs): clarify architecture documentation 2026-06-03 20:20:17 +02:00
Jean du Plessis 95b12ffcb1 docs(kilo-docs): expand architecture docs 2026-06-03 20:19:24 +02:00
kirillk 454b1a2197 Revert "fix(cli): add node types dependency"
This reverts commit 90ab22a006.
2026-06-03 13:43:48 -04:00
kirillk 90ab22a006 fix(cli): add node types dependency 2026-06-03 13:40:54 -04:00
Kirill Kalishev 73d641ae2c Merge pull request #10839 from Kilo-Org/generated-flame
feat(kilo-jetbrains): add model and config settings
2026-06-03 13:38:55 -04:00
kirillk 82cfbc0815 Merge remote-tracking branch 'origin/main' into crystalline-dive 2026-06-03 13:37:12 -04:00
kirillk e03be2b96e fix(cli): restore zstd worker bindings 2026-06-03 13:37:04 -04:00
kirillk 18e1ed99ef fix(jetbrains): align prompt view padding 2026-06-03 13:34:51 -04:00
kilo-maintainer[bot] 855a1015a6 chore: update nix node_modules hashes 2026-06-03 17:28:07 +00:00
Kirill Kalishev 31ea7bc795 Merge branch 'main' into generated-flame 2026-06-03 13:22:02 -04:00
kirillk f12f5b93dc build(types): remove direct node type dependency 2026-06-03 13:19:43 -04:00
kirillk 18493c6591 build(types): add node type dependency 2026-06-03 13:16:53 -04:00
kirillk b933703e17 fix(cli): restore native zstd imports 2026-06-03 13:12:28 -04:00
Imanol Maiztegui 6cfd2dd0b4 build(deps): bump bun from 1.3.13 to 1.3.14 (#10884)
Update Bun runtime and type definitions across the repository:
- package.json packageManager field
- @types/bun in root and script/upstream
- Nix flake pinned binary with updated hashes
- Container Dockerfile ARG
- Documentation and story fixtures referencing the version
2026-06-03 17:09:45 +00:00
kirillk 52a517e8be Merge remote-tracking branch 'origin/main' into generated-flame 2026-06-03 13:08:35 -04:00
kirillk 33333e44c6 fix(cli): type zstd runtime imports 2026-06-03 13:05:06 -04:00
kirillk a60db52ca6 fix(cli): remove zstd declaration shim 2026-06-03 13:04:04 -04:00
kirillk 3d648795e7 fix(jetbrains): refine session view styling 2026-06-03 13:01:29 -04:00
Joshua Lambert bb35fd7993 Merge pull request #10880 from Kilo-Org/useful-neem
fix: clarify free model training disclosure
2026-06-03 13:00:08 -04:00
kirillk 80bd352ecc Merge remote-tracking branch 'origin/main' into generated-flame 2026-06-03 12:54:17 -04:00
kilo-maintainer[bot] 8c5d24bf2c chore: update nix node_modules hashes 2026-06-03 16:12:07 +00:00
Catriel Müller 002e75570b Merge pull request #10883 from Kilo-Org/sophisticated-octave
fix(cli): restore packaged console startup
2026-06-03 13:11:35 -03:00
Josh Lambert 33a1f39494 fix(cli): expand free model training disclosure 2026-06-03 12:05:18 -04:00
Imanol Maiztegui b780553791 build(types): upgrade @types/node to 24.12.4 (#10860)
Update Node.js type definitions from 24.12.2 to 24.12.4
in package.json dependencies.
2026-06-03 15:58:09 +00:00
kirillk ae6f3c0e06 fix(jetbrains): refresh markdown after theme changes 2026-06-03 11:48:10 -04:00
Catriel Müller 1cdc39856f fix(cli): restore packaged console startup 2026-06-03 12:35:42 -03:00
kirillk ac5104ea49 fix(jetbrains): address session UI review feedback 2026-06-03 11:19:10 -04:00
Christiaan Arnoldus 495b73d588 Add Mistral Kilo gateway provider 2026-06-03 17:19:07 +02:00
Josh Lambert e356f068d4 fix: clarify free model training disclosure 2026-06-03 11:10:13 -04:00
Imanol Maiztegui 9a938ff5a3 Merge branch 'main' into chrarnoldus-patch-1 2026-06-03 17:05:21 +02:00
Kirill Kalishev 1a75325287 Merge branch 'main' into crystalline-dive 2026-06-03 11:01:39 -04:00
Imanol Maiztegui 57627c2e80 ci(codeql): split Kotlin analysis into dedicated workflow (#10869)
Extract java-kotlin language analysis from the shared CodeQL Advanced
workflow into a dedicated codeql-kotlin.yml workflow. This allows the
Kotlin analysis (which requires Java, Gradle, and a manual build) to
run independently with path filtering on packages/kilo-jetbrains,
reducing unnecessary CI runs for unrelated changes.

- Add new codeql-kotlin.yml with path-scoped triggers
- Remove java-kotlin from the matrix in codeql.yml
- Simplify codeql.yml by removing conditional Java/Gradle setup steps
- Register codeql-kotlin.yml in check-workflows.ts active set
2026-06-03 10:53:05 -04:00
Rietie 916c2d539a Merge pull request #10870 from Kilo-Org/add-opencode-keywords
vscode: add opencode and open code as keywords
2026-06-03 16:33:12 +02:00
Josh Lambert b0a4f03911 feat: show Terminal Bench model details 2026-06-03 10:32:27 -04:00
Marius 4ecef9e2f1 Merge pull request #10864 from Kilo-Org/fix-10857-gateway-statuses
fix(cli): preserve Kilo gateway error statuses
2026-06-03 16:31:25 +02:00
marius-kilocode eba939e412 fix(cli): address Kilo gateway review feedback 2026-06-03 16:00:42 +02:00
Marius 9a747af1d7 Merge pull request #10863 from Kilo-Org/fix-10858-kilo-next-edit
fix(cli): restore Kilo Gateway next edit proxying
2026-06-03 15:58:03 +02:00
marius-kilocode 5e32fe487a Merge remote-tracking branch 'origin/main' into fix-10857-gateway-statuses 2026-06-03 15:57:22 +02:00
kirillk 54a5d9f62a fix(cli): type node zstd bindings locally 2026-06-03 09:57:20 -04:00
Marius cadbe4018d Merge pull request #10861 from Kilo-Org/fix-10856-gateway-nullability
fix(sdk): preserve nullable Kilo gateway fields
2026-06-03 15:56:00 +02:00
kirillk 27eb82adcf Merge remote-tracking branch 'origin/main' into crystalline-dive
# Conflicts:
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/empty/EmptySessionPanel.kt
2026-06-03 09:45:23 -04:00
kirillk ad4263318d fix(jetbrains): add missing localized bundle keys 2026-06-03 09:42:27 -04:00
Marius ec51a8e953 Merge pull request #10853 from Kilo-Org/refactor/shared-diff-review-ui
refactor(vscode): extract shared diff review UI
2026-06-03 15:26:46 +02:00
kirillk 8b912f665e Merge remote-tracking branch 'origin/main' into generated-flame
# Conflicts:
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/model/ModelPicker.kt
2026-06-03 09:20:23 -04:00
Kirill Kalishev 77076dcb35 Merge pull request #10801 from Kilo-Org/certain-barnacle
feat(jetbrains): feedback UI
2026-06-03 09:17:35 -04:00
kiloconnect[bot] db16a80ed3 vscode: add opencode and open code as keywords 2026-06-03 13:13:14 +00:00
kirillk 492c85d705 fix(cli): move zstd typings to declaration 2026-06-03 09:12:32 -04:00
kilo-maintainer[bot] 3b5dc47c7b chore: update nix node_modules hashes 2026-06-03 13:11:32 +00:00
kirillk 124081df16 chore(cli): drop local zstd typing workaround 2026-06-03 09:10:38 -04:00
Marius b0e93eaa20 Merge branch 'main' into refactor/shared-diff-review-ui 2026-06-03 15:09:41 +02:00
kirillk df3119f64f chore: remove local planning artifacts 2026-06-03 09:08:35 -04:00
Catriel Müller a56c5471c9 Merge pull request #10865 from Kilo-Org/linen-dracorex
feat(cli): add animated console loading screens
2026-06-03 09:58:22 -03:00
marius-kilocode 557d6ad023 fix(cli): preserve Kilo gateway error statuses 2026-06-03 14:04:39 +02:00
Catriel Müller 9c561074b6 feat(cli): add animated console loading screens 2026-06-03 08:58:17 -03:00
chrarnoldus c4de1acdf0 chore(cli): add Mistral reasoning changeset
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-03 11:45:28 +00:00
Marius e0f9bae4f0 Merge pull request #10854 from Kilo-Org/fix/ci-unit-timeout
fix(ci): cap stalled unit jobs at 45 minutes
2026-06-03 13:41:44 +02:00
marius-kilocode 35aa9bbbb3 fix(cli): restore Kilo Gateway next edit proxying 2026-06-03 13:40:55 +02:00
Christiaan Arnoldus fa41bb7962 Add additional Mistral model IDs for reasoning 2026-06-03 13:39:17 +02:00
marius-kilocode fc4cf10b0a fix(sdk): preserve nullable Kilo gateway fields 2026-06-03 13:36:08 +02:00
marius-kilocode a0c91eb07a fix(ci): restore workflow change annotation 2026-06-03 13:25:36 +02:00
marius-kilocode 02f226d418 chore(ci): remove workflow change marker 2026-06-03 13:23:24 +02:00
Igor Šćekić cdf46c9735 fix(vscode): use brain circuit for data disclosure (#10847) 2026-06-03 07:19:51 -04:00
marius-kilocode 99407ef83b fix(ci): cap stalled unit jobs at 45 minutes 2026-06-03 13:18:18 +02:00
marius-kilocode 52aa8c0ee3 refactor(vscode): extract shared diff review UI 2026-06-03 13:12:20 +02:00
Marius ebc169d1ff Merge pull request #10849 from Kilo-Org/ultra-traffic
fix: restore cloud session previews
2026-06-03 13:08:26 +02:00
Marius 66f053a38a Merge pull request #10846 from Kilo-Org/rune-airship
fix(vscode): preserve inline review drafts across diff refreshes
2026-06-03 12:59:04 +02:00
marius-kilocode a6b005dfed fix: restore cloud session previews 2026-06-03 12:50:53 +02:00
marius-kilocode 94fc42255c fix(jetbrains): support numeric session summaries 2026-06-03 12:44:19 +02:00
marius-kilocode 0006072850 Merge remote-tracking branch 'origin/main' into marius-kilocode/kilo-opencode-v1.14.46 2026-06-03 12:44:02 +02:00
Emilie Lima Schario 2f7f23deac Add scanning (#10799)
* Add scanning

* ci: adjust CodeQL scanning for the repo

* ci: add bun in kotlin setup

---------

Co-authored-by: Johnny Amancio <johnnyeric@gmail.com>
2026-06-03 12:05:39 +02:00
Marius 312e98b20b Merge branch 'main' into rune-airship 2026-06-03 11:39:54 +02:00
Marius b1ade4b2ed Merge branch 'main' into marius-kilocode/kilo-opencode-v1.14.46 2026-06-03 11:39:20 +02:00
marius-kilocode 48340fe2ec fix(vscode): preserve inline review drafts across diff refreshes 2026-06-03 11:20:56 +02:00
Marius 0f87ebaa5d Merge pull request #10831 from Kilo-Org/omniscient-seed
fix: keep post-compaction replies ordered
2026-06-03 11:14:08 +02:00
kirillk b2b34a8032 test(kilo-jetbrains): align config action expectations 2026-06-03 00:28:18 -04:00
kirillk 3462fa0122 fix(kilo-jetbrains): address config review feedback 2026-06-02 23:59:53 -04:00
kirillk 2a05e02528 fix(jetbrains): reuse editor style font in markdown 2026-06-02 23:36:24 -04:00
kirillk 7d1f6ae5ff fix(cli): type zstd worker helpers 2026-06-02 23:32:40 -04:00
kirillk cf9a0a4881 fix(kilo-jetbrains): preserve empty model selection 2026-06-02 23:31:32 -04:00
kirillk 27feaa02b1 Merge remote-tracking branch 'origin/main' into crystalline-dive
# Conflicts:
#	packages/kilo-jetbrains/backend/src/main/kotlin/ai/kilocode/backend/app/KiloBackendConnectionService.kt
#	packages/opencode/src/kilocode/worktree-family.ts
#	packages/opencode/test/kilocode/worktree-family-submodule.test.ts
2026-06-02 23:14:40 -04:00
kirillk 9479852891 Merge branch 'main' into generated-flame 2026-06-02 23:09:32 -04:00
kirillk 7c121dbbfd fix(cli): update worktree family effect test 2026-06-02 23:07:34 -04:00
kirillk e86d44514b fix(kilo-jetbrains): restore last kilo settings page 2026-06-02 23:02:16 -04:00
kirillk 87b0cf15dd fix(jetbrains): use semantic session timeline colors 2026-06-02 22:59:03 -04:00
kirillk d470859480 fix(kilo-jetbrains): shorten cli action labels 2026-06-02 22:41:37 -04:00
kirillk d3e189a903 fix(kilo-jetbrains): resolve config action labels 2026-06-02 22:36:14 -04:00
kirillk 8c06a3b784 fix(jetbrains): improve session UI retained updates 2026-06-02 22:26:29 -04:00
kirillk 138a58f80f feat(kilo-jetbrains): add settings config file actions 2026-06-02 21:07:20 -04:00
kirillk 750bb77899 fix(jetbrains): confine session subscriptions to EDT 2026-06-02 20:57:50 -04:00
kirillk 7e856a57c4 fix(kilo-jetbrains): polish profile and picker UI 2026-06-02 18:05:17 -04:00
kirillk 56b0834db5 fix(jetbrains): dispose hidden session UIs after timeout 2026-06-02 18:03:24 -04:00
kirillk ebeb65ad77 refactor(kilo-jetbrains): unify settings base lifecycle 2026-06-02 17:26:49 -04:00
kirillk b4ac8fac44 refactor(kilo-jetbrains): move settings workspace lifecycle to base 2026-06-02 17:19:45 -04:00
kirillk 7adb134f24 chore(jetbrains): add session event log helper 2026-06-02 17:15:20 -04:00
kirillk fe4d6b940f docs(jetbrains): document session event logging 2026-06-02 17:13:22 -04:00
kirillk d001785626 fix(jetbrains): preserve streamed chat markdown 2026-06-02 17:10:07 -04:00
Catriel Müller 5e7e158503 Merge pull request #10833 from Kilo-Org/worried-crabapple
Keep Kilo Console terminals stable during refresh
2026-06-02 18:06:56 -03:00
kirillk b2a989f5c3 refactor(kilo-jetbrains): centralize settings EDT checks 2026-06-02 16:54:32 -04:00
kirillk da86d255b0 refactor(kilo-jetbrains): extract base settings UI 2026-06-02 16:50:40 -04:00
Catriel Müller fbacc312f7 refactor: add favicon 2026-06-02 17:31:24 -03:00
Catriel Müller 8696edcb54 fix(cli): keep console terminals stable during refresh 2026-06-02 17:20:36 -03:00
kirillk 9d43f4dde6 fix(kilo-jetbrains): stabilize model settings saves 2026-06-02 15:59:07 -04:00
Aarav ab62726d38 fix(docs): correct skills.urls format to use .well-known/skills/ index.json (#10756) 2026-06-02 21:29:26 +02:00
Marius 7d23ad570d Merge pull request #10823 from Kilo-Org/perf/vscode-slim-transcript-payload
perf(vscode): reduce long-session switch overhead
2026-06-02 21:10:41 +02:00
Johnny Eric Amancio 60866a6383 fix(jetbrains): ignore stale SSE callbacks after restart (#10832) 2026-06-02 21:09:01 +02:00
kirillk 709efd09a2 fix(kilo-jetbrains): log settings saves 2026-06-02 14:38:14 -04:00
kirillk 2183102843 fix(kilo-jetbrains): stabilize model settings layout 2026-06-02 14:30:12 -04:00
marius-kilocode 1856776d8a revert(jetbrains): remove sync-only compatibility shim 2026-06-02 20:08:49 +02:00
kirillk 03029eea47 fix(kilo-jetbrains): surface model settings save failures 2026-06-02 13:56:23 -04:00
marius-kilocode 500c850564 fix(vscode): preserve inactive shimmer whitespace 2026-06-02 19:53:24 +02:00
marius-kilocode 837a87509c fix: keep post-compaction replies ordered 2026-06-02 19:49:24 +02:00
marius-kilocode ce3851f5bd Merge remote-tracking branch 'origin/main' into marius-kilocode/kilo-opencode-v1.14.46
# Conflicts:
#	packages/opencode/src/kilocode/session/processor.ts
#	packages/opencode/src/server/routes/instance/httpapi/groups/session.ts
#	packages/opencode/src/session/processor.ts
#	packages/opencode/src/session/prompt.ts
2026-06-02 19:49:05 +02:00
kirillk e17c4f936c fix(jetbrains): stop duplicated streaming text in chat code blocks
Replace the fragile covered/uncovered prefix dedup in SessionController with a stateless content-overlap glue: a text/reasoning delta only appends the portion that extends the current model tail. This eliminates the token-doubling (e.g. "importimport", "ReadRead a file") that occurred when multiple PartUpdated snapshots landed before the lagging PartDelta stream caught up.

Also adds a MdViewHybrid fast path that grows the trailing code view in place while inside an open fenced code block, skipping the full commonmark re-parse and block diff per token, with html() recomputed lazily when stale.
2026-06-02 13:31:03 -04:00
marius-kilocode ba9f6868dd docs(vscode): broaden session switch release note 2026-06-02 19:25:16 +02:00
marius-kilocode 47111c02c0 perf(vscode): avoid inactive shimmer markup 2026-06-02 19:23:38 +02:00
Marius f7641c1b4d Merge pull request #10829 from Kilo-Org/screeching-dedication
fix(cli): restore Agent Manager session forks
2026-06-02 19:17:36 +02:00
Marius 89a81416f1 Merge pull request #10806 from Kilo-Org/orderly-dinosaur
fix(vscode): harden marketplace skill installs
2026-06-02 19:15:20 +02:00
Joshua Lambert 4cf8e5307f Merge pull request #10692 from Kilo-Org/fix/shell-permission-show-description
fix(vscode): show shell command description in permission approval prompt
2026-06-02 13:15:06 -04:00
kirillk ede4369ba3 fix(kilo-jetbrains): show settings progress as overlay 2026-06-02 13:00:40 -04:00
marius-kilocode e6898387fb test(cli): stabilize shell cancellation wait 2026-06-02 18:58:09 +02:00
marius-kilocode e64c1fb65e fix(cli): restore bodyless session forks 2026-06-02 18:41:57 +02:00
marius-kilocode ad847d3e36 Merge branch 'main' into perf/vscode-slim-transcript-payload 2026-06-02 18:33:55 +02:00
Catriel Müller bff5546bdd Merge pull request #10826 from Kilo-Org/revert-10800-troubled-hawk
Revert "fix: suppress false incomplete response warnings"
2026-06-02 13:32:55 -03:00
marius-kilocode 344df31dcf Merge remote-tracking branch 'origin/main' into marius-kilocode/kilo-opencode-v1.14.46
# Conflicts:
#	packages/opencode/src/config/provider.ts
2026-06-02 18:30:26 +02:00
Catriel Müller 5a5a7524fc Revert "fix: suppress false incomplete response warnings" 2026-06-02 13:15:39 -03:00
Josh Lambert b06b42d2e3 feat(kilo-vscode): support promoted model deep links 2026-06-02 12:15:24 -04:00
marius-kilocode 6abcc0d071 docs(kilo-docs): document inline session renaming 2026-06-02 17:51:07 +02:00
marius-kilocode 623821ced5 perf(vscode): slim transcript payloads 2026-06-02 17:25:59 +02:00
kirillk 2a3975ea29 fix(jetbrains): support copying session text 2026-06-02 10:31:45 -04:00
kilo-code-bot[bot] 0e60d0fd7e revert: sort permission exceptions (#10808) (#10818)
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-06-02 16:28:38 +02:00
Marius a9988ba07c Merge pull request #10810 from Kilo-Org/prism-purchase
fix(vscode): defer collapsed historical tool details
2026-06-02 16:17:59 +02:00
marius-kilocode aeef0df2f9 resolve merge conflicts 2026-06-02 16:13:31 +02:00
kilo-maintainer[bot] 75ed1a1ebb chore: update nix node_modules hashes 2026-06-02 14:09:27 +00:00
marius-kilocode 394536837c style(vscode): mark timeline tooltip non-interactive 2026-06-02 15:59:19 +02:00
Igor Šćekić 8aaa62c794 Session export capture (#10611)
* feat(session-export): scaffold module with config constants

* feat(session-export): add zstd compression wrapper

* feat(session-export): event and envelope type definitions

* feat(session-export): eligibility check with kill-switch

* feat(session-export): org signal collector with auth resolver

* feat(session-export): worker SQLite schema and storage helpers

* feat(session-export): content-addressed chunker with zstd dedup

* feat(session-export): client-side light scrubber

* feat(session-export): IPC contract and inbox with back-pressure

* feat(session-export): persist scrubbed events with chunked payloads

* feat(session-export): worker entry point with inbox drain loop

* feat(session-export): main-thread capture module

* feat(session-export): workspace baseline and delta fibers

* feat(session-export): sync subscriber and tool io chunking

* feat(session-export): bootstrap wiring and compaction hook

* feat(session-export): wire capture hooks into sessions

* feat(session-export): uploader and buffer cap

* chore(session-export): annotate shared session hooks

* changeset(session-export): add release note

* fix(session-export): keep bootstrap non-blocking without instance context

* feat(session-export): respawn worker after failures

* test(session-export): add performance budget assertions

* test(session-export): add worker end-to-end smoke test

* fix(session-export): strip identity and high-risk baseline paths

* test(session-export): gate perf assertions for stable sweeps

* fix(session-export): bundle worker in single-file builds

* fix(session-export): make capture envelopes cloneable

* fix(session-export): drain worker on CLI shutdown

* feat(session-export): capture workspace baseline and deltas

* fix(session-export): preserve request metadata

* test(session-export): cover request metadata capture

* feat(cli): send indexed session export batches

* feat(cli): authorize session export uploads

* fix(cli): flush session export shutdown uploads

* feat(cli): optimize session export replay payloads

* fix(cli): include session export surface metadata

* fix(session-export): decrement chunk refs after upload

decRefChunks was never called, so chunk ref_count stayed at 1 (or
higher with dedup) and DELETE FROM chunk WHERE ref_count <= 0 never
matched. Chunks accumulated in the local SQLite buffer until the 50 GB
cap. Call decRefChunks alongside markUploaded so deleteUploaded can
reclaim the rows.

* fix(session-export): add periodic uploader flush timer

flushIntervalMs and retryBackoffMaxMs were both defined in config and
neither was referenced anywhere; scheduleFlush only ran on inbound
events or reconnect. After a 5xx or network failure the row was backed
off for 1 s, but if no further event arrived the retry never fired and
the events stranded until the CLI restarted. Drive a periodic flush
from a setInterval, unref the handle so it doesn't pin the process, and
clear it from a new dispose() hook the worker calls on shutdown.

* fix(session-export): stop emitting absolute workspace root in baseline

CaptureMetadata.root was the literal absolute filesystem path
(/Users/<name>/Projects/<repo>), shipped in every
workspace_baseline_completed event and not stripped by handlers'
identity filter. The field was set but never read anywhere downstream
— file paths in the baseline are already relative, so the root added
no replay signal. Remove the field outright.

* fix(session-export): cap pendingEvents result set

The SELECT had no LIMIT clause, so under a backlog (network outage,
crashed receiver) it would materialize the full pending table into a
JavaScript array before the byte-limit truncation applied. With a
50 GB buffer cap that is hundreds of MB of heap inside the worker per
drain. Add LIMIT 500 — the drain loop already re-queries until empty,
so no events are missed.

* fix(session-export): exponential retry backoff up to retryBackoffMaxMs

Both the 5xx and network-error branches always retried after the floor
delay regardless of how many attempts had already failed, and
retryBackoffMaxMs was unreferenced. During a sustained outage every
session re-tried at roughly 1 Hz against the dead receiver. Surface
upload_attempts on EventRow and compute the next delay as
min * 2^attempts capped at max.

* fix(session-export): evict superseded workspace snapshots on remember

createWorkspaceProvider retained every captured snapshot — in-memory
and inside the persisted state file — even after the session moved on
to a newer one. For a 1k-file repo over a 100-turn session that is
~2 GB of unreachable heap plus a state file that grows monotonically.
Drop the previous snapshot for the session on remember() when no other
session still references it.

* fix(session-export): anchor aws_secret_key scrubber to key name

The bare 40-char base64 pattern matched every 40-character hex string,
including all git commit SHAs. Tool outputs, diffs, and conversation
messages were silently rewritten as <<REDACTED:aws_secret_key>>,
destroying lineage information in training data. Require the key name
context — naked secrets in unstructured text are rare and the .env /
.aws/credentials high-risk path strip already covers the common case.

* fix(session-export): preserve root linkage in SyncSubscriber events

SyncSubscriber hardcoded rootSessionId = sessionId on every tool,
permission, and feedback event, so sub-agent sessions lost their root
linkage and a future training pipeline could not reconstruct the
agent topology from these side-channel events. Expose the rootSessionId
mapping from Capture and plumb it through the same pattern as
getTurnId.

* fix(session-export): atomic chunk GC after upload

markUploaded + decRefChunks + deleteUploaded were three separate SQL
statements; a crash between markUploaded and decRefChunks would leave
events flagged uploaded (never retried) and chunks with stale
ref_count (never reclaimed by deleteUploaded). Bundle the three calls
into a single transactional commitUploaded helper so either all three
land or none of them do.

* fix(session-export): wait on transient sqlite locks

* fix(session-export): snapshot current workspace directory

* fix(cli): preserve Kilo model export metadata

* fix(cli): send anon id for session export

* fix(cli): fallback to telemetry anon id

* chore(cli): annotate session export config test

* chore: remove session export docs

* fix(cli): harden session export uploads

* fix(cli): preserve stream lifecycle for session export

* fix(kilo-docs): exclude session export ingest link

* fix(cli): restrict session export workspace sync to git repos

* chore: remove session export changeset

* fix(cli): tighten session export payload types

* fix(cli): type session export model payloads

* fix(cli): simplify session export cleanup

* fix(cli): avoid session export shutdown race

* refactor(cli): use drizzle for session export storage

* fix(cli): finalize session export sqlite statements

* fix(cli): link compaction exports to root sessions

* fix(cli): stop exporting raw stream parts

* fix(cli): prune stale workspace snapshots

* refactor(cli): clarify chunk ref counting

* test(cli): clarify dropped upload assertions

* ci: avoid visual path filter action failure

* fix(cli): preserve in-flight workspace snapshots

* fix(cli): stop uploading baseline start events

* fix(cli): trim redundant export metadata

* fix(cli): trim workspace export bookkeeping

* fix(cli): fold terminal outcome into tool exports

* fix(cli): dedupe request context in export batches

* fix(cli): normalize compaction export payloads

* fix(cli): avoid duplicate tool result exports

* test(cli): align session export expectations

* fix(cli): run secretlint during session export scrubbing

* fix(cli): keep retried export batches contiguous

* fix(cli): include agent info in session exports

* fix(cli): flush pending session exports on serve startup

* fix(cli): drop exports when scrubbing fails

* fix(cli): narrow secretlint value extraction

* fix(cli): limit exported agent info

* test(cli): remove brittle agent export source assertion

* fix(cli): ignore corrupt session export workspace state

* fix(cli): keep session export close best effort

* fix(cli): avoid following session export symlinks

* fix(cli): preserve session export chunk ref counts

* fix(cli): retry transient session export uploads

* fix(cli): validate session export ingest endpoint

* fix(cli): tolerate missing export token details

* fix(cli): fail closed on session export org lookup

* fix(cli): decode session export permission replies

* fix(cli): finalize session export on stream close

* fix(cli): bound session export baseline timeout

* fix(cli): avoid persisting workspace file contents

* fix(cli): bound workspace snapshot capture

* fix(cli): validate session export worker messages

* fix(cli): revoke stale session export eligibility

* fix(cli): scope session export workspaces

* fix(cli): extend session export shutdown flush

* fix(cli): infer free Kilo models for export

* fix(cli): avoid duplicate chunk refs

* fix(cli): throttle session export uploads

* fix(cli): harden session export capture

* feat: disclose free model data collection (#10767)

* feat: disclose free model data collection

* chore(cli): document free model footer sorting

* fix(vscode): add free model data translations

* fix: simplify free model data label

* fix: simplify data collection badges

* fix: remove duplicate model info disclosure

* fix: restore composer data tooltip

* fix: align jetbrains data collection indicator

* fix: align free model data indicators

* fix(vscode): show data collection in model preview

* fix: limit data indicators to kilo gateway

* test(cli): relax prompt cancel timeout

* test(cli): annotate prompt cancel timeout

* test(cli): classify prompt queue runtime test

* fix(cli): defer session export startup
2026-06-02 13:58:42 +00:00
marius-kilocode 28fa37d5b1 perf(vscode): share timeline tooltip and lazy-mount historical bash output 2026-06-02 15:49:59 +02:00
Catriel Müller 19b2f31451 Merge pull request #10800 from Kilo-Org/troubled-hawk
fix: suppress false incomplete response warnings
2026-06-02 09:52:00 -03:00
Johnny Eric Amancio b7764d69c1 fix: correct architect use of plan exit to save the plan file correctly (#10798)
* fix: correct architect use of plan exit to save the plan file correctly

* fix: relax rule for file creation to allow other files under user request
2026-06-02 12:47:11 +00:00
Imanol Maiztegui 0e4f8bcdeb refactor(vscode): extract editor actions from KiloProvider (#10814)
* refactor(vscode): extract editor actions from provider

* refactor(vscode): use direct import for DiffVirtualFile type

Replace inline dynamic import type assertion with the already-imported
DiffVirtualFile type at the top of the file.
2026-06-02 14:35:22 +02:00
Catriel Müller 60f4c052a3 refactor: isolate the changes inside of the kilo folders 2026-06-02 09:35:02 -03:00
Imanol Maiztegui 16341a6647 fix(vscode): keep tool handoffs out of virtual history (#10816) 2026-06-02 14:34:26 +02:00
kilo-maintainer[bot] a51affea01 chore: update nix node_modules hashes 2026-06-02 12:31:31 +00:00
Johnny Eric Amancio 9926f38e4b fix: address vulnerability on vitest dependency (#10815) 2026-06-02 14:17:11 +02:00
Catriel Müller 5dd3dc72ad chore(cli): annotate session regression changes 2026-06-02 08:57:37 -03:00
marius-kilocode 729a1ae5e4 merge: record upstream v1.14.46 2026-06-02 13:51:24 +02:00
marius-kilocode 4472e6d769 refactor: kilo compat for v1.14.46 2026-06-02 13:51:23 +02:00
Catriel Müller 1212b05d62 Merge remote-tracking branch 'origin/main' into troubled-hawk
# Conflicts:
#	packages/opencode/src/kilocode/worktree-family.ts
#	packages/opencode/src/session/prompt.ts
#	packages/opencode/test/kilocode/worktree-family-submodule.test.ts
2026-06-02 08:50:26 -03:00
Catriel Müller c9b1ee0ef0 refactor: improve the session processor 2026-06-02 08:26:47 -03:00
kilo-maintainer[bot] 3feb9d69dc release: v7.3.22 2026-06-02 11:05:45 +00:00
kilo-maintainer[bot] 7433b0d752 chore: update nix node_modules hashes 2026-06-02 10:10:38 +00:00
marius-kilocode 3f8afe83d1 test(vscode): remove obsolete marketplace race setup 2026-06-02 12:07:53 +02:00
Imanol Maiztegui f6357d8446 fix(vscode): sort permission exceptions (#10808) 2026-06-02 12:06:06 +02:00
marius-kilocode 5b34dfce3d fix(vscode): defer collapsed historical tool details 2026-06-02 12:01:11 +02:00
Marius 00337a3c58 Merge pull request #10790 from Kilo-Org/trial/kilo-opencode-v1.14.42
OpenCode v1.14.42
2026-06-02 11:56:56 +02:00
Marius 63090067a2 Merge pull request #10809 from Kilo-Org/clever-slash
docs(cli): link Agent Manager guides from config skill
2026-06-02 11:50:08 +02:00
marius-kilocode 6a071d138b Merge remote-tracking branch 'origin/main' into trial/kilo-opencode-v1.14.42
# Conflicts:
#	packages/opencode/src/cli/cmd/run.ts
2026-06-02 11:41:28 +02:00
marius-kilocode a0f800d370 docs(cli): link Agent Manager guides from config skill 2026-06-02 11:35:04 +02:00
Catriel Müller 7a420b8187 Merge pull request #9653 from truffle-dev/fix/cli-run-leading-dash-positional
fix(cli): preserve --raw atoms verbatim in run handler (#9622)
2026-06-02 06:32:51 -03:00
marius-kilocode ea6a888205 fix(cli): omit empty TUI keybind patches 2026-06-02 10:54:52 +02:00
marius-kilocode ece920c1cc Merge remote-tracking branch 'origin/main' into trial/kilo-opencode-v1.14.42
# Conflicts:
#	bun.lock
#	packages/opencode/src/cli/cmd/run.ts
#	packages/opencode/src/cli/cmd/tui/context/tui-config.tsx
#	packages/opencode/src/cli/cmd/tui/thread.ts
#	packages/opencode/src/cli/cmd/tui/ui/dialog-alert.tsx
#	packages/opencode/src/kilocode/server/httpapi/instance.ts
#	packages/opencode/src/kilocode/server/instance.ts
#	packages/opencode/src/server/routes/global.ts
#	packages/opencode/src/server/routes/instance/index.ts
#	packages/opencode/src/server/routes/ui.ts
#	packages/opencode/test/kilocode/global-config-refresh.test.ts
#	packages/opencode/test/kilocode/server/httpapi-public.test.ts
2026-06-02 10:42:14 +02:00
marius-kilocode ed3e1ac99b fix(vscode): harden marketplace skill installs 2026-06-02 10:18:30 +02:00
kilo-maintainer[bot] 1fedf7f201 release: v7.3.21 2026-06-02 05:30:05 +00:00
Catriel Müller b8ca6f7363 Merge branch 'main' of github.com:Kilo-Org/kilocode into fix/cli-run-leading-dash-positional 2026-06-01 23:49:04 -03:00
Catriel Müller 859af5033b refactor: move new changes to kilo folders 2026-06-01 23:33:44 -03:00
Catriel Müller 5079813776 Merge pull request #10298 from Githubguy132010/seen-turnip
feat(cli): add profile command
2026-06-01 22:27:07 -03:00
Catriel Müller 4ad3aa26cf Merge branch 'main' into seen-turnip 2026-06-01 22:03:27 -03:00
Catriel Müller 83892191ab Merge pull request #10191 from IamCoder18/fix/dialog-alert-newlines
fix(tui): handle newlines in DialogAlert messages
2026-06-01 22:01:45 -03:00
Catriel Müller 35f30ad344 Merge pull request #10306 from IamCoder18/fix/export-dialog-checkbox-toggle
fix(cli): toggle export dialog checkboxes on mouse click
2026-06-01 22:00:39 -03:00
Catriel Müller bca27d61c7 Merge pull request #10310 from IamCoder18/feat/subagent-running-status
feat(cli): show running spinner in subagent footer
2026-06-01 21:59:01 -03:00
kirillk cf0fd63f0f fix(kilo-jetbrains): stabilize models settings pickers 2026-06-01 19:19:07 -04:00
kirillk bee54755ff fix(jetbrains): dispose embedded markdown editors 2026-06-01 18:29:22 -04:00
kirillk 910f4a6c3d fix(kilo-jetbrains): show sign-in banner in models settings 2026-06-01 18:23:32 -04:00
kirillk fdcfe107b0 Merge remote-tracking branch 'origin/main' into certain-barnacle
# Conflicts:
#	packages/kilo-jetbrains/backend/src/main/kotlin/ai/kilocode/backend/app/KiloBackendAppService.kt
2026-06-01 18:19:28 -04:00
kirillk 746b33e0ed fix(jetbrains): expand markdown code block language resolution 2026-06-01 18:11:36 -04:00
kirillk 8bbefb3300 fix(jetbrains): avoid config update SSE race 2026-06-01 18:02:30 -04:00
kirillk cb99e77ca0 fix(jetbrains): dispose empty session feedback balloon 2026-06-01 17:34:09 -04:00
kirillk d437a4d3b5 refactor(jetbrains): refine empty session feedback UI 2026-06-01 17:24:50 -04:00
kirillk 50f4d28e07 fix(jetbrains): expand markdown code blocks 2026-06-01 17:20:11 -04:00
Catriel Müller 5ee56e29fc fix(cli): restore worktree family typecheck 2026-06-01 18:04:39 -03:00
kilo-maintainer[bot] 9f909a17de chore: update nix node_modules hashes 2026-06-01 21:00:12 +00:00
Catriel Müller 2f93185b0c fix: suppress false incomplete response warnings 2026-06-01 17:59:14 -03:00
kilo-maintainer[bot] fafeb4ff73 release: v7.3.20 2026-06-01 20:50:17 +00:00
Catriel Müller 390588912b Merge pull request #10796 from Kilo-Org/catrielmuller/limit-background-process-port-scans
fix(cli): limit background process port scans
2026-06-01 17:12:20 -03:00
Catriel Müller 942b1eb308 Merge pull request #10753 from Kilo-Org/savory-act
fix(vscode): declare Pierre worker dependency for builds
2026-06-01 17:11:49 -03:00
kirillk 253f8351ec feat(kilo-jetbrains): add models settings 2026-06-01 15:32:13 -04:00
kirillk 076d8ab136 feat(jetbrains): add empty session feedback UI 2026-06-01 15:26:02 -04:00
Catriel Müller 7b70e8f438 fix(cli): clean background process port env 2026-06-01 16:20:41 -03:00
kilo-maintainer[bot] 096a394aa4 chore: update nix node_modules hashes 2026-06-01 19:05:10 +00:00
Catriel Müller 791515ea09 fix(cli): limit background process port scans 2026-06-01 16:01:28 -03:00
Catriel Müller f79f181bd7 Merge pull request #10754 from Kilo-Org/sharp-balance
feat: introduce experimental Kilo Console
2026-06-01 15:48:59 -03:00
Catriel Müller 9c618d224f fix: fix tests 2026-06-01 15:25:51 -03:00
Joshua Lambert 04e0df57dc Apply suggestion from @lambertjosh 2026-06-01 14:14:56 -04:00
Joshua Lambert 58f18e32e9 Apply suggestion from @lambertjosh 2026-06-01 14:14:30 -04:00
Catriel Müller ffee5815ee refactor: fix promises validations 2026-06-01 14:44:10 -03:00
kirillk 9d0b9d9ebc Merge remote-tracking branch 'origin/main' into crystalline-dive
# Conflicts:
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/TextView.kt
2026-06-01 13:38:15 -04:00
Catriel Müller 525737c4f1 refactor: fix typecheck and mistral link 2026-06-01 14:23:57 -03:00
Catriel Müller 9b07af0d20 Merge branch 'main' into sharp-balance 2026-06-01 14:09:40 -03:00
Catriel Müller 16a174dcde refactor: fix typecheck 2026-06-01 14:01:41 -03:00
Catriel Müller 79ac67b3c9 refactor: merge main 2026-06-01 13:54:53 -03:00
marius-kilocode 9d2171f111 fix(core): compare canonical spawned cwd paths 2026-06-01 18:03:57 +02:00
Catriel Müller 0c1cff22ec Merge pull request #9499 from truffle-dev/fix/tui-submodule-session-worktree-family
fix(cli): include working tree in WorktreeFamily.list for submodules
2026-06-01 12:58:54 -03:00
marius-kilocode 16f0a2034a fix(core): normalize spawned cwd assertion on Windows 2026-06-01 17:50:38 +02:00
Catriel Müller 24943b1fda Merge branch 'main' into sharp-balance 2026-06-01 12:48:04 -03:00
marius-kilocode d374ae97b5 fix(core): await flock worker cleanup on Windows 2026-06-01 17:41:39 +02:00
Catriel Müller 7de2613daa fix: subpath navigation 2026-06-01 12:09:06 -03:00
Kirill Kalishev 491e97ca0d Merge pull request #10748 from Kilo-Org/visual-gruyere
feat(jetbrains): expand telemetry and environment logging
2026-06-01 11:01:44 -04:00
marius-kilocode b5213921c1 fix: preserve Kilo identity after upstream merge 2026-06-01 16:58:26 +02:00
Catriel Müller a770114b07 Merge pull request #10789 from Kilo-Org/fix/cli-queued-plan-context
fix(cli): preserve context for queued plan prompts
2026-06-01 11:52:37 -03:00
Marius b2701a51a3 Merge pull request #10793 from Kilo-Org/tranquil-lemur
fix(kilo-docs): use stable external links
2026-06-01 16:52:23 +02:00
marius-kilocode ae2a0fea34 fix(kilo-docs): use stable external links 2026-06-01 16:34:00 +02:00
marius-kilocode 6016248c42 Revert "fix(kilo-docs): ignore unstable external link checks"
This reverts commit ad7377c6bb.
2026-06-01 16:22:03 +02:00
marius-kilocode ad7377c6bb fix(kilo-docs): ignore unstable external link checks 2026-06-01 16:19:11 +02:00
Marius 4faf255e84 Merge pull request #10792 from Kilo-Org/bejewled-grain
fix(cli): allow clearing agent variant overrides
2026-06-01 16:18:08 +02:00
marius-kilocode 78bfc700ea fix: harden upstream v1.14.42 integration 2026-06-01 16:11:59 +02:00
marius-kilocode 2a264819f4 fix(cli): annotate nullable agent variant schema 2026-06-01 15:57:20 +02:00
marius-kilocode cb1fdb3b1b fix(cli): allow clearing agent variant overrides 2026-06-01 15:56:48 +02:00
Kirill Kalishev bb7988b509 Merge pull request #10774 from Kilo-Org/jetbrains-disable-root-instrumentation
fix(jetbrains): reduce flaky CI builds
2026-06-01 09:37:38 -04:00
marius-kilocode 0f271a39d7 resolve merge conflicts 2026-06-01 15:20:54 +02:00
Catriel Müller 316a6627dc fix(cli): preserve context for queued plan prompts 2026-06-01 10:15:05 -03:00
Joshua Lambert 5eaae5fddd Merge branch 'main' into savory-act 2026-06-01 08:44:57 -04:00
Marius 1eeab10b25 Merge pull request #10786 from Kilo-Org/foul-oval
fix(cli): skip background port scans in VS Code
2026-06-01 13:29:34 +02:00
marius-kilocode 41606931f0 merge: record upstream v1.14.42 2026-06-01 12:51:32 +02:00
marius-kilocode 7cc6080646 refactor: kilo compat for v1.14.42 2026-06-01 12:51:31 +02:00
Marius 33249d7efd Merge pull request #10783 from Kilo-Org/gray-jet
fix(vscode): surface backend crash recovery
2026-06-01 11:56:37 +02:00
Marius d1c2fa3990 Merge pull request #10782 from Kilo-Org/dune-earwig
fix(vscode): preserve diff scroll during agent edits
2026-06-01 11:53:33 +02:00
marius-kilocode 7dd8aabade fix(cli): skip background port scans in VS Code 2026-06-01 11:50:11 +02:00
marius-kilocode c6679eaec5 fix(vscode): route worktree permission approvals correctly 2026-06-01 11:31:38 +02:00
kilo-maintainer[bot] e4b808e267 chore: update nix node_modules hashes 2026-06-01 08:59:32 +00:00
marius-kilocode d3f8a653a3 test(vscode): update connection service stubs 2026-06-01 10:57:39 +02:00
Christiaan Arnoldus 50c45dfd1f Merge pull request #10777 from Kilo-Org/sync-ai-sdk-openai-version
chore: sync @ai-sdk/openai version across packages
2026-06-01 10:47:12 +02:00
Christiaan Arnoldus 7b4af411a5 Merge pull request #10735 from Kilo-Org/cli/opus-4-8-adaptive-thinking
feat(cli): treat opus 4.8 as adaptive thinking model like 4.7
2026-06-01 10:47:00 +02:00
marius-kilocode 695d1d0dd3 refactor(vscode): clarify diff row cache names 2026-06-01 10:45:20 +02:00
marius-kilocode c44cd78668 fix(vscode): surface backend crash recovery 2026-06-01 10:44:36 +02:00
marius-kilocode 1c06a1dbc7 fix(vscode): preserve diff scroll during agent edits 2026-06-01 10:21:48 +02:00
kiloconnect[bot] 6e62d40103 chore: sync @ai-sdk/openai version across packages 2026-06-01 07:27:17 +00:00
kirillk 980e27cfab Merge branch 'jetbrains-disable-root-instrumentation' into visual-gruyere
# Conflicts:
#	packages/kilo-jetbrains/script/test-ci.ts
2026-05-31 21:55:20 -04:00
kirillk 34c9f6ec02 fix(jetbrains): print CI Gradle stack traces 2026-05-31 21:30:59 -04:00
kiloconnect[bot] 188d22afcf fix(cli): match old opus-4.7 id-form checks for 4.8 (dot-only where 4.7 was) 2026-05-31 21:20:26 +00:00
kirillk cb066d2f3c fix(jetbrains): log telemetry backpressure 2026-05-31 16:59:31 -04:00
kirillk c545c32a18 fix(jetbrains): harden telemetry threading 2026-05-31 16:09:09 -04:00
Kirill Kalishev 943d801a0a Merge branch 'main' into jetbrains-disable-root-instrumentation 2026-05-31 15:37:19 -04:00
kirillk affc5f80c7 fix(jetbrains): skip root instrumentation in CI 2026-05-31 15:29:51 -04:00
kirillk 099b85ae47 fix(jetbrains): avoid duplicate session open telemetry 2026-05-31 15:28:18 -04:00
kirillk f087379f89 fix(jetbrains): remove sandbox telemetry prefix 2026-05-31 15:24:48 -04:00
kirillk f755792baa fix(jetbrains): keep telemetry payload on logger 2026-05-31 13:51:29 -04:00
kirillk 2e2f3d924f fix(jetbrains): keep sandbox telemetry local 2026-05-31 12:22:41 -04:00
kirillk 0d9ea23ec3 fix(jetbrains): align logging environment payload 2026-05-31 10:11:09 -04:00
Thomas Brugman 16eae9ccb1 Merge branch 'main' into seen-turnip 2026-05-31 12:25:02 +02:00
kirillk 8aa109fff1 fix(jetbrains): address telemetry review feedback 2026-05-30 17:53:17 -04:00
kirillk 9864603853 fix(jetbrains): skip root instrumentation in CI 2026-05-30 14:14:15 -04:00
Joshua Lambert 5cc89c5898 Apply suggestion from @lambertjosh 2026-05-30 11:44:59 -04:00
Kirill Kalishev 0c519f97fb Merge branch 'main' into visual-gruyere 2026-05-30 10:51:47 -04:00
Cooper Gamble f202002c85 test(cli): isolate Kilo Codex refresh fixtures 2026-05-30 02:04:01 +00:00
Cooper Gamble 14cc0e76c3 test(cli): await Codex refresh server teardown 2026-05-30 01:58:01 +00:00
Cooper Gamble e511b230ab fix(cli): serialize Codex OAuth refresh across processes 2026-05-30 01:47:34 +00:00
Catriel Müller cf85e0d51f feat: embedded kilo console 2026-05-29 21:01:45 -03:00
Josh Lambert e140e40f06 fix(vscode): declare Pierre worker dependency for builds 2026-05-29 19:55:37 -04:00
Catriel Müller 623c9275f2 refactor: optional daemon mode 2026-05-29 19:50:09 -03:00
Catriel Müller 1c675ab241 refactor: update bun lock 2026-05-29 19:35:45 -03:00
Catriel Müller c0eda12dab feat: lsp & formatters pages 2026-05-29 19:35:30 -03:00
Joshua Lambert ad908e2839 Merge pull request #10750 from Kilo-Org/backfill-changelog-7.3.16-7.3.18
chore: backfill changelogs for v7.3.16 through v7.3.18
2026-05-29 18:26:56 -04:00
Joshua Lambert 065ece7883 Merge pull request #10749 from Kilo-Org/handsomely-wool
fix: stop publishing without changelog updates
2026-05-29 18:26:00 -04:00
Josh Lambert 6e8d6f7d53 docs(cli): clarify API key session sync scope 2026-05-29 18:17:31 -04:00
Josh Lambert eb4df315c1 fix(cli): sync headless sessions authenticated by API key 2026-05-29 17:52:32 -04:00
Josh Lambert 7dbc710725 chore: backfill changelogs for v7.3.16 through v7.3.18 2026-05-29 17:50:41 -04:00
Josh Lambert 6c6e10c1fb fix: stop publishing without changelog updates 2026-05-29 17:27:33 -04:00
github-actions[bot] 671340a5a4 chore: update kilo-vscode visual regression baselines 2026-05-29 21:00:13 +00:00
Josh Lambert eadfb2b80a fix(vscode): clarify shell permission command preview 2026-05-29 16:54:22 -04:00
Kirill Kalishev 8b2357a070 Merge branch 'main' into visual-gruyere 2026-05-29 16:27:56 -04:00
kirillk 846e6f656e fix(jetbrains): remove direct startup telemetry 2026-05-29 16:26:43 -04:00
Catriel Müller 528878c6b3 refactor: refactor settings 2026-05-29 17:20:27 -03:00
kirillk f0200f9224 feat(jetbrains): expand plugin telemetry coverage 2026-05-29 15:58:43 -04:00
Kirill Kalishev bad462990f Merge pull request #10747 from Kilo-Org/slime-grip
docs(kilo-docs): improve tabbed install docs
2026-05-29 15:56:49 -04:00
kirillk 0aaff89565 docs(jetbrains): update agent guidance 2026-05-29 15:23:08 -04:00
kirillk d97348757c fix(jetbrains): enable rc file logging 2026-05-29 15:13:38 -04:00
kirillk c23be8a170 docs(kilo-docs): address tab TOC review 2026-05-29 15:00:48 -04:00
kirillk bfe3ae9e3b feat(jetbrains): report cli connection failures 2026-05-29 14:49:32 -04:00
kirillk 91bbeca691 docs(kilo-docs): improve JetBrains install anchors 2026-05-29 14:49:19 -04:00
kirillk 6d76e3a3d7 fix(jetbrains): remove telemetry event prefix 2026-05-29 14:28:51 -04:00
Kirill Kalishev dc46dca885 Merge pull request #10745 from Kilo-Org/gilded-flower
docs(jetbrains): link v7 early access guide
2026-05-29 14:00:11 -04:00
kirillk e762c48ec8 feat(jetbrains): add telemetry reporting 2026-05-29 13:59:24 -04:00
kirillk 96bbac6a7a docs(jetbrains): rename early access anchor 2026-05-29 13:27:01 -04:00
kirillk 2f7996c600 docs(jetbrains): link v7 early access guide 2026-05-29 13:24:15 -04:00
Kirill Kalishev f366bb5241 Merge pull request #10706 from Kilo-Org/jetbrains/release/v7.0.1-rc.4
release(jetbrains): v7.0.1-rc.4
2026-05-29 12:42:33 -04:00
Imanol Maiztegui 69f8307da1 fix(jetbrains): emit log warnings before updating state values (#10743)
Reorder statements in KiloBackendAppService and KiloBackendWorkspace so
that warning/error logging occurs before the reactive state is updated.
This ensures observers reacting to state changes can rely on warnings
already being recorded in logs.
2026-05-29 16:30:01 +00:00
kilo-maintainer[bot] 9721cf9f4e release: v7.3.18 2026-05-29 16:27:57 +00:00
Kirill Kalishev e0e1501090 Merge branch 'main' into jetbrains/release/v7.0.1-rc.4 2026-05-29 12:26:44 -04:00
Marius cb5686dd38 Merge pull request #10730 from Kilo-Org/swamp-ornament
fix(vscode): keep large Changes diffs smooth while scrolling
2026-05-29 18:22:13 +02:00
kilo-maintainer[bot] 7bbac24c69 chore: update nix node_modules hashes 2026-05-29 16:16:02 +00:00
Imanol Maiztegui 57bc6eea58 fix(cli): route share links through Kilo session API (#10736)
* fix(cli): route share links through Kilo session API

Refactor shareSession and unshareSession to return Effect values using
EffectBridge.fromPromise and replace the ShareNext dependency in
SessionShare with KiloSession calls so CLI-generated share URLs point
to app.kilo.ai/s/ public links.

* test(session-share): replace EffectBridge usage with direct Storage service calls

Update session-share test to use Storage.Service directly instead of
wrapping Storage.write in EffectBridge.fromPromise, aligning test code
with the refactored service-based architecture. Add Storage.defaultLayer
to the test effect layer composition.
2026-05-29 12:15:42 -04:00
kirillk fb6e241b97 fix(jetbrains): use gradle release metadata 2026-05-29 12:14:43 -04:00
Marius f069c73006 Merge branch 'main' into swamp-ornament 2026-05-29 18:06:11 +02:00
Marius 979cb7e2ab Merge pull request #10740 from Kilo-Org/feature-read-xlsx-extraction
feat(cli): support XLSX text extraction in read tool
2026-05-29 18:02:30 +02:00
kirillk dfe3961087 fix(jetbrains): preserve plugin package version 2026-05-29 11:45:33 -04:00
Imanol Maiztegui 16d7caa23c feat(config): add kilo-jetbrains package to upstream merge config (#10742) 2026-05-29 15:45:24 +00:00
kilo-maintainer[bot] 4dd7b20d3f chore: update nix node_modules hashes 2026-05-29 15:33:58 +00:00
kirillk 4ee8b4b63f release(jetbrains): restore unreleased changelog marker 2026-05-29 11:29:49 -04:00
Marius 431baf09ef Merge pull request #10594 from Ipsumlorem/codex/fix-windows-speech-input
fix(vscode): detect Windows speech input devices
2026-05-29 17:25:41 +02:00
marius-kilocode 277d09d636 Merge remote-tracking branch 'origin/main' into feature-read-xlsx-extraction
# Conflicts:
#	packages/opencode/src/tool/read.ts
2026-05-29 17:22:42 +02:00
Rietie ebe04b9913 Merge pull request #10734 from Kilo-Org/readme-hero-refresh
docs: refresh README hero
2026-05-29 17:17:03 +02:00
Marius 1bdc24cebc Merge pull request #10737 from Kilo-Org/feature-read-docx-extraction
feat(cli): support DOCX text extraction in read tool
2026-05-29 17:13:53 +02:00
Rietie f04947b844 Merge pull request #10691 from Kilo-Org/fix/keywords-remove-dashes
fix(vscode): replace dashes with spaces in marketplace keywords
2026-05-29 17:09:19 +02:00
Marius aec4c4f0f0 Merge pull request #10727 from Kilo-Org/effect-question-facade-10720
refactor(cli): remove Question compatibility facade
2026-05-29 17:07:25 +02:00
marius-kilocode f7830cb7e5 fix(cli): bound XLSX read input size 2026-05-29 16:59:16 +02:00
marius-kilocode c1d315c987 refactor(cli): narrow DOCX read routing and surface warnings 2026-05-29 16:59:16 +02:00
Kirill Kalishev 7907754a7c Merge branch 'main' into jetbrains/release/v7.0.1-rc.4 2026-05-29 10:55:50 -04:00
Marius 2c7eeaa0b1 Merge pull request #10739 from Kilo-Org/fix/read-notebook-guard
refactor(cli): make notebook read routing explicit
2026-05-29 16:55:36 +02:00
Catriel Müller 0ef8e5e0a5 refactor: hot reload tui configs 2026-05-29 11:54:34 -03:00
Kirill Kalishev 3a8949a6bc Merge branch 'main' into jetbrains/release/v7.0.1-rc.4 2026-05-29 10:53:11 -04:00
marius-kilocode 752807394d Merge origin/main into effect-question-facade-10720 2026-05-29 16:52:49 +02:00
Thomas Brugman f061af639e fix(cli): use auth service for profile command 2026-05-29 16:50:53 +02:00
kilo-maintainer[bot] 3f6de75f36 release: v7.3.17 2026-05-29 14:49:26 +00:00
marius-kilocode 2081af2b33 feat(cli): support XLSX text extraction in read tool 2026-05-29 16:49:08 +02:00
marius-kilocode 6ab07aad60 fix(vscode): preserve DirectShow microphone display names 2026-05-29 16:45:52 +02:00
marius-kilocode 1ed120a15e Merge remote-tracking branch 'origin/main' into feature-read-docx-extraction
# Conflicts:
#	packages/opencode/src/tool/read.ts
2026-05-29 16:43:32 +02:00
marius-kilocode 8465e7707a refactor(cli): make notebook read routing explicit 2026-05-29 16:41:15 +02:00
kiloconnect[bot] 8b530ac768 docs(cli): clarify opus 4.8 changeset as bedrock reasoning fix 2026-05-29 14:37:56 +00:00
Marius ac4536a11c Merge pull request #10733 from Kilo-Org/feature-read-ipynb-content
feat(cli): read Jupyter notebooks as cell content
2026-05-29 16:36:05 +02:00
Thomas Brugman 04b54c0d9e Merge branch 'main' into seen-turnip 2026-05-29 16:31:03 +02:00
kiloconnect[bot] 56b40c9a6c chore: add temporary PR description file 2026-05-29 14:29:10 +00:00
marius-kilocode f5742940cc feat(cli): support DOCX text extraction in read tool 2026-05-29 16:24:48 +02:00
Imanol Maiztegui e4c9b4363e refactor(session): replace promise facade helpers with Effect service calls (#10731)
Migrate all Session.* promise-based helper usage (create, get, messages,
updateMessage, updatePart, setPermission, children, fork) to direct
Effect service consumption via Session.Service. This eliminates the
makeRuntime-backed legacy promise wrappers from session.ts and updates
all dependent modules and tests to use the Effect-based interface.

Key changes:
- Remove exported promise helpers (create, get, messages, etc.) from
  session/session.ts along with the module-level makeRuntime instance
- Update kilo-sessions, remote-sender, allow-everything permission,
  plan-followup, recall tool, and fork module to yield Session.Service
- Convert remapChildren from async function to Effect generator
- Add PlanFollowupRuntime.session helper for effectful session access
- Update all affected test files to use Effect.runPromise with
  Session.Service.use pattern
- Remove session/session.ts from the promise facade allowlist and
  update test allowlist counts accordingly
2026-05-29 16:19:15 +02:00
kiloconnect[bot] a55c854f4e fix(cli): annotate opus 4.8 changes and use array-form id checks 2026-05-29 14:10:54 +00:00
marius-kilocode f743b545b1 fix(vscode): restrict diff worker CSP source
The bundled Shiki worker is created only from its injected webview resource URI, and Pierre does not construct blob-backed workers. Restrict worker-src to the webview source and lock the narrower policy in unit coverage.
2026-05-29 16:10:33 +02:00
marius-kilocode cec9f6fc05 fix(cli): describe notebooks without readable cells 2026-05-29 16:09:24 +02:00
marius-kilocode 470e59fd52 fix(cli): tolerate malformed notebook cells 2026-05-29 15:58:52 +02:00
kiloconnect[bot] 593903fb5c feat(cli): treat opus 4.8 as adaptive thinking model like 4.7 2026-05-29 13:56:03 +00:00
Job Rietbergen 65ae6be7c6 docs(vscode): refresh marketplace README hero 2026-05-29 15:54:39 +02:00
Job Rietbergen 43cd552da2 docs: update README IDE link 2026-05-29 15:49:41 +02:00
Job Rietbergen 127c2c87c5 docs: refresh README hero 2026-05-29 15:44:14 +02:00
marius-kilocode 4967c22861 feat(cli): read Jupyter notebooks as cell content 2026-05-29 15:36:33 +02:00
Kirill Kalishev fb9bf6423d Merge branch 'main' into jetbrains/release/v7.0.1-rc.4 2026-05-29 09:32:08 -04:00
Kirill Kalishev 6c6e511e4a initial release change notes 2026-05-29 09:28:28 -04:00
marius-kilocode 830de58395 fix(vscode): register diff worker for knip
The webview worker adapter is reached through an esbuild alias rather than a TypeScript import, so Knip must treat it as an explicit entrypoint for the VS Code CI check to pass.
2026-05-29 15:10:16 +02:00
Marius ec3d7a3f67 Merge pull request #10721 from Kilo-Org/valley-hawk
fix(agent-manager): keep slow snapshot initialization non-blocking
2026-05-29 15:07:00 +02:00
marius-kilocode 588baec905 Merge remote-tracking branch 'origin/main' into swamp-ornament 2026-05-29 15:06:31 +02:00
marius-kilocode dbb7215cf9 docs(vscode): record diff rendering performance invariants
Document the patch-bounded rendering requirement and correct Chrome trace attribution so future optimizations do not reintroduce full-file gray placeholders or mistake profiler delivery threads for execution threads.
2026-05-29 15:01:38 +02:00
marius-kilocode 9df433cc27 fix(vscode): render review diffs from hunk patches
Eager review rendering must not rebuild complete before/after contents when a tiny patch occurs inside a large source file. Preserve existing unified patches through Changes sources, parse them behind the deferred visibility gate, and use eager rendering only for patch-backed detail so gray placeholders clear without regressing session switching.
2026-05-29 14:59:35 +02:00
kilo-maintainer[bot] 0280cfca99 chore: update nix node_modules hashes 2026-05-29 12:55:25 +00:00
marius-kilocode c4b2bb02de Merge remote-tracking branch 'origin/main' into valley-hawk 2026-05-29 14:52:30 +02:00
Marius bc2e7942f1 Merge pull request #10680 from Kilo-Org/test-vscode-a11y-coverage-10673
test(vscode): enforce scoped webview accessibility coverage
2026-05-29 14:44:24 +02:00
Marius 1fd2b9c945 Merge pull request #10686 from Kilo-Org/fix-a11y-history-10672
fix(vscode): make session history accessible to screen readers
2026-05-29 14:43:32 +02:00
Marius 9945eb6fba Merge pull request #10688 from Kilo-Org/fix-vscode-a11y-model-picker
fix(vscode): make model selection accessible to screen readers
2026-05-29 14:42:51 +02:00
marius-kilocode d836e84d5c Merge origin/main into effect-question-facade-10720 2026-05-29 13:26:46 +02:00
Catriel Müller 520ee03d80 refactor: scope and project settings links 2026-05-29 08:25:18 -03:00
Marius 1cc2c5b865 Merge pull request #10726 from Kilo-Org/effect-session-prompt-facade-10723
refactor(cli): remove SessionPrompt promise facade
2026-05-29 13:11:56 +02:00
github-actions[bot] 6731c1dd50 chore: update kilo-vscode visual regression baselines 2026-05-29 11:10:08 +00:00
marius-kilocode e9bbd4deaf fix(vscode): translate history accessibility labels in Italian 2026-05-29 13:07:00 +02:00
marius-kilocode fb5b5ebf17 Merge remote-tracking branch 'origin/main' into fix-a11y-history-10672 2026-05-29 13:05:04 +02:00
Marius 4d1439eb0c Merge pull request #10703 from barzhomi/fix/lancedb-metadata-type-corruption
fix(indexing): prevent LanceDB metadata type coercion causing full re-index on restart
2026-05-29 12:59:25 +02:00
Marius bc1176242b Merge pull request #10674 from Kilo-Org/session/agent_889409bf-00dd-4caf-a3a0-4b1f84fe03ba
feat(vscode): add BYOK Gateway link in provider connect dialog footer
2026-05-29 12:52:57 +02:00
Catriel Müller 2972acf0f5 refactor: simplify upstream mod 2026-05-29 07:52:12 -03:00
marius-kilocode a5781d1f11 Merge branch 'main' into session/agent_889409bf-00dd-4caf-a3a0-4b1f84fe03ba 2026-05-29 12:39:26 +02:00
marius-kilocode 41729dcb59 fix(vscode): localize BYOK gateway footer link 2026-05-29 12:28:44 +02:00
marius-kilocode 51ce1b82b3 fix(vscode): offload diff highlighting to a worker and render review diffs eagerly
Diff syntax highlighting ran synchronously on the webview main thread because the Shiki worker was stubbed out (the webview CSP blocked workers), so scrolling large diffs froze the UI. Bundle the Shiki worker as a dist asset, load it from an injected webview URI, and allow it via a scoped worker-src CSP directive so highlighting runs off the main thread. With highlighting off-thread, normal-sized review files now render their diffs eagerly instead of going through Pierre's per-instance virtualizer, which avoids the re-render-all storms that rebuilt thousands of rows on every height change. Large files and an aggregate per-review budget keep eager DOM bounded.
2026-05-29 12:21:15 +02:00
marius-kilocode 5980ac0272 test(cli): annotate Question migration coverage 2026-05-29 12:18:05 +02:00
marius-kilocode daef31e98a refactor(cli): remove SessionPrompt promise facade 2026-05-29 12:15:52 +02:00
marius-kilocode e4095af8d3 refactor(cli): remove Question compatibility facade 2026-05-29 12:15:48 +02:00
Aarav 3268badb6a docs: clarify per-directory AGENTS.md loading behavior (#10707)
Per-directory AGENTS.md files are dynamically loaded when the agent
reads files in that directory, not pre-loaded at session start. This
is injected as <system-reminder> tags during file access, providing
context-sensitive instructions for monorepos and large projects.
2026-05-29 12:10:27 +02:00
Marius 49062e7992 Merge pull request #10609 from Kilo-Org/neat-cyclamen
fix(vscode): add context handoff for forked sessions
2026-05-29 12:00:22 +02:00
Marius c18cd6fa4a Merge pull request #10668 from Kilo-Org/melodious-forest
feat: remove semantic indexing experimental gate
2026-05-29 11:58:36 +02:00
Marius 335dd925fe Merge pull request #10669 from Kilo-Org/peppered-behavior
feat(cli): guide Agent Manager recall usage
2026-05-29 11:56:49 +02:00
marius-kilocode f46a74a38d Merge remote-tracking branch 'origin/main' into valley-hawk
# Conflicts:
#	packages/opencode/src/snapshot/index.ts
2026-05-29 11:49:43 +02:00
marius-kilocode 2efa216ee5 fix(agent-manager): keep slow snapshot initialization non-blocking 2026-05-29 11:41:13 +02:00
Marius cf9b7ea421 Merge pull request #10715 from Kilo-Org/effect-permission-facade-10713
refactor(cli): remove Permission promise facade
2026-05-29 11:28:51 +02:00
Ligia Zanchet 4c773ebba1 Merge pull request #10698 from Kilo-Org/docs/vscode-proxy-ca-approved-isolated
Docs: add VS Code proxy and CA troubleshooting
2026-05-29 11:24:13 +02:00
Marius fd000ffadb Merge pull request #10718 from Kilo-Org/quaint-gate
docs: clarify shared snapshot guard scope
2026-05-29 11:21:42 +02:00
marius-kilocode e737fdda4a test(cli): remove runtime-coupled permission setup 2026-05-29 11:11:40 +02:00
marius-kilocode cd3dc7ed58 Merge remote-tracking branch 'origin/main' into effect-permission-facade-10713
# Conflicts:
#	script/check-opencode-promise-facades.ts
2026-05-29 11:07:27 +02:00
marius-kilocode 3dbf5f3454 test(cli): isolate Permission runtime boundaries 2026-05-29 11:05:54 +02:00
Marius 195f2c3679 Merge pull request #10717 from Kilo-Org/effect-vcs-facade-10712
refactor(cli): remove legacy Vcs facade
2026-05-29 10:51:45 +02:00
marius-kilocode 8dfa440c5c docs: clarify shared snapshot guard scope 2026-05-29 10:47:54 +02:00
marius-kilocode bcc2b486de Merge remote-tracking branch 'origin/main' into effect-vcs-facade-10712
# Conflicts:
#	script/check-opencode-promise-facades.ts
2026-05-29 10:24:54 +02:00
marius-kilocode 8511dcbd42 Merge remote-tracking branch 'origin/main' into effect-permission-facade-10713 2026-05-29 10:24:43 +02:00
Imanol Maiztegui 499cd78c0a chore: remove provider/provider.ts from promise facade allowlist (#10716) 2026-05-29 08:23:46 +00:00
Ligia Zanchet 719c3bc70c Merge pull request #10701 from Kilo-Org/docs/kiloclaw-approved-public
Docs: update KiloClaw public docs
2026-05-29 10:02:51 +02:00
marius-kilocode ff88d61175 refactor(cli): remove legacy Vcs facade 2026-05-29 09:57:41 +02:00
marius-kilocode e28cb43b7e refactor(cli): remove Permission promise facade 2026-05-29 09:55:59 +02:00
github-actions[bot] d62163ba9e chore: update kilo-vscode visual regression baselines 2026-05-29 07:34:53 +00:00
marius-kilocode 96d2d3addb fix(vscode): preserve model preview interactions 2026-05-29 09:32:07 +02:00
marius-kilocode e748140648 fix(vscode): restore focus after canceling history deletion 2026-05-29 09:29:28 +02:00
Imanol Maiztegui 8f225e2eec Remove wrappers for Provider service (#10658)
* refactor(opencode): remove legacy Provider promise wrappers in favor of Effect service usage

Replace static `Provider.list`, `Provider.getModel`, `Provider.getLanguage`,
`Provider.getSmallModel`, and `Provider.defaultModel` promise helpers with
direct `Provider.Service.use()` calls through `AppRuntime.runPromise`. This
eliminates the `makeRuntime` import and the wrapper functions that bypassed
the Effect dependency injection system.

- Remove legacy promise helpers from provider.ts
- Update kilo-sessions, roll-call, commit-message, enhance-prompt, and
  task tool to use Provider.Service via AppRuntime directly
- Thread Provider.Interface into KiloTask.select for proper DI
- Add Provider.defaultLayer to test layers that exercise TaskTool
- Update commit-message tests to spy on CommitMessageRuntime.model()

* docs(sdk): regenerate v2 SDK types and update edit endpoint description
2026-05-29 09:24:56 +02:00
Kirill Kalishev b28d5905d5 Update CHANGELOG.md 2026-05-28 23:27:03 -04:00
kilo-maintainer[bot] c54a5b370c release(jetbrains): v7.0.1-rc.4 2026-05-29 01:10:57 +00:00
Kirill Kalishev 2d03c428ea Merge pull request #10627 from Kilo-Org/oxidized-glasses
ci(jetbrains): lock release source before reviewed publish
2026-05-28 21:06:14 -04:00
Catriel Müller 7e4c297abd refactor: hot reload permissions 2026-05-28 21:58:00 -03:00
kilo-maintainer[bot] 8882b523e3 release: v7.3.16 2026-05-28 21:19:11 +00:00
Bazhen Rzheutskii eeff6d9df8 fix(indexing): address review — remove redundant String() casts, add changeset 2026-05-29 00:41:08 +04:00
Bazhen Rzheutskii 13cbb35977 fix(indexing): prevent LanceDB metadata type coercion causing full re-index on restart
LanceDB infers the value column type from the first row in _createMetadataData().
Since vector_size (1024) was stored as a number, all subsequent string values
(embedding_provider, embedding_model_id) and booleans (indexing_complete) were
silently coerced to NaN/0/1, corrupting metadata.

On restart, _getStoredEmbeddingProfile() received NaN values, causing
needsRecreation=true every time — the database was dropped and recreated,
the file-hash cache cleared, and a full re-index triggered on every VS Code reopen.

Store all metadata values as strings to ensure consistent column type.
2026-05-29 00:30:43 +04:00
kirillk 6fa2e7b21c Merge remote-tracking branch 'origin/oxidized-glasses' into oxidized-glasses 2026-05-28 16:23:00 -04:00
kirillk 9a6d4d8595 fix(jetbrains): harden release publishing 2026-05-28 16:21:43 -04:00
Evan Jacobson 820dfb0889 Docs: document webhook trigger overview 2026-05-28 14:06:31 -06:00
Evan Jacobson e9f5011987 Docs: update KiloClaw public docs 2026-05-28 14:06:19 -06:00
Evan Jacobson 762c6c3171 Docs: update mobile Kilo Pass link 2026-05-28 14:06:09 -06:00
Evan Jacobson 00882a01e6 Docs: add DoltHub coverage 2026-05-28 14:05:56 -06:00
Evan Jacobson 71936e6137 Docs: add VS Code proxy and CA troubleshooting 2026-05-28 14:05:43 -06:00
Evan Jacobson 60b29b9bc1 Docs: update Kilo Pass links 2026-05-28 14:05:31 -06:00
Evan Jacobson 42ef313c0f Docs: document organization custom modes 2026-05-28 14:04:44 -06:00
kirillk 4c65bf5751 Merge remote-tracking branch 'origin/main' into oxidized-glasses 2026-05-28 16:00:48 -04:00
Alessandro Saglia 663fbdb585 feat: add Italian language support (#9796)
* feat(i18n): support Italian in desktop app

Add Italian translations for the app, shared UI, and Kilo-specific strings.
Register the Italian locale in the app language picker.

* feat(vscode): add Italian language support

* fix(i18n): polish Italian translations

* fix(i18n): complete Italian translations

* style(vscode): format Italian locale files

* fix(i18n): add DeepSeek Italian provider note

---------

Co-authored-by: Johnny Amancio <johnnyeric@gmail.com>
2026-05-28 19:52:02 +00:00
Kirill Kalishev 4042872f77 Merge pull request #10638 from Kilo-Org/brave-newspaper
fix(jetbrains): address plugin verification and UI polish
2026-05-28 15:48:52 -04:00
Kirill Kalishev 35b9381a99 Merge branch 'main' into oxidized-glasses 2026-05-28 15:41:18 -04:00
Kirill Kalishev 6204006ee7 Merge branch 'main' into brave-newspaper 2026-05-28 15:30:23 -04:00
kilo-maintainer[bot] cd69bca8bf release: v7.3.15 2026-05-28 19:27:46 +00:00
kirillk 32b2b667b8 chore(jetbrains): update version build script 2026-05-28 15:27:09 -04:00
kirillk b87b4aa6f6 fix(jetbrains): refresh hidden session theme 2026-05-28 15:16:00 -04:00
kirillk dfcb623515 test(jetbrains): stabilize session controller construction 2026-05-28 15:11:45 -04:00
kirillk 7b6b0dceca fix(jetbrains): refresh session style when shown 2026-05-28 15:01:43 -04:00
kirillk 986b53211f Merge remote-tracking branch 'origin/main' into crystalline-dive
# Conflicts:
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/EmptySessionPanel.kt
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/ReasoningView.kt
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/ui/md/MdView.kt
#	packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/controller/SessionRecoveryTest.kt
2026-05-28 15:00:30 -04:00
kirillk 3f3b0171b7 fix(jetbrains): tune question scroll icon colors 2026-05-28 14:58:46 -04:00
kirillk 81eb3f3152 fix(jetbrains): preserve session scroll for question text 2026-05-28 14:52:33 -04:00
kiloconnect[bot] 9cc8fd3244 fix(vscode): show shell command description in permission approval prompt
When a shell command has a descriptive title (the  parameter
provided by the AI), include it in the permission approval dialog so users
can identify what the command will do, not just see the raw command string.
2026-05-28 18:49:45 +00:00
kirillk ac1fedabd1 build check fixes 2026-05-28 14:24:53 -04:00
Joshua Lambert d4b2b5e7cf Merge pull request #10637 from Kilo-Org/feat/deepseek-popular-providers
feat(vscode): replace GitHub Copilot with DeepSeek in popular providers list
2026-05-28 14:13:45 -04:00
github-actions[bot] d114406c1f chore: update kilo-vscode visual regression baselines 2026-05-28 17:59:52 +00:00
Joshua Lambert f776da084a Merge branch 'main' into feat/deepseek-popular-providers 2026-05-28 13:57:05 -04:00
Josh Lambert f48519be02 feat(vscode): describe DeepSeek in popular providers 2026-05-28 13:37:51 -04:00
Iván Uruchurtu f87a526d1b Merge pull request #10599 from Kilo-Org/fix/vscode-error-alert-polish
Improve VS Code chat error styling
2026-05-28 11:34:49 -06:00
kirillk c75456d2cb fix(jetbrains): use static SVG icon variants 2026-05-28 13:29:36 -04:00
Catriel Müller 3c96a7c8d3 refactor: fix merge main 2026-05-28 14:20:13 -03:00
Josh Lambert 7d8ec095c0 chore(vscode): add DeepSeek provider changeset 2026-05-28 13:17:58 -04:00
kiloconnect[bot] 5d78202190 fix(vscode): replace dashes with spaces in marketplace keywords 2026-05-28 16:54:44 +00:00
Josh Lambert 5dd59fb544 test(vscode): update DeepSeek provider priority expectation 2026-05-28 12:39:17 -04:00
kirillk 6ee4ed91b5 fix(jetbrains): construct prompt panel without blocking read 2026-05-28 12:37:59 -04:00
Marius fba40377cb Merge pull request #10683 from Kilo-Org/effect-session-summary-facade-10677
refactor(cli): remove SessionSummary promise facade
2026-05-28 17:46:07 +02:00
Marius a3ef151b2a Merge pull request #10684 from Kilo-Org/effect-project-facade-10676
refactor(cli): remove Project promise facade
2026-05-28 17:45:25 +02:00
Marius bd3cee8132 Merge pull request #10685 from Kilo-Org/effect-tool-registry-facade-10675
refactor(cli): remove legacy ToolRegistry facade
2026-05-28 17:44:06 +02:00
Rietie a92f5fe3b6 Merge pull request #10681 from Kilo-Org/add-roo-migration-callout
docs(vscode): add Roo Code migration callout to README
2026-05-28 17:43:55 +02:00
Brendan O'Leary 863ed5786a Merge branch 'main' into add-roo-migration-callout 2026-05-28 11:25:10 -04:00
marius-kilocode 38fcaa65e7 fix(vscode): make model selection accessible to screen readers 2026-05-28 17:12:43 +02:00
marius-kilocode d3c5f2886f fix(vscode): make session history accessible to screen readers 2026-05-28 17:11:31 +02:00
marius-kilocode 60051ea22a Merge remote-tracking branch 'origin/main' into effect-tool-registry-facade-10675 2026-05-28 17:10:13 +02:00
kilo-maintainer[bot] 13783d6f60 release: v7.3.14 2026-05-28 15:09:45 +00:00
marius-kilocode 2f49c6adbc refactor(cli): remove legacy ToolRegistry facade 2026-05-28 17:09:17 +02:00
marius-kilocode 977bf4ee39 refactor(cli): remove Project promise facade 2026-05-28 17:08:06 +02:00
marius-kilocode 16adbb6507 refactor(cli): remove SessionSummary promise facade 2026-05-28 17:07:53 +02:00
marius-kilocode ffad65db8e fix(vscode): address accessibility coverage feedback 2026-05-28 17:01:56 +02:00
Mark IJbema f7a24ae706 Merge pull request #10679 from Kilo-Org/fix/smoke-test-harbor-filter
fix: restore Harbor dataset filtering in smoke test
2026-05-28 16:55:42 +02:00
kiloconnect[bot] 834e544724 docs(vscode): add Roo Code migration callout to README 2026-05-28 14:51:35 +00:00
Josh Lambert 3823862d53 fix: restore smoke-test dataset filtering 2026-05-28 10:48:05 -04:00
marius-kilocode 63f39f6ae4 test(vscode): enforce scoped webview accessibility coverage 2026-05-28 16:47:54 +02:00
Marius 80c806384d Merge pull request #10666 from Kilo-Org/effect-storage-facade-10659
refactor(cli): remove Storage promise facade
2026-05-28 16:39:35 +02:00
Darko Gjorgjievski aaef29b283 Merge branch 'main' into session/agent_889409bf-00dd-4caf-a3a0-4b1f84fe03ba 2026-05-28 16:28:21 +02:00
marius-kilocode 5b886f3a52 Merge origin/main into effect-storage-facade-10659 2026-05-28 16:25:08 +02:00
Marius e3a9b25956 Merge pull request #10667 from Kilo-Org/effect-snapshot-facade-10660
refactor(cli): remove legacy Snapshot facade
2026-05-28 16:22:13 +02:00
kiloconnect[bot] cc5755d948 feat(vscode): add BYOK Gateway link in provider connect dialog footer 2026-05-28 14:19:32 +00:00
Catriel Müller 9efb241f43 refactor: merge main 2026-05-28 11:18:39 -03:00
kilo-maintainer[bot] b48e7c53c8 chore: update nix node_modules hashes 2026-05-28 14:17:05 +00:00
marius-kilocode 9653833697 test(cli): wait for disabled indexing startup status 2026-05-28 16:08:38 +02:00
marius-kilocode 0107a0163c feat(cli): guide Agent Manager recall usage 2026-05-28 16:06:54 +02:00
Brendan DeBeasi 74e01b1d48 fix(tui): dedupe solid-js and @opentui/solid to fix "No renderer found" startup crash (#8761)
* fix(tui): dedupe solid-js and @opentui/solid to fix "No renderer found" startup crash

The bundled CLI shipped with two copies of solid-js and two copies of
@opentui/solid since 7.2.1. Each duplicated copy of solid-js and
@opentui/solid creates its own RendererContext token via createContext(),
so the context provided by render() (using one copy) is invisible to
useRenderer() calls resolved against the other copy. A reactive setStore
early in boot triggers a cascade that crosses the copy boundary and
explodes with "Error: No renderer found", preceded by the warning
"You appear to have multiple instances of Solid."

Two duplications were responsible:

1. solid-js: @opentui/solid@0.1.87 declares an exact "solid-js": "1.9.9"
   dependency, so bun installed a nested solid-js@1.9.11 inside
   node_modules/@opentui/solid/node_modules while the rest of the
   workspace used the catalog solid-js@1.9.12 at the top level. Force
   dedupe via a root override.

2. @opentui/{core,solid}: packages/kilo-gateway pinned dev/peer
   versions to 0.1.75 while opencode used 0.1.87. With kilo-gateway's
   tui module imported by opencode in 7.2.1+, both versions were
   bundled side-by-side. Bump kilo-gateway's pins to 0.1.87 to match.

Verified locally with a --single build on macOS arm64: pre-fix the binary
crashes on startup with the Solid error; post-fix it boots cleanly. Bundle
shrinks ~16KB from removing the duplicated solid-js copy.

* fix: Upgrade stale version with catalog:

---------

Co-authored-by: Brendan DeBeasi <brendandebeasi@users.noreply.github.com>
Co-authored-by: Johnny Amancio <johnnyeric@gmail.com>
2026-05-28 14:05:12 +00:00
Marius 554ac0880c Merge pull request #10656 from Kilo-Org/glow-bolt
fix(vscode): prevent streaming replies from pulling scroll down
2026-05-28 16:02:01 +02:00
marius-kilocode ef2390d7a4 feat: remove semantic indexing experimental gate 2026-05-28 15:59:11 +02:00
Mark IJbema b080d59a75 Merge pull request #10665 from Kilo-Org/mark/agents-md-naming-examples
docs: remove good/bad code blocks from AGENTS.md style guide
2026-05-28 15:48:52 +02:00
marius-kilocode 3d3d68f37d refactor(cli): remove legacy Snapshot facade 2026-05-28 15:47:06 +02:00
marius-kilocode 02daf3aad0 refactor(cli): remove Storage promise facade 2026-05-28 15:45:51 +02:00
marius-kilocode 3893464630 Merge remote-tracking branch 'origin/main' into glow-bolt 2026-05-28 15:45:19 +02:00
kirillk e3bfbc7054 fix(jetbrains): avoid unsafe UI initialization 2026-05-28 09:42:05 -04:00
Catriel Müller 7fa61ad932 wip: permissions 2026-05-28 10:38:39 -03:00
Mark IJbema 4db4051d14 docs: remove remaining good/bad blocks in AGENTS.md style guide
Tightened the let / else / empty-catch rules into prose. The good/bad
code blocks added length without clarifying the rule.
2026-05-28 15:34:42 +02:00
Kirill Kalishev c0a551667b Merge branch 'main' into brave-newspaper 2026-05-28 09:20:33 -04:00
kirillk ad2bb21048 chore: remove plan files from PR 2026-05-28 09:20:09 -04:00
Mark IJbema 653bbad36a docs: tighten single-word naming rule in AGENTS.md
The foo/bar/baz good/bad examples didn't illustrate the rule (just
shorter nonsense vs. longer nonsense). Replace with prose that points
at the canonical 'Naming Enforcement' block, which already lists
realistic preferred names and anti-examples.
2026-05-28 15:16:11 +02:00
Marius 600d47a6d2 Merge pull request #10662 from Kilo-Org/effect-facade-ratchet-pr-10661
ci(cli): prevent new shared Effect promise facades
2026-05-28 15:07:48 +02:00
marius-kilocode ec3c7ba364 Merge remote-tracking branch 'origin/main' into glow-bolt
# Conflicts:
#	packages/kilo-vscode/eslint.config.mjs
2026-05-28 15:04:15 +02:00
Mark IJbema f0eac503ba Merge pull request #10644 from Kilo-Org/mark/nextedit-kilo-gateway
feat(vscode,gateway): route Mercury Next Edit through Kilo Gateway
2026-05-28 14:55:45 +02:00
marius-kilocode 2ad06b2eca ci(cli): require facade exceptions to shrink 2026-05-28 14:51:31 +02:00
marius-kilocode 3cb731230b Merge remote-tracking branch 'origin/main' into glow-bolt 2026-05-28 14:45:55 +02:00
marius-kilocode 2c09c93525 chore(vscode): exempt provider from line cap 2026-05-28 14:45:55 +02:00
marius-kilocode 2cb36f9275 ci(cli): prevent new shared Effect promise facades 2026-05-28 14:45:24 +02:00
Vishal Kumar Singh 084bbe9e3e docs: add free and budget model picks to model selection guide (#9287)
* docs: add free and budget model picks to model selection guide

Closes #7038. Links to Auto Model Free and Using Kilo for Free pages.

* docs: address review warnings for model pricing accuracy

* fix: remove stale models table

* Apply suggestions from code review

Co-authored-by: Johnny Amancio <johnnyeric@gmail.com>
Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>
2026-05-28 12:42:00 +00:00
Catriel Müller 694f5dd7b5 refactor: rework agents list page 2026-05-28 09:40:41 -03:00
Marius 6a3a359af0 Merge pull request #10657 from Kilo-Org/grizzly-cycle
fix(cli): avoid indexing plugin blocking startup
2026-05-28 14:37:45 +02:00
marius-kilocode 0981194496 chore(vscode): keep provider within lint line cap 2026-05-28 14:34:55 +02:00
marius-kilocode 9b8ecf7bb0 Merge remote-tracking branch 'origin/main' into glow-bolt 2026-05-28 14:33:36 +02:00
Mark IJbema 9884b89394 chore(vscode): bump KiloProvider.ts max-lines cap to 3700 2026-05-28 14:29:49 +02:00
marius-kilocode e161c71483 refactor(vscode): avoid shadowing pending helper 2026-05-28 14:27:47 +02:00
Mark IJbema e4a57329bb Merge branch 'main' into mark/nextedit-kilo-gateway 2026-05-28 14:23:34 +02:00
marius-kilocode d883ad96ab fix(cli): avoid indexing plugin blocking startup 2026-05-28 14:21:40 +02:00
Mark IJbema f4d055e134 Merge pull request #10650 from Kilo-Org/feat/autocomplete-not-set-default
feat(vscode): add 'Not set' option to autocomplete model picker
2026-05-28 14:21:29 +02:00
Johnny Eric Amancio be9a7c9ccd feat: Add support for native agents from marketplace instead of modes (#10634)
* feat: Add support for native agents from marketplace instead of modes

* chore: update kilo-vscode visual regression baselines

* fix: add guard for case when user has pre-existing agent with same name

* chore: Clean up unused code

* chore: continue clean up of old code related to modes

* chore: add notification message informing users about migration from modes to agents

* fix: fix broken layout of remove dialog and update leftover mode string

* fix: adjust strings with mode string instead of agent

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-28 14:10:28 +02:00
Mark IJbema 8921a88d16 fix(vscode): only clear autocomplete defaults when stored at user scope
config.get() returns the merged effective value, so a workspace-level pin
or the schema default would falsely look like a stored global default.
Switch to config.inspect().globalValue so the migration only acts on
values actually stored in user settings, and update the test stub to
model scoped values.
2026-05-28 14:07:38 +02:00
Catriel Müller 7b655966b4 refactor: tools rework 2026-05-28 09:07:06 -03:00
marius-kilocode b575771497 chore: exclude unrelated SDK changes from scroll fix 2026-05-28 14:05:28 +02:00
Mark IJbema a6e4aa9a7b chore(vscode): mark autocomplete default migration for September removal 2026-05-28 14:01:49 +02:00
marius-kilocode d25d5ff473 fix scrolling 2026-05-28 14:01:23 +02:00
Mark IJbema ed41fdc3b4 test(gateway): drop tautological default-autocomplete-model test 2026-05-28 13:56:33 +02:00
Mark IJbema 1cc75733f4 refactor(gateway): pin DEFAULT_AUTOCOMPLETE_MODEL by explicit id
Looking up by provider+model id instead of relying on array index makes
the default robust to reordering of the AUTOCOMPLETE_MODELS list, and
fails loudly at module load if the referenced entry is ever removed.
Adds a test asserting the default resolves to a real entry.
2026-05-28 13:53:02 +02:00
Mark IJbema 21ef12227a fix(vscode): await autocomplete default migration before manager init
The migration cleared pinned default settings before the manager's first
readSettings() call, but firing it as a void promise let the manager's
constructor (which kicks off load() synchronously) race with the migration.
Awaiting the migration in registerAutocompleteProvider ensures the cleared
state is visible when the manager loads.
2026-05-28 13:53:02 +02:00
github-actions[bot] 301695af19 chore: update kilo-vscode visual regression baselines 2026-05-28 13:53:02 +02:00
kiloconnect[bot] f18a452082 feat(vscode): add 'Not set' option to autocomplete model picker
Aligns the autocomplete model selector with the small/subagent/per-mode
model selectors by exposing a 'Not set (use server default)' option.
Users who pick it follow future default-model changes automatically;
users who explicitly pin a model keep their selection.

Also runs a one-time migration that clears
`kilo-code.new.autocomplete.{provider,model}` when they exactly equal
the current `DEFAULT_AUTOCOMPLETE_MODEL` (Codestral via Kilo Gateway).
Many users have these stored only because it was the only thing visible
in the dropdown; without this they would stay pinned to the current
default and miss future improvements.
2026-05-28 13:53:02 +02:00
kirillk 449c740784 fix(jetbrains): address scroll icon review 2026-05-28 07:44:16 -04:00
Marius 17e0b2d6b5 Merge pull request #10652 from Kilo-Org/rustic-lightyear
fix(vscode): surface abnormal session endings
2026-05-28 13:41:56 +02:00
Catriel Müller d55a45064d refactor: remove omni server indicator 2026-05-28 08:38:13 -03:00
github-actions[bot] 2ecb7f7ccb chore: update kilo-vscode visual regression baselines 2026-05-28 10:58:26 +00:00
marius-kilocode 41ef4b505d test(vscode): cover terminal outcome stories 2026-05-28 12:55:41 +02:00
Imanol Maiztegui e8f104e619 Improve suggest bar responsiveness (#10651)
* fix(vscode): improve suggest bar responsiveness

Add min-width and text wrapping for action buttons and introduce a
responsive layout that stacks the suggest bar vertically on narrow
viewports.

* chore: update kilo-vscode visual regression baselines

* docs(mistral): update Codestral documentation link

Replace outdated code_generation capabilities URL with current
vibe/code/overview path in the Mistral provider documentation.

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-28 10:47:56 +00:00
marius-kilocode 3af4c7ebab fix(vscode): surface abnormal session endings 2026-05-28 12:40:03 +02:00
Marius 7f35b6edb8 Merge pull request #10648 from Kilo-Org/serene-run
fix(cli): isolate semantic indexing in a worker
2026-05-28 11:48:44 +02:00
Marius a674181a2e Merge pull request #10641 from Kilo-Org/bottled-barometer
feat(vscode): support inline session renaming
2026-05-28 10:56:17 +02:00
marius-kilocode 9fbd5479b0 fix(cli): isolate semantic indexing in a worker 2026-05-28 10:47:41 +02:00
marius-kilocode 939399eef5 feat(vscode): expose history rename action 2026-05-28 10:39:57 +02:00
Marius b2797c1d41 Merge pull request #10645 from Kilo-Org/vivacious-soap
docs: allow detailed PR descriptions
2026-05-28 10:39:53 +02:00
marius-kilocode 3881c662fc Merge remote-tracking branch 'origin/main' into bottled-barometer
# Conflicts:
#	packages/kilo-vscode/webview-ui/src/components/history/SessionList.tsx
2026-05-28 10:36:57 +02:00
Marius aae8204a89 Merge pull request #10646 from Kilo-Org/fix/vscode-history-context-menu
fix(vscode): improve history context menu sizing
2026-05-28 10:32:47 +02:00
marius-kilocode 4d62651412 fix(vscode): defer history rename focus 2026-05-28 10:30:18 +02:00
marius-kilocode 5f2777bf82 fix(vscode): align history menu styles 2026-05-28 10:16:53 +02:00
Mark IJbema 2d65b3ffbc fix(gateway): rename /api/nextedit/completions to /api/edit/completions
Matches the renamed endpoint on the cloud side.
2026-05-28 10:15:35 +02:00
Marius 2ffb1ed7c8 Merge pull request #10643 from Kilo-Org/cheddar-rainbow
fix(vscode): center session history delete button
2026-05-28 10:09:47 +02:00
marius-kilocode d5a8989b81 fix(vscode): improve history context menu sizing 2026-05-28 10:09:38 +02:00
marius-kilocode 28dcdb4a2e fix(vscode): focus history session rename editor 2026-05-28 10:06:48 +02:00
marius-kilocode 54c2d1c45f docs: allow detailed PR descriptions 2026-05-28 09:59:01 +02:00
Mark IJbema db388889e8 feat(vscode,gateway): route Mercury Next Edit through Kilo Gateway
Adds a new "Mercury Next Edit via Kilo Gateway" autocomplete model so
users can get Next Edit predictions through their Kilo account without
needing a separate Inception API key. The gateway proxies to the
new /api/nextedit/completions endpoint added in cloud#3516.
2026-05-28 09:56:21 +02:00
github-actions[bot] b6b925af3f chore: update kilo-vscode visual regression baselines 2026-05-28 07:54:28 +00:00
marius-kilocode 10114c5e96 fix(vscode): unify history session rename UI 2026-05-28 09:51:31 +02:00
marius-kilocode 6d77d6bbf2 fix(vscode): center session history delete button 2026-05-28 09:51:23 +02:00
Marius 6bb8c901b7 Merge pull request #10642 from Kilo-Org/tangy-planarian
fix(vscode): restore readable diff highlighting
2026-05-28 09:37:58 +02:00
Marius eef0983495 Merge pull request #10619 from Kilo-Org/free-alyssum
fix: constrain Kilo indexing embedding models
2026-05-28 09:37:28 +02:00
github-actions[bot] 200d00d6b8 chore: update kilo-vscode visual regression baselines 2026-05-28 07:23:50 +00:00
Mark IJbema aebca33df7 Merge pull request #10635 from Kilo-Org/add-agent-manager-json-to-gitignore
fix(cli): add agent-manager.json to default .kilo .gitignore
2026-05-28 09:23:45 +02:00
github-actions[bot] f2e31265d1 chore: update kilo-vscode visual regression baselines 2026-05-28 07:23:38 +00:00
marius-kilocode 86654543f7 refactor(vscode): simplify session rename cancellation 2026-05-28 09:20:09 +02:00
marius-kilocode 5a8d6ae5dc fix(vscode): restore readable diff highlighting 2026-05-28 09:19:58 +02:00
marius-kilocode 117691e4d6 fix: constrain Kilo indexing embedding models 2026-05-28 09:19:25 +02:00
marius-kilocode 4869d8722b feat(vscode): support inline session renaming 2026-05-28 09:08:57 +02:00
Marius ac9f39fd6e Merge pull request #10618 from Kilo-Org/foil-fall
fix(cli): prevent stale global config reloads
2026-05-28 08:54:56 +02:00
kirillk e3d28120b2 fix(jetbrains): smooth scroll button icon 2026-05-28 00:18:37 -04:00
kiloconnect[bot] 9266d1ca0c feat(vscode): replace GitHub Copilot with DeepSeek in popular providers list 2026-05-28 03:51:38 +00:00
kirillk 391a6b95e6 fix(jetbrains): avoid verifier-blocked action APIs 2026-05-27 20:21:18 -04:00
kirillk 805a05009b build(jetbrains): add marketplace build script 2026-05-27 19:56:26 -04:00
kirillk 88f31230a6 fix(jetbrains): address toolbar and prompt initialization 2026-05-27 19:54:56 -04:00
Catriel Müller 9f3eeffcce fix: Omni Search Z-Index 2026-05-27 20:51:05 -03:00
Catriel Müller 49d36f483a feat: Omni Search 2026-05-27 20:44:36 -03:00
Catriel Müller fb4f5cc322 refactor: improve models config and explore pages 2026-05-27 19:11:46 -03:00
Kirill Kalishev 2e76e624a8 Merge pull request #10628 from Kilo-Org/turquoise-corn
docs(kilo-docs): document JetBrains v7 EAP install
2026-05-27 18:01:44 -04:00
Kirill Kalishev ead1c6611b Update packages/kilo-docs/markdoc/partials/install-jetbrains.md
Co-authored-by: Catriel Müller <catrielmuller@gmail.com>
2026-05-27 17:47:05 -04:00
Catriel Müller e4e1c253e9 refactor: improve default models screen 2026-05-27 18:46:03 -03:00
Kirill Kalishev a779c55fda Merge pull request #10633 from Kilo-Org/dog-hydrogen
fix(jetbrains): Show session status tags
2026-05-27 17:45:23 -04:00
Catriel Müller f626ed1411 refactor: fix terminal switch buffer 2026-05-27 18:26:41 -03:00
kiloconnect[bot] 682e96aaf8 fix(cli): add agent-manager.json to default .kilo .gitignore 2026-05-27 21:21:56 +00:00
Kirill Kalishev 3c9b35cfe3 Merge branch 'main' into dog-hydrogen 2026-05-27 17:00:32 -04:00
Kirill Kalishev 633489c857 Merge pull request #10630 from Kilo-Org/eastern-pullover
fix(jetbrains): refine session transcript links
2026-05-27 16:59:39 -04:00
Catriel Müller 1ca4659440 refactor: project sidebar 2026-05-27 17:58:21 -03:00
kirillk a4b2ff6fa4 fix(jetbrains): address session status review 2026-05-27 16:57:59 -04:00
Kirill Kalishev 894264c8d2 Merge branch 'main' into dog-hydrogen 2026-05-27 16:55:37 -04:00
kirillk a97756adae chore: remove committed plan file 2026-05-27 16:43:37 -04:00
kirillk 6dfe5fff8f fix(jetbrains): show question scroll overlay 2026-05-27 16:41:19 -04:00
kirillk 3cb6d77d8f fix(jetbrains): address session view review feedback 2026-05-27 16:18:33 -04:00
kirillk b16944ce24 feat(jetbrains): keep history activity metadata fresh 2026-05-27 16:09:20 -04:00
kirillk 2963dd712b fix(jetbrains): fix test compilation after ViewFactory and SessionUiStyle changes 2026-05-27 15:54:02 -04:00
kirillk 78141e031a fix(jetbrains): invalidate generated api compilation 2026-05-27 15:37:21 -04:00
Kirill Kalishev 977d61b372 Merge branch 'main' into eastern-pullover 2026-05-27 15:15:26 -04:00
kirillk 5bf7bd8bbb fix(jetbrains): open session markdown links 2026-05-27 14:59:01 -04:00
Ari Messer 6387308773 Update packages/kilo-docs/pages/ai-providers/xai.md
Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>
2026-05-27 14:40:19 -04:00
kiloconnect[bot] 1efb794762 docs(kilo-docs): update xAI documentation to include X Premium subscription
Update the xAI Grok documentation to reflect that X Premium subscriptions can also be used via OAuth, in addition to SuperGrok subscriptions.
2026-05-27 14:40:19 -04:00
kirillk 98de19540c fix(jetbrains): refine session transcript styling 2026-05-27 14:28:19 -04:00
kirillk 01cc964196 fix(jetbrains): link read file rows 2026-05-27 14:08:07 -04:00
kirillk 855aec0f31 Revert "test(cli): stabilize shell cancellation test"
This reverts commit 070d82c833.
2026-05-27 13:51:31 -04:00
kirillk da47b98de3 fix(jetbrains): refine session card chrome 2026-05-27 13:41:25 -04:00
kirillk 070d82c833 test(cli): stabilize shell cancellation test 2026-05-27 13:36:39 -04:00
kirillk 6fa48b6edc fix(jetbrains): require merged release PR validation 2026-05-27 13:20:25 -04:00
Catriel Müller 7fc3bc09d4 feat: session to terminal sync // new cli kilo theme 2026-05-27 14:01:54 -03:00
kirillk 3b58e05e70 ci(jetbrains): lock release tag before publish 2026-05-27 13:01:11 -04:00
kirillk aeeb8eb5d4 feat(jetbrains): show running badges in session history 2026-05-27 13:00:13 -04:00
kirillk ebad4cdfd0 refactor(jetbrains): share session part chrome 2026-05-27 12:54:19 -04:00
kirillk c61040e9f0 docs(kilo-docs): document JetBrains v7 EAP install 2026-05-27 12:28:06 -04:00
kirillk beb8a406f0 fix(jetbrains): address release workflow review 2026-05-27 12:17:49 -04:00
kirillk a411ba9321 ci(jetbrains): add release PR publishing flow 2026-05-27 12:07:12 -04:00
Mark IJbema 3bb55b3768 Merge pull request #10621 from Kilo-Org/mark/mercury-next-edit-integration-v2
Add Mercury Next Edit as an opt-in autocomplete mode
2026-05-27 17:15:57 +02:00
Kirill Kalishev 444a066965 Merge pull request #10592 from Kilo-Org/vagabond-borogovia
feat(jetbrains): resize prompt editor and auto-scroll
2026-05-27 11:13:24 -04:00
kirillk f7c9f72d8b Merge remote-tracking branch 'origin/main' into vagabond-borogovia
# Conflicts:
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/prompt/PromptPanel.kt
2026-05-27 10:56:02 -04:00
kiloconnect[bot] 1bd5e729ff docs: update mercury-next-edit changeset description
Add contributor credit to the Mercury Next Edit changeset documentation.
2026-05-27 14:34:42 +00:00
Mark IJbema 35d568dc1c fix(vscode): namespace internal next edit command 2026-05-27 16:31:31 +02:00
Mark IJbema ecd6db5204 fix(cli): correct next edit API description 2026-05-27 16:30:44 +02:00
Mark IJbema b5aaa821e6 test(vscode): share unit vscode mock for next edit 2026-05-27 16:24:44 +02:00
Catriel Müller 01ac265646 feat: initial implementation of the terminal manager and new design 2026-05-27 11:19:14 -03:00
Mark IJbema 774b090905 chore(gateway): ignore CI test artifacts 2026-05-27 16:14:15 +02:00
Mark IJbema 70dc821219 test(vscode): isolate next edit vscode mocks 2026-05-27 16:13:46 +02:00
Mark IJbema eccea2bc9e test(vscode): cover denied next edit snippets 2026-05-27 16:11:23 +02:00
Mark IJbema e2dcf35e2f test(gateway): run edit suites in CI 2026-05-27 16:09:58 +02:00
Mark IJbema 2c3b6bb0af test(vscode): run next edit suites in CI 2026-05-27 16:09:01 +02:00
Imanol Maiztegui 8bc05fa9f5 test(opencode): replace mock.module stubs with Effect layer injection in kilo tests (#10615)
Extract KiloModelsService from model-cache to enable dependency injection
and rewrite test files to use Layer-based test harnesses instead of
process-wide mock.module() calls that caused flaky cross-test pollution
on CI.
2026-05-27 15:42:15 +02:00
Imanol Maiztegui 1a36cfbb10 Effect Migration for Kilo callsites (follow-up 2) (#10616)
* refactor(opencode): remove raw LLM interface in favor of stream-based text helper

Introduce KiloLLM.text() to consume Effect streams and extract text
while propagating error/abort events. Replace all usages of the removed
LLM.raw() method and the legacy LLM.stream() async wrapper with
dedicated runtime helpers (CommitMessageRuntime.generate,
PlanFollowupRuntime.handover) that leverage the new stream-based
approach.

- Add KiloLLM.text() stream combinator in kilocode/session/llm.ts
- Remove Interface.raw and the exported LLM.stream() async function
- Refactor commit-message generation to use CommitMessageRuntime
- Refactor plan-followup handover to use PlanFollowupRuntime.handover
- Update all test LLM mocks to remove raw() stubs
- Add unit tests for KiloLLM.text() covering text joining, error
  propagation, and abort handling

* feat(skill): migrate Skill module to Effect service pattern and remove legacy promise wrappers

Remove the makeRuntime-based promise helpers (Skill.all, Skill.get,
Skill.dirs) from the skill module and convert the builtin-skills test
suite to use Effect generators with the testEffect harness.

- Delete legacy runPromise wrappers from packages/opencode/src/skill/index.ts
- Rewrite builtin-skills.test.ts to use testEffect and Effect.gen
- Replace WithInstance.provide/tmpdir with TestInstance yield pattern
- Use Skill.Service directly within Effect generators for all assertions

* refactor(session-status): drop makeRuntime promise helpers and wire Service through Effect context

Replace the standalone `SessionStatus.list`, `.get`, `.set` promise
wrappers with direct `SessionStatus.Service` usage via Effect generators
and `AppRuntime.runPromise` at Kilo callsites that remain imperative.

- Remove makeRuntime-based exports from session/status.ts
- Update kilo-sessions.ts and plan-followup.ts to use AppRuntime.runPromise
  with SessionStatus.Service
- Thread SessionStatus.Service as a dependency through SuggestTool and
  ToolRegistry layers
- Replace spy-based mocks in suggestion tool tests with an in-memory
  service stub for deterministic assertions
2026-05-27 15:42:09 +02:00
Kirill Kalishev 33ff7cff47 Merge pull request #10591 from Kilo-Org/cotton-flyaway
fix(jetbrains): auto-approve mode
2026-05-27 09:14:36 -04:00
marius-kilocode dcfadac83e fix(cli): prevent stale global config reloads 2026-05-27 15:13:51 +02:00
kiloconnect[bot] 29c3798faa fix(vscode): send workspace-relative current file path for next edit
Match classic autocomplete's policy of never sending absolute fsPaths
upstream. Mercury only needs the path for language/context hints, and
the workspace-relative form is what recentlyViewedSnippets already uses.
2026-05-27 12:47:30 +00:00
Mark IJbema aa1f857ba4 style(vscode): format next edit integration files 2026-05-27 13:50:39 +02:00
Mark IJbema 9a0f38ade5 fix(vscode): namespace next edit commands 2026-05-27 13:49:40 +02:00
marius-kilocode 4e6f366a75 fix(vscode): add context handoff for forked sessions 2026-05-27 13:49:03 +02:00
Mark IJbema fcbdee46dc test(vscode): settle next edit history setup cleanly 2026-05-27 13:36:20 +02:00
Mark IJbema fadf72bdbf fix(vscode): fail closed for next edit file access 2026-05-27 13:29:01 +02:00
Mark IJbema 63fedf42a5 refactor(vscode): simplify next edit history access check 2026-05-27 13:18:29 +02:00
Marius aec43e919c Merge pull request #10608 from Kilo-Org/simple-sushi
Enable Agent Manager tool by default in VS Code
2026-05-27 13:16:29 +02:00
kiloconnect[bot] 0210a3b411 fix(vscode): dismiss next edit state when unregistered 2026-05-27 11:12:28 +00:00
kiloconnect[bot] c6d35f1987 fix(vscode): remove next edit deleted lines cleanly 2026-05-27 11:10:57 +00:00
kiloconnect[bot] 7834aeb2b3 fix(vscode): apply next edit insertions safely at eof 2026-05-27 11:08:12 +00:00
kiloconnect[bot] 50a91dccbc fix(gateway): suppress truncated next edit replacements 2026-05-27 10:59:54 +00:00
kiloconnect[bot] 57e359a302 fix(vscode): filter next edit history through access policy 2026-05-27 10:59:11 +00:00
marius-kilocode 3ffacc847b feat(agent-manager): enable tool by default in VS Code 2026-05-27 12:16:42 +02:00
Imanol Maiztegui 39a7305c97 Effect Migration for Kilo callsites (follow-up) (#10587)
* refactor(opencode): migrate ModelCache and Config to effect-native services

Remove legacy async wrapper functions from Config module and convert
ModelCache from a stateful namespace with module-level Maps into a
proper Effect service with Context/Layer semantics.

Key changes:
- Delete Config's `makeRuntime`-based async wrappers (get, getGlobal,
  update, warnings, etc.) — all callsites now use
  `Config.Service.use(...)` through AppRuntime
- Rewrite ModelCache as an Effect service with HttpClient dependency
  injection, replacing imperative Map-based caching with Effect-native
  Ref cells and TTL logic
- Convert KiloSessions.init and KilocodeBootstrap.init into proper
  Effect services with Layer-based dependency injection
- Wire ModelCache.Service into AppLayer, ProviderAuth, ModelsDev, and
  HTTP API handler layers
- Update Permission.layer to depend on Config.Service directly instead
  of calling Config async wrappers
- Add new test files for KiloSessions and ModelCache Effect integration
- Remove stale Config.get spyOn mocks from tests that no longer need
  them (experimental-session-list, recall)
- Fix indexing-auth to use typed IndexingConfig parameter instead of
  untyped record access

* fix(model-cache): resolve race conditions in concurrent fetch and cache invalidation

Introduce versioned cache cells with proper key derivation to prevent
stale responses from overwriting fresher data during concurrent fetches.

- Add version tracking to detect and discard outdated fetch results
- Derive cache keys from provider-specific options (baseURL, token, apiKey)
  to isolate concurrent requests with different credentials
- Make ModelCache.clear async to properly await invalidation across layers
- Update OrganizationDeps.clear signature to allow Promise<void> return
- Add concurrency and ordering tests for fetch/refresh race scenarios
- Rename local variable from `state` to `entry` in kilo-sessions sync loop

* chore(opencode): remove duplicate imports and fix test layer composition

Remove duplicate `AppRuntime` imports introduced during merge and update
kilo-sessions tests to use Effect-native Auth service instead of static
module calls.

- Remove duplicate `AppRuntime` import in index.ts and instance.ts
- Add Auth.defaultLayer to test layer helper
- Refactor test to yield Auth.Service and use instance methods
- Reorder Effect.provide/Effect.ensuring for correct resource cleanup

* style(opencode): normalize kilocode_change marker comments to block format

Standardize inline `// kilocode_change` annotations across source and
test files to use consistent `// kilocode_change start` / `// kilocode_change end`
block delimiters, improving readability and grep-ability of custom
modifications.
2026-05-27 11:43:32 +02:00
Mark IJbema 3db8e3ccae fix(vscode): remove unused next-edit context export 2026-05-27 11:32:42 +02:00
Mark IJbema 24b40391d6 docs(kilo-docs): index next-edit source link 2026-05-27 11:32:27 +02:00
Mark IJbema 30fbd0ab55 refactor(vscode): name chained next-edit delay 2026-05-27 11:31:37 +02:00
Mark IJbema 543d98ec17 refactor(vscode): dispose next-edit log directly 2026-05-27 11:31:19 +02:00
Mark IJbema 47bcb389c8 fix(vscode): hide internal next-edit acceptance command 2026-05-27 11:30:48 +02:00
Mark IJbema c25d60d68d fix(vscode): retain next-edit pre-cursor rewrites 2026-05-27 11:30:19 +02:00
Mark IJbema e4c2593118 fix(vscode): report selected next-edit telemetry model 2026-05-27 11:29:33 +02:00
Mark IJbema 27eaa97cdd test(vscode): preserve cross-file next-edit history 2026-05-27 11:29:11 +02:00
Mark IJbema ecbbe7faeb fix: remove noisy next-edit hot-path logs 2026-05-27 11:28:03 +02:00
Mark IJbema 2bbd4d7d7d fix(vscode): restore extension release version 2026-05-27 11:27:37 +02:00
Mark IJbema cb933859ff Merge pull request #10602 from Kilo-Org/revert-10593-design-source-submodule
Revert "docs(design): add shared design source"
2026-05-27 09:18:19 +02:00
Mark IJbema cadce9ad16 Revert "docs(design): add shared design source" 2026-05-27 09:15:57 +02:00
Iván Uruchurtu c62d6ccb1a Merge pull request #10593 from Kilo-Org/design-source-submodule
docs(design): add shared design source
2026-05-26 23:48:40 -06:00
Kirill Kalishev 927256fb06 Merge branch 'main' into vagabond-borogovia 2026-05-26 23:02:45 -04:00
Iván Uruchurtu 7d2dbb0ae2 chore(vscode): trim error story coverage 2026-05-26 20:56:07 -06:00
github-actions[bot] d02c3a6bf3 chore: update kilo-vscode visual regression baselines 2026-05-27 02:51:48 +00:00
Iván Uruchurtu 46213dcebd fix(vscode): improve chat error styling 2026-05-26 20:48:18 -06:00
Firas Trabelsi 7437f77374 Move NES prompt templating to the gateway + wire FileIgnoreController
Addresses the two remaining points from @markijbema's review.

Prompt templating now lives in the gateway
-------------------------------------------
The Mercury sentinel-prompt assembly moved out of the VSCode extension
into packages/kilo-gateway/src/edit-prompt.ts. Clients now send
structured editor context (currentFileContent, cursor position,
editable region, recently-viewed snippets, edit-diff history) and the
gateway builds the sentinel-tagged prompt. This keeps the entire
Mercury contract — endpoint, auth, prompt format, response parsing — in
one place that VS Code, JetBrains, and the TUI can all share, instead
of each editor re-implementing the templating.

- New EditBody is the structured context (was: a pre-built `content`
  string). Updated the opencode HttpApi schema, the hono zod validator,
  both handlers, and regenerated the SDK.
- Deleted the VSCode-side mercuryPromptTemplate.ts (+ spec); the tests
  moved to packages/kilo-gateway/test/edit-prompt.test.ts.
- VSCode constants.ts now holds only the editable-region sizing; the
  sentinel tokens live in the gateway.

FileIgnoreController
--------------------
NES must not send ignored files (.env, secrets, anything matched by
.gitignore/.kilocodeignore) to the server. The NES provider now:
- skips the request entirely if the active document fails
  ignoreController.validateAccess(), and
- filters recently-viewed snippets through the same controller before
  they go into the prompt.
It reuses the classic provider's FileIgnoreController instance (now
public) rather than building a second one.

Also: dropped the implicit nextEdit.debug config read in log.ts (debug
is env-only via KILO_NES_DEBUG) so no VSCode autocomplete config is
added — per the "config should move to the backend" guidance.

Validation: typecheck clean across kilo-gateway, opencode, kilo-vscode;
lint clean; gateway 46 tests, vscode next-edit 10 tests pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 17:04:07 -07:00
Kirill Kalishev b19b864cf8 Merge branch 'main' into cotton-flyaway 2026-05-26 19:52:34 -04:00
Firas Trabelsi ca2642438f Address review feedback: NES correctness, dedupe, tests
Two-agent review pass on the gateway-routed NES change. Fixes:

Correctness (🔴)
- MercuryEditProvider read the HTTP status off the parsed error body
  (`error.status`, always undefined), so 401/402 never reached
  onFatalError and NES had no credit-exhausted/auth backoff. Now reads
  `response.status` from the SDK result.
- NextEditSuggestionManager applied "insert" suggestions without the
  apply-time drift re-validation the "replace" path already had — edits
  between the anchor and insertion point could land the insert in the
  wrong place. Now re-checks the anchor line before inserting.
- The opencode Effect edit handler collapsed every upstream failure to
  HTTP 400; now passes the real status through (mirrors the FIM handler)
  so 401/402/429/5xx are distinguishable under the experimental backend.

Conciseness / DRY (🔴)
- Deleted dead module editCompletionParser.ts (+ spec): the gateway
  unwraps the fence server-side now, so the VSCode-side parser was unused.
- Hoisted the triplicated extractFencedBody into a single exported
  function in kilo-gateway/src/edit.ts; both the hono and Effect handlers
  import it. Added a shared EditUpstreamResponse type to replace three
  inline copies.

Robustness (🟡)
- extractFencedBody now keeps the body when the closing fence is missing
  (truncated/max_tokens output) instead of dropping the suggestion.
- EditHistoryTracker seeds snapshots on document open so the first edit
  in a freshly-opened file is captured (was previously dropped).
- Single-line inserts that span non-blank lines below the cursor (a
  multi-line→single-line collapse) now route to the decoration path
  instead of emitting a ghost item VSCode can't render.

Cleanup (🟡)
- Removed unused constants (MERCURY_EDIT_MODEL_ID, INCEPTION_API_BASE_URL,
  INCEPTION_EDIT_PATH).
- getProviderKey typed to DirectAutocompleteProviderID (matches FIM).
- resolveEditTarget keys on kind==="edit" defensively, so a future
  FIM-only Inception model can't resolve to the edit endpoint.
- AutocompleteModelDef doc comments made endpoint-neutral (not "FIM").
- Declared the internal accept command in contributes.commands.

Tests
- New packages/kilo-gateway/test/edit.test.ts: resolveEditTarget routing
  (incl. the mercury-edit-2 FIM model must NOT reach the edit endpoint)
  and extractFencedBody variants (lang tag, sentinels, truncation, blank
  lines, no-fence).
- typecheck clean across kilo-gateway, opencode, kilo-vscode; lint clean;
  all unit tests pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 16:14:29 -07:00
Roland 56d2ac40da fix(vscode): detect Windows speech input devices 2026-05-27 00:13:40 +02:00
kirillk 16bc165aa3 test(jetbrains): adjust question scroll assertions 2026-05-26 17:57:52 -04:00
kirillk 79204987b2 fix(jetbrains): use theme-safe auto-approve icons 2026-05-26 17:55:51 -04:00
Iván Uruchurtu f9a2db79f3 fix(design): use https design submodule url 2026-05-26 15:31:55 -06:00
Iván Uruchurtu bc50a8d3f0 docs(design): add shared design source 2026-05-26 15:27:48 -06:00
kirillk a8549804df feat(jetbrains): add prompt send shortcut 2026-05-26 17:11:04 -04:00
kirillk 1eeab9f5ff fix(jetbrains): show solid auto-approve shield 2026-05-26 17:06:57 -04:00
kirillk 11d5d2a67b fix(jetbrains): resize prompt editor with content 2026-05-26 17:05:58 -04:00
kilo-maintainer[bot] f68b778aa8 release: v7.3.12 2026-05-26 20:58:33 +00:00
kirillk 050ab05360 fix(jetbrains): restore permission state when auto-approve stops 2026-05-26 16:49:00 -04:00
kirillk ca55401d52 fix(jetbrains): harden session scroll following 2026-05-26 16:48:52 -04:00
kirillk 0117095178 fix(jetbrains): scroll question navigation to bottom 2026-05-26 16:36:26 -04:00
kirillk 4fcfaf5942 fix(jetbrains): keep auto-approve shield neutral 2026-05-26 16:24:14 -04:00
kirillk c45f727bab fix(jetbrains): keep session scroll following tail 2026-05-26 16:19:39 -04:00
Joshua Lambert 4316dcc829 Merge pull request #10582 from Kilo-Org/docs/xai-supergrok-subscription
docs(kilo-docs): add xAI SuperGrok subscription and OAuth login documentation
2026-05-26 16:18:37 -04:00
kirillk ba9bf5d14f feat(jetbrains): add auto-approve toggle 2026-05-26 16:09:05 -04:00
kilo-maintainer[bot] 7598495eac release: v7.3.11 2026-05-26 20:02:42 +00:00
Catriel Müller 10de9ebfe6 refactor: agent builder 2026-05-26 16:11:01 -03:00
Kirill Kalishev f617749b20 Merge pull request #10552 from Kilo-Org/quaint-airbus
feat(jetbrains): support plan follow-ups and todo rendering
2026-05-26 13:39:00 -04:00
kirillk 12bb821487 fix(jetbrains): preserve follow-up question state 2026-05-26 12:49:23 -04:00
kiloconnect[bot] b63dafe5a6 docs(kilo-docs): note 'Show more providers' step to find xAI in VSCode 2026-05-26 16:42:55 +00:00
kiloconnect[bot] d74e95ccf8 docs(kilo-docs): mention xAI BYOK on Gateway in SuperGrok callout 2026-05-26 16:41:01 +00:00
Kirill Kalishev 8c5305e094 Merge branch 'main' into quaint-airbus 2026-05-26 12:39:19 -04:00
Kirill Kalishev ce0caa6d1c Merge pull request #10586 from Kilo-Org/capricious-lychee
ci: parallelize JetBrains checks
2026-05-26 12:38:54 -04:00
kirillk 33eb9fae50 Merge branch 'capricious-lychee' into quaint-airbus 2026-05-26 12:29:02 -04:00
Firas Trabelsi fe60a467d1 Add Mercury Next Edit (NES) routed through the kilo gateway
Addresses @markijbema's architectural feedback on #10536: moves the HTTP
edit-completion call to the gateway, removes the standalone API-key
setting, and aligns with the provider/model selection design introduced
in #10559.

Wire-level changes
------------------
* New `/kilo/edit` endpoint added to the opencode HttpApi contract
  (`packages/opencode/src/kilocode/server/httpapi/groups/kilo-gateway.ts`)
  and mirrored into `packages/kilo-gateway/src/server/routes.ts` for the
  hono surface. SDK regenerated; `client.kilo.edit({ content, provider,
  model, maxTokens })` is now available.
* `packages/kilo-gateway/src/edit.ts` — `EditTarget` resolver mirroring
  the FIM pattern. Only the Inception provider is wired today (Mistral
  doesn't expose a comparable surface); Kilo Gateway has a placeholder
  branch that returns 400 until a server-side proxy exists.
* `packages/kilo-gateway/src/server/edit.ts` — `createEditHandler` reads
  the Inception BYOK key from `Auth.get("inception")` and falls back to
  `INCEPTION_API_KEY` from env, exactly like the FIM handler.
* The gateway unwraps Mercury's triple-backtick fence (and any
  `<|code_to_edit|>` sentinels) server-side so the VSCode response is
  just the rewritten code.
* `AutocompleteModelDef` gains an optional `kind: "fim" | "edit"`
  discriminator; new entry `inception/mercury-next-edit` (label "Mercury
  Next Edit") sets `kind: "edit"` and shares the wire model
  `mercury-edit-2`.

VSCode-side
-----------
* `MercuryEditProvider` no longer does its own HTTP — it's now a thin
  wrapper around `client.kilo.edit(...)` via `KiloConnectionService`.
* Dropped `kilo-code.new.autocomplete.nextEdit.apiKey` and
  `.nextEdit.baseUrl` settings. Auth and routing live in the gateway.
* The `AutocompleteServiceManager` dispatch now switches on the model's
  `kind` field (set by `getAutocompleteModel(provider, model)`) instead
  of string-comparing a model id, matching Mark's provider+model split.
* The `NextEditInlineCompletionProvider`,
  `NextEditSuggestionManager`, prompt template, parser, editable-region
  selector, edit-history tracker, recently-viewed-snippets adapter, and
  decoration-based jump-to-edit UX remain in the VSCode extension since
  they need editor-specific APIs (`InlineCompletionItem`,
  `TextEditorDecorationType`, keybinding context keys).

Bot review nits resolved
------------------------
* `INLINE_COMPLETION_ACCEPTED_COMMAND` renamed `kilocode.*` →
  `kilo-code.*` to match the project convention.
* `kilo-code.next-edit.acceptOrJump` and `.dismiss` now declared in
  `contributes.commands` so VS Code can resolve them in the palette.
* `disposeLog()` wired into `AutocompleteServiceManager.dispose()` so
  the dedicated "Kilo Code · Next Edit" OutputChannel doesn't leak.
* Per-keystroke "skip — no API key resolved" log removed (the entire
  API-key code path is gone).

Tests
-----
* `bun run check-types:extension` clean
* `bun run lint src` clean
* `bun test src/services/autocomplete/next-edit/__tests__/` — 23/23
  pass

Docs
----
* The partner walkthrough at
  `packages/kilo-vscode/docs/mercury-next-edit-testing.html` and the
  20-test playground under
  `packages/kilo-vscode/docs/nes-examples/` survive from the prior
  iteration. The walkthrough's "Install the PR locally" section still
  applies (the model dropdown choice is now "Mercury Next Edit
  (Inception)" — the API-key step is gone since BYOK is plumbed through
  the gateway's Auth store).

Known follow-ups (not in this commit)
-------------------------------------
* `FileIgnoreController` plumbing through the NES context builder so
  `.env`-style files don't get sent. Hook point identified in
  `NextEditInlineCompletionProvider.buildRequestContext`.
* Settings UI changes in the webview to expose Mercury Next Edit as a
  selectable provider/model pair alongside the FIM entries.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 09:17:53 -07:00
Kirill Kalishev fe7bc99986 Merge branch 'main' into capricious-lychee 2026-05-26 12:10:50 -04:00
kirillk 25b9007d3d Merge remote-tracking branch 'origin/main' into quaint-airbus
# Conflicts:
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt
#	packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionUiLayoutTest.kt
#	packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionUiTestBase.kt
2026-05-26 11:52:37 -04:00
Kirill Kalishev 878b16103b Merge pull request #10496 from Kilo-Org/prairie-crocus
feat(jetbrains): add legacy settings migration
2026-05-26 11:48:18 -04:00
kirillk 5961afbbe1 ci: serialize JetBrains Gradle tasks 2026-05-26 11:36:56 -04:00
kirillk 2d1ff2fd50 ci: parallelize JetBrains checks 2026-05-26 11:14:51 -04:00
Kirill Kalishev baf8aac232 Merge branch 'main' into prairie-crocus 2026-05-26 11:11:35 -04:00
kirillk bb4a76e6a1 fix(jetbrains): stabilize session UI tests 2026-05-26 10:55:25 -04:00
Catriel Müller 2ebdbb2fe5 Merge pull request #10413 from LifeJiggy/clean/windows-cli-6307
fix(cli): make bash tool description Windows-aware
2026-05-26 11:53:25 -03:00
kiloconnect[bot] e19665d151 docs(kilo-docs): add xAI SuperGrok subscription and OAuth login documentation 2026-05-26 14:35:08 +00:00
Marius 59762f5842 Merge pull request #10581 from Kilo-Org/uncovered-salary
feat(vscode): enable voice input for signed-in Kilo users
2026-05-26 16:16:09 +02:00
marius-kilocode 81777f1288 Revert "ci: use Node 24-compatible Bun cache action"
This reverts commit c6774947ed.
2026-05-26 15:57:23 +02:00
Catriel Müller ce80806bfa refactor: project filter / active projects on sidebar 2026-05-26 10:56:44 -03:00
marius-kilocode c6774947ed ci: use Node 24-compatible Bun cache action 2026-05-26 15:55:28 +02:00
Mark IJbema 022be2037d Merge pull request #10559 from Kilo-Org/mark/direct-autocomplete-fim-providers
Support backend-routed autocomplete FIM providers
2026-05-26 15:48:38 +02:00
marius-kilocode 722eb44d63 feat(vscode): enable voice input for signed-in Kilo users 2026-05-26 15:45:48 +02:00
Mark IJbema 21b5607bc8 chore: trigger CI 2026-05-26 15:17:40 +02:00
kirillk e96bbb50ae test(jetbrains): align migration UI fake 2026-05-26 09:09:56 -04:00
Catriel Müller 784c12ab3d refactor: keep platform as OS and added kilomarkers 2026-05-26 14:05:55 +01:00
LifeJiggy b4a10bb0e2 fix(cli): port Windows-aware bash tool description to refactored prompt.ts 2026-05-26 14:05:55 +01:00
kirillk 9dcc3fb8cc chore(jetbrains): remove migration mock script 2026-05-26 09:03:55 -04:00
kirillk e3b8f3b7e5 fix(jetbrains): surface partial migration failures 2026-05-26 09:00:52 -04:00
Kirill Kalishev 1d7023355e Merge branch 'main' into prairie-crocus 2026-05-26 08:52:23 -04:00
Mark IJbema 80f8781cbc refactor(gateway): make FimTarget a discriminated union
Replace `urls: string[]` with provider-specific shapes: kilo and inception
each carry a single `url`, mistral carries no urls (its dual-endpoint
fallback is encapsulated in requestMistralFim). Removes the non-null
assertion on `urls[0]` and the dead "No FIM endpoint configured" branch.
Also tightens `getProviderKey` to take `DirectAutocompleteProviderID`,
which now follows naturally from the narrowed union and prevents the
`DIRECT_FIM_ENV["kilo"]` undefined-lookup footgun.
2026-05-26 13:39:55 +02:00
Mark IJbema be5b4f9c45 fix(vscode): never infer direct autocomplete provider from model name
Previously `getAutocompleteModel` inferred the provider from a bare model
id like "codestral-2508" or "mercury-edit-2" when no provider was set.
That meant a user with a legacy `model` setting could be silently routed
to a direct BYOK provider without an explicit opt-in. Default to Kilo
Gateway whenever provider is unset; direct providers now require an
explicit `provider` setting.
2026-05-26 13:39:55 +02:00
Mark IJbema 80e39c29eb Merge branch 'main' into mark/direct-autocomplete-fim-providers 2026-05-26 13:25:04 +02:00
Mark IJbema 923d955c86 fix: address autocomplete FIM review findings 2026-05-26 13:08:19 +02:00
Marius 7aacbb0e8a Merge pull request #10441 from Kilo-Org/brazen-lingo
fix(vscode): speed up inline subagent streaming
2026-05-26 12:58:25 +02:00
Imanol Maiztegui bacfa4ae62 Effect Migration for Kilo callsites (#10572)
* refactor(opencode): migrate agent promise helpers to kilocode module and adopt Effect-based tests

Remove legacy promise-based helpers (`get`, `list`, `defaultAgent`, `remove`)
from the core agent module and update callsites to use the dedicated
`@/kilocode/agent` module directly. Migrate kilocode-specific tests from
`WithInstance.provide` patterns to the `testEffect` helper with Effect
generators for cleaner, more idiomatic test code.

- Remove `makeRuntime` import and exported promise helpers from agent.ts
- Update HTTP API handlers to import from `@/kilocode/agent` instead of
  re-exported `Agent` namespace
- Rewrite agent tests to use `load()` helper or Effect service access
- Convert agent-global-config-dirs and agent-skill-permissions tests to
  `testEffect` pattern
- Reorder SDK type definitions (BackgroundProcessLogs/WorkspaceWarpError)

* chore(auth): remove legacy promise helpers and replace with direct Effect service access

Eliminate the exported promise-based convenience functions (`get`, `all`,
`set`, `remove`) from the Auth module and replace all callsites with
explicit `AppRuntime.runPromise` or `makeRuntime` invocations that access
`Auth.Service` directly through Effect's service pattern.

- Delete `makeRuntime`-backed promise helpers from auth/index.ts
- Update CLI entrypoint, kilo-sessions, indexing, and server instance to
  use `AppRuntime.runPromise(Auth.Service.use(...))` for auth access
- Inject `Auth.Service` as a dependency into the ModelsDev layer and
  consume it via Effect generator instead of promise wrapper
- Create a local `makeRuntime` instance in model-cache.ts for non-Effect
  callsites that still need promise-based auth access
- Rewrite tests to manipulate auth.json directly on disk with proper
  save/restore semantics instead of relying on removed helpers

* refactor(suggestion): convert suggest tool to Effect-native with injected Command dependency

Transform the suggestion tool from async/promise-based implementation to
idiomatic Effect generators with explicit dependency injection of the
Command service rather than importing and calling module-level helpers.

- Convert `resolvePrompt` from async function to Effect generator that
  accepts a `Command.Interface` parameter
- Refactor `SuggestTool` definition to yield `Command.Service` from the
  Effect context and thread it through to `resolvePrompt`
- Add `Command.Service` as a dependency to the tool registry layer and
  provide `Command.defaultLayer` in both production and test wiring
- Remove unused `makeRuntime` import and exported `get` helper from
  command/index.ts
- Add explicit type annotations to Auth delegate in server instance
- Rewrite suggestion tests to use `testEffect` helper with a mock
  `Command.Service` layer instead of spying on module exports

* feat(git): migrate WorktreeFamily to Effect service and wire Git.Service as dependency

Convert WorktreeFamily.list from an async function using legacy promise
helpers to an Effect generator that yields Git.Service from context,
eliminating the need for the removed `run` promise wrapper in git/index.

- Replace `WorktreeFamily.list()` async function with Effect.fn generator
  that obtains Git.Service and InstanceState from the Effect context
- Remove legacy `makeRuntime`/`run`/`runPromise` exports from git module
- Update RecallTool to thread Git.Service through to WorktreeFamily calls
  via EffectBridge
- Add Git.Service as a required dependency in tool registry and HTTP
  server route layers
- Update all test layers to provide Git.defaultLayer

* chore(mcp): replace legacy promise helpers with Effect-native AppRuntime calls

Remove exported promise-based `status`, `connect`, and `disconnect`
helpers from MCP module and convert the network recovery callsite in
SessionNetwork to use AppRuntime.runPromise with Effect.gen directly.

* refactor(auth): adopt makeRuntime helper for Auth service resolution in kilo modules

Replace AppRuntime.runPromise with locally scoped makeRuntime instances
in kilo-sessions and kilocode/indexing modules, removing the dependency
on the global AppRuntime singleton for Auth service access.

* fix(test): simplify cleanup error handling in provider test

Replace try-catch block with promise .catch() for file unlink operation
during test teardown.
2026-05-26 12:51:21 +02:00
Marius 38d65ca793 Merge pull request #10505 from Kilo-Org/supersede-10089-agent-model-variant-dropdowns
feat(vscode): implement agent model and variant override dropdowns in VSCode settings
2026-05-26 12:49:08 +02:00
marius-kilocode a2575be238 fix(vscode): preserve live subagent stream metadata 2026-05-26 12:34:38 +02:00
marius-kilocode afd0550e34 Merge origin/main into supersede-10089-agent-model-variant-dropdowns 2026-05-26 12:31:47 +02:00
Marius 281d79a26a Merge pull request #10575 from Kilo-Org/vine-apogee
fix(vscode): restore readable Pierre diff highlights
2026-05-26 12:30:50 +02:00
Mark IJbema bbc57f6540 Merge branch 'main' into mark/direct-autocomplete-fim-providers 2026-05-26 12:29:21 +02:00
Mark IJbema 762eb224d9 refactor(gateway): share autocomplete provider types 2026-05-26 12:18:46 +02:00
Johnny Eric Amancio b123241ec3 docs: add details about contributor ownership and mass creation of PRs/Issues (#10574) 2026-05-26 10:16:18 +00:00
marius-kilocode 87bcf5ac52 refactor(vscode): isolate visible task streams 2026-05-26 12:13:59 +02:00
marius-kilocode 6415432d22 fix(vscode): restore readable Pierre diff highlights 2026-05-26 12:12:05 +02:00
Mark IJbema 5590b43418 refactor(gateway): simplify autocomplete model lookup 2026-05-26 12:03:59 +02:00
marius-kilocode 6c39f9670c refactor(vscode): extract subagent visibility binding 2026-05-26 12:03:46 +02:00
Mark IJbema 9b1407e336 refactor(gateway): remove unshipped autocomplete aliases 2026-05-26 11:59:23 +02:00
Mark IJbema d02145a549 refactor(gateway): simplify Mistral FIM endpoint cache 2026-05-26 11:44:13 +02:00
Marius fe14cafdc1 Merge pull request #10573 from Kilo-Org/sand-sage
fix(vscode): explain disabled speech input requirement
2026-05-26 11:37:39 +02:00
Mark IJbema c073dac91f refactor(gateway): clarify Mistral FIM endpoint helper 2026-05-26 11:25:32 +02:00
marius-kilocode 04702bad9e fix(vscode): clarify speech gateway requirement 2026-05-26 11:18:17 +02:00
marius-kilocode 559b85b5cb refactor(vscode): clarify stream cleanup 2026-05-26 11:10:01 +02:00
Mark IJbema 4ca226c83f fix(gateway): cache working Mistral FIM endpoint 2026-05-26 11:08:19 +02:00
Johnny Eric Amancio 2fd94da76c docs: clarify PR review readiness expectations (#10562) 2026-05-26 11:07:51 +02:00
marius-kilocode 8bb88aa514 Merge remote-tracking branch 'origin/main' into brazen-lingo
# Conflicts:
#	packages/kilo-vscode/tests/unit/session-utils.test.ts
2026-05-26 11:07:46 +02:00
Marius d00bdbf5df Merge pull request #10485 from Kilo-Org/fix-subagent-error-recovery
fix(cli): surface failed subagent task errors
2026-05-26 10:59:01 +02:00
Marius bcda744dfc Merge pull request #10443 from Kilo-Org/subagent-model-reasoning-config
feat: configure task subagent model defaults
2026-05-26 10:58:57 +02:00
marius-kilocode 48af33f940 fix(vscode): explain disabled speech input requirement 2026-05-26 10:56:15 +02:00
Marius 9de2edcdae Merge pull request #10486 from Kilo-Org/arrow-abstract
fix: stabilize streamed markdown code blocks
2026-05-26 10:54:12 +02:00
Marius e5a918eec1 Merge pull request #10483 from Kilo-Org/rift-rambutan
fix(vscode): hide sub-agent sessions from recents
2026-05-26 10:52:31 +02:00
Marius 83c486f840 Merge pull request #10439 from Kilo-Org/coffee-viscountess
Remove duplicate busy badge in Agent Manager tab search
2026-05-26 10:51:36 +02:00
marius-kilocode a416b40273 Merge remote-tracking branch 'origin/main' into fix-subagent-error-recovery
# Conflicts:
#	packages/opencode/src/tool/task.ts
#	packages/opencode/test/tool/task.test.ts
2026-05-26 10:42:07 +02:00
marius-kilocode 24d8311ab4 fix(ui): release interrupted markdown highlight jobs 2026-05-26 10:33:58 +02:00
marius-kilocode 6b96c987e7 Merge remote-tracking branch 'origin/main' into arrow-abstract 2026-05-26 10:31:56 +02:00
Marius 2a0c9c83b1 Merge pull request #10542 from Kilo-Org/docs/kilo-pi-provider
docs(kilo-docs): document Pi Gateway integration
2026-05-26 10:26:44 +02:00
Mark IJbema 6fb50a8942 fix(vscode): infer autocomplete provider from direct models 2026-05-26 10:25:36 +02:00
Mark IJbema e5b2bb8628 fix(gateway): preserve FIM gateway model passthrough 2026-05-26 10:22:16 +02:00
Mark IJbema 19719ba491 fix(gateway): use env keys for direct FIM providers 2026-05-26 10:20:55 +02:00
Mark IJbema cef6164c30 fix(vscode): use autocomplete provider for chat completions 2026-05-26 10:14:36 +02:00
Mark IJbema cc50d769b5 fix(kilo-docs): exclude FIM API endpoints from link check 2026-05-26 09:52:57 +02:00
Mark IJbema 08124be60b Merge remote-tracking branch 'origin/main' into mark/direct-autocomplete-fim-providers
# Conflicts:
#	packages/kilo-gateway/src/server/routes.ts
#	packages/sdk/js/src/v2/gen/sdk.gen.ts
#	packages/sdk/js/src/v2/gen/types.gen.ts
2026-05-26 09:43:57 +02:00
kilo-maintainer[bot] 20675fdbeb release: v7.3.10 2026-05-26 07:28:31 +00:00
Mark IJbema bfda8fecfd fix(vscode): import browser-safe autocomplete catalog 2026-05-26 09:21:13 +02:00
Mark IJbema 4cd463d619 refactor(gateway): split autocomplete provider and model 2026-05-26 09:15:42 +02:00
kirillk 6fbe070081 fix(jetbrains): simplify migration progress rows 2026-05-25 22:50:38 -04:00
kirillk 744b677899 fix(jetbrains): default CLI permissions to ask 2026-05-25 17:53:38 -04:00
kirillk 367d4f9cce fix(jetbrains): refine question panel layout 2026-05-25 17:47:31 -04:00
kirillk 351291d259 feat(jetbrains): render todo checklists 2026-05-25 17:40:28 -04:00
kirillk baa775b111 fix(jetbrains): show retry status in loading panel 2026-05-25 17:22:17 -04:00
Catriel Müller 30dc7fdde7 Merge pull request #10302 from IamCoder18/fix/tui-export-all-messages
fix(cli): export all messages from TUI instead of truncated store
2026-05-25 17:41:25 -03:00
kirillk 254d4e1519 fix(jetbrains): refresh migration modal layout 2026-05-25 15:30:47 -04:00
kirillk d9d406c1b1 fix(jetbrains): silently skip duplicate migrated sessions 2026-05-25 15:26:25 -04:00
kirillk 4a6ddb5d3a fix(jetbrains): finish legacy migration progress 2026-05-25 15:10:55 -04:00
kirillk dfd4f22a03 Merge remote-tracking branch 'origin/main' into quaint-airbus 2026-05-25 15:01:37 -04:00
kirillk 435232d5ba fix(jetbrains): open completed plan links 2026-05-25 15:00:52 -04:00
kirillk b37e3fd2a1 fix(jetbrains): refine migration wizard layout 2026-05-25 14:42:46 -04:00
kirillk a9b90cae3a fix(jetbrains): recover plan follow-up prefs from messages 2026-05-25 14:14:01 -04:00
kirillk d4b9f95381 fix(jetbrains): add persistent stack fillers 2026-05-25 13:50:01 -04:00
Kirill Kalishev e444705a61 Merge pull request #10539 from Kilo-Org/indigo-peak
ci(jetbrains): integrate JetBrains typecheck and tests into repo-wide checks
2026-05-25 13:30:00 -04:00
kirillk 0851f4024a fix(jetbrains): bound app load recovery 2026-05-25 13:17:07 -04:00
kirillk 9fa2198a0a ci(jetbrains): bound Gradle test execution 2026-05-25 13:11:41 -04:00
kirillk c0ede175f3 fix(jetbrains): make migration wizard modal 2026-05-25 12:04:01 -04:00
Mark IJbema e3ebbf7f35 Merge pull request #10560 from Kilo-Org/mark/source-links-no-count
chore: remove URL count from source-links.md to reduce merge conflicts
2026-05-25 17:40:59 +02:00
Johnny Eric Amancio 53a614554c docs: Improve documentation and pr template to request testing evidence (#10514)
* docs: Improve documentation and pr template to request testing evidence

* Apply suggestion from @markijbema

Co-authored-by: Mark IJbema <mark@kilocode.ai>

* docs: Remove command evidence section

---------

Co-authored-by: Mark IJbema <mark@kilocode.ai>
2026-05-25 15:39:06 +00:00
Mark IJbema afde386730 fix(gateway): preserve legacy autocomplete model ids 2026-05-25 17:35:15 +02:00
kirillk 936bb25f2a test(cli): annotate Windows skip call sites 2026-05-25 11:30:54 -04:00
kirillk 4c90e6f03b test(cli): skip Windows-incompatible opencode tests 2026-05-25 11:28:07 -04:00
Mark IJbema 25e89db233 refactor(gateway): own autocomplete model catalog 2026-05-25 17:16:00 +02:00
Mark IJbema 2bf49bddb6 refactor(gateway): extract FIM routing 2026-05-25 17:13:01 +02:00
Mark IJbema d635a15809 test(vscode): update autocomplete selector expectations 2026-05-25 17:03:35 +02:00
Mark IJbema c09c5c4639 refactor(vscode): route direct FIM through backend 2026-05-25 16:47:14 +02:00
kiloconnect[bot] 3157d1526c chore: remove URL count from source-links.md to reduce merge conflicts 2026-05-25 14:42:27 +00:00
Mark IJbema 900b1fcc46 docs(vscode): clarify autocomplete FIM changeset 2026-05-25 16:40:30 +02:00
Mark IJbema 33eb706c58 fix(vscode): support direct autocomplete FIM providers 2026-05-25 16:38:29 +02:00
kirillk e627d581c1 ci(jetbrains): warm up Gradle wrapper before turbo test:ci on Linux
On a fresh CI runner, multiple Turbo tasks starting in parallel can race
to extract the Gradle wrapper zip, producing ClosedFileSystemException.
Run ./gradlew --version before turbo test:ci to ensure the wrapper is
fully extracted before any parallel task touches it.
2026-05-25 09:31:13 -04:00
Kirill Kalishev 25f4172eb5 Merge branch 'main' into indigo-peak 2026-05-25 09:16:49 -04:00
Aarav d6dabdff62 Merge branch 'main' into fix/tui-export-all-messages 2026-05-25 07:09:05 -06:00
Johnny Eric Amancio 1bed976e8d docs: Update dev setup instructions (#10508) 2026-05-25 14:16:17 +02:00
Johnny Eric Amancio c944aacf95 fix: Fix external skills compatibility conditions (#10509) 2026-05-25 14:16:01 +02:00
kilo-maintainer[bot] 0da40bad26 release: v7.3.9 2026-05-25 12:14:16 +00:00
Mark IJbema cd915e8337 Merge pull request #10556 from Kilo-Org/revert-10516-review/opencode-v1.14.41-review-notes
Revert "review: OpenCode v1.14.41 upstream merge review (PR #10507)"
2026-05-25 10:54:09 +02:00
Mark IJbema cb0e3a943d Merge pull request #10392 from Kilo-Org/mark/add-upstream-merge-review-command
docs: add upstream merge review command
2026-05-25 10:49:07 +02:00
Mark IJbema 55ede19e0d Revert "review: OpenCode v1.14.41 upstream merge review (PR #10507)" 2026-05-25 10:38:05 +02:00
Mark IJbema 6234e9867e Merge pull request #10516 from Kilo-Org/review/opencode-v1.14.41-review-notes
review: OpenCode v1.14.41 upstream merge review (PR #10507)
2026-05-25 10:35:34 +02:00
Marian Alexandru Alecu 7569511312 Merge pull request #9951 from Kilo-Org/local-review-base-picker
feat(cli): ask for local-review base
2026-05-25 11:32:50 +03:00
Alex Alecu 9dbe1bb682 chore(cli): merge local-review changesets 2026-05-25 11:13:15 +03:00
Mark IJbema 25c966eddb Merge branch 'main' into indigo-peak 2026-05-25 10:09:31 +02:00
Marian Alexandru Alecu 0ef52d5d5a Merge branch 'main' into local-review-base-picker 2026-05-25 11:05:47 +03:00
kirillk c81397044c fix(jetbrains): hide single question progress 2026-05-24 21:43:06 -04:00
kirillk 7de669ee4b fix(jetbrains): render plan ready as transcript text 2026-05-24 21:34:14 -04:00
kirillk e4b610a4fc feat(jetbrains): add stack layout helper 2026-05-24 20:54:46 -04:00
kirillk 6e633692a2 feat(jetbrains): support plan follow-up implementation 2026-05-24 18:31:41 -04:00
Joshua Lambert 6b64a9d17d Merge pull request #10500 from Kilo-Org/rambunctious-chicory
feat(cli): add xAI Grok OAuth
2026-05-24 16:14:02 -04:00
Joshua Lambert ea1479ccb0 Merge branch 'main' into rambunctious-chicory 2026-05-24 15:55:34 -04:00
Josh Lambert 7335d8c0fd fix(kilo-docs): configure xAI endpoint link exclusions 2026-05-24 15:49:23 -04:00
Josh Lambert a4f6ef899a fix(cli): exclude xAI endpoints from link checking 2026-05-24 15:42:16 -04:00
kirillk 632893a958 feat(jetbrains): gate legacy migration from backend 2026-05-24 14:50:59 -04:00
kirillk db963bb57e Merge remote-tracking branch 'origin/main' into prairie-crocus
# Conflicts:
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt
2026-05-24 13:33:21 -04:00
kirillk cf38cfb01e feat(jetbrains): add legacy migration wizard UI
Add the JetBrains frontend migration wizard for the legacy migration core. The wizard renders as a MODAL_LAYER blocking overlay inside every visible SessionUi and is driven by a shared KiloMigrationService app service.

- Shared: MigrationDto.kt with full DTO set, KiloMigrationRpcApi with status/detect/migrate/skip/finalize/cleanup
- Backend: KiloBackendLegacyMigrationStoreService (PropertiesComponent status persistence), MigrationRpcMapper (pure bidirectional mapper), KiloMigrationRpcApiImpl (channelFlow streaming off Dispatchers.IO), KiloMigrationRpcApiProvider; extend KiloBackendMigrationManager with status/mark
- Frontend service: KiloMigrationService with idempotent check, in-flight guard, progress collection from streamed events, skip/finish/force re-import; MigrationSelectionBuilder mirrors VS Code preselection rules
- SessionRootPanel: new Blocker class at MODAL_LAYER with setBlocker/setBlocked helpers; existing scroll overlay at PALETTE_LAYER unchanged
- Swing wizard: MigrationWizardPanel (What's New + Migrate screens, retained component tree), MigrationItemRow, MigrationStatusIcon, SessionMigrationProgressPanel, SessionMigrationSummaryPanel, MigrationOverlayPanel
- SessionUi: wired to MigrationUiController via coroutine state collection on Dispatchers.Main; check() called from addNotify() and AppChanged READY
- Tests: SessionRootPanelTest, SessionUiLayoutTest, KiloMigrationServiceTest, SessionUiMigrationTest, FakeMigrationRpcApi, FakeMigrationUiController
2026-05-24 13:24:29 -04:00
Alex Alecu 57c291f68c fix(cli): keep workspace patch test scoped 2026-05-23 22:43:00 +03:00
marius-kilocode 19b0bdea19 docs(kilo-docs): keep Pi integration guidance concise 2026-05-23 13:33:57 +02:00
marius-kilocode fcc5aaab3a docs(kilo-docs): document Pi Gateway integration 2026-05-23 13:20:28 +02:00
Alex Alecu 6d8c9b1d4e fix(cli): make untracked patches portable on Windows 2026-05-23 11:00:22 +03:00
Alex Alecu 51ee32f286 fix(cli): stabilize workspace patch test on Windows 2026-05-23 10:36:10 +03:00
Marian Alexandru Alecu e6290713f2 Merge branch 'main' into local-review-base-picker 2026-05-23 10:08:11 +03:00
Aarav 01040890d5 Merge branch 'main' into fix/tui-export-all-messages 2026-05-22 17:24:27 -06:00
Aarav 0c71f69cf7 Merge branch 'main' into fix/agent-manager-model-sync 2026-05-22 17:24:21 -06:00
Aarav Sharma a8f3a69444 fix(agent-manager): compare and reset worktree model against configModel
Use session.configModel() instead of session.selected() in NewWorktreeDialog
so the overridden comparison (line 124) and the reset handler (line 444) both
use the config-based model. This prevents stale overridden states from
session.selected() from leaking into the worktree dialog's override detection
and reset behaviour.

Partially fixes #9349.
2026-05-22 17:11:50 -06:00
Aarav Sharma 27a4137496 fix(cli): prevent data-loss in TUI transcript copy/export on SDK error
Both the copy and export handlers now pass `{ throwOnError: true }` to
`sdk.client.session.messages()` and drop the `?? []` fallback, so a failed
fetch (404/400/network) throws into the existing catch block and surfaces an
error toast instead of silently writing/returning an empty transcript.
2026-05-22 16:43:58 -06:00
kirillk 45362c0393 ci(jetbrains): integrate JetBrains typecheck and tests into repo-wide checks
- Add test:ci root script as alias for bun turbo test:ci
- Wire typecheck as a dependency of kilo-jetbrains#test:ci in turbo.json so compile runs before tests
- Exit with Gradle's code on Linux/macOS so failures block the repo-wide turbo test:ci run; Windows stays non-blocking due to inherent IntelliJ test flakiness there
2026-05-22 17:27:36 -04:00
opencode ce6c114d99 release: v1.15.9 2026-05-22 21:18:37 +00:00
Alex Alecu d41324c084 Merge remote-tracking branch 'origin/main' into local-review-base-picker
# Conflicts:
#	packages/opencode/test/acp/agent-interface.test.ts
2026-05-22 22:44:11 +03:00
Kirill Kalishev 59bf44712c Merge pull request #10398 from Kilo-Org/scythe-dust
feat(jetbrains): polish session permission prompts
2026-05-22 15:32:00 -04:00
opencode-agent[bot] 1a329e4e67 chore: generate 2026-05-22 19:31:59 +00:00
James Long bfb2d8dc76 fix(tui): when diff viewer closes always return to last route (#28903) 2026-05-22 15:30:31 -04:00
Alex Alecu f19d8ef6e5 fix(cli): harden local review suggestion handling 2026-05-22 22:14:53 +03:00
kirillk 8bbadd5f0e test(jetbrains): stabilize question view assertion 2026-05-22 15:11:02 -04:00
kirillk 2e753bb039 fix(jetbrains): address session review feedback 2026-05-22 14:48:12 -04:00
James Long 8f7a6c4a00 fix(tui): refine diff view keyboard shortcuts (#28896) 2026-05-22 14:40:14 -04:00
kirillk c9126435ff fix: remove jetbrains typecheck dependency from test:ci in turbo.json 2026-05-22 14:26:43 -04:00
kirillk c1c6971687 Merge remote-tracking branch 'origin/main' into scythe-dust 2026-05-22 14:26:10 -04:00
Kirill Kalishev 91bd6f16ce Merge pull request #10461 from Kilo-Org/conscious-jackrabbit
feat(jetbrains): native profile settings, account overlay, and paid-model login
2026-05-22 14:25:15 -04:00
opencode-agent[bot] 1857c73565 chore: generate 2026-05-22 18:25:01 +00:00
kirillk 988161001a chore: remove plan files from PR 2026-05-22 14:24:18 -04:00
Shoubhit Dash 5f42351159 fix(provider): type default model failures (#28881) 2026-05-22 23:53:23 +05:30
Shoubhit Dash 968aaa3cfe fix(pty): expose missing session errors (#28884) 2026-05-22 23:53:03 +05:30
opencode-agent[bot] b8266e5819 chore: generate 2026-05-22 18:22:48 +00:00
James Long ba746e36d8 fix(tui): empty states, context, and minor improvements to diff viewer (#28878) 2026-05-22 14:21:22 -04:00
Catriel Müller b52a2115d3 Merge pull request #10513 from Kilo-Org/dynamic-department
Add background process support
2026-05-22 15:17:54 -03:00
kirillk 5be82549ab fix(jetbrains): pad permission target 2026-05-22 14:09:13 -04:00
kirillk 82b1e52ef9 fix(jetbrains): remove prompt auto-approve 2026-05-22 14:03:32 -04:00
kirillk c4d85ca5ff refactor(jetbrains): move Permission views to views.permission, Align to ui.layout 2026-05-22 13:53:43 -04:00
opencode-agent[bot] d5068ba28e chore: generate 2026-05-22 17:50:23 +00:00
Shoubhit Dash 7265c46af6 fix(skill): type expected skill failures (#28885) 2026-05-22 23:18:52 +05:30
Shoubhit Dash 536ee857c6 fix(installation): type upgrade failures (#28883) 2026-05-22 23:18:17 +05:30
kirillk 20214bbfe9 refactor(jetbrains): drop Align shorthand helpers, keep only align(h, v) 2026-05-22 13:47:24 -04:00
opencode-agent[bot] dda69d77e8 chore: generate 2026-05-22 17:47:18 +00:00
Shoubhit Dash 0e14404e5f fix(sync): map workspace warp not found (#28882) 2026-05-22 23:15:53 +05:30
opencode-agent[bot] 05f51bfe45 chore: generate 2026-05-22 17:44:34 +00:00
Shoubhit Dash aee552c043 fix(repository): type expected reference failures (#28880) 2026-05-22 23:13:14 +05:30
kirillk dcfa1029c3 feat(jetbrains): add Align wrapper with TRACK mode, replace CenterShrinkPanel 2026-05-22 13:37:55 -04:00
kirillk fa4bc15117 fix(jetbrains): compact permission rows 2026-05-22 13:05:48 -04:00
opencode-agent[bot] 4f6eaf859b chore: generate 2026-05-22 16:39:58 +00:00
Alex Alecu df786a7264 fix(cli): type ACP runtime methods 2026-05-22 19:39:23 +03:00
Kit Langton d0cb58782f fix(llm): surface code, type, and nested fields on provider stream errors (#28757) 2026-05-22 12:37:55 -04:00
opencode-agent[bot] a3430db73a chore: generate 2026-05-22 16:37:46 +00:00
Shoubhit Dash 3e1972fd92 fix(httpapi): return project not found errors (#28856) 2026-05-22 22:06:20 +05:30
Alex Alecu 80f3d65e33 fix(cli): accept free-form local-review input 2026-05-22 19:35:37 +03:00
opencode-agent[bot] b368e5adbe chore: generate 2026-05-22 16:31:30 +00:00
James Long 69e4f52272 fix(tui): interaction improvements to diff viewer (#28851) 2026-05-22 12:30:10 -04:00
opencode-agent[bot] 8a55920531 chore: generate 2026-05-22 16:25:15 +00:00
Kit Langton 9db90a0b76 fix(llm): emit structured image blocks for tool-result media in Anthropic Messages (#28755) 2026-05-22 12:23:41 -04:00
Kit Langton 700d012025 fix(llm): emit structured input_image content for tool-result media in OpenAI Responses (#28754) 2026-05-22 12:23:23 -04:00
Catriel Müller b96bf3da31 fix: tests / gradle 2026-05-22 13:19:07 -03:00
Shoubhit Dash 59e486a917 fix(tui): restore question prompt key handling (#28835) 2026-05-22 21:47:13 +05:30
Marian Alexandru Alecu 538960f420 Merge branch 'main' into local-review-base-picker 2026-05-22 19:16:55 +03:00
Aiden Cline 8596967415 ci: "fix: exempt team members from compliance cleanup" (#28865) 2026-05-22 11:14:52 -05:00
opencode-agent[bot] 00038027c8 chore: generate 2026-05-22 15:31:46 +00:00
Shoubhit Dash 5cf597d583 fix(httpapi): return pty error bodies (#28838) 2026-05-22 21:00:20 +05:30
Catriel Müller 72854fab76 Merge pull request #10510 from Kilo-Org/dust-cork
fix(cli): reset terminal modes on TUI exit
2026-05-22 11:46:09 -03:00
Imanol Maiztegui 810905d99e Merge pull request #10517 from Kilo-Org/imanol/post-merge-fixes
chore: address post 1.14.41 merge review comments
2026-05-22 16:20:05 +02:00
Alex Alecu ab923c8ab5 fix(cli): focus local reviews on high-signal issues 2026-05-22 17:15:36 +03:00
Catriel Müller 697fa4e80f fix: format 2026-05-22 11:05:40 -03:00
Imanol Maiztegui fdc46ddfea chore: clean up post-merge artifacts and rebrand references
Remove accidentally committed Gradle build cache files from the
JetBrains package, add the .gradle directory to .gitignore, and
update user-facing strings from "opencode.json" to "kilo.json".
2026-05-22 15:58:59 +02:00
Marian Alexandru Alecu ccfec216a0 Merge pull request #10502 from Kilo-Org/track-accepted-suggestion-telemetry
feat: track accepted review suggestions
2026-05-22 16:56:27 +03:00
kilo-maintainer[bot] 3eaaa26b34 chore: update nix node_modules hashes 2026-05-22 13:53:29 +00:00
opencode-agent[bot] d92b8d8009 chore: generate 2026-05-22 13:52:40 +00:00
Catriel Müller 5696a1937e fix: test 2026-05-22 10:52:14 -03:00
Dax Raad 854c535536 fix(tui): enable diff viewer by default 2026-05-22 09:50:30 -04:00
Catriel Müller e0ee13290f fix: merge 2026-05-22 10:44:54 -03:00
Catriel Müller 2062335803 fix: fix test 2026-05-22 10:42:20 -03:00
Catriel Müller 9c003c4685 fix: fix vscode font size 2026-05-22 10:42:20 -03:00
Catriel Müller 8f6a7f75d1 Merge branch 'main' into dynamic-department 2026-05-22 10:42:00 -03:00
kilo-maintainer[bot] 1ada99588e release: v7.3.8 2026-05-22 13:41:52 +00:00
Catriel Müller a1ff9105a3 Merge branch 'main' into dynamic-department 2026-05-22 10:41:45 -03:00
kiloconnect[bot] 66326e10fe docs: add OpenCode v1.14.41 upstream merge review reports (PR #10507) 2026-05-22 13:40:26 +00:00
Imanol Maiztegui 8ee9512ac3 Merge pull request #10507 from Kilo-Org/imanolmaiztegui/kilo-opencode-v1.14.41
OpenCode v1.14.41
2026-05-22 15:31:34 +02:00
OpeOginni 3cf955e9ad fix(desktop): correct user code extraction when URL contains colons (#28837) 2026-05-22 21:16:33 +08:00
github-actions[bot] 33221b1711 chore: update kilo-vscode visual regression baselines 2026-05-22 13:02:41 +00:00
Sascha Buehrle 42844e5054 Merge pull request #8403 from saschabuehrle/fix/issue-8288
fix: accept `env` alias in local MCP config
2026-05-22 14:52:43 +02:00
Catriel Müller 45f653f43d feat: background process on vscode 2026-05-22 09:50:50 -03:00
opencode-agent[bot] 63f3e84792 chore: generate 2026-05-22 12:17:49 +00:00
Shoubhit Dash 0beb4de3e8 fix(httpapi): return mcp server not found errors (#28817) 2026-05-22 17:46:30 +05:30
Catriel Müller 3e8f6d7bc7 fix: fix cleanup mouse events 2026-05-22 08:59:50 -03:00
Shoubhit Dash 51da3483a9 feat(tui): copy worktree path from palette (#28823) 2026-05-22 17:28:51 +05:30
opencode-agent[bot] 060fbc9ce7 chore: generate 2026-05-22 11:42:14 +00:00
Sebin 7a769dab3a fix(mcp): include scope in clientMetadata and add callbackPort option (#28810)
Co-authored-by: Shoubhit Dash <shoubhit2005@gmail.com>
2026-05-22 17:10:38 +05:30
Catriel Müller 656572c2cf fix: fix kitty proto on old terminals 2026-05-22 08:18:48 -03:00
Imanol Maiztegui 4a28a5f88f Merge branch 'main' into imanolmaiztegui/kilo-opencode-v1.14.41 2026-05-22 13:15:04 +02:00
Imanol Maiztegui d72406ce15 chore: remove generated JetBrains artifacts 2026-05-22 13:13:17 +02:00
Imanol Maiztegui bc99be418d fix(opencode): use named import for zod module
Switch from default to named import to align with the project's
import style and avoid potential issues with module resolution.
2026-05-22 13:03:31 +02:00
opencode-agent[bot] 2663ecd39d chore: generate 2026-05-22 11:00:29 +00:00
Shoubhit Dash 4ce247eaba fix(httpapi): return request not found errors (#28693) 2026-05-22 16:29:12 +05:30
Alex Alecu c6f3b9cba8 docs(cli): link base branch order 2026-05-22 13:50:43 +03:00
Imanol Maiztegui f915fdc058 test(ui): add file:// URL parsing tests and exclude jetbrains from typecheck
Expand extractFilePathFromHref test coverage to handle file:// URLs on
Unix, Windows drives, and encoded characters. Previously file:// URLs
were expected to return undefined; now they resolve to local paths.
Exclude @kilocode/kilo-jetbrains from turbo typecheck filter to avoid
build errors in that package.
2026-05-22 12:49:26 +02:00
Alex Alecu 2030323c64 feat: track shown review suggestions 2026-05-22 13:36:19 +03:00
Imanol Maiztegui 913d6cb07b fix(opencode): correct provider ID references and update TaskPromptOps cancel signature
Use providerID variable instead of provider.id in dialog-provider to
fix incorrect property access after destructuring. Update cancel method
in TaskPromptOps stubs to return Effect.void matching the expected
interface. Remove obsolete workspace-restore test file and add missing
fixture import.
2026-05-22 12:27:18 +02:00
Imanol Maiztegui 7b94fbb95b style: format code with prettier across multiple packages
Reformat multiline arrays, JSX props, CSS transitions, and test
indentation to comply with the project's prettier configuration.
Also reorder auto-generated SDK type imports alphabetically and
relocate type definitions to match updated openapi.json output.
2026-05-22 11:58:24 +02:00
Alex Alecu 0d12909a9e refactor(cli): make local-review commands regular 2026-05-22 12:36:24 +03:00
github-actions[bot] d218d67a70 chore: update kilo-vscode visual regression baselines 2026-05-22 09:19:19 +00:00
Josh Holmer 19f166dc71 feat(vscode): implement agent model and variant override dropdowns in VSCode settings 2026-05-22 09:12:39 +00:00
Alex Alecu c791ccf440 feat: track accepted review suggestions 2026-05-22 11:08:22 +03:00
Imanol Maiztegui b6523c0d91 resolve merge conflicts 2026-05-22 09:01:40 +02:00
Brendan Allan 76d9c2cd76 fix(app): debounce vcs refresh in session page (#28784) 2026-05-22 06:47:05 +00:00
Brendan Allan f6101aef8a refactor(app): consolidate sdk and sync contexts (#28782) 2026-05-22 06:40:56 +00:00
Brendan Allan f3874ec2f9 refactor(app): move tab navigation to titlebar and conditionally register project shortcuts (#28773) 2026-05-22 13:54:25 +08:00
Brendan Allan 6466fcfdea refactor(app): simplify session routing and tab close handling (#28767) 2026-05-22 12:48:09 +08:00
Josh Lambert 6a41985d5a fix(cli): brand xAI OAuth as Kilocode 2026-05-22 00:27:53 -04:00
Brendan Allan 1f0390cfbb app: wrap provider data in Map to avoid store (#28765) 2026-05-22 12:23:16 +08:00
Joshua Lambert 3d64f562be Update packages/opencode/src/plugin/xai.ts
Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>
2026-05-22 00:15:51 -04:00
Joshua Lambert b3697f1d5d Update packages/opencode/src/plugin/xai.ts
Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>
2026-05-22 00:15:45 -04:00
Joshua Lambert cb4088b2ab Update packages/opencode/src/plugin/xai.ts
Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>
2026-05-22 00:15:39 -04:00
opencode-agent[bot] 9f06accfb4 chore: generate 2026-05-22 04:04:41 +00:00
JPFrancoia 7a9724496b fix(vertex): Vertex (Antropic) provider: use .rep.googleapis.com for continental multi-region endpoints (us, eu) (#28347)
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-05-21 23:03:24 -05:00
Josh Lambert 4ef371768a feat(cli): add xAI Grok OAuth 2026-05-22 00:03:08 -04:00
Aiden Cline 3e931152d1 tweak(tui): remove italics from thinking labels (#28737) 2026-05-21 22:22:51 -05:00
Frank ad1d14775d sync 2026-05-21 19:11:33 -04:00
Frank fcf4dff2ce sync 2026-05-21 19:09:26 -04:00
Frank 56714327f4 sync 2026-05-21 19:02:24 -04:00
Frank 21f338652d sync 2026-05-21 18:49:52 -04:00
Frank 8115f0c661 sync 2026-05-21 18:43:48 -04:00
opencode-agent[bot] 87d4cb07b0 chore: generate 2026-05-21 22:36:00 +00:00
James Long ee008923f3 feat(tui): design revamp of diff viewer (#28728) 2026-05-21 18:34:32 -04:00
Frank bbbef0da1c sync 2026-05-21 18:27:45 -04:00
Catriel Müller c076058bfc fix: fix logo on old windows terminal 2026-05-21 18:26:01 -03:00
Aiden Cline 1268f8657e fix: exempt team members from compliance cleanup 2026-05-21 16:15:45 -05:00
Marius e27b1bfd22 Merge pull request #10117 from shssoichiro/fix-vscode-token-display
fix(vscode): show session-cumulative token usage
2026-05-21 23:13:22 +02:00
Frank 39e7ff932d sync 2026-05-21 17:03:54 -04:00
Kit Langton e92c4fb460 chore: drop dead imports across opencode/core/llm (#28720) 2026-05-21 17:03:12 -04:00
OpeOginni 4b496066bf fix(opencode): update spinner color logic (#28032)
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-05-21 16:02:08 -05:00
Frank e63dcd30f3 sync 2026-05-21 16:55:12 -04:00
Kit Langton 2935d1819e refactor(server): rename Fence.waitEffect to Fence.wait (#28717) 2026-05-21 20:48:15 +00:00
Kit Langton 86907e2e4a refactor(server): drop dead Fence.wait + redundant casts (#28710) 2026-05-21 16:35:44 -04:00
Frank 31d2d38d7a sync 2026-05-21 16:20:33 -04:00
Frank d21477d55a sync 2026-05-21 16:11:41 -04:00
Frank 80fa6e6c49 sync 2026-05-21 16:02:56 -04:00
Kit Langton b99787e95b refactor(opencode): fetch remote config with http client (#28661) 2026-05-21 15:53:44 -04:00
Frank 562d299a41 sync 2026-05-21 15:46:54 -04:00
kirillk 100bcc29b4 feat(jetbrains): add non-UI legacy migration core
Port VS Code v5 migration logic to JetBrains backend: provider mapping,
MCP/custom-mode/settings conversion, session parser with deterministic SHA-1
IDs, HTTP backend adapter, and LegacyMigrationEngine orchestration. No UI,
no EDT dependencies — callers own threading and sequencing. 72 tests passing.
2026-05-21 15:46:15 -04:00
kirillk 047e0c9172 test(jetbrains): cover custom question edge cases 2026-05-21 15:38:53 -04:00
kirillk 5291835139 fix(jetbrains): support custom question responses 2026-05-21 15:38:53 -04:00
kirillk cf1ffc00f0 refactor(jetbrains): centralize question card setup 2026-05-21 15:38:53 -04:00
kirillk d4757e8f00 refactor(jetbrains): rename BaseSessionQuestionPanel to BaseQuestionView, drop SessionQuestionButton 2026-05-21 15:38:52 -04:00
kirillk 930f2cf9bc refactor(jetbrains): move PartView, GenericView, BaseSessionQuestionPanel, SessionQuestionButton to views.base 2026-05-21 15:38:52 -04:00
opencode-agent[bot] 9ecb04e35b chore: generate 2026-05-21 19:19:25 +00:00
Kit Langton 231689c767 test(config): port env-var config tests to it.instance (#28706) 2026-05-21 19:17:29 +00:00
Catriel Müller c604a1bb3d Merge pull request #10495 from Kilo-Org/impartial-peacock
fix(cli): show recent models in provider picker
2026-05-21 16:11:41 -03:00
Catriel Müller 06d6e208ae Merge pull request #10494 from Kilo-Org/heady-magpie
Fix Kilo branding in CLI auth flows
2026-05-21 16:11:35 -03:00
Frank d70942079a sync 2026-05-21 15:06:10 -04:00
Frank 0cc55c11ac sync 2026-05-21 14:53:56 -04:00
Kit Langton 40da77e77c test(opencode): cover native reasoning continuation (#28683) 2026-05-21 14:50:37 -04:00
Frank 0d2de7db65 sync 2026-05-21 14:25:43 -04:00
Frank a568f616c9 sync 2026-05-21 13:55:31 -04:00
Catriel Müller ae0fbe89dc fix(cli): show recent models in provider picker 2026-05-21 14:43:05 -03:00
Catriel Müller f2053dc8be refactor: address the comments 2026-05-21 14:38:18 -03:00
opencode-agent[bot] e4957a78ea chore: update nix node_modules hashes 2026-05-21 17:27:59 +00:00
opencode-agent[bot] 7e35cff4f5 chore: generate 2026-05-21 17:25:26 +00:00
Shoubhit Dash 82b796ce31 fix(httpapi): return session busy error bodies (#28684) 2026-05-21 22:53:49 +05:30
Catriel Müller ac61526d7b fix(cli): brand OpenAI OAuth flow as Kilo 2026-05-21 14:19:48 -03:00
Vladimir Glafirov 6c24062d2f chore(deps): bump gitlab-ai-provider to 6.7.0 (#28218) 2026-05-21 12:12:39 -05:00
Catriel Müller fca2afcf1e refactor: kilo command branding 2026-05-21 14:08:24 -03:00
Kirill Kalishev 9014aa3bb0 Merge branch 'main' into scythe-dust 2026-05-21 13:07:36 -04:00
Catriel Müller 1f24a39ae9 refactor: address the comments 2026-05-21 14:04:39 -03:00
Catriel Müller 06a6bf715d refactor: improve implementation 2026-05-21 13:58:30 -03:00
kirillk 525bfc9b32 fix(jetbrains): collapse expandable session views 2026-05-21 12:54:18 -04:00
opencode-agent[bot] 3ca09ee3ef chore: generate 2026-05-21 16:50:49 +00:00
Kit Langton 003f1ce0f4 test(control-plane): finish porting workspace.test.ts to it.instance (#28665) 2026-05-21 12:48:59 -04:00
Kit Langton 61390dbb49 fix(llm): preserve native continuation metadata (#28678) 2026-05-21 11:57:45 -04:00
opencode a58c3c53a9 sync release versions for v1.15.7 2026-05-21 15:51:26 +00:00
Victor Navarro 75ce8feff5 chore: upgrade sst version (#26224) 2026-05-21 17:19:15 +02:00
kilo-maintainer[bot] 8df0bb73a9 release: v7.3.7 2026-05-21 15:06:25 +00:00
kirillk 46b0ea1a17 fix(jetbrains): tune question panel typography 2026-05-21 10:35:23 -04:00
kirillk 20bae4f3d9 fix(jetbrains): align session question views 2026-05-21 10:26:23 -04:00
Kirill Kalishev 6e84c83000 Merge branch 'main' into conscious-jackrabbit 2026-05-21 10:17:00 -04:00
Kirill Kalishev 65733baa01 Merge pull request #10463 from Kilo-Org/panoramic-existence
fix(jetbrains): fix build/tests after OpenCode merge, document Java 21 setup
2026-05-21 10:16:31 -04:00
Catriel Müller 4e5fe60430 Merge pull request #10297 from IamCoder18/fix/tui-dialog-vertical-centering
fix(cli): vertically center TUI dialogs
2026-05-21 10:46:41 -03:00
kirillk 835781830e refactor(jetbrains): align permission question cards 2026-05-21 09:33:59 -04:00
kilo-maintainer[bot] b10b4c5d74 release: v7.3.6 2026-05-21 13:21:21 +00:00
Imanol Maiztegui 10a69369ab merge: record upstream v1.14.41 2026-05-21 14:48:37 +02:00
Imanol Maiztegui f7816a9eeb refactor: kilo compat for v1.14.41 2026-05-21 14:48:36 +02:00
Marius 0ba8f9bbbe Merge pull request #10431 from Kilo-Org/dependabot/npm_and_yarn/turbo-2.9.14
chore(deps-dev): bump turbo from 2.8.13 to 2.9.14
2026-05-21 14:31:53 +02:00
marius-kilocode 2d6fa73993 style(vscode): format streaming markdown regression 2026-05-21 14:31:23 +02:00
kilo-maintainer[bot] 13e900f630 release: v7.3.5 2026-05-21 12:30:15 +00:00
marius-kilocode 0ec80b0c6f fix: stabilize streamed markdown code blocks 2026-05-21 14:27:34 +02:00
Catriel Müller 30d34c3f55 Merge pull request #10484 from Kilo-Org/great-marble
refactor: implement OIDC NPM publish
2026-05-21 09:19:11 -03:00
marius-kilocode 2caa5489f2 chore(cli): annotate task failure test import 2026-05-21 14:15:50 +02:00
marius-kilocode 7025c779f7 fix(cli): surface failed subagent task errors 2026-05-21 14:15:04 +02:00
Catriel Müller cd009c3d8f feat: background process 2026-05-21 09:13:55 -03:00
Catriel Müller d42e99d784 refactor: implement OIDC NPM publish 2026-05-21 08:53:28 -03:00
marius-kilocode 637527d80e fix(vscode): hide sub-agent sessions from recents 2026-05-21 13:51:43 +02:00
Alex Alecu abf1c88b25 fix(cli): preserve local-review command context 2026-05-21 14:42:59 +03:00
Marius c03f3a016a Merge pull request #10482 from Kilo-Org/fix-openrouter-indexing-dimensions
fix(indexing): support OpenRouter Gemini embeddings
2026-05-21 13:33:53 +02:00
kilo-maintainer[bot] 94af83cdd0 chore: update nix node_modules hashes 2026-05-21 11:25:51 +00:00
marius-kilocode 3a4f96fd0d fix(indexing): avoid retrying invalid OpenRouter bodies 2026-05-21 13:17:06 +02:00
Marius 688f42a5a8 Merge pull request #10481 from Kilo-Org/fix-cli-sse-reconnect-loop
fix(vscode): stop local CLI SSE reconnect flapping
2026-05-21 13:12:43 +02:00
Marius 8b792937e4 Merge pull request #10480 from Kilo-Org/juvenile-tower
fix(vscode): update Pierre diff rendering
2026-05-21 13:11:02 +02:00
marius-kilocode 9c8451f420 chore(vscode): keep extension launch logs opt-in 2026-05-21 13:08:31 +02:00
marius-kilocode 205e22ee46 fix(indexing): support OpenRouter Gemini embeddings 2026-05-21 13:06:36 +02:00
opencode-agent[bot] 6bee6ee755 chore: generate 2026-05-21 11:01:36 +00:00
Shoubhit Dash 9739d75892 fix(httpapi): handle corrupt v2 session messages (#28633) 2026-05-21 16:30:04 +05:30
marius-kilocode 37475b657b style(vscode): format SSE reconnect adapter 2026-05-21 12:56:51 +02:00
github-actions[bot] f730200316 chore: update kilo-vscode visual regression baselines 2026-05-21 10:56:34 +00:00
marius-kilocode 94f58e824b fix(vscode): keep Pierre diff theme in Kilo UI 2026-05-21 12:53:35 +02:00
marius-kilocode 15bdd0f96f fix(vscode): stop local CLI SSE reconnect flapping 2026-05-21 12:52:23 +02:00
opencode-agent[bot] 4a976482b1 chore: generate 2026-05-21 10:46:02 +00:00
Brendan Allan 2caac055ef feat(desktop): add pinch zoom setting (#28632) 2026-05-21 10:44:30 +00:00
marius-kilocode fe853f383f chore(ui): annotate Pierre diff theme override 2026-05-21 12:38:41 +02:00
marius-kilocode 9067de039e fix(vscode): update Pierre diff rendering 2026-05-21 12:29:34 +02:00
Shoubhit Dash 2697cb8001 fix(httpapi): remove config error middleware special case (#28631) 2026-05-21 15:57:25 +05:30
arrrkady 5cf8db10de Merge pull request #10477 from Kilo-Org/docs/add-auto-top-ups-redirect
docs: add redirect from /auto-top-ups to kilo.ai features page
2026-05-21 12:17:54 +02:00
opencode-agent[bot] dbd709376b chore: generate 2026-05-21 10:15:54 +00:00
Shoubhit Dash fc08292136 fix(httpapi): add unknown error references (#28629) 2026-05-21 15:44:35 +05:30
Jack ee594ba55b docs: sync TUI config translations and Zen pricing (#28620) 2026-05-21 18:03:22 +08:00
arrrkady 3769f69593 Merge branch 'main' into docs/add-auto-top-ups-redirect 2026-05-21 12:01:05 +02:00
Marius 333c6053d7 Merge pull request #10479 from Kilo-Org/mercury-way
fix(vscode): clear stale diff preview loading
2026-05-21 11:54:03 +02:00
marius-kilocode 54f81b6d4c merge main into brazen-lingo 2026-05-21 11:46:20 +02:00
opencode-agent[bot] 516af86d53 chore: generate 2026-05-21 09:43:40 +00:00
Shoubhit Dash f5d20c580b fix(httpapi): expose unavailable v2 session mutations (#28624) 2026-05-21 15:12:13 +05:30
marius-kilocode 048338a314 fix(vscode): clear stale diff preview loading 2026-05-21 11:37:59 +02:00
arrrkady 637c61e0a8 Merge pull request #10474 from Kilo-Org/docs/fix-auto-top-ups-links
docs: fix auto top-ups links and clarify availability for individuals and organizations
2026-05-21 11:22:35 +02:00
Brendan Allan 7d5e91b801 opencode: provide channel to web build (#28612) 2026-05-21 17:22:27 +08:00
kiloconnect[bot] c94b43f957 docs: add redirect from /auto-top-ups to kilo.ai features page 2026-05-21 09:19:55 +00:00
kiloconnect[bot] 063059c38f docs: fix auto top-ups links and clarify individual/org availability 2026-05-21 09:02:32 +00:00
Marian Alexandru Alecu e6c2b33cfb Merge branch 'main' into local-review-base-picker 2026-05-21 11:33:38 +03:00
Alex Alecu 1fa486a268 fix(cli): preserve local-review placeholder guidance 2026-05-21 11:21:24 +03:00
Alex Alecu a5f6eea0ec fix(cli): keep quoted review guidance as instructions 2026-05-21 11:19:34 +03:00
Alex Alecu 8a8c6cde54 fix(cli): reject invalid local-review bases 2026-05-21 11:18:51 +03:00
kilo-maintainer[bot] 87fd1d6016 release: v7.3.4 2026-05-21 08:18:26 +00:00
Marian Alexandru Alecu 3e918225ef Merge branch 'main' into local-review-base-picker 2026-05-21 11:05:25 +03:00
opencode-agent[bot] f70afbea34 chore: generate 2026-05-21 07:58:37 +00:00
Shoubhit Dash b275b12e90 fix(httpapi): expose v2 session not found (#28511) 2026-05-21 13:27:20 +05:30
kilo-maintainer[bot] 90bc4b0fb3 release: v7.3.3 2026-05-21 07:38:43 +00:00
Kagura 4d900b2f46 fix(ui): preserve target attribute in DOMPurify config for markdown links (#28598) 2026-05-21 14:52:03 +08:00
Brendan Allan b2661c4a03 app: more new designs (#28603) 2026-05-21 14:42:13 +08:00
Frank 6de584f25c zen: fix affiliated header 2026-05-21 02:36:11 -04:00
opencode-agent[bot] 8c72edb3ff chore: generate 2026-05-21 05:49:32 +00:00
Luke Parker b207e32249 feat(app): add desktop v2 home, session entry, and titlebar (#28442)
Co-authored-by: Brendan Allan <git@brendonovich.dev>
2026-05-21 05:48:13 +00:00
opencode-agent[bot] 6602341c0d chore: generate 2026-05-21 05:14:43 +00:00
Milosz Jankiewicz b32debb8a3 feat(opencode): add xAI Grok OAuth (SuperGrok) + device-code login (#28557)
Co-authored-by: Jaaneek <Jaaneek@users.noreply.github.com>
Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-05-21 00:13:28 -05:00
opencode-agent[bot] 7ff392abe3 chore: update nix node_modules hashes 2026-05-21 05:08:00 +00:00
opencode-agent[bot] 7566cfe602 chore: generate 2026-05-21 04:56:41 +00:00
Luke Parker bea3ca5b05 feat(desktop): Add Export Logs (#26262) 2026-05-21 14:55:23 +10:00
cooper-oai c64ac905e1 fix(opencode): dedupe concurrent Codex OAuth refreshes (#28236)
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-05-20 23:34:31 -05:00
opencode-agent[bot] 7a554441b4 chore: generate 2026-05-21 04:02:29 +00:00
Kit Langton 14366af069 test(session): port llm.test.ts to it.instance (#28578) 2026-05-21 04:01:13 +00:00
opencode-agent[bot] d9ed62e51c chore: generate 2026-05-21 03:37:50 +00:00
Kit Langton 39ea816a72 refactor(opencode): roll out serviceUse proxy across 14 services + tests (#28576) 2026-05-21 03:36:27 +00:00
Kit Langton 69eee26f30 refactor(permission): drop redundant inner decode in Permission.ask (#28575) 2026-05-21 03:34:46 +00:00
opencode-agent[bot] 8f3949d235 chore: generate 2026-05-21 03:30:58 +00:00
Kit Langton facd207396 fix(opencode): support native OpenAI OAuth fetch (#28571) 2026-05-20 23:29:25 -04:00
opencode-agent[bot] 2b28cc9024 chore: generate 2026-05-21 03:24:51 +00:00
Kit Langton d37f9e770b test(control-plane): port workspace.test.ts to it.instance (#28572) 2026-05-21 03:23:26 +00:00
Kit Langton 8fc02b0130 refactor(question): tool-arg errors at the boundary, drop redundant inner decode (#28570) 2026-05-21 03:06:22 +00:00
Kit Langton ddf18a7f9c test(server): port event SSE tests to it.instance + testEffectShared (#28569) 2026-05-21 02:55:54 +00:00
opencode-agent[bot] fccfef1aaf chore: generate 2026-05-21 02:44:38 +00:00
Kit Langton e0e8159965 test(opencode): port provider.test.ts to it.instance (#28565) 2026-05-21 02:43:14 +00:00
opencode-agent[bot] 9cd6e07a50 chore: generate 2026-05-21 02:32:58 +00:00
Kit Langton c05ce3b725 test(opencode): port amazon-bedrock.test.ts to it.instance (#28559) 2026-05-20 22:31:42 -04:00
Kit Langton 26008696e1 fix(question): surface schema failures as friendly tool errors (#28563) 2026-05-21 02:03:03 +00:00
opencode-agent[bot] 6e177ee84a chore: update nix node_modules hashes 2026-05-21 02:02:12 +00:00
opencode-agent[bot] 172fd971c5 chore: generate 2026-05-21 01:53:45 +00:00
Aiden Cline 8bfa188e07 fix(tui): use colon for collapsed thinking labels (#28562) 2026-05-20 20:52:28 -05:00
Kit Langton 5079fed63a test(opencode): remove redundant global event casts (#28564) 2026-05-20 21:48:55 -04:00
opencode-agent[bot] 4fae476873 chore: generate 2026-05-21 01:47:51 +00:00
Aiden Cline 4487fbf52f fix(provider): support PDF attachments for xAI/Grok (#28561) 2026-05-20 20:46:31 -05:00
Kit Langton fb9d69ef62 refactor(opencode): extract session LLM request prep (#28560) 2026-05-20 21:44:33 -04:00
Kit Langton ddd6eb4496 fix(tui): separate question checkmark labels (#28558) 2026-05-20 21:35:59 -04:00
opencode-agent[bot] 12bbe84360 chore: generate 2026-05-21 01:30:35 +00:00
Kit Langton 661df8fcf8 fix(opencode): register account events in EventV2 bridge (#28555) 2026-05-20 21:29:12 -04:00
Kit Langton 16fb6dac8d fix(llm): restore OpenAI reasoning streams (#28552) 2026-05-20 21:02:59 -04:00
opencode-agent[bot] 93131b6e4c chore: generate 2026-05-21 00:55:10 +00:00
Dax 8643c0721e Rename v2 auth service to account (#28260) 2026-05-21 00:53:27 +00:00
opencode-agent[bot] bd41dac88f chore: update nix node_modules hashes 2026-05-21 00:26:08 +00:00
Kit Langton 41f6daf96a Refactor LLM route-first provider API (#28523) 2026-05-20 20:15:52 -04:00
Kit Langton 5381795844 feat(effect-drizzle-sqlite): add vendored sqlite adapter (#28547) 2026-05-20 20:09:07 -04:00
kirillk 6afa906219 feat(jetbrains): bubble subagent permission requests into root session UI
Track child session IDs discovered from task tool part metadata and subscribe
to their permission events so subagent permission prompts surface in the root
session UI instead of hanging silently. Also makes runtime auto-approve
non-persistent (no longer writes PropertiesComponent).
2026-05-20 19:49:34 -04:00
Frank 7b9d7a7b7d sync 2026-05-20 19:45:59 -04:00
kirillk b2bfe7ae05 Merge remote-tracking branch 'origin/conscious-jackrabbit' into scythe-dust 2026-05-20 19:39:14 -04:00
Frank 7b0fd9fed2 zen: grok build 0.1 2026-05-20 19:38:37 -04:00
kirillk e8d6bcb492 refactor(jetbrains): centralize all CLI JSON parsing in KiloCliDataParser
Move parseProviders, parseCommands, and parsePathState out of
KiloBackendWorkspace and KiloBackendModelStateManager into
KiloCliDataParser so no caller directly navigates JSON.

parseCommands intentionally ignores the template field, fixing
JetBrains startup when lazy CLI command templates serialize as {}.

Reorganize KiloCliDataParserTest into three @Nested groups
(SseEvents, HttpResponses, RequestBuilders) and add unit coverage
for all three new parser methods.
2026-05-20 19:37:24 -04:00
kirillk 3922a93000 fix(jetbrains): stabilize backend run startup 2026-05-20 18:53:44 -04:00
kirillk da896a11b6 Merge remote-tracking branch 'origin/panoramic-existence' into conscious-jackrabbit 2026-05-20 18:38:18 -04:00
opencode-agent[bot] b4a01cc3cd chore: generate 2026-05-20 22:37:29 +00:00
James Long a6e1aa085f fix(tui): default new sessions always to local project (#28541) 2026-05-20 18:35:37 -04:00
kirillk a3d13ee72f fix(jetbrains): fix test failures after panoramic-existence merge
- retryPrompt() now uses msg.info.providerID/modelID instead of
  model.model so login-resume preserves the original message's model
- Add AccountOverlayChanged to expected events in HistoryLoadingTest,
  ListenerLifecycleTest, and WorkspaceWatchingTest (replay now always
  fires the initial acctState on addListener)
- Update SessionUiLayoutTest overlay tests to set a logged-in profile
  since the overlay is now hidden when not logged in
- Expose appRpc in SessionUiTestBase so subclasses can mutate app state
2026-05-20 18:18:54 -04:00
kirillk 3a022d8c96 fix: add kilocode_change markers to waitFor block in prompt.test.ts 2026-05-20 18:04:42 -04:00
kirillk 6202944b95 test(cli): wait for shell output before truncation cancel 2026-05-20 17:54:04 -04:00
opencode 6a9cbe7de0 sync release versions for v1.15.6 2026-05-20 21:44:08 +00:00
kirillk 48b77db120 Merge remote-tracking branch 'origin/panoramic-existence' into conscious-jackrabbit 2026-05-20 17:27:52 -04:00
Kirill Kalishev e01965562c Merge branch 'main' into panoramic-existence 2026-05-20 17:26:36 -04:00
Marius aeab31ed9f Merge pull request #10155 from Kilo-Org/fix-tree-sitter-wasm-path
fix(cli): resolve packaged tree-sitter wasm paths
2026-05-20 23:25:17 +02:00
opencode-agent[bot] 0e17c4f299 chore: update nix node_modules hashes 2026-05-20 21:01:29 +00:00
Marius 38e463cc22 Merge pull request #10464 from Kilo-Org/sincere-panama
feat(vscode): track sidebar title button clicks
2026-05-20 22:59:13 +02:00
opencode-agent[bot] 7c121d48b9 chore: generate 2026-05-20 20:56:18 +00:00
Aiden Cline f5a8202b41 fix(tui): simplify thinking toggle styling (#28487) 2026-05-20 15:54:29 -05:00
Kirill Kalishev 04373bfd4b Merge branch 'main' into panoramic-existence 2026-05-20 16:53:00 -04:00
Kit Langton 43c24d8d0f fix(tui): gate Zed context on terminal env (#28517) 2026-05-20 16:52:33 -04:00
kirillk 28e9cd09c1 docs(jetbrains): add SDKMAN Java 21 install instructions to README 2026-05-20 16:50:46 -04:00
opencode-agent[bot] 09603ed52f chore: generate 2026-05-20 20:50:28 +00:00
kirillk 30b1848c51 docs: document Java 21 prerequisite and SDKMAN setup for JetBrains checks 2026-05-20 16:49:02 -04:00
Kit Langton 38e3b4087b test(server): port event-diagnostics to Effect runner (#28520) 2026-05-20 16:48:41 -04:00
marius-kilocode 7f979dbfdd fix(cli): preserve tree-sitter installer resources 2026-05-20 22:45:44 +02:00
opencode-agent[bot] eb52362e96 chore: generate 2026-05-20 20:45:33 +00:00
Marius d31b25eeab Merge pull request #10460 from Kilo-Org/sulky-nail
Show reasoning titles in block headers
2026-05-20 22:45:06 +02:00
Marius f75d1cb455 Merge pull request #10450 from Kilo-Org/endurable-titanosaurus
fix(vscode): keep streamed responses visible after reconcile
2026-05-20 22:44:26 +02:00
Sebastian 2969a513ce upgrade opentui to 0.2.15 (#28510) 2026-05-20 22:44:09 +02:00
marius-kilocode 5c71e70e96 test(cli): make tree-sitter wasm tests portable 2026-05-20 22:44:06 +02:00
marius-kilocode 371b7e8ae6 fix(cli): resolve packaged tree-sitter wasm paths 2026-05-20 22:44:05 +02:00
marius-kilocode f300c6acac feat(vscode): track sidebar title button clicks 2026-05-20 22:41:54 +02:00
kirillk 5ee2a5f894 fix(jetbrains): address review suggestions in OpenApiSpecNormalizer 2026-05-20 16:35:31 -04:00
opencode-agent[bot] de672fd214 chore: generate 2026-05-20 20:23:54 +00:00
James Long d0779d2aca feat(tui): collapse directories when possible in file tree (#28512) 2026-05-20 16:22:04 -04:00
opencode-agent[bot] 650594e801 chore: update nix node_modules hashes 2026-05-20 20:13:43 +00:00
James Long 58143c4b07 feat(tui): focus first file in file tree (#28513) 2026-05-20 16:04:45 -04:00
kirillk c334e5cc11 fix(jetbrains): include JetBrains in repo typecheck/tests and fix serialization failures
Re-enable @kilocode/kilo-jetbrains in bun turbo typecheck (package.json) and
bun turbo test:ci (test.yml). Add Java 21 setup to the typecheck workflow so
Gradle can run. Fix three serialization test failures:

- KiloProfile200Response with null balance / with organizations: Effect's HttpApi
  OpenAPI generator emits balance and currentOrgId as non-nullable even though
  the server schema uses Schema.NullOr. Add fixProfileNullable step to
  OpenApiSpecNormalizer that wraps these fields in anyOf: [{schema}, {type:null}]
  before Kotlin client generation, plus regression tests.

- model limit context and output deserialize with large values (NoSuchMethodError):
  compileTestKotlin was not invalidated when the generated API type changed, leaving
  stale bytecode referencing the old ProviderConfigModelsValueAnyOfLimit class.
  Wire compileTestKotlin -> fixGeneratedApi in backend/build.gradle.kts so API
  regeneration always invalidates test compilation.
2026-05-20 16:03:15 -04:00
kirillk fdf569df65 fix(jetbrains): use Dispatchers.IO for blocking OkHttp call and retain AsyncProcessIcon to prevent timer leak 2026-05-20 15:59:11 -04:00
Kit Langton 4cbeacbc76 chore: update Drizzle RC (#28506) 2026-05-20 15:55:36 -04:00
kirillk 479cfa044f test(jetbrains): harden EDT contracts, disposal, and profile/login test coverage 2026-05-20 15:48:20 -04:00
marius-kilocode 241efc6959 feat(ui): show reasoning titles in block headers 2026-05-20 21:46:42 +02:00
opencode-agent[bot] b0ca0419be chore: generate 2026-05-20 19:25:52 +00:00
Shoubhit Dash 4308dd75fb fix(httpapi): expose v2 catalog errors (#28498) 2026-05-21 00:53:35 +05:30
opencode-agent[bot] 7690481fc1 chore: update nix node_modules hashes 2026-05-20 19:23:14 +00:00
Kit Langton ec6d42d41d chore: update Effect beta (#28505) 2026-05-20 15:09:19 -04:00
opencode-agent[bot] 3553754083 chore: generate 2026-05-20 19:09:16 +00:00
Simon Klee ed839846d1 run: replace subagent tabs with on-demand picker (#28508)
Move subagent navigation into the existing palette: a
"View subagents" command entry, a dedicated picker panel, and a
Down-arrow shortcut from the empty composer.
2026-05-20 21:07:35 +02:00
Kit Langton ba803dd89a fix(sdk): unbreak typecheck on dev after v2 error widening (#28503) 2026-05-20 14:29:19 -04:00
kirillk 510b628f11 fix(jetbrains): fix clean rebuild after OpenAPI tag normalization refactor
Strip operation-level tags from the normalized spec so all routes land
in a single DefaultApi class (required by backend sources). Remove
dot-notation duplicate schemas (Event.tui.command.execute etc.) and
rewrite their refs to camelCase equivalents to fix duplicate file path
collisions. Deduplicate root-level tags array to pass spec validation.

Remove NormalizeOpenApiSpecConfig.kt; pty-specific dedup rules are no
longer needed since tags are stripped from operations entirely.
2026-05-20 14:09:48 -04:00
opencode-agent[bot] 0e118d1961 chore: generate 2026-05-20 17:57:38 +00:00
Shoubhit Dash 40e73c4910 fix(httpapi): expose v2 request errors (#28495) 2026-05-20 23:23:23 +05:30
kirillk ffe562e489 fix(jetbrains): link root Kilo settings page 2026-05-20 13:32:33 -04:00
opencode-agent[bot] 9559e2425b chore: generate 2026-05-20 17:29:32 +00:00
Frank ac76af8c56 zen: add gemini 3.5 flash 2026-05-20 13:20:54 -04:00
Victor Navarro b67b03e0ae chore: simplify referral codes (#28491) 2026-05-20 19:15:20 +02:00
kirillk e8857e6445 fix(jetbrains): add Dismiss button to login-required prompt and move Open User Profile to the right 2026-05-20 13:08:58 -04:00
kirillk 49f710143a fix(jetbrains): improve session question panel actions 2026-05-20 12:49:03 -04:00
Sebastian ef82426e28 handle permanent file plugin errors (#27344) 2026-05-20 18:47:30 +02:00
Catriel Müller 3648e2e132 wip: kilo console 2026-05-20 13:43:02 -03:00
OpeOginni 14e9e5d9d6 fix(enterprise): message nav hovercard and active state (#23964) 2026-05-21 00:06:13 +08:00
marius-kilocode 75f68190e4 fix(vscode): keep streamed responses visible after reconcile 2026-05-20 18:04:13 +02:00
kirillk 6aab217631 refactor(jetbrains): extract BaseSessionQuestionPanel shared card for question and login views
Add BaseSessionQuestionPanel in session/ui/shared as a shared rounded card shell for QuestionView and LoginRequiredView. The panel provides a consistent surface/outline, header and description text areas with editor-font styling, an optional top slot for navigation, and body/footer slots for view-specific content.
2026-05-20 11:56:59 -04:00
github-actions[bot] 1aea70a27f chore: update kilo-vscode visual regression baselines 2026-05-20 15:50:36 +00:00
marius-kilocode 218b4e3ae4 fix(cli): preserve explicit subagent model failures 2026-05-20 17:46:17 +02:00
Dax 9324ef0d08 fix(cli): default console login url (#28474) 2026-05-20 11:34:56 -04:00
Imanol Maiztegui 794189be2e fix(jetbrains): normalize duplicate OpenAPI tag (#10444)
* 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.
2026-05-20 15:24:00 +00:00
opencode-agent[bot] 8940572098 chore: generate 2026-05-20 15:18:18 +00:00
James Long 17d66ee4fe feat(tui): initial impl of diff viewer (#28476) 2026-05-20 11:16:56 -04:00
Marius b032e58759 Merge pull request #10099 from sylwester-liljegren/enhanced-file-mention-style
feat(prompt-input): add interactive file mention interactions with vi…
2026-05-20 16:55:19 +02:00
Marius db344140d1 Merge pull request #9806 from shssoichiro/issue-9804
fix(vscode): fix codebase indexing status update on windows
2026-05-20 16:46:32 +02:00
marius-kilocode 554c07e8cf fix(vscode): align unset subagent variant state 2026-05-20 16:08:56 +02:00
marius-kilocode 8e7680794d feat: configure task subagent model defaults 2026-05-20 15:59:25 +02:00
kilo-maintainer[bot] 841687d57f release: v7.3.2 2026-05-20 13:56:06 +00:00
Marius 81ee896da2 Merge pull request #10430 from bravos2k5/fix/add-xhigh-reasoning-effort-option-to-VariantConfigSchemas
fix(kilo-vscode): missing xhigh option in VariantConfigSchema
2026-05-20 15:55:54 +02:00
Marius 11314e17d0 Merge pull request #10440 from Kilo-Org/classy-dedication
fix(vscode): persist speech settings in CLI config
2026-05-20 15:44:47 +02:00
marius-kilocode b95759dd6f perf(vscode): skip noop tool index copies 2026-05-20 15:28:10 +02:00
marius-kilocode 7a1743c9fb Merge branch 'main' into classy-dedication
# Conflicts:
#	packages/sdk/js/src/v2/gen/types.gen.ts
2026-05-20 15:27:10 +02:00
Kirill Kalishev a5bd88b061 Merge pull request #10401 from Kilo-Org/military-fluorine
feat(jetbrains): auto-assign backend ports + isolated .kilo-dev storage per worktree
2026-05-20 09:26:02 -04:00
marius-kilocode 42995b2721 style(vscode): format subagent streaming helpers 2026-05-20 15:24:08 +02:00
marius-kilocode f26d55f2d3 fix(vscode): speed up inline subagent streaming 2026-05-20 15:14:53 +02:00
marius-kilocode e739c29bb5 fix(vscode): persist speech settings in CLI config 2026-05-20 15:11:44 +02:00
Kirill Kalishev 0ba8a844b1 Merge branch 'main' into military-fluorine 2026-05-20 09:06:22 -04:00
kilo-maintainer[bot] 8635ea1283 chore: update nix node_modules hashes 2026-05-20 12:50:42 +00:00
marius-kilocode 18a73672ea fix(agent-manager): remove busy tab search badge 2026-05-20 14:44:35 +02:00
dependabot[bot] 4855645b9a chore(deps-dev): bump turbo from 2.8.13 to 2.9.14
Bumps [turbo](https://github.com/vercel/turborepo) from 2.8.13 to 2.9.14.
- [Release notes](https://github.com/vercel/turborepo/releases)
- [Changelog](https://github.com/vercel/turborepo/blob/main/RELEASE.md)
- [Commits](https://github.com/vercel/turborepo/compare/v2.8.13...v2.9.14)

---
updated-dependencies:
- dependency-name: turbo
  dependency-version: 2.9.14
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-20 12:38:55 +00:00
Imanol Maiztegui 79fd42e3eb OpenCode v1.14.34 (#10387)
* 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>
2026-05-20 14:36:34 +02:00
Mark IJbema 34c4a90f52 Merge pull request #10438 from Kilo-Org/update-vscode-keywords
vscode: update marketplace keywords
2026-05-20 13:59:38 +02:00
Imanol Maiztegui 5cbdb9dba3 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.
2026-05-20 13:43:33 +02:00
kiloconnect[bot] a80281c2fd feat(vscode): add zoo-code to extension keywords 2026-05-20 11:32:12 +00:00
kiloconnect[bot] 28cbd5a67e vscode: update marketplace keywords 2026-05-20 10:35:07 +00:00
Imanol Maiztegui 8d9c12e5a4 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.
2026-05-20 12:34:20 +02:00
Imanol Maiztegui 32777136cd 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.
2026-05-20 12:05:59 +02:00
Imanol Maiztegui 055a932c66 Merge remote-tracking branch 'origin/main' into imanolmaiztegui/kilo-opencode-v1.14.34 2026-05-20 10:28:01 +02:00
Imanol Maiztegui 39affcc140 ci: skip jetbrains tests (#10433) 2026-05-20 08:26:43 +00:00
Imanol Maiztegui 22486c90eb 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.
2026-05-20 10:05:31 +02:00
opencode-agent[bot] 13006d6d7c chore: generate 2026-05-20 07:10:40 +00:00
Simon Klee 539b118690 run: add shell mode to prompt (#28315)
Press `!` on an empty prompt to enter shell mode and run a command
through session.shell instead of sending a message
2026-05-20 09:09:12 +02:00
Imanol Maiztegui 591f570413 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.
2026-05-20 09:08:34 +02:00
Imanol Maiztegui 2d84bfb01e Merge branch 'main' into imanolmaiztegui/kilo-opencode-v1.14.34 2026-05-20 08:59:50 +02:00
Mark IJbema 95a5fa5c58 Merge pull request #10411 from reeceshuttle/update-mercury-edit-2
chore: Update autocomplete model to mercury-edit-2
2026-05-20 08:44:38 +02:00
opencode-agent[bot] 11f7e5a1b0 chore: generate 2026-05-20 06:41:26 +00:00
Brendan Allan 38b406fb35 app: Initial tabs impl (#28436) 2026-05-20 14:40:06 +08:00
Bravos d0c010a9c8 fix(kilo-vscode): add xhigh reasoning effort option to VariantConfigSchema 2026-05-20 13:14:32 +07:00
opencode-agent[bot] 4702cddb3e chore: generate 2026-05-20 04:29:32 +00:00
Luke Parker 82c5d45601 Add Windows desktop app menu (#28420) 2026-05-20 14:28:15 +10:00
Aarav Sharma aca8aeb2b9 fix(cli): toggle export dialog checkboxes on mouse click
The export options dialog checkbox rows only set visual focus on mouse click but don't toggle the checkbox state. Update onMouseUp handlers to both set focus and toggle the corresponding boolean value.
2026-05-19 20:29:15 -06:00
OpeOginni 66d409d679 fix(opencode): Update directory and path fields of imported session (#27516) 2026-05-19 19:09:23 -05:00
kirillk 97bd268de2 fix(jetbrains): preserve model selection on login-resume after paid model auth error
When a session hit a PAID_MODEL_AUTH_REQUIRED (401) error, the login-resume
prompt was sent with null providerID/modelID because user messages never carry
those fields. This caused the backend to use its default model instead of the
originally selected one, resulting in silent sub-agent activity that appeared
as a UI hang. retryPrompt() now uses model.model parsed via parseModel(), the
same approach as promptDto().
2026-05-19 18:16:29 -04:00
Reece Shuttleworth 8537e85d8f chore: update model to mercury-edit-2 2026-05-19 22:13:41 +00:00
Kit Langton 4ad261d8a7 Skip git setup for processor tool test (#28406) 2026-05-19 18:09:15 -04:00
Kit Langton 59c99dc62d Skip snapshot seed file commits (#28405) 2026-05-19 17:45:55 -04:00
Kit Langton a8f7c5ec93 Run CLI subprocess tests concurrently (#28399) 2026-05-19 17:26:41 -04:00
Catriel Müller 6f3725803f Merge pull request #10304 from baco/update-ascii-logo
feat(tui): update ascii style to mimic company's logo
2026-05-19 18:11:21 -03:00
Kit Langton 34cae2f3cb fix(action): remove orphan symlink breaking GitHub Action staging (#28390) 2026-05-19 20:49:22 +00:00
Kit Langton e94d46af86 fix(config): resolve agent/command names from relative paths (#28359) 2026-05-19 20:48:32 +00:00
Kit Langton c035c35eba fix(config): tolerate invalid OPENCODE_PERMISSION JSON (#28388) 2026-05-19 20:37:50 +00:00
Kit Langton b70b45964a Skip LLM server for prompt tests without LLM calls (#28391) 2026-05-19 16:27:36 -04:00
opencode-agent[bot] e3c8d221ec chore: generate 2026-05-19 20:24:23 +00:00
Catriel Müller fbbeb3c7a3 fix: fix flaky test 2026-05-19 17:18:36 -03:00
Kit Langton 80e5fb11c2 refactor(test/cli): migrate harness short-lived path to AppProcess + FileSystem (#28366) 2026-05-19 16:18:19 -04:00
Dustin Deus bc6c4c72ab chore(triage): add 'starptech' to core and inference teams (#28376) 2026-05-19 15:15:04 -05:00
kirillk 69a991a386 Merge branch 'conscious-jackrabbit' into scythe-dust 2026-05-19 16:12:22 -04:00
Kit Langton 4db2746e31 Reduce snapshot batch test fixture sizes (#28381) 2026-05-19 16:10:43 -04:00
Catriel Müller 72a5a84f8b Merge branch 'main' into update-ascii-logo 2026-05-19 16:59:08 -03:00
Catriel Müller ba09fa8f04 refactor: unify kilo logos 2026-05-19 16:56:47 -03:00
kirillk f151a55cfc Merge remote-tracking branch 'origin/military-fluorine' into scythe-dust 2026-05-19 15:54:41 -04:00
Catriel Müller 62f492de3e fix: fix shadows 2026-05-19 16:44:13 -03:00
Catriel Müller a92e6e5088 refactor: safe render on ssh 2026-05-19 16:42:06 -03:00
Catriel Müller 739564535d refactor: fallback support 2026-05-19 16:36:31 -03:00
Kirill Kalishev 28b5dac676 Merge branch 'main' into military-fluorine 2026-05-19 15:25:31 -04:00
Catriel Müller db75188066 refactor: fix logo shadows 2026-05-19 16:19:34 -03:00
kirillk 780d09729a fix(jetbrains): warn and skip isolation when mkdirs fails for .kilo-dev dirs 2026-05-19 15:14:17 -04:00
kirillk 19b233ffa7 feat(jetbrains): isolate dev CLI storage under .kilo-dev via XDG env vars 2026-05-19 15:07:23 -04:00
opencode-agent[bot] 71e90073d2 chore: generate 2026-05-19 19:04:32 +00:00
Frank ea27114eb9 go: update referral invite ui style 2026-05-19 15:01:27 -04:00
Frank 64d67f2134 sync 2026-05-19 14:29:55 -04:00
kirillk 5fc0829ee8 fix(jetbrains): hide account overlay when not logged in 2026-05-19 14:29:20 -04:00
opencode-agent[bot] a99337fbe1 chore: generate 2026-05-19 18:28:20 +00:00
Victor Navarro b20b569b0e chore(go): referral improvements (#28368) 2026-05-19 20:26:38 +02:00
kirillk 83c09cac27 fix(desktop): prepare cli before backend runs 2026-05-19 13:44:25 -04:00
kirillk 09572d3d47 feat(desktop): polish JetBrains account switcher 2026-05-19 13:23:45 -04:00
Imanol Maiztegui 86342e3734 ci: exclude jetbrains from root typecheck (#10397)
Fixes #10396

Generated OpenAPI client churn (#10395) breaks the JetBrains gradle
typecheck. Exclude @kilocode/kilo-jetbrains from the root `bun typecheck`
filter so contributors and the typecheck CI workflow don't need Java/Gradle.
The jetbrains test:ci pipeline still runs the gradle typecheck via Turbo's
task graph, so the plugin remains covered in its own CI job.
2026-05-19 16:43:09 +00:00
kirillk 663548da39 feat(kilo-jetbrains): add rich permission views and runtime auto-approve
- Extend PermissionRequestDto with command, filePath, rules, fileDiffs fields
- Parse rich permission metadata (command, diff previews, file diffs) in KiloCliDataParser
- Rewrite PermissionView as plain Swing with command/pattern/diff display; remove Kotlin UI DSL
- Add KiloAutoApproveService: client-side toggle persisted via PropertiesComponent
- Integrate auto-approve into SessionController (live events and recovery)
- Add shield toggle button to PromptPanel; wire auto-approve flow through SessionUi
- Add tests for parser metadata extraction, view rendering, controller auto-approve, and recovery
2026-05-19 12:12:41 -04:00
Kit Langton c449d3dc74 Migrate remaining legacy tools config tests (#28363) 2026-05-19 12:06:07 -04:00
opencode-agent[bot] e4eb98b991 chore: generate 2026-05-19 15:52:51 +00:00
Victor Navarro b32f071502 feat(go): referral support (#28345)
Co-authored-by: Jack <jack@anoma.ly>
2026-05-19 17:51:39 +02:00
kirillk 0a358a56a5 Merge remote-tracking branch 'origin/main' into conscious-jackrabbit 2026-05-19 11:46:04 -04:00
Kit Langton 512e34af83 Migrate MCP config tests to instance fixtures (#28338) 2026-05-19 11:45:13 -04:00
Imanol Maiztegui 24b134b062 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.
2026-05-19 17:44:22 +02:00
Kit Langton 7051796c38 test(cli): tier-A read-only command smoke tests (#28274) 2026-05-19 11:35:48 -04:00
Kit Langton b67f5d741f test(opencode/run): skip Windows-only scrollback replay failure (#28261) 2026-05-19 11:24:23 -04:00
opencode-agent[bot] eec0843ce4 chore: generate 2026-05-19 15:11:40 +00:00
Marius 9b3e1818c4 Merge pull request #10288 from Kilo-Org/stylish-bloom
Focus session history search on open
2026-05-19 17:11:11 +02:00
Kit Langton 55baa16fbc test(lib): extract snapshot normalizer utility for cross-OS stability (#28356) 2026-05-19 11:09:49 -04:00
Kit Langton c79a9634d3 fix(tool): tolerate plugin tool defs with missing args (#28357) 2026-05-19 15:07:28 +00:00
Sebastian 8dd6448c90 use keymap state for layer visibility (#26246) 2026-05-19 17:07:26 +02:00
Kit Langton 18b9cec50d test(cli): help-text snapshots for every CLI command (#28267) 2026-05-19 10:58:12 -04:00
Kirill Kalishev cce24c238d Merge pull request #10221 from Kilo-Org/striped-patch
docs(jetbrains): consolidate JetBrains agent guidance
2026-05-19 10:45:59 -04:00
Mark IJbema 632b4a244a docs: add upstream merge review command 2026-05-19 16:16:08 +02:00
Imanol Maiztegui ad2372a5ed 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.
2026-05-19 16:02:03 +02:00
kilo-maintainer[bot] f6bb9972e8 release: v7.3.1 2026-05-19 14:01:52 +00:00
Imanol Maiztegui f9679c4771 Merge branch 'main' into imanolmaiztegui/kilo-opencode-v1.14.34 2026-05-19 15:56:46 +02:00
Marius 046567eda6 Merge pull request #10377 from mjnaderi/patch-1
Fix misplaced section in AGENTS.md
2026-05-19 15:51:33 +02:00
marius-kilocode 6cdfe68028 Merge remote-tracking branch 'origin/main' into stylish-bloom
# Conflicts:
#	packages/kilo-vscode/webview-ui/agent-manager/MarkdownAnnotationLayer.tsx
#	packages/kilo-vscode/webview-ui/agent-manager/markdown-annotation-mutation.ts
2026-05-19 15:46:46 +02:00
Kirill Kalishev 7f0685a789 Merge branch 'main' into striped-patch 2026-05-19 09:23:57 -04:00
Kirill Kalishev b44fd2d73d Merge pull request #10322 from Kilo-Org/rainbow-hotel
feat(jetbrains): question tool parity with VS Code
2026-05-19 09:23:26 -04:00
Kirill Kalishev d966bf55e8 Merge branch 'main' into rainbow-hotel 2026-05-19 09:02:48 -04:00
kilo-code-bot[bot] 86585a3411 fix(vscode): add missing ProviderProvider and ConfigProvider to DiffViewerApp (#10389)
PR #10274 added useProvider() and useConfig() calls inside FullScreenDiffView
to power speech-to-text in inline review comments. Both hooks throw when called
outside their respective provider contexts.

DiffViewerApp.tsx (the Changes panel) only wrapped content in VSCodeProvider and
ServerProvider, so rendering FullScreenDiffView there crashed the component tree
and left the panel empty.

Fixes the empty Changes panel by wrapping DiffViewerShell in the missing
ProviderProvider and ConfigProvider.

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-05-19 13:02:29 +00:00
Imanol Maiztegui a0ca6ae06d 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.
2026-05-19 14:46:32 +02:00
Imanol Maiztegui ecc2f7af19 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.
2026-05-19 14:33:15 +02:00
Shawn 2932a7a35d fix(app): invalidate provider queries after config update to show custom providers immediately (#28313) 2026-05-19 20:31:36 +08:00
Brendan Allan 922b2e10eb refactor(app): remove Accessor wrapping from timeline row renders (#28334) 2026-05-19 20:22:50 +08:00
opencode-agent[bot] a2ee437a0e chore: generate 2026-05-19 12:21:56 +00:00
Kit Langton 6618e2bce2 feat(native-llm): route Anthropic API-key models through native runtime (#28271) 2026-05-19 08:20:27 -04:00
Kit Langton cb15b3ad84 test(cli): subprocess integration tests for opencode acp (#28265) 2026-05-19 08:18:22 -04:00
Aarav d8163c8953 docs: update KiloClaw pricing post-beta (#10295)
* docs: update KiloClaw pricing post-beta

* docs: simplify KiloClaw pricing, link to app for current plans

* chore: add changeset for KiloClaw pricing update
2026-05-19 13:52:24 +02:00
Sebastian ee16f08ffa Fix legacy pgup/pgdown TUI keybind aliases (#28275) 2026-05-19 13:52:00 +02:00
Imanol Maiztegui ad00b1461d 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
2026-05-19 13:09:03 +02:00
Mark IJbema 7c8817a33c Merge pull request #10382 from Kilo-Org/mark/collapsible-model-picker-sections
feat(vscode): make model picker sections collapsible
2026-05-19 13:05:27 +02:00
kiloconnect[bot] 522c5b50a5 feat(vscode): show match dot on collapsed model picker groups during search 2026-05-19 10:49:24 +00:00
Dustin Deus 9790a61f96 chore(docs): remove beta zen go (#28317)
Co-authored-by: starptech <starptech@starptechs-MBP.fritz.box>
2026-05-19 12:08:40 +02:00
Mark IJbema 24454bf796 fix(vscode): honor collapse state during model picker search
Lets users skip past large providers like Kilo Gateway when searching, instead of scrolling through every match.
2026-05-19 11:56:35 +02:00
kiloconnect[bot] 6ce2ded75c feat(vscode): make model picker sections collapsible
Click any section header (Favorites, Recommended, or a provider) to
collapse it and skip an entire provider with one click. Search ignores
collapse state. Collapse state resets each time the picker opens.
2026-05-19 09:38:36 +00:00
Imanol Maiztegui 4523bf99cb 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
2026-05-19 11:37:49 +02:00
Mark IJbema 4c0e6987b1 Merge pull request #10381 from Kilo-Org/mark/remove-upstream-vscode-sdk
chore: remove upstream vscode sdk
2026-05-19 11:20:55 +02:00
Imanol Maiztegui 8e053f34b5 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
2026-05-19 10:50:52 +02:00
Mark IJbema 523e3d8f03 chore: remove upstream vscode sdk 2026-05-19 10:50:27 +02:00
Dustin Deus 2339aacbf2 chore(team): add starptech to the team members list (#28320) 2026-05-19 10:49:10 +02:00
opencode-agent[bot] 2d348da504 chore: generate 2026-05-19 06:47:00 +00:00
MYMDO cbd2620c46 feat(i18n): add Ukrainian (uk) locale support (#28061) 2026-05-19 14:45:39 +08:00
opencode-agent[bot] 3bd304796b chore: generate 2026-05-19 06:13:16 +00:00
Shoubhit Dash dac81cdb68 fix(httpapi): preserve v2 openapi errors (#28298) 2026-05-19 11:42:01 +05:30
Mohammad Javad Naderi 6392a88bc4 Fix misplaced section in AGENTS.md 2026-05-19 09:33:42 +03:30
Shoubhit Dash 2c3bcf3e41 feat(httpapi): add v2 public error schemas (#28297) 2026-05-19 11:26:56 +05:30
Kit Langton d9d43d8519 test: migrate plugin config fixtures 2026-05-18 22:14:01 -04:00
Kit Langton bcc69f0afb test: migrate managed config fixtures 2026-05-18 22:02:59 -04:00
Kit Langton e53563f402 test: migrate remaining simple config fixtures 2026-05-18 21:42:00 -04:00
Kit Langton 7e4b02f1bf test: migrate config legacy tool fixtures 2026-05-18 21:27:43 -04:00
kirillk 5c74c819c7 docs(jetbrains): reorganize AGENTS.md for logical grouping and deduplication
Merge split-mode architecture sections, consolidate threading/services, unify CLI sections,
restructure UI guidelines into subsections, and surface package overview first.
2026-05-18 21:17:53 -04:00
Kit Langton 996928b32a Migrate config .opencode file tests to instance fixtures (#28268) 2026-05-18 21:17:11 -04:00
Kit Langton c032e821bc Migrate config update tests to instance fixtures (#28266) 2026-05-18 20:57:42 -04:00
opencode-agent[bot] 6f160bb48f chore: generate 2026-05-19 00:57:09 +00:00
Kit Langton ebb672ac39 test(cli): subprocess integration tests for opencode serve (#28263) 2026-05-19 00:55:58 +00:00
kirillk b5be9977e5 test(jetbrains): stabilize history timezone assertions 2026-05-18 20:46:07 -04:00
kirillk 23e48c0fbb test(jetbrains): stabilize backend loading state test 2026-05-18 19:57:24 -04:00
Kit Langton 9a19e84265 Migrate config agent tests to instance fixtures (#28213) 2026-05-18 23:55:33 +00:00
Kit Langton 338666d13e Migrate config template tests to instance fixtures (#28211) 2026-05-18 23:37:58 +00:00
Kit Langton 7b8a1037a0 refactor(test/lib): generalize run-process harness into cli-process (#28253) 2026-05-18 19:16:10 -04:00
Kit Langton ee5cf45ef9 Migrate simple config tests to instance fixtures (#28210) 2026-05-18 19:13:16 -04:00
opencode-agent[bot] 2e1593dea5 chore: generate 2026-05-18 22:33:32 +00:00
Kit Langton 0f3d168fdd test(cli): subprocess integration test harness + regression suite for opencode run (#28230) 2026-05-18 18:32:20 -04:00
kirillk eeca40407e docs(jetbrains): consolidate agent guidance 2026-05-18 18:31:46 -04:00
kirillk d37cdd61fa fix(jetbrains): serialize history deletes 2026-05-18 18:31:21 -04:00
kirillk 1c59315526 chore: ignore .secrets directory 2026-05-18 18:16:34 -04:00
kirillk 215421433f refactor(jetbrains): extract QuestionResultParser and add unit tests 2026-05-18 18:10:19 -04:00
kirillk 2ef26e44d6 Merge remote-tracking branch 'origin/main' into striped-patch 2026-05-18 18:06:09 -04:00
opencode-agent[bot] ce09fc8356 chore: generate 2026-05-18 22:03:00 +00:00
Luke Parker 44a35c5895 test(app): add session timeline smoke coverage (#26619) 2026-05-18 22:01:29 +00:00
kirillk b72c8ee9f0 fix(jetbrains): replace hardcoded fonts and colors with IntelliJ platform APIs
Add UiStyle.Fonts tokens (display, heading, large) backed by JBFont
helpers that scale with the platform default font. Replace ad hoc
deriveFont(Font.BOLD, size * multiplier) calls in LoggedOutProfileUi
and the direct JBFont.h1().asBold() call in LoggedInProfileUi with the
new shared tokens.

Fix UiStyle.Colors.cardBg() which was hardcoded to Color.WHITE/BLACK,
breaking custom themes. Now uses JBColor.lazy resolving TextField.background
to follow the active theme's input surface color.
2026-05-18 17:59:00 -04:00
kirillk 588dfc72ac fix(jetbrains): polish profile login controls 2026-05-18 17:46:26 -04:00
kirillk 4cd17dcc55 fix(jetbrains): ignore stale workspace reloads 2026-05-18 17:37:40 -04:00
Kit Langton 8a321c4536 fix(native-llm): prefer console opencode token (#28237) 2026-05-18 17:23:57 -04:00
kirillk cba158347d fix(jetbrains): prevent focus loss and crash during account switch in profile UI
- Rename Card.OUT/IN to LOGGED_OUT/LOGGED_IN for clarity
- Keep logged-in card visible during CONNECTING/LOADING to avoid focus loss
- Skip account.update() when prof is null during transient load (fixes NPE crash)
- preferredFocus() for logged-out always returns loginBtn; logged-in returns combo
- Add regression tests covering reconnect, loading, null-profile crash, and focus
2026-05-18 17:07:25 -04:00
kirillk 18fbc42987 chore: remove plan from question parity PR 2026-05-18 17:05:43 -04:00
opencode ef9e567e5f sync release versions for v1.15.5 2026-05-18 20:57:13 +00:00
kirillk 44942c1f60 test(jetbrains): snapshot captured log messages 2026-05-18 16:40:49 -04:00
kirillk 1bae6adfe0 Merge remote-tracking branch 'origin/rainbow-hotel' into rainbow-hotel 2026-05-18 16:13:13 -04:00
kirillk 6b5952694e fix(jetbrains): prevent empty question replies 2026-05-18 16:12:41 -04:00
Kit Langton b396b71c6f fix(ui): guard reasoning renderer against undefined text (#28222) 2026-05-18 16:04:07 -04:00
Kirill Kalishev 32b3a43fd3 Merge branch 'main' into rainbow-hotel 2026-05-18 16:01:39 -04:00
Aiden Cline d8efc575fa refactor(session): extract prompt tool resolution (#28204) 2026-05-18 14:50:31 -05:00
kirillk 59e680ffe3 Merge remote-tracking branch 'origin/main' into rainbow-hotel 2026-05-18 15:49:27 -04:00
kirillk 9164f42c4d refactor(jetbrains): organize question views
Move question renderers into their own package and update retained Swing state handling to reduce UI churn.
2026-05-18 15:49:17 -04:00
kirillk 7b0b12375d fix(jetbrains): collapse answered-question card by default 2026-05-18 15:20:12 -04:00
kirillk 276276bbc6 feat(jetbrains): add review step and answered-question card for question tool parity
Multi-question prompts now show a Review pseudo-step before submitting,
listing all questions and selected answers (matching VS Code behavior).
Completed question tool parts render as a structured 'Questions / N answered'
card instead of raw output text.
2026-05-18 15:15:32 -04:00
opencode-agent[bot] e1fbed8fb6 chore: update nix node_modules hashes 2026-05-18 19:12:18 +00:00
James Long 12ae22378f fix(plugin): ask in tools from plugins returns promise instead of effect (#28217) 2026-05-18 18:57:29 +00:00
kirillk 841cda30b6 fix(jetbrains): polish profile sign-in UI 2026-05-18 14:52:30 -04:00
opencode-agent[bot] a88b436eec chore: generate 2026-05-18 18:42:55 +00:00
Kit Langton dbe36851bc Preview native LLM runtime stack (#27114) 2026-05-18 14:41:36 -04:00
kirillk 5051a595fe feat(jetbrains): hide active question tool row in transcript for parity with VS Code
When a linked question request is active, suppress the matching pending/running
question tool card from the assistant message transcript. Completed tool results
remain visible. Matches VS Code behavior where the tool part is not rendered as
a normal tool card while the question form is shown.
2026-05-18 14:38:45 -04:00
kirillk 7437ec03a3 docs(jetbrains): plan question tool parity 2026-05-18 14:25:55 -04:00
James Long ff9d7cab5c fix(core): fix file references in workspaces (#28209) 2026-05-18 18:23:35 +00:00
kirillk ad982ba51e fix(jetbrains): align question prompt layout 2026-05-18 14:09:44 -04:00
kirillk b93aca4cc5 feat(jetbrains): add QR code, countdown, and cancel/retry to login UI
Replace Kotlin UI DSL with bare Swing in LoggedOutProfileUi. Introduce
LoginState sealed interface with attempt-based cancellation to discard
stale completions after cancel. Add ZXing QR code generation from the
verification URL. New auth card shows title, URL row with copy/browse,
QR image, spaced device code, countdown timer (M:SS), and cancel.
Login errors compact HTML payloads and offer Try Again. Backend and
frontend tests cover auth mapping, QR generation, pending UI, cancel
invalidation, and error retry.
2026-05-18 14:04:57 -04:00
Kit Langton 88681d389b Migrate provider lookup tests to instance fixtures
Migrate provider env precedence, model lookup, and default model tests to Effect-aware instance fixtures while keeping behavior unchanged.
2026-05-18 18:01:53 +00:00
Catriel Müller 264526b451 Merge pull request #10358 from Kilo-Org/typical-duckling
fix(cli): auto-resume network reconnects
2026-05-18 14:54:53 -03:00
Kit Langton ae2ecd1ed3 Migrate custom provider tests to instance fixtures
Migrate the next custom provider/model config tests to Effect-aware instance fixtures while keeping timing neutral and behavior unchanged.
2026-05-18 17:49:26 +00:00
Catriel Müller 8611910a04 refactor: improve ui timing 2026-05-18 14:34:20 -03:00
Kit Langton 159d271e1e refactor(sync): publish via EffectBridge.fork for codebase consistency (#28187) 2026-05-18 13:30:41 -04:00
Kit Langton 762850dfe5 Migrate provider config tests to instance fixtures
Convert the first provider env/config/filtering tests to Effect-aware instance fixtures while keeping behavior unchanged and documenting neutral timing.
2026-05-18 13:22:59 -04:00
Catriel Müller e2e646b87d refactor: update links 2026-05-18 14:19:31 -03:00
Catriel Müller 1fce31a77a Merge branch 'main' into typical-duckling 2026-05-18 14:17:35 -03:00
Catriel Müller dda23cefa2 Revert "test(cli): avoid global timer patching"
This reverts commit 928c80d8fb.
2026-05-18 14:14:42 -03:00
Kit Langton b039702e8c feat(tui): add syntax highlighting for elixir, fsharp, r, make, vim, xml, agda (#28198) 2026-05-18 13:08:08 -04:00
Catriel Müller 928c80d8fb test(cli): avoid global timer patching 2026-05-18 14:07:02 -03:00
opencode-agent[bot] 094886c848 chore: generate 2026-05-18 17:03:44 +00:00
Shoubhit Dash dc0297f4ac refactor(session): extract reference prompt helpers (#28197) 2026-05-18 22:32:18 +05:30
Kit Langton 3ab67f3280 Stabilize watcher test readiness (#28194) 2026-05-18 12:51:46 -04:00
Shoubhit Dash a2e6bd503b refactor(reference): split materialization state (#28190) 2026-05-18 22:14:33 +05:30
Aiden Cline 05ac345696 refactor(session): move prompt reminders out of core loop (#28082) 2026-05-18 11:36:38 -05:00
Imanol Maiztegui 128df55d6b 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
2026-05-18 18:32:30 +02:00
kirillk c58755b266 refactor(jetbrains): replace DSL with plain GridBagLayout in profile UI 2026-05-18 12:30:11 -04:00
kirillk 19cb33963d refactor(jetbrains): align profile UI to JetBrains guidelines 2026-05-18 12:21:42 -04:00
opencode-agent[bot] e3feca09b3 chore: generate 2026-05-18 16:20:46 +00:00
Kit Langton 896ad7b884 Speed up targeted opencode tests
Reduce avoidable setup costs in slow opencode tests while preserving reviewed coverage and recording the benchmark evidence for follow-up test-suite work.
2026-05-18 16:18:29 +00:00
opencode-agent[bot] 0a945219a9 chore: generate 2026-05-18 16:17:46 +00:00
Shoubhit Dash 94828eb44b refactor(repository): type cache failures (#28188) 2026-05-18 21:46:18 +05:30
kirillk a289e7ce1a fix(jetbrains): preserve profile account selection 2026-05-18 12:11:48 -04:00
kirillk 89b2e2a81b refactor(jetbrains): polish profile settings 2026-05-18 12:01:55 -04:00
Shoubhit Dash 96192495ae refactor(repository): add cache service (#28184) 2026-05-18 21:25:38 +05:30
opencode-agent[bot] f7b5576bcc chore: generate 2026-05-18 15:39:33 +00:00
Kit Langton cb35493242 fix(bus): acquire PubSub subscription eagerly to close /event race (#27959) 2026-05-18 11:38:05 -04:00
Shoubhit Dash 5bfd7fd16c refactor(repository): clarify reference domain (#28182) 2026-05-18 21:04:44 +05:30
kirillk 4ffcfabe1e feat(jetbrains): show questions one at a time with radio/checkbox rows
Refactor QuestionView from a flat all-at-once layout to a carousel that
shows one question per screen, matching the VS Code question dock pattern:

- Shows 'X of Y questions' summary in the card header
- Back/forward HoverIcon nav buttons in the header; forward disabled until
  the current question has an answer
- Single-select items render as JBRadioButton rows (bold label + description)
- Multi-select items render as JBCheckBox rows
- Footer: Dismiss on the left; Next (middle questions) or Submit (last)
- Selections survive back/forward navigation
- Tests updated: radio/checkbox discovery, navigation, back/selection
  preservation, and disabled-next guard
2026-05-18 11:29:51 -04:00
Mark IJbema 4de0e30e91 Merge pull request #10355 from Kilo-Org/mark/forbid-opncd-share-url
chore(vscode): forbid legacy opncd.ai/s/ share URL
2026-05-18 17:17:00 +02:00
opencode-agent[bot] 2932b41e64 chore: generate 2026-05-18 15:14:13 +00:00
Shoubhit Dash eb389c58eb refactor(reference): normalize config entries (#28178) 2026-05-18 20:42:41 +05:30
Mark IJbema eaabc99625 fix: add kilocode_change markers and update nvidia-headers test for rebrand
- Adds 'new file' marker to check-forbidden-strings workflow
- Marks the SKIP_FILES addition in extract-source-links.ts
- Updates nvidia-headers test to assert the new kilo.ai/Kilo Code values
2026-05-18 17:00:05 +02:00
Catriel Müller 621af97e4a fix(cli): use link-checker-safe network probe 2026-05-18 11:56:17 -03:00
Catriel Müller 2aa1b95074 refactor: resolve comments 2026-05-18 11:45:36 -03:00
kirillk 80ccb18f8c refactor(jetbrains): retain profile settings UI 2026-05-18 10:44:08 -04:00
Shoubhit Dash 54ff0a669b test(reference): cover configured reference contracts (#28170) 2026-05-18 20:09:27 +05:30
Kirill Kalishev 1a9a668ba6 Merge pull request #9984 from Kilo-Org/unleashed-romano
ci(jetbrains): include plugin build in typecheck
2026-05-18 10:33:47 -04:00
kirillk dfb80cdd70 chore(jetbrains): upgrade IntelliJ Gradle plugin to 2.16.0 2026-05-18 10:15:37 -04:00
Imanol Maiztegui d7fcb894ed 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
2026-05-18 15:51:10 +02:00
Imanol Maiztegui a1a1936416 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
2026-05-18 15:41:42 +02:00
Mark IJbema 1f71d25a64 ci: skip check-forbidden-strings.ts in source-links extraction
The forbidden-string list contains opencode.ai URLs as literal patterns
to ban; they aren't real source links and shouldn't show up in the
source-links manifest.
2026-05-18 15:34:10 +02:00
Mark IJbema c224f5040d docs: list deferred forbidden-string candidates and wire into upstream-merge agent
Adds commented-out entries for the URLs/strings we want to ban once the
underlying call sites are rebranded, and tells the upstream-merge agent
to flag new upstream-attribution leaks for inclusion in the list.
2026-05-18 15:32:24 +02:00
Mark IJbema 3185e8d582 fix: rebrand upstream attribution and bug-report URLs
Replaces hardcoded opencode.ai/anomalyco URLs in production code paths:
LLM provider HTTP-Referer/X-Title attribution headers, the TUI error
dialog's bug-report URL, and the github-remote parser test fixtures.

Extends check-forbidden-strings with patterns for these leaks (with a
narrow allowlist for fork-lineage docs and upstream-merge tooling).
2026-05-18 15:25:16 +02:00
Catriel Müller ad8d57707d fix(cli): address network reconnect review 2026-05-18 10:14:43 -03:00
kirillk b894f8d41f fix(jetbrains): bypass JetBrains cache redirector 2026-05-18 09:04:11 -04:00
Kirill Kalishev 5cdb343385 Merge branch 'main' into unleashed-romano 2026-05-18 08:47:26 -04:00
Catriel Müller 413222f013 fix(cli): auto-resume network reconnects 2026-05-18 09:46:37 -03:00
Mark IJbema 3aba363c4a ci: move forbidden-strings check to its own workflow
Runs on every PR instead of only when VS Code paths change, so a
hardcoded forbidden URL in any package can't bypass the guard.
2026-05-18 14:38:57 +02:00
Imanol Maiztegui f560e5bd7a 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
2026-05-18 14:38:21 +02:00
opencode-agent[bot] e56999fd36 chore: generate 2026-05-18 12:31:37 +00:00
Simon Klee 1124315267 run: refresh prompt layout after paste (#28164)
Pasting into the prompt textarea left its layout stale until the next edit, so the visible content did not reflect the pasted text. Mark the layout dirty on paste and notify the content-change handler once the renderer is idle so the prompt updates immediately.
2026-05-18 12:30:20 +00:00
Mark IJbema 84a72b9e3f Merge pull request #10354 from Kilo-Org/mark/review-md-guidance
docs: add REVIEW.md with reviewbot guidance
2026-05-18 14:21:45 +02:00
opencode-agent[bot] 2bf3f3041f chore: update nix node_modules hashes 2026-05-18 12:03:51 +00:00
Imanol Maiztegui 580a94aaaf 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
2026-05-18 14:03:20 +02:00
Sebastian 6e4db5666a upgrade opentui to 0.2.14 (#28090) 2026-05-18 13:44:08 +02:00
Shoubhit Dash 564cde393e fix(tui): copy pasted prompt content (#28156) 2026-05-18 17:02:34 +05:30
opencode-agent[bot] c813927bb6 chore: generate 2026-05-18 11:07:52 +00:00
Simon Klee 5970c12d90 run: replay session history on interactive resume (#26880) 2026-05-18 13:06:27 +02:00
opencode-agent[bot] 116a4e33ba chore: generate 2026-05-18 11:06:05 +00:00
Shoubhit Dash 611e48c4ac fix(tui): collapse long tool output lines (#28148) 2026-05-18 16:34:34 +05:30
Brian Turcotte ad981b2481 Merge pull request #10350 from Kilo-Org/brian/addImages 2026-05-18 06:58:35 -04:00
kiloconnect[bot] 7992aadf34 chore(scripts): extract forbidden string check into dedicated script
Replace the inline opncd.ai/s/ grep added to check-kilocode-change with a standalone script/check-forbidden-strings.ts. Wired into test-vscode.yml as a separate step alongside the existing marker check.
2026-05-18 10:47:28 +00:00
kiloconnect[bot] 2c6bb834d9 chore(vscode): forbid legacy opncd.ai/s/ share URL in check-kilocode-change
The legacy upstream share URL path pattern must not reappear in the repo. Piggyback on the existing check-kilocode-change forbidden-string grep instead of adding a new check.
2026-05-18 10:45:01 +00:00
Imanol Maiztegui 09923fbe52 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
2026-05-18 12:40:16 +02:00
Mark IJbema 98e7c25fda docs: add REVIEW.md with reviewbot guidance 2026-05-18 12:36:47 +02:00
Imanol Maiztegui 0b41d2dc4b 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
2026-05-18 12:36:01 +02:00
Brendan Allan 836a33198e fix(ui): fix question dock overflow and message part flex layout (#28142) 2026-05-18 17:55:27 +08:00
opencode-agent[bot] 7afd477d1a chore: generate 2026-05-18 09:28:20 +00:00
SpiritChen51 fe143df151 fix(ui): fallback to execCommand for clipboard copy when navigator.clipboard fails (#27993)
Co-authored-by: SpiritChen51 <spiritchen51@users.noreply.github.com>
2026-05-18 17:26:45 +08:00
Kagura e94aecaa08 fix(tui): use contrast-aware foreground for paste summary badge (#27969)
Co-authored-by: Simon Klee <hello@simonklee.dk>
2026-05-18 08:38:40 +00:00
Mark IJbema d5ba460b1f Merge pull request #10303 from Kilo-Org/docs/kiloclaw-remove-beta-messaging
docs(kiloclaw): remove free beta messaging from KiloClaw pages
2026-05-18 10:10:03 +02:00
Brian Turcotte 85a4213ca5 docs: add screenshots to Slack, GitHub, and Linear pages 2026-05-18 03:56:44 -04:00
Brendan Allan 418c0ea04a feat(desktop): add notification permission for renderer (#28119) 2026-05-18 15:43:28 +08:00
opencode-agent[bot] 4312e5df05 chore: generate 2026-05-18 07:21:25 +00:00
Brendan Allan f80f3e33ec desktop: add free limit + go usage exceeded dialogs to match tui (#27677) 2026-05-18 15:20:08 +08:00
opencode-agent[bot] 479206449e chore: generate 2026-05-18 06:41:17 +00:00
Zayd Krunz 6849059b00 fix(app): hide prompt placeholder for whitespace input (#28101)
Co-authored-by: ShrootBuck <ShrootBuck@users.noreply.github.com>
2026-05-18 14:39:51 +08:00
opencode-agent[bot] 43df145cd2 chore: update nix node_modules hashes 2026-05-18 03:59:28 +00:00
Frank 28a0bf6c8f sync 2026-05-17 23:43:23 -04:00
opencode-agent[bot] 30e4edffd5 chore: generate 2026-05-18 03:42:06 +00:00
Luke Parker 5452ab6db7 perf(app): virtualize session timeline rows (#26949)
Co-authored-by: Brendan Allan <git@brendonovich.dev>
2026-05-18 03:40:52 +00:00
Dax e85119aa64 Load models.dev snapshot from build global (#28077) 2026-05-17 21:59:44 -04:00
黑墨水鱼 71b27a1b0f fix: sync PWA status bar theme-color with app color scheme (#28006) 2026-05-18 00:12:02 +00:00
opencode-agent[bot] 32f37d86f0 chore: update nix node_modules hashes 2026-05-17 23:40:17 +00:00
opencode-agent[bot] b14ea406ba chore: generate 2026-05-17 23:25:50 +00:00
Luke Parker de846ca57d chore: Upgrade Bun to the final non-rust version (#27648) 2026-05-18 09:24:26 +10:00
Luke Parker f06b78751e fix(desktop): install the latest available update (#27953) 2026-05-18 09:23:32 +10:00
opencode-agent[bot] 969d0f48b2 chore: generate 2026-05-17 23:03:12 +00:00
Luke Parker fc19dcc70c fix: sort v2 session list by updated time (#27954) 2026-05-18 09:01:55 +10:00
opencode-agent[bot] 49c6b46afc chore: update nix node_modules hashes 2026-05-17 22:39:36 +00:00
Sebastian f97e115ee2 dialog prompt submit keybind + opentui event sink (#27945) 2026-05-18 00:23:19 +02:00
Dax Raad e92b1fe7d7 core: let models layer infer its own type so layer composition no longer requires matching explicit requirements 2026-05-17 17:37:11 -04:00
kirillk 4fbfe01b87 fix(jetbrains): refresh profile settings state 2026-05-17 15:34:55 -04:00
kirillk ae31cf218e feat(jetbrains): render question/permission prompts in scrollable transcript
Move active question and permission forms from fixed bottom panels above
the prompt into the scrollable chat transcript. Users can now scroll through
prior messages while a form is active and scroll back down to it.

- Add QuestionView and PermissionView in session/views/ with callback-based
  wiring (no direct RPC access from views)
- Update SessionMessageListPanel to own optional active views, syncing them
  from SessionModelEvent.StateChanged and anchoring before ProgressPanel
- Update SessionUi to create views with controller lambdas, pass them into
  SessionMessageListPanel, and remove them from the SOUTH stack
- Remove unused Dock.neutral() and Dock.warning() from SessionUiStyle
- Replace QuestionPanelTest/PermissionPanelTest with faster callback-based
  QuestionViewTest/PermissionViewTest under session/views/
2026-05-17 15:29:11 -04:00
opencode f98449c9b5 sync release versions for v1.15.4 2026-05-17 17:44:50 +00:00
opencode 2b92c5677e release: v1.15.4 2026-05-17 17:44:40 +00:00
Frank 468eb68878 zen: update monitoring query 2026-05-17 13:15:39 -04:00
Dax 23b594de6e fix: preserve bus instance context (#28051) 2026-05-17 12:56:42 -04:00
Frank 5060577ee1 sync 2026-05-17 12:37:47 -04:00
Aiden Cline d3ebb1f7c0 ignore: cleanup readme (#28049)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: rekram1-node <rekram1-node@users.noreply.github.com>
2026-05-17 11:26:23 -05:00
kirillk e83c804fcb Merge remote-tracking branch 'origin/main' into rainbow-hotel 2026-05-17 09:46:47 -04:00
Shoubhit Dash e4cc4e1682 fix(lsp): preserve instance ref for update events (#28016) 2026-05-17 16:37:00 +05:30
opencode-agent[bot] 53e89f9d52 chore: generate 2026-05-17 08:06:12 +00:00
Frank de247b7aae sync 2026-05-17 04:04:39 -04:00
Frank 0b8050d453 sync 2026-05-17 01:59:20 -04:00
Kirill Kalishev cdbcdb1ef6 Merge branch 'main' into unleashed-romano 2026-05-16 15:09:03 -04:00
Joshua Lambert a23fe160d6 Merge pull request #10220 from nv-kasikritc/nvidia-nim-origin-header
fix(cli): add NVIDIA NIM origin header
2026-05-16 14:10:21 -04:00
Gustavo Viana be6a89a3b8 docs: update README.es.md (#27739)
Co-authored-by: Victor Navarro <vn4varro@gmail.com>
2026-05-16 19:33:24 +02:00
kirillk 4238f3fb87 fix(jetbrains): make delete action wait Windows-safe 2026-05-16 12:36:57 -04:00
Thomas Brugman 2321ce7a5d Merge branch 'main' into seen-turnip 2026-05-16 18:26:02 +02:00
Aarav Sharma 7ac7c1e283 chore: add changeset for agent-manager model sync 2026-05-16 10:24:02 -06:00
Aarav Sharma df30123e54 chore: add changeset for session prompt queue memory leak fix 2026-05-16 10:23:37 -06:00
Aarav Sharma b590f8c25f chore: add changeset for dialog alert newlines 2026-05-16 10:23:13 -06:00
Aarav Sharma 74e860431f chore: add changeset for TUI dialog vertical centering 2026-05-16 10:22:20 -06:00
Aarav 7315d0d6d5 Merge branch 'main' into fix/agent-manager-model-sync 2026-05-16 10:21:27 -06:00
Aarav Sharma 8ba138def7 chore: add changeset for TUI export all messages 2026-05-16 10:21:11 -06:00
kiloconnect[bot] 0231a1f3c1 fix(cli): rename balance command to profile 2026-05-16 16:21:03 +00:00
Aarav Sharma c265fa4c4e chore: add changeset for subagent footer spinner 2026-05-16 10:20:02 -06:00
kirillk 85b553510d chore: remove unrelated formatting changes 2026-05-16 11:47:14 -04:00
Kit Langton c0a8b509c7 style(tui): distinguish markdown h1 headings (#27814) 2026-05-16 11:18:17 -04:00
kirillk 9fdd740b1f fix(jetbrains): eliminate flaky waitFor in delete test without EDT deadlock
Replace waitFor { rpc.deletes.size == N } with an awaitDeletes(n) helper
that waits on a deleteCount counter incremented by the controller's deleted
callback (fires on EDT after local.remove). This:

- Is event-driven: no time-based polling or arbitrary sleep
- Avoids EDT deadlock: waitFor pumps the event loop via invokeAndWait
  rather than blocking the EDT with runBlocking { channel.receive() }
- Has no UnknownClass.warning side-effect: no runBlocking lambda at
  test-method scope for the IntelliJ JUnit3 runner to misidentify
- Uses CopyOnWriteArrayList for deletes/listed in FakeSessionRpcApi to
  prevent ConcurrentModificationException from concurrent coroutines
2026-05-16 10:48:51 -04:00
opencode f80651fa91 sync release versions for v1.15.3 2026-05-16 14:07:33 +00:00
Shoubhit Dash 68af95390d fix: hide task background instructions by default (#27872) 2026-05-16 19:18:15 +05:30
opencode-agent[bot] 321db7a819 chore: generate 2026-05-16 13:27:23 +00:00
Dax Raad 6d2219e001 fix(cli): preserve instance context in async commands 2026-05-16 09:25:45 -04:00
opencode-agent[bot] dd432e3cde chore: generate 2026-05-16 13:21:57 +00:00
Dax Raad 77db212a0a fix read stream byte cap 2026-05-16 09:20:35 -04:00
opencode f56263791c sync release versions for v1.15.2 2026-05-16 12:53:10 +00:00
Dax Raad 88363f1ed9 fixed issue in opencode run 2026-05-16 08:27:25 -04:00
Jack c5db39f626 Remove Ring 2.6 1T from Zen docs (#27849) 2026-05-16 17:55:32 +08:00
vimtor b5aed287ca chore: reduce alerts noise 2026-05-16 09:39:13 +02:00
Dax 53849bd866 fix(sync): publish events on injected project bus (#27825) 2026-05-16 05:56:49 +00:00
opencode e33912bfee sync release versions for v1.15.1 2026-05-16 05:44:44 +00:00
Aiden Cline 548648a3d9 core: reduce prompts for shell, todowrite, and task tools (#26821) 2026-05-16 00:18:47 -05:00
kchantharuan 2bdee47819 fix(cli): provide spawner for nvidia header test 2026-05-15 21:58:08 -07:00
Caleb Norton 4643e13170 feat(nix): add opencode-electron derivation (#16163) 2026-05-15 23:20:48 -05:00
Dax Raad 042e6a5c86 tui: newly pinned sessions now append to the end of the list instead of jumping to the top 2026-05-15 23:57:40 -04:00
Aarav Sharma 8ba95b1f23 feat(cli): show running spinner in subagent footer
Add an animated spinner to the subagent session footer to indicate
when a subagent is actively working, matching the running status
indicator shown in the main session prompt.
2026-05-15 21:38:04 -06:00
Dax Raad e36d6a0cbe core: clarify postinstall error message when binary is missing
Users installing with pnpm or --ignore-scripts now see a clear explanation
of why the native binary is missing and exact steps to fix it. The shell
script wrapper provides more actionable guidance than the previous Node.js
fallback that only suggested running the postinstall script without context
about why it wasn't run automatically.
2026-05-15 23:12:00 -04:00
Sebastian cc9c0b15c7 Revert "add dialog prompt submit keybind (#27807)" (#27815) 2026-05-16 04:44:32 +02:00
Kit Langton f3b0d3d7ac fix(tui): dedupe consecutive prompt history entries (#27816) 2026-05-16 02:36:35 +00:00
opencode-agent[bot] 764c6bc517 chore: update nix node_modules hashes 2026-05-16 01:20:56 +00:00
Sebastian d441e931f9 add dialog prompt submit keybind (#27807) 2026-05-16 03:11:46 +02:00
Sebastian ad79ad9ea8 upgrade opentui to 0.2.11 (#27808) 2026-05-16 03:05:54 +02:00
opencode-agent[bot] d6b23fd8f6 chore: generate 2026-05-16 00:44:10 +00:00
Kit Langton 5911bd532d fix(tui): show config error details on startup (#27803) 2026-05-15 20:42:56 -04:00
Dax Raad 2385123f03 Fix thinking toggle defaults 2026-05-15 20:27:36 -04:00
kirillk ef37820618 fix(jetbrains): make delete test deterministic by fixing data races
Two concurrent coroutines called deletes.add and listed.removeAll on plain
ArrayList instances, causing ConcurrentModificationException that silently
killed one coroutine before it could record its result.

- Change deletes and listed in FakeSessionRpcApi to CopyOnWriteArrayList
- Add deleteSignal Channel to FakeSessionRpcApi so tests can await deletes
  via event notification rather than timeout-based polling with waitFor()
- Rewrite the failing test to receive from deleteSignal (event-driven,
  zero-timeout) and update the skips-already-deleting test the same way
2026-05-15 19:27:46 -04:00
Aarav Sharma 19dc9d04d2 fix(cli): address PR review issues for TUI transcript handlers
- Replace non-null assertions on allMessages.data with nullish coalescing
- Move kilocode_change end markers to after sessionMessages declaration
2026-05-15 16:50:38 -06:00
Dax 09549661e1 Fix npm CLI binary installation (#27801) 2026-05-15 18:43:37 -04:00
opencode-agent[bot] da495fd2e0 chore: generate 2026-05-15 22:09:43 +00:00
vimtor 85cd447910 chore: reduce alerts noise 2026-05-16 00:07:59 +02:00
kiloconnect[bot] 41ec40b34d docs(kilo-docs): remove free beta messaging from KiloClaw pages 2026-05-15 21:46:23 +00:00
Dionisio E Alonso eac749c469 feat(tui): update ascii style to mimic company's logo 2026-05-15 18:43:53 -03:00
Aarav Sharma 2113986133 fix(cli): export all messages from TUI instead of truncated store
The TUI's copy and export actions only included ~100 messages because they
read from the in-memory sync store which caps at 100 for display performance.
Now both actions fetch all messages directly from the server API.
2026-05-15 15:20:21 -06:00
Sebastian 0f31fd631b Fix multiline mentions (#27649) 2026-05-15 23:04:20 +02:00
Sebastian aa07e21945 handle undefined tips (#27635) 2026-05-15 23:04:00 +02:00
Joshua Lambert 3df80b48c9 Merge branch 'main' into nvidia-nim-origin-header 2026-05-15 16:56:04 -04:00
Shoubhit Dash f060874b29 feat(tui): add minimal thinking mode with click-to-expand (#27623) 2026-05-16 02:09:58 +05:30
vimtor f21c582db9 chore: reduce alerting noise 2026-05-15 22:18:50 +02:00
Shoubhit Dash 65f96a5851 refactor(instance): retire WithInstance adapter (#27782) 2026-05-16 01:30:07 +05:30
Aiden Cline 48122b31cc fix(tool): bridge custom tool zod metadata (#27770) 2026-05-15 14:50:21 -05:00
opencode-agent[bot] 0df2f5b45f chore: generate 2026-05-15 19:48:45 +00:00
Shoubhit Dash 499e8e4b78 test(instance): add effect-native fixture helpers (#27781) 2026-05-16 01:17:37 +05:30
Shoubhit Dash f33b4455a1 feat(tui): enable pinned session switching (#27780) 2026-05-16 01:10:16 +05:30
Kirill Kalishev 25fdf3347b Merge branch 'main' into unleashed-romano 2026-05-15 15:32:34 -04:00
Shoubhit Dash a24abd2b11 refactor(lsp): require explicit instance context (#27767) 2026-05-16 00:46:27 +05:30
kirillk 1b806cca39 fix(jetbrains): test:ci always exits 0 to avoid flaky Windows CI failures
IntelliJ Swing/coroutine tests are inherently flaky on Windows (timeout in
HistorySessionActionsTest). Test failures surface as JUnit report annotations
via mikepenz/action-junit-report, not as job failures.
2026-05-15 15:11:10 -04:00
opencode-agent[bot] d44bef2107 chore: generate 2026-05-15 18:45:24 +00:00
Shoubhit Dash f99339e525 fix(tui): keep session switching pinned-only (#27775) 2026-05-16 00:14:07 +05:30
Thomas Brugman 58f9754a37 fix(cli): handle balance command errors 2026-05-15 20:37:49 +02:00
Shoubhit Dash 2b0e72ab79 refactor(workspace): centralize adapter invocation (#27768) 2026-05-15 23:59:01 +05:30
Shoubhit Dash 2fdee50b3b refactor(acp): extract runtime reentry (#27769) 2026-05-15 23:58:52 +05:30
opencode-agent[bot] 48293c5271 chore: generate 2026-05-15 17:37:07 +00:00
Shoubhit Dash 0c9cfe923f refactor(instance): remove legacy runtime fallback (#27757) 2026-05-15 23:05:44 +05:30
truffle 643810c5cb chore: add kilocode_change annotations to run-handler fix
Per AGENTS.md, every Kilo-specific change in shared opencode files must
carry kilocode_change markers so upstream merges can resolve mechanically.

Adds whole-file annotations to the new helper and test, single-line
annotations to the two modified lines in run.ts.
2026-05-15 17:19:18 +00:00
truffle 90ba442177 fix(cli): preserve --raw atoms verbatim in run handler (#9622)
Atoms in `args["--"]` are raw passthrough per yargs `populate--`
semantics: the user typed `--` to opt out of further parsing, so
the assembler must not synthesize quote bytes around them. Re-quoting
raw atoms breaks leading-dash inputs like

  kilo run -- "- Who are you?"

by emitting `"- Who are you?"` (literal quotes) into the model prompt.

Atoms before `--` keep the existing wrap-quote behavior from #4979 so
shell-bound multi-word positionals still preserve their boundaries.

Extracted the message assembler to `cli/cmd/run-message.ts` so it can
be unit-tested without pulling in the full handler's dependency tree.
2026-05-15 17:17:01 +00:00
Thomas Brugman ac7e46d67a feat(cli): add balance command 2026-05-15 18:51:10 +02:00
Aarav Sharma 929cfb526c fix(cli): vertically center TUI dialogs
Replace hardcoded paddingTop approximation with justifyContent center
on the dialog overlay so dialogs are properly centered regardless of
terminal height.
2026-05-15 10:50:54 -06:00
kilo-maintainer[bot] f44d75d9d3 chore: update nix node_modules hashes 2026-05-15 15:26:15 +00:00
opencode-agent[bot] 9975c1ed1c chore: generate 2026-05-15 15:12:20 +00:00
Aiden Cline ef7d801271 fix(tool): preserve custom tool arg descriptions (#27750)
Co-authored-by: khimaros <231498+khimaros@users.noreply.github.com>
2026-05-15 10:11:01 -05:00
Marius 9095d6ecb2 Merge pull request #10293 from Kilo-Org/security-mermaid-11-15-0
fix: update mermaid to patched release
2026-05-15 17:10:04 +02:00
opencode-agent[bot] eb630075c3 chore: generate 2026-05-15 15:01:55 +00:00
Shoubhit Dash a2392ca60d refactor(worktree): provide runtime reentry refs (#27754) 2026-05-15 20:30:29 +05:30
Kirill Kalishev 8a212afbdd Merge branch 'main' into unleashed-romano 2026-05-15 10:49:23 -04:00
Marius 7e06c68e8a Merge pull request #10290 from shssoichiro/semantic-search-use
fix: improvements to semantic_search tool use
2026-05-15 16:47:52 +02:00
opencode-agent[bot] f9371eb66c chore: generate 2026-05-15 14:36:04 +00:00
Shoubhit Dash fa9a2cb24d refactor(instance): remove remaining bind call sites (#27731) 2026-05-15 20:04:42 +05:30
Victor Navarro 2d90f325fc ci: catch provider errors across all opencode tiers (#27495) 2026-05-15 16:31:59 +02:00
marius-kilocode 2b424b1f04 fix: unblock patched mermaid installs 2026-05-15 16:31:51 +02:00
marius-kilocode 05cf9b98c2 fix: allow vetted mermaid security release 2026-05-15 16:25:28 +02:00
Aiden Cline c2ffd7cf14 fix: markdown table rendering (#27747) 2026-05-15 09:22:24 -05:00
marius-kilocode af115afe20 fix: update mermaid to patched release 2026-05-15 16:21:24 +02:00
kirillk f32f097a2f fix: use forward slashes in Windows temp path for JSON in KiloBackendModelStateManagerTest
Windows Path.toString() uses backslashes which breaks the JSON
string literal in mock.path. Replace backslashes with forward
slashes before embedding in the JSON template.
2026-05-15 10:07:52 -04:00
vimtor 104f5d5a14 chore: exclude provider from triggers 2026-05-15 16:01:11 +02:00
kirillk 2150c68244 fix: annotate Java setup, fix gradlew.bat path, fix flaky test assertions
- Add kilocode_change markers around Java 21 setup in test.yml (required
  by annotation checker for .github/** changes)
- Fix test-ci.ts: use ./gradlew.bat (not bare gradlew.bat) on Windows so
  bun's shell can locate and execute the wrapper script
- Fix HistorySessionActionsTest: delete two items races — use waitFor
  instead of fixed-duration flush so both coroutine deletes complete before
  asserting; sort IDs for ordering-independent comparison
2026-05-15 09:47:23 -04:00
kirillk 78c31d4a74 fix: add Java 21 setup for Windows CI and fix SessionRecoveryTest assertions
- Add setup-java@v4 (temurin 21) step to test.yml so Windows runner has
  the JDK required for Gradle Kotlin compilation
- Fix SessionRecoveryTest: existing-session flow (controller("ses_test"))
  calls showSession() after history load, setting showSession=true;
  update show=false -> show=true in 7 assertSession calls that tested
  this flow
2026-05-15 09:29:28 -04:00
kirillk 4712bae895 fix: remove checkCli from processResources to unblock compile/test
Move CLI binary verification from :backend:processResources to
buildPlugin so typecheck and test tasks work on a fresh checkout
without CLI binaries present.

processResources was in the compile/jar chain (needed by
compileTestKotlin), causing checkCli's @InputDirectory validation
to fail at configuration time when the generated/cli dir didn't exist.

checkCli is now wired to buildPlugin in the root build.gradle.kts,
which is only called during full plugin packaging.
2026-05-15 09:11:14 -04:00
kirillk d06a10dbb8 ci: fix JetBrains typecheck/test CI race conditions
- Add compile-only Gradle typecheck task so JetBrains CI no longer
  requires CLI binaries or buildPlugin to verify Kotlin compiles
- Remove PrepareLocalCliTask from Gradle; CLI binary prep is now an
  explicit step via bun run build, not triggered implicitly from
  processResources
- Remove @kilocode/cli#build dependency from JetBrains typecheck in
  Turbo so root typecheck and test:ci don't pull CLI bundling as a
  prerequisite for JetBrains compile
- Add @kilocode/cli#build -> @kilocode/sdk#build ordering in Turbo to
  prevent CLI bundling from racing with SDK generated-source cleanup
- Fix test-ci.ts: Windows gradlew.bat support, strip nested XML
  declarations from JUnit reports, exit with Gradle exit code
2026-05-15 09:04:17 -04:00
Catriel Müller dc5dd8a29c Merge pull request #10291 from Kilo-Org/catrielmuller/fix-tts-linux-pipewire
fix(vscode): support PipeWire speech input
2026-05-15 09:55:08 -03:00
Kirill Kalishev 59af47d972 Merge pull request #10162 from Kilo-Org/glaze-nickel
fix(vscode): render plan exit as ready link
2026-05-15 08:48:45 -04:00
Kirill Kalishev 98e314fde4 Merge pull request #10269 from Kilo-Org/flourish-donkey
docs(jetbrains): add RELEASING.md with RC release process
2026-05-15 08:47:43 -04:00
Catriel Müller 62d2740fbc style(vscode): format speech capture pipeline 2026-05-15 09:38:53 -03:00
Josh Holmer 0d7bd4fb3d test: update assertions 2026-05-15 08:35:11 -04:00
Catriel Müller ff1c500501 fix(vscode): handle pipewire recorder failures 2026-05-15 09:31:08 -03:00
Catriel Müller 5fe4dbcafa test(agent-manager): avoid tsx import in annotation test 2026-05-15 09:29:33 -03:00
Catriel Müller 1789f3670b fix(vscode): support pipewire speech input 2026-05-15 09:25:35 -03:00
marius-kilocode 853736f1fc style(vscode): format history search focus 2026-05-15 14:21:18 +02:00
marius-kilocode d19294922d test(vscode): isolate markdown annotation mutation helper 2026-05-15 14:16:01 +02:00
Josh Holmer deddacf063 fix: only include semantic search tool hint when enabled 2026-05-15 08:14:56 -04:00
marius-kilocode e5bc6f0962 Merge remote-tracking branch 'origin/main' into stylish-bloom 2026-05-15 14:08:06 +02:00
marius-kilocode 889d56758f fix(vscode): focus session history search 2026-05-15 13:58:00 +02:00
Marius 3ec9be9abb Merge pull request #10287 from Kilo-Org/eight-timbale
fix(agent-manager): stabilize markdown review capture
2026-05-15 13:57:31 +02:00
Josh Holmer 863ca97ab2 fix(indexing): clarifications and improvements to semantic search tool description 2026-05-15 07:48:11 -04:00
marius-kilocode 1acecd7037 test(agent-manager): cover markdown annotation mutations 2026-05-15 13:46:10 +02:00
Shoubhit Dash 1c7c03332e test(workspace): avoid legacy instance reads (#27727) 2026-05-15 17:07:21 +05:30
marius-kilocode 233da82768 fix(agent-manager): stabilize markdown review capture 2026-05-15 13:35:52 +02:00
Marius d5f93bddf4 Merge pull request #10286 from Kilo-Org/shine-lake
feat(vscode): export session transcripts as markdown
2026-05-15 13:33:55 +02:00
Marius 35f7aa3e6d Merge pull request #10285 from Kilo-Org/sun-culotte
chore(cli): track codebase search usage
2026-05-15 13:31:27 +02:00
Marius 5fa471dc18 Merge pull request #10280 from Kilo-Org/uncovered-telephone
fix(agent-manager): prevent prompt selector clipping
2026-05-15 13:29:04 +02:00
marius-kilocode 6fcc3b6a1e feat(vscode): export session transcripts as markdown 2026-05-15 13:22:47 +02:00
marius-kilocode d23e162051 chore(cli): track codebase search usage 2026-05-15 13:17:37 +02:00
Imanol Maiztegui e68fd6781d resolve merge conflicts 2026-05-15 13:13:17 +02:00
Marius a793e59542 Merge pull request #10219 from Kilo-Org/fix/agent-manager-attribution
fix(vscode): attribute Agent Manager sessions by root context
2026-05-15 13:05:43 +02:00
Marius c868ccb27a Merge pull request #10132 from Kilo-Org/sugared-sense
Fix Kilo view restore on VS Code restart
2026-05-15 13:02:37 +02:00
opencode-agent[bot] 984eefa6f8 chore: generate 2026-05-15 11:02:14 +00:00
Shoubhit Dash bf64f8cbb5 refactor(cli): dispose bootstrap instance explicitly (#27721) 2026-05-15 16:30:54 +05:30
marius-kilocode cebe4c0ca1 fix(vscode): isolate speech unit toast import 2026-05-15 12:55:51 +02:00
marius-kilocode 76bd73e7a3 Merge remote-tracking branch 'origin/main' into fix/agent-manager-attribution 2026-05-15 12:54:00 +02:00
marius-kilocode 64bbc1171b Merge remote-tracking branch 'origin/main' into sugared-sense
# Conflicts:
#	packages/kilo-vscode/src/kilo-provider/options.ts
2026-05-15 12:51:31 +02:00
marius-kilocode aeeea7cd52 Merge branch 'main' into fix/agent-manager-attribution 2026-05-15 12:47:37 +02:00
Marius 304e33f2e8 Merge pull request #10274 from Kilo-Org/safe-apparel
feat(vscode): add voice input to inline review comments
2026-05-15 12:47:21 +02:00
Marius 630bf8f868 Merge pull request #10277 from Kilo-Org/almond-yoke
fix(vscode): send recorded prompts from send button
2026-05-15 12:46:53 +02:00
Marius 81f91775e7 Merge pull request #10278 from Kilo-Org/whimsical-adasaurus
fix(agent-manager): continue sessions in worktrees
2026-05-15 12:46:51 +02:00
opencode-agent[bot] 727a83aa7a chore: generate 2026-05-15 10:46:06 +00:00
Shoubhit Dash e65383810a refactor(tool): read repo overview directory from instance state (#27717) 2026-05-15 16:14:49 +05:30
Marius 75fb7903f7 Merge branch 'main' into sugared-sense 2026-05-15 12:37:31 +02:00
Marius 27b591f039 Merge branch 'main' into almond-yoke 2026-05-15 12:37:27 +02:00
Marius 849d0e356a Merge branch 'main' into safe-apparel 2026-05-15 12:37:21 +02:00
Marius 631a3ad904 Merge branch 'main' into whimsical-adasaurus 2026-05-15 12:37:12 +02:00
Shoubhit Dash 12b666e2c9 refactor(project): import instance context directly (#27714) 2026-05-15 15:59:56 +05:30
kilo-maintainer[bot] d1404579fa release: v7.3.0 2026-05-15 10:22:34 +00:00
Marius 48545bb1ce Merge pull request #10279 from Kilo-Org/tulip-cabin
fix(cli): keep prompt enhancement in rewrite mode
2026-05-15 12:11:43 +02:00
marius-kilocode b4e41980cc fix(agent-manager): satisfy CSS prefix guard 2026-05-15 12:06:13 +02:00
Shoubhit Dash eb5ef1c073 refactor(flags): remove unused flag exports (#27709) 2026-05-15 15:35:24 +05:30
Shoubhit Dash 356f684186 refactor(flags): migrate skip migrations flag (#27705) 2026-05-15 14:54:29 +05:30
Shoubhit Dash 7b370406a9 refactor(flags): migrate lsp download flag (#27699) 2026-05-15 14:35:31 +05:30
Shoubhit Dash 202cc863b4 refactor(flags): migrate claude code prompt flag (#27690) 2026-05-15 14:17:04 +05:30
kilo-maintainer[bot] 8de6c2ea86 release: v7.2.54 2026-05-15 08:44:02 +00:00
marius-kilocode 3ac16c5be5 fix(agent-manager): prevent prompt selector clipping 2026-05-15 10:13:49 +02:00
marius-kilocode a3769d83de fix(cli): keep prompt enhancement in rewrite mode 2026-05-15 10:10:34 +02:00
marius-kilocode 6f24f78e51 ci: retry Windows Node setup in tests 2026-05-15 10:06:32 +02:00
Marius b3393c739e Merge pull request #10275 from Kilo-Org/bolder-petroleum
fix(vscode): preserve spoken transcription wording
2026-05-15 10:02:07 +02:00
marius-kilocode d6341d3e6a Merge remote-tracking branch 'origin/main' into whimsical-adasaurus
# Conflicts:
#	packages/kilo-vscode/webview-ui/agent-manager/AgentManagerApp.tsx
2026-05-15 10:00:07 +02:00
marius-kilocode 12acd6f8ba fix(agent-manager): preserve active session while routing worktrees 2026-05-15 09:58:16 +02:00
Shoubhit Dash 22cb0395e2 refactor(flags): migrate external skills flag (#27685) 2026-05-15 13:24:56 +05:30
marius-kilocode a26659b627 fix(agent-manager): harden inline review speech renderer 2026-05-15 09:51:49 +02:00
marius-kilocode 3031de6302 fix(agent-manager): continue sessions in worktrees 2026-05-15 09:51:43 +02:00
marius-kilocode 4b816f621b fix(vscode): send recorded prompts from send button 2026-05-15 09:45:44 +02:00
Shoubhit Dash 2d6bedecd4 refactor(flags): migrate output token max to runtime flags (#27680) 2026-05-15 13:07:35 +05:30
opencode-agent[bot] 2080390ca6 chore: generate 2026-05-15 07:36:10 +00:00
Kagura 1ac3f09468 fix(watcher): resolve symlinked .git path before subscribing (#27016)
Co-authored-by: Simon Klee <hello@simonklee.dk>
2026-05-15 09:34:53 +02:00
marius-kilocode 62bd028910 test(agent-manager): include speech annotation source 2026-05-15 09:34:27 +02:00
marius-kilocode f5dc95b993 fix(vscode): preserve spoken transcription wording 2026-05-15 09:29:06 +02:00
marius-kilocode 14a25b037b feat(agent-manager): add voice input to inline review comments 2026-05-15 09:26:03 +02:00
Imanol Maiztegui 8066036064 merge: record upstream v1.14.34 2026-05-15 09:25:14 +02:00
Imanol Maiztegui b7a7ecf449 refactor: kilo compat for v1.14.34 2026-05-15 09:25:13 +02:00
Aiden Cline ca8f578f2f ci: skip previously cleaned PRs (#27670) 2026-05-15 00:23:09 -05:00
Aiden Cline d59d99665b ci: Automate PR cleanup (#27667) 2026-05-14 23:47:59 -05:00
opencode c43edc5b71 sync release versions for v1.15.0 2026-05-15 04:03:54 +00:00
Dax Raad 7a012cac08 fix(tool): ignore invalid custom tool exports 2026-05-14 23:36:28 -04:00
James Long af06e52708 fix(session): ignore instruction lookup errors (#27656) 2026-05-14 23:12:30 -04:00
Dax Raad f807152724 core: fix event projector lookup to use versioned type keys
Fixes a bug where projectors were stored with Definition object references
as Map keys but lookups were failing due to object identity mismatches.
Now uses versioned type strings as keys, ensuring events are correctly
matched to their projectors during sync processing.

This fixes issues where certain events would not be properly projected
to the read model, causing stale or missing data in views.
2026-05-14 22:52:03 -04:00
Dax Raad b0ea7a5aa7 more test fixes 2026-05-14 22:45:09 -04:00
opencode-agent[bot] 34b1be5bcd chore: generate 2026-05-15 02:34:06 +00:00
Dax Raad 16639eee76 test fixes 2026-05-14 22:32:38 -04:00
opencode-agent[bot] 10c8493940 chore: generate 2026-05-15 02:14:56 +00:00
Dax Raad a50ff72f3f fix: remove debug logging 2026-05-14 22:13:15 -04:00
Dax Raad 5f4e5e6896 more typecheck fixes 2026-05-14 22:05:12 -04:00
Dax Raad f39cf911d7 fix missing event types in sdk 2026-05-14 21:57:25 -04:00
Brendan Allan f179dcbf02 fix(app): only run session.updated archive logic if archive state changes (#27637) 2026-05-15 09:42:47 +08:00
Josh Holmer 85020124b6 fix(vscode): show session-cumulative token usage
The VSCode UI currently shows token usage from only the current turn.
This is confusing to users and differs from what the CLI shows. This
change updates the token display to show the total token usage for the
full session, equivalent to what the CLI shows.
2026-05-14 21:14:38 -04:00
opencode-agent[bot] fd6a8520b8 chore: generate 2026-05-15 00:52:06 +00:00
Dax e11e089e42 Add Effect-native core event system (#27415) 2026-05-15 00:50:23 +00:00
Luna Seemann 73cdba959b feat(desktop): auto-hide menu bar on Linux and Windows (#27618) 2026-05-15 08:48:29 +08:00
opencode 4e7a60dac6 sync release versions for v1.14.51 2026-05-15 00:39:54 +00:00
opencode a462b1c101 release: v1.14.51 2026-05-15 00:39:43 +00:00
opencode-agent[bot] e62ebd8fec chore: generate 2026-05-15 00:02:04 +00:00
Kit Langton 195f592640 refactor(server): simplify listener lifecycle (#27413) 2026-05-15 00:00:52 +00:00
opencode-agent[bot] 78769010a1 chore: generate 2026-05-14 23:46:57 +00:00
Kit Langton 4e143e3a3e test(lib): promote pollWithTimeout/awaitWithTimeout helpers (#27626) 2026-05-14 23:45:32 +00:00
opencode-agent[bot] dab567aa2d chore: generate 2026-05-14 23:34:42 +00:00
Kit Langton 9d35b04e13 test(acp): replace fixed sleeps with pollUntil in event-subscription (#27624) 2026-05-14 23:33:06 +00:00
Kit Langton 273ab56949 test(bus): fix flaky subscriber races with readiness latch (#27625) 2026-05-14 19:32:25 -04:00
Kit Langton 302ba0ca0b test(session): de-flake shell-cancel tests by waiting for busy state (#27622) 2026-05-14 19:24:09 -04:00
kirillk c79785ea90 Merge remote-tracking branch 'origin/main' into unleashed-romano
# Conflicts:
#	packages/kilo-jetbrains/backend/src/main/kotlin/ai/kilocode/backend/app/KiloBackendSessionManager.kt
2026-05-14 19:07:45 -04:00
Shoubhit Dash d35e09f1fc test(workspace): use runtime flags in workspace tests (#27612) 2026-05-15 04:19:39 +05:30
kirillk bcb21806fc docs(jetbrains): add RELEASING.md with RC release instructions and link from READMEs 2026-05-14 18:48:34 -04:00
Shoubhit Dash fc34c74567 refactor(flags): move channel db flag to runtime flags (#27615) 2026-05-15 04:09:10 +05:30
Shoubhit Dash cb4f5cdea9 refactor(flags): move auto share to runtime flags (#27611) 2026-05-15 03:58:26 +05:30
nv-kasikritc d34a0194ec feat(provider): add NVIDIA endpoints origin header (#27394) 2026-05-14 17:21:58 -05:00
Shoubhit Dash 43310f4d8c refactor(flags): move embedded web ui flag to runtime flags (#27613) 2026-05-15 03:51:29 +05:30
Shoubhit Dash e22cfa435a refactor(lsp): move ty flag to runtime flags (#27610) 2026-05-15 03:40:30 +05:30
opencode-agent[bot] 93b1ccc029 chore: generate 2026-05-14 22:00:48 +00:00
Shoubhit Dash faca2b90c1 refactor(flags): migrate icon discovery runtime flag (#27609) 2026-05-15 03:24:14 +05:30
Shoubhit Dash 76ff18afde refactor(format): move oxfmt flag to runtime flags (#27608) 2026-05-15 03:03:37 +05:30
opencode-agent[bot] 9914c9af17 chore: generate 2026-05-14 21:32:52 +00:00
Shoubhit Dash f202226bbc refactor(flags): move bash timeout to runtime flags (#27607) 2026-05-15 02:49:14 +05:30
Shoubhit Dash 34198f422c refactor(provider): use runtime flag for experimental models (#27606) 2026-05-15 02:48:01 +05:30
Shoubhit Dash cccdeef294 refactor(flags): migrate claude code skills flag to RuntimeFlags (#27605) 2026-05-15 02:47:26 +05:30
Musa 83c145f889 fix(plugin): scope digitalocean oauth to genai (#27599) 2026-05-14 15:20:34 -05:00
Kirill Kalishev a4218d893d Merge pull request #9801 from Kilo-Org/morning-tibia
ci(jetbrains): publish release candidates from tags
2026-05-14 16:16:11 -04:00
Kirill Kalishev 3f42373317 Merge pull request #10222 from Kilo-Org/kiwi-acorn
fix(jetbrains): address Marketplace verifier checks
2026-05-14 16:04:44 -04:00
Kit Langton d353a6bc24 fix(worktree): accept missing create payload (#27582) 2026-05-14 14:25:22 -04:00
Catriel Müller 7bc46c54d8 Merge pull request #10263 from Kilo-Org/axiomatic-gouda
fix(cli): chunk oversized compactions
2026-05-14 15:16:26 -03:00
Sylwester Liljegren 47c8600b21 feat(prompt-input): add interactive file mention interactions with visual enhancements
Implement click-to-open functionality for file mentions, allowing users to directly open files from the prompt input. Add visual distinction between file mentions and built-in mentions (@terminal, @git-changes) through conditional styling with background colors, borders, and hover effects. Enhance mention selection snapping to fully cover partially-selected mentions, and introduce keyboard handlers for atomic backspace deletion and arrow key navigation that skips cursor movement through mention tokens. Persist known paths across the session to enable proper mention rediscovery after undo operations.
2026-05-14 20:11:36 +02:00
bo-tato d25cc42d21 docs(app): stale reference to removed multi-edit tool (#27579) 2026-05-14 13:10:01 -05:00
opencode-agent[bot] 6039b894c5 chore: generate 2026-05-14 18:05:32 +00:00
Kit Langton b4fc5ef071 refactor(http-recorder): tighten cassette safety, fix WS leaks + docs (#26730) 2026-05-14 18:03:22 +00:00
opencode-agent[bot] f6c8e35383 chore: generate 2026-05-14 17:58:35 +00:00
Kit Langton 94564f3588 fix(session): prevent double auto-compaction from filterCompacted reorder (#27545) 2026-05-14 13:56:12 -04:00
Kit Langton 855bda8384 test(question): wait on question events (#27124) 2026-05-14 13:23:47 -04:00
kirillk 410bae8c2a ci: add publish-jetbrains.yml to workflow allowlist 2026-05-14 13:19:02 -04:00
kirillk 9a8225cbb2 ci(jetbrains): require v-prefixed publish tags 2026-05-14 13:14:07 -04:00
kirillk 5e4682338d revert: remove out-of-scope fix in KiloBackendSessionManager 2026-05-14 12:59:16 -04:00
kirillk c4716769e5 Merge branch 'main' into morning-tibia 2026-05-14 12:57:28 -04:00
opencode-agent[bot] 756488d534 chore: generate 2026-05-14 16:42:18 +00:00
Shoubhit Dash 22de34c4de feat: add experimental background subagents (#27084) 2026-05-14 22:10:15 +05:30
Adam bdb0c16a93 chore: update web stats 2026-05-14 11:26:59 -05:00
Sameer Kankute 7f7eb2e7f8 fix(provider): remove LiteLLM workarounds ported upstream, requires LiteLLM v1.85.0-rc.2+ (#26819)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 11:26:07 -05:00
Catriel Müller 43d9dd23ed fix: comment 2026-05-14 13:18:03 -03:00
Marius fe969a18e3 fix(vscode): update speech capture tooltip (#10266) 2026-05-14 11:52:01 -04:00
Mark IJbema 7bd3979f78 Merge branch 'main' into nvidia-nim-origin-header 2026-05-14 17:18:28 +02:00
Catriel Müller 0f1626420f fix: tests 2026-05-14 12:04:19 -03:00
Marius 47f65f76e6 Merge pull request #10265 from Kilo-Org/fix/vscode-snapshot-cli-rebuild
fix(vscode): rebuild CLI for snapshot installs
2026-05-14 16:56:51 +02:00
Mark IJbema 78db58e594 Merge pull request #10264 from Kilo-Org/mark/copy-tooltip-top
fix(ui): place copy tooltip above button to match rating tooltips
2026-05-14 16:47:36 +02:00
marius-kilocode 900ba85b83 fix(vscode): rebuild CLI for snapshot installs 2026-05-14 16:46:48 +02:00
Catriel Müller 1d80231da0 refactor: address the comments 2026-05-14 11:40:15 -03:00
kiloconnect[bot] 262c2d6704 fix(ui): place copy tooltip above button to avoid overlapping thumbs 2026-05-14 14:36:44 +00:00
Catriel Müller c1a797c1f1 fix(cli): chunk oversized compactions 2026-05-14 11:26:28 -03:00
Marius cb83e473c3 Merge pull request #10258 from Kilo-Org/cedar-titanosaurus
Add experimental speech-to-text prompt input
2026-05-14 16:15:11 +02:00
Mark IJbema cb681c6ca6 Merge branch 'main' into nvidia-nim-origin-header 2026-05-14 16:10:39 +02:00
marius-kilocode 576babe9f1 fix(vscode): lock speech capture during startup 2026-05-14 15:46:36 +02:00
opencode-agent[bot] e15fd0bb93 chore: generate 2026-05-14 13:33:44 +00:00
opencode-agent[bot] 8f90697df8 chore: generate 2026-05-14 13:32:19 +00:00
opencode-agent[bot] 17af25d1c1 chore: generate 2026-05-14 13:30:59 +00:00
Kit Langton 3c81326a5e docs(effect): refresh TODO with shipped P0 and RF work (#27536) 2026-05-14 09:29:32 -04:00
marius-kilocode 03239c0710 refactor(vscode): simplify speech input wiring 2026-05-14 14:50:42 +02:00
marius-kilocode 3885ff8179 fix(vscode): address speech input review issues 2026-05-14 14:44:29 +02:00
opencode-agent[bot] 9f8d8f5b0e chore: generate 2026-05-14 12:40:10 +00:00
OpeOginni 337993d53e feat(desktop): add mcp client registration status and authentication handling (#27525) 2026-05-14 20:38:52 +08:00
marius-kilocode 78ffce39df fix(vscode): expand ffmpeg fallback paths 2026-05-14 14:33:28 +02:00
Marius c2220dc3d6 Merge pull request #10256 from Kilo-Org/silky-naranja
fix(agent-manager): support diff sidebar with terminals
2026-05-14 14:33:04 +02:00
marius-kilocode 39635122a4 chore: address speech input review feedback 2026-05-14 14:32:19 +02:00
marius-kilocode 1e397c3059 chore: address speech input review 2026-05-14 14:22:42 +02:00
marius-kilocode 1daaa0a8de fix(agent-manager): remove redundant terminal comments cast 2026-05-14 14:21:21 +02:00
marius-kilocode 5c9fc5b408 chore: remove speech input plan 2026-05-14 14:20:45 +02:00
marius-kilocode 5b841e97f7 Merge remote-tracking branch 'origin/main' into cedar-titanosaurus
# Conflicts:
#	packages/kilo-vscode/src/KiloProvider.ts
2026-05-14 14:20:08 +02:00
marius-kilocode 09cb916817 chore: keep bun lock unchanged 2026-05-14 14:18:26 +02:00
marius-kilocode 0f76700e70 chore: restore bun lockfile 2026-05-14 14:17:40 +02:00
marius-kilocode 1af79731a8 feat(vscode): add speech-to-text prompt input 2026-05-14 14:16:51 +02:00
marius-kilocode da9292fbcc fix(agent-manager): support diff sidebar with terminals 2026-05-14 14:09:12 +02:00
Marius 752022556d Merge pull request #10243 from Kilo-Org/holistic-diadem
fix(ui): preserve chat tool collapse state
2026-05-14 13:43:52 +02:00
marius-kilocode 47c22a28e9 fix(ui): preserve chat tool collapse state 2026-05-14 13:33:19 +02:00
Marius ddf3ea6915 Merge pull request #10240 from Kilo-Org/harmless-perfume
fix(vscode): keep worktree model search open
2026-05-14 13:12:10 +02:00
Shoubhit Dash e26abd8da9 fix(tool): close shell truncation stream (#27517) 2026-05-14 16:34:42 +05:30
marius-kilocode 09f0156bfc fix(vscode): keep worktree model search open 2026-05-14 12:50:10 +02:00
Shoubhit Dash 8c1ce0b80c refactor(flags): simplify tui plugin runtime flags (#27506) 2026-05-14 15:56:02 +05:30
Brendan Allan f8c3f560d4 fix(desktop): await execFilePromise and read stdout properly (#27499) 2026-05-14 17:52:23 +08:00
Shoubhit Dash 7e43d3e3f5 refactor(lsp): type initialize errors (#27494) 2026-05-14 15:20:02 +05:30
Marius 1fbe696036 Merge pull request #10228 from Kilo-Org/supersede-shell-command-highlighting
feat(ui): add highlighted shell command output
2026-05-14 11:43:45 +02:00
arrrkady a19c91f83e Merge pull request #10214 from Kilo-Org/docs/update-mobile-apps
Update mobile apps documentation
2026-05-14 11:38:48 +02:00
opencode-agent[bot] 52db7a76e2 chore: update nix node_modules hashes 2026-05-14 09:28:30 +00:00
Shoubhit Dash be6e7b309e refactor(provider): type init errors (#27484) 2026-05-14 14:48:58 +05:30
Marius 0baee717e3 Merge pull request #10227 from Kilo-Org/island-medusaceratops
Fix: Hide subagent sessions from VsCode Agent Manager sessions view
2026-05-14 11:18:51 +02:00
Marius 710b9c513f Merge pull request #10230 from Kilo-Org/pear-rudbeckia
feat(vscode): collapsible Agent Manager sidebar
2026-05-14 11:18:08 +02:00
Simon Klee 0af242974c deps: Upgrade OpenTUI to 0.2.10 (#27491) 2026-05-14 09:14:03 +00:00
Mark IJbema f14c031650 Merge pull request #10235 from Kilo-Org/mark/upstream-merge-no-minimizer-skill
docs(agent): forbid kilocode-merge-minimizer skill in upstream-merge agent
2026-05-14 10:50:55 +02:00
kiloconnect[bot] 52b4350bc5 docs(agent): forbid kilocode-merge-minimizer skill in upstream-merge agent 2026-05-14 08:28:49 +00:00
Marius c600065141 Merge pull request #10229 from Kilo-Org/oasis-maraca
Keep worktree revert diffing local
2026-05-14 10:14:49 +02:00
github-actions[bot] a41be4c841 chore: update kilo-vscode visual regression baselines 2026-05-14 08:06:35 +00:00
marius-kilocode af5c05de7e fix(vscode): use inert instead of aria-hidden on collapsed sidebar
aria-hidden only hides from screen readers; pointer-events: none only
blocks the mouse. Tab focus could still traverse into the hidden
sidebar's worktree buttons and session items. inert handles all three
at once: removes from the a11y tree, blocks pointer events, and prevents
keyboard focus.
2026-05-14 10:05:39 +02:00
marius-kilocode 9f6997ef31 fix(cli): preserve child task attribution 2026-05-14 10:04:55 +02:00
marius-kilocode 1abd32ecc8 fix(ui): cancel stale shell highlighting 2026-05-14 10:03:48 +02:00
marius-kilocode 26f5393be2 feat(vscode): collapsible Agent Manager sidebar with persistent state
Adds a toggle button left of the active session/tab title that collapses
the worktrees & sessions sidebar. The collapsed state is persisted to
.kilo/agent-manager.json, restored on panel reload and VS Code restart,
and auto-expands when the user creates a new session or worktree so the
new entry is visible. The first paint after restart skips the width
animation so the panel never flashes from open to closed.
2026-05-14 09:51:14 +02:00
marius-kilocode 41e3cda971 fix(vscode): keep worktree revert diffing local 2026-05-14 09:47:32 +02:00
marius-kilocode dea6169340 fix(ui): harden shell highlighting rendering 2026-05-14 09:45:35 +02:00
marius-kilocode e1e2454b42 fix(agent-manager): hide subagent sessions from list 2026-05-14 09:44:29 +02:00
Shoubhit Dash 27ac53aaac fix(server): stop exposing named defects (#27471) 2026-05-14 12:51:05 +05:30
Shoubhit Dash 78015571bf refactor(server): centralize session busy mapping (#27473) 2026-05-14 12:50:36 +05:30
Aiden Cline e76cf967e6 fix(session): finalize interrupted assistant messages (#27254) 2026-05-14 01:19:11 -05:00
opencode-agent[bot] c2723b5ea0 chore: generate 2026-05-14 04:25:32 +00:00
Frederik 9675579796 fix: bug encountered when using azure gpt-5.5 w/ completions api (#26222) 2026-05-13 23:24:16 -05:00
opencode-agent[bot] 4d8368970a chore: update nix node_modules hashes 2026-05-14 04:20:42 +00:00
Nikhil Patel 2a7af6acd8 fix(tui): preserve text selection on question prompt options (#24988)
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-05-13 23:17:59 -05:00
opencode-agent[bot] bfd707abc9 chore: generate 2026-05-14 04:07:30 +00:00
Aiden Cline 981e00971a fix: image resizer wasm loading, reenable image resizing (#26805) 2026-05-13 23:06:07 -05:00
Aiden Cline c50d2b3656 Refactor event HTTP API route modules (#27441) 2026-05-13 22:41:17 -05:00
opencode ddad0988e7 sync release versions for v1.14.50 2026-05-14 03:03:23 +00:00
Kit Langton cda8cc7285 test(httpapi): simplify event stream regression coverage (#27427) 2026-05-14 02:18:40 +00:00
kirillk b65c4b28c6 Revert "Merge remote-tracking branch 'origin/morning-tibia' into kiwi-acorn"
This reverts commit 72bd8f8375, reversing
changes made to b40622354c.
2026-05-13 22:16:57 -04:00
John Fawcett 4656c671bb Merge pull request #10039 from Kilo-Org/convoy/wasteland-product-documentation/191b018d/head
docs(wasteland): add Wasteland product documentation section
2026-05-13 21:15:05 -05:00
Kit Langton b928a1fff9 fix(httpapi): preserve event stream context (#27425)
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
Co-authored-by: James Long <longster@gmail.com>
2026-05-13 22:02:30 -04:00
Kit Langton 04286d0415 docs(effect): plan Instance deletion path (#27424) 2026-05-13 21:58:54 -04:00
opencode-agent[bot] 33bb33ba90 chore: generate 2026-05-14 01:55:00 +00:00
Sebastian b0ade40265 flip back to markdown renderable (#27421) 2026-05-14 03:53:48 +02:00
kirillk 72bd8f8375 Merge remote-tracking branch 'origin/morning-tibia' into kiwi-acorn
# Conflicts:
#	packages/kilo-jetbrains/backend/src/main/kotlin/ai/kilocode/backend/app/KiloBackendSessionManager.kt
2026-05-13 21:53:12 -04:00
Kit Langton 681594b551 refactor(storage): remove not found wire serializer (#27416) 2026-05-13 21:39:50 -04:00
Kit Langton edf7649400 fix(session): type busy errors (#27410) 2026-05-14 01:28:04 +00:00
Kit Langton 3fc7486d15 test(session): fix shell-cancel race when trap hasn't installed yet (#27408) 2026-05-14 01:10:40 +00:00
Kit Langton 8e353584c7 test(format): remove formatter check sleeps (#27407) 2026-05-13 21:02:34 -04:00
Sebastian 5c35ea2181 notification docs (#27406) 2026-05-14 03:01:25 +02:00
opencode-agent[bot] faf8713053 chore: generate 2026-05-14 00:59:33 +00:00
Dax 16c457e712 refactor(core): move models.dev into core (#27347) 2026-05-13 20:58:24 -04:00
Kit Langton 9818c9e8d0 fix(provider): make small model fallback optional (#27405) 2026-05-14 00:44:34 +00:00
Kit Langton 5e41dbbcbf test(effect): use Effect sleep in instance state tests (#27404) 2026-05-13 20:43:46 -04:00
Kit Langton ba5c8d3822 fix(llm): preserve tool error defects (#27403) 2026-05-13 20:43:32 -04:00
opencode-agent[bot] 10c90eb445 chore: generate 2026-05-14 00:33:32 +00:00
Kit Langton aa8a41d1b8 effect(patch,tool): migrate patch/index and tool/read to AppFileSystem (#27155) 2026-05-13 20:32:19 -04:00
Kit Langton 3f33be1928 effect(server): typed errors in session/sync handlers, fix concurrency (#27146) 2026-05-13 20:31:27 -04:00
Kit Langton 42e6b7d541 effect(core): track stderr truncation; polish AppProcess callers (#27353) 2026-05-13 20:31:03 -04:00
Kit Langton ccb207f946 effect(util): migrate filesystem callers to AppFileSystem.Service (#27152) 2026-05-13 20:25:37 -04:00
Sylwester Liljegren 911e7ce733 feat(ui): add shell command syntax highlighting with Shiki and section labels
Add syntax highlighting to shell command output using Shiki with labeled "Command" and "Output" sections, per-section copy buttons, and an "Open in Editor" action. The feature supports opening full untruncated output in VS Code editor tabs and includes i18n translations for 18 languages.

Changes include:
- BashHighlightedOutput component with shellscript grammar for commands and log grammar for output
- Section labels and dividers matching MCP tool styling patterns
- Copy buttons for both command and output sections with visual feedback
- OpenContent message type and handler for opening arbitrary text in untitled editor tabs
- Support for outputPath metadata to open full files when output is truncated
- CSS styling for section layout, scrolling, and hover-revealed actions
- i18n dictionary updates across all 18 supported languages (ar, br, bs, da, de, en, es, fr, ja, ko, nl, no, pl, ru, th, tr, uk, zh, zht)
- Changeset entry documenting the feature as a minor version bump
2026-05-14 02:02:38 +02:00
Kit Langton de1e0b5d6d test(workspace): effectify sync state cases (#27400) 2026-05-13 19:49:03 -04:00
Aiden Cline df3895d74f cleanup: make smallOptions rely on variants (#27390) 2026-05-13 18:30:36 -05:00
Kit Langton 55e0af1405 fix(provider): type model not found errors (#27334) 2026-05-13 22:23:09 +00:00
Kit Langton 5182a3698d test(workspace): use Effect for local session warp cases (#27393) 2026-05-13 22:22:51 +00:00
opencode 73e1de4513 sync release versions for v1.14.49 2026-05-13 22:18:40 +00:00
Frank 44b432c3fd sync 2026-05-13 18:05:06 -04:00
kirillk b40622354c refactor(jetbrains): extract svg icon colorizer 2026-05-13 17:47:48 -04:00
Kit Langton 0d8c9f3437 docs: add LayerMap example (#27388) 2026-05-13 17:46:47 -04:00
kirillk 96d23223a2 fix(jetbrains): use svg patcher for scroll icon 2026-05-13 17:40:00 -04:00
opencode-agent[bot] 0d074492df chore: update nix node_modules hashes 2026-05-13 21:20:10 +00:00
kirillk 2d365fe707 fix(jetbrains): reduce marketplace verifier warnings 2026-05-13 17:17:56 -04:00
Sebastian 3b7a5e783d fix keymap fallback priority and TUI config diagnostics (#27384) 2026-05-13 23:00:48 +02:00
kirillk 5492b905a0 Merge remote-tracking branch 'origin/main' into rainbow-hotel
# Conflicts:
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/QuestionPanel.kt
#	packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/controller/JsonSessionStreamTest.kt
2026-05-13 16:46:07 -04:00
kirillk 092757556e Merge remote-tracking branch 'origin/main' into striped-patch 2026-05-13 16:41:03 -04:00
Kirill Kalishev 53c83d29a5 Merge pull request #10163 from Kilo-Org/disco-trapezoid
fix(jetbrains): address history review gaps + add cloud repo-only filter
2026-05-13 16:39:35 -04:00
kirillk fff4277c4e chore(i18n): remove plan ready comments 2026-05-13 16:34:49 -04:00
kirillk 064bb1b6a7 chore: remove plan files 2026-05-13 16:31:21 -04:00
kirillk d649e2496a chore(jetbrains): decode locale bundle unicode escapes 2026-05-13 16:28:41 -04:00
kirillk 62e98e8b3d style(vscode): format assistant message 2026-05-13 16:10:18 -04:00
kchantharuan aeac494884 fix(cli): add NVIDIA NIM origin header 2026-05-13 13:08:15 -07:00
kirillk fb420a1af3 fix(vscode): use inert plan link href 2026-05-13 16:02:58 -04:00
kirillk 19988ccaae fix(jetbrains): harden cloud history git remote lookup 2026-05-13 16:01:07 -04:00
Frank c197fd92b7 sync 2026-05-13 15:58:34 -04:00
kirillk 0db8195803 chore: add plan files 2026-05-13 15:57:46 -04:00
kirillk 4fc89dce67 feat(jetbrains): add i18n locale bundles for 18 languages
Add KiloBundle locale files for ar, bs, da, de, es, fr, ja, ko, nl, no,
pl, pt_BR, ru, th, tr, uk, zh_CN, zh_TW — matching the language support
already present in the VS Code extension.
2026-05-13 15:57:35 -04:00
kirillk 4174c0f92d docs(kilo-jetbrains): add threading and coroutine context annotations section to skill guide 2026-05-13 15:56:53 -04:00
kirillk 233dc4b1da Merge remote-tracking branch 'origin/glaze-nickel' into glaze-nickel 2026-05-13 15:53:47 -04:00
kirillk efc411eeb8 fix(i18n): add plan ready translations 2026-05-13 15:53:19 -04:00
Kirill Kalishev 8de3db4375 Merge branch 'main' into glaze-nickel 2026-05-13 15:47:26 -04:00
kirillk e858b06c82 Merge remote-tracking branch 'origin/glaze-nickel' into glaze-nickel 2026-05-13 15:36:16 -04:00
Marius e4e3a36174 Merge pull request #10218 from Kilo-Org/perpetual-parmesan
Configure auto compaction threshold
2026-05-13 21:33:16 +02:00
Shoubhit Dash 9ee1f6ceba fix(server): map busy sessions in http handlers (#27375) 2026-05-14 01:02:07 +05:30
kirillk e5f7f6d8e4 fix(vscode): simplify plan ready label 2026-05-13 15:31:27 -04:00
Kirill Kalishev 5b333c93ad Merge branch 'main' into disco-trapezoid 2026-05-13 15:25:36 -04:00
kirillk d25f537a11 feat(jetbrains): add cloud history repo-only filter
Resolve remaining parity gap from PR #10097 review: VS Code's cloud
history has an 'Only this repository' checkbox that filters sessions by
git remote URL; JetBrains had the RPC plumbing but no UI or URL lookup.

- Add GitRemoteUrl.kt helper that resolves 'origin' via git subprocess
- HistoryController gains gitUrl (resolved once on first cloud load) and
  repoOnly (defaults true when a URL exists); applyRepoOnly() toggles
  the filter and reloads cloud history
- HistoryPanel adds a JBCheckBox on the cloud tab, visible only when a
  git remote URL is found, with left indent aligned to list item text
- Add bundle key history.cloud.repo.only
- Extend HistoryControllerTest with 8 new cases covering URL filtering,
  null fallback, load-more retention, and checkbox panel behaviour
2026-05-13 15:22:22 -04:00
Shoubhit Dash 20cec91550 fix(provider): restore model suggestions (#27372) 2026-05-14 00:38:38 +05:30
Aiden Cline 22a5e6cc50 fix(run): restore non-interactive exit behavior (#27371) 2026-05-13 18:45:34 +00:00
Shoubhit Dash 52f9bcbb82 refactor(flags): route installation client through runtime flags (#27369) 2026-05-14 00:10:31 +05:30
Shoubhit Dash a4ebb07c25 refactor(flags): route llm client through runtime flags (#27368) 2026-05-14 00:09:53 +05:30
marius-kilocode 997f522d15 fix(cli): keep session bootstrap compatible 2026-05-13 20:20:58 +02:00
marius-kilocode 187c7a6314 fix(cli): guard session bootstrap parent recursion 2026-05-13 20:02:44 +02:00
marius-kilocode 827e75acc8 refactor(cli): keep attribution lookups in memory 2026-05-13 19:59:05 +02:00
marius-kilocode ce64a962be fix(vscode): attribute Agent Manager sessions by root context 2026-05-13 19:49:48 +02:00
kirillk a0262c19a4 Merge remote-tracking branch 'origin/main' into glaze-nickel 2026-05-13 13:38:27 -04:00
John Fawcett a877f0d61c fix(docs): replace dead troubleshooting links with wasteland overview
The troubleshooting page was deleted earlier in this PR with a redirect
to the wasteland index, but several inline links still pointed at the
old path. Lychee link-checker treats those as broken because it
validates files on disk rather than honoring redirects. Repoint them at
/docs/code-with-ai/gastown/wasteland directly.
2026-05-13 12:21:44 -05:00
John Fawcett 1acf0d7fed Merge remote-tracking branch 'origin/main' into convoy/wasteland-product-documentation/191b018d/head
# Conflicts:
#	.kilocode/package-lock.json
2026-05-13 12:18:29 -05:00
Catriel Müller b5b051b6a4 Merge pull request #7201 from cbrunnkvist/feat/roll-call-command
feat(cli): add roll-call command for batch-testing model connectivity
2026-05-13 14:10:34 -03:00
John Fawcett 691b228b9e fix(docs): hoist FitOnResize out of FlowDiagram render
Defining FitOnResize inside the parent render gave it a new component
identity on every parent render, forcing React to unmount/remount it
and tear down the ResizeObserver each time. Hoist it to module scope
and pass useReactFlow in as a prop. Also drop the unused instanceRef.
2026-05-13 12:07:16 -05:00
Catriel Müller 7f6fe7feac refactor: fix exit status code 2026-05-13 13:54:51 -03:00
John Fawcett 25ae095944 docs(wasteland): polish diagrams and screenshots 2026-05-13 11:51:28 -05:00
opencode-agent[bot] 7cc968b05d chore: generate 2026-05-13 16:47:21 +00:00
Frank fa077b92b1 zen: update sticky session logic 2026-05-13 12:45:11 -04:00
Kit Langton 8ad3a4b217 test(util): migrate log cleanup test to Effect (#27357) 2026-05-13 16:43:23 +00:00
Kit Langton 533495ae20 test(mcp): migrate OAuth auto-connect tests (#27356) 2026-05-13 16:38:37 +00:00
Kit Langton f0635e365f test(session): use Effect polling in processor tests (#27354) 2026-05-13 16:33:19 +00:00
Catriel Müller d541f851df refactor: fix test 2026-05-13 13:31:45 -03:00
Kit Langton 25de3e407b test(acp): use shared instance fixture for event tests (#27351) 2026-05-13 12:30:13 -04:00
Catriel Müller aab35c9d18 refactor: fix test // typecheck 2026-05-13 13:17:09 -03:00
marius-kilocode 4860e654ca feat: configure auto compaction threshold 2026-05-13 18:09:54 +02:00
Frank 655b25bccf sync 2026-05-13 12:05:30 -04:00
Kit Langton e5d13d9519 effect(git): migrate to AppProcess.run (#27190) 2026-05-13 12:04:51 -04:00
Kit Langton 5cdbb7505e effect(installation): migrate to AppProcess.run (#27188) 2026-05-13 11:54:29 -04:00
kiloconnect[bot] e369798a38 docs(kilo-docs): tune mobile screenshot gallery sizing 2026-05-13 15:48:50 +00:00
Kit Langton e5319846ad test(server): migrate pty websocket input test (#27348) 2026-05-13 15:43:09 +00:00
Catriel Müller dbf938841b Merge branch 'main' into feat/roll-call-command 2026-05-13 12:40:24 -03:00
Kit Langton 832aa94977 effect(worktree): migrate to AppProcess.run (#27186) 2026-05-13 11:39:35 -04:00
kiloconnect[bot] c3acddd306 docs(kilo-docs): add image gallery tag 2026-05-13 15:34:28 +00:00
Kit Langton 6c7f35b49e effect(format): migrate to AppProcess (#27185) 2026-05-13 15:26:42 +00:00
Catriel Müller e8078b88b9 refactor: fix test types 2026-05-13 12:24:12 -03:00
kiloconnect[bot] 2a9144e8e6 docs(kilo-docs): compress mobile app screenshots 2026-05-13 15:24:05 +00:00
Catriel Müller 54916e9c44 refactor: address the comments 2026-05-13 12:19:15 -03:00
Kit Langton 6e25720307 test(tool): use Effect sleep in edit concurrency test (#27349) 2026-05-13 15:18:35 +00:00
kiloconnect[bot] d4e9951170 docs(kilo-docs): update mobile apps documentation
Update the mobile apps page to reflect that the Android app is now available on Google Play and provide a link for installation.

Added detailed information about mobile app capabilities, including session management, KiloClaw chat, and Cloud Agent spawning. Included new screenshots to illustrate the mobile interface and added a section for the iOS app waitlist.
2026-05-13 15:13:57 +00:00
Kit Langton ca723f1cbc effect(core): add stdin option to AppProcess.run; migrate snapshot+clipboard (#27224) 2026-05-13 11:10:23 -04:00
Kit Langton 650f67a05a chore: delete unused util/lock module (#27223) 2026-05-13 15:08:35 +00:00
opencode-agent[bot] 50dccac915 chore: generate 2026-05-13 15:06:14 +00:00
Kit Langton 02b8b0ff93 test: migrate file watcher test to Effect (#27346) 2026-05-13 15:04:30 +00:00
Kit Langton 76c91c6e33 test: migrate mcp oauth browser tests (#27345) 2026-05-13 15:04:02 +00:00
opencode-agent[bot] ca17ca85cd chore: update nix node_modules hashes 2026-05-13 15:02:16 +00:00
opencode-agent[bot] e7aed64949 chore: generate 2026-05-13 14:59:13 +00:00
Dax Raad d43124abe0 ignore: notes 2026-05-13 10:57:22 -04:00
Kit Langton 7404664827 refactor: migrate installation tests to testEffect (#27342) 2026-05-13 14:56:51 +00:00
Kit Langton 0b112e5bcf test: migrate permission task config tests (#27343) 2026-05-13 14:56:26 +00:00
Shoubhit Dash 268d758130 refactor(flags): route control-plane workspaces through runtime flags (#27337) 2026-05-13 20:22:30 +05:30
opencode-agent[bot] 72acdf0505 chore: generate 2026-05-13 14:50:34 +00:00
Shoubhit Dash e28ef7b57c refactor(flags): route sync workspaces through runtime flags (#27336) 2026-05-13 20:18:06 +05:30
opencode-agent[bot] 5b5376a3fa chore: generate 2026-05-13 14:47:40 +00:00
Kit Langton 766318a4cf effect(snapshot): migrate to AppProcess.run (#27189) 2026-05-13 10:46:14 -04:00
Kit Langton 8d5aa584b4 test(workspace): effectify sync start coverage (#27338) 2026-05-13 14:45:43 +00:00
Shoubhit Dash eed0eddc63 refactor(flags): route session workspaces through runtime flags (#27335) 2026-05-13 20:14:40 +05:30
Dax 8345152319 core: expose v2 model listing API (#25821) 2026-05-13 14:43:08 +00:00
Catriel Müller 2886183aaf refactor: move the command to the kilo folder 2026-05-13 11:33:00 -03:00
Brian Turcotte cdbae6c24c Merge pull request #10165 from Kilo-Org/brian/addBotDocs 2026-05-13 15:21:48 +01:00
Kit Langton bebe5442a5 chore: delete unused util/color module (#27331) 2026-05-13 14:02:17 +00:00
Kit Langton bc25342f34 chore: delete util/scrap module (#27330) 2026-05-13 14:01:19 +00:00
Kit Langton 762020f63a chore: delete unused util/network module (#27329) 2026-05-13 13:56:15 +00:00
Shoubhit Dash f13fc5a8a8 refactor(flags): route event system through runtime flags (#27323) 2026-05-13 17:44:09 +05:30
Marius d1a73a5878 fix(vscode): update custom provider docs link (#10208) 2026-05-13 12:09:59 +00:00
Marius 177f7df049 fix(vscode): reset todos on snapshot revert (#10206) 2026-05-13 13:51:13 +02:00
Shoubhit Dash 098bdd8ae2 refactor(flags): route plan mode through runtime flags (#27320) 2026-05-13 17:17:04 +05:30
Shoubhit Dash 4d205027ca refactor(flags): route scout through runtime flags (#27318) 2026-05-13 17:07:53 +05:30
opencode-agent[bot] 5975547c84 chore: generate 2026-05-13 11:19:45 +00:00
Shoubhit Dash 5b2b300602 fix(session): tighten http error contracts (#27308) 2026-05-13 16:48:18 +05:30
Vishal Kumar Singh d21635c904 docs: add issue template requirements and fix anchor links in CONTRIBUTING.md (#9266)
* docs: add issue template requirements and fix anchor links in CONTRIBUTING.md

* fix: align feature request docs with actual template fields

---------

Co-authored-by: Vishal Kumar Singh <singhvishalkr@gmail.com>
2026-05-13 13:00:38 +02:00
Catriel Müller 937ef8ec7f Merge pull request #10190 from Kilo-Org/alluring-pocket
fix(ui): avoid fetching provider icons during checks
2026-05-13 07:24:22 -03:00
opencode-agent[bot] d488e3fd2a chore: generate 2026-05-13 10:18:40 +00:00
Shoubhit Dash 809af5c590 fix(provider): type auth errors (#27301) 2026-05-13 15:47:13 +05:30
vimtor 733bd3c74e chore: activate low tps alerts 2026-05-13 12:12:03 +02:00
opencode-agent[bot] 374951bf60 chore: generate 2026-05-13 09:39:54 +00:00
Victor Navarro 2e94f505a4 chore: add low tps model alerts (#27055) 2026-05-13 09:38:31 +00:00
opencode-agent[bot] 4498fc983d chore: generate 2026-05-13 09:36:51 +00:00
Shoubhit Dash 2e7cf92c8b fix(worktree): type expected errors (#27296) 2026-05-13 15:05:30 +05:30
Shoubhit Dash ccf93f3523 fix(session): make message reads effectful (#27291) 2026-05-13 14:40:12 +05:30
Marius 1ea86fb6e1 fix(gateway): strip transient Responses item ids (#10197)
* fix(gateway): strip transient Responses item ids

* fix(gateway): handle invalid Responses request bodies

* fix(gateway): avoid placeholder host in responses sanitizer
2026-05-13 11:02:18 +02:00
Marian Alexandru Alecu 14f5d36388 Merge pull request #10198 from Kilo-Org/fix/cli-track-review-telemetry
fix(cli): track /review completions in telemetry
2026-05-13 11:57:36 +03:00
Shoubhit Dash 4b041716fc fix(server): remove storage not found defect fallback (#27287) 2026-05-13 14:15:53 +05:30
Shoubhit Dash b0dc8e4638 fix(session): use typed message reads in tools (#27280) 2026-05-13 14:12:51 +05:30
Marius 174d467a49 fix(agent-manager): exclude local state on startup (#10196) 2026-05-13 10:39:07 +02:00
Alex Alecu 4f13e85913 fix(cli): track /review completions in telemetry 2026-05-13 11:38:57 +03:00
OpeOginni 596f241db5 fix(app): enhance error handling by unwrapping SDK-wrapped errors in formatServerError (#27061) 2026-05-13 13:53:10 +05:30
Luke Parker 3a810fcb9a perf(ui): render icons through an svg sprite (#26950) 2026-05-13 17:57:13 +10:00
opencode-agent[bot] e5af7ab99a chore: generate 2026-05-13 07:53:28 +00:00
Shoubhit Dash f01c6b3e37 fix(session): type message list not found errors (#27275) 2026-05-13 13:22:12 +05:30
Shoubhit Dash fed043a1ad fix(session): add typed message lookup wrappers (#27269) 2026-05-13 13:04:07 +05:30
Truffle 69c158f3a7 fix(vscode): keep custom provider picker open after partial add
The picker called setFetchedModels(undefined) unconditionally after
"Add Selected", wiping the remaining un-picked models. Users had to
re-fetch to add a subset twice in a row.

Filter the picked IDs out of fetchedModels and clear the selection.
Only close the picker when every fetched model has been added.

Refs: #10139
2026-05-13 07:11:30 +00:00
Shoubhit Dash e9a29e4908 fix(storage): type not found errors (#27265) 2026-05-13 12:25:04 +05:30
Brendan Allan d93a06431e refactor(app): clarify session_working logic in child-store (#27267) 2026-05-13 14:36:00 +08:00
opencode-agent[bot] 9fe912439b chore: generate 2026-05-13 05:41:29 +00:00
Shoubhit Dash dd46fddf22 test(cli): cover config json diagnostics (#27257) 2026-05-13 05:40:12 +00:00
opencode-agent[bot] d3d7b44e73 chore: generate 2026-05-13 05:32:32 +00:00
Shoubhit Dash 367665dba2 fix(cli): render tagged config errors (#27256) 2026-05-13 11:01:18 +05:30
Brendan Allan 4aaece29d9 feat(desktop): reintroduce AppStream MetaInfo for Linux desktop builds (#27253) 2026-05-13 13:14:39 +08:00
opencode-agent[bot] bed88ce50e chore: generate 2026-05-13 04:56:52 +00:00
Aiden Cline 28204720dc temporarily revert: preserve permission ordering by accepting a layered array (#27258) 2026-05-12 23:55:45 -05:00
Brendan Allan 10b99b2f5a build(ci): use native arm64 runner for desktop linux arm64 builds (#27250) 2026-05-13 12:52:18 +08:00
Shoubhit Dash 90c13d93f3 fix(server): hide unknown 500 details (#27251) 2026-05-13 10:15:28 +05:30
Aiden Cline 67e6408cef fix: disable image module for now (#27248) 2026-05-12 23:21:31 -05:00
Brendan Allan 3be65dff46 fix: add optional chaining to session_status access (#27247) 2026-05-13 12:09:36 +08:00
Catriel Müller edf91229a5 Merge pull request #8349 from mmospanenko/feature/7507-context
feat(config): add {file:...} syntax support for agent markdown prompts
2026-05-13 00:46:45 -03:00
opencode-agent[bot] c5961205ef chore: update nix node_modules hashes 2026-05-13 03:44:43 +00:00
Catriel Müller b04e1a1131 fix: kilocode markers 2026-05-13 00:36:33 -03:00
Catriel Müller 6281664038 fix: md scalar 2026-05-13 00:33:08 -03:00
Catriel Müller 5b61045de6 refactor: add kilocode markers 2026-05-13 00:29:16 -03:00
Brendan Allan ad6a8a1850 fix: use htmlrewriter2 instead of HTMLRewriter for node compat (#26309) 2026-05-13 03:28:08 +00:00
Kit Langton 46daede10c test(pty): migrate output isolation to Effect runner (#27235) 2026-05-13 03:25:52 +00:00
Catriel Müller 2d5f6f3478 refactor: rebase from main 2026-05-13 00:23:04 -03:00
Kit Langton 8249baeb4e test(pty): migrate shell tests to Effect runner (#27238) 2026-05-13 03:20:20 +00:00
Frank 77e51b0a32 zen: stat worker 2026-05-12 23:19:25 -04:00
Aarav Sharma d9d460c1af fix: add kilocode_change markers to dialog-alert.tsx for multi-line message support 2026-05-12 21:16:08 -06:00
opencode-agent[bot] 784796e27a chore: generate 2026-05-13 03:14:19 +00:00
Kit Langton 913ea36ae6 test(server): scope MCP HttpApi handler (#27226) 2026-05-13 03:13:05 +00:00
Kit Langton 68c4951318 test(mcp): migrate lifecycle tests to Effect runner (#27205) 2026-05-13 03:05:30 +00:00
Kit Langton 6d3b2fe08b test(server): stabilize SDK project skill prompt test (#27239) 2026-05-13 03:01:29 +00:00
Kit Langton d88cef6ada test(mcp): migrate headers tests to Effect runner (#27237) 2026-05-13 02:56:29 +00:00
Kit Langton 8370d0cef4 test(server): migrate httpapi ui tests to effect runner (#27236) 2026-05-13 02:55:36 +00:00
Kit Langton 0b67e1a046 test(server): migrate session messages to Effect runner (#27234) 2026-05-13 02:55:33 +00:00
Catriel Müller 109d59a312 refactor: add support for all markdown files 2026-05-12 23:54:43 -03:00
Kit Langton 485ecbde18 test(server): migrate global session list to effect runner (#27233) 2026-05-13 02:52:59 +00:00
Kit Langton 03cf833236 test(provider): migrate DigitalOcean provider test to Effect runner (#27232) 2026-05-13 02:51:11 +00:00
Catriel Müller 8d23e17141 refactor: isolate kilochange 2026-05-12 23:47:46 -03:00
Kit Langton e3684f36f9 chore: delete unused util/abort module + orphaned leak test (#27230) 2026-05-13 02:46:41 +00:00
Kit Langton 13fbc9acfc docs(effect): add cleanup roadmap (#27228) 2026-05-13 02:45:26 +00:00
Maksym Mospanenko 3ca9941bbf feat(config): add escapeJson parameter to substitute for raw content handling
Add optional `escapeJson` parameter to `ConfigPaths.substitute` to control
whether file content should be JSON-escaped. When `false`, multiline content
and special characters are preserved as-is, which is required for agent
markdown prompts that need raw file content rather than escaped strings.

Update agent config processing to pass `escapeJson: false` when substituting
file content into markdown prompts, ensuring proper handling of multiline
files without unwanted escape sequences.

Add comprehensive test coverage for the new parameter and existing
substitution functionality.
2026-05-12 23:44:06 -03:00
Kit Langton 588b5240d0 test(server): migrate worktree endpoint repro to effect runner (#27220) 2026-05-13 02:43:41 +00:00
qunqin 80543fb5dc fix(desktop): resolve login shell when loading env (#26449)
Co-authored-by: Brendan Allan <14191578+Brendonovich@users.noreply.github.com>
2026-05-13 10:40:36 +08:00
Maksym Mospanenko 80edeee58f feat(config): add {file:...} syntax support for agent markdown prompts
Enable file content substitution in agent configuration prompts using the
existing `ConfigPaths.substitute` utility. This allows agent markdown files
to reference external file contents via `{file:path}` syntax, with missing
files resolving to empty strings.

Export `substitute` function from ConfigPaths to support agent config
processing.
2026-05-12 23:39:07 -03:00
Kit Langton ff16eb8dea test(project): use Deferred for dispose handoff (#27225) 2026-05-13 02:32:50 +00:00
Aarav Sharma a7c12dca33 fix(tui): handle newlines in DialogAlert messages
The DialogAlert component was rendering '\n' literally instead of
converting it to actual line breaks. This fix:
- Imports For from solid-js for proper list rendering
- Uses flexDirection='column' to stack lines vertically
- Replaces escaped \n with actual newlines before splitting

This affects the Teams tab message which displays:
'You're not a member of any teams.\nVisit https://app.kilo.ai...'
2026-05-12 20:32:34 -06:00
Kit Langton 91a9514ed0 test(server): use AppFileSystem in provider tests (#27227) 2026-05-13 02:32:30 +00:00
Brendan Allan 2f4dce789f app: use session_working helper to simplify loading states (#27212) 2026-05-13 10:27:05 +08:00
opencode-agent[bot] b43147440c chore: generate 2026-05-13 02:16:48 +00:00
Kit Langton c96a77c60b test(pty): migrate session tests to Effect runner (#27222) 2026-05-13 02:15:38 +00:00
opencode-agent[bot] 6cd2a743b5 chore: generate 2026-05-13 02:10:48 +00:00
Luke Parker 0f8517208b perf(app): unmount closed review panel (#27221) 2026-05-13 12:09:34 +10:00
Kit Langton 0879f5e22d test(server): migrate project init git test to Effect runner (#27218) 2026-05-13 02:08:55 +00:00
opencode-agent[bot] 16333b5222 chore: generate 2026-05-13 02:08:16 +00:00
Kit Langton e16f4b6b99 test(permission): migrate next tests to effect runner (#27217) 2026-05-13 02:06:58 +00:00
Kit Langton 6fbb08b724 test(project): migrate instance tests to effect runner (#27215) 2026-05-13 02:06:16 +00:00
Kit Langton a26a2a95bd test(server): migrate provider httpapi test to effect runner (#27216) 2026-05-13 02:05:52 +00:00
Kit Langton 7f9268f147 test(server): migrate global bus helper to Effect (#27214) 2026-05-13 02:04:46 +00:00
Kit Langton 5c7af682b9 test(server): migrate MCP HTTP API test to Effect runner (#27213) 2026-05-13 02:03:52 +00:00
Kit Langton 911b2ac088 test(session): migrate prompt tests to effect runner (#27209) 2026-05-13 01:51:35 +00:00
Kit Langton da689d77c4 effect: move tool flags into RuntimeFlags (#27198) 2026-05-12 21:45:53 -04:00
opencode-agent[bot] c9df833d2c chore: generate 2026-05-13 01:45:20 +00:00
Aiden Cline c2b1ebd9dc feat: update pricing schema for models to ensure more accurate cost tracking (#27184) 2026-05-12 20:44:06 -05:00
Kit Langton d1356f509e test(server): migrate HTTP API SDK test to Effect runner (#27208) 2026-05-13 01:43:35 +00:00
opencode-agent[bot] 69feb224ba chore: update nix node_modules hashes 2026-05-13 01:43:08 +00:00
Kit Langton 7d9ac713a9 test(config): migrate TUI config tests to Effect runner (#27206) 2026-05-13 01:42:33 +00:00
Kit Langton 4d9c675b00 test(server): migrate httpapi session test to effect runner (#27207) 2026-05-13 01:40:25 +00:00
Kit Langton 604de70689 test(server): migrate experimental HttpApi test to Effect (#27204) 2026-05-13 01:40:07 +00:00
opencode-agent[bot] 673226d214 chore: generate 2026-05-13 01:39:46 +00:00
Kit Langton 2447f42294 test(server): migrate session select to effect runner (#27203) 2026-05-13 01:38:38 +00:00
Frank 005e64e7d8 zen: stat worker 2026-05-12 21:37:41 -04:00
Kit Langton 8310e7df70 test(server): migrate missing patch diff test (#27202) 2026-05-13 01:37:34 +00:00
Kit Langton c4e676b8a0 fix(task): preserve subagent self permissions (#27201) 2026-05-13 01:36:02 +00:00
opencode-agent[bot] c2c40b5b61 chore: generate 2026-05-13 01:28:35 +00:00
Kit Langton 456495289e fix(httpapi): drop redundant InstanceRef/WorkspaceRef in session prompt handler (#27196) 2026-05-13 01:27:08 +00:00
Sebastian d6367853ae Add TUI notifications and attention sounds (disabled by default) (#26980) 2026-05-13 03:26:25 +02:00
opencode-agent[bot] adccab5970 chore: generate 2026-05-13 01:26:12 +00:00
Kit Langton b6d3fa09bc effect(core): add AppProcess service (Phase 1) (#27178) 2026-05-13 01:24:53 +00:00
Kit Langton 31e2d72bf7 test(worktree): scope created worktree cleanup (#27191) 2026-05-12 21:09:58 -04:00
Kit Langton b7c6fa611f effect: add RuntimeFlags service (#27181) 2026-05-12 20:59:02 -04:00
opencode-agent[bot] d0b8ff0f22 chore: update nix node_modules hashes 2026-05-13 00:57:32 +00:00
Kit Langton 59b976b954 Remove TUI logo sound effects (#27183) 2026-05-12 20:37:16 -04:00
Catriel Müller 25aae795a2 fix(ui): avoid fetching provider icons during checks 2026-05-12 21:32:44 -03:00
Luke Parker d1640c075b fix(app): use session status for busy state (#27166) 2026-05-13 10:25:28 +10:00
Kit Langton 17d4c366e6 test(worktree): dispose created instances before removal (#27182) 2026-05-12 20:23:20 -04:00
Kit Langton d0844c600b test(worktree): use timeoutOrElse for ready wait (#27180) 2026-05-12 20:14:05 -04:00
Dax Raad 1d243ce25a harden cache usage 2026-05-12 20:06:46 -04:00
Kit Langton d8c8322ddf test: migrate worktree tests to effect runner (#27177) 2026-05-12 19:55:07 -04:00
Kit Langton 1b6599f411 test(plugin): use noop dependency boundaries (#27148) 2026-05-12 19:53:46 -04:00
Aarav Sharma 0acf36b4c8 chore: add @internal JSDoc to test-only helper 2026-05-12 17:50:45 -06:00
opencode-agent[bot] 937a3c10b3 chore: generate 2026-05-12 23:49:28 +00:00
Kit Langton 72ce24c200 test: migrate effect cmd ALS test (#27173) 2026-05-12 23:48:17 +00:00
Kit Langton 3301fad8cd test: migrate app runtime logger effect tests (#27176) 2026-05-12 23:47:49 +00:00
Kit Langton 9c54255aeb fix: migrate sync http api test to effect runner (#27175) 2026-05-12 23:47:14 +00:00
Kit Langton b0674b473f test: migrate session action route to effect runner (#27174) 2026-05-12 23:46:51 +00:00
Kit Langton ded4da735b test: migrate webfetch tool tests to effect runner (#27171) 2026-05-12 23:46:23 +00:00
Kit Langton 2c334d9242 Migrate schema error body tests to Effect runner (#27172) 2026-05-12 23:46:19 +00:00
Kit Langton 81dd46abec test: migrate websearch tests to effect runner (#27170) 2026-05-12 23:45:01 +00:00
Aarav Sharma 1403b66092 test: add regression test for cancel memory leak
Adds a test that verifies cancel() on a session with no active tail
does not leave stale entries in the internal maps (versions, targets,
latest, activeSince). Also adds _hasInternalState() debug helper to
verify map cleanup.
2026-05-12 17:43:15 -06:00
opencode-agent[bot] baef5cd43b chore: generate 2026-05-12 22:11:13 +00:00
Andrew Suffield 65368f609d fix: preserve permission ordering by accepting a layered array (#23214)
Co-authored-by: Andrew Suffield <asuffield@cloudflare.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-05-12 17:09:06 -05:00
Kirill Kalishev cb3ffada7b Merge branch 'main' into glaze-nickel 2026-05-12 17:52:53 -04:00
Kirill Kalishev 55abf13cfa Merge pull request #10095 from Kilo-Org/ionized-emmental
fix(vscode,cli): sync mode model selection and restore plan follow-up picker
2026-05-12 17:52:31 -04:00
opencode-agent[bot] 2cb697b720 chore: generate 2026-05-12 21:24:39 +00:00
Aiden Cline cb511f78ff fix(plugin): preserve tool attachments (#27157) 2026-05-12 16:23:15 -05:00
Musa 159964b172 feat(plugin): add DigitalOcean OAuth + Inference Routers (#26095) 2026-05-12 16:22:40 -05:00
Kit Langton d9f9f1553b test: use Effect file services in migrated tests (#27154) 2026-05-12 20:48:07 +00:00
Kit Langton 0fb55b4f1a test(project): migrate global project tests to Effect runner (#27142) 2026-05-12 20:45:39 +00:00
Kit Langton 3c34f6704b test: migrate auth override plugin test (#27140) 2026-05-12 20:41:34 +00:00
Kit Langton 4cf088ae84 test: migrate instance bootstrap to Effect runner (#27144) 2026-05-12 20:34:12 +00:00
Aiden Cline ca28dd02ec fix(compaction): restore tail turns after summarization (#27145) 2026-05-12 15:33:16 -05:00
Kit Langton 2017dc165c test: migrate negative tokens regression to Effect runner (#27141) 2026-05-12 20:32:23 +00:00
Kit Langton dc9d6a08cb test: migrate agent color config tests (#27139) 2026-05-12 20:31:38 +00:00
Kit Langton af4ab017cb test(session): migrate structured output integration test (#27143) 2026-05-12 20:30:35 +00:00
Kit Langton dd14413a64 Preserve native LLM tool context (#27116) 2026-05-12 16:16:58 -04:00
Frank b9e7cbf13c sync 2026-05-12 16:06:19 -04:00
Kit Langton 3f74abc6cd test: simplify Effect migration follow-ups (#27136) 2026-05-12 20:00:54 +00:00
Kit Langton e0d0fe1ff7 test(bus): migrate integration tests to Effect runner (#27132) 2026-05-12 19:58:54 +00:00
opencode-agent[bot] f7dbb4dac4 chore: generate 2026-05-12 19:48:35 +00:00
Kit Langton c5849e56cc test(project): migrate project tests to Effect runner (#27134) 2026-05-12 19:47:17 +00:00
opencode-agent[bot] e46ab34d27 chore: generate 2026-05-12 19:44:26 +00:00
Kit Langton 1d4613006a test(project): migrate instance tests to Effect runner (#27130) 2026-05-12 19:41:46 +00:00
Kit Langton 71040c54aa test(plugin): migrate loader shared tests to Effect runner (#27129) 2026-05-12 19:41:44 +00:00
Kit Langton fec78154b5 test(bus): migrate bus tests to Effect runner (#27131) 2026-05-12 19:41:24 +00:00
Kit Langton 3e2ec192cf test(question): remove WithInstance bridge (#27128) 2026-05-12 19:40:01 +00:00
Kit Langton ec960da42a test(skill): migrate discovery tests to Effect runner (#27127) 2026-05-12 19:39:03 +00:00
Shoubhit Dash 45de4975de refactor(core): resolve default agent info (#27125) 2026-05-13 01:08:30 +05:30
Kit Langton e540daabc4 test(agent): migrate plan bypass tests to Effect runner (#27119) 2026-05-12 14:56:01 -04:00
opencode-agent[bot] f3c91c5f96 chore: generate 2026-05-12 18:52:25 +00:00
Kit Langton 549b146ea6 Stabilize session event tests (#27117) 2026-05-12 18:51:18 +00:00
Kit Langton 3c7569d852 test(tool): migrate external directory tests to Effect runner (#27122) 2026-05-12 18:50:56 +00:00
Kit Langton 8f1ded9e08 test(file): migrate ripgrep tests to Effect runner (#27120) 2026-05-12 18:50:26 +00:00
Kit Langton b668af29dd test(git): migrate git tests to Effect runner (#27121) 2026-05-12 18:50:07 +00:00
Kit Langton ec30ff9120 test(agent): migrate agent tests to Effect runner (#27118) 2026-05-12 18:49:30 +00:00
opencode-agent[bot] a3714d4399 chore: update nix node_modules hashes 2026-05-12 18:27:42 +00:00
Kit Langton 822eec0d62 Fix runner cancel completion (#27115) 2026-05-12 14:22:56 -04:00
Kit Langton 3974520742 Migrate UI cancel error to tagged error (#27112) 2026-05-12 18:09:00 +00:00
Kit Langton fda37b3609 Remove Zod from app global SDK (#27111) 2026-05-12 14:02:12 -04:00
Josh Holmer c5903fdc09 fix(vscode): fix codebase indexing status update on windows 2026-05-12 13:56:06 -04:00
Kit Langton 6b950b666a Remove Zod from core dependencies (#27107) 2026-05-12 13:51:08 -04:00
Kit Langton bc4fdb8370 Remove unused app ID schema (#27105) 2026-05-12 13:09:23 -04:00
Kit Langton 2b9af91568 Remove Zod from core log (#27102) 2026-05-12 13:08:57 -04:00
Kit Langton 53a3f95088 Make core fn Zod import type-only (#27103) 2026-05-12 12:58:50 -04:00
Dax Raad 5a4596c879 core: Wait 3 days before installing new package versions to reduce supply chain risk 2026-05-12 12:50:32 -04:00
opencode-agent[bot] 0ce614a280 chore: generate 2026-05-12 16:46:35 +00:00
Kit Langton e8125e9b42 test(server): migrate session list tests to Effect runner (#27101) 2026-05-12 16:45:05 +00:00
Kit Langton a7b5041674 test(file): migrate fsmonitor tests to Effect runner (#27099) 2026-05-12 16:44:04 +00:00
Kit Langton a16789dfdd test(tool): migrate apply patch tests to Effect runner (#27100) 2026-05-12 16:43:33 +00:00
Kit Langton 8115004c73 test(file): migrate path traversal tests to Effect runner (#27098) 2026-05-12 16:42:49 +00:00
Kit Langton ec4fdaf8e9 test(tool): migrate tool define tests to Effect runner (#27097) 2026-05-12 16:42:19 +00:00
Shoubhit Dash 3dc2c1d81c fix(session): preserve usage update timestamps (#27094) 2026-05-12 22:10:28 +05:30
Kit Langton d658e1e350 Remove local MCP Zod schema (#27095) 2026-05-12 12:38:27 -04:00
opencode-agent[bot] 30e3fa1de9 chore: generate 2026-05-12 16:33:06 +00:00
Aiden Cline 23f8b3eb3e fix: annotate Effect log metadata (#27093) 2026-05-12 11:31:18 -05:00
Imanol Maiztegui 8ab58a66f3 chore: remove unused electron trusted dependency (#10186) 2026-05-12 18:07:01 +02:00
Kit Langton c7d8b0d565 Delete named schema error wrapper (#27066) 2026-05-12 12:04:28 -04:00
Rietie feb8d5a09e Merge pull request #10185 from Kilo-Org/docs/seo-title-tags-automate-tools
docs: add SEO title and description frontmatter to automate tools pages
2026-05-12 17:57:56 +02:00
Kit Langton 257fcafc83 test(tool): migrate edit concurrency test (#26983) 2026-05-12 11:52:31 -04:00
Rietie 57fbfe798e Apply suggestions from code review
Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>
2026-05-12 17:10:54 +02:00
kiloconnect[bot] 3c34488cb5 docs: add SEO title and description frontmatter to automate tools pages 2026-05-12 15:00:59 +00:00
Catriel Müller cf6eedd582 Merge pull request #8754 from shssoichiro/issue-7861
ux(cli): visually show when applied patch skips sections
2026-05-12 11:57:23 -03:00
Imanol Maiztegui b255d10854 fix(config): remove unused trusted dependencies from package.json (#10184)
Strip esbuild, node-pty, protobufjs, and tree-sitter packages from
the trustedDependencies list as they are no longer required, leaving
only electron.
2026-05-12 14:52:17 +00:00
Imanol Maiztegui 6f34cadc8b Add minimum release age to bun install config (#10182)
* chore(deps): add minimum release age to bun install config

Set `minimumReleaseAge` to 410520 seconds (~4.75 days) to avoid
installing recently published package versions that may be unstable
or malicious.

* Update bunfig.toml

Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>

---------

Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>
2026-05-12 14:27:23 +00:00
Catriel Müller 305ec5c107 Merge branch 'main' into issue-7861 2026-05-12 11:21:32 -03:00
kiloconnect[bot] 0026268d5d fix(docs): add px unit to flowDiagram height to prevent CSS collapse 2026-05-12 14:20:39 +00:00
John Fawcett da1a4ad049 docs(wasteland): add missing placeholder screenshot images
Add three missing placeholder PNGs for wasteland documentation pages:
- gt-bead-with-wasteland-link.png (workflow.md)
- wl-admin-review-inbox.png (admin.md)
- wl-post-form.png (admin.md)

All 10 referenced wasteland images now exist. Build passes with zero broken links.
2026-05-12 14:20:27 +00:00
John Fawcett 67b7d8d789 docs(wasteland): add missing TODO(screenshots) comments to index.md 2026-05-12 14:20:12 +00:00
Kit Langton 04aafe2bfc test(provider): migrate more config-backed cases (#27067) 2026-05-12 14:19:49 +00:00
opencode-agent[bot] 0fd0facc44 chore: generate 2026-05-12 13:31:03 +00:00
Mark IJbema cc71a0dced Merge pull request #10026 from Kilo-Org/mark/restore-root-package-json-entries
fix: restore root package.json entries dropped by upstream-compat
2026-05-12 15:29:45 +02:00
Kit Langton 0de3b67cc0 test(tool): migrate shell tests to Effect runner (#26968) 2026-05-12 13:28:46 +00:00
Kit Langton 28f38fc871 Remove Zod from named errors (#26982) 2026-05-12 09:20:15 -04:00
nimgrim af902eb359 fix: catch EEXIST from recursive mkdir on Windows (#9794)
* fix: catch EEXIST from recursive mkdir on Windows

fs.mkdir with { recursive: true } can still throw EEXIST on Windows
when the target directory is backed by an NTFS reparse point (OneDrive),
a directory junction, or a WSL-served path. libuv's recursive walk
doesn't treat these as regular directories, so mkdir with recursive:true
attempts to create an already-existing path segment and fails.

This adds a defensive EEXIST catch at both directory-creation origins:
- AppFileSystem.ensureDir / writeWithDirs (snapshots, config, plans)
- Encoding.write (all tool writes and edits)

No functional change on Linux/macOS where EEXIST is never thrown from
recursive mkdir.

Fixes #9618, #9755

* fix: remove extra arg from mkdirSafe call, add unit tests

* docs(kilo-docs): update auto-generated source links

Add 2 new GitHub issue references (9618, 9755) from encoding.ts
and update URL count from 84 to 86.

---------

Co-authored-by: nimgrim <nimgrim@users.noreply.github.com>
Co-authored-by: Imanol Maiztegui <imanol.mzd@gmail.com>
2026-05-12 13:17:49 +00:00
Joshua Lambert 3ea3a1667d Merge pull request #10157 from ScuttleBot/docs/update-2026-05-11
docs: add DeepSeek to BYOK providers, update default model to free
2026-05-12 08:19:59 -04:00
Brian Turcotte 1d97a83f26 docs: remove cross-repo section from GitHub page 2026-05-12 12:21:17 +01:00
Shoubhit Dash 8feb4a31c7 feat(core): add background job service (#27033) 2026-05-12 15:22:38 +05:30
Simon Klee 8f05bbfaa6 prompt: fix cursor math for wide characters (#27017)
String.length counts code points, not display columns, so CJK
characters and emoji that occupy two terminal cells caused
misaligned cursors, broken mention triggers, and incorrect
history restoration offsets.

Use Bun.stringWidth for now, we need an alternative for this.

Fix #26716
Close #26922
2026-05-12 11:45:28 +02:00
Brendan Allan d276d96cdf fix(app): remember selected model variant when switching sessions/projects (#27029) 2026-05-12 17:44:50 +08:00
Luke Parker caf1151cb5 refactor(app): centralize sync query options (#25941)
Co-authored-by: Brendan Allan <git@brendonovich.dev>
Co-authored-by: Brendan Allan <14191578+Brendonovich@users.noreply.github.com>
2026-05-12 16:40:21 +08:00
Brendan Allan ff38bbeeeb refactor(desktop): remove configureEnv callback from spawnLocalServer (#27022) 2026-05-12 16:39:56 +08:00
Marius 64e45eaba3 fix(vscode): use VS Code placeholder color for input fields (#10159)
Switches all webview input ::placeholder rules to var(--vscode-input-placeholderForeground, var(--text-weaker)) so placeholders pick up the VS Code-native placeholder color and stay visually distinct from typed values across Settings (including indexing fields), Agent Manager dialogs, prompt input, model search and kiloclaw.

Supersedes #10085 by sylwester-liljegren.
2026-05-12 10:37:23 +02:00
Marius e805d2f756 fix(vscode): refresh checkpoint header stats (#10156)
* fix(vscode): refresh checkpoint header stats

* test(vscode): update story session mock

* chore: update kilo-vscode visual regression baselines

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-12 10:36:56 +02:00
Shoubhit Dash 2481dde36d chore: remove codesearch tool (#27019) 2026-05-12 13:44:02 +05:30
Matt H 61174b7878 fix(tui): make websearch provider label reactive (#26943) 2026-05-12 08:01:16 +00:00
Marius d8245a0ceb fix(ui): restore Mermaid node labels stripped by DOMPurify (#10158)
DOMPurify 3.1.7+ removed foreignObject from default HTML integration
points, so the inner <div>/<span>/<p> Mermaid renders inside foreignObject
were stripped, leaving every shape with empty text. Restore it via
HTML_INTEGRATION_POINTS.
2026-05-12 07:49:01 +00:00
Marius 8af638e7e2 Fix expired Codex auth recovery (#10136)
* fix: recover expired Codex auth

* fix: minimize Codex auth shared changes

* fix: format Codex auth prompt
2026-05-12 09:27:32 +02:00
Ligia Zanchet 9fd631c43c Merge pull request #10078 from Kilo-Org/LigiaZ-patch-1
Update auto-docs workflow for PR handling
2026-05-12 08:57:23 +02:00
opencode-agent[bot] 907281a80a chore: generate 2026-05-12 06:44:09 +00:00
Brendan Allan 3992e2a76b feat(app): add ctrl/cmd+number keybinds to switch projects (#26280) 2026-05-12 14:43:07 +08:00
opencode-agent[bot] ea6eabe1d9 chore: generate 2026-05-12 05:20:22 +00:00
Dax 36d40fee4d Track session usage totals (#26644) 2026-05-12 01:18:57 -04:00
James Long e36bc20f84 fix(tui): fix flicker by avoiding redundant workspace session sync (#26997) 2026-05-12 00:30:03 -04:00
Aiden Cline 487575773d feat: create global opencode.jsonc if no configs exist (#26992) 2026-05-11 23:13:22 -05:00
opencode-agent[bot] 5cc84800dc chore: generate 2026-05-12 03:43:40 +00:00
James Long 2b432d9e03 fix(tui): scope events by project (#26936) 2026-05-11 23:42:04 -04:00
opencode-agent[bot] 591eb667d5 chore: generate 2026-05-12 03:26:47 +00:00
Aiden Cline ddce776225 ignore: add codebase skill to repo (#26990) 2026-05-12 03:25:41 +00:00
Aiden Cline 1a28924ed8 fix: grep external directory permission evaluation (#26958) 2026-05-11 21:47:35 -05:00
Brendan Allan 871374804f fix(app): use keyed Show for project in layout (#26985) 2026-05-12 10:39:36 +08:00
Brendan Allan 78a2639e5e fix(app): open next project when closing current one (#26987) 2026-05-12 10:38:21 +08:00
Kit Langton cc1835e0db test(provider): migrate config-backed cases to Effect runner (#26969) 2026-05-12 02:23:52 +00:00
Kit Langton 0f5d4ae648 test(project): stabilize VCS branch update test (#26979) 2026-05-11 22:12:07 -04:00
Kit Langton ce72020750 test(tool): migrate edit tests to Effect runner (#26977) 2026-05-11 21:42:17 -04:00
Kit Langton c43d606f8e agent: use Effect schema for generated agent object (#26973) 2026-05-11 21:42:04 -04:00
Kit Langton 1007630347 Migrate runtime validators to Effect Schema (#26975) 2026-05-11 21:41:56 -04:00
Kit Langton 9e8274d2da Remove internal Zod schemas (#26974) 2026-05-11 21:40:44 -04:00
Kit Langton 74aa735e6a fix(tui): guard prompt submit against concurrent invocation (#26972) 2026-05-12 01:35:28 +00:00
Kit Langton 8030a6c187 Emit LLM stream lifecycle events (#26971) 2026-05-11 21:31:48 -04:00
Kit Langton e5aa5161f2 Remove effect-zod bridge (#26956) 2026-05-11 21:14:55 -04:00
Kit Langton abb1ee6278 docs(test): add Effect migration orchestration notes (#26963) 2026-05-11 20:59:51 -04:00
Kit Langton c4003579bb test(project): migrate VCS tests to Effect runner (#26965) 2026-05-11 20:59:34 -04:00
Kit Langton 0d9c534184 test(snapshot): migrate snapshot tests to Effect runner (#26964) 2026-05-11 20:59:31 -04:00
Aiden Cline 5773d43cbf ci: GitHub Actions dependencies (#26962) 2026-05-11 19:50:35 -05:00
opencode-agent[bot] e0e9414cbd chore: generate 2026-05-12 00:41:30 +00:00
Kit Langton 44edb639c2 test(session): migrate message pagination to Effect runner (#26957) 2026-05-12 00:40:23 +00:00
Kit Langton fbd52ca2f4 test(file): migrate file tests to Effect runner (#26959) 2026-05-12 00:39:31 +00:00
opencode-agent[bot] 8015ff7ca5 chore: generate 2026-05-12 00:33:34 +00:00
Kit Langton ec9584177f docs(test): plan Effect test migration (#26954) 2026-05-11 20:32:27 -04:00
Kit Langton 061efc6cf2 Fix run JSON output draining (#26955) 2026-05-11 20:30:23 -04:00
Brendan Allan fe374aea46 feat(app): persist todo dock collapsed state (#26953) 2026-05-11 23:59:38 +00:00
Kit Langton 46edc98f10 Validate TUI config with Effect Schema (#26952) 2026-05-11 23:51:45 +00:00
Kit Langton fdeb2748e1 test(agent): isolate plugin agent regression (#26948) 2026-05-11 19:38:54 -04:00
Kit Langton 59e6967b8f Generate config schema from Effect Schema (#26939) 2026-05-11 19:24:58 -04:00
opencode-agent[bot] 0c619cb59c chore: generate 2026-05-11 22:34:04 +00:00
Frank 0cf90109dc zen: tps rate limit 2026-05-11 18:32:39 -04:00
Brian Turcotte 95e3a6ae9b docs: fix internal links to include /docs prefix 2026-05-11 23:29:00 +01:00
Brian Turcotte b81349e5e9 docs: fix internal links to use relative paths in slack page 2026-05-11 23:26:42 +01:00
Brian Turcotte badd124c21 docs: add Kilo Connect pages for Slack, GitHub, and Linear integrations 2026-05-11 23:20:24 +01:00
kilo-maintainer[bot] 645e805250 release: v7.2.52 2026-05-11 21:50:17 +00:00
Kit Langton 812668ae2f Generate TUI schema from Effect Schema (#26945) 2026-05-11 17:50:14 -04:00
Kit Langton a5c35bf182 Avoid bootstrapping server plugins from TUI plugin runtime (#26938) 2026-05-11 17:32:16 -04:00
opencode-agent[bot] bdd5a80886 chore: update nix node_modules hashes 2026-05-11 21:28:49 +00:00
Kit Langton fd65d29dcc Drop unused opencode Zod statics (#26935) 2026-05-11 17:14:18 -04:00
Kit Langton d3caac5270 chore(deps): upgrade effect to 4.0.0-beta.65 (#26934) 2026-05-11 21:09:57 +00:00
kirillk 9a08ccf576 fix(jetbrains): address history review gaps 2026-05-11 16:59:10 -04:00
kirillk 25df75d177 fix(vscode): render plan exit as file link 2026-05-11 16:58:39 -04:00
Kit Langton fe7ca3421e Drop Config Info Zod static (#26933) 2026-05-11 16:49:22 -04:00
Kit Langton cc95197d72 Drop prompt input Zod statics (#26923) 2026-05-11 16:49:08 -04:00
James Long 9067218b74 fix(core): always start worktrees as detached (#26931) 2026-05-11 16:22:25 -04:00
Kit Langton 42a0453945 Drop small session Zod statics (#26921) 2026-05-11 16:12:31 -04:00
Kit Langton 4d9eb6c320 Validate structured output tests with Effect Schema (#26919) 2026-05-11 16:11:25 -04:00
Kit Langton c060c436b6 Drop LSP config Zod statics (#26920) 2026-05-11 16:11:11 -04:00
Kit Langton 45adfedd64 Drop unused domain Zod statics (#26927) 2026-05-11 16:10:58 -04:00
kirillk 0833ef4221 feat: support JetBrains history session actions 2026-05-11 15:47:17 -04:00
scuttlebot 93666cc58d docs: add DeepSeek to BYOK providers, update default model to free
- Add DeepSeek to the Standard API keys list on the BYOK page (Kilo-Org/cloud#3167)
- Update auto-model-tiers architecture doc to reflect the new default of kilo-auto/free for all new users (Kilo-Org/kilocode#10151)
2026-05-11 19:32:16 +00:00
Kirill Kalishev db097e44db Merge branch 'main' into ionized-emmental 2026-05-11 14:02:54 -04:00
opencode-agent[bot] 0bced8ec96 chore: update nix node_modules hashes 2026-05-11 17:32:56 +00:00
Kit Langton 8d9b9719be Drop unused small ID Zod statics (#26908) 2026-05-11 13:22:59 -04:00
Kit Langton c7e084c32c Simplify single-backend HttpApi exerciser (#26906) 2026-05-11 13:22:31 -04:00
Kit Langton 6f2f759fbb Clean up post-Hono references (#26903) 2026-05-11 13:20:54 -04:00
kirillk cc90649d78 ci(jetbrains): add test:ci script and include in CI build
- Add test:ci script (./gradlew test --continue) that runs all JetBrains
  Kotlin tests and collects JUnit XML results into .artifacts/unit/junit.xml
- Script always exits 0 so CI reports failures without blocking
- Add @kilocode/kilo-jetbrains#test:ci Turbo task depending on typecheck
- Fix 7 stale SessionRecoveryTest assertions that assumed kilo/gpt-5 as
  the default model after the default changed to kilo-auto/free in main

Test suite: 658 frontend + 234 backend tests, ~6m 35s on local machine
2026-05-11 13:18:58 -04:00
opencode-agent[bot] cddab63808 chore: generate 2026-05-11 17:17:38 +00:00
Shoubhit Dash 12583b18f0 feat(tui): pin, quick-switch, and cycle recent sessions (#26858) 2026-05-11 22:46:27 +05:30
Kit Langton df386bd651 feat(skill): enable customize-opencode by default, link full schema (#26899) 2026-05-11 13:13:41 -04:00
opencode-agent[bot] 25b12ed754 chore: generate 2026-05-11 17:06:57 +00:00
Kit Langton 023e1c711e refactor(llm): colocate per-type factories on their namespaces (#26799) 2026-05-11 13:05:41 -04:00
kilo-maintainer[bot] 1f252acce1 release: v7.2.51 2026-05-11 16:59:59 +00:00
Kirill Kalishev 9c554f0330 Merge branch 'main' into ionized-emmental 2026-05-11 12:55:04 -04:00
Kirill Kalishev cf105cc07c Merge branch 'main' into unleashed-romano 2026-05-11 12:41:20 -04:00
Catriel Müller 41596c5565 Merge pull request #10152 from Kilo-Org/glittery-writer
fix(cli): normalize IDN hostnames to punycode in permission dialogs
2026-05-11 13:39:23 -03:00
Catriel Müller 6308e7d548 update source links 2026-05-11 13:29:22 -03:00
Kirill Kalishev 20d873cc55 Merge branch 'main' into unleashed-romano 2026-05-11 12:28:00 -04:00
Catriel Müller 0200183174 refactor(vscode): import normalizeUrls from shared kilocode util in PermissionDock 2026-05-11 13:27:26 -03:00
Joshua Lambert ed64e9b06b Merge pull request #10151 from Kilo-Org/feat/default-model-to-free
feat(gateway): change default model to kilo-auto/free
2026-05-11 12:24:30 -04:00
Catriel Müller a0dcf76177 fix(cli): strip trailing sentence punctuation from URL matches in normalizeUrls
\S+ was greedily consuming trailing punctuation (. ! , ;) into the URL
match, causing new URL() to mutate clean ASCII URLs — e.g.
"see https://example.com." became "see https://example.com./".

Fix: strip trailing sentence punctuation before parsing, extract and
replace only the hostname (not href) to avoid adding trailing slashes to
bare origins, and restore the stripped tail afterward.
2026-05-11 13:18:49 -03:00
kirillk 95b3fac4e9 fix(jetbrains): replace Gap.small() with Gap.sm() after main merge 2026-05-11 12:13:25 -04:00
kirillk 1db62ed020 Merge remote-tracking branch 'origin/main' into unleashed-romano 2026-05-11 12:11:50 -04:00
Catriel Müller 9064478949 test(cli): add unit tests for normalizeUrls homograph protection 2026-05-11 12:55:08 -03:00
Kit Langton 52f7ba7d4d fix(llm): drop removed dispatch option from recorded cache tests (#26900) 2026-05-11 11:48:30 -04:00
opencode-agent[bot] 19fce2bc6f chore: generate 2026-05-11 15:21:20 +00:00
Shoubhit Dash 4bae84c8b0 feat(scout): autocomplete configured mentions (#26843) 2026-05-11 20:50:03 +05:30
Catriel Müller 9c572ccbb2 chore(kilo-docs): exclude example punycode domain from link checker 2026-05-11 12:15:16 -03:00
Catriel Müller ab8af8009f update source links 2026-05-11 12:10:38 -03:00
Kit Langton f240bba8e7 chore(http-recorder): remove content-matching dispatch mode (#26792) 2026-05-11 11:10:18 -04:00
Marius ea023b06dd fix(cli): prune tool outputs for large requests (#10143)
* fix(cli): prune tool outputs for large requests

* chore(cli): annotate pruning changes

* fix(cli): preserve transforms after payload pruning
2026-05-11 17:09:06 +02:00
Catriel Müller da92a30007 fix: add missing kilocode_change markers to all annotated lines 2026-05-11 12:07:48 -03:00
Kit Langton bcee247988 Define project update input with Effect Schema (#26803) 2026-05-11 15:05:31 +00:00
Catriel Müller 9fe37aeb39 refactor: extract normalizeUrls into src/kilocode/util/url.ts
Move Kilo-specific URL normalization logic out of shared upstream files
and into a mirror file under src/kilocode/, with kilocode_change markers
at each call site per the fork merge minimization convention.
2026-05-11 11:57:12 -03:00
Catriel Müller 862fed158f fix(cli): normalize IDN hostnames to punycode in permission dialogs
Prevent homograph attacks where visually identical Unicode characters
(e.g. Cyrillic а vs Latin a) could trick users into approving malicious
URLs in bash and webfetch permission prompts.
2026-05-11 11:50:52 -03:00
Josh Lambert b3bde8e740 feat(gateway): change default model to kilo-auto/free 2026-05-11 10:43:12 -04:00
Kirill Kalishev ac9d833739 Merge pull request #10097 from Kilo-Org/accidental-matrix
JetBrains session history
2026-05-11 10:41:47 -04:00
Ligia Zanchet 01b7b7d993 Enhance auto-docs workflow for better PR integration
Refactor workflow to improve PR metadata handling and payload creation.
2026-05-11 16:37:25 +02:00
Kit Langton 64c504212a Parse command config with Effect Schema (#26801) 2026-05-11 10:22:45 -04:00
Truffle 00313bfcd4 fix(tool): clarify semantic_search returns snippets not file paths (#10142)
* fix(tool): clarify semantic_search returns snippets not file paths

The first description bullet read "Find files most relevant to the
search query using semantic search.", which led an AI agent to tell a
user that the tool returns file paths only. The tool actually returns
matching content with file paths, line ranges, and relevance scores.

Updates the first two description bullets to name the output shape
directly. No runtime change.

Closes #9767.

* test(cli): cover semantic_search description

---------

Co-authored-by: marius-kilocode <marius@kilocode.ai>
2026-05-11 14:15:41 +00:00
opencode-agent[bot] 6592d80460 chore: generate 2026-05-11 14:13:39 +00:00
Sebastian d821650b48 add default diff parser for markdown fenced code blocks (#26887) 2026-05-11 14:12:32 +00:00
Victor Navarro 6c9f12bb2d chore: exclude status 429 from free model alerts (#26879) 2026-05-11 16:04:54 +02:00
Catriel Müller 1b452c6cb8 Merge pull request #10145 from thomasboom/docs/cleanup-questions-readme
docs: move Kilo CLI origin to FAQ section
2026-05-11 11:03:41 -03:00
Catriel Müller f383258f80 Merge pull request #10121 from shssoichiro/apply-auto-to-subagents
fix(cli): apply `--auto` flag to subagents from Task tool
2026-05-11 11:02:53 -03:00
Josh Holmer 0676243df3 ux(cli): remove --dangerously-skip-permissions (#10114)
This flag currently does nothing. Presumably, it was recently added by
OpenCode upstream, but since Kilo already has the `--auto` flag, the
code that would handle `--dangerously-skip-permissions` is wired into
`--auto` instead.

Removing this useless flag avoids confusion for users.
2026-05-11 15:45:49 +02:00
opencode-agent[bot] fca89e5e4d chore: generate 2026-05-11 13:44:39 +00:00
Frank 1eff01b6a5 sync 2026-05-11 09:43:12 -04:00
opencode-agent[bot] e93b1f3a7f chore: generate 2026-05-11 13:38:44 +00:00
Frank 8874d4a42f zen: deekseek v4 flash free 2026-05-11 09:37:14 -04:00
Kirill Kalishev 29d456b2e6 Merge branch 'main' into accidental-matrix 2026-05-11 09:18:48 -04:00
Marius 57996115a1 fix(cli): prevent nested subagent delegation (#10137) 2026-05-11 09:18:02 -04:00
Catriel Müller 0a5807b1b8 fix(cli): improve model info panel scrollbar padding and capabilities display 2026-05-11 09:18:02 -04:00
Aarav Sharma 4065364a83 fix(model-info-panel): resolve review comments - merge imports, guard fmtDate, use Show render-prop 2026-05-11 09:18:02 -04:00
Aarav Sharma 9d4c4eefca feat(cli): improve model info panel with modality and description support 2026-05-11 09:18:02 -04:00
Marius baeec988a8 test(vscode): cover nested subagent cost breakdown (#10138) 2026-05-11 09:18:02 -04:00
kilo-maintainer[bot] 54e595e271 release: v7.2.50 2026-05-11 09:18:01 -04:00
Marius 482a3b19dd fix(vscode): correct subagent cost breakdown after sync (#10134) 2026-05-11 09:18:01 -04:00
kiloconnect[bot] 3a7ee126c0 fix(upstream): rename shadowing path local in writeVersion 2026-05-11 09:18:01 -04:00
kiloconnect[bot] 413c5ce3c3 feat(upstream): record last merged tag in .opencode-version
Avoids the ls-remote + merge-base --is-ancestor walk in last() for the
common case by reading the recorded tag from .opencode-version. merge.ts
writes the file as part of the pre-merge compat commit so future runs of
fix-kilocode-markers, reset-to-upstream, and find-reset-candidates can
resolve the base tag instantly. Seeded with v1.14.33 (PR #9978).
2026-05-11 09:18:01 -04:00
Mark IJbema 792a996f45 fix(upstream-merge): always reconcile package.json post-merge
git rerere learns conflict resolutions from past upstream merges and
replays them on the next merge. When past resolutions used the buggy
mergeWithNewestVersions ordering, rerere auto-resolves package.json
files with stale content before transformConflictedPackageJson ever
gets a chance to run — so the fixed merge logic never reaches the
file.

Add reconcileAllPackageJson, which runs after every merge (clean,
auto-resolved, or partially conflicted) and rewrites every package.json
that the merge touched from the kilo branch's pre-merge HEAD and the
opencode compat branch using the same merge logic. Files that are
still conflicted are skipped so manual resolution isn't silently
overwritten.

This makes our merge logic the source of truth for package.json
content, regardless of what rerere or git's textual merge produced.
2026-05-11 09:18:01 -04:00
Mark IJbema 3a03c7378e fix(upstream-merge): preserve ours' key order in package.json dep merge
Seeding the result with theirs' keys and appending ours-only keys at the
end caused kilo-only deps (e.g. rotating-file-stream in packages/core)
to relocate from the middle of the deps block to the end during the
pre-merge transform. Git's textual 3-way merge then saw ours keeping
the line in place and theirs adding the same key elsewhere, producing
a duplicate JSON key in the merged file.

Iterate ours first so kilo-only deps stay in their original position,
then append any theirs-only keys at the end.
2026-05-11 09:18:01 -04:00
Mark IJbema 7fb217b4d7 chore(upstream): preserve & prune root package.json entries on merge
The transform that materialises the 'kilo compat for vX.Y.Z' commit during
an upstream merge takes upstream's package.json wholesale and re-applies a
hand-picked list of Kilo scripts. That list was incomplete: it only covered
`extension`, `changeset`, `changeset:version`, `test`, and `test:ci`, so
every merge silently dropped Kilo's `postinstall` tail (`&& bun run
script/setup-git.ts`) and the `dev-setup` root shortcut, and it never
pruned upstream-only scripts (`dev:desktop` / `dev:web` / `dev:console`)
or upstream-only catalog entries (`@sentry/solid`,
`@sentry/vite-plugin`) whose target packages Kilo doesn't ship.

- replace the per-script if-blocks with data-driven PRESERVE_SCRIPTS
- add DELETE_UPSTREAM_SCRIPTS for scripts that reference packages Kilo
  doesn't ship
- add DELETE_UPSTREAM_CATALOG for catalog entries with zero Kilo consumers
- apply the same policy in both transformPackageJson (conflict path) and
  transformAllPackageJson (pre-merge sweep path) — previously the
  pre-merge sweep was missing `changeset` / `changeset:version`
  preservation
- new tests covering preservation, deletion, opencode test scripts, and
  the catalog pruning
2026-05-11 09:18:01 -04:00
Mark IJbema be47492e86 fix: restore root package.json entries dropped by upstream-compat
The automated kilo compat transform keeps upstream's root scripts/catalog
wholesale and only re-applies a handful of Kilo-specific scripts, which
silently dropped:

- postinstall's `&& bun run script/setup-git.ts` tail (needed to set
  merge.conflictStyle=zdiff3 locally, which upstream merges rely on)
- the `dev-setup` script shorthand
- kept dead `dev:desktop` / `dev:web` / `dev:console` scripts whose
  target packages aren't tracked in Kilo
- kept `@sentry/solid` / `@sentry/vite-plugin` catalog entries that
  have zero consumers in our tree
2026-05-11 09:18:01 -04:00
Imanol Maiztegui d01e63cb87 Fix cursor positioning when text ends with newline (#10133)
* fix(vscode): fix cursor positioning when text ends with newline

A trailing newline is collapsed in a <div> with white-space: pre-wrap
but renders as a real empty line in the <textarea>. Without an extra
<br>, the overlay ends up one line shorter than the textarea, which
desyncs scrollTop and makes the visible caret appear one line off from
where the textarea actually inserts text.

* docs(vscode): simplify comment explaining trailing newline br element
2026-05-11 09:18:01 -04:00
Marius 7fed01f8c0 fix(vscode): keep revert checkpoints accessible (#10129)
* fix(vscode): keep revert checkpoints accessible

* fix(vscode): format revert checkpoint guard
2026-05-11 09:18:01 -04:00
Marius 1465303b34 chore: ignore generated Kilo config artifacts (#10128)
* chore: ignore generated Kilo config artifacts

* chore: ignore Kilo config node modules
2026-05-11 09:18:01 -04:00
Marius 5bc05966ee fix(vscode): improve review comment icon contrast (#10130) 2026-05-11 09:15:52 -04:00
kiloconnect[bot] 55ea2c76b1 refactor(upstream): improve compatibility commit lookup using semver
Update `findLatestCompatCommit` to use semantic versioning when identifying the latest compatibility commit. This ensures the correct commit is selected even when upstream tags diverge or are not strictly linear.

- Add semver parsing and comparison utilities
- Implement `targetSemver` to resolve versions from tags or commit messages
- Filter and sort compatibility candidates by version relative to the target version
- Add test case for diverging upstream tags
2026-05-11 09:15:52 -04:00
kiloconnect[bot] 62447fc1fc fix: preserve upstream ancestry on kilo merge 2026-05-11 09:15:52 -04:00
kiloconnect[bot] 6dc1b25f8d fix: resolve compat bases from version tags 2026-05-11 09:15:52 -04:00
kiloconnect[bot] ca61c5c711 fix: keep compat branches linear 2026-05-11 09:15:52 -04:00
kiloconnect[bot] 241da24f66 fix: preserve upstream compat merge bases 2026-05-11 09:15:52 -04:00
kiloconnect[bot] 98fbee8a91 chore(upstream): implement compatibility base tracking for merges
Update the upstream merge script to identify and link to the previous compatibility commit. This ensures that pre-merge transformations maintain a proper commit history by using multiple parents when a prior compatibility base is found, rather than creating disconnected commits.

- Add `findLatestCompatCommit` to locate previous compatibility commits
- Implement `commitTree` and `updateBranch` for low-level git manipulation
- Update `merge.ts` to integrate compatibility base detection and multi-parent commits
2026-05-11 09:15:52 -04:00
Marius 47a13fd8f0 fix(vscode): stabilize shell command streaming (#10127) 2026-05-11 09:15:52 -04:00
Marius ef620c3141 fix(vscode): hide empty task header graph (#10125) 2026-05-11 09:15:52 -04:00
Marius 33a233fd11 fix(cli): prevent nested subagent delegation (#10137) 2026-05-11 15:13:08 +02:00
Thomas Boom f2d5b4e33a Merge branch 'main' into docs/cleanup-questions-readme 2026-05-11 15:07:12 +02:00
Thomas Boom d7d0415974 docs: move Kilo CLI origin to FAQ section
Added FAQ section with details about Kilo CLI's origin.
2026-05-11 15:04:12 +02:00
Catriel Müller 9e28ec7d05 Merge pull request #10120 from IamCoder18/cli-model-picker-parity
cli: improve model picker panel to match VS Code extension
2026-05-11 10:01:34 -03:00
Catriel Müller 8e90f29695 fix(cli): improve model info panel scrollbar padding and capabilities display 2026-05-11 09:50:01 -03:00
Marius a0a2708b24 test(vscode): cover nested subagent cost breakdown (#10138) 2026-05-11 14:34:31 +02:00
Catriel Müller f70ea87abe Merge branch 'main' into cli-model-picker-parity 2026-05-11 09:22:37 -03:00
kilo-maintainer[bot] 7a69410acc release: v7.2.50 2026-05-11 11:14:30 +00:00
Marius 0e8d2fe091 fix(vscode): correct subagent cost breakdown after sync (#10134) 2026-05-11 12:19:03 +02:00
Mark IJbema 08a3e0a099 Merge pull request #10131 from Kilo-Org/mark/opencode-version-file
feat(upstream): record last merged tag in .opencode-version
2026-05-11 11:31:28 +02:00
Mark IJbema 8155e3a50f Merge pull request #10003 from Kilo-Org/mark/fix-root-pkgjson-regressions
fix: restore root package.json entries dropped by upstream-compat
2026-05-11 11:31:03 +02:00
Brendan Allan c933504d9c fix(ui): better handle patch file support when rendering patch/edit tools (#26828) 2026-05-11 17:21:59 +08:00
Imanol Maiztegui c11f63391d Fix cursor positioning when text ends with newline (#10133)
* fix(vscode): fix cursor positioning when text ends with newline

A trailing newline is collapsed in a <div> with white-space: pre-wrap
but renders as a real empty line in the <textarea>. Without an extra
<br>, the overlay ends up one line shorter than the textarea, which
desyncs scrollTop and makes the visible caret appear one line off from
where the textarea actually inserts text.

* docs(vscode): simplify comment explaining trailing newline br element
2026-05-11 10:59:43 +02:00
kiloconnect[bot] 5b8121ea5c fix(upstream): rename shadowing path local in writeVersion 2026-05-11 08:51:59 +00:00
Marius d8582521c3 fix(vscode): keep revert checkpoints accessible (#10129)
* fix(vscode): keep revert checkpoints accessible

* fix(vscode): format revert checkpoint guard
2026-05-11 10:30:01 +02:00
Marius 1988db53e3 chore: ignore generated Kilo config artifacts (#10128)
* chore: ignore generated Kilo config artifacts

* chore: ignore Kilo config node modules
2026-05-11 10:29:20 +02:00
marius-kilocode 1f3df35576 fix(vscode): address restore review feedback 2026-05-11 10:18:03 +02:00
Marius 5482cc0d09 fix(vscode): improve review comment icon contrast (#10130) 2026-05-11 10:13:36 +02:00
marius-kilocode b91457673c fix(vscode): restore only previously open Kilo views 2026-05-11 10:13:25 +02:00
kiloconnect[bot] 8710e9d9de feat(upstream): record last merged tag in .opencode-version
Avoids the ls-remote + merge-base --is-ancestor walk in last() for the
common case by reading the recorded tag from .opencode-version. merge.ts
writes the file as part of the pre-merge compat commit so future runs of
fix-kilocode-markers, reset-to-upstream, and find-reset-candidates can
resolve the base tag instantly. Seeded with v1.14.33 (PR #9978).
2026-05-11 08:11:40 +00:00
Shoubhit Dash 2d0d3d596e feat(compaction): serialize compaction tail (#26830) 2026-05-11 13:40:36 +05:30
Mark IJbema ee3ee5b06b fix(upstream-merge): always reconcile package.json post-merge
git rerere learns conflict resolutions from past upstream merges and
replays them on the next merge. When past resolutions used the buggy
mergeWithNewestVersions ordering, rerere auto-resolves package.json
files with stale content before transformConflictedPackageJson ever
gets a chance to run — so the fixed merge logic never reaches the
file.

Add reconcileAllPackageJson, which runs after every merge (clean,
auto-resolved, or partially conflicted) and rewrites every package.json
that the merge touched from the kilo branch's pre-merge HEAD and the
opencode compat branch using the same merge logic. Files that are
still conflicted are skipped so manual resolution isn't silently
overwritten.

This makes our merge logic the source of truth for package.json
content, regardless of what rerere or git's textual merge produced.
2026-05-11 10:02:35 +02:00
Mark IJbema d79664f084 fix(upstream-merge): preserve ours' key order in package.json dep merge
Seeding the result with theirs' keys and appending ours-only keys at the
end caused kilo-only deps (e.g. rotating-file-stream in packages/core)
to relocate from the middle of the deps block to the end during the
pre-merge transform. Git's textual 3-way merge then saw ours keeping
the line in place and theirs adding the same key elsewhere, producing
a duplicate JSON key in the merged file.

Iterate ours first so kilo-only deps stay in their original position,
then append any theirs-only keys at the end.
2026-05-11 10:02:34 +02:00
Mark IJbema a156e7a98d chore(upstream): preserve & prune root package.json entries on merge
The transform that materialises the 'kilo compat for vX.Y.Z' commit during
an upstream merge takes upstream's package.json wholesale and re-applies a
hand-picked list of Kilo scripts. That list was incomplete: it only covered
`extension`, `changeset`, `changeset:version`, `test`, and `test:ci`, so
every merge silently dropped Kilo's `postinstall` tail (`&& bun run
script/setup-git.ts`) and the `dev-setup` root shortcut, and it never
pruned upstream-only scripts (`dev:desktop` / `dev:web` / `dev:console`)
or upstream-only catalog entries (`@sentry/solid`,
`@sentry/vite-plugin`) whose target packages Kilo doesn't ship.

- replace the per-script if-blocks with data-driven PRESERVE_SCRIPTS
- add DELETE_UPSTREAM_SCRIPTS for scripts that reference packages Kilo
  doesn't ship
- add DELETE_UPSTREAM_CATALOG for catalog entries with zero Kilo consumers
- apply the same policy in both transformPackageJson (conflict path) and
  transformAllPackageJson (pre-merge sweep path) — previously the
  pre-merge sweep was missing `changeset` / `changeset:version`
  preservation
- new tests covering preservation, deletion, opencode test scripts, and
  the catalog pruning
2026-05-11 10:02:34 +02:00
Mark IJbema 27da09614e fix: restore root package.json entries dropped by upstream-compat
The automated kilo compat transform keeps upstream's root scripts/catalog
wholesale and only re-applies a handful of Kilo-specific scripts, which
silently dropped:

- postinstall's `&& bun run script/setup-git.ts` tail (needed to set
  merge.conflictStyle=zdiff3 locally, which upstream merges rely on)
- the `dev-setup` script shorthand
- kept dead `dev:desktop` / `dev:web` / `dev:console` scripts whose
  target packages aren't tracked in Kilo
- kept `@sentry/solid` / `@sentry/vite-plugin` catalog entries that
  have zero consumers in our tree
2026-05-11 10:02:34 +02:00
Mark IJbema 2d37f83daa Merge pull request #9852 from Kilo-Org/mark/upstream-compat-base
fix: preserve upstream compat merge bases
2026-05-11 09:59:59 +02:00
opencode-agent[bot] 3bd98ea055 chore: generate 2026-05-11 07:28:32 +00:00
Marius 3259008074 fix(vscode): stabilize shell command streaming (#10127) 2026-05-11 09:27:41 +02:00
Shoubhit Dash 7e997cfba4 refactor(scout): resolve configured reference mentions (#26701) 2026-05-11 12:57:26 +05:30
Marius fc6ce735c9 fix(vscode): hide empty task header graph (#10125) 2026-05-11 09:21:37 +02:00
Brendan Allan 5d6f2a1524 fix(ui): use part_text_accum_delta to prevent markdown cutoff during streaming (#26822) 2026-05-11 15:15:03 +08:00
opencode-agent[bot] b1cb71856e chore: generate 2026-05-11 05:27:40 +00:00
Aiden Cline 518264fcd9 fix(opencode): fix full session fork (#26811) 2026-05-11 00:26:36 -05:00
Aarav Sharma 51b35d0b94 fix(model-info-panel): resolve review comments - merge imports, guard fmtDate, use Show render-prop 2026-05-10 22:29:08 -06:00
Aarav Sharma 3b44205a38 feat(cli): improve model info panel with modality and description support 2026-05-10 22:20:24 -06:00
Dax 7235c9c9b8 Trace data migrations (#26809) 2026-05-11 03:23:01 +00:00
Kit Langton 274033cd52 Validate prompt messages with Effect Schema (#26796) 2026-05-11 02:59:20 +00:00
Kit Langton 9b369ee815 chore(llm): make cache: 'auto' the default (#26798) 2026-05-10 22:46:01 -04:00
Sebastian 721ff5121e fix prompt history behaviour and session line up/down commands (#26797) 2026-05-11 02:27:46 +00:00
opencode-agent[bot] cfbf5d1c6f chore: update nix node_modules hashes 2026-05-11 02:20:35 +00:00
opencode-agent[bot] 02cb7e7b71 chore: generate 2026-05-11 02:11:07 +00:00
Kit Langton 942630eb4a feat(llm): cache-policy auto-placement (#26786) 2026-05-10 22:09:55 -04:00
opencode ce66b191d1 sync release versions for v1.14.48 2026-05-11 02:07:48 +00:00
opencode 4d8ac17c26 release: v1.14.48 2026-05-11 02:07:37 +00:00
Kit Langton 6f1f5944ce Delete unused opencode Zod helpers (#26793) 2026-05-10 21:57:18 -04:00
opencode-agent[bot] 1c49b2ed67 chore: generate 2026-05-11 01:55:22 +00:00
opencode-agent[bot] 3c6be604ec chore: update nix node_modules hashes 2026-05-11 01:54:13 +00:00
Kit Langton ddc02c2893 Drop synchronous SyncEvent facades (#26789) 2026-05-11 01:53:50 +00:00
Kit Langton 2703eff2e2 refactor(llm): normalize Usage as inclusive total + non-overlapping breakdown (#26735) 2026-05-10 21:52:50 -04:00
opencode-agent[bot] 38e4540119 chore: generate 2026-05-11 01:41:26 +00:00
Dax Raad 4100fcbd17 disable image resizing 2026-05-10 21:40:12 -04:00
Kit Langton 83cb0f60ec Drop EventV2 run facade (#26783) 2026-05-10 21:26:28 -04:00
Kit Langton effd96755e Use SyncEvent service at event call sites (#26782) 2026-05-10 21:20:13 -04:00
opencode-agent[bot] 5801cce1b5 chore: generate 2026-05-11 01:18:39 +00:00
Kit Langton 77e6c0d329 feat(llm): cache hint TTL, breakpoint cap, and tool placement (#26779) 2026-05-10 21:17:38 -04:00
Kit Langton fed716ada5 Clarify compaction test harness (#26777) 2026-05-10 20:41:21 -04:00
opencode 426d92e352 sync release versions for v1.14.47 2026-05-11 00:23:17 +00:00
opencode-agent[bot] d0412a213b chore: generate 2026-05-11 00:18:03 +00:00
Kit Langton 16aa67086b Effectify remaining compaction process tests (#26776) 2026-05-10 20:17:01 -04:00
Dax 7cea32ee08 Add background code migration service (#26652) 2026-05-11 00:16:42 +00:00
Kit Langton 128d10d9e9 Simplify compaction test helpers (#26742) 2026-05-10 20:03:11 -04:00
Kit Langton 5ef72e1101 Drop unused ID Zod statics (#26740) 2026-05-10 19:58:21 -04:00
Kit Langton d8060dc9ad Drop compaction create facade (#26739) 2026-05-10 19:54:16 -04:00
Kit Langton f71fb18d3d Replace compaction create test fixtures (#26738) 2026-05-10 19:53:22 -04:00
Sebastian 5654dd2aad restore managed textarea keymap handling (#26771) 2026-05-11 01:45:59 +02:00
Kit Langton 64dde0cb15 Migrate compaction tool-call test (#26737) 2026-05-10 19:44:42 -04:00
Kit Langton a658e43eeb Migrate compaction plugin test (#26736) 2026-05-10 19:42:44 -04:00
Kit Langton ca8a42c973 Migrate LLM compaction tail tests (#26734) 2026-05-10 19:41:28 -04:00
Kit Langton 8f5f75db12 Migrate compaction LLM test (#26733) 2026-05-10 19:20:44 -04:00
Kit Langton 4ff0d07b1d Migrate configurable compaction tests (#26732) 2026-05-10 19:18:02 -04:00
Kit Langton 2a571b3cee Migrate compaction overflow tests (#26731) 2026-05-10 19:12:49 -04:00
Dax 0fffcdfe46 Persist session model switches outside event flag (#26765) 2026-05-10 18:53:14 -04:00
Dax 2ba2ee52e8 docs: document bun dev tmux capture (#26764) 2026-05-10 17:41:20 -04:00
Frank 56d818fc34 zen: fix reasoning token for openai compatible endpoint 2026-05-10 13:36:02 -04:00
Kit Langton 9c8da69196 Use Effect timeout in compaction test (#26728) 2026-05-10 12:45:54 -04:00
opencode-agent[bot] a78018697c chore: generate 2026-05-10 16:44:40 +00:00
Kit Langton e45b6ef1de refactor(http-recorder): use Schema.TaggedErrorClass for cassette errors (#26729) 2026-05-10 16:43:33 +00:00
opencode-agent[bot] b616543ac2 chore: generate 2026-05-10 16:30:55 +00:00
Kit Langton 2bd3d9a696 refactor(http-recorder): hide cassette format behind Cassette seam (#26725) 2026-05-10 12:29:55 -04:00
Kit Langton fa15dbc5ec Migrate compaction process tests (#26723) 2026-05-10 12:25:44 -04:00
opencode-agent[bot] 312e5c7a7c chore: generate 2026-05-10 16:22:29 +00:00
Kit Langton 049502fac6 fix(server): return diagnosable body for schema rejections (#26631) 2026-05-10 16:21:32 +00:00
opencode-agent[bot] cc2915be16 chore: generate 2026-05-10 16:20:16 +00:00
Kit Langton ce061bf661 Add explicit LLM stream lifecycle events (#26722) 2026-05-10 12:19:13 -04:00
Frank 3b8790e034 zen: fix usage css on mobile 2026-05-10 12:14:11 -04:00
Kit Langton a4f3cedcdf Start effect-style compaction tests 2026-05-10 16:12:00 +00:00
opencode-agent[bot] 1c9a2eb239 chore: generate 2026-05-10 16:06:18 +00:00
Kit Langton 4fb417d3b5 feat(http-recorder): default mode to "auto" (#26719) 2026-05-10 16:05:11 +00:00
Kit Langton 11030c627b Scope boolean query overrides 2026-05-10 11:57:52 -04:00
opencode-agent[bot] c104098a66 chore: generate 2026-05-10 15:55:49 +00:00
Kit Langton 49ee3ba85a Source diff message query pattern (#26638) 2026-05-10 11:54:54 -04:00
Kirill Kalishev 70366cbb8e Merge branch 'main' into accidental-matrix 2026-05-10 11:29:26 -04:00
Kirill Kalishev 940a1d2a57 Merge branch 'main' into ionized-emmental 2026-05-10 11:26:57 -04:00
Kirill Kalishev ac25381afb Merge pull request #10082 from Kilo-Org/kaput-peach
Fix Agent Manager tab bar controls
2026-05-10 11:21:55 -04:00
Aarav Sharma 0bddf1e755 fix(cli): prevent memory leak in KiloSessionPromptQueue.cancel for sessions without active tails
The cancel() function was always incrementing and storing a version in the
versions map, even for sessions with no queued prompts. Since cleanup only
happens in enqueue's release phase, sessions without active tails left
permanent map entries.

Now cancel() checks if the session has an active tail before modifying state.
If no tail exists, it cleans up any existing versions/targets/latest/activeSince
entries instead of creating new ones.
2026-05-10 09:05:43 -06:00
opencode-agent[bot] 4fc538378d chore: generate 2026-05-10 14:50:21 +00:00
Kit Langton d28b5ad2f4 refactor(http-recorder): Redactor + Recorder seams, README (#26636) 2026-05-10 10:49:22 -04:00
opencode-agent[bot] 6589a66822 chore: generate 2026-05-10 12:28:11 +00:00
Shoubhit Dash 5cf9abe743 feat(scout): materialize configured reference repos (#26692) 2026-05-10 17:57:11 +05:30
Frank 903d81819d Zen: add Ring 2.6 1T 2026-05-10 03:51:34 -04:00
opencode-agent[bot] 472f9e64a6 chore: update nix node_modules hashes 2026-05-10 07:06:30 +00:00
Frank c04fa9e253 sync: revert
This reverts commit 3a7f617098.
2026-05-10 02:58:46 -04:00
opencode-agent[bot] 3a78fb1f42 chore: generate 2026-05-10 06:49:21 +00:00
Aiden Cline 85ce6a5f95 feat: better image handling (auto resize & max size constraints) (#26401) 2026-05-10 01:48:19 -05:00
opencode-agent[bot] 5217e6c1af chore: generate 2026-05-10 06:39:09 +00:00
Frank 3a7f617098 go: add tencent icon 2026-05-10 02:37:50 -04:00
opencode-agent[bot] d9150413cb chore: generate 2026-05-10 06:24:35 +00:00
Jack bcbc1dba22 Go add hy3 preview (#26533) 2026-05-10 02:23:34 -04:00
Frank ce3235e115 sync 2026-05-10 02:17:32 -04:00
Josh Holmer 9963b0271a fix(cli): apply --auto flag to subagents from Task tool 2026-05-10 00:50:32 -04:00
opencode-agent[bot] a9a2a597d5 chore: generate 2026-05-10 04:30:04 +00:00
Dax 3753601f87 Format TUI paths relative to session directory (#26648) 2026-05-10 04:29:02 +00:00
Kit Langton fb4bab8a66 Remove redundant ID Zod overrides (#26633) 2026-05-09 23:12:21 -04:00
opencode-agent[bot] b3526f6ce9 chore: generate 2026-05-10 03:03:37 +00:00
Kit Langton f220f02a2f Source workspace path pattern (#26632) 2026-05-09 23:02:31 -04:00
opencode-agent[bot] 235a86fb60 chore: generate 2026-05-10 02:59:46 +00:00
Kit Langton 67b9c9c027 Source HTTP API ID path patterns (#26623) 2026-05-09 22:58:47 -04:00
kirillk 4bfa644e0d test(vscode): assert question replies as compact strings
Add assertQuestionReply() to SessionControllerTestBase and a local
assertReply() in QuestionPanelTest that render reply triples as
"<id> <dir> [[A],[B]]" — consistent with the codebase's string-diff
assertion style.
2026-05-09 22:56:56 -04:00
kirillk 93e7cb1e24 feat(vscode): support multi-question prompts in QuestionPanel and add controller stream test
Render all question items instead of only the first, with per-item option
selection and a single Submit button. Add JsonSessionStreamTest covering
the full assistant-text → two-question → reply flow.
2026-05-09 22:53:49 -04:00
opencode 2f11c9f7ed sync release versions for v1.14.46 2026-05-10 02:34:36 +00:00
opencode d802b0a277 release: v1.14.46 2026-05-10 02:34:25 +00:00
kirillk 931b803068 test(cli): update QuestionOption wire-shape snapshot to include mode field 2026-05-09 22:16:53 -04:00
opencode-agent[bot] e1c1193f3e chore: generate 2026-05-10 02:11:45 +00:00
Kit Langton 29250a0efb fix(session): loosen remaining stored numeric schemas to tolerate legacy data (#26622) 2026-05-09 22:10:48 -04:00
Kit Langton c6e6bdf59f fix(session): tolerate negative token counts in stored parts (#26620) 2026-05-09 22:10:44 -04:00
opencode-agent[bot] d80e1199ca chore: generate 2026-05-10 02:06:39 +00:00
Kit Langton 10ea59066f feat(skill): built-in opencode-meta skill (#26617) 2026-05-09 22:05:37 -04:00
Kit Langton 79d6b10d7c fix(mcp): tolerate output schema ref failures (#26614) 2026-05-09 22:03:59 -04:00
Kit Langton 6e78f36a0f Narrow HTTP API numeric query overrides (#26618) 2026-05-09 22:02:51 -04:00
Kit Langton 16866e1180 Share HTTP API boolean query schema (#26615) 2026-05-09 21:41:15 -04:00
kirillk c7fa827662 test(cli): add contract tests for QuestionOption Kilo-specific fields 2026-05-09 21:30:16 -04:00
kirillk f449375e09 fix: split kilocode_change markers for mode field in QuestionOption 2026-05-09 21:25:20 -04:00
opencode-agent[bot] 6d130e5deb chore: generate 2026-05-10 01:13:41 +00:00
Kit Langton e30d8173c1 Fix OpenAPI workspace query drift (#26609) 2026-05-09 21:12:34 -04:00
kirillk 9e192da986 Merge remote-tracking branch 'origin/main' into crystalline-dive 2026-05-09 21:11:24 -04:00
kirillk dad94abbb2 ci(jetbrains): include plugin build in typecheck 2026-05-09 20:53:37 -04:00
kirillk b539c6920e fix(vscode): add mode field to plan follow-up Continue here option so picker updates instantly 2026-05-09 20:50:12 -04:00
Kirill Kalishev cfb3ab8c93 Merge branch 'main' into unleashed-romano 2026-05-09 20:20:47 -04:00
Kirill Kalishev c08ff0c8f1 Merge branch 'main' into ionized-emmental 2026-05-09 20:18:11 -04:00
opencode 7a79f3a5ea sync release versions for v1.14.45 2026-05-10 00:07:24 +00:00
kirillk 44e466173b Merge remote-tracking branch 'origin/main' into kaput-peach 2026-05-09 20:05:27 -04:00
Kit Langton b8ca71d309 fix(task): subagent inherits parent agent's deny rules (Plan Mode security bypass) (#26597)
Co-authored-by: Developer <temp@example.com>
2026-05-09 23:51:55 +00:00
kirillk d5b8ff3a9f fix(vscode): keep Agent Manager add tab adjacent 2026-05-09 19:48:32 -04:00
Kit Langton 6849f96825 refactor(provider): share model status schema (#26595)
Co-authored-by: Developer <temp@example.com>
2026-05-09 19:20:31 -04:00
Kirill Kalishev bd384b7a12 Merge branch 'main' into accidental-matrix 2026-05-09 19:08:27 -04:00
kirillk f4c7e77601 fix(jetbrains): use top-level buildString 2026-05-09 19:07:44 -04:00
Kit Langton 00c3248295 fix(config): allow active provider model status (#26592)
Co-authored-by: Developer <temp@example.com>
2026-05-09 18:59:05 -04:00
opencode-agent[bot] 818b56dbd0 chore: generate 2026-05-09 22:47:54 +00:00
Kit Langton 29b5b24787 fix(tui): aggregate bootstrap request failures
TUI bootstrap now reports all parallel fetch failures together instead of losing sibling failures after the first rejection.
2026-05-09 18:46:52 -04:00
Kit Langton 11363170ca fix(sdk): wrap thrown error bodies in Error
SDK throwOnError paths now convert structured response bodies into real Error instances while preserving the original body and status in cause.
2026-05-09 18:46:43 -04:00
Kit Langton ba9e4b67ed fix(tool/read): match permission patterns against worktree-relative path
Read permission checks now use the same worktree-relative path basis as edit/write/apply_patch, so configured patterns apply consistently.
2026-05-09 18:46:29 -04:00
Kit Langton bd1029b19f test(server): cover HttpApi context inheritance
Adds regression coverage for request context inheritance in promptAsync and explicit context provisioning in stream bodies.
2026-05-09 18:46:10 -04:00
Kit Langton 43b51f09d0 fix(httpapi): align runtime query schemas with workspace routing params (#26581)
Co-authored-by: Developer <temp@example.com>
2026-05-09 16:50:30 -04:00
opencode-agent[bot] c61ab51886 chore: generate 2026-05-09 20:45:29 +00:00
Kit Langton d373c562f2 fix(session): accept legacy summary diffs (#26579)
Co-authored-by: Developer <temp@example.com>
2026-05-09 16:44:24 -04:00
opencode-agent[bot] 5fa5d876fc chore: generate 2026-05-09 20:31:32 +00:00
Kit Langton 805af011c9 test(session): regression test for #26574 + mirror loosening on Vcs.FileDiff (#26578)
Co-authored-by: Developer <temp@example.com>
2026-05-09 16:30:31 -04:00
opencode-agent[bot] 480aa8b23b chore: generate 2026-05-09 20:24:28 +00:00
OpeOginni d62442bb5d fix(sessions): allow optional patch field in diff for migrated sessions (#26574) 2026-05-09 16:23:28 -04:00
Kit Langton 8602937a37 test(session): cover workspace-routed messages (#26576) 2026-05-09 16:19:06 -04:00
kilo-maintainer[bot] 9d37a1aead release: v7.2.49 2026-05-09 20:12:04 +00:00
Kit Langton 77da433e0a fix(session): accept routing params in message list (#26569)
Co-authored-by: Developer <temp@example.com>
2026-05-09 16:02:35 -04:00
opencode-agent[bot] ad79f3e0cf chore: generate 2026-05-09 19:59:00 +00:00
Kit Langton 6c2dfd2f52 fix(tui): guard messages.data in session.sync against undefined (#26566)
Co-authored-by: Developer <temp@example.com>
2026-05-09 19:58:03 +00:00
Sebastian 9a8b54fe62 Plugin command API shim (#26564) 2026-05-09 21:56:49 +02:00
Dax dcdbdb218f Move schema utilities into core (#26565) 2026-05-09 19:51:09 +00:00
kirillk d1b48b4f14 fix(jetbrains): address bot review warnings (json escape, data race, list events) 2026-05-09 15:49:04 -04:00
Kit Langton 5e49029e70 fix(provider): isolate plugin model mutations (#26561)
Co-authored-by: Developer <temp@example.com>
2026-05-09 15:47:07 -04:00
opencode 19abadaf27 sync release versions for v1.14.44 2026-05-09 19:33:26 +00:00
kirillk 4ccf9d6ecd Merge remote-tracking branch 'origin/main' into accidental-matrix 2026-05-09 15:32:18 -04:00
kirillk f7e7377858 fix(jetbrains): improve cloud history loading 2026-05-09 15:24:47 -04:00
kirillk ed1af58cf6 fix(jetbrains): widen recent timestamp gap 2026-05-09 15:09:32 -04:00
kirillk 50381a1d5d test(jetbrains): cover history route state 2026-05-09 15:00:46 -04:00
kirillk 710c9dca1e fix(vscode): sync mode model selection 2026-05-09 14:57:09 -04:00
Kit Langton 6fea0178eb fix(server): defer validation error body change 2026-05-09 14:50:45 -04:00
Kit Langton ebe9dcf27e fix(server): return validation error bodies 2026-05-09 14:39:25 -04:00
Kit Langton 57efec4429 fix(storage): default workspace time migration (#26556) 2026-05-09 14:18:55 -04:00
opencode e22144806f sync release versions for v1.14.43 2026-05-09 18:06:16 +00:00
Kit Langton 27fa297a42 fix(server): keep provider lists JSON-safe (#26550) 2026-05-09 13:40:46 -04:00
Aarav Sharma e1e75a382d style: format imports in session.tsx 2026-05-09 11:17:12 -06:00
Aarav Sharma e362e192ac agent-manager: use configModel for new worktree dialog and clear stale overrides on config change
- Replace session.selected() with session.configModel() in NewWorktreeDialog to reflect the configured model rather than the selected session model.
- Add configModel to SessionContext and implement an effect that clears session overrides matching the old config model when the global config model changes, ensuring sessions pick up the new config model.
2026-05-09 11:12:16 -06:00
Aiden Cline b1cd25de3d ignore: fix typerrs on dev (#26544) 2026-05-09 12:08:00 -05:00
opencode 780bbb0f3b sync release versions for v1.14.42 2026-05-09 16:54:43 +00:00
opencode 23c6b69abf release: v1.14.42 2026-05-09 16:54:32 +00:00
Steffen Deusch 817cb076a8 fix(acp): include tool image attachments in updates (#25128) 2026-05-09 11:45:44 -05:00
opencode-agent[bot] 347526e9fd chore: generate 2026-05-09 16:32:52 +00:00
Polo123456789 092bc674a5 fix(sidebar): fix logic and missleading message #26469 (#26470) 2026-05-09 11:31:46 -05:00
Kit Langton b24a4e897e chore(server): clean up post-Hono-deletion scar tissue (#26542) 2026-05-09 12:30:18 -04:00
opencode-agent[bot] 3afa622eab chore: update nix node_modules hashes 2026-05-09 13:22:38 +00:00
opencode-agent[bot] d01cb7f013 chore: generate 2026-05-09 13:11:45 +00:00
Kit Langton 28b03595bf research: delete Hono backend (do not merge) (#25667) 2026-05-09 13:10:42 +00:00
Kit Langton 32684e70e6 test(server): expect null body from HTTP API authorize() with no redirect (#26515) 2026-05-09 08:50:00 -04:00
truffle a1e487b044 test(cli): switch to disposeAllInstances fixture helper after Instance API migration
PR #25418 replaced Instance.disposeAll with the disposeAllInstances helper
re-exported from test/fixture/fixture. Match the pattern used by the
sister tests in test/kilocode/.
2026-05-09 05:13:38 +00:00
truffle 99b3169b63 Merge remote-tracking branch 'upstream/main' into fix/tui-submodule-session-worktree-family 2026-05-09 05:12:54 +00:00
truffle 4c8a4064fc test(cli): align Log import with @opencode-ai/core path after util refactor
The src/util barrel was split into per-file modules in main; every other
test in test/kilocode/ now imports Log from @opencode-ai/core/util/log
directly. Match the pattern.
2026-05-09 05:07:42 +00:00
opencode-agent[bot] b2baddcd37 chore: generate 2026-05-09 04:31:07 +00:00
Kit Langton dbd48d423d fix(server): match Hono wire format for authorize undefined and share errors (#26474) 2026-05-09 00:30:00 -04:00
Kit Langton e7cc8259b5 test(server): drop flaky account error-mapping test (#26475) 2026-05-09 00:29:31 -04:00
opencode-agent[bot] a9ccb0804f chore: generate 2026-05-09 04:22:25 +00:00
Kit Langton ebe6087e8f fix(server): return structured validation errors (#26457) 2026-05-09 00:21:19 -04:00
Kit Langton dc978cb889 fix(server): validate permission and question ids (#26456) 2026-05-09 00:20:28 -04:00
Kit Langton 8cbc43fbb0 fix(server): include auth challenge on typed 401 (#26455) 2026-05-09 00:15:20 -04:00
opencode-agent[bot] 82359c4b1b chore: generate 2026-05-09 04:06:08 +00:00
Kit Langton 7f3e51453b test(server): use Layer.mock for partial Account service stub (#26472) 2026-05-09 00:05:05 -04:00
Kit Langton cbdb2d9825 test(server): expand workspace routing fixed-id coverage (#26458) 2026-05-09 00:00:18 -04:00
Kit Langton 96bde05f6e docs(server): explain why HTTP API PTY handler has no early-frame buffer (#26464) 2026-05-08 23:58:33 -04:00
Kit Langton dcb8ed8eb0 test(server): cover workspace sync fence protocol (#26441) 2026-05-08 23:55:47 -04:00
Kit Langton aab82cc1a7 test(project): rescue non-Hono InstanceBootstrap boundary tests (#26453) 2026-05-08 23:53:42 -04:00
Kit Langton cd1d1e81a6 test(server): run httpapi exercise effect mode in test:httpapi (#26452) 2026-05-08 23:48:29 -04:00
opencode-agent[bot] cff441909a chore: generate 2026-05-09 03:45:35 +00:00
Kit Langton 3615d5aab1 fix(server): map Account failures to typed 500 instead of defect (#26448) 2026-05-08 23:44:28 -04:00
opencode-agent[bot] 11d9e82eaf chore: generate 2026-05-09 03:42:23 +00:00
Kit Langton eadda11ec9 refactor(server): use JSON response for OpenAPI doc route (#26447) 2026-05-08 23:41:20 -04:00
Kit Langton f73a56c223 fix(server): log instance disposal failures from HTTP API lifecycle (#26446) 2026-05-08 23:40:06 -04:00
opencode-agent[bot] c0acf5c43f chore: generate 2026-05-09 03:18:57 +00:00
Kit Langton 4d585464f3 fix(server): include Origin in CORS preflight Vary header (#26445) 2026-05-08 23:17:47 -04:00
Jose Vargas f0cb17a812 fix(tui): sort session picker by full updated timestamp (#24725)
Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
2026-05-08 22:17:13 -05:00
Kit Langton 357a74714a fix(test): set OPENCODE_EXPERIMENTAL_WORKSPACES in fence header test (#26466) 2026-05-08 23:12:08 -04:00
Kit Langton ffea6c7974 feat(server): add HTTP API response compression (#26440) 2026-05-08 23:06:00 -04:00
Kit Langton 8e9550d90d fix(server): emit fixed workspace fence headers (#26443) 2026-05-08 22:45:54 -04:00
James Long 9b7b6cb30f feat(core): be smarter about generating a worktree name (#26368) 2026-05-08 22:45:44 -04:00
Kit Langton cc68afb2de test(server): lock fixed workspace routing context (#26454) 2026-05-08 22:35:32 -04:00
Kit Langton 11c33d52a5 test(server): cover REST API project skills (#26451) 2026-05-09 02:23:21 +00:00
opencode-agent[bot] 2a487ea990 chore: generate 2026-05-09 02:21:54 +00:00
Kit Langton 9c05d4e2fd fix(server): serve HttpApi OpenAPI document (#26438) 2026-05-08 22:20:50 -04:00
kirillk e7126ad8e0 docs(jetbrains): document ui style constant ownership 2026-05-08 22:07:30 -04:00
Kit Langton 0745162eab test(server): harden HttpApi exercise coverage (#26425) 2026-05-08 20:50:01 -04:00
Kit Langton 21d055be19 fix(workspace): claim detached sessions to source project (#26413) 2026-05-08 20:25:53 -04:00
Luke Parker d19f7bc77c fix(web): normalize shell output carriage returns (#26426) 2026-05-09 10:24:57 +10:00
kirillk 73e6b40fb9 refactor(jetbrains): rename session controller package 2026-05-08 20:18:23 -04:00
opencode-agent[bot] 8694da9309 chore: update nix node_modules hashes 2026-05-08 23:46:19 +00:00
Sebastian a0fc27e424 flatten to keybind compatible config (#26421) 2026-05-09 01:29:13 +02:00
kirillk d63c752998 refactor(jetbrains): batch transparent component setup 2026-05-08 18:57:12 -04:00
kirillk 8326a5a806 docs(jetbrains): document ui style tokens 2026-05-08 18:55:12 -04:00
kirillk 6f0b15b7cd refactor(jetbrains): simplify ui gap tokens 2026-05-08 18:50:53 -04:00
kirillk d40c171324 refactor(jetbrains): colocate component style tokens 2026-05-08 18:46:51 -04:00
kirillk e9a73cc6fb refactor(jetbrains): group session view style tokens 2026-05-08 18:31:34 -04:00
kirillk bc9b98b741 refactor(jetbrains): group message view styles 2026-05-08 18:18:27 -04:00
kirillk 2acbadd045 refactor(jetbrains): group reasoning view styles 2026-05-08 18:14:29 -04:00
kirillk 776d0b5b66 refactor(jetbrains): group view style constants 2026-05-08 18:07:53 -04:00
kirillk 7ee0f093c0 refactor(jetbrains): move session styles into style package 2026-05-08 18:00:00 -04:00
kirillk 94721182a3 refactor(jetbrains): uppercase timeline style constants 2026-05-08 17:43:11 -04:00
kirillk 368f73c87c refactor(jetbrains): inline hover icon size 2026-05-08 17:41:23 -04:00
kirillk 7d51a1203c refactor(jetbrains): extract shared ui controls 2026-05-08 17:39:30 -04:00
kirillk 42924e8044 refactor(jetbrains): move session layout styles 2026-05-08 17:34:10 -04:00
kirillk 7594a05b77 refactor(jetbrains): move prompt styles into session ui 2026-05-08 17:20:58 -04:00
Kirill Kalishev f8da29ce58 Merge branch 'main' into kaput-peach 2026-05-08 17:20:11 -04:00
opencode-agent[bot] 35deef6175 chore: generate 2026-05-08 21:19:51 +00:00
vimtor 36f8b7e47d chore: reduce alerts false positives 2026-05-08 23:18:04 +02:00
opencode-agent[bot] f4337dff3c chore: update nix node_modules hashes 2026-05-08 21:11:02 +00:00
kirillk 6fbcfa7607 refactor(jetbrains): move recent session styles 2026-05-08 17:07:16 -04:00
kirillk c169cff09f styles 2026-05-08 17:02:34 -04:00
kirillk 3930fb61cd refactor(jetbrains): move timeline styles into session ui 2026-05-08 16:59:18 -04:00
opencode-agent[bot] ba8c920639 chore: generate 2026-05-08 20:57:36 +00:00
Kit Langton 5bb7b23440 Add native LLM core foundation (#24712) 2026-05-08 16:56:20 -04:00
opencode-agent[bot] dc7d665e94 chore: generate 2026-05-08 20:22:22 +00:00
Shoubhit Dash 40d5ea1cf1 feat(core): add scout agent for repo research (#24149)
Co-authored-by: Dax Raad <d@ironbay.co>
2026-05-08 20:20:08 +00:00
Christiaan Arnoldus 045fa89133 Merge pull request #10077 from Kilo-Org/fix/read-stream-utf8
fix(cli): stream UTF-8 reads in read tool again
2026-05-08 22:10:45 +02:00
kirillk cf22a6ede8 refactor(jetbrains): rename SessionStyle to SessionEditorStyle
Rename SessionStyle → SessionEditorStyle and SessionStyleTarget →
SessionEditorStyleTarget throughout to better reflect that this type
carries editor-derived styling (fonts, colors, scheme) applied to
session UI components.
2026-05-08 16:04:06 -04:00
kirillk a1ffc7751a Merge remote-tracking branch 'origin/main' into kaput-peach 2026-05-08 16:04:05 -04:00
Catriel Müller 48ea18e613 Merge pull request #10083 from Kilo-Org/horn-taurus
fix(cli): handle broken symlinks and junctions for config directories on Windows
2026-05-08 17:02:25 -03:00
kirillk c9c1f999ab chore: bump plugin lock files to @kilocode/plugin 7.2.40 2026-05-08 16:02:12 -04:00
kirillk 2448e1f069 refactor(jetbrains): update remaining Gap alias usages after Space removal
Update ProgressPanel, SessionLayout, and CompactionView to use the
canonical Gap method names (md, small, lg) now that the old aliases
(inline, part, regular) were removed along with UiStyle.Space.
2026-05-08 16:02:07 -04:00
kirillk 5461f51b3e refactor(jetbrains): remove UiStyle.Space and replace with Gap calls
Replace all UiStyle.Space.* constant usages with the corresponding
UiStyle.Gap.*() functions throughout the JetBrains plugin UI code.
Also fixes a pre-existing double-scale bug in EmptySessionPanel where
JBUI.scale(UiStyle.Gap.pad()) was called instead of UiStyle.Gap.pad().
2026-05-08 15:58:38 -04:00
Catriel Müller 7d730e2fb7 fix(cli): remove silent error swallowing in ensureRealDir 2026-05-08 16:49:53 -03:00
kirillk 706691d390 style(vscode): format Agent Manager tab rendering 2026-05-08 15:48:01 -04:00
Catriel Müller 86287939e6 Merge pull request #10080 from Kilo-Org/foam-log
fix: robust provider handling when credentials are misconfigured
2026-05-08 16:46:22 -03:00
Catriel Müller 53ef0be6b9 fix(cli): handle broken symlinks and junctions for config directories on Windows 2026-05-08 16:45:49 -03:00
kiloconnect[bot] 67e9fdc2cf fix(cli): destroy raw fs read stream on consumer teardown
When the consumer (readLines) hits the line/byte cap and destroys the
PassThrough, the underlying createReadStream had no link back and would
keep reading chunks to EOF in the background, defeating the early-exit
optimisation for large files.
2026-05-08 19:39:45 +00:00
kiloconnect[bot] 1cf09437f9 fix(cli): stream UTF-8 reads in read tool again
Optimistically stream the file as UTF-8 -- the common case -- using a
fatal-mode TextDecoder so the read tool can stop pulling bytes from
disk once the line / 50KB byte cap is hit. Only fall back to a
full-buffer iconv decode when the bytes turn out not to be valid UTF-8.

The streaming + retry logic lives in a new kilo helper
(packages/opencode/src/kilocode/text-stream.ts) so the read tool's
`lines` function stays close to upstream OpenCode shape.
2026-05-08 19:30:48 +00:00
github-actions[bot] abf2e2a20b chore: update kilo-vscode visual regression baselines 2026-05-08 19:03:30 +00:00
Chris Huber 6e47ae769e fix(cli): forward signals from npm shim (#26259)
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-05-08 14:00:51 -05:00
kirillk 1c12c0be9e fix(vscode): address Agent Manager tab review 2026-05-08 15:00:00 -04:00
opencode-agent[bot] 9ca4be62bd chore: generate 2026-05-08 18:51:43 +00:00
github-actions[bot] ccc556e79c chore: update kilo-vscode visual regression baselines 2026-05-08 18:50:47 +00:00
Dax fed221e0b0 fix(skill): allow missing descriptions (#26391) 2026-05-08 18:50:06 +00:00
Kirill Kalishev e884c3509e Merge branch 'main' into kaput-peach 2026-05-08 14:48:33 -04:00
kirillk eb4ae71b66 fix(vscode): align Agent Manager tab tooltips 2026-05-08 14:47:27 -04:00
Christiaan Arnoldus cc2f986033 Merge pull request #10076 from Kilo-Org/fix/apply-patch-update-encoding
fix(cli): use encoding-aware read in apply_patch update case
2026-05-08 20:44:49 +02:00
kirillk 391379f161 fix(jetbrains): refine empty session layout 2026-05-08 14:38:32 -04:00
kirillk 0aa908c7af fix(vscode): keep Agent Manager add tab visible 2026-05-08 14:17:53 -04:00
Kit Langton 75308ea47d test(server): add HttpApi auth exercise mode (#26386) 2026-05-08 14:05:46 -04:00
kiloconnect[bot] 8651bdceac test(cli): assert apply_patch returns non-mojibake diff for non-UTF-8 files
The existing apply_patch encoding test only checked final file bytes,
which were correct because Patch.deriveNewContentsFromChunks does its
own encoding-aware read. The diff and additions/deletions counts
returned to the user (and shown in the permission prompt) were
nonetheless garbled because the surrounding tool reused a hard-coded
UTF-8 decoder. Pin the diff metadata to catch that regression.
2026-05-08 18:00:29 +00:00
Kit Langton daa3116f4b refactor(server): split HttpApi exercise harness (#26385) 2026-05-08 17:58:14 +00:00
Catriel Müller cd67db9501 fix: kilocode markers 2026-05-08 14:54:30 -03:00
opencode-agent[bot] 9e7f7bf8e4 chore: generate 2026-05-08 17:46:57 +00:00
Simon Klee 4d43d584fe cli/run: switch to global event stream (#26383) 2026-05-08 19:44:31 +02:00
Catriel Müller 71067656e2 fix: address PR review feedback on provider failed-state filtering and JSON parse safety 2026-05-08 14:38:43 -03:00
John Fawcett 799ac4aeeb fix: restore package-lock.json files to match main 2026-05-08 17:23:20 +00:00
kirillk 78e40436b6 fix(vscode): stabilize Agent Manager tab tooltips 2026-05-08 13:19:07 -04:00
Kirill Kalishev 744fb1df5c Merge branch 'main' into morning-tibia 2026-05-08 13:14:11 -04:00
Kit Langton 3052a79b32 refactor(server): clarify HttpApi route auth layers (#26372) 2026-05-08 13:06:00 -04:00
kirillk a5f2fbc9fd feat(vscode): move Agent Manager tab bar new/search controls to left with separators 2026-05-08 12:52:00 -04:00
Catriel Müller b961ed3ca1 refactor: address the comments 2026-05-08 13:46:04 -03:00
Rajvardhan Patil 13b3117ca9 fix(server): require auth for effect root routes (#26361)
Co-authored-by: Rajvardhan Patil <243567420+RajvardhanPatil07@users.noreply.github.com>
2026-05-08 16:39:11 +00:00
Catriel Müller ff31c68adc fix: add failed field to provider story fixture 2026-05-08 13:35:34 -03:00
Catriel Müller 11297e4c5a fix: fix providers with wrong credentials 2026-05-08 13:32:35 -03:00
Ligia Zanchet c87bf9f078 Update auto-docs workflow for PR handling 2026-05-08 18:01:31 +02:00
Aiden Cline 83bb216486 fix: ensure tools are always in same order (#26370) 2026-05-08 10:59:41 -05:00
opencode-agent[bot] fc46cef5fd chore: generate 2026-05-08 15:49:37 +00:00
Aiden Cline 799996db76 fix: adjust tui retry dialog logic to be more provider specific and error case specific (#26366) 2026-05-08 10:48:19 -05:00
kiloconnect[bot] c48b31c3ec fix(cli): use encoding-aware read in apply_patch update case
Bom.readFile uses a hard-coded UTF-8 TextDecoder, so the oldContent
captured for the diff, additions/deletions counts, and permission-prompt
metadata was mojibake for any non-UTF-8 file. The actual bytes written
were correct because deriveNewContentsFromChunks already does
encoding-aware reads, but the user-visible diff did not reflect the real
file contents. Switch to EncodedIO.read to match.
2026-05-08 15:35:27 +00:00
opencode-agent[bot] df75bfe07c chore: generate 2026-05-08 15:10:32 +00:00
James Long c818c9dcb6 feat(core): allow external workspace creation (#26212) 2026-05-08 11:09:12 -04:00
Kirill Kalishev c0c232ae9a Merge pull request #10073 from Kilo-Org/fix/agent-manager-tab-tooltip-instant
fix(vscode): set instant tooltip open delay on agent manager tabs
2026-05-08 10:58:47 -04:00
arrrkady e184492e4d Merge pull request #10061 from Kilo-Org/docs/enrich-openai-chatgpt-subscription
docs: enrich OpenAI and ChatGPT Plus/Pro provider pages
2026-05-08 16:40:03 +02:00
arrrkady f671ea5e7c Merge branch 'main' into docs/enrich-openai-chatgpt-subscription 2026-05-08 16:30:10 +02:00
arrrkady d8f375c7a1 Update packages/kilo-docs/pages/ai-providers/openai-chatgpt-plus-pro.md
Co-authored-by: Rietie <job@kilocode.ai>
2026-05-08 16:29:54 +02:00
Catriel Müller 1658949891 Merge pull request #10075 from Kilo-Org/quiver-lotus
fix(cli): preserve model selector sections while filtering
2026-05-08 11:26:15 -03:00
Kit Langton c36ab3f935 fix(provider): align Gemini thinking controls (#26279) 2026-05-08 10:22:45 -04:00
kilo-maintainer[bot] e306eb3f79 release: v7.2.48 2026-05-08 14:13:57 +00:00
Catriel Müller 98d370e026 fix(cli): add missing kilocode_change markers on modified/removed upstream lines 2026-05-08 11:10:51 -03:00
Catriel Müller c5ee649915 fix(cli): preserve category order within provider options while filtering 2026-05-08 11:03:24 -03:00
Catriel Müller 575454a631 fix(cli): add kilocode_change marker on removed flat prop 2026-05-08 10:59:38 -03:00
Catriel Müller 8f8245db12 fix(cli): preserve model selector sections while filtering 2026-05-08 10:56:57 -03:00
Rietie 1d019ac206 Merge pull request #10071 from Kilo-Org/docs/sitemap-xml
docs(kilo-docs): add sitemap.xml route
2026-05-08 15:37:28 +02:00
kiloconnect[bot] 8eb39d0d28 fix(vscode): set instant tooltip open delay on agent manager tabs 2026-05-08 13:33:56 +00:00
Imanol Maiztegui a68fcc255a Select Branch / Unstaged / Staged views on diff viewer (#10065)
* feat(diff-viewer): add base branch picker to workspace diff source

Introduce a UI control that lets users override the comparison base
branch in the diff viewer. The picker lists local and remote branches
sorted by commit date, with a "Default" option that falls back to the
auto-resolved tracking/default branch.

Key changes:
- Add `listBranches` to GitOps for sorted branch enumeration
- Extend DiffSourceCatalog with base branch override state and disposal
- Add `reactivate` method to SourceController for in-place source rebuild
- Create shared BranchSelect component (moved from agent-manager)
- Add BaseBranchPicker component for the diff viewer header
- Wire new webview messages (requestBranches, setBaseBranch, branches)
- Add i18n keys for all supported locales
- Register DiffSourceCatalog as disposable in extension activation

* refactor(diff-sources): extract staged and unstaged git diff sources into standalone modules

Decompose the diff source system by introducing dedicated modules for
staged (index vs HEAD) and unstaged (working tree vs index) views,
alongside shared git-status parsing utilities.

- Create git-status.ts with reusable parseNameStatus, parseNumstat,
  showBlob, readDisk helpers and the summarize builder
- Implement staged.ts source using `git diff --cached` against HEAD
- Implement unstaged.ts source combining tracked diffs with untracked
  file enumeration via `git ls-files --others`
- Register both sources in DiffSourceCatalog when a workspace root exists
- Extend DiffSourceType union with "staged" and "unstaged" variants
- Rename workspace label from "Local Changes" to "Branch" and add
  i18n entries for the new source picker options

* feat(vscode): display current branch in diff viewer base branch picker

Show the currently checked-out branch (HEAD) alongside the base branch
selector with an arrow indicator (current → base), providing clearer
context for which branches are being compared in the diff viewer.

* refactor(diff): replace magic empty string with named INDEX_REF constant and fix disposal

Extract `INDEX_REF` constant in git-status module to clarify intent when
referencing the staging area instead of a commit. Update staged and
unstaged sources to use it. Additionally:

- Clear `baseBranchOverride` on dispose to prevent stale state
- Apply `generatedLike` detection to staged diff source
- Update tests to reflect new disposal semantics

* fix(vscode): move baseBranchOverride state from catalog to provider

Relocate the base branch override from DiffSourceCatalog into
DiffViewerProvider where it belongs as panel-level state. Pass it
through PanelContext so the catalog remains stateless and testable.

- Add `baseBranchOverride` field to PanelContext type
- Thread override via ctx in DiffViewerProvider.openPanel and setBaseBranch
- Remove setBaseBranchOverride/getBaseBranchOverride from catalog
- Accept override as parameter in listWorkspaceBranches
- Simplify catalog dispose and update tests accordingly

* feat(i18n): add staged/unstaged diff source labels and rename workspace to branch

Introduce translated strings for the new "staged" and "unstaged" diff
viewer source options across all 18 locale files. Rename the existing
workspace source label from "Local changes" to "Branch" in each
language to better reflect its scope.

* test(vscode): update diff source catalog tests to include staged and unstaged entries

Align test expectations with the newly added staged/unstaged diff
sources. The listAvailable assertions now verify that both "staged"
and "unstaged" appear alongside "workspace" in the returned source
list.

* fix(vscode): add path traversal protection and size guards to diff sources

Introduce `resolveInside` to reject absolute paths and `..` traversal
that could escape the workspace directory. Replace raw `path.join`
calls in `readDisk`, `fileSize`, and unstaged file lookups with the
safe resolver.

Add `blobSize` and `fileSize` helpers to check content length before
reading, skipping detail fetches for files exceeding MAX_DETAIL_BYTES
in both staged and unstaged sources. Re-export MAX_DETAIL_BYTES from
git-status for shared access.

* fix(diff): resolve override branch refs via remote fallback

When `baseBranchOverride` is a short remote-tracking name (e.g.
`feature` from `refs/remotes/origin/feature`), `git merge-base` fails
because no local branch exists. Add `resolveOverrideRef` that attempts
`rev-parse --verify` on the short name first, then falls back to
`origin/<name>` before giving up entirely and resuming auto-detection.

* fix(vscode): use lstat for symlink-safe working-tree reads

Replace `fs.stat` with `fs.lstat` in `readDisk`, `fileSize`, and
unstaged file enumeration to avoid following symlinks. For symlink
entries, `readDisk` now returns the link target string (matching git's
blob storage) instead of reading the pointed-to file's contents.

This prevents untracked symlinks from leaking arbitrary file contents
(e.g. `~/.aws/credentials`) into the diff viewer, since `resolveInside`
only guards against lexical path traversal, not symlink dereferencing.

* refactor(diff): propagate mtime-based stamps for untracked file cache invalidation

Untracked files always report additions/deletions as 0 since numstat
cannot compute them without an index blob. This made the webview cache
unable to detect edits to untracked files, leaving stale content visible
between polling cycles.

Introduce an optional `stamp` field on `FileEntry` that encodes
size+mtime for untracked entries, and thread it through `summarize()`
and `fetchFile()` so cache keys update whenever the file is modified on
disk. Tracked entries continue using the numstat-derived stamp as before.

* fix(vscode): log for-each-ref failures in listBranches instead of silently swallowing

Replace the empty `.catch(() => "")` with a handler that logs the
error message before returning the fallback empty string, improving
debuggability when branch enumeration fails.
2026-05-08 15:30:19 +02:00
arrrkady c01de97531 Merge branch 'main' into docs/sitemap-xml 2026-05-08 15:23:48 +02:00
Catriel Müller 4395f5e679 Merge pull request #10069 from Kilo-Org/docs/windows-shift-enter-terminal
docs(cli): add Windows Terminal Shift+Enter configuration guide
2026-05-08 10:14:19 -03:00
kiloconnect[bot] 8465e90a67 docs(kilo-docs): add sitemap.xml route 2026-05-08 13:10:03 +00:00
Josh Holmer 924f034e12 fix(indexing): allow custom dimensions with kilo embedding provider (#10045) 2026-05-08 14:58:10 +02:00
Catriel Müller 03822a836a docs(cli): add Windows Terminal Shift+Enter configuration guide 2026-05-08 09:55:44 -03:00
Catriel Müller 875f414ab7 Merge pull request #10036 from Kilo-Org/catrielmuller/prompt-flaky-test
test(cli): fix flaky prompt.test.ts timing races
2026-05-08 09:27:32 -03:00
Marius c451d007e8 fix(agent-manager): reuse shared diff source lifecycle (#10067)
* fix(agent-manager): reuse shared diff source lifecycle

* fix(agent-manager): resolve inactive diff reverts
2026-05-08 14:10:13 +02:00
Marius 5456c962dd fix(agent-manager): avoid tag fetches for worktrees (#10059)
* fix(agent-manager): avoid tag fetches for worktrees

* chore(agent-manager): format worktree fetch
2026-05-08 12:01:43 +00:00
vimtor e3c983c21f chore: reduce provider alerts query frequency 2026-05-08 14:00:24 +02:00
opencode-agent[bot] a196569f51 chore: generate 2026-05-08 11:56:55 +00:00
Sebastian 19da27e1cb internal which-key plugin, inactive by default (#26337) 2026-05-08 13:55:49 +02:00
Marius eb8334db01 fix(agent-manager): preserve promoted session worktree context (#10058)
* fix(agent-manager): preserve promoted session worktree context

* fix(cli): guard worktree context outside instance scope
2026-05-08 13:45:47 +02:00
Marius 3cf5d151ff fix(vscode): reveal sidebar before adding context (#10066) 2026-05-08 13:45:15 +02:00
kilo-maintainer[bot] 542a1daf81 chore: update nix node_modules hashes 2026-05-08 11:00:12 +00:00
Marius 05b10d975d Improve diff viewer expand collapse control (#10057)
* fix(vscode): improve diff viewer expand collapse state

* fix(ui): add distinct diff file toggle icons

* test(vscode): cover diff panel bulk action icons

* test(vscode): cover diff bulk action controls

* chore: update kilo-vscode visual regression baselines

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-08 10:57:54 +00:00
Marius ebda89b34a fix(agent-manager): stop repeated diff preview loads (#10064) 2026-05-08 10:50:09 +00:00
Marius d08238d5d1 fix(vscode): speed up changes diff rendering (#10063)
* fix: speed up changes diff rendering

* fix: preserve deferred diff selection
2026-05-08 12:49:12 +02:00
Christiaan Arnoldus b726c7472f Merge pull request #10051 from Kilo-Org/chore/bump-simple-git-3.36.0
chore(deps): bump simple-git to 3.36.0
2026-05-08 12:48:50 +02:00
Christiaan Arnoldus 7f53fac776 Merge pull request #10060 from Kilo-Org/chore/bump-dompurify-3.4.2
chore: bump dompurify to 3.4.2
2026-05-08 12:45:48 +02:00
Christiaan Arnoldus 9bebdce9e3 Merge pull request #10062 from Kilo-Org/chore/bump-uuid-kilocode-lockfile
chore(deps): bump uuid to 13.0.2 in .kilocode lockfile
2026-05-08 12:45:33 +02:00
Frank 4a737493ac Revert "zen: update tpm rate limit algo"
This reverts commit 6869186fc6.
2026-05-08 06:31:12 -04:00
opencode-agent[bot] ec301f6a2c chore: update nix node_modules hashes 2026-05-08 10:31:03 +00:00
arrrkady 21832f6b63 Merge branch 'main' into docs/enrich-openai-chatgpt-subscription 2026-05-08 12:19:59 +02:00
kilo-maintainer[bot] 84789705af chore: update nix node_modules hashes 2026-05-08 10:18:50 +00:00
Kilo Bot 24f6702805 docs: remove Recommended models section from ChatGPT Plus/Pro page 2026-05-08 10:18:36 +00:00
opencode-agent[bot] ac7a885ae9 chore: generate 2026-05-08 10:18:22 +00:00
Simon Klee 7f2b5ee8c2 feat(opencode): add interactive split-footer mode to run (#23557) 2026-05-08 12:17:14 +02:00
kiloconnect[bot] 28b18d362e chore(deps): bump uuid to 13.0.2 in .kilocode lockfile 2026-05-08 10:16:43 +00:00
Kilo Bot 1c39382674 docs: enrich OpenAI and ChatGPT Plus/Pro provider pages with subscription setup guide
- Add tip callout to openai.md pointing ChatGPT subscribers to the Plus/Pro page
- Expand openai-chatgpt-plus-pro.md with intro, recommended models table,
  enriched tips, limitations, and FAQ sections sourced from blog post
  https://blog.kilo.ai/p/use-chatgpt-subscription-inside-kilo
2026-05-08 10:12:12 +00:00
Marius 562c828559 fix(agent-manager): keep ungrouped worktrees above sections (#10056) 2026-05-08 12:07:06 +02:00
kiloconnect[bot] 3fdcde745f chore: simplify changeset wording 2026-05-08 10:06:46 +00:00
vimtor 15784aa036 chore: reduce alerts threshold 2026-05-08 12:06:39 +02:00
Marius f9fa1a7efd fix(agent-manager): expand reviewable diffs by default (#10055)
* fix(agent-manager): expand reviewable diffs by default

* style(agent-manager): format diff panel
2026-05-08 12:06:24 +02:00
Marius 09a7be8fcd fix(vscode): improve file mention search ranking (#10053)
* fix(vscode): improve file mention search ranking

* fix(vscode): avoid stale file mention selections
2026-05-08 12:06:05 +02:00
kiloconnect[bot] 0cc04158d0 chore: bump dompurify to 3.4.2 for security fixes 2026-05-08 10:00:49 +00:00
Marian Alexandru Alecu 0cbf9b040b Merge pull request #10050 from Kilo-Org/fix/suggest-local-review-more-often
fix(cli): suggest reviews more often
2026-05-08 12:58:26 +03:00
kilo-maintainer[bot] 6c29b8f8a8 chore: update nix node_modules hashes 2026-05-08 09:28:16 +00:00
kiloconnect[bot] 48616ec680 chore: rewrite simple-git changeset for end users 2026-05-08 09:28:00 +00:00
kiloconnect[bot] 5375b29985 fix(vscode): only allow unsafe SSH command when Kilo-generated
Addresses review feedback: nonInteractiveEnv() preserves an inherited
GIT_SSH_COMMAND, so unconditionally passing allowUnsafeSshCommand=true
would reopen the vector simple-git 3.36.0 closes. Gate the flag on
isKiloOwnedSshCommand() so we only bypass the check for our fixed
'ssh -o BatchMode=yes' value; inherited commands are rejected as
before.
2026-05-08 09:17:04 +00:00
kilo-maintainer[bot] b7f436b5b7 release: v7.2.47 2026-05-08 09:13:52 +00:00
Marius e5d8c4f18d feat(agent-manager): comment on rendered markdown (#10054) 2026-05-08 11:13:46 +02:00
arrrkady 58cbc138f5 Merge pull request #10018 from Kilo-Org/docs/seo-title-updates
docs: SEO-optimize titles for CLI, VS Code, JetBrains, and docs index
2026-05-08 11:03:23 +02:00
kiloconnect[bot] a016a5b9f7 fix(vscode): opt into allowUnsafeSshCommand for non-interactive fetch
simple-git 3.36.0 blocks GIT_SSH_COMMAND by default. Our
nonInteractiveEnv() intentionally sets it to 'ssh -o BatchMode=yes'
to prevent passphrase popups during background fetches, so enable
the allowUnsafeSshCommand opt-in on the instance that uses it.
2026-05-08 09:01:03 +00:00
arrrkady c07a29fd45 Merge branch 'main' into docs/seo-title-updates 2026-05-08 10:54:19 +02:00
Imanol Maiztegui 3ff3702a74 fix(vscode): add DOM.Iterable lib to fix SDK Headers.entries() typecheck (#10052) 2026-05-08 10:53:25 +02:00
Christiaan Arnoldus 0397767075 Merge pull request #10014 from Kilo-Org/fix/kilo-provider-cost-anthropic-messages
fix(cli): extract Kilo provider cost from Anthropic Messages and OpenAI Responses APIs (OpenRouter)
2026-05-08 10:51:01 +02:00
opencode-agent[bot] edbc02855d chore: generate 2026-05-08 08:50:42 +00:00
Shoubhit Dash a43d3e0e1e feat(websearch): add parallel provider rollout (#26227) 2026-05-08 14:19:36 +05:30
Alex Alecu d403075d3e fix(cli): skip review prompts after review fixes 2026-05-08 11:46:07 +03:00
Shoubhit Dash ae25278eda test(session): update go retry fixture (#26312) 2026-05-08 14:10:18 +05:30
kiloconnect[bot] 2d50e1f2dd chore(deps): bump simple-git to 3.36.0
Picks up expanded blocking of exploitable git config keys (core.fsmonitor,
--template, merge-related) and GIT_CONFIG_COUNT env var. No breaking API
changes for our usage — the only removed export (ParsedVulnerabilities)
is not referenced anywhere in the repo.
2026-05-08 08:36:22 +00:00
kiloconnect[bot] 45f12a6a70 docs(cli): update providerCost section heading for new transports 2026-05-08 08:26:39 +00:00
kiloconnect[bot] 4b883792fb chore: simplify cost-reporting changeset message 2026-05-08 08:22:28 +00:00
Imanol Maiztegui 0dca09e500 fix(vscode): re-add skipLibCheck to unblock publish build (#10049) 2026-05-08 10:21:49 +02:00
kiloconnect[bot] c8446f5231 docs(cli): clarify why Kilo prefers upstream cost over gateway cost
Kilo isn't always BYOK; what matters here is that Kilo doesn't charge a
per-request fee on top of the upstream inference cost. So for the Kilo
provider, the gateway/marketplace `cost` would understate the user's true
spend — always prefer the upstream/market cost when present.
2026-05-08 08:19:44 +00:00
Christiaan Arnoldus cc74d169ff Merge pull request #9969 from Kilo-Org/fix/cli-prompt-loop-missing-finish-reason
fix(cli): prevent agent loop hang when stream ends without stop_reason
2026-05-08 10:10:48 +02:00
Alex Alecu f1ae973c53 fix(cli): suggest local reviews more often 2026-05-08 11:06:33 +03:00
Frank 6869186fc6 zen: update tpm rate limit algo 2026-05-08 03:52:59 -04:00
Frank f8c6742e54 zen: lift default rate limit 2026-05-08 03:52:59 -04:00
opencode-agent[bot] 014dbd34c4 chore: generate 2026-05-08 06:20:21 +00:00
Brendan Allan 21ae91b4f2 refactor(desktop): convert main process to Effect-TS (#26148) 2026-05-08 14:19:09 +08:00
Frank bb3f14119b tui: update go upsell copy 2026-05-08 01:51:33 -04:00
Luke Parker 6f165e23de perf(ui): defer tool status width measurement (#26282) 2026-05-08 15:36:28 +10:00
opencode-agent[bot] cef0c8ac84 chore: generate 2026-05-08 05:36:06 +00:00
Brendan Allan dd8bb44d1d refactor(desktop): use electron-log in shell-env and simplify env merging (#26284) 2026-05-08 13:34:53 +08:00
Frank 30868f52ea go: update rate limit error copy 2026-05-08 00:27:28 -04:00
opencode-agent[bot] 9c88235121 chore: generate 2026-05-08 04:18:54 +00:00
Aiden Cline 4e14f79511 fix: tweaks to transform logic for anthropic and bedrock (#26276) 2026-05-07 23:17:43 -05:00
Kit Langton e0396b809a fix(provider): align Anthropic Opus 4.5 efforts (#26275) 2026-05-08 00:06:07 -04:00
kirillk a7e5c4f0a9 feat(jetbrains): improve history navigation 2026-05-07 23:51:31 -04:00
Kit Langton 319498e2fd fix(provider): constrain OpenAI deep research efforts (#26273) 2026-05-07 23:43:42 -04:00
Erik Demaine 2ba9aa2196 feat(desktop): working indicator on project sidebar (#26223) 2026-05-08 11:42:39 +08:00
opencode-agent[bot] 114eeb21dc chore: generate 2026-05-08 03:33:55 +00:00
Kit Langton 1cf8123bc6 fix(provider): align GPT-5 reasoning variants (#26268) 2026-05-07 23:32:47 -04:00
kirillk 373b90a5c3 refactor(jetbrains): share history helpers with empty state 2026-05-07 23:28:59 -04:00
kirillk 2faa74d8b6 feat(jetbrains): add history back button 2026-05-07 23:16:12 -04:00
Frank db6a038829 sync 2026-05-07 22:55:50 -04:00
opencode-agent[bot] 6ff833a22b chore: generate 2026-05-08 02:40:47 +00:00
kirillk d630d66d89 fix(jetbrains): remove redundant session overload 2026-05-07 22:40:02 -04:00
Sebastian 5c401673b2 improve go sub animation perf (#26251) 2026-05-08 04:39:42 +02:00
kirillk b2be209507 refactor(jetbrains): replace open callback in SessionUi with manager: SessionManager? 2026-05-07 22:23:50 -04:00
kirillk bb5b63b236 refactor(jetbrains): collapse SessionUi id/session/target into single ref: SessionRef? 2026-05-07 22:16:42 -04:00
Kit Langton e8ce5df414 fix(tui): retain cleared prompt drafts (#26258) 2026-05-08 02:08:29 +00:00
kirillk c7f9add7d9 refactor(jetbrains): remove local/key/log helpers from SessionController, keep only ref and sid 2026-05-07 22:06:36 -04:00
kirillk 3d6586c883 fix(jetbrains): session loading state, history panel loading indicator, and model dedup
- Add SessionState.Loading and handle it in ProgressPanel and isBusy()
- Deduplicate setState calls in SessionModel (no-op when state unchanged)
- HistoryController now opens cloud items as SessionRef.Cloud instead of importing inline
- HistoryModel tracks loaded flag; HistoryPanel shows a loading card before first load
- SessionManager interface takes SessionRef instead of raw SessionDto
- build.gradle.kts: set splitModeServerPort for runIdeBackend task
- Test: NewSessionActionTest, SessionUiTestBase, SessionModelTest updated accordingly
2026-05-07 21:52:31 -04:00
kirillk 6b5ace20b7 fix(jetbrains): unify session identity in SessionRef and gate recents behind blank controller
Replace duplicated sessionId/cloud/initialSession controller fields with a single mutable
ref: SessionRef? computed from the incoming target. Explicit local and cloud session loads
now show the session view on completion instead of falling back to recents. Recents can
only run on blank controllers (ref == null, sessionLoadState Idle, showSession false) via
a canUseRecents() guard applied at all recents entry points. SessionRef gains id, type,
and a from()/resolve() parser so id-only Local refs are possible. SessionSidePanelManager
cache keys switch to ref.key/cacheKey and cloud-imported sessions can be reused by their
local id after import. Tests cover empty-explicit-session-shows-session, no-recents-
during-load, cloud import isolation, ref snapshot assertions, and cloud-to-local reuse.
2026-05-07 21:50:24 -04:00
Luke Parker b8799be3c8 feat(desktop): allow silent install and only user-wide scope (#26253) 2026-05-07 23:58:16 +00:00
opencode-agent[bot] 7ded0ec9e9 chore: generate 2026-05-07 21:54:31 +00:00
Aiden Cline f5d0371efe tui: go plan payg msg (#26248) 2026-05-07 16:53:24 -05:00
kirillk 16e0d314cc fix(jetbrains): open history panel sessions 2026-05-07 15:52:53 -04:00
Frank 22e64cac67 sync: cleanup 2026-05-07 15:27:36 -04:00
vimtor 2a1305f231 chore: increase alerting threshold 2026-05-07 21:07:26 +02:00
opencode-agent[bot] e691e8f274 chore: update nix node_modules hashes 2026-05-07 18:55:24 +00:00
Catriel Müller 8308d9b5de fix: fix flasky test 2026-05-07 15:46:56 -03:00
vimtor cc6dd5321c chore: improve variant parsing for zen 2026-05-07 20:38:14 +02:00
opencode-agent[bot] 2c17e3a4db chore: generate 2026-05-07 18:36:42 +00:00
Sebastian 98f5e6e713 introduce opentui keymap as sole key/cmd engine (#26053) 2026-05-07 20:35:31 +02:00
Frank 474e311f6f sync 2026-05-07 14:23:23 -04:00
John Fawcett 957911cc73 docs: verify and update wasteland workflow + admin pages (#10034)
* docs: verify and update wasteland workflow + admin pages against source code

- workflow.md: update stamp dimensions to reflect actual stamps.valence
  JSON structure (quality + reliability), confirmed quality enum
  (excellent/good/fair/poor), note evidence must be a valid URL,
  clarify wl unclaim is the abandon mechanism (no gt_wasteland_abandon)
- admin.md: update posting fields to show which are API-exposed vs
  wl-CLI-only, add review inbox owner+admin requirement callout,
  update inbox card kinds to match classifier (add Unknown), confirm
  quality enum in stamping section, note trust_level 0 for soft ban,
  add rig trust levels and PR management to permissions matrix,
  clarify two-tier API enforcement (member vs owner), update
  Create Your Own TODO with WS-Admin 7 ship status
- concepts.md: update quality scale to use enum values not 1-5,
  replace wild-west mode with direct mode terminology, add confidence
  field reference, update TODO for Mayor tool name
- quick-start.md: update quality scale to match confirmed enum

* docs(wasteland): add admin settings section, PR commenting, and accuracy fixes

- Add Admin Settings section to admin.md covering test admin access,
  pending PRs, rig management, and delete wasteland warnings
- Add Commenting on PRs subsection to review inbox
- Document admin-action subkinds (accept-upstream, close-upstream)
  in the review inbox card types
- Fix flowDiagram height attribute per spec (550 not 550px)
2026-05-07 18:22:55 +00:00
Victor Navarro 626a488fb8 chore: track model variant in honeycomb (#26188) 2026-05-07 19:38:04 +02:00
John Fawcett 111c48d8c3 docs(wasteland): flesh out workflow.md and admin.md 2026-05-07 17:26:47 +00:00
John Fawcett 4a352a198a docs(wasteland): add Quick Start and Settings pages (#10033)
* WIP: container eviction save

* docs(wasteland): fix stamp dimensions, claim TTL, item types based on verified protocol

Correct inaccuracies across wasteland docs verified against gastownhall/wasteland source:
- Remove Creativity dimension from stamps (only Quality/Reliability exist)
- Add Severity (leaf/branch/root) and skill tags to stamp descriptions
- Remove confidence level description (hardcoded to 1.0 in protocol)
- Fix wanted item types to match protocol (add design, rfc, docs, inference; remove chore)
- Confirm claims do not expire (no TTL mechanism in protocol)
- Add wl unclaim reference for releasing claims
- Add wl profile CLI reference for checking reputation
- Note DOLTHUB_TOKEN/DOLTHUB_ORG env vars for CLI users
- Clean up duplicate TODO verify comments
- Add TODO verify notes for Gas Town-specific additions (Creativity dimension, auto-submit toggle)

* docs(wasteland): add placeholder screenshots for missing image assets
2026-05-07 17:21:19 +00:00
Dax Raad a300a6cc7a rebase migrations properly 2026-05-07 12:38:29 -04:00
John Fawcett 9c62506192 docs(wasteland): flesh out quick-start and settings pages
Write full content for wasteland/quick-start.md (8-section happy path
from prerequisites to getting stamped) and wasteland/settings.md (7
sections covering connection, upstream, rig handle, DoltHub PAT,
filters, auto-submit, and admin settings). Include BrowserFrame
placeholders, security callouts for fine-grained DoltHub PATs, and
TODO: verify markers for unverified claims.
2026-05-07 16:33:23 +00:00
John Fawcett 7c46873b2c docs(wasteland): Overview and Concepts pages (#10031)
* docs(wasteland): flesh out Overview and Concepts pages

- index.md: hero paragraph, What is the Wasteland, federation model with flowDiagram, roles table, Gas Town by Kilo benefits, navigation links, 4 BrowserFrame placeholders (settings, wanted board, mayor claiming, claim detail drawer)
- concepts.md: 11 H2 sections covering Wasteland instance, federation, rig identity, wanted board, item lifecycle with flowDiagram, claims, evidence, stamps, reputation ledger, validators, DoltHub PRs
- All unverified claims marked with TODO: verify comments
- Cross-links to workflow, admin, and settings pages with /docs/ prefix

* docs(wasteland): add placeholder screenshot images and TODO comments
2026-05-07 16:21:04 +00:00
John Fawcett 297a0227bb feat(docs): add Wasteland Flow diagrams (#10030)
* feat(docs): add Wasteland Flow diagrams (federation, lifecycle, claim-to-stamp)

* fix(docs): add px units to flowDiagram height attributes

Reviewers flagged that unitless height values render as invalid CSS
because Markdoc supplies them as strings. Adding px suffix matches
all existing FlowDiagram usages in the codebase.
2026-05-07 15:48:26 +00:00
kilo-maintainer[bot] b6966f4c21 chore: update nix node_modules hashes 2026-05-07 15:31:06 +00:00
John Fawcett 890211275f docs(kilo-docs): scaffold Wasteland docs section + register in nav (#10028)
* docs(kilo-docs): scaffold Wasteland docs section

Add stub pages for the Wasteland federated work protocol under
gastown/wasteland/ and register them in the code-with-ai nav.

SideNav only renders one level of subLinks, so Wasteland pages are
flattened into the Gastown subLinks list with a 'Wasteland: ' prefix.

Content for each stub will be filled in by later beads in the convoy.

* docs(kilo-docs): noindex Wasteland stub pages until content lands

Adds a noindex frontmatter flag (read by _app.tsx, emits a robots
noindex,nofollow meta tag) and applies it to the 7 Wasteland stub
pages. Stubs are intentionally thin in this scaffolding PR;
follow-up beads will flesh them out and remove the flag.
2026-05-07 15:16:31 +00:00
Marius 9de7c986e7 Support Kilo-hosted indexing embeddings (#9851)
* feat: support Kilo-hosted indexing embeddings

* fix: format indexing settings

* fix: serialize local model persistence

* fix: annotate local model persistence

* fix: stabilize MCP OAuth browser test

* fix: annotate MCP OAuth test wait

* fix: keep KiloProvider under line cap

* fix: align Kilo indexing auth defaults

* fix(vscode): add missing indexing translations

* feat(indexing): fetch Kilo embedding model catalog

* fix(indexing): align Kilo embedding metadata fallback

* fix(gateway): remove unused indexing dependency

* fix(indexing): keep fallback catalog webview safe

* fix(agent-manager): include embedding model provider

* fix(vscode): provide embedding models in stories

* refactor(indexing): rely on Cloud embedding catalog

* fix(indexing): hydrate Kilo model metadata from Cloud

* fix(indexing): clear model when switching provider
2026-05-07 17:14:26 +02:00
kilo-maintainer[bot] d7878d972a chore: update nix node_modules hashes 2026-05-07 15:14:22 +00:00
Imanol Maiztegui 4764f663a5 fix(vscode): correct diff line numbers in tool calls (#10000)
* fix(ui): correct diff line numbers by padding hunks to their real file positions

When reconstructing before/after content from patches, hunks starting
at lines other than 1 were rendered starting at line 1. Pad blank lines
before each hunk so content aligns with actual file line numbers. Also
add hunkSeparators="simple" prop across all diff viewer instances and
guard against undefined patch parse results.

* refactor(diff): replace content reconstruction with Pierre's native FileDiffMetadata rendering

Migrate all diff viewers from manually reconstructing before/after strings
to passing FileDiffMetadata directly to Pierre's renderer. This ensures
hunk headers are the source of truth for line numbers without requiring
blank-line padding.

Key changes:
- Rename `contents()` to `normalize()` and return FileDiffMetadata
  alongside before/after text for legacy consumers
- Introduce discriminated union DiffProps (DiffPair | DiffPatch) so
  components accept either before/after or a pre-parsed fileDiff
- Thread `patch` field through openDiff payloads and DiffVirtualProvider
- Update DiffVirtualApp, PermissionDiff, and message-part to use the
  new `normalize()` API and render via fileDiff prop
- Add test coverage verifying hunk start lines are preserved without
  padding

BREAKING CHANGE: `contents()` export from session-diff is removed; consumers must migrate to `normalize()`

* fix(diff): normalize trailing newline in text() helper output

* refactor(ui): remove before/after fields from diff payload interfaces

The diff pipeline now relies exclusively on patch strings for rendering
and opening diffs. This eliminates the redundant before/after content
fields from DiffVirtualFile, PermissionFileDiff, OpenDiffFn, and
ApplyPatchFile interfaces across all packages.

- Drop before/after from all diff-related type definitions
- Simplify normalize() call sites to require only patch presence
- Make DiffText type private (no longer exported from session-diff)
- Update edit tool to render from tool input during pending state
- Fix DiffVirtualApp to nest markdown view inside patch guard
- Adjust contract tests to match new fallback behavior

* fix(kilo-ui): Move session-diff normalization logic into kilo-ui package

* refactor(ui): decouple DiffProps type hierarchy between shared and kilo-ui packages

Simplify the shared ui package's DiffProps back to a single concrete
type requiring before/after contents, and relocate the discriminated
union (DiffPair | DiffPatch with optional FileDiffMetadata) into the
kilo-ui package where patch-based rendering is actually needed.

- Revert shared DiffProps to a flat type without fileDiff variant
- Define extended DiffProps union in kilo-ui/src/pierre/index.ts
- Update kilo-ui diff components to import from local pierre module
- Expand OpenDiffFn signature with optional before/after fields
2026-05-07 15:00:46 +00:00
Christiaan Arnoldus 3b81a88ac5 Merge pull request #10009 from Kilo-Org/refactor/narrow-openai-responses-markers
refactor(cli): narrow kilocode_change markers around Responses-API guard
2026-05-07 16:59:56 +02:00
Mark IJbema 8ceccb596d Merge pull request #10027 from Kilo-Org/mark/extract-kilo-instruction-tests
test(cli): extract Kilo-specific instruction tests to own file
2026-05-07 16:59:00 +02:00
kiloconnect[bot] 2f3068e18d test(cli): move new providerCost tests into test/kilocode/
Move the new Anthropic Messages, OpenAI Responses and Vercel AI Gateway
cost-extraction tests out of the shared upstream `test/session/compaction.test.ts`
file into `test/kilocode/provider-cost.test.ts` to keep Kilo-specific test
coverage in a Kilo-owned location and minimize merge conflicts with upstream.
2026-05-07 14:56:24 +00:00
Mark IJbema 2a38890c91 Merge pull request #10024 from Kilo-Org/mark/kilocode-change-marker-system-ts
chore(cli): mark editorContext param as kilocode_change in system prompt
2026-05-07 16:52:15 +02:00
opencode fe594693a4 sync release versions for v1.14.41 2026-05-07 14:52:09 +00:00
opencode 8ba2a91715 release: v1.14.41 2026-05-07 14:51:57 +00:00
kiloconnect[bot] c8073d9014 fix(cli): also extract Kilo cost from OpenAI Responses API responses
Refactor providerCost to read `usage.raw.cost_details.upstream_inference_cost`,
which both `@ai-sdk/anthropic` (`convertAnthropicUsage`) and `@ai-sdk/openai`
(`convertOpenAIResponsesUsage`) populate with the verbatim OpenRouter usage
object. This unifies the Anthropic Messages and OpenAI Responses cost paths
through a single branch and removes the redundant `metadata.anthropic.usage`
branch (the SDK exposes the same data under both keys for Anthropic, and only
under `raw` for Responses).
2026-05-07 14:51:18 +00:00
kilo-agent 36a265520f drop restored upstream comments
They're upstream opencode comments, not kilo changes, so they
shouldn't live inside kilocode_change markers — and outside the
markers they add noise to this PR's diff. Drop them.
2026-05-07 14:48:31 +00:00
kiloconnect[bot] d3a8f83bd2 test(cli): extract Kilo-specific instruction tests to own file
Move KILO_CONFIG_DIR profile fallback tests out of the shared upstream
instruction.test.ts into packages/opencode/test/kilocode/instruction.test.ts
to reduce future merge conflicts with opencode.
2026-05-07 14:46:53 +00:00
kiloconnect[bot] 681838bb78 fix: restore root package.json entries dropped by upstream-compat
Restores the `postinstall` tail (`bun run script/setup-git.ts`, needed for
repo-local `merge.conflictStyle=zdiff3`) and the `dev-setup` script shorthand,
and drops `dev:desktop` / `dev:web` / `dev:console` plus `@sentry/solid` and
`@sentry/vite-plugin` catalog entries — none of which have Kilo consumers.

Refs #10003.
2026-05-07 14:45:33 +00:00
kiloconnect[bot] 2f2e92b223 fix(cli): wrap signature in kilocode_change block markers 2026-05-07 14:40:40 +00:00
kilo-maintainer[bot] 38d3467404 chore: update nix node_modules hashes 2026-05-07 14:38:14 +00:00
kiloconnect[bot] ab049fa6dd chore(cli): mark editorContext param as kilocode_change in system prompt
Add missing kilocode_change marker to the editorContext param in
the environment Effect.fn implementation; the interface signature
already had a marker but the implementation didn't.
2026-05-07 14:37:06 +00:00
kiloconnect[bot] 861eb522ad fix(cli): never use gateway-fee cost for Anthropic Messages paths
For the Anthropic Messages API (via OpenRouter or Vercel AI Gateway), the
top-level `cost` field is the gateway fee that Kilo paid (typically 0 for
BYOK), not the user's true spend. Only use `upstream_inference_cost` /
`marketCost`; fall back to the token-based calculation when those are
absent.
2026-05-07 14:27:14 +00:00
opencode-agent[bot] 98e091796b chore: generate 2026-05-07 14:25:30 +00:00
James Long 3c4b4d5faf feat(core): copy file changes when warping (#26190) 2026-05-07 10:24:17 -04:00
arrrkady b9245e207b Merge branch 'main' into docs/seo-title-updates 2026-05-07 16:21:11 +02:00
arrrkady 9b153abf53 Remove duplicate meta title from index page
Removed duplicate meta title tag from the homepage.
2026-05-07 16:20:31 +02:00
arrrkady a44eac6eef Update jetbrains.md 2026-05-07 16:19:28 +02:00
arrrkady ebec1b4acd Update title for Kilo Code CLI documentation 2026-05-07 16:19:07 +02:00
arrrkady 621d891df3 Simplify title in VS Code documentation
Removed the redundant title from the markdown header.
2026-05-07 16:18:41 +02:00
John Fawcett 791b3ebf27 Merge pull request #9754 from Kilo-Org/gastown-docs
docs(kilo-docs): scaffold Gastown documentation section
2026-05-07 09:16:13 -05:00
Mark IJbema 76f49645f6 Merge remote-tracking branch 'origin/main' into mark/upstream-compat-base 2026-05-07 16:12:34 +02:00
Mark IJbema 1a65eb74f2 Merge pull request #10017 from Kilo-Org/mark/fix-double-counting-subagent-cost
fix(vscode): stop double-counting subagent cost in task header
2026-05-07 16:11:49 +02:00
Mark IJbema 174a09924c Merge pull request #10015 from Kilo-Org/mark/auto-approve-fold-exceptions
Collapse auto-approve exceptions list by default
2026-05-07 16:11:39 +02:00
Marius d2ae16a921 fix: support Azure provider endpoint setup (#10016)
Allow Azure provider connections to capture resource names or endpoint URLs so GPT-5 deployments can use the native Azure path instead of generic OpenAI-compatible setup.
2026-05-07 16:03:40 +02:00
Marius 03630064ad fix(cli): recover compaction from payload limits (#10012) 2026-05-07 16:01:25 +02:00
kiloconnect[bot] d5ac5fcb6a docs: remove (2026) suffix from page titles 2026-05-07 13:59:20 +00:00
kiloconnect[bot] f81fd40f13 docs(kilo-docs): SEO-optimize titles for CLI, VS Code, JetBrains, and docs index
Adopt the SEO-optimized titles proposed by Arkadiy based on Search Console
data. Updates the frontmatter title (and matching H1) on the CLI, VS Code,
and JetBrains platform pages, and adds a Next.js <Head> override on the
docs homepage so it gets a custom <title> instead of the default
'Kilo Code Documentation'. The JetBrains title follows the same pattern
as VS Code since the Slack proposal was truncated.
2026-05-07 13:55:51 +00:00
Imanol Maiztegui f539f59210 fix(kilo-ui): add diff viewer action to write tool header (#10008)
Extend the "Open in Diff Viewer" icon button to appear on Write tool
calls, not just Edit. Refactor shared CSS selectors to use generic
data-slot names (tool-trigger-actions) so both triggers share styling.
2026-05-07 15:55:10 +02:00
Mark IJbema 9d493b59e5 chore(vscode): raise exception fold threshold to 5 2026-05-07 15:46:22 +02:00
kiloconnect[bot] d9560d8feb fix(vscode): stop double-counting subagent cost in task header
The CLI backend propagates each subagent's total into its parent
assistant message when the subagent finishes. The webview was then
walking the session family tree and summing every session's cost, which
re-added the propagated amounts once per descendant.

Compute per-session own-cost by subtracting direct children's totals
from their parent. The breakdown entries now sum to the root session's
propagated cost, matching what 'kilo stats' reports.
2026-05-07 13:37:02 +00:00
kilo-maintainer[bot] 8699edd5a3 release: v7.2.44 2026-05-07 13:16:09 +00:00
Mark IJbema 979fdc7d91 Merge pull request #9965 from Kilo-Org/mark/upstream-merge-agent
chore: convert upstream-manual-merge command to agent
2026-05-07 15:12:46 +02:00
Marius 7df8cb1981 Merge pull request #10013 from Kilo-Org/valuable-editorial
docs: update README model examples
2026-05-07 15:11:10 +02:00
kiloconnect[bot] 3423870eea fix(cli): extract Kilo provider cost from Anthropic Messages API responses
Cost reporting already worked when Kilo used OpenRouter chat completions
internally. Extend providerCost to also read cost from the Anthropic
Messages API stream metadata, covering both OpenRouter (Anthropic-style
`usage.cost` / `cost_details.upstream_inference_cost`) and Vercel AI
Gateway (`gateway.cost` / `gateway.marketCost`).
2026-05-07 13:07:52 +00:00
marius-kilocode 1eada67b47 docs: update README model examples 2026-05-07 14:59:22 +02:00
kilo-agent 9cec88dac1 minimize diff: keep only gpt-5 Responses-API block changes
Revert the file-wide marker shape fixes from fix-kilocode-markers.ts
since they touch unrelated code. Scope this PR to the two review
findings in the gpt-5 block:

- Replace nativeOpenAI refactor with upstream's if (===||===) form
  plus inline // kilocode_change markers on the added npm entries;
  restores the upstream reasoningSummary comment.
- Restore the upstream textVerbosity comments, keep the new provider
  gate wrapped in kilocode_change start/end.
2026-05-07 12:53:32 +00:00
Christiaan Arnoldus fc8c204a23 Merge pull request #9997 from Kilo-Org/fix/drop-max-tokens-gpt5-openai-compatible
fix(cli): drop max_tokens for gpt-5 models on @ai-sdk/openai-compatible
2026-05-07 14:50:32 +02:00
Alex Alecu 39c9a8fe8d fix(cli): accept local-review input 2026-05-07 15:49:17 +03:00
Marius 6bb0f8261c fix(agent-manager): keep metadata out of worktrees (#10004) 2026-05-07 14:48:54 +02:00
Mark IJbema 3fb2e5d7e9 Merge pull request #9977 from Kilo-Org/mark/inline-tool-registry-overrides
refactor(cli): inline override predicates in tool registry
2026-05-07 14:45:23 +02:00
kilo-agent fa759d41bc address review: run fix-kilocode-markers on transform.ts
- Reverts the nativeOpenAI refactor; restores upstream's reasoningSummary
  guard structure + comment so added npm entries stay inside a single
  marker block.
- Includes the opencode textVerbosity comment that was dropped.
- Also fixes pre-existing marker shape issues elsewhere in the same file
  flagged by script/upstream/fix-kilocode-markers.ts.
2026-05-07 12:32:09 +00:00
Mark IJbema 81ab3bd86d Merge pull request #10007 from Kilo-Org/mark/trim-agents-md
docs: trim AGENTS.md duplication into skills
2026-05-07 14:29:18 +02:00
Christiaan Arnoldus 2fdd46e205 Merge branch 'main' into fix/cli-prompt-loop-missing-finish-reason 2026-05-07 14:28:55 +02:00
Mark IJbema 4c49b8778f undo order change 2026-05-07 14:25:55 +02:00
kilo-agent 50be3fc766 refactor(cli): narrow kilocode_change markers around Responses-API guard
Minimizes the diff from upstream opencode by restoring upstream's
original reasoningSummary guard structure and comment, and scoping
kilocode_change markers to only the Kilo-specific additions:
two extra provider npm names and the new textVerbosity provider gate.
2026-05-07 12:22:46 +00:00
Marius 9e17137870 fix(cli): recover provider finish errors (#10006) 2026-05-07 14:21:01 +02:00
Christiaan Arnoldus 2d2cf1f708 Merge pull request #8263 from VastCosmic/fix/openai-compat-reasoning-params
fix: gate OpenAI Responses API params for openai-compatible providers
2026-05-07 14:20:50 +02:00
Mark IJbema 61e52b1c6a refactor(cli): reduce upstream drift in tool registry
Keep upstream's `question` tool binding and `questionEnabled` boolean
names, restore upstream's `tool.plan` position at the end of the builtin
array, and group Kilo-only additions in a single marker block. Removes
outer markers that were wrapping unchanged upstream lines as Kilo-owned
scope.
2026-05-07 14:20:45 +02:00
kiloconnect[bot] fed8cd3e96 revert: keep packages/kilo-jetbrains/AGENTS.md as-is
Per feedback, drop the jetbrains UI section trim from this PR. The
root AGENTS.md cleanup and the new gh-issues skill stay.
2026-05-07 12:16:13 +00:00
Marius 98f5f65c1a Support global and project indexing toggles (#9993)
* fix: support global indexing enablement

* chore: update kilo-vscode visual regression baselines

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-07 14:15:48 +02:00
Mark IJbema ecaa856105 docs(kilo-cli): add upstream-merge lessons from v1.14.33
Three new/extended sections capturing patterns that repeatedly caught us off-guard during the v1.14.33 merge:

- 6.5 Scan auto-merged files for latent bugs. Not every problem surfaces as a conflict marker: duplicate declarations, duplicate manifest keys, orphaned imports, and partially-applied auto-merges that reference names from paths Kilo stubbed out.

- 9.5 Handle downstream API renames as separate commits. An upstream rename auto-merges cleanly in shared code but cascades into Kilo-only files. Keep the behavioural merge commit focused; land the mechanical cascade in follow-ups.

- 9.6 Handle upstream-added tests that diverge from Kilo. Upstream tests can encode contracts Kilo intentionally breaks, intercept seams that dependency injection now bypasses, or assume serialization shapes Kilo's extensions violate. Rewrite, skip, or delete — with a kilocode_change breadcrumb.

- Common pitfalls: added ambient-state / dependency-injection / serialization / rule-ordering / environment-divergence / lockfile-sync bullets, phrased generically so they apply beyond any one technology stack.
2026-05-07 14:15:27 +02:00
vimtor b6ff1b18c7 chore: activate free tier requests query 2026-05-07 14:10:47 +02:00
Mark IJbema 883967e09f Merge pull request #9836 from Kilo-Org/mark/simplify-autocomplete-model
refactor(vscode): simplify autocomplete FIM plumbing
2026-05-07 14:10:41 +02:00
kiloconnect[bot] 18f435d573 docs: tighten changeset for end-user release notes 2026-05-07 12:00:46 +00:00
Mark IJbema 0a7be32b77 Merge branch 'main' into mark/simplify-autocomplete-model 2026-05-07 14:00:04 +02:00
vimtor 9c9bc09f52 chore: fix free tier query 2026-05-07 13:58:41 +02:00
kiloconnect[bot] 4203ced5f4 docs: trim AGENTS.md duplication into skills
- Strip ~530 lines of UI guide duplication from packages/kilo-jetbrains/AGENTS.md;
  the jetbrains-ui-style skill is more comprehensive and is now the source of truth.
- Move GitHub Issues guidance into a new .kilo/skills/gh-issues/SKILL.md so it
  loads only when needed.
- Collapse duplicated kilocode_change marker examples in root AGENTS.md to a
  brief summary plus pointer to the kilocode-merge-minimizer skill.
2026-05-07 11:58:07 +00:00
Mark IJbema c10e8b59eb refactor(vscode): remove unused re-exports from AutocompleteInlineCompletionProvider 2026-05-07 13:57:42 +02:00
kiloconnect[bot] 8c1b7d7155 refactor(cli): inline gpt-5 max_tokens drop instead of internal plugin
Replaces the plugin approach with a narrow conditional at the single call
site in session/llm.ts where maxOutputTokens is passed to chat.params.
No new file, no new test file, one kilocode_change block.
2026-05-07 11:53:02 +00:00
vimtor d6e06c8950 chore: fix free tier query 2026-05-07 13:41:14 +02:00
Imanol Maiztegui b4fd1be904 Per-turn diff view with clickable banner (#9999)
* refactor(vscode): replace collapsible diff summary with clickable banner

Replace the expandable accordion-based diff summary in session turns
with a simpler clickable button that opens the dedicated changes view
via a postMessage to the extension host. This removes the inline file
list expansion in favor of the native VS Code changes panel.

- Remove Collapsible/Accordion/StickyAccordionHeader components
- Remove getDirectory/getFilename helpers and expanded state management
- Add openChanges action via useVSCode context
- Style the trigger as a minimal button with hover chevron indicator
- Update story name/description to reflect new behavior

* feat(vscode/diff): simplify DiffSource interface to declarative fetch model

Convert DiffSource from a class-based lifecycle pattern (initialFetch/start/dispose)
to a minimal declarative interface where sources only implement `fetch()` and
optionally `fetchFile`/`revert`/`dispose`. Move all polling, hash-dedup, loading
state, and message posting responsibility into SourceController.

- Replace class-based SessionDiffSource/WorktreeDiffSource with factory functions
- Introduce DiffSourceFetch return type with stopPolling flag for terminal states
- Remove DiffSourcePost/DiffSourceMessage types in favor of controller-owned posting
- SourceController now owns setInterval polling and hash-based dedup logic
- Rename requestFile → fetchFile, revertFile → revert, make dispose optional
- Update all unit tests to match the new declarative source contract

* refactor(vscode): add per-turn diff viewing with hidden picker mode

Introduce a TurnDiffSource that fetches diffs scoped to a single user
message rather than the full session snapshot. The diff viewer can now
open in a fixed, non-switchable mode when invoked from a specific turn.

- Add `turn.ts` source with factory, descriptor, and id helpers
- Extend PanelContext with `hidePicker` flag to suppress source selector
- Thread `turnId` from webview message through sidebar handler to command
- Catalog returns empty descriptors when picker is hidden
- Export `toSessionDiffFile` from session source for reuse in turn source
- Add `turn` to DiffSourceType union
- Add unit tests for turn source fetch behavior and catalog integration

* fix(vscode/diff): always log DiffSource fetch errors

Initial-fetch errors were only posted as a discarded 'error' message and
had no console trace, making them invisible in production. Log on both
initial and polling ticks so Extension Host output captures the failure.

* chore: update kilo-vscode visual regression baselines

* feat(vscode/diff): self-cancel polling when source reports completion

Convert polling callback to async and use runFetch return value to
stop the interval once the diff source signals it is done, avoiding
unnecessary continued fetches after completion.

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-07 13:41:03 +02:00
opencode-agent[bot] 844fb71938 chore: generate 2026-05-07 11:37:34 +00:00
vimtor fbb7b5b1bf chore: add free tier usage alert 2026-05-07 13:36:18 +02:00
Shoubhit Dash 95280ebec9 fix(tui): restore custom provider in /connect (#26168) 2026-05-07 17:05:35 +05:30
Mark IJbema 376b048eb4 Merge branch 'main' into mark/simplify-autocomplete-model 2026-05-07 13:35:33 +02:00
Marius 6fe38e47bc Add Mermaid diagram export actions (#9857)
* feat: add Mermaid diagram export actions

* fix: stabilize Mermaid export pipeline

* fix: format Mermaid image save handler

* fix: limit Mermaid actions to copy and download

* fix: polish Mermaid copy download controls

* fix: simplify Mermaid action menus

* fix: center Mermaid dropdown chevrons

* refactor: use shared dropdowns for Mermaid actions
2026-05-07 13:06:28 +02:00
YGoetschel fea9a0bd4c fix: guard undefined contents in diff renderer to fix share viewer SSR crash (#21763) 2026-05-07 18:55:40 +08:00
Joshua Lambert 0722158de1 Merge pull request #9983 from Kilo-Org/ci/smoke-test-setup-timeout
ci: fix smoke test timeout flag
2026-05-07 06:52:07 -04:00
kiloconnect[bot] e5421ec3b5 fix(vscode): make exception fold default react to async-loaded rules 2026-05-07 10:47:22 +00:00
sananakther dc1fb8f245 fix(vscode): improve Enhance Prompt quota error guidance (#9497)
* fix(vscode): distinguish timeout from user cancellation in commit message generation

Closes #8366

Fixes #8366 — extension process crash (silent failure) when clicking
"Generate Commit Message".

Two bugs existed in the commit message generation service:
1. When the 35-second client-side timeout fired, the error handler
   silently swallowed it — the spinner disappeared with no feedback,
   which users perceived as a crash.
2. Two tests ("uses the matching repository when SourceControl arg is
   provided" and "falls back to first repository when SourceControl arg
   has no match") passed {} as the VS Code cancellation token mock,
   causing token.onCancellationRequested is not a function to throw.

In index.ts, the single controller.signal.aborted check conflated user
cancellation and timeout. Replaced with two explicit flags (userCancelled,
timedOut) set in their respective abort callbacks:
- User cancels: silent (they know)
- 35s timeout: shows "Commit message generation timed out. Please try again."
- Server/network error: shows the error message as before

In index.spec.ts, the two affected test mocks now pass
{ onCancellationRequested: vi.fn() } instead of {} so the production
code path executes correctly.

| before | after |
| ------ | ----- |
| Spinner disappears silently on timeout | "Commit message generation timed out. Please try again." shown |

1. Open a git repository in VS Code with the Kilo Code extension
2. Go to the Source Control panel
3. Click the Kilo "Generate Commit Message" button
4. Disconnect the Kilo backend and wait 35s — you should now see
   "Commit message generation timed out. Please try again." instead of
   a silent spinner disappearance
5. Click cancel -> should dismiss silently as before

Unit tests: npx vitest run src/services/commit-message/__tests__/index.spec.ts
-> 11/11 pass

Discord: sanan9

* fix(vscode): improve Enhance Prompt quota error guidance

Map provider quota/billing retry failures to an actionable user-facing message for Enhance Prompt and preserve the raw provider response in the details string.

Also adds targeted unit tests for quota and non-quota normalization behavior.

Refs #9464

* fix(vscode): make enhance prompt quota messaging generic

* test(vscode): update enhance prompt quota wording expectation
2026-05-07 12:45:32 +02:00
kiloconnect[bot] 556b5e47e0 feat(vscode): collapse auto-approve exceptions list by default when >2 entries 2026-05-07 10:37:20 +00:00
kiloconnect[bot] de9f11e399 fix(cli): drop max_tokens for gpt-5 models on @ai-sdk/openai-compatible
gpt-5 models rejected via openai-compatible proxies (e.g. LiteLLM) because
the SDK emits max_tokens while OpenAI requires max_completion_tokens and
the compatible SDK cannot rename the field. Clear the cap so the upstream
default output budget applies.
2026-05-07 10:36:33 +00:00
Mark IJbema 703e60a8c6 Merge pull request #9989 from Kilo-Org/mark/autocomplete-model-dropdown
fix(vscode): align autocomplete model selector
2026-05-07 12:32:29 +02:00
Marius 43204b680e Make Agent Manager session tabs compact (#9970)
* feat(agent-manager): compact session tabs

* fix(agent-manager): avoid tab count class guard

* style(agent-manager): format compact tabs

* chore: update kilo-vscode visual regression baselines

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-07 10:29:50 +00:00
Mark IJbema ae933fc087 Merge branch 'main' into mark/inline-tool-registry-overrides 2026-05-07 12:26:29 +02:00
Mark IJbema d549210443 Merge remote-tracking branch 'origin/mark/autocomplete-model-dropdown' into mark/autocomplete-model-dropdown
# Conflicts:
#	packages/kilo-vscode/eslint.config.mjs
2026-05-07 12:22:58 +02:00
Mark IJbema 61d9650e8f Merge remote-tracking branch 'origin/main' into mark/autocomplete-model-dropdown
# Conflicts:
#	packages/kilo-vscode/eslint.config.mjs
#	packages/kilo-vscode/webview-ui/src/components/shared/ModelSelector.tsx
2026-05-07 12:20:05 +02:00
kilo-maintainer[bot] 2f0885902b chore: update nix node_modules hashes 2026-05-07 10:09:40 +00:00
Marius bf0c4df9d3 Add searchable Agent Manager tabs menu (#9968)
* feat(agent-manager): add searchable tabs menu

* test(agent-manager): include current tabs menu classes

* style(agent-manager): format tabs menu files

* fix(agent-manager): avoid class-like behavior hook
2026-05-07 12:08:36 +02:00
Marius de58267b40 fix(vscode): keep new worktree selectors open (#9971)
* fix(vscode): keep new worktree selectors open

* fix(vscode): stabilize branch selector popovers

* docs(vscode): update selector fix changeset
2026-05-07 12:07:59 +02:00
Mark IJbema d200a83380 Merge branch 'main' into mark/autocomplete-model-dropdown 2026-05-07 11:58:31 +02:00
Mark IJbema 361fea31ec Merge pull request #9978 from Kilo-Org/markijbema/kilo-opencode-v1.14.33
Upstream merge v1.14.33
2026-05-07 11:56:06 +02:00
Marius bdb580a388 Merge pull request #9917 from Kilo-Org/gem-tomato
fix(vscode): keep active terminal for @terminal context
2026-05-07 11:47:20 +02:00
Mark IJbema 9285b1a049 style(vscode): show autocomplete hint as link 2026-05-07 11:38:27 +02:00
Marius fa326f21e3 Add permission prompt shortcuts (#9991)
* feat(vscode): add permission prompt shortcuts

* chore: update kilo-vscode visual regression baselines

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-07 11:36:45 +02:00
Mark IJbema acdb177c28 style(vscode): align autocomplete model hint 2026-05-07 11:36:25 +02:00
Mark IJbema 52429a2e18 feat(vscode): hint to Models tab in autocomplete settings
Add a clickable hint at the bottom of the autocomplete settings
that navigates to the Models tab so users can find where to choose
the autocomplete model. Bump KiloProvider max-lines to 3430.
2026-05-07 11:10:55 +02:00
vimtor 30c4fcb1a5 chore: fix honeycomb query frequency 2026-05-07 11:10:36 +02:00
Marius 3095efcc4c fix(vscode): restore inline tool diffs (#9688)
* fix(vscode): restore inline tool diffs

* fix(vscode): render tool patches in kilo ui

* style: format long regex assignments and add change marker comment

Reformat multi-line regex match assignments in kilo-ui-contract test
to satisfy line length limits, and annotate the `contents(diff)` call
in session-diff with a kilocode_change tracking comment.

* fix(kilo-vscode): append trailing newlines to expected diff content assertions

Update test expectations in diff-session-source to include trailing
newlines in before/after content, matching actual file content behavior.

* fix(vscode): guard empty-patch diffs in session turn accordion

Match diff-session-source.ts:99 behavior by short-circuiting contents()
when the patch is empty (binary or summarized files), so the accordion
content stays empty instead of rendering a confusing whitespace-only
diff.

---------

Co-authored-by: Imanol Maiztegui <imanol.mzd@gmail.com>
2026-05-07 11:01:47 +02:00
vimtor 193c169ca5 chore: improve provider down query 2026-05-07 11:00:43 +02:00
vimtor cee04f2924 chore: make provider down queries live 2026-05-07 10:56:37 +02:00
Mark IJbema a2bb05726f Merge remote-tracking branch 'origin/main' into markijbema/kilo-opencode-v1.14.33 2026-05-07 10:44:08 +02:00
Brendan Allan 1219691c11 docs(desktop): update README from Tauri to Electron (#26146) 2026-05-07 16:31:37 +08:00
vimtor b2cc40f09c chore: first provider alert version 2026-05-07 10:30:29 +02:00
vimtor 0b2e65f16d chore: reactivate alerts 2026-05-07 10:15:52 +02:00
Mark IJbema 279b604537 fix(cli): restore external_directory whitelist in explore patch
Upstream 2283979199 (Preapprove agent tmp directory access) extended the
agent.ts whitelistedDirs with Global.Path.tmp/*, and the new v1.14.33 test
asserts tmp/agent-work -> allow on the explore agent. Kilo's patchAgents
replaces the whole explore permission and had only Truncate.GLOB in its
external_directory block, so both /some/other/path (expected ask) and
tmp/agent-work (expected allow) resolved to deny via the outer '*':'deny'
catch-all (findLast picks it over any defaults external_directory rule).

Commit d2e21c5006 tried to fix this by dropping the '*':'ask' on the
assumption that defaults already provided it — that rationale was wrong,
since defaults' rules come before the patch's catch-all in the merged
ruleset. Mirror upstream's inline shape instead: thread whitelistedDirs
through to patchAgents and rebuild the explore external_directory as
{ '*':'ask', ...whitelistedDirs -> 'allow' }, matching what upstream's
explore does natively.
2026-05-07 10:09:02 +02:00
opencode-agent[bot] 1ea01fdad0 chore: update nix node_modules hashes 2026-05-07 08:08:37 +00:00
Mark IJbema a1b0923a3c test(cli): rewrite InstanceStore ALS test to match Kilo contract
Upstream's v1.14.33 test asserts Instance.current throws during Effect init
(ALS not installed around init). Commit d2e21c5006 intentionally inverts
that: Kilo wraps init in the Instance ALS so KilocodeBootstrap — and the
KiloIndexing.init that it forkDetaches — can read Instance.directory.
Rewrite the test to assert Kilo's contract instead of restoring upstream
behaviour.
2026-05-07 10:07:49 +02:00
Victor Navarro f8aa4a3be0 chore: simplify honeycomb alerts (#26142) 2026-05-07 07:56:10 +00:00
Josh Holmer c1ea8100e1 fix(core): ensure user permission overrides apply correctly (#9975) 2026-05-07 09:29:26 +02:00
Bence Ferdinandy 293bb422fa fix(format): restore stdout/stderr ignore for formatter processes (#26037)
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-05-07 00:52:07 -05:00
Joshua Lambert c4fa72adc7 Merge pull request #9718 from Kilo-Org/feature/message-feedback
feat: per-message thumbs up/down feedback
2026-05-07 01:51:04 -04:00
Brendan Allan 54a78c9224 feat(desktop): move server to utilityProcess (#25962)
Co-authored-by: LukeParkerDev <10430890+Hona@users.noreply.github.com>
2026-05-07 13:48:56 +08:00
Jesse 9b30ee2db2 fix(desktop): add macOS settings menu entry (#26081)
Co-authored-by: jesse.mahnken <jesse.mahnken@tiefox.de>
2026-05-07 13:39:14 +08:00
Joshua Lambert 4a6eb43970 Apply suggestion from @lambertjosh 2026-05-07 01:37:36 -04:00
carmit hershman ba1ec62caf docs: add opencode-jfrog-plugin to ecosystem list for JFrog integration (#26019) 2026-05-07 00:37:14 -05:00
Josh Lambert e0d6a940fc docs(kilo-docs): add user-facing message feedback page
Walks through what the thumbs up/down feature does in both the VS Code
extension and the CLI/TUI, why ratings matter, exactly what gets sent
when a user rates a response, and how to disable it via VS Code's
telemetry setting or KILO_TELEMETRY_LEVEL. Privacy claims are scoped
to the rating event itself; broader telemetry questions defer to
PRIVACY.md.

Linked from the Productivity Tools group in the Code With AI nav,
between Voice Transcription and the Agent Behavior subsection.
2026-05-07 00:46:07 -04:00
Frank 72ec05d0be go: rate limit metadata 2026-05-07 00:32:33 -04:00
Josh Lambert bef0183738 fix(vscode): close runtime telemetry consent gap with the CLI
The previous `watchTelemetryState` fix updated the webview UI in real
time but left the CLI subprocess's PostHog client stuck on its
spawn-time `KILO_TELEMETRY_LEVEL` value. A user who started VS Code
with telemetry off and toggled it on at runtime saw the thumbs UI
appear (good) but every webview event was silently dropped at the
CLI's `Client.capture()` gate (bad).

Add a runtime sync channel:

- New `POST /telemetry/setEnabled` Hono route on the CLI server that
  calls `Telemetry.setEnabled(enabled)` to flip the `posthog-node`
  client's opt state.
- New `TelemetryProxy.setEnabled(enabled)` method that POSTs to it,
  using the same fire-and-forget pattern as `capture`.
- Extension calls `telemetry.setEnabled(vscode.env.isTelemetryEnabled)`
  immediately after `telemetry.configure(...)` on every `connected`
  state change, so a freshly-spawned CLI gets corrected even when its
  spawn-time env var is stale.
- Extension subscribes to `vscode.env.onDidChangeTelemetryEnabled` to
  forward runtime consent changes to the CLI as they happen.

All three changes live in Kilo-owned files (the route is already a
`kilocode_change - new file`, and the extension is Kilo-only). Zero
upstream OpenCode merge surface.

Closes #9872 fully (the previous `d67c5e307c` covered only the webview
UI).
2026-05-06 23:29:55 -04:00
Josh Lambert 0d64636b89 fix(kilo-ui): make Icon reactive to name changes
The kilo-ui Icon was capturing the registry lookup into a non-reactive
const at component setup, so callers that flip the icon prop (e.g.
toggling between thumbs-up and thumbs-up-filled when a feedback rating
changes) saw the SVG content stay frozen on the original icon.

Fix by reading local.name directly inside the JSX expressions so Solid
re-evaluates viewBox and innerHTML when the prop updates. Matches the
upstream Icon pattern.

Also rename the local 'def' temp to 'icon' as part of the inline
refactor — clearer alongside the 'icons' registry.
2026-05-06 23:29:55 -04:00
Josh Lambert 363e337ca8 refactor: move feedback additions out of upstream-shared files
Addresses review feedback: Kilo-specific additions belong in Kilo-owned
packages so the diff against upstream OpenCode stays minimal.

- Icons: move thumbs-up/-down/-up-filled/-down-filled paths from
  packages/ui/src/components/icon.tsx into packages/kilo-ui's icon
  registry. Extend the kilo-ui Icon registry to carry per-icon viewBox
  (Heroicons thumbs are 20x20; existing Kilo icons are 16x16). Replace
  packages/kilo-ui/src/components/icon-button.tsx (previously a re-export
  of @opencode-ai/ui/icon-button) with a local implementation that
  uses the kilo-ui Icon so the new names resolve.

- i18n: move the three feedback strings (helpful, notHelpful,
  clearRating) from each of 19 packages/ui/src/i18n/<locale>.ts files
  into the corresponding packages/kilo-i18n/src/<locale>.ts. The
  webview's language.tsx already merges kilo-i18n on top of upstream,
  so the runtime keys remain available.

- TUI: extract submitFeedback from
  packages/opencode/src/cli/cmd/tui/routes/session/index.tsx into a
  new Kilo-owned helper at
  packages/opencode/src/kilocode/cli/cmd/tui/feedback.ts. The session
  route now imports and invokes it, passing { toast, session, messages }.
  Also tightens the Kilo Gateway gate from startsWith("kilo") to
  === "kilo" to match the equivalent fix in the webview.
2026-05-06 23:29:55 -04:00
Josh Lambert 3992300857 fix(vscode): restrict feedback session IDs to the kilo provider
`isKiloGateway` used `startsWith("kilo")` which matches fictional
aliases like `kilo-dev`/`kilocloud`. The only real gateway provider
ID in the codebase is plain `kilo` — every other usage of it checks
`providerID === "kilo"`. Tighten to an exact match and drop the
`isKiloGateway` tests (it is now a one-line equality check) along
with the fabricated alias case in `buildFeedbackProperties`.
2026-05-06 23:28:50 -04:00
Josh Lambert ac4a7ab620 fix(vscode): propagate telemetry opt-in/out to open webviews
VS Code exposes `env.onDidChangeTelemetryEnabled` for runtime changes
to the telemetry consent setting. The extension was only reading
`env.isTelemetryEnabled` once during `syncWebviewState`, so toggling
`telemetry.telemetryLevel` while a Kilo webview was open left the
feedback UI stuck on its previous visibility state until reload.

Add `watchTelemetryState()` next to `pushTelemetryState()` and wire
the disposable in `setupWebviewMessageHandler` alongside the existing
`watchAutocompleteConfig`. Uses the same registration/dispose pattern
as the autocomplete config watcher.

Also bump the ESLint `max-lines` cap on AgentManagerApp.tsx from 3200
to 3210 to accommodate the FeedbackProvider wrapper that sits inside
the provider chain (past precedent: 3100 → 3200 for terminal tabs).

Closes #9872.
2026-05-06 23:28:50 -04:00
Josh Lambert af88cbe203 fix(ui): use heroicons for thumbs up/down with hover-fill preview
- Replace the fractional hand-drawn thumbs paths with Heroicons 20
  outline (default / rated=false) and solid (filled / rated=true).
- Add a CSS rule under assistant-copy-wrapper so hovering the outline
  button fills it with currentColor, giving a preview of the rated
  state before the user commits.
2026-05-06 23:28:50 -04:00
Josh Lambert 0eab152b25 fix: use <leader>= for thumbs-up keybind and wrap story providers
- Replace <leader>+ with <leader>= in messages_feedback_up: the TUI
  parser normalizes <leader> to 'leader+' and splits on '+', producing
  an empty key name for '<leader>+' so the binding never fires. The
  = key sits on the same physical key as + on most layouts, pairs
  visually with <leader>-, and parses to a real key name.
- Wrap StoryProviders with FeedbackProvider so stories that render
  VscodeSessionTurn (e.g. Diff Summary Collapsed) don't throw
  'useFeedback must be used within a FeedbackProvider' under
  Storybook visual regression.
- Sync changeset and docs page to mention the new keybind.
2026-05-06 23:28:50 -04:00
Josh Lambert dcaccf3865 feat: per-message thumbs up/down feedback
Adds thumbs up/down buttons next to the copy button on every assistant
message in the VS Code sidebar, and <leader>+/<leader>- keybinds in the
TUI. UI state is in-memory only — ratings reset on reload / session
switch. Persistence can be added later without changing the telemetry
contract.

Events are sent to PostHog via the existing telemetry pipeline. For
Kilo Gateway turns the payload includes session and message IDs so
feedback can be correlated against gateway logs; for direct providers
those IDs are omitted since we cannot correlate them to upstream data.
2026-05-06 23:28:50 -04:00
Frank 0b702704ae zen: nano not used for title gen 2026-05-06 23:01:16 -04:00
kirillk b237dc33c7 fix(jetbrains): focus history filter 2026-05-06 21:45:49 -04:00
kirillk 5a216e5d0c fix(jetbrains): format cloud history times 2026-05-06 21:18:17 -04:00
kirillk 98ef2c9a56 fix(jetbrains): refresh history theme 2026-05-06 21:13:11 -04:00
kirillk bb304a1ed8 fix(jetbrains): refresh history panels on reopen 2026-05-06 20:57:11 -04:00
opencode-agent[bot] 3480cef52e chore: update nix node_modules hashes 2026-05-07 00:46:33 +00:00
opencode dcfe4b0d51 sync release versions for v1.14.40 2026-05-07 00:34:09 +00:00
Aiden Cline b2e3dc87ea feat: Update ACP support, modernize and fix misc issues (#25663) 2026-05-06 19:33:52 -05:00
André Cruz 233fc5b910 fix(provider): preserve assistant message content when reasoning blocks present (#21370)
Co-authored-by: Omer Koren <54630488+omer-koren@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-05-06 18:57:56 -05:00
Luke Parker 2dffdfff4a fix(server): apply cors before legacy auth (#26092) 2026-05-07 08:55:09 +10:00
kirillk f27afbd6e4 Merge remote-tracking branch 'origin/morning-tibia' into morning-tibia 2026-05-06 18:28:10 -04:00
kirillk 138a02f314 Merge branch 'unleashed-romano' into morning-tibia 2026-05-06 18:26:55 -04:00
Josh Lambert eb8b3defc3 ci: fix smoke test timeout flag
`harbor run` (jobs.py) only exposes `--agent-setup-timeout-multiplier`;
the absolute `--agent-setup-timeout` flag only exists on `harbor trials`.
Use the multiplier (2.0 = 720s from the 360s default) instead.
2026-05-06 18:06:56 -04:00
kirillk c104a3b474 fix(jetbrains): map session times as doubles 2026-05-06 17:57:41 -04:00
Kirill Kalishev 06a066d13f Merge branch 'main' into morning-tibia 2026-05-06 17:32:00 -04:00
Kirill Kalishev 6af8e53c3d Merge pull request #9979 from Kilo-Org/agreeable-marlin
feat(jetbrains): add collapsible session header metrics
2026-05-06 17:04:52 -04:00
kirillk d7a3838657 fix(jetbrains): correct session header metrics 2026-05-06 16:55:07 -04:00
Mark IJbema 0c1be058e3 fix(cli): skip Workspace.sessionRestore tests
Both tests rely on JS-level spies that the upstream Workspace refactor bypasses:

1. spyOn(globalThis, "fetch") doesn't intercept anymore. The Effect FetchHttpClient layer holds fetch as a fiber-ref with defaultValue: () => globalThis.fetch, captured at fiber start. The spy descriptor isn't observed through that ref — calls go to the original fetch and produce Transport errors against workspace.test.

2. spyOn(SyncEvent, "replayAll") spies the module-level wrapper. Upstream's Workspace.Service now yields SyncEvent.Service inside the layer and calls sync.replayAll(events) on the Service directly, never touching the module-level export.

Restoring coverage requires injecting Effect-side mock layers (custom HttpClient + SyncEvent.Service). Out of scope for the merge resolution. Tracked for follow-up.
2026-05-06 22:36:44 +02:00
Mark IJbema 8cdfaea017 fix(cli): skip HttpApi JSON parity tests
Two structural divergences make the upstream-added parity test unrunnable on Kilo:

1. Effect's HttpApi runtime emits 'field: null' for Schema.optional() values when the source data has the property as undefined. Hono uses JSON.stringify which omits undefined keys. Kilo-specific Model fields (ai_sdk_provider, prompt, recommendedIndex, isFree) and Command fields (agent, model, subtask) all hit this.
2. Reading /config twice in sequence (legacy then httpapi) returns different defaults as Kilo's ConfigService cache mutates between calls.

The test is upstream-added; opencode's schema doesn't carry these extra fields, so it doesn't trip the divergence. Skip until either Kilo migrates the affected schemas to NullOr (changing the public surface) or the parity test learns to ignore Kilo-specific fields.
2026-05-06 22:34:04 +02:00
Mark IJbema d2e21c5006 fix(cli): address CI test failures
- InstanceStore: run Instance.provide init inside the ALS context so KilocodeBootstrap (and any forkDetach work it spawns like KiloIndexing.init) can read Instance.directory. Upstream refactor moved init out of the ALS scope; kilo-main's pre-merge Instance.provide wrapped it. Without this, KiloIndexing.init silently fails with "No context found for instance".
- kilocode/agent: thread worktree through planGuard/patchAgents instead of reading Instance.worktree at agent state construction time. Agent state is built inside Effect (no ALS) via InstanceState.make — reading the ALS-backed Instance.worktree there crashed under the new architecture.
- kilocode/agent: drop the "*": "ask" from explore external_directory — defaults already provides it, and redefining here overwrites the tmp/skill allowlist via findLast().
- test/server/httpapi-instance.test.ts: revert the ported Hono-bridge tests. Upstream put the same tests in httpapi-instance.legacy.test.ts (renamed file); the port duplicated them.
- test/server/httpapi-instance.legacy.test.ts: mark the catalog test test.skip with Kilo's original rationale (/agent 500s via the bridge; the bridge is not enabled in any production client).
- test/server/httpapi-ui.test.ts: delete. Tests upstream's proxy-to-app.opencode.ai fallback that Kilo intentionally removed (src/server/routes/ui.ts kilocode_change).
- test/server/httpapi-raw-route-auth.test.ts: basic("opencode", ...) → basic("kilo", ...) to match the Kilo username default.
- test/provider/models.test.ts: skip describe block. Upstream tests assert raw-fixture passthrough but Kilo's ModelsDev.get() filters/injects providers based on Config.get(), which needs an Instance context the test doesn't provide.
2026-05-06 22:25:16 +02:00
kirillk 1335d2fb21 Merge branch 'agreeable-marlin' into accidental-matrix 2026-05-06 16:08:03 -04:00
Mark IJbema 85dd125cbd fix(core): dedupe rotating-file-stream dependency
Auto-merge from v1.14.33 produced duplicate "rotating-file-stream" entries in packages/core/package.json (both kilo-main and upstream added the same dependency in the same release window). bun install fails fast on duplicate keys, breaking CI setup. Drop the redundant entry and refresh bun.lock.
2026-05-06 22:01:08 +02:00
Mark IJbema 71bb5a1253 fix(cli): use established double-cast for PromptInput in HttpApi handler
Replace 'as SessionPrompt.PromptInput' with 'as unknown as SessionPrompt.PromptInput' to match the pre-existing pattern in the legacy Hono handler (instance/session.ts:901,936). The single cast was rejected by TypeScript because the schema-derived ctx.payload has readonly arrays while Kilo's PromptInput override declares parts as mutable PartInputUnion[]. The double cast is the established Kilo workaround for this readonly→mutable mismatch and keeps the Kilo diff vs upstream minimal.
2026-05-06 21:58:47 +02:00
Mark IJbema 5f5853a2e3 fix: align Kilo source/tests with v1.14.33 API renames
Mechanical follow-up to the v1.14.33 merge:

- src/server/routes/ui.ts: remove dead proxy fallback (proxy/createHash/csp were intentionally commented out by Kilo; the Effect/Promise paths still referenced them)
- src/kilocode/{plan-followup,session/prompt}.ts: pass Instance.current to Session.plan(input, instance)
- src/server/routes/instance/httpapi/handlers/session.ts: cast PromptPayload spread to PromptInput (readonly→mutable schema/runtime mismatch)
- src/plugin/index.ts: cast external @opencode-ai/plugin auth plugins through unknown to bridge to local @kilocode/plugin types
- script/build.ts: drop duplicate sourcemap key (Kilo's release-aware version wins)
- test/kilocode/indexing-{startup,worktree}.test.ts: switch from Instance.disposeAll/InstanceBootstrap-as-effect to disposeAllInstances/getBootstrapRunEffect
- test/kilocode/model-cache-org.test.ts: convert Instance.provide init from async fn to Effect
- test/kilocode/kilo-loader-auth.test.ts: drop ModelsDev.Data.reset() (no longer exists)
- test/kilocode/plan-exit-detection.test.ts, plan-followup.test.ts: pass Instance.current to Session.plan
- test/kilocode/{plan-followup,session-list}.test.ts: replace Session.list() with AppRuntime.runPromise(Session.Service.use((svc) => svc.list()))
2026-05-06 21:53:19 +02:00
Kirill Kalishev 9b4880abfc Merge branch 'main' into agreeable-marlin 2026-05-06 15:43:05 -04:00
Mark IJbema 78d4956c29 chore: resync versions after upstream merge 2026-05-06 21:32:59 +02:00
kirillk 3fa07b6988 fix(jetbrains): persist session header expansion 2026-05-06 15:32:38 -04:00
Mark IJbema 1ea9ad2af0 resolve merge conflicts 2026-05-06 21:32:26 +02:00
Frank a4ab1408eb zen: update rate limiter 2026-05-06 15:32:08 -04:00
Frank e41843eaf7 sync 2026-05-06 15:20:38 -04:00
kirillk ecc150a29e fix(jetbrains): support timeline touch scrolling 2026-05-06 15:12:19 -04:00
kirillk 7f4f00683e refactor(jetbrains): host session timeline in viewport 2026-05-06 15:03:03 -04:00
kirillk ee727b8bc7 fix(jetbrains): render markdown code blocks with scrollable components 2026-05-06 15:02:09 -04:00
kilo-maintainer[bot] afe6c11901 chore: update nix node_modules hashes 2026-05-06 18:16:01 +00:00
Catriel Müller c5242e24d1 Merge pull request #9764 from Kilo-Org/catrielmuller/new-kiloclaw-chat-vscode
feat: kiloclaw chat rework
2026-05-06 15:00:18 -03:00
Catriel Müller 533114baf3 fix: openai links 2026-05-06 14:42:58 -03:00
Catriel Müller 2df4d4db0b refactor: use vscode font size 2026-05-06 14:33:12 -03:00
vimtor bf979413f9 chore: change alert type for honeycomb triggers 2026-05-06 19:27:25 +02:00
Catriel Müller f40970557f refactor: renegare sdk 2026-05-06 14:26:06 -03:00
kirillk 734f015545 fix(jetbrains): show step finish in timeline 2026-05-06 13:19:42 -04:00
Frank 38b0cdc149 go: deprecate old models 2026-05-06 13:10:48 -04:00
Joshua Lambert 45d68ff048 Merge pull request #9941 from Kilo-Org/ci/smoke-test-setup-timeout
ci: bump smoke test agent setup timeout and capture install logs
2026-05-06 13:09:04 -04:00
kirillk 32a8b63c8a Merge branch 'main' of github.com:Kilo-Org/kilocode into accidental-matrix 2026-05-06 13:04:37 -04:00
kirillk e8f570cc75 feat(jetbrains): add native session history 2026-05-06 13:04:18 -04:00
Catriel Müller 7bb9914a06 refactor: update implementation 2026-05-06 14:01:53 -03:00
Catriel Müller 622e1263d2 refactor: address comments 2026-05-06 14:01:53 -03:00
Catriel Müller d04b357e9f fix: improve autoscroll 2026-05-06 14:01:53 -03:00
Catriel Müller 15e0fefe54 refactor: improve autoscroll and auto load the last conversation 2026-05-06 14:01:53 -03:00
Catriel Müller 4aedc1b47f fix: ulid 2026-05-06 14:01:53 -03:00
Catriel Müller 98866740af feat: kiloclaw chat rework 2026-05-06 14:01:51 -03:00
kirillk 4863b232e1 fix(jetbrains): simplify token metrics row 2026-05-06 12:53:07 -04:00
Aiden Cline 344ccc647b ignore: vimtor to team members list 2026-05-06 11:45:11 -05:00
kirillk 1d9d423c41 fix(jetbrains): magnify hovered timeline bars 2026-05-06 12:27:37 -04:00
kirillk 88563fa672 feat(jetbrains): add session history 2026-05-06 12:26:20 -04:00
kirillk 8645f5b880 fix(jetbrains): align agent steps test assertions 2026-05-06 12:20:28 -04:00
kirillk a5cb6d501b fix(jetbrains): paint session timeline bars 2026-05-06 12:15:59 -04:00
kirillk 1a61128a01 fix(jetbrains): reorder session header metrics 2026-05-06 12:01:35 -04:00
kirillk 6aaabf0a10 fix(jetbrains): align session header with editor colors 2026-05-06 11:52:42 -04:00
Marius 5fcc4231c0 Fix Agent Manager session selector state (#9922)
* tmp

* fix(agent-manager): recover session preferences from history

* fix(agent-manager): use scoped prompt selections

* Delete packages/kilo-vscode/docs/agent-manager-session-preferences.md
2026-05-06 15:46:43 +00:00
Joshua Lambert ef67f34198 Merge branch 'main' into ci/smoke-test-setup-timeout 2026-05-06 11:37:16 -04:00
Kirill Kalishev 9b9741acaa Merge branch 'main' into morning-tibia 2026-05-06 11:15:07 -04:00
opencode-agent[bot] b9b854bf9f chore: generate 2026-05-06 15:13:34 +00:00
Marius e5e9d0ba37 Delete custom providers from config (#9921)
* fix: delete custom providers from config

* fix: clear project custom provider config
2026-05-06 17:12:23 +02:00
Dax d9c18381a6 feat(config): support well-known remote_config (#26054) 2026-05-06 15:12:23 +00:00
kiloconnect[bot] 4398150bdc fix(cli): defer finish-reason default until after compact branch
Setting handle.message.finish before the result === "compact" branch broke guardCompactionAttempt (which fills in "error" with ??=) and the overflow detection at compaction.create. Move the default to right before "continue" and gate it on result !== "compact" so the compaction paths see the original undefined value.
2026-05-06 15:12:15 +00:00
Kit Langton 63a175b50d fix(cli): avoid AppRuntime re-entry for network options (#26052) 2026-05-06 11:02:08 -04:00
kiloconnect[bot] d8642deec6 fix(cli): persist defaulted finish reason so loop break check sees it
The loop reloads messages from storage at the top of each iteration via filterCompactedEffect, so an in-memory mutation on handle.message does not propagate. Persist the defaulted finish via updateMessage so the next iteration's break check actually observes it.
2026-05-06 14:59:51 +00:00
Victor Navarro 889f979c0b chore: fix model alerts (#25990) 2026-05-06 16:57:34 +02:00
kiloconnect[bot] eb77fbc13b fix(cli): prevent agent loop hang when stream ends without stop_reason
Some Anthropic-compatible providers terminate the response stream with a final message_delta that carries stop_reason: null followed immediately by message_stop. The AI SDK then never sets a finishReason on the assistant message, the prompt loop's break check stays false, and the agent keeps issuing new model calls indefinitely. Default the missing finish to "unknown" so the existing exit condition fires when no tool calls were emitted.
2026-05-06 14:55:24 +00:00
Imanol Maiztegui 9c581d3992 Unified diff view for session changes and workspace changes (#9897)
* feat(vscode): add foundational types and abstractions for unified diff panel

Introduce the core type definitions and abstractions that support the
upcoming session diff viewer:

- PanelSurface: testable abstraction over vscode.WebviewPanel
- DiffSource/DiffSourceDescriptor: contracts for swappable diff providers
- DiffSourceCatalog: stub registry for enumerating and constructing sources
- PanelContext/DiffFile: cross-cutting types shared by manager and webview

* feat(diff): implement worktree diff source with polling and file revert

Add WorktreeDiffSource, a DiffSource implementation that computes diffs
between the local working tree and the base branch. Key behaviors:

- Resolves the diff target from the workspace root via GitOps
- Performs an initial fetch then polls every 2.5s with hash-based dedup
- Supports single-file revert through WorktreeDiffClient
- Posts structured messages (loading, diffs) to the panel via DiffSourcePost

* add(vscode): session diff source and unified patch parser

Introduce two new modules under the diff sources layer:

- patch-to-before-after.ts: reconstructs before/after file content
  from full-context unified diff patches by filtering line prefixes
- session.ts: SessionDiffSource fetches accumulated diffs for a given
  session, converts patches to before/after pairs, and posts results
  to the diff panel without polling or SSE

* feat(diff): wire up diff source catalog with session and worktree builders

Replace stub implementations in DiffSourceCatalog with real logic:

- Inject KiloConnectionService and use it to fetch session diffs
- Populate listAvailable based on PanelContext (workspace root, session)
- Route build() to WorktreeDiffSource or SessionDiffSource by id prefix
- Extract sessionDescriptor() and SESSION_PREFIX from SessionDiffSource
  to decouple descriptor creation from class instantiation
- Export WORKSPACE_DESCRIPTOR from worktree module for catalog reuse

* refactor(vscode): introduce DiffPanelManager and centralize diff panel lifecycle

Extract panel ownership out of DiffViewerProvider into a new
DiffPanelManager class that manages a single global "Changes" webview.
Key changes:

- Add DiffPanelManager with source-swapping, loading pulse, webview
  serialization, and disposable lifecycle management
- Add testable Scheduler abstraction to decouple setTimeout usage
- Extend DiffSourceCatalog with defaultSourceId() resolution logic
  and replace magic "workspace" string with WORKSPACE_SOURCE_ID const
- Extract sessionSourceId() helper in session source module
- Thread sessionId through openChanges command and sidebar context so
  the panel can open directly to the relevant session diff
- Re-register webview panel serializer under DiffPanelManager.viewType

* feat(diff): add source descriptor and capability message types for webview

Introduce new extension-to-webview and webview-to-extension message
interfaces to support multi-source diff panel switching:

- DiffSourceCapabilities, DiffSourceDescriptor for describing available
  diff sources with revert/comments flags and grouping metadata
- SetAvailableSourcesMessage and DiffViewerCapabilitiesMessage for
  pushing source lists and active capabilities to the webview
- SelectSourceRequest for the webview to request a source switch

* refactor(webview): integrate diff source picker into viewer and relocate shared types

Move DiffSourceCapabilities and DiffSourceDescriptor interfaces out of
extension-messages.ts into the shared diff/sources/types module, and
re-export them via import. Add DiffPickerHeader component with a
grouped Select dropdown for switching between multiple diff sources.
Wire source selection state and capability tracking into DiffViewerApp,
handling setAvailableSources and diffViewer.capabilities messages and
conditionally rendering the picker header above the diff view.

* feat(diff-viewer): add canRevert and canComment capability flags to full-screen diff

Introduce two optional boolean props (`canRevert`, `canComment`) on
FullScreenDiffView that allow callers to disable revert actions and
comment creation based on the active diff source's capabilities.

Guard gutter click handlers, keyboard shortcuts, the "Send all" button,
revert buttons, and sidebar revert callbacks behind these flags. In
DiffViewerApp, forward the capability values from the selected source
and reset transient UI state (comments, diff style, reverting set) on
source switches via a reactive effect.

* test(vscode): add unit tests for diff panel manager, source catalog, and patch utilities

Cover DiffPanelManager lifecycle (open, reveal, dispose, deserialized
panel disposal, source switching, comment forwarding), DiffSourceCatalog
listing/defaulting/building logic, SessionDiffSource fetch-and-convert
flow, and patchToBeforeAfter edge cases.

Also refactor DiffPanelManager to decouple panel creation from surface
adoption: the createSurface factory no longer receives a panel argument,
panel construction moves into a private defaultCreateSurface method, and
deserializePanel now disposes stale panels instead of rewiring them.
Extend the vscode mock with a createOutputChannel stub to support the
new test harness.

* refactor(diff): extract command-context assembly into DiffPanelManager.openFromCommand

Move PanelContext construction (workspace root resolution, session ID
lookup, initial source selection) out of the extension command handler
and into a dedicated openFromCommand method on DiffPanelManager. This
eliminates the extension's direct dependency on getWorkspaceRoot and
provider.getCurrentSessionId by accepting a sessionIdProvider callback
through DiffPanelManagerOptions.

Update tests to cover both provider-based and arg-based session ID
resolution paths in openFromCommand.

* feat(vscode): unify changes panel with multi-source diff architecture

Delete the legacy DiffViewerProvider in favor of the new
DiffPanelManager-based architecture. Decompose review-utils into
focused modules under diff/shared/ (client, hash, target) and update
all consumers to import from the new locations.

- Remove DiffViewerProvider and its registration in extension.ts
- Extract WorktreeDiffClient, DiffTarget into diff/shared/client
- Extract hashFileDiffs into diff/shared/hash
- Extract resolveLocalDiffTarget into diff/shared/target
- Slim down review-utils to only VS Code UI helpers
- Add changeset for the unified Changes panel feature

BREAKING CHANGE: DiffViewerProvider is removed; all diff viewing now routes through DiffPanelManager

* refactor(diff): add polling with hash dedup to SessionDiffSource

Upgrade SessionDiffSource from one-shot fetch to periodic polling
(2.5s interval) with hash-based deduplication, matching the pattern
already used by WorktreeDiffSource. Also clean up legacy references
in WorktreeDiffSource doc comments.

- Introduce POLL_INTERVAL_MS constant and start/stop polling lifecycle
- Track lastHash to skip redundant diff posts when content unchanged
- Extract fetchDiffs helper to share between initialFetch and poll
- Guard all post calls against disposed state
- Add comprehensive polling unit tests with scripted fetch helper

* fix(ui): rename worktreeStats() calls to session.summary() in ChatView

Update ChatView component to use the renamed `session.summary()`
accessor instead of the deprecated `session.worktreeStats()` method,
aligning with the unified multi-source diff architecture.

* feat(diff): add snapshots-disabled notice to session diff source

Introduce a `notice` message type in the diff source protocol so that
`SessionDiffSource` can warn users when snapshot tracking is turned off
for their repository. The check queries the workspace config before
fetching diffs; when disabled, polling is skipped entirely and a
warning banner is rendered in the diff viewer webview.

- Add `SnapshotEnabledCheck` callback wired through `DiffSourceCatalog`
- Extend `DiffSourceMessage` and `ExtensionMessage` with `notice` type
- Forward notice messages from `DiffPanelManager` to the webview
- Render warning banner with icon in `DiffViewerApp`
- Add CSS for `.diff-viewer-notice` component
- Cover new behavior with unit tests

* refactor(i18n): replace hardcoded notice strings with typed keys and localized messages

Convert the diff viewer notice system from passing raw English strings
through the message protocol to using well-known typed identifiers that
the webview resolves to translated text at render time.

- Define `DiffSourceNotice` union type in source protocol layer
- Define `DiffViewerNotice` union type in webview message contract
- Change `notice` field from `message: string` to `notice: T | undefined`
- Map notice identifiers to i18n keys in `DiffViewerApp` via lookup table
- Localize `DiffPickerHeader` labels and group names through `useLanguage`
- Add `diffViewer.*` translation keys across all 19 locale files
- Update unit tests to assert typed notice identifiers

* docs(changeset): update unified diff panel description

Clarify feature summary to mention sidebar badge counts and
snapshots-disabled warning alongside the source dropdown.

* feat(vscode): port markdown diff render ahead of main merge

Cherry-picks the user-facing bits of main's #9846 (render markdown diffs) into
this branch so merging main later is trivial for the 5 shared files. Wires the
markdown toggle through the new DiffPanelManager architecture as global state,
persisted via the kilo-code.new.diff.renderMarkdown setting.

* refactor(vscode): replace if-chain message dispatch with handler map

Extract DiffPanelManager.onMessage logic into a declarative
messageHandlers record and a dedicated onWebviewReady method.
Also fix import paths for DiffSourceDescriptor/DiffSourceCapabilities
to reference canonical source types, add explicit generic to Set<string>,
and extend webview tsconfig include to cover diff-viewer and diff-virtual.

* style(ui): add padding to select section headers

* fix: formatting

* fix(vscode): prevent stale source activation after panel teardown

Introduce an epoch counter to guard against race conditions where
activateSource completes its async initialFetch after the panel has
been disposed or the source has been swapped. The epoch is incremented
on every source teardown and checked before starting polling.

* refactor(vscode): scope source post guard to lifecycle epoch

Pass the epoch counter into createSourcePost so that messages emitted
by a source after its lifecycle has ended are silently dropped. This
closes a gap where polling callbacks could still push updates to the
surface after the source was swapped out.

* feat(diff-viewer): rename workspace source to "Local Changes" and add tooltip

Remove the "Workspace" source group, moving the worktree source under
"Git". Rename its label from "Workspace local" to "Local Changes" across
all locales and introduce a tooltip explaining that it covers all branch
changes vs the base (uncommitted files and local commits). The picker
header now renders option tooltips on hover with a delayed open.

* docs(i18n): translate workspace tooltip into all supported locales

Replace the English fallback string for
`diffViewer.source.workspace.tooltip` with native translations in ar,
bs, ja, ko, no, pl, ru, th, tr, uk, zh, and zht locale files.

* style(diff-viewer): rename parameter `d` to `desc` in DiffPickerHeader

Improve readability by expanding the terse single-letter parameter name
to a more descriptive `desc` across helper functions and the render
callback in DiffPickerHeader.

* refactor(diff-sources): replace hardcoded label with type-driven i18n key lookup

Replace the `label` string field in DiffSourceDescriptor with a
`DiffSourceType` discriminant (`"workspace" | "session"`). The webview
now composes i18n keys dynamically from the type, eliminating ad-hoc
id-matching logic in DiffPickerHeader and ensuring every source gets
both a label and a tooltip via the translation dictionaries.

Also adds `diffViewer.source.session.tooltip` translations for all
supported locales and introduces descriptor-type stability tests.

* fix(i18n): shorten session source label by removing "current" qualifier across all locales

* refactor(diff): extract shared polling interval constant into dedicated module

Consolidate the duplicated `POLL_INTERVAL_MS` definitions from
`session.ts`, `worktree.ts`, and the hardcoded literal in
`worktree-diff-controller.ts` into a single `DIFF_POLL_INTERVAL_MS`
export in `diff/polling.ts`. Update all consumers and tests to
reference the new canonical constant.

* feat(diff): replace DiffPanelManager with DiffViewerProvider and SourceController

Remove the `manager/` directory (DiffPanelManager, panel-surface,
scheduler) and introduce two focused replacements:

- `DiffViewerProvider`: owns the webview panel lifecycle, HTML rendering,
  and message routing directly against `vscode.WebviewPanel`
- `SourceController`: manages the active DiffSource with epoch-based
  stale-message filtering, decoupled from any webview abstraction

The PanelSurface and Scheduler indirection layers are eliminated in
favor of direct VS Code API usage in the provider and a simpler
epoch-guarded post function in the controller. Tests are rewritten
to exercise SourceController in isolation without fake surfaces.

BREAKING CHANGE: DiffPanelManager, PanelSurface, and Scheduler exports are removed

* refactor(diff): decouple SourceController from DiffSourceCatalog via dependency injection

Replace the direct DiffSourceCatalog dependency in SourceController with
two injected function callbacks (`build` and `listAvailable`), removing
the tight coupling to the catalog class. DiffViewerProvider now passes
thin wrappers that delegate to the catalog instance.

Update tests to use lightweight inline fakes instead of the FakeCatalog
subclass, and remove redundant polling/lifecycle tests that tested
implementation details rather than behavior.

* feat(diff): add lazy per-file content loading for worktree diffs

Introduce on-demand fetching of full file content (before/after) for
summarized diff entries. The worktree source now polls only a lightweight
summary and resolves detail via `requestFile` when the webview expands a
file.

- Add `requestFile` to `DiffSource` interface and implement in
  `WorktreeDiffSource` using local git operations
- Wire `diffViewer.requestFile` message through DiffViewerProvider to
  SourceController
- Add `diffViewer.diffFile` extension message to deliver single-file
  detail back to the webview
- Webview merges incoming summaries with cached detail, tracks
  per-file loading state, and auto-refreshes stale entries

* refactor(session): replace custom patch parser with shared kilo-ui session-diff utilities

Remove the hand-rolled `patchToBeforeAfter` function and its unit tests
in favor of the `normalize` and `text` helpers exported from
`@kilocode/kilo-ui/session-diff`. This eliminates duplicated parsing
logic and aligns the extension with the canonical diff reconstruction
used across the UI layer.

* test(diff): add hash utility tests and remove obsolete polling specs

Introduce a dedicated test suite for `hashFileDiffs` covering stability,
field sensitivity, and summarized-patch exclusion semantics. Remove the
now-unused polling tests and their helper functions (`scripted`, `wait`,
`modifiedPatchV2`) from the session source spec, reducing test surface
to match the current implementation boundaries.

* style(webview): add spacing for diff picker header component

* fix(diff): prefer workspace over session as default diff source

Change priority order in defaultSourceId so workspace source takes
precedence over session source when both workspaceRoot and sessionId
are present. Update ChatView to use renamed worktreeStats() accessor.

* fix(vscode): correct DiffViewerProvider path, bump max-lines cap, and apply font-size token

Update font-size arch test to reflect DiffViewerProvider's move into
src/diff/, raise KiloProvider max-lines eslint cap to 3500, and
replace hardcoded 12px in banners.css with --kilo-font-size-12.
2026-05-06 16:54:53 +02:00
kiloconnect[bot] 70fde2221e refactor(upstream): improve compatibility commit lookup using semver
Update `findLatestCompatCommit` to use semantic versioning when identifying the latest compatibility commit. This ensures the correct commit is selected even when upstream tags diverge or are not strictly linear.

- Add semver parsing and comparison utilities
- Implement `targetSemver` to resolve versions from tags or commit messages
- Filter and sort compatibility candidates by version relative to the target version
- Add test case for diverging upstream tags
2026-05-06 14:34:13 +00:00
James Long 2abc4507b2 fix(tui): filter only connected workspaces in dialog; add warp synthetic message (#25915) 2026-05-06 10:25:42 -04:00
Marian Alexandru Alecu 3c73e90e4a Merge pull request #9453 from truffle-dev/fix/vscode-forward-http-proxy-to-cli
fix(vscode): forward VS Code http.proxy settings to spawned CLI process
2026-05-06 17:19:23 +03:00
kirillk 3547de9f29 Merge remote-tracking branch 'origin/main' into agreeable-marlin
# Conflicts:
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt
#	packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionUiLayoutTest.kt
2026-05-06 09:58:20 -04:00
Kirill Kalishev d5da176472 Merge pull request #9937 from Kilo-Org/recondite-crane
fix(jetbrains): auto-scroll
2026-05-06 09:50:40 -04:00
Alex Alecu 8cde26d7be fix(vscode): clear lowercase proxy 2026-05-06 16:41:57 +03:00
Alex Alecu 417401703c fix(vscode): clear proxy env 2026-05-06 16:19:06 +03:00
Marian Alexandru Alecu a8a07da8d8 Merge branch 'main' into fix/tui-submodule-session-worktree-family 2026-05-06 15:43:07 +03:00
Marian Alexandru Alecu 4cc65f2ce4 Merge pull request #9765 from truffle-dev/fix/plan-mode-mkdir-recursive-onedrive-9755
fix(cli): tolerate pre-existing plan directory on OneDrive
2026-05-06 15:42:25 +03:00
kiloconnect[bot] 0865780f20 chore: drop echo from upstream-merge allowlist to respect edit gating 2026-05-06 12:02:57 +00:00
kiloconnect[bot] d91e359296 chore: convert upstream-manual-merge command to agent with scoped permissions 2026-05-06 11:59:02 +00:00
Marian Alexandru Alecu 6637a88988 Merge branch 'main' into fix/tui-submodule-session-worktree-family 2026-05-06 14:52:07 +03:00
Marian Alexandru Alecu b1da38e9ac Merge branch 'main' into fix/plan-mode-mkdir-recursive-onedrive-9755 2026-05-06 14:50:22 +03:00
VastCosmic 7f8d2911bd fix: annotate OpenAI responses params guard 2026-05-06 19:40:50 +08:00
VastCosmic 6c8e269861 Merge branch 'main' into fix/openai-compat-reasoning-params 2026-05-06 19:39:26 +08:00
Marian Alexandru Alecu f4f5a001ce Merge pull request #9915 from Kilo-Org/fix/compact-thinking-level
fix(cli): preserve variant on compact
2026-05-06 14:38:20 +03:00
Christiaan Arnoldus 780695b0bf Merge pull request #9958 from Kilo-Org/chrarnoldus-patch-1
Remove Kilo-specific claude code header
2026-05-06 13:18:21 +02:00
Marius aec2425f6e Update native tab titles from sessions (#9961)
* feat(vscode): update native tab titles from sessions

* test(vscode): cover native tab title formatting
2026-05-06 11:15:22 +00:00
Alex Alecu b537c6191f chore(review): merge main 2026-05-06 14:05:01 +03:00
VastCosmic 8448cf2ab5 Merge branch 'Kilo-Org:main' into fix/openai-compat-reasoning-params 2026-05-06 18:42:03 +08:00
VastCosmic eede3e46c8 fix: minimize OpenAI responses params conflict resolution 2026-05-06 18:36:22 +08:00
Christiaan Arnoldus fb3438556e Remove Kilo-specific claude code header
Can't imagine this makes sense
2026-05-06 12:21:32 +02:00
Marian Alexandru Alecu e4d0787cc0 Merge pull request #9187 from sylwester-liljegren/install-script-update
feat(install): add Windows PATH persistence via registry
2026-05-06 13:17:24 +03:00
Mark IJbema a77843cbab refactor: kilo compat for v1.14.33 2026-05-06 12:13:06 +02:00
VastCosmic c6d67b153b Merge branch 'Kilo-Org:main' into fix/openai-compat-reasoning-params 2026-05-06 18:11:44 +08:00
Alex Alecu b9014b496e fix(cli): annotate local-review hook 2026-05-06 13:08:43 +03:00
VastCosmic 9f81004c2b fix: resolve OpenAI responses params merge conflicts 2026-05-06 18:06:50 +08:00
Mark IJbema bb1f2e48fe Merge pull request #9952 from Kilo-Org/mark/upstream-merge-head-base
Support HEAD as upstream merge base
2026-05-06 12:02:08 +02:00
Mark IJbema ca36a75c2d Merge branch 'main' into mark/upstream-merge-head-base 2026-05-06 11:52:23 +02:00
Mark IJbema 3bd1f28341 Merge pull request #9891 from Kilo-Org/session/agent_a6ecf426-6df9-4de2-832c-c3835090b68b
fix(cli): isolate upstream rerere training
2026-05-06 11:52:09 +02:00
Mark IJbema ed9a538668 Merge branch 'main' into mark/upstream-compat-base 2026-05-06 11:41:39 +02:00
kiloconnect[bot] e88dd31421 feat: support HEAD as upstream merge base 2026-05-06 09:38:26 +00:00
Mark IJbema c4a9ab912f Merge branch 'main' into session/agent_a6ecf426-6df9-4de2-832c-c3835090b68b 2026-05-06 11:22:24 +02:00
Alex Alecu 2d19ec2ff0 fix(ci): run workflow guard 2026-05-06 12:20:57 +03:00
Mark IJbema 82fc494cdd Merge pull request #9911 from Kilo-Org/markijbema/kilo-opencode-v1.14.30
Merge opencode v1.14.30
2026-05-06 11:20:42 +02:00
Alex Alecu 838670adbe feat(cli): ask for local-review base 2026-05-06 12:19:20 +03:00
Marian Alexandru Alecu a283dc1822 Merge branch 'main' into install-script-update 2026-05-06 12:14:58 +03:00
kilo-maintainer[bot] b1349843c8 release: v7.2.42 2026-05-06 09:05:30 +00:00
opencode-agent[bot] aa3c99a3c0 chore: update nix node_modules hashes 2026-05-06 08:50:56 +00:00
Mark IJbema 30d8a92197 Merge pull request #9949 from Kilo-Org/fix/checkout-v6-committer-token
fix(ci): clear checkout v6 credentials
2026-05-06 10:48:13 +02:00
Shoubhit Dash d49d217e9d fix(tui): preserve selected model on refresh (#25993) 2026-05-06 14:14:31 +05:30
Brendan Allan 043a5c7c0d feat(desktop): implement clipboard write permission handling (#25998) 2026-05-06 08:40:45 +00:00
kiloconnect[bot] fb5594743b fix(ci): clear checkout v6 credentials 2026-05-06 08:38:59 +00:00
Brendan Allan 901d1171a6 chore(desktop): add @parcel/watcher platform packages to optionalDependencies (#25996) 2026-05-06 08:37:10 +00:00
Mark IJbema 4eb963dcdd Merge branch 'main' into mark/autocomplete-model-dropdown 2026-05-06 10:32:02 +02:00
Marius 8ed0e17855 fix(agent-manager): recover worktrees after restart (#9939) 2026-05-06 10:25:55 +02:00
Mark IJbema ef45bedc33 Merge branch 'main' into session/agent_a6ecf426-6df9-4de2-832c-c3835090b68b 2026-05-06 10:25:08 +02:00
github-actions[bot] 8e2d0205e0 chore: update kilo-vscode visual regression baselines 2026-05-06 08:24:28 +00:00
Christiaan Arnoldus 5a90684ea2 Merge pull request #9918 from Kilo-Org/fix/encoding-flat-exports
refactor(cli): flatten Encoding/EncodedIO namespaces to module exports
2026-05-06 10:23:27 +02:00
Mark IJbema 18296936f3 Merge branch 'main' into mark/autocomplete-model-dropdown 2026-05-06 10:21:32 +02:00
Alex Alecu c776693f3b fix(ci): restore workflow check 2026-05-06 11:16:58 +03:00
Sergei Zharinov 518503b29b fix(ui): preserve SVG tags in DOMPurify config for KaTeX math rendering (#25866) 2026-05-06 16:06:37 +08:00
Alex Alecu bd6bbdddf3 style(cli): use marker block 2026-05-06 11:01:50 +03:00
Guiii c235ba1bef docs: fix CLI attach section order (#25749) 2026-05-06 15:56:38 +08:00
Imanol Maiztegui cd760cf3ca Merge pull request #9946 from Kilo-Org/imanol/edit-tool-styling
fix(vscode): theme edit tool diff in chat
2026-05-06 09:49:55 +02:00
Mark IJbema f3efadfe62 Merge branch 'main' into markijbema/kilo-opencode-v1.14.30 2026-05-06 09:48:59 +02:00
Mark IJbema 045a9b3291 fix versions 2026-05-06 09:34:48 +02:00
Imanol Maiztegui bff44337c7 refactor(styles): move Pierre diff CSS variables to vscode-bridge theme layer
Remove the `.kilo-diff-theme` utility class and its dedicated stylesheet,
relocating all Pierre diff engine custom properties into the centralized
`vscode-bridge.css` theme definition. This allows diff components to
inherit theming from the document root without requiring an explicit
class annotation on each container element.

- Delete `webview-ui/src/styles/diff.css`
- Drop `kilo-diff-theme` class from DiffPanel, FullScreenDiffView,
  DiffVirtualApp, and PermissionDiff components
- Remove corresponding `@import` statements from chat.css and
  agent-manager.css
2026-05-06 09:31:25 +02:00
Brendan Allan 754a1fb712 fix(desktop): suppress EPIPE errors in console transport (#25980) 2026-05-06 15:30:18 +08:00
Mark IJbema 68b2725f22 Merge pull request #9942 from Kilo-Org/mark/check-workflow-allowlist
ci: guard against upstream workflow additions
2026-05-06 09:27:07 +02:00
Mark IJbema aa59e70660 test(cli): fix TUI sync provider setup 2026-05-06 09:22:21 +02:00
kiloconnect[bot] 37af1bc751 check-workflows: drop disabled list, only check runnable workflows 2026-05-06 07:11:04 +00:00
kilo-maintainer[bot] 71d091b6bc chore: update nix node_modules hashes 2026-05-06 07:09:04 +00:00
kiloconnect[bot] 1a3a53f881 Merge remote-tracking branch 'origin/main' into fix/encoding-flat-exports
# Conflicts:
#	packages/opencode/src/kilocode/encoding.ts
2026-05-06 07:01:29 +00:00
Christiaan Arnoldus d0d5296e6d Merge pull request #9920 from Kilo-Org/simplify-bom-detection
refactor(cli): dedupe BOM byte sequences in encoding module
2026-05-06 08:58:12 +02:00
Christiaan Arnoldus 3f968d00b7 Merge pull request #9923 from Kilo-Org/chore/replace-jschardet-with-chardet
chore(cli): replace jschardet with chardet
2026-05-06 08:57:16 +02:00
Mark IJbema 1fcd9a6a40 Merge branch 'main' into markijbema/kilo-opencode-v1.14.30 2026-05-06 08:53:54 +02:00
kiloconnect[bot] 0c21808597 fix(check-workflows): also catch .yaml files 2026-05-06 06:48:06 +00:00
Mark IJbema 8d63212fb9 Merge pull request #9908 from Kilo-Org/catrielmuller/test-stability
test(cli): stabilize flaky unit test CI
2026-05-06 08:45:37 +02:00
kiloconnect[bot] ed973a93c0 annotate kilocode_change markers 2026-05-06 06:40:25 +00:00
Brendan Allan acca2e92dc fix(desktop): disable auto install on app quit (#25976) 2026-05-06 14:39:20 +08:00
kiloconnect[bot] 34959bfaac ci: guard against upstream workflow additions
Hardcodes the list of active and disabled workflows and fails CI when
.github/workflows/ drifts. Wired into check-opencode-annotations so we
don't add a new workflow file for this.
2026-05-06 06:38:28 +00:00
Frank 9d178e0944 sync 2026-05-06 01:05:09 -04:00
Brendan Allan 7c8cf6ca5b fix(desktop): suppress browser API Sentry errors in prod (#25972) 2026-05-06 12:44:40 +08:00
Jack 89afac3d9d go: restore Kimi K2.6 limits (#25969) 2026-05-06 12:39:52 +08:00
opencode-agent[bot] b4c60e1b21 chore: generate 2026-05-06 04:32:49 +00:00
Brendan Allan efd8024430 feat(desktop): add OPENCODE_TEST_ONBOARDING env (#25968) 2026-05-06 04:30:20 +00:00
opencode-agent[bot] 2f05676e04 chore: generate 2026-05-06 04:17:05 +00:00
Josh Lambert ee9344ae21 ci: bump smoke test agent setup timeout and capture install logs
The hello-world smoke test occasionally hits Harbor's 360s
AgentSetupTimeoutError when an apt mirror or NodeSource cdn is slow on
the Blacksmith runner, even though the install normally finishes in
~2:23. Bump the cap to 600s and start uploading the install script's
stdout/stderr so we can pinpoint the stalling step next time.
2026-05-06 00:16:02 -04:00
imduchuyyy 🐬 5013e8a8ec docs: update desktop app references from Tauri to Electron (#25965) 2026-05-06 12:15:59 +08:00
kirillk d7e0351203 refactor(jetbrains): split session header package 2026-05-05 22:55:59 -04:00
kirillk 202b3950ac refactor(jetbrains): type session timeline tools 2026-05-05 22:49:47 -04:00
kirillk 40b8939cb7 fix(jetbrains): refine session header timeline 2026-05-05 22:21:50 -04:00
opencode-agent[bot] 6e7c9eb820 chore: generate 2026-05-06 01:35:13 +00:00
Kit Langton 8555de8189 Type session not-found errors (#25818) 2026-05-05 21:33:47 -04:00
kirillk 1edf1f662a fix(jetbrains): align session header styling 2026-05-05 21:10:05 -04:00
kirillk ae6d4b51f4 feat(jetbrains): collapse session header metrics 2026-05-05 20:25:47 -04:00
Luke Parker f5c3d352a1 fix(app): require query functions for sync queries (#25939) 2026-05-06 10:09:32 +10:00
kirillk b103a5f156 feat(jetbrains): add session header 2026-05-05 19:34:12 -04:00
Luke Parker e117397d0f fix(server): restore web terminal CSP allowances (#25937) 2026-05-06 09:32:51 +10:00
opencode-agent[bot] 1fbc13a1b4 chore: generate 2026-05-05 23:08:37 +00:00
Aiden Cline 6409aceb1a fix: sanitize surrogates (#25934) 2026-05-05 18:07:23 -05:00
kirillk 6d05a5448f feat(jetbrains): prepare session header data model 2026-05-05 18:04:05 -04:00
opencode-agent[bot] 837cc92586 chore: generate 2026-05-05 21:56:18 +00:00
kirillk 7f5f7e30c9 perf(jetbrains): reduce session scroll layout work 2026-05-05 17:55:35 -04:00
Nathan Nguyen ca77b8f8e9 fix(cf-ai-gateway): route provider options through openaiCompatible key (#24432) (#25573) 2026-05-05 16:55:08 -05:00
Thomas Brugman 40a4d5eae2 fix(ui): keep settings select within viewport (#9910)
Co-authored-by: Marius <marius@kilocode.ai>
2026-05-05 21:43:48 +00:00
kirillk ceef678ecb fix(jetbrains): stabilize existing session scroll 2026-05-05 17:13:30 -04:00
opencode-agent[bot] 25547e9337 chore: generate 2026-05-05 20:41:12 +00:00
James Long 12f3d1f505 fix(core): use current workspace with /new; fix warping into local project (#25894) 2026-05-05 16:39:37 -04:00
James Long 8e182c7782 fix(core): better state handling of editor context (#25911) 2026-05-05 15:53:05 -04:00
OpeOginni 8a797ed9a1 fix(TUI): update agent create target path from "/agent" to "/agents" (#14427) 2026-05-05 14:51:40 -05:00
Catriel Müller f3e156cc96 fix: fix test on windows 2026-05-05 16:30:24 -03:00
Mark IJbema 05d5061653 fix(cli): align HttpApi auth default with Hono and skip un-migrated parity tests
The HttpApi authorization middleware defaulted the username to
"opencode", while the Hono AuthMiddleware already defaulted to "kilo"
(kilocode_change). The parity tests added by upstream in
packages/opencode/test/server/httpapi-sdk.test.ts exposed the
inconsistency. Align the HttpApi middleware to also default to "kilo"
and update the pre-existing basic-auth test creds that hit it.

Two new httpapi-sdk parity tests also hit Kilo overlay routes
(/config/providers, /agent) that aren't yet wired onto the Effect
HttpApi bridge, returning 500. Skip those two with kilocode_change
markers pointing at the same "migrate Kilo overlay routes onto the
HttpApi bridge" follow-up the existing httpapi-bridge.test.ts comment
references.
2026-05-05 21:23:09 +02:00
Catriel Müller 8002771629 fix: fix flasky test 2026-05-05 15:58:37 -03:00
Catriel Müller ec57cd450c refactor: fix opencode annotations when rollback a kilocode change 2026-05-05 15:29:06 -03:00
Catriel Müller 4b03814092 refactor: enabled skiped test 2026-05-05 14:44:11 -03:00
Josh Holmer 520922ff39 fix(indexing): prevent indexing home directory when no project is open (#9928) 2026-05-05 18:46:40 +02:00
Josh Holmer 914bbdfd05 fix(core): restore Skill tool as allow by default (#9924) 2026-05-05 18:21:48 +02:00
kiloconnect[bot] 2c90fa8945 fix(cli): remove redundant per-line kilocode_change markers
The three lines are already inside a kilocode_change start/end block,
so the individual line markers are unnecessary.
2026-05-05 16:21:27 +00:00
Catriel Müller ee3270ce1c ci: bump github actions to versions that natively target Node 24
Covers the "Node.js 20 is deprecated" warning emitted by actions/checkout,
actions/setup-node, actions/cache, actions/upload-artifact and
actions/download-artifact on their older releases.

Every bumped line carries an inline `# kilocode_change` marker since these
workflow files are shared with upstream OpenCode. When upstream bumps its
own action versions we just drop the markers on merge.
2026-05-05 13:03:12 -03:00
Catriel Müller 20428f2630 Revert bumps in upstream-shared workflows to minimize merge conflicts
Keeps the 4vcpu host change in test.yml (already annotated with
# kilocode_change). The Node 20 deprecation warning stays for now;
`FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true` already forces the v4 actions to
Node 24 at runtime, so the warning is informational and CI still works.
Bumping all actions would require 40+ kilocode_change markers across
shared upstream workflows and invite conflicts on every upstream merge —
we'll pick up the version bumps when upstream does.
2026-05-05 12:53:03 -03:00
Catriel Müller 0de07760a7 ci: bump actions to Node 24 and surface flaky tests to the UI
- Bump all active workflows to action versions that natively target Node 24:
  checkout@v6, setup-node@v6, cache@v5, upload-artifact@v7, download-artifact@v8.
  Resolves the "Node.js 20 is deprecated" warning in CI logs. The kept
  `FORCE_JAVASCRIPT_ACTIONS_TO_NODE24` env stays as a no-op safety net (also
  in upstream OpenCode).
- test-runner: when running under GitHub Actions, emit a `::warning::`
  annotation per flaky file and append a markdown table to
  `$GITHUB_STEP_SUMMARY`. mikepenz/action-junit-report already surfaces
  failures from the JUnit XML, but flakies pass cleanly on retry and were
  invisible in the UI.
2026-05-05 12:53:03 -03:00
Catriel Müller 3f5ed52cd3 refactor: include quarantine on the same runner file 2026-05-05 12:53:03 -03:00
Catriel Müller c21a1b855f fix(cli): produce well-formed JUnit when bun emits nested testsuites
The per-file JUnit merge was walking `<testsuite>` tags by hand and closing
on the first `</testsuite>` it found. Bun's junit reporter nests one
`<testsuite>` per `describe` block inside an outer `<testsuite>` for the
file itself, so the inner close was matched and the outer one got dropped.
Every file contributed one unclosed `<testsuite>` to the merged output,
pushing XML depth up until mikepenz/action-junit-report's sax parser
failed with "Unexpected close tag" (and xmllint with "Excessive depth").

Switch to grabbing everything between the outer `<testsuites ...>` and
`</testsuites>` of each file's XML — nested structure is preserved
verbatim, no custom walking needed. Read aggregate counts from the root
`<testsuites>` attributes so nested `tests="..."` attrs don't get
double-counted either.

Validated locally: `xmllint --noout` passes on the merged output for a
mix of files with and without nested describes.
2026-05-05 12:53:03 -03:00
Catriel Müller 3d063eb47f test(cli): stabilize flaky unit test CI
- Lower default runner concurrency from `os.cpus().length` to `min(4, cpus)`.
  The bottleneck in CI is shared resources (OAuth callback ports, global
  filesystem like `~/.local/share/kilo`), not CPU, so eight parallel Bun
  processes were triggering port/FS races instead of going faster.
- Raise per-test timeout from 30s to 60s. Slow `spawn` on Windows was
  tripping the 30s limit on tests that were just slow, not broken
  (e.g. `session/prompt.test.ts` at ~86s, `provider/provider.test.ts` at ~54s).
- Retry failing files once and surface them as FLAKY in the summary plus a
  dedicated section. Bugs still fail on every attempt; contention recovers.
- Drop CI runners from 8vcpu to 4vcpu to match upstream OpenCode — with
  concurrency capped at 4, the extra cores bought us nothing.
2026-05-05 12:53:03 -03:00
Imanol Maiztegui 54b2c4dbd3 Merge pull request #9929 from Kilo-Org/imanol/fix-diff-hover-styling
fix(vscode): preserve diff tint on hover
2026-05-05 17:48:51 +02:00
Mark IJbema 9eff48304f Merge pull request #9930 from Kilo-Org/mark/fully-disable-stale-workflows
chore: fully disable stale workflows
2026-05-05 17:48:11 +02:00
Aiden Cline 25ecf0af6b fix: retry server_is_overloaded errors (#25888) 2026-05-05 10:39:25 -05:00
Mark IJbema 4d14811e63 Merge pull request #9925 from Kilo-Org/chore/zdiff3-conflict-style
chore: enforce zdiff3 conflict style via postinstall
2026-05-05 17:37:01 +02:00
kiloconnect[bot] 2bf876a6cc docs(cli): clarify that normalize() is for canonicalization, not iconv 2026-05-05 15:35:24 +00:00
kiloconnect[bot] dff7761aac chore: move stale-disabled workflows to disabled folder
Consolidate workflow disabling: the six workflows previously soft-disabled
via `if: false` / `&& false` are now moved and renamed alongside the
other `.disabled` workflows so the disabling mechanism is consistent.
2026-05-05 15:34:31 +00:00
kiloconnect[bot] 5525f471d0 chore: reset stale-disabled workflows to upstream
Reset six workflow files that were soft-disabled via `if: false` / `&& false`
to the last merged upstream (v1.14.29) before moving them to the disabled folder
in a follow-up commit.
2026-05-05 15:34:21 +00:00
Aiden Cline 576480b5dc fix: ensure mistral medium 3.5 has variants properly setup (#25887) 2026-05-05 10:34:20 -05:00
kiloconnect[bot] b7172b40f7 refactor(cli): drop normalize entries for labels chardet never emits
jschardet produced labels like "ascii", "gb2312", "MacCyrillic", "IBM855/866",
and "TIS-620". chardet's supported encoding set does not include any of
these (ASCII folds into UTF-8; Chinese is emitted as GB18030), so the
mappings were dead code.
2026-05-05 15:33:20 +00:00
Mark IJbema 91ee8ea438 Merge pull request #9927 from Kilo-Org/mark/reset-to-upstream-round1
chore(upstream): drop stale kilocode_change markers + minor cosmetic drift
2026-05-05 17:26:18 +02:00
Imanol Maiztegui d49b5b005c fix(vscode): consolidate diff theme CSS variables into shared utility class
Extract duplicated Pierre diff CSS custom properties from multiple
stylesheets into a single shared `.kilo-diff-theme` class in
`webview-ui/src/styles/diff.css`. Apply the class to all diff container
elements (DiffPanel, FullScreenDiffView, DiffVirtualApp, PermissionDiff)
so hover overrides are consistently defined.

This fixes diff hover styling by adding the missing
`--diffs-bg-addition-hover-override` and
`--diffs-bg-deletion-hover-override` variables and eliminates ~130 lines
of duplicated CSS variable declarations across the codebase.
2026-05-05 17:22:42 +02:00
Mark IJbema f083bc44aa chore(upstream): drop stale kilocode_change markers + minor cosmetic drift
Result of running find-reset-candidates.ts across the repo and hand-
reviewing each candidate.

- mcp/oauth-provider.ts: kilocode_change markers were stale — the
  branding (Kilo, kilo.ai) already lives in the translate transforms,
  so the marker annotations no longer point at any Kilo-specific code.
- acp/session.ts: matches upstream's import order.
- tui/ui/dialog.tsx: matches upstream's prettier line-wrap on a long
  onMouseUp prop.

No behavior change.
2026-05-05 17:16:39 +02:00
kiloconnect[bot] 05fabd3f1f chore: mark script/setup-git.ts with kilocode_change marker 2026-05-05 15:11:02 +00:00
Mark IJbema b5c584ceac Merge pull request #9916 from Kilo-Org/mark/sync-upstream-versions
chore: add sync-versions script for upstream merges
2026-05-05 17:05:13 +02:00
kiloconnect[bot] c239a6bb22 chore(config): enforce zdiff3 conflict style via postinstall
Add a new setup script to configure `merge.conflictStyle=zdiff3` locally
within the repository. This ensures that the common ancestor is visible
during merge conflicts, which is required for structural resolution by
`mergiraf` and simplifies manual conflict resolution.

The configuration is applied during `bun install` via the `postinstall`
hook and remains as a fallback for the upstream merge utilities.
2026-05-05 14:49:50 +00:00
kiloconnect[bot] cedf008ff3 test(cli): document why chardet's short-sample weakness is acceptable 2026-05-05 14:48:57 +00:00
kiloconnect[bot] c662ada566 test(cli): pad Shift_JIS sample so chardet can identify it
chardet is less aggressive than jschardet on short CJK samples; a
12-byte Shift_JIS phrase now collides with the windows-1252 profile.
Reuse the longer Shift_JIS sample the rest of the suite relies on.
2026-05-05 14:43:43 +00:00
kiloconnect[bot] 869088b882 chore(cli): replace jschardet with chardet
Swap jschardet for the actively-maintained chardet library for text
encoding detection. chardet ships with TypeScript definitions, so the
local jschardet module shim is no longer needed.
2026-05-05 14:39:38 +00:00
kirillk c3c783db1f refactor(jetbrains): extract session scrolling 2026-05-05 10:39:37 -04:00
Alex Alecu 53ecfb67c1 fix(cli): skip model sync before parts load 2026-05-05 17:27:23 +03:00
opencode-agent[bot] fdb4b7c4a5 chore: update nix node_modules hashes 2026-05-05 14:27:06 +00:00
kiloconnect[bot] 02415384df refactor(cli): dedupe BOM byte sequences in encoding module
Consolidate the UTF-8/16/32 BOM byte literals into a single lookup table
and share a startsWith helper across detection and encoding. Pure
refactor in a Kilo-only file; upstream diff unchanged.
2026-05-05 14:16:05 +00:00
kiloconnect[bot] 4528aa5cf0 refactor(cli): flatten Encoding/EncodedIO namespaces to module exports
Replace `export namespace Encoding`/`EncodedIO` wrappers with top-level
exports and switch consumers to `import * as Encoding`/`EncodedIO`.
The module itself acts as the namespace, avoiding the TS-namespace
wrapper that tree-shakers and some module resolvers handle awkwardly.
2026-05-05 14:12:51 +00:00
Victor Navarro 726ae6f541 chore: configure alerting and monitoring (#25857) 2026-05-05 16:08:28 +02:00
Alex Alecu f65abc6d86 fix(cli): wait for message parts 2026-05-05 16:56:48 +03:00
Mark IJbema 6cff7212b3 Merge pull request #9902 from Kilo-Org/mark/find-reset-candidates
chore(upstream): add find-reset-candidates helper
2026-05-05 15:56:20 +02:00
Christiaan Arnoldus 37be66b0f2 Merge pull request #9909 from Kilo-Org/feat/utf-32-bom-encoding
feat(cli): support UTF-32 with BOM for file encoding detection
2026-05-05 15:50:48 +02:00
Alex Alecu 1db15a686d fix(cli): skip compact sync 2026-05-05 16:47:16 +03:00
marius-kilocode 42e43c4e44 fix(vscode): keep active terminal for agent manager context 2026-05-05 15:47:01 +02:00
kiloconnect[bot] 3618565040 chore: annotate sync-versions.ts as kilocode new file 2026-05-05 13:45:44 +00:00
kiloconnect[bot] 6a989dc6bc chore: add sync-versions script for upstream merges
Upstream opencode stamps its own version into shared files (the Zed extension toml + any package.json it bumps), which leaves the tree pointing at an upstream release tag that doesn't exist on Kilo's pipeline — Zed download URLs silently 404 as a result.

script/sync-versions.ts rewrites every top-level package.json version and the Zed extension toml (version + 5 download URLs) to a single target in one shot. Defaults to the root package.json version, accepts an explicit version argument, and skips packages/kilo-jetbrains/ which tracks its own cadence.

Documented in .kilo/command/upstream-manual-merge.md as a dedicated step-10 commit after 'resolve merge conflicts' so version churn stays out of the behavioural merge commit.
2026-05-05 13:43:54 +00:00
Christiaan Arnoldus 7fa306c01e Merge branch 'main' into feat/utf-32-bom-encoding 2026-05-05 15:40:19 +02:00
Mark IJbema db1cffb744 fix(core): remove duplicate rotating-file-stream dep
Auto-merge left two entries for rotating-file-stream in @opencode-ai/core's
dependencies block. bun install rejected the JSON, failing every CI job
(typecheck, unit tests, visual regression) at the install step.
2026-05-05 15:38:45 +02:00
Marian Alexandru Alecu fd6c4658a8 Merge pull request #9844 from Kilo-Org/track-code-reviews
fix(cli): track local reviews
2026-05-05 16:38:43 +03:00
Mark IJbema 0eb187cf2f Merge pull request #9912 from Kilo-Org/mark/improve-upstream-manual-merge-command
docs(kilo-cli): tighten upstream-manual-merge command
2026-05-05 15:38:17 +02:00
Alex Alecu bcb47be3b0 fix(cli): preserve variant after compact 2026-05-05 16:38:10 +03:00
Mark IJbema 9a833ad171 docs(kilo-cli): use find-conflict-markers.sh for post-edit verification 2026-05-05 15:29:45 +02:00
Mark IJbema 0c5ec06f6e fix(upstream): pre-filter big + policy-protected files
Fixes hang when running the finder from the repo root without a path
scope. Root cause: upstream-only packages (packages/console, packages/web,
packages/desktop, etc. in config.skipFiles) contain multi-megabyte
media assets that stall concurrent Bun `git show` subprocesses on the
pipe buffer.

Changes:
- Batch upstream blob sizes in one `git cat-file --batch-check`
  subprocess before classifying anything. Files with missing upstream
  land directly in `upstream-missing`; files > 256 KB land in the new
  `too-large` bucket. Only sane-sized survivors get per-file `git show`.
- Filter out files matching the merge config's `keepOurs` and
  `skipFiles` globs (.github workflows, translated READMEs, upstream-
  only packages, etc.) — these are intentionally preserved or removed
  in Kilo and would otherwise pollute the report and tempt incorrect
  resets.

Full-repo dry-run now completes in ~2s.
2026-05-05 15:25:37 +02:00
kirillk cd7e2f9594 fix(jetbrains): stabilize session scroll following 2026-05-05 09:24:22 -04:00
Mark IJbema 8b407f4fd7 docs(kilo-cli): tighten upstream-manual-merge command
Incorporate lessons from the v1.14.30 merge: explain reasoning before
showing diffs, investigate why Kilo-specific helpers exist before
bypassing them, prefer commenting-out over deletion with kilocode_change
markers, use TODO (not NOTE) for follow-ups, check adjacent files that
structural upstream splits force you to touch, grep for usages before
deleting apparently-unused upstream declarations, and include PR-body
guidance and the 'resolve merge conflicts' commit convention.
2026-05-05 15:23:29 +02:00
Marius d9d4dcd37c fix(cli): recover dangling assistant turns (#9907) 2026-05-05 10:22:45 -03:00
Marius 0c5d75772d Show snapshot progress in working indicator (#9905)
* fix(vscode): show snapshot progress in working indicator

* fix(vscode): type synthetic text parts

* fix(vscode): keep provider under lint line cap
2026-05-05 15:18:13 +02:00
Mark IJbema 1ba2980cad resolve merge conflicts 2026-05-05 15:11:52 +02:00
kilo-agent 988d080f96 remove redundant wide-UTF BOM gate from detect()
Users that hand us BOM-less UTF-16/32 are violating the documented
contract; trust jschardet + iconv.encodingExists and let the result
be whatever it is.
2026-05-05 13:06:57 +00:00
kilo-agent 9ffd047962 feat(cli): support UTF-32 with BOM for file encoding detection
UTF-16 and UTF-32 without a BOM remain unsupported (ambiguous).

Aligns with upstream opencode PR chrarnoldus/opencode#1.
2026-05-05 13:02:21 +00:00
Catriel Müller 7c59d31ec5 Merge pull request #9901 from Kilo-Org/determined-oxygen
test(cli): quarantine flaky MCP OAuth browser tests
2026-05-05 09:44:44 -03:00
Marius b7657d1aef Add webview font size setting (#9824)
* feat(vscode): add webview font size setting

* test(vscode): guard webview font size tokens

* fix(vscode): add font size locale keys

* fix(vscode): preserve default webview font rendering

* fix(vscode): keep provider under line cap

* chore: update kilo-vscode visual regression baselines

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-05 14:43:53 +02:00
Mark IJbema 36beb51eec Merge branch 'main' into mark/find-reset-candidates 2026-05-05 14:33:00 +02:00
Mark IJbema 0b763ac4ce Some resets found by this script 2026-05-05 14:31:32 +02:00
kiloconnect[bot] 00fa54906f fix(cli): annotate renamed question boolean in builtin array 2026-05-05 12:26:16 +00:00
Mark IJbema 346c1058cc Merge pull request #9904 from Kilo-Org/fix/mention-autocomplete-trailing-space
fix(vscode): append trailing space after @ mention autocomplete
2026-05-05 14:24:34 +02:00
kiloconnect[bot] f0b8bc6b27 refactor(cli): align question gating with upstream position
Move the Kilo question-tool boolean adjacent to `const cfg = yield* config.get()`
matching upstream's placement (commit 9d3c81a68, right after `const config = await
Config.get()`). When upstream's version eventually merges in, the two lines land
next to each other and produce a localized textual conflict — instead of silently
coexisting as dead upstream code plus our divergent gating.

Rename `const question = yield* QuestionTool` to `questiontool` (matching our
existing `lsptool`/`suggesttool` pattern) so the `question` identifier is free
for the boolean, aligning exactly with upstream's naming.
2026-05-05 12:24:18 +00:00
Catriel Müller b37808d123 Merge pull request #9881 from Kilo-Org/catrielmuller/fix-9511
fix(vscode): route Kilo Gateway sign-in through Profile view
2026-05-05 09:22:35 -03:00
Mark IJbema c1accfa588 fix(upstream): stop finder hanging on big assets
Replace the subprocess-based line diff in classifyDrift with an
in-process multiset diff (approxDiff) so concurrent classifications
don't deadlock on big text files like sprite.svg via Bun $.quiet()
pipe-buffer stalls.

Also filter non-code assets (SVG, PNG, fonts, archives, lock files,
etc.) before classification so they don't bloat the report or stress
git subprocesses. Switch kilo-only path excludes to glob pathspecs so
every packages/kilo-*/ and **/kilocode/** dir is excluded without
maintaining a hand list.

Rename the 'whitespace-only' bucket to 'cosmetic-only' — with the
multiset diff it also catches line reordering, so the old label was
misleading.
2026-05-05 14:17:33 +02:00
kiloconnect[bot] 080faf4df8 fix(vscode): append trailing space after @ mention autocomplete
When autocompleting a file, folder, or special mention via the @ menu
in the chat textarea, insert a single trailing space (unless the next
char is already whitespace) so typing immediately after selection does
not get appended to the path and break attachment parsing.
2026-05-05 12:15:40 +00:00
Marian Alexandru Alecu 490df21393 Merge pull request #9887 from Kilo-Org/fix/queued-compaction-marker
fix(cli): process queued compaction markers
2026-05-05 15:05:25 +03:00
Marius 59e8effc3d Make codebase indexing setting project-specific (#9855)
* fix: make indexing enablement project-specific

* chore: annotate indexing config changes

* fix: save TUI indexing toggle per project

* fix: move indexing scope logic to Kilo config
2026-05-05 14:04:56 +02:00
Marius 4737eedef2 test(vscode): cover opening config files (#9864) 2026-05-05 14:04:43 +02:00
kilo-code-bot[bot] 008387a8ac fix(cli): restore kilo branding in MCP auth toast and client name (#9892)
* fix(cli): restore kilo branding in MCP auth toast and client name

The 'Run: opencode mcp auth' popup / toast and the MCP protocol client
'name' field were reverted to 'opencode' by an upstream refactor
(opencode PR #22913, pulled in via Kilo PR #9346). Re-apply the
Kilo-branded strings with narrow kilocode_change markers and add a
regression test in packages/opencode/test/kilocode/ so the next upstream
merge fails a Kilo-owned test instead of shipping an 'opencode' popup.

* fix: use kilocode_change block markers for startAuth signature

---------

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Co-authored-by: marius-kilocode <marius@kilocode.ai>
2026-05-05 14:04:37 +02:00
marius-kilocode c0c982befd test(cli): allow explicit quarantined test runs 2026-05-05 13:47:34 +02:00
kiloconnect[bot] 1bba35469f fix(cli): use block markers for multi-line questionEnabled 2026-05-05 11:44:59 +00:00
Mark IJbema 3f2ea7188b chore(upstream): add find-reset-candidates helper
Bulk-finds files that have drifted insignificantly from the last merged
upstream and (optionally) resets them. Extracts shared clean/changed
marker helpers into utils/markers.ts and shared reset logic into
utils/reset.ts so both the single-file reset helper and the new finder
use the same classification pipeline.
2026-05-05 13:44:01 +02:00
marius-kilocode 279a86c2b6 test(cli): quarantine flaky MCP OAuth browser tests 2026-05-05 13:43:00 +02:00
Catriel Müller 6b9b659b96 refactor: disable flasky windows test 2026-05-05 08:42:14 -03:00
kiloconnect[bot] 57592b5272 refactor(cli): inline override predicates in tool registry
Inline question/plan/e2e gating expressions at call sites in the shared
tool registry instead of routing them through KiloToolRegistry. These are
overrides of upstream tool gating — hiding them behind extracted predicates
accepts upstream textual merges cleanly but silently drops Kilo's intent
when upstream restructures the gating. Inlining forces a textual conflict
when upstream touches the same logic, which is the review step we want.

Additive extractions (build/infos/extra) stay in KiloToolRegistry — those
don't have an upstream peer to conflict with.

Also tighten the kilocode_change markers around the Effect.all and return
blocks to per-line markers so unrelated upstream edits don't land inside
Kilo-owned scope.
2026-05-05 11:41:33 +00:00
Scuttle Bot 35dd6557c3 docs: update Ask agent tool access to reflect read-only bash and MCP support (#7955) 2026-05-05 13:18:02 +02:00
Mark IJbema 3db7620ddb Merge pull request #9888 from Kilo-Org/mark/upstream-manual-prompt-zdiff
docs(upstream): extract manual merge prompt
2026-05-05 13:06:42 +02:00
Mark IJbema dcfe67a299 Merge branch 'main' into mark/simplify-autocomplete-model 2026-05-05 12:58:13 +02:00
opencode 773078e81f sync release versions for v1.14.39 2026-05-05 10:57:52 +00:00
Mark IJbema 2701776e21 refactor: kilo compat for v1.14.30 2026-05-05 12:50:48 +02:00
Mark IJbema 23818a5127 Merge pull request #9896 from Kilo-Org/mark/skip-team-members
chore(upstream): skip files Kilo has removed from upstream
2026-05-05 12:49:41 +02:00
Mark IJbema fcce31aae7 Merge remote-tracking branch 'origin/main' into mark/upstream-manual-prompt-zdiff 2026-05-05 12:48:05 +02:00
Shoubhit Dash 811954880e fix(compaction): order compaction summary before retained tail (#25851) 2026-05-05 16:12:37 +05:30
Luke Parker 465c83cf82 fix(desktop): respect proxy environment (#25846) 2026-05-05 20:34:28 +10:00
kiloconnect[bot] 6986b2b879 chore(upstream): skip files Kilo has removed from upstream
Add .github/TEAM_MEMBERS and other files Kilo has deleted to skipFiles
so future upstream merges auto-remove them via git rm instead of
surfacing delete-by-us conflicts that need manual resolution.

Also drop the stale github/.gitignore entry from keepOurs (the file
does not exist in Kilo main; keepOurs was a no-op) and move it to
skipFiles so upstream's copy is dropped on merge instead of added.
2026-05-05 10:27:26 +00:00
Brendan Allan bb9b81aa37 fix(desktop): add error handling to store-get IPC handler (#25850) 2026-05-05 18:24:21 +08:00
Mark IJbema 33891196c7 Merge pull request #9895 from Kilo-Org/mark/release-slack-prerelease-status
fix: show release type in Slack notifications
2026-05-05 12:15:27 +02:00
Christiaan Arnoldus 12d2c08e8f Merge pull request #8732 from shssoichiro/cli-cost
feat(cli): show model costs in model picker
2026-05-05 11:54:44 +02:00
kiloconnect[bot] 35a1aa043d fix(vscode): keep provider file within line cap 2026-05-05 09:49:37 +00:00
opencode a20446fcc8 sync release versions for v1.14.38 2026-05-05 09:48:25 +00:00
kiloconnect[bot] 7be57483bd docs(upstream): keep manual merge prompt only 2026-05-05 09:44:58 +00:00
Mark IJbema aef7147395 Merge remote-tracking branch 'origin/main' into mark/upstream-manual-prompt-zdiff 2026-05-05 11:38:26 +02:00
Mark IJbema 694773a7c9 Merge remote-tracking branch 'origin/main' into mark/upstream-compat-base 2026-05-05 11:30:58 +02:00
Mark IJbema e77c6c005a Merge pull request #9889 from Kilo-Org/mark/reset-file-to-upstream
Add reset-to-upstream helper
2026-05-05 11:29:48 +02:00
Marius 27d14d432c fix(cli): keep env reads behind ask (#9843)
* fix(cli): keep env reads behind ask

* fix(cli): protect pending env reads

* fix(cli): share permission rule helpers
2026-05-05 11:24:34 +02:00
kiloconnect[bot] 47cab6b3df fix: show release type in Slack notifications 2026-05-05 09:12:27 +00:00
github-actions[bot] 04defbcbc9 chore: update kilo-vscode visual regression baselines 2026-05-05 09:11:00 +00:00
kiloconnect[bot] c46b40ac17 fix(vscode): align autocomplete model selector 2026-05-05 09:07:59 +00:00
opencode-agent[bot] 292c2aa458 chore: update nix node_modules hashes 2026-05-05 09:06:37 +00:00
Brendan Allan 52bb088753 fix(server): allow all connect-src origins in CSP for embedded UI (#25838) 2026-05-05 17:06:30 +08:00
kilo-maintainer[bot] 8fcc77a2ae release: v7.2.40 2026-05-05 09:05:27 +00:00
Marius f392debf0f fix(cli): serialize OAuth callback port tests (#9870)
* fix(cli): serialize OAuth callback port tests

* fix(cli): close MCP OAuth browser test listener race

The mock subprocess emitted its error via setTimeout(10ms), which raced the error listener attachment on slow Windows CI and left BrowserOpenFailed unpublished. Emit on newListener('error') via a microtask so the listener is always attached first. Revert the unrelated test-runner serialization.

* fix(cli): deliver MCP OAuth mock error to listener directly

Override subprocess.on in the mock so the error is queued to the registered listener as soon as it attaches. The previous newListener + emit chain still lost events on slow Windows CI because EventEmitter dispatch can race microtask draining.
2026-05-05 11:04:53 +02:00
Mark IJbema 46cc553c00 Merge branch 'main' into mark/simplify-autocomplete-model 2026-05-05 10:48:10 +02:00
Luke Parker b8f8f5d3a8 fix(desktop): trust system certificates (#25837) 2026-05-05 18:47:38 +10:00
kiloconnect[bot] 33aa8e5184 fix(cli): isolate upstream rerere training 2026-05-05 08:40:26 +00:00
kilo-maintainer[bot] 4e1bae01ae release: v7.2.39 2026-05-05 08:30:11 +00:00
kiloconnect[bot] b59dfaa642 fix: preserve binary upstream resets 2026-05-05 08:28:57 +00:00
kiloconnect[bot] f206432a0c docs(upstream): generalize manual merge pitfalls 2026-05-05 08:19:27 +00:00
kiloconnect[bot] 6e3ddaad60 feat: add reset-to-upstream script 2026-05-05 08:19:17 +00:00
Imanol Maiztegui d7643bcdff Merge pull request #9886 from Kilo-Org/imanol/fix-build-scripts
fix(cli): skip web UI embed when packages/app is missing
2026-05-05 10:19:00 +02:00
kiloconnect[bot] 3788991bd4 docs(upstream): require manual merge approval 2026-05-05 08:14:02 +00:00
kiloconnect[bot] 87845d176b docs(upstream): extract manual merge prompt 2026-05-05 08:11:09 +00:00
kiloconnect[bot] 5c14ec2bed fix: preserve upstream ancestry on kilo merge 2026-05-05 08:10:36 +00:00
Imanol Maiztegui 6cd26f31c6 fix(cli): skip web UI embed when packages/app is missing
The upstream build script tries to bundle packages/app/ which was removed in #9845. Guard the embed step so the CLI build still works, and revert the --skip-embed-web-ui workaround from #9885 since it is no longer needed.
2026-05-05 10:10:03 +02:00
Alex Alecu d9453f0da2 fix(cli): process queued compaction markers 2026-05-05 11:00:55 +03:00
kiloconnect[bot] fe3724605f fix: resolve compat bases from version tags 2026-05-05 08:00:21 +00:00
kiloconnect[bot] 4b22bfbc57 fix: keep compat branches linear 2026-05-05 07:57:01 +00:00
Imanol Maiztegui 1271422bd4 Merge pull request #9885 from Kilo-Org/imanol/fix-extension-build-script
Skip embedding web UI in extension build script
2026-05-05 09:41:39 +02:00
kilo-maintainer[bot] 8935522311 chore: update nix node_modules hashes 2026-05-05 07:37:23 +00:00
Imanol Maiztegui af41b32038 fix(kilo-vscode): skip embedding web UI in extension build script
Add --skip-embed-web-ui flag to the build command to avoid bundling
packages/app since the extension uses its own webview.
2026-05-05 09:29:47 +02:00
opencode 8df3ef10fc sync release versions for v1.14.37 2026-05-05 07:26:49 +00:00
Mark IJbema 44460f33e4 Merge pull request #9845 from Kilo-Org/mark/remove-oc-desktop-apps
Remove OpenCode desktop apps from repo
2026-05-05 09:18:00 +02:00
Mark IJbema 0364cda447 Merge remote-tracking branch 'origin/main' into mark/remove-oc-desktop-apps 2026-05-05 09:05:38 +02:00
Mark IJbema 00188ee386 Merge branch 'main' into mark/simplify-autocomplete-model 2026-05-05 09:00:09 +02:00
Alex Alecu 95be772b9b Merge remote-tracking branch 'origin/main' into track-code-reviews
# Conflicts:
#	packages/opencode/src/session/processor.ts
2026-05-05 09:55:16 +03:00
opencode-agent[bot] 301ab36159 chore: update nix node_modules hashes 2026-05-05 06:06:32 +00:00
Joshua Lambert 86b6a8fc68 Merge pull request #8687 from ScuttleBot/docs/update-2025-04-09
docs: update new_task limitations and KiloClaw default model
2026-05-05 01:45:36 -04:00
Brendan Allan 03544a26cd fix(desktop): update main process (#25825) 2026-05-05 13:44:53 +08:00
Brendan Allan b4147c8d08 refactor(desktop): consolidate desktop-electron into desktop package (#25822) 2026-05-05 13:43:36 +08:00
opencode-agent[bot] 6f7d63e9ce chore: generate 2026-05-05 04:27:38 +00:00
Luke Parker 07f1c8c0ac fix(desktop): stabilize Windows titlebar zoom (#25813) 2026-05-05 04:26:35 +00:00
opencode-agent[bot] 2d0a757eb2 chore: generate 2026-05-05 02:37:07 +00:00
Kit Langton 75d141b574 fix(session): cancel subtask child sessions (#25798) 2026-05-04 22:36:06 -04:00
Dax 39c88f9afb Improve v2 session message rendering (#25634) 2026-05-05 02:35:21 +00:00
Dax Raad 0df2bb0f3b docs: restore v2 todo 2026-05-04 22:22:39 -04:00
Brendan Allan f6a3615f59 fix(console): remove Cloudflare cache config from download fetch (#25804) 2026-05-05 10:15:00 +08:00
James Long edd480f56b fix(tui): fix type error for calling workspace.warp (#25801) 2026-05-04 22:06:33 -04:00
Luke Parker 2740d398fa devex: Enable Electron MCP servers with DevTools debug port (#25795) 2026-05-05 11:37:18 +10:00
opencode-agent[bot] f33b17e8ac chore: generate 2026-05-05 01:29:49 +00:00
James Long 22a4a9df8b feat(core): session warping (#25768) 2026-05-04 21:28:38 -04:00
Brendan Allan 84afd2bef8 update: normalize download asset names to match new naming convention (#25796) 2026-05-05 09:19:13 +08:00
Luke Parker ca2411d332 Run UI unit tests in CI (#25792) 2026-05-05 11:05:53 +10:00
opencode 6b852774e1 sync release versions for v1.14.35 2026-05-05 01:01:47 +00:00
opencode-agent[bot] f14784d531 chore: generate 2026-05-05 00:35:18 +00:00
Luke Parker 6a5e329427 fix(vcs): preserve batched patch boundaries (#25787) 2026-05-05 00:34:06 +00:00
kilo-maintainer[bot] fa7082fcf8 release: v7.2.36 2026-05-05 00:11:27 +00:00
opencode 4b65b1e053 sync release versions for v1.14.34 2026-05-04 23:26:02 +00:00
opencode b5f433b444 release: v1.14.34 2026-05-04 23:25:49 +00:00
Aiden Cline d431a0e4b4 fix: ensure effect server middleware properly parses errors (#25717) 2026-05-04 18:29:00 -04:00
kirillk e2be085c65 fix(jetbrains): refine session scroll button 2026-05-04 18:26:55 -04:00
Kirill Kalishev 716bdbca2c Merge pull request #9882 from Kilo-Org/recondite-crane
feat(jetbrains): match VS Code mode and model pickers
2026-05-04 18:01:21 -04:00
Catriel Müller 4d1023c21a fix(vscode): trust OS CA store for Kilo backend TLS
Default NODE_USE_SYSTEM_CA=1 on the spawned CLI so users behind
corporate MITM proxies don't fail device-auth with TLS errors. Add a
kilo-code.new.extraCaCerts setting for custom PEM bundles and honor
VS Code's http.proxyStrictSSL=false as an opt-out.
2026-05-04 18:58:10 -03:00
kirillk d3b40c4f61 Merge remote-tracking branch 'origin/main' into recondite-crane 2026-05-04 17:41:59 -04:00
Catriel Müller 3669730de7 Merge pull request #9717 from Kilo-Org/dull-taxi
JetBrains session views + layout
2026-05-04 18:36:25 -03:00
kirillk 0e9db1bfaf Merge branch 'pr-9879-frost-king' into recondite-crane
# Conflicts:
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt
2026-05-04 17:28:39 -04:00
Catriel Müller c4fa6b34c5 chore: add changeset 2026-05-04 18:25:00 -03:00
Catriel Müller 9d05e5556c refactor: redirect kilogateway provider to profile 2026-05-04 17:54:53 -03:00
kirillk 9ca1342357 feat(jetbrains): add session scroll button 2026-05-04 16:33:54 -04:00
kirillk d2d1f61779 fix(jetbrains): update stop session shortcut 2026-05-04 16:30:35 -04:00
kirillk 650f9a6a6e feat(jetbrains): add stop session action 2026-05-04 16:16:14 -04:00
Frank 5720883d5d sync 2026-05-04 15:51:29 -04:00
Mark IJbema 302470e4ce Merge pull request #9840 from Kilo-Org/fix/restore-kilo-env-var
fix: restore KILO env var (regression from #9014)
2026-05-04 21:37:49 +02:00
kirillk 7e7c6d9aba fix(jetbrains): improve prompt control hints 2026-05-04 15:29:24 -04:00
kirillk b481210bee fix(jetbrains): refine prompt button hover 2026-05-04 15:12:33 -04:00
Joshua Lambert 917f359b45 Merge pull request #9776 from ScuttleBot/docs/add-xiaomi-byok
docs: add Xiaomi to BYOK providers list
2026-05-04 15:05:59 -04:00
kirillk 1ebf094fb0 fix(jetbrains): preserve session scroll position 2026-05-04 15:04:12 -04:00
kirillk 0fe01a3326 feat(jetbrains): add keymap send action 2026-05-04 14:58:34 -04:00
Joshua Lambert ac0715107b Merge branch 'main' into docs/add-xiaomi-byok 2026-05-04 14:57:08 -04:00
Catriel Müller 1bb2042c22 Merge pull request #9869 from Kilo-Org/catrielmuller/fix-9823
fix(cli): restore question tool availability in code mode
2026-05-04 15:04:06 -03:00
Catriel Müller 27fd7a46d7 fix: kilocode_change 2026-05-04 14:55:41 -03:00
Catriel Müller e82f56176c fix: tests 2026-05-04 14:49:43 -03:00
Imanol Maiztegui fdfc0949ca Merge pull request #7835 from sainzs/fix/agent-toggle-false-persistence
fix(vscode): persist false agent toggle values
2026-05-04 19:48:18 +02:00
Imanol Maiztegui b4a7de70bb chore: add changeset 2026-05-04 19:35:30 +02:00
Imanol Maiztegui df42ca48ac Merge remote-tracking branch 'origin/main' into fix/agent-toggle-false-persistence 2026-05-04 19:29:22 +02:00
Imanol Maiztegui e7e3e39746 refactor(config): use explicit undefined guard in agent normalize function
The nullish coalescing operator (??) treats null as a falsy value and
falls through to the right-hand operand. Switch to a strict undefined
check so that a null assignment on `steps` is forwarded as-is, allowing
callers to express an intentional reset of the steps configuration.
2026-05-04 19:28:45 +02:00
Catriel Müller 532a16c9f9 Merge branch 'main' into catrielmuller/fix-9823 2026-05-04 14:26:28 -03:00
Marius 2044d78521 docs(kilo-docs): document CLI permission behavior (#9863) 2026-05-04 17:19:13 +00:00
Catriel Müller 1c15a07464 chore: annotate kilocode_change on filesystem.ts import 2026-05-04 14:17:34 -03:00
Marius 9c005215b7 test(vscode): cover permission editor patches (#9867) 2026-05-04 14:12:36 -03:00
Marius a23ae2320c test(vscode): cover auto-approve permission safety (#9865) 2026-05-04 14:11:51 -03:00
Kit Langton 007b57f078 test(agent): skip InstanceBootstrap in plugin-agent regression test (#25737) 2026-05-04 17:11:33 +00:00
Catriel Müller 4ed9fc0d8d fix(cli): atomic write in Filesystem.write to prevent partial JSON reads 2026-05-04 14:11:26 -03:00
Marius 97bed63b78 test(cli): cover indexing registry isolation (#9866) 2026-05-04 14:11:13 -03:00
Marius 01995f845b docs: document chat and diff rendering (#9860) 2026-05-04 14:10:43 -03:00
Marius 802abbfbd9 docs(kilo-docs): document agent manager tool (#9862) 2026-05-04 14:10:16 -03:00
Marius 51aaddf14e docs(kilo-docs): document settings updates (#9859) 2026-05-04 14:10:05 -03:00
Imanol Maiztegui 2c1a8d882c Merge branch 'main' into fix/agent-toggle-false-persistence 2026-05-04 19:09:55 +02:00
Marius 17fab73a7a docs(kilo-docs): update ChatGPT OAuth setup (#9861) 2026-05-04 14:09:39 -03:00
Kit Langton fb07c2070c fix(server): provide fresh ConfigProvider per HttpApi listener (#25726) 2026-05-04 13:06:29 -04:00
Catriel Müller d5fd42c3d7 chore: add changeset for code mode question tool fix 2026-05-04 14:00:12 -03:00
Catriel Müller 896d8d0d82 fix: fix code question on code mode 2026-05-04 13:55:46 -03:00
kilo-maintainer[bot] 3cc792471d chore: update nix node_modules hashes 2026-05-04 16:34:34 +00:00
Marius f499257c32 fix(cli): honor external directory allows in Ask mode (#9838)
* fix(cli): honor external directory allows in ask mode

* chore(cli): annotate external directory permission fix
2026-05-04 18:17:54 +02:00
Marius 712371e231 Add basic mermaid support (#9850)
* feat: render Mermaid diagrams in chat markdown

* fix: remove duplicate Mermaid diagram border

* fix: annotate Mermaid markdown hook

* fix: stabilize Mermaid markdown rendering
2026-05-04 18:14:35 +02:00
kirillk 91b54daeb1 fix(jetbrains): match prompt editor background 2026-05-04 12:12:16 -04:00
Josh Holmer e498c02f7a ux(cli): visually show when applied patch skips sections 2026-05-04 12:11:03 -04:00
kilo-maintainer[bot] a0d657fc65 release: v7.2.35 2026-05-04 16:10:20 +00:00
Josh Holmer 2999e9f56e feat(cli): show model costs in model picker 2026-05-04 12:09:21 -04:00
Marius a33ffe0573 docs: add merge minimizer skill (#9832)
* docs: add merge minimizer skill

* docs: refine merge minimizer skill

* docs: narrow merge minimizer skill scope
2026-05-04 18:08:49 +02:00
kirillk 436da2bf1b fix(jetbrains): focus prompt on tool window activation 2026-05-04 12:07:23 -04:00
kiloconnect[bot] 723d1c2a3e Merge remote-tracking branch 'origin/main' into mark/upstream-compat-base 2026-05-04 16:07:16 +00:00
Kit Langton 25dc6f09bc fix(worktree): fork workspace worktree boot (#25723) 2026-05-04 12:01:13 -04:00
kirillk e1b43317db fix(jetbrains): refine prompt panel layout 2026-05-04 11:59:38 -04:00
Imanol Maiztegui ef9c1f3d9e Merge branch 'main' into fix/agent-toggle-false-persistence 2026-05-04 17:57:17 +02:00
kiloconnect[bot] 4b1c1930c2 fix: preserve upstream compat merge bases 2026-05-04 15:54:19 +00:00
Imanol Maiztegui 213c40cc3c fix(cli): use block kilocode_change markers for nullable agent schema changes 2026-05-04 17:42:18 +02:00
Mark IJbema fd26c1b55c test(vscode): remove dead AutocompleteInlineCompletionProvider test file
The test file could not load on main — its 'MockTextDocument' import
pointed at a module that no longer exists, so vitest skipped the whole
suite with an 'unhandled error between tests'. The assertions inside
had therefore been vacuous for a while.

The previous commit in this PR updated constructor calls so the file
still typechecked, but the FIM assertions still target the old
AutocompleteModel.generateFimResponse shape and would not exercise the
new generateFim path even if the suite ran. Rather than port 50+
assertions to a mock surface no one has maintained, delete the file.
Fresh coverage can be added against generateFim directly if needed.
2026-05-04 17:40:31 +02:00
Mark IJbema a56977d640 Merge branch 'main' into mark/remove-oc-desktop-apps 2026-05-04 17:29:27 +02:00
Mark IJbema 611062a8fd Merge branch 'main' into mark/simplify-autocomplete-model 2026-05-04 17:28:59 +02:00
Mark IJbema 1f00db7fdd Merge branch 'main' into fix/restore-kilo-env-var 2026-05-04 17:27:26 +02:00
Colby Gilbert b70e2700ef chore(docs): rename firmware provider to frogbot (#25453) 2026-05-04 10:27:03 -05:00
Mark IJbema 87d71ee4ec Merge pull request #9848 from Kilo-Org/session/agent_2d15a8c3-fff3-46d3-aa79-08876f24bdca
fix(cli): avoid MCP OAuth callback port contention
2026-05-04 17:24:20 +02:00
Frank 1aed6b1d8b sync 2026-05-04 11:16:28 -04:00
kirillk 7fab3656e6 fix(jetbrains): handle generated query parameter types 2026-05-04 11:15:07 -04:00
kiloconnect[bot] 837a62152a chore: annotate shared package removals 2026-05-04 15:13:13 +00:00
Imanol Maiztegui 21cef5013b Merge origin/main into fix/agent-toggle-false-persistence
Resolve conflicts after main's config.ts refactor to @effect/schema and
the messages.ts → messages/ directory split:

- Port AgentConfig nullable fields + default_agent nullable to the new
  packages/opencode/src/config/agent.ts and config.ts Effect schemas.
  The null delete sentinel for steps is already preserved by main's
  normalize() (steps excluded from spread when undefined).
- Move AgentConfig nullable fields and Config.default_agent nullable to
  the new messages/agents.ts and messages/config.ts.
- Re-apply the core fix to ModeEditView.tsx hidden/disable toggles:
  send explicit false instead of val || undefined so deepMerge
  overwrites a previously-saved true. Keep default_agent clear via
  null delete sentinel when hiding/disabling the current default.
- Drop configSaved/configSaveFailed messages; main's retry + optimistic
  fallback in KiloProvider and configUpdateFailed + saveError signal in
  ConfigProvider subsume the PR's save-outcome split.
2026-05-04 17:05:07 +02:00
kiloconnect[bot] d22d08bbce chore: remove stale desktop package references 2026-05-04 15:00:59 +00:00
kiloconnect[bot] 841fafddf4 fix: remove deleted app packages from build config 2026-05-04 15:00:39 +00:00
Aiden Cline c1f607d206 fix: ensure anthropic sdk properly resolves when using azure (#25721) 2026-05-04 09:58:21 -05:00
Mark IJbema 05964c0de5 Merge branch 'main' into fix/restore-kilo-env-var 2026-05-04 16:57:40 +02:00
Catriel Müller 0c90eab635 Merge pull request #9778 from Kilo-Org/catrielmuller/fix-big-repos
fix: handle snapshot initialization on big repos
2026-05-04 11:57:18 -03:00
Kirill Kalishev f30834731f Merge branch 'main' into dull-taxi 2026-05-04 10:50:29 -04:00
Kirill Kalishev d9181ee960 Merge branch 'main' into wild-cause 2026-05-04 10:50:13 -04:00
kiloconnect[bot] b8113bb24e Merge remote-tracking branch 'origin/main' into session/agent_2d15a8c3-fff3-46d3-aa79-08876f24bdca
# Conflicts:
#	packages/opencode/src/mcp/index.ts
2026-05-04 14:49:51 +00:00
kirillk cc2e2b99de fix(jetbrains): address picker review feedback 2026-05-04 10:48:55 -04:00
kilo-maintainer[bot] e8406c0d60 chore: update nix node_modules hashes 2026-05-04 14:46:53 +00:00
Mark IJbema 9a336b8640 Merge branch 'main' into fix/restore-kilo-env-var 2026-05-04 16:44:57 +02:00
Mark IJbema 3d30494a9e Merge branch 'main' into mark/simplify-autocomplete-model 2026-05-04 16:43:33 +02:00
Catriel Müller e491c76392 refactor: disable flasky test 2026-05-04 11:36:41 -03:00
Kirill Kalishev a773e8ac16 Merge branch 'main' into dull-taxi 2026-05-04 10:34:54 -04:00
Marius 01b5424866 feat(vscode): render markdown diffs (#9846) 2026-05-04 16:34:00 +02:00
kiloconnect[bot] 325bdae8a4 chore(cli): annotate MCP OAuth fix 2026-05-04 14:29:05 +00:00
Catriel Müller 50d7543f4c Merge branch 'main' into catrielmuller/fix-big-repos 2026-05-04 11:24:57 -03:00
Imanol Maiztegui 446d51cccd fix(sdk): preserve null sentinel for agent steps config
Replace nullish coalescing with explicit undefined check so that
`steps: null` is not collapsed to `maxSteps`, preserving the ability
to clear the steps override via a null sentinel value.
2026-05-04 16:14:53 +02:00
kiloconnect[bot] acc30a6458 feat(mcp): defer oauth callback server startup
Move the initialization of the MCP OAuth callback server from the layer setup to the point where browser authentication is actually required. This prevents unnecessary port binding when authentication is not needed.

Additionally, improve the test runner's XML parsing to correctly handle multiple testsuite attributes and ensure tags are matched accurately.

- Update `packages/opencode/src/mcp/index.ts` to call `McpOAuthCallback.ensureRunning` only upon `UnauthorizedError`.
- Refactor `packages/opencode/script/test-runner.ts` to use a more robust `open` and `sum` logic for test results.
- Add verification to `packages/opencode/test/mcp/oauth-auto-connect.test.ts` to ensure the callback server remains inactive when not needed.
2026-05-04 14:14:09 +00:00
Marius fc2545ceb4 Fix OAuth callback port flake (#9841)
* fix(cli): avoid OAuth callback port bind without redirect

* fix(cli): clean up failed OAuth callback binding
2026-05-04 16:06:54 +02:00
kiloconnect[bot] 419ddea52a chore(upstream): implement compatibility base tracking for merges
Update the upstream merge script to identify and link to the previous compatibility commit. This ensures that pre-merge transformations maintain a proper commit history by using multiple parents when a prior compatibility base is found, rather than creating disconnected commits.

- Add `findLatestCompatCommit` to locate previous compatibility commits
- Implement `commitTree` and `updateBranch` for low-level git manipulation
- Update `merge.ts` to integrate compatibility base detection and multi-parent commits
2026-05-04 14:06:37 +00:00
opencode-agent[bot] 2c819f290f chore: generate 2026-05-04 13:55:28 +00:00
Kit Langton 6e9f10ad3f test(server): regression reproducers for #25698 (#25714) 2026-05-04 09:54:19 -04:00
Mark IJbema d76b3258e4 Remove OpenCode desktop apps from repo 2026-05-04 15:54:02 +02:00
Alex Alecu b26277efad fix(cli): track local reviews in telemetry 2026-05-04 16:52:57 +03:00
OpeOginni 1251a870cb fix(opencode): strip transfer-encoding in UI proxy and allow public manifest assets (#25698)
Co-authored-by: Kit Langton <kit.langton@gmail.com>
2026-05-04 09:43:03 -04:00
Marius 614bca7cff fix: exclude generated data from Spotlight indexing (#9833) 2026-05-04 13:39:32 +00:00
opencode-agent[bot] 67047fa766 chore: generate 2026-05-04 13:26:08 +00:00
Marius a5bb938dbd fix(vscode): clarify disabled provider action (#9839) 2026-05-04 15:25:37 +02:00
Luke Parker a366128a93 fix(app): prevent terminal recovery loops (#25710) 2026-05-04 23:24:57 +10:00
kiloconnect[bot] 2995a308e3 chore(cli): annotate KILO env var with kilocode_change 2026-05-04 13:24:23 +00:00
Catriel Müller 206eaa7142 fix: kilocode_change 2026-05-04 10:19:11 -03:00
kiloconnect[bot] db26be6b5d fix(cli): restore KILO env var (regression from #8808) 2026-05-04 13:18:57 +00:00
Catriel Müller 8df73f2d96 fix: markdown table 2026-05-04 10:17:50 -03:00
Catriel Müller 40079cd21c fix: type imports 2026-05-04 10:11:01 -03:00
Catriel Müller 2c2f03f604 fix: regenerate sdk 2026-05-04 10:11:01 -03:00
github-actions[bot] f93d8a8670 chore: update kilo-vscode visual regression baselines 2026-05-04 13:00:21 +00:00
Catriel Müller fcb5b02557 Merge branch 'main' into catrielmuller/fix-big-repos 2026-05-04 09:57:27 -03:00
Catriel Müller 83737441d4 fix: fix question highlight option 2026-05-04 09:48:40 -03:00
Mark IJbema c96e941afc refactor(vscode): replace AutocompleteModel with fim.ts helper
The AutocompleteModel class was a thin wrapper around one real function
(generateFimResponse) plus two getters that just deferred to the
autocomplete-models lookup. Fold it into a module-level generateFim()
helper and have callers hold modelId: string directly.

- New fim.ts exports generateFim() and hasValidCredentials() functions.
- AutocompleteInlineCompletionProvider now holds modelId on its
  contextProvider and exposes setModel() / getModelId() to sync config.
- ChatTextAreaAutocomplete calls generateFim() directly with the model
  id resolved from config per request.
- AutocompleteContextProvider.model becomes modelId: string.
- Closes the refactor started in issue #6793.
2026-05-04 14:32:39 +02:00
Mark IJbema e4b26be304 refactor(vscode): inline hasBalance into AutocompleteInlineCompletionProvider
Move the credit-balance probe from AutocompleteModel into its single
caller. The provider now receives KiloConnectionService directly and
owns the balance check used by the 402 backoff recovery path.
2026-05-04 14:25:15 +02:00
Mark IJbema 7923c87f24 Merge pull request #9834 from Kilo-Org/docs/verification-copy-prompts
docs: add copyable verification prompts
2026-05-04 14:21:55 +02:00
Catriel Müller 5773ae4a77 fix(vscode): revert standalone question rendering back to message list inline position 2026-05-04 09:21:24 -03:00
Mark IJbema 6b4bc40b81 Merge pull request #9751 from Kilo-Org/markijbema/kilo-opencode-v1.14.29
Merge opencode v1.14.29
2026-05-04 14:21:23 +02:00
kiloconnect[bot] d066277079 docs: use safer verification commands 2026-05-04 12:09:16 +00:00
kiloconnect[bot] 97af82d217 docs: add copyable verification prompts 2026-05-04 11:54:14 +00:00
Emilian Olbrych 8472f90528 Fix/vscode mcp oauth sign in (#8910)
* fix(vscode): restore MCP OAuth sign-in from settings UI

- Add Sign in control when MCP status is needs_auth; posts authenticateMcp
  to run CLI POST /mcp/{name}/auth/authenticate.
- On SSE mcp.browser.open.failed, open the auth URL via
  vscode.env.openExternal (CLI subprocess open() often fails under VS Code).
- Dedupe openExternal when multiple webviews receive the same event.

Fixes UI regression described in GitHub issue #8904.

Made-with: Cursor

* fix(vscode): satisfy ESLint max-lines and complexity for MCP OAuth

- Move MCP connect/disconnect/authenticate and openExternal dedupe to
  kilo-provider/mcp-oauth.ts.
- eslint-disable-next-line complexity for the webview message router.

Made-with: Cursor

* fix: restore MCP OAuth sign-in in VS Code

* fix: simplify MCP OAuth callback delegation

* fix: clarify MCP OAuth callback delegation

---------

Co-authored-by: e.olbrych <e.olbrych@mkmc.pl>
Co-authored-by: marius-kilocode <marius@kilocode.ai>
2026-05-04 11:54:07 +00:00
Mark IJbema 4899b21051 temporarily disable tests 2026-05-04 13:48:40 +02:00
Mark IJbema 4c16ac6425 Merge pull request #9819 from Kilo-Org/ci/upgrade-artifact-actions-v7-v8
ci: upgrade artifact actions to v7/v8 and switch kilo-cli to archive: false
2026-05-04 13:34:05 +02:00
Mark IJbema a8af251608 temporarily disable tests 2026-05-04 13:27:43 +02:00
Marius e9abc09601 feat(vscode): add dev launcher preserve settings flag (#9817)
* feat(vscode): add dev launcher preserve settings flag

* fix(vscode): parse dev launcher settings as jsonc

* fix(vscode): keep dev launcher settings merge dependency-free
2026-05-04 13:04:42 +02:00
Catriel Müller 029425590b Merge branch 'main' into catrielmuller/fix-big-repos 2026-05-04 07:57:09 -03:00
Mark IJbema cbe49a84d3 refactor(vscode): remove unused AutocompleteModel.setConnectionService
The method was only referenced by its own test. Production callers always
construct AutocompleteModel with a KiloConnectionService argument.
2026-05-04 12:44:16 +02:00
Mark IJbema f3ebddf5c5 Merge pull request #9827 from Kilo-Org/mark/upstream-verification-test
docs: add upstream verification test checklist
2026-05-04 12:30:22 +02:00
Mark IJbema 0db88fdcd9 refactor(vscode): remove unused profileName/profileType from AutocompleteModel
Both fields were always null and never assigned in production code. The
status bar props type also carried profileName but the status bar never
read it.
2026-05-04 12:15:19 +02:00
kiloconnect[bot] 5753243a30 docs: add verification startup commands 2026-05-04 10:13:05 +00:00
kiloconnect[bot] 69d6ece6f1 docs: add upstream verification test checklist 2026-05-04 10:03:20 +00:00
Mark IJbema 0cd25244c3 remove unused imports 2026-05-04 11:59:51 +02:00
Mark IJbema bccc27ce61 Merge remote-tracking branch 'origin/main' into markijbema/kilo-opencode-v1.14.29 2026-05-04 11:58:03 +02:00
Mark IJbema 75dfebcf28 fix semantic merge conflicts 2026-05-04 11:48:00 +02:00
Marius a858f001ba fix(cli): warn on output length stops (#9820)
* fix(cli): warn on reasoning-only length stops

* fix(cli): warn on output length stops
2026-05-04 09:42:47 +00:00
Mark IJbema 2f424ec445 update links 2026-05-04 11:15:51 +02:00
Mark IJbema fcd232fcaf fix semantic merge conflicts 2026-05-04 11:15:19 +02:00
Marius c8494f2f25 fix(vscode): persist auto-approve toggle preference (#9816) 2026-05-04 11:01:50 +02:00
Mark IJbema 1732628434 fix md 2026-05-04 10:57:12 +02:00
kilo-code-bot[bot] b8b915739c refactor(prompts): hoist Kilo model-specific prompt checks to the front (#9815)
* refactor(cli): hoist Kilo model-specific prompt checks to the front

Extract the Kilo metadata-driven prompt selection into a dedicated
kiloPrompt() helper and invoke it with an early return at the top of
provider(). This ensures Kilo-specific prompt routing takes priority
over upstream heuristics and leaves the upstream if-chain untouched,
reducing future merge conflicts when opencode adjusts its own
model-specific prompt branching.

No behavior change.

* fix(cli): preserve Ling prompt fallback precedence

* fix(cli): keep prompt annotations scoped

---------

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Co-authored-by: marius-kilocode <marius@kilocode.ai>
2026-05-04 10:55:19 +02:00
Marius 7ad1bf66d0 docs(cli): expand config skill with agent manager workflows (#9813) 2026-05-04 10:40:15 +02:00
Christiaan Arnoldus ec834bc266 Merge pull request #9772 from Kilo-Org/docs/auto-model-rename-and-disclosures
docs: drop 'Kilo' prefix from Auto Model tier names and add Auto Free data-handling disclosure
2026-05-04 10:33:22 +02:00
Mark IJbema a16e0560c7 Merge remote-tracking branch 'origin/main' into markijbema/kilo-opencode-v1.14.29 2026-05-04 10:27:37 +02:00
Mark IJbema dd53fc1fa1 Merge branch 'main' into ci/upgrade-artifact-actions-v7-v8 2026-05-04 10:26:09 +02:00
truffle 2723c08b9d test(telemetry): isolate shutdown timeout test in its own file
The new shutdown timeout test in telemetry.test.ts shares a file with
tests that statically import `Telemetry` (and thus `client.ts` and
`posthog-node`). Bun's `mock.module()` invalidates the dependency
cache for subsequent dynamic imports so the test passes today, but the
behavior depends on test ordering and mock-cache-invalidation timing
rather than test isolation. Extract the shutdown test into its own file
where `mock.module("posthog-node", ...)` runs before any client.ts
import, so the mock is the source of truth from module load.
2026-05-04 07:03:11 +00:00
truffle 5f16547cab fix(cli): bound Telemetry.shutdown so unreachable PostHog endpoint cannot block CLI exit
When the PostHog endpoint is unreachable (offline, firewall, DNS adblock
resolving us.i.posthog.com to 0.0.0.0), `kilo --help` and other short-
lived commands hang in the finally-block telemetry shutdown for tens of
seconds before the process exits.

Two issues:

1. `Client.shutdown()` called `await client.flush()` before
   `await client.shutdown()`. The explicit flush() is unbounded:
   posthog-node 4.4.0 retries each request up to 3x with 3s delays plus
   10s per attempt before throwing PostHogFetchNetworkError, blocking
   process exit before shutdown's outer cap kicks in.

2. `Telemetry.shutdown()` took no timeout, so the CLI bootstrap had no
   way to bound the wait at the call site. PostHog's
   `shutdown(shutdownTimeoutMs = 30000)` defaults to 30 seconds.

Fix:

- Drop the explicit `flush()` call. PostHog's `shutdown(timeoutMs)`
  drains the queue internally and is bounded by `shutdownTimeoutMs`.
- Add an optional `timeoutMs` parameter to both `Client.shutdown` and
  `Telemetry.shutdown`, threaded through to PostHog.
- Pass `2000` from the CLI bootstrap so short-lived commands exit
  quickly when telemetry is unreachable, while keeping a generous
  budget for the working-endpoint case.

Test: `Telemetry.shutdown timeout (#9788)` mocks `posthog-node` so the
fake `flush()` would hang for 60s if called. The test asserts (a)
`flush()` is never invoked and (b) the supplied `timeoutMs` (50ms) is
threaded through to PostHog's `shutdown(timeoutMs)`. Total elapsed time
stays well under 1s.

Closes #9788
2026-05-04 06:19:23 +00:00
kilo-maintainer[bot] a1c08dbca4 release: v7.2.34 2026-05-04 03:38:53 +00:00
opencode-agent[bot] 9f708e748a chore: generate 2026-05-04 02:57:18 +00:00
Kit Langton 7bc26dafae feat(server): pty websocket auth tickets (#25660) 2026-05-03 22:56:14 -04:00
Utkub24 ce89bcb8e2 fix: allow Codex Spark with Codex OAuth (#25640) 2026-05-03 17:58:16 -05:00
Kit Langton c2b1974ddd Effectify plugin agent regression test (#25646) 2026-05-03 22:07:10 +00:00
Kit Langton ca6150d6f0 fix(app): preserve auth token credentials (#25636) 2026-05-03 21:13:42 +00:00
Kit Langton 825ab2e38d refactor(cli): effectify provider commands (#25633) 2026-05-03 16:41:10 -04:00
kirillk a613753889 fix(jetbrains): truncate tool output previews 2026-05-03 16:40:23 -04:00
kirillk 8b34a34d1d ci(jetbrains): annotate publish workflow 2026-05-03 16:17:47 -04:00
kirillk f7dd3335fc feat(jetbrains): style user prompts as bubbles 2026-05-03 16:16:13 -04:00
kirillk b12c7cf10d ci(jetbrains): publish marketplace rc builds 2026-05-03 16:12:09 -04:00
opencode-agent[bot] 755cd561ec chore: generate 2026-05-03 19:45:26 +00:00
Kit Langton 6312c55d55 fix(server): serve embedded UI from bunfs (#25632) 2026-05-03 19:44:23 +00:00
opencode-agent[bot] a9dc0fae3d chore: generate 2026-05-03 18:46:50 +00:00
Dax 7749d8e85f Add v2 session failure events (#25628) 2026-05-03 14:45:48 -04:00
opencode-agent[bot] 28112fbd12 chore: generate 2026-05-03 18:24:37 +00:00
Kit Langton 387220f368 fix(server): support desktop PTY websockets with HttpApi (#25598) 2026-05-03 18:23:29 +00:00
kirillk c0cec61f8d fix(jetbrains): normalize session layout padding 2026-05-03 14:04:01 -04:00
OpeOginni adb7cb1037 fix(auth): add username option for basic auth in RunCommand (#25600)
Co-authored-by: Shoubhit Dash <shoubhit2005@gmail.com>
2026-05-03 22:51:33 +05:30
opencode-agent[bot] c06af70ab0 chore: generate 2026-05-03 15:44:02 +00:00
Kit Langton 40dc2fa3c1 refactor(cli/providers): flatten — Effect-native handlers end-to-end (#25537) 2026-05-03 15:42:57 +00:00
Kit Langton df7dd06a0f refactor(cli/github+run): Stage 4 — drop AppRuntime.runPromise bridges (#25539) 2026-05-03 15:42:05 +00:00
opencode-agent[bot] 57d5c095d8 chore: generate 2026-05-03 15:22:38 +00:00
Kit Langton 13ac849db5 refactor(config+core): drop ConfigPaths.readFile, add AppFileSystem.readFileStringSafe, flatten TuiConfig.loadState (#25602) 2026-05-03 15:21:34 +00:00
Shoubhit Dash 8694c5b68f fix(auth): respect server username in clients (#25596) 2026-05-03 19:28:31 +05:30
Shoubhit Dash 0a7d02c87c feat: group changelog bugfixes (#25597) 2026-05-03 13:48:26 +00:00
Brendan Allan e77867ef05 ci: only build electron desktop (#19067) 2026-05-03 19:10:15 +05:30
opencode-agent[bot] fb224d8974 chore: generate 2026-05-03 13:21:15 +00:00
OpeOginni 101566131d 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.
2026-05-03 13:20:05 +00:00
opencode-agent[bot] 8433e8b433 chore: generate 2026-05-03 13:18:13 +00:00
Kit Langton 379600b5ab fix(sdk+cli): surface real errors instead of bare {} when server returns empty body (#25592) 2026-05-03 13:17:06 +00:00
Shoubhit Dash 7a503de606 fix(acp): pass server auth to internal client (#25591) 2026-05-03 18:42:24 +05:30
Kit Langton 2ad1eb56d3 feat(server): native HttpApi listener with Bun.serve + WS upgrade (#25547) 2026-05-03 09:09:45 -04:00
opencode-agent[bot] a43f767abb chore: generate 2026-05-03 13:07:30 +00:00
Kit Langton 0ee3b87289 feat(server): Server.openapi() backed by HttpApi spec, parity-checked against Hono output (#25545) 2026-05-03 09:06:23 -04:00
opencode-agent[bot] 3c9f3c5786 chore: generate 2026-05-03 12:59:40 +00:00
Kit Langton ca75ac6681 refactor(server): extract Hono-coupled utilities to backend-neutral modules (#25542) 2026-05-03 12:58:34 +00:00
Shoubhit Dash d1f597b5b5 fix(vcs): avoid unbounded diff memory usage (#25581) 2026-05-03 17:49:46 +05:30
Dax Raad 8299fb3e2b 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.
2026-05-03 01:59:03 -04:00
Dax Raad 4f7f90133d ci: stop sending daily community recap notifications 2026-05-03 01:54:32 -04:00
Dax Raad b205e104f6 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.
2026-05-03 01:54:32 -04:00
Dax Raad 252e2f98e6 ci: remove automatic labels from GitHub issue templates to allow manual triage 2026-05-03 01:54:32 -04:00
opencode-agent[bot] e2afdc1202 chore: generate 2026-05-03 05:22:22 +00:00
Dax Raad a08e4c9651 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.
2026-05-03 01:21:17 -04:00
Dax Raad 7ccab8d272 core: update triage agent to use qwen3.6-plus model for improved response quality 2026-05-03 01:10:14 -04:00
Dax Raad fc57eb3b8e ci 2026-05-03 01:05:36 -04:00
Dax 9179bafd54 Add debug info command (#25550) 2026-05-03 05:04:52 +00:00
Kit Langton 2df8eda8a3 fix(cli): bridge Instance.current ALS in effectCmd handlers (regression from #25522) (#25546) 2026-05-03 04:24:33 +00:00
kirillk 7d2cb5ed6e fix(jetbrains): make prompt controls native 2026-05-03 00:01:43 -04:00
Kit Langton bd32252a7e refactor(cli/providers): Stage 4 — drop inline AppRuntime.runPromise calls (#25532) 2026-05-02 23:42:40 -04:00
Kit Langton 1717d636a2 refactor(cli/mcp+agent): Stage 4 — drop AppRuntime.runPromise bridges (#25530) 2026-05-02 23:40:59 -04:00
kirillk 16548c7488 fix(jetbrains): align picker popup selection 2026-05-02 23:38:36 -04:00
Aiden Cline 8e016b4703 fix: regression w/ auth login where stderr was ignored instead of inherited (#25529) 2026-05-02 22:36:02 -05:00
opencode-agent[bot] b89d48a2a4 chore: update nix node_modules hashes 2026-05-03 03:25:46 +00:00
Dax 33312bfd1b fix(session): encode v2 session responses (#25528) 2026-05-03 03:24:46 +00:00
opencode-agent[bot] 3f1ce36418 chore: generate 2026-05-03 03:23:47 +00:00
Kit Langton 0e13279545 refactor(cli): convert agent / providers / mcp to effectCmd (#25525) 2026-05-02 23:22:44 -04:00
Kit Langton 5f03d892c0 fix(httpapi): pagination Link header echoes request host (#25527) 2026-05-02 23:19:33 -04:00
Kit Langton bdabb102fe refactor(cli/stats): Stage 4 — fully Effect-native body (#25523) 2026-05-02 23:08:26 -04:00
Kit Langton a79a6594b0 chore: bump Effect beta (#25524) 2026-05-02 23:08:13 -04:00
opencode-agent[bot] a3d282a4c2 chore: generate 2026-05-03 03:04:40 +00:00
Kit Langton db24f89313 refactor(cli): convert mcp list, auth, auth list, logout to effectCmd (#25521) 2026-05-03 03:03:32 +00:00
kirillk 77e515ec8e docs(jetbrains): route package-local ui guidance 2026-05-02 22:54:29 -04:00
opencode-agent[bot] 31cb0bfa4f chore: generate 2026-05-03 02:54:20 +00:00
Kit Langton af9fdf0a1c refactor(cli): convert github subcommands to effectCmd (#25522) 2026-05-02 22:53:20 -04:00
Youssef Achy be88cd5cb9 chore(opencode): exclude .map files from CLI binary build (#25500) 2026-05-02 22:52:32 -04:00
Luke Parker b4cc7d13b6 fix(desktop): limit zoom handler to zoom keys (#25516) 2026-05-03 02:44:52 +00:00
Aiden Cline 0ba013f8de chore: rm log statement (#25470) 2026-05-02 21:43:48 -05:00
Kit Langton 0956b15c52 refactor(acp): drop async from synchronous ACP.init (#25520) 2026-05-02 22:38:44 -04:00
opencode-agent[bot] 61150f6391 chore: generate 2026-05-03 02:36:41 +00:00
Kit Langton 7409dcc6bd refactor(cli): convert run command to effectCmd (#25519) 2026-05-02 22:35:20 -04:00
Kit Langton 2829943ad1 refactor(cli): convert debug wait, agent list, acp to effectCmd (#25518) 2026-05-02 22:31:20 -04:00
Kit Langton c4311dda31 feat(cli): allow effectCmd instance to be a function of args (#25517) 2026-05-03 02:27:41 +00:00
Kit Langton ad05a46d74 refactor(lifecycle): bootstrap as pure orchestration (#25510) 2026-05-02 22:26:54 -04:00
kirillk e1d2c005ca fix(jetbrains): align reasoning picker rows 2026-05-02 22:25:05 -04:00
opencode-agent[bot] a6cadba814 chore: generate 2026-05-03 02:10:52 +00:00
kirillk 41740fb1d6 refactor(jetbrains): organize picker packages 2026-05-02 22:09:55 -04:00
Dax a3bc5d35b0 Refactor v2 session events as schemas (#24512) 2026-05-02 22:09:48 -04:00
Kit Langton 1409a0715c refactor(cli): convert web + account to effectCmd (instance: false) (#25512) 2026-05-02 21:59:35 -04:00
kirillk 7bebe36f19 fix(jetbrains): keep model picker favorite position 2026-05-02 21:59:25 -04:00
Kit Langton e98c291866 feat(cli): add instance: false opt-out to effectCmd (#25507) 2026-05-03 01:44:06 +00:00
kirillk 85d04bbff4 Merge branch 'dull-taxi' into wild-cause 2026-05-02 21:39:21 -04:00
kirillk 41855ead02 docs(jetbrains): move ui skill into package 2026-05-02 21:38:24 -04:00
kirillk 82172bf501 Merge branch 'dull-taxi' into wild-cause 2026-05-02 21:30:28 -04:00
kirillk 4031386e5b refactor(jetbrains): extract mode picker renderer 2026-05-02 21:29:01 -04:00
kirillk 83d566ba1f refactor(jetbrains): use platform mode picker popup 2026-05-02 21:11:14 -04:00
Kit Langton e709dc34fb feat: default HTTP API backend to on for dev/beta channels 2026-05-02 20:43:23 -04:00
opencode-agent[bot] 9293cddb3a chore: generate 2026-05-03 00:43:16 +00:00
Kit Langton 68b3448b09 refactor(cli): drop redundant explicit Effect.ensuring(store.dispose) (#25503) 2026-05-02 20:42:09 -04:00
opencode-agent[bot] 80f2b13a55 chore: generate 2026-05-03 00:40:21 +00:00
Kit Langton 7d91d3b1ed Normalize instance lifecycle wiring (#25501) 2026-05-02 20:39:20 -04:00
opencode-agent[bot] a6464062b7 chore: generate 2026-05-03 00:32:24 +00:00
Kit Langton fd01dc9c89 test(httpapi): add route exerciser 2026-05-02 20:31:21 -04:00
opencode-agent[bot] d10fb88b66 chore: generate 2026-05-03 00:10:53 +00:00
Luke Parker 6b68b1020e docs: clarify LSP and formatter opt-in config (#25502) 2026-05-03 00:09:50 +00:00
Kit Langton 85bb9007ba feat(cli): auto-dispose InstanceContext after effectCmd handlers (#25481) 2026-05-02 19:54:13 -04:00
opencode-agent[bot] 9bef88e3b0 chore: generate 2026-05-02 23:34:40 +00:00
Kit Langton f98053c34e fix(instance): run bootstrap from instance store (#25475) 2026-05-02 19:33:38 -04:00
opencode-agent[bot] 36007aecf4 chore: generate 2026-05-02 23:23:53 +00:00
Kit Langton 4de44bbbef refactor(cli): convert debug subcommands to effectCmd (#25479) 2026-05-02 19:22:51 -04:00
opencode-agent[bot] 9d03d4419e chore: generate 2026-05-02 23:20:15 +00:00
Kit Langton 7ab1c1c74a refactor(cli): convert debug agent command to effectCmd (#25485) 2026-05-02 19:19:06 -04:00
Luke Parker 3f459819ba feat: refactor bash tool with shell-aware prompts for bash, pwsh+powershell, and cmd (#20039) 2026-05-03 09:18:48 +10:00
Kit Langton 1986a6e817 refactor(cli): convert session subcommands to effectCmd (#25483) 2026-05-02 18:15:28 -04:00
opencode-agent[bot] dfe1325fca chore: generate 2026-05-02 22:02:14 +00:00
Kit Langton c1686c6ddc refactor(cli): convert stats command to effectCmd (#25474) 2026-05-02 18:01:06 -04:00
Kit Langton 79b6ce5db4 refactor(cli): convert import command to effectCmd (#25467) 2026-05-02 21:56:32 +00:00
Kit Langton 0c816eb4b1 refactor(cli): convert plugin command to effectCmd (#25473) 2026-05-02 17:55:13 -04:00
Kit Langton e318e173d8 refactor(cli): convert export command to effectCmd (#25471) 2026-05-02 17:45:41 -04:00
kirillk 4b7f49cd43 fix(jetbrains): stabilize model picker sizing 2026-05-02 17:19:29 -04:00
opencode-agent[bot] b314781a1a chore: generate 2026-05-02 21:02:46 +00:00
Kit Langton 8396d6b016 refactor(cli): convert pr command to effectCmd (#25465) 2026-05-02 17:01:46 -04:00
opencode 43e20874f4 sync release versions for v1.14.33 2026-05-02 19:53:06 +00:00
opencode 006a05abe8 release: v1.14.33 2026-05-02 19:52:55 +00:00
opencode-agent[bot] c444e971b0 chore: generate 2026-05-02 19:27:24 +00:00
HyeokjaeLee 430bde9e9b fix(instance): restore InstanceBootstrap init parameter for non-Effec… (#25449)
Co-authored-by: Dax Raad <d@ironbay.co>
2026-05-02 15:26:30 -04:00
Kit Langton 05b82a6a30 refactor(cli): drop ModelsDev Promise compat shim (#25460) 2026-05-02 15:11:01 -04:00
Kit Langton 6cd02c05c2 fix(telemetry): emit Tool.execute span for MCP and plugin tools (#25452) 2026-05-02 14:49:56 -04:00
opencode-agent[bot] b3a7513765 chore: generate 2026-05-02 18:00:11 +00:00
Kit Langton f8738c9002 feat(models): effectify ModelsDev as Service (#25434) 2026-05-02 13:59:08 -04:00
kirillk 3a4002de43 refactor(jetbrains): use native model picker popup 2026-05-02 13:18:57 -04:00
kirillk e79501e216 Merge remote-tracking branch 'origin/main' into dull-taxi 2026-05-02 12:34:57 -04:00
Aiden Cline b460db15d7 tweak: allow read tool to accept offset of 0 (#25431) 2026-05-02 11:12:07 -05:00
opencode-agent[bot] ff4779ca11 chore: generate 2026-05-02 16:09:04 +00:00
Kit Langton 146ff8ad85 feat(cli): add effectCmd wrapper + convert models command (#25429) 2026-05-02 12:08:04 -04:00
OpeOginni 0d0ec7dc46 docs: CLI docs for current commands and flags (#25399) 2026-05-02 11:07:22 -05:00
Jérôme Benoit 1ea6e6cd4b fix(nix): remove stale packages/shared filter (#24930) 2026-05-02 10:49:51 -05:00
opencode-agent[bot] 96061222d2 chore: generate 2026-05-02 15:45:21 +00:00
Kit Langton 3b9155714d Delete Instance.dispose and Instance.reload (#25427) 2026-05-02 11:44:16 -04:00
Joshua Lambert 7103b707ff Merge pull request #9782 from Kilo-Org/docs/openrouter-passthrough-flags
docs: document OpenRouter passthrough for transforms and provider routing
2026-05-02 11:44:12 -04:00
opencode 7371db5cc6 sync release versions for v1.14.32 2026-05-02 15:34:12 +00:00
Kit Langton b09b7d28b8 refactor(instance-store): consolidate dispose helpers (#25424) 2026-05-02 11:21:40 -04:00
opencode-agent[bot] 31ed4602e1 chore: update nix node_modules hashes 2026-05-02 15:16:12 +00:00
Sebastian 6a76346734 upgrade opentui to 0.2.2 (#25420) 2026-05-02 15:01:53 +00:00
Kit Langton 78b3000031 fix(tui): keep shell-mode prompt editable (#25419) 2026-05-02 10:56:27 -04:00
Kit Langton 4c4860fb24 Replace Instance.disposeAll/load with fixture helper (#25418) 2026-05-02 10:56:15 -04:00
Kit Langton 5242a1c6b4 fix(httpapi): install Instance ALS for adapter Promise bridge (#25417) 2026-05-02 10:49:44 -04:00
Kit Langton 075f876e6f fix(httpapi): re-land workspace create payload accepts missing extra (#25412) 2026-05-02 09:35:39 -04:00
opencode-agent[bot] a849812e9f chore: generate 2026-05-02 13:09:14 +00:00
Kit Langton d99dde6306 Migrate test inits from Promise to Effect (#25377) 2026-05-02 09:07:59 -04:00
Josh Lambert 328d5240e7 docs(kilo-docs): document OpenRouter passthrough for transforms and provider routing
The middle-out transform and provider routing settings are not exposed
as dedicated UI controls in the new VS Code extension or CLI, but can
be set via the generic options passthrough in kilo.json. Add inline
kilo.json examples and scope the legacy UI instructions to a separate
tab that no longer promises controls the legacy UI never rendered.
2026-05-02 00:28:35 -04:00
opencode-agent[bot] becf57ee6a chore: generate 2026-05-02 04:03:59 +00:00
Kit Langton f33aec1139 Convert LoadInput.init to Effect + extract InstanceBootstrap as a Service (#25376) 2026-05-02 00:02:52 -04:00
Kit Langton 1571933096 Drop ALS fallbacks from containsPath and workspace routing (#25374) 2026-05-02 03:06:22 +00:00
Kit Langton 160928a9a9 Extract InstanceStore.provide helper (#25372) 2026-05-01 22:42:03 -04:00
opencode-agent[bot] d297c29f22 chore: generate 2026-05-02 02:19:48 +00:00
Kit Langton 0b498dd448 fix(httpapi): preserve OpenAPI parameter parity (#25291) 2026-05-01 22:18:52 -04:00
Kit Langton cec9c6122a Move instance loading into Effect service (#25277) 2026-05-01 22:18:06 -04:00
Zeke Sikelianos 51e310c9ce fix(read): prevent unsupported image formats from being sending to provider (#21114)
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-05-01 18:14:22 -05:00
Catriel Müller 284886ded4 refactor: fix kilocodechanges 2026-05-01 19:59:15 -03:00
Catriel Müller 3384b6736c refactor: address comments 2026-05-01 19:23:10 -03:00
kirillk 229e16924e fix(jetbrains): eagerly initialize collapsible card bodies 2026-05-01 18:08:11 -04:00
Catriel Müller c9f68644cc refactor: remove added svg 2026-05-01 18:44:47 -03:00
Catriel Müller 33476e5050 feat: handle snapshot initialization on big repos 2026-05-01 18:44:16 -03:00
Aiden Cline 478156456e core: fix npm package detection to properly handle cached directories without installed packages (#25354) 2026-05-01 15:49:14 -05:00
kirillk e7210029f7 docs(jetbrains): document swing component state 2026-05-01 16:45:32 -04:00
kirillk 26b7019678 refactor(jetbrains): update collapsible card state handling 2026-05-01 16:32:07 -04:00
opencode-agent[bot] 6252412d94 chore: generate 2026-05-01 20:03:10 +00:00
Dax Raad c2609cbf04 core: allow agents to access global tmp directory without permission prompts
Agents can now create temporary files in the global tmp directory without
triggering external_directory permission prompts. This enables agents to
freely use temporary storage for intermediate files during builds and
other operations.
2026-05-01 15:35:45 -04:00
scuttlebot 402616bbb5 docs: add Xiaomi to BYOK standard API keys list 2026-05-01 19:31:27 +00:00
kirillk 1b25b80f1c feat(jetbrains): support model variants and reset defaults 2026-05-01 15:30:42 -04:00
Josh Lambert b92677a58e fix(cli): restore source file when reverting a move across folders
Git's default rename detection in 'diff --cached --name-only' collapses a
file move (A/foo -> B/foo) into a single destination entry. The snapshot
revert iterates this list and deletes files that aren't in the pre-step
tree — so B/foo was removed but A/foo was never restored, losing data.

Pass --no-renames so both the source and destination paths appear in
the patch, matching diffFull()'s behavior. Revert now deletes the new
location and restores the original.

Fixes #9741
2026-05-01 14:22:52 -04:00
kirillk a8c85b90f4 fix(jetbrains): normalize session card spacing 2026-05-01 14:02:42 -04:00
kirillk 36a6b2e676 fix(jetbrains): match tool and reasoning collapsibles 2026-05-01 13:44:39 -04:00
Mickey Lazarevic 4d1402bcda feat(kilo-vscode): add shared package version tracking and update app name (#9740)
Add version tracking for the shared package alongside the opencode package to improve cache invalidation. Also update the app name from "opencode" to "kilo" in the shared global configuration.

This change ensures that the local binary build process tracks both the opencode and shared package versions, allowing for more accurate cache invalidation when either package changes. The app name update reflects the correct project branding.
2026-05-01 18:52:31 +02:00
kilo-maintainer[bot] 5bf9e821e9 release: v7.2.33 2026-05-01 16:49:11 +00:00
kirillk 4e84a6217f feat(jetbrains): add native model picker with sections, favorites, and smart filtering
Replace the simple model dropdown with a searchable list popup that groups
models into Favorites, Recommended, and provider sections. Favorites are
toggled and persisted through the CLI's model.json via app-level RPC,
matching the CLI TUI and VS Code behavior. Smart filtering matches partial
queries like 'gpt 54' to 'Chat GPT 5.4' using word-boundary acronym matching.
2026-05-01 12:28:13 -04:00
John Fawcett e74f4037d0 fix(kilo-docs): address PR review comments
- Move diagram caption outside the overflow:hidden container so it's
  no longer clipped by the fixed-height wrapper
- Recommend fine-grained PATs scoped to the connected repository
  instead of classic repo-scope tokens (quick-start.md + settings.md)
- Add callout noting agents act on the user's behalf, so limiting
  token scope is a best practice
2026-05-01 11:21:52 -05:00
github-actions[bot] 2115df57bf Update VOUCHED list
https://github.com/anomalyco/opencode/issues/25288#issuecomment-4360290197
2026-05-01 16:16:45 +00:00
Aiden Cline 29ec07700c fix: bedrock reasoning issue (#25303) 2026-05-01 11:15:17 -05:00
John Fawcett a7b086e132 fix(kilo-docs): add /docs prefix to Kilo Code Review link in code-review page 2026-05-01 11:10:42 -05:00
John Fawcett 4aad409426 fix(kilo-docs): add /docs prefix to all internal gastown links
The docs site is served under kilo.ai/docs so all internal links need
the /docs prefix to avoid 404s.
2026-05-01 11:03:30 -05:00
John Fawcett 9a7b11df73 docs(kilo-docs): recommend Auto Frontier/Balanced instead of specific models
Replace Claude Opus/Sonnet/Auto Free recommendations with Kilo Auto
Frontier (recommended) and Kilo Auto Balanced (minimum). Remove the
per-role model recommendation table since Auto handles routing.
2026-05-01 11:00:21 -05:00
John Fawcett 286fcdafd5 docs(kilo-docs): list all 21 mayor tools in the Mayor page
Replace the abbreviated 6-tool table with the complete list of all 21
gt_* tools grouped by category: Work Creation, Convoy Management,
Bead Management, Agent Management, and Town & UI.
2026-05-01 10:34:56 -05:00
Frank bcae852d28 zen: remove hardcoded safety identifier 2026-05-01 11:12:28 -04:00
kiloconnect[bot] 3d4048b59b docs(kilo-docs): soften Auto Balanced data-handling wording 2026-05-01 12:29:29 +00:00
kiloconnect[bot] 8c0f27698c docs(kilo-docs): clarify enterprise data-handling expectations for Auto Balanced 2026-05-01 12:28:18 +00:00
kiloconnect[bot] 51fe5472e2 docs(kilo-docs): link Auto Free fallback to data-handling disclosure 2026-05-01 12:20:59 +00:00
kiloconnect[bot] a7c537bfa2 docs(kilo-docs): drop 'Kilo' prefix from Auto Model tier names and add Auto Free data-handling disclosure
Aligns tier names with the user-facing display names ('Auto Free', 'Auto Frontier', etc.). Adds a visible note near every Auto Free mention that prompts may be logged by upstream providers (including NVIDIA's free endpoints) and drops the obsolete ByteDance Dola Seed free model.
2026-05-01 12:17:35 +00:00
Kit Langton 16ddf5f559 fix(session): use finite archived timestamp schema (#25275) 2026-05-01 11:57:03 +00:00
Kit Langton 8c79c58c4d refactor: rename workspace adapters (#25272) 2026-05-01 07:36:52 -04:00
luo jiyin 97ed9ba624 fix: correct documentation typos (#25260) 2026-05-01 12:05:06 +02:00
Simon Klee a6b6395c8a fix(tui): gate logo subpixel rendering on truecolor support (#25265) 2026-05-01 11:33:44 +02:00
Christiaan Arnoldus 2be87d2abf Merge pull request #9760 from Kilo-Org/docs/update-byok-providers
docs: update BYOK providers list
2026-05-01 10:54:32 +02:00
opencode 21f8027ef7 sync release versions for v1.14.31 2026-05-01 06:13:48 +00:00
Brendan Allan a5aa72bd7d fix: update provider store after loading providers in bootstrap (#25236) 2026-05-01 13:39:22 +08:00
Aiden Cline 563177c6ac fix: fix issue if tool returned image and empty text and it caused api errors (#25241) 2026-05-01 00:13:03 -05:00
opencode-agent[bot] 4eae8ec037 chore: generate 2026-05-01 04:21:51 +00:00
Aiden Cline 08895c396e docs: fix tui and keybinds documentation (#25233) 2026-04-30 23:20:54 -05:00
truffle bf8921f988 fix(cli): tolerate pre-existing plan directory on OneDrive (#9755) 2026-05-01 04:10:00 +00:00
opencode-agent[bot] 4e451a4b0f chore: update nix node_modules hashes 2026-05-01 04:07:58 +00:00
Brendan Allan 163290bcf0 desktop: sentry integration (#15300)
Co-authored-by: Jay V <air@live.ca>
2026-05-01 11:56:31 +08:00
Aiden Cline c68c33d4fe docs: remove deprecated modes.mdx pages (#25227) 2026-04-30 22:49:32 -05:00
Dax Raad 3615d8e226 core: clarify that temp directory already exists for AI agents
The bash tool description now explicitly states that the temp directory has already been created and exists, preventing agents from unnecessarily trying to create it before use.
2026-04-30 23:48:48 -04:00
Dax 2283979199 Preapprove agent tmp directory access (#25226) 2026-04-30 23:47:15 -04:00
Aiden Cline 33f7f593ee fix: tui list jank issue (#25219) 2026-04-30 22:45:41 -05:00
opencode-agent[bot] 461e7345b3 chore: update nix node_modules hashes 2026-05-01 03:32:55 +00:00
opencode-agent[bot] 6bd91c68e8 chore: generate 2026-05-01 03:22:36 +00:00
Dax Raad ff55a40749 core: remove @effect/language-service plugin and optimize hot path type performance
- Removed @effect/language-service from both packages/core and packages/opencode tsconfig files and dependencies

- Wrapped mergeDeep calls in config loading and LLM streaming to avoid expensive remeda conditional merge type instantiations in hot paths

- Narrowed Drizzle migrate() overload signature to avoid expensive variance checks during database initialization

These changes reduce TypeScript type-checking overhead and improve startup and runtime performance for config loading, LLM streaming, and database migrations.
2026-04-30 23:21:05 -04:00
opencode-agent[bot] 8b56d77ea1 chore: generate 2026-05-01 03:02:15 +00:00
Kit Langton dd3aa96730 test(httpapi): cover more safe GET parity (#25217) 2026-04-30 23:01:11 -04:00
Kit Langton 8b56d1712f refactor(session): pass project to list (#25215) 2026-04-30 23:00:59 -04:00
Kit Langton 3c24d22d42 fix(httpapi): omit absent optional response fields (#25214) 2026-05-01 02:38:32 +00:00
Kit Langton 4c70ea28d2 fix(tui): scope Zed editor context to containing workspaces (#25211) 2026-04-30 22:33:39 -04:00
Kit Langton 5ba68a28c0 refactor(httpapi): scope async prompt fiber (#25213) 2026-04-30 22:33:02 -04:00
opencode-agent[bot] bce4def2db chore: generate 2026-05-01 02:26:56 +00:00
Kit Langton 3544ea0244 refactor(httpapi): drop session prompt bridge (#25210) 2026-04-30 22:25:52 -04:00
opencode-agent[bot] 6434918794 chore: generate 2026-05-01 01:46:55 +00:00
Kit Langton 5984d917dc refactor(session): yield instance context in system prompt (#25207) 2026-04-30 21:45:48 -04:00
Kit Langton c2a97a7a6c refactor(file): yield instance context in watcher (#25205) 2026-04-30 21:45:21 -04:00
Kit Langton a083c88e87 refactor(sync): capture instance context for publish (#25206) 2026-04-30 21:45:02 -04:00
Kit Langton ce3b0988c4 refactor(project): yield instance context in bootstrap (#25204) 2026-04-30 21:44:52 -04:00
Kit Langton e8a194a2bb test(effect): stabilize runner active shell check (#25203) 2026-04-30 21:36:19 -04:00
Kit Langton 8aa8798e07 refactor(session): yield instance context in llm (#25200) 2026-04-30 21:29:28 -04:00
opencode-agent[bot] 6d4629b566 chore: generate 2026-05-01 01:28:37 +00:00
OpeOginni a9d399699e fix(desktop): Prevent Model response Interruption when opening settings dialog (#25114) 2026-05-01 01:27:38 +00:00
Kit Langton bc805b3001 Pass CORS options to HttpApi backend (#25201) 2026-04-30 21:26:32 -04:00
Kit Langton 668d77bb4e refactor(tool): yield InstanceState context (#25199) 2026-04-30 21:01:06 -04:00
Kit Langton 5c2e06f353 Document HttpApi route patterns (#25188) 2026-04-30 20:48:14 -04:00
Kit Langton a499fe2b17 refactor(tool/read): yield InstanceState.context instead of reading ALS (#25183) 2026-04-30 20:33:04 -04:00
Kit Langton 451650b584 refactor(httpapi): preserve typed errors in session prompt handlers (#25181) 2026-04-30 20:04:00 -04:00
opencode-agent[bot] 1b76bec0e2 chore: generate 2026-05-01 00:03:55 +00:00
Kit Langton 96f4da1e1d Serve instance events through HttpApiBuilder (#25182) 2026-04-30 20:02:46 -04:00
opencode-agent[bot] 96a0dd6b04 chore: generate 2026-04-30 23:37:58 +00:00
Kit Langton 2dd1f2d453 Avoid request-time HttpApi layer provisioning (#25179) 2026-04-30 19:36:57 -04:00
opencode-agent[bot] 510f01674a chore: generate 2026-04-30 23:29:58 +00:00
Kit Langton e3134a2a99 refactor(session): align prompt input types with their schemas (#25178) 2026-04-30 19:28:46 -04:00
opencode-agent[bot] 8805104b8d chore: generate 2026-04-30 23:25:10 +00:00
Kit Langton fc155e9fc5 Build HttpApi UI route from services (#25177) 2026-04-30 19:24:10 -04:00
opencode-agent[bot] 3aaac0098e chore: generate 2026-04-30 23:06:57 +00:00
Sewer. a12333310f fix(provider): split providerOptions key on dot for openai-compatible, openai, and anthropic providers (#25145) 2026-04-30 18:05:56 -05:00
opencode-agent[bot] 247284b9af chore: generate 2026-04-30 22:51:09 +00:00
Kit Langton e0305e47f3 Protect HttpApi web UI fallback with auth (#25169) 2026-04-30 18:49:54 -04:00
Kit Langton 76a0f0f619 docs(httpapi): update migration spec to current state (#25173) 2026-04-30 18:41:27 -04:00
Joshua Lambert 010fc16cfb Merge pull request #9722 from Kilo-Org/docs/per-message-feedback-proposal
docs: add per-message feedback proposal
2026-04-30 18:24:19 -04:00
Aiden Cline 560baae15d fix: ensure user config takes precendence over plugin hooks for model resolution (#25167) 2026-04-30 17:15:56 -05:00
John Fawcett 0b8606cf22 fix(kilo-docs): remove sourcePosition/targetPosition from edges (type error)
Edge objects in React Flow don't have sourcePosition/targetPosition —
those properties only exist on Node. Remove them from all edge
definitions in bead-lifecycle, adversarial-loop, and convoy-execution
diagrams. The smoothstep edge type handles routing based on the node
positions instead.
2026-04-30 16:59:28 -05:00
John Fawcett 6b24da72fb fix(kilo-docs): bead lifecycle diagram — use top-to-top edge routing
Main flow edges (open→in_progress→in_review→closed) now exit and enter
from the top of each node, arcing above. Failed/rejected transitions
exit from bottom of source to top of target, dropping below.
2026-04-30 16:52:26 -05:00
Kit Langton 5518ecaefe Fix HttpApi web UI fallback (#25163) 2026-04-30 17:43:18 -04:00
kiloconnect[bot] 5884493382 docs: update BYOK providers list to reflect current support 2026-04-30 21:39:55 +00:00
Brendan O'Leary 0a3f674ea5 Add KiloClaw to docs man page (#9636) 2026-04-30 17:32:49 -04:00
Jake Jia d75973bfed fix(kilo-docs): rewrite zenmux doc and add to nav sidebar (#6142)
* fix(kilo-docs): rewrite zenmux doc and add to nav sidebar

Rewrite zenmux.md to match the standard provider doc format
(openrouter, minimax, etc.) and add ZenMux entry to ai-providers nav.

Changes:
- Add sidebar_label frontmatter, Website link, consistent section names
- Remove unrelated API code examples and product feature descriptions
- Add Supported Transforms and Tips and Notes sections
- Fix typo (Visi -> Visit) and codicon syntax
- Add ZenMux to ai-providers nav config

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Update packages/kilo-docs/pages/ai-providers/zenmux.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* chore: update nix node_modules hashes

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: kilo-maintainer[bot] <kilo-maintainer[bot]@users.noreply.github.com>
2026-04-30 23:10:27 +02:00
opencode-agent[bot] 924ba97055 chore: generate 2026-04-30 21:04:24 +00:00
Aiden Cline b80f52f8ad tweak: adjust codex plugin to use the models hook (#25157) 2026-04-30 16:03:07 -05:00
John Fawcett 56f4ce3669 fix(kilo-docs): fix diagram scroll stealing and edge routing
- Add preventScrolling={false} and panOnScroll={false} to ReactFlow
  so mouse wheel events pass through to the page instead of being
  captured by the diagram

- Set explicit sourcePosition/targetPosition on all nodes so edges
  connect from right→left for the main horizontal flow

- Use bottom→top routing for failure/rejection transitions so lines
  don't overlap nodes

- Reposition 'failed' node and adjust spacing for cleaner layout
2026-04-30 16:00:13 -05:00
Kit Langton feb275d08b Remove covered workspace websocket todo (#25161) 2026-04-30 20:58:08 +00:00
Kit Langton fbcbd24063 Add SyncEvent service (#25158) 2026-04-30 16:45:26 -04:00
Joshua Lambert 702496318c Apply suggestion from @lambertjosh 2026-04-30 16:25:42 -04:00
Joshua Lambert bd34334dd8 Apply suggestions from code review
Co-authored-by: Joshua Lambert <25085430+lambertjosh@users.noreply.github.com>
2026-04-30 16:24:50 -04:00
John Fawcett 196a34d8bc docs(kilo-docs): add BrowserFrame component and place all screenshots
Add BrowserFrame component that wraps images in abstract browser chrome
(traffic light dots, optional URL bar, optional caption). Register as
Markdoc tag: {% browserFrame url="..." caption="..." %}...{% /browserFrame %}

Place all 12 provided screenshots across all Gastown pages:
- gt-new-town-onboarding.png → Quick Start
- gt-new-rig.png → Quick Start
- gt-town-overview.png → Quick Start, Overview, Concepts, Mayor
- gt-rig-page-convoy-in-progress.png → Quick Start, Overview, Sling Work
- gt-rig-page-staged-convoy.png → Overview
- gt-rig-page-staged-convoy-detail.png → Overview, Sling Work
- gt-rig-page-convoy-bead-in-review.png → Sling Work, Code Review
- gt-rig-page-convoy-review-bead-detail.png → Sling Work
- gt-beads-page.png → Overview, Sling Work
- gt-beads-page-detail.png → Sling Work
- gt-merge-queue-page.png → Code Review
- gt-merge-queue-page-review-detail.png → Code Review

Remove all TODO screenshot placeholders — every page now has visuals.
2026-04-30 15:09:14 -05:00
kirillk d1840cbab1 refactor(jetbrains): align mode picker styling 2026-04-30 16:06:46 -04:00
kirillk 0e93377d9f Merge branch 'dull-taxi' of github.com:Kilo-Org/kilocode into wild-cause 2026-04-30 15:58:04 -04:00
Kit Langton 3250b814ce Fix HttpApi raw route authorization (#25154) 2026-04-30 19:55:20 +00:00
kirillk c511c44254 docs(jetbrains): document platform source lookup 2026-04-30 15:51:01 -04:00
kirillk 54d9fb4f1b feat(jetbrains): add native mode picker 2026-04-30 15:50:58 -04:00
kirillk aa2b2c3bc5 Merge remote-tracking branch 'origin/main' into dull-taxi 2026-04-30 15:44:48 -04:00
kirillk d522dfde7c docs(jetbrains): document session style helpers 2026-04-30 15:44:34 -04:00
kirillk fcfd9e6eed refactor(jetbrains): share UI style helpers 2026-04-30 15:37:31 -04:00
Kit Langton 0e9d9282c6 Refactor workspace service boundaries (#25152) 2026-04-30 15:34:37 -04:00
kirillk 0e87586a82 refactor(jetbrains): refresh session styles in place 2026-04-30 15:33:06 -04:00
John Fawcett 6c48186f41 docs(kilo-docs): add React Flow diagram component and initial diagrams
Integrate @xyflow/react for interactive architecture diagrams:
- FlowDiagram component with lazy loading (dynamic import)
- Markdoc tag: {% flowDiagram name="..." height="..." /%}
- Three initial diagrams: bead-lifecycle, adversarial-loop, convoy-execution
- Diagrams registry pattern for easy addition of new diagrams
- Replace TODO placeholders in concepts and code-review pages

The diagrams visualize the bead lifecycle state machine, the
micro-adversarial write/review/revise loop, and convoy DAG execution.
2026-04-30 14:14:34 -05:00
Kit Langton b315a70773 test: use Effect test helper for agent colors (#25051) 2026-04-30 15:14:25 -04:00
Kirill Kalishev 6835c59e85 Merge pull request #9753 from Kilo-Org/polished-begonia
fix(vscode): center wide welcome notifications
2026-04-30 15:13:21 -04:00
Kit Langton cedff6fb89 Isolate TUI thread cwd resolution test (#25147) 2026-04-30 15:10:30 -04:00
John Fawcett df1d1753eb docs(kilo-docs): write full content for all Gastown documentation pages
Flesh out all 7 sub-pages with comprehensive content:
- Quick Start: town creation, PAT setup, first task flow
- Concepts: towns, beads, convoys, rigs, agents, micro-adversarial loops
- The Mayor: capabilities, tools, communication tips
- Sling Work: single tasks, convoys, staged convoys, DAG execution
- Code Review: refinery pipeline, adversarial loops, merge strategies
- Settings: models, GitHub PAT, merge strategy, env vars, custom instructions
- Troubleshooting: common failure modes and fixes

Includes React Flow diagram placeholders (TODO comments) describing
what each interactive diagram should visualize.

Also moves Gastown nav link under Platforms section with sub-links and
updates page title to 'Gas Town by Kilo'.
2026-04-30 14:10:02 -05:00
Kirill Kalishev 2f9dc9c5c3 Merge branch 'main' into polished-begonia 2026-04-30 15:04:35 -04:00
Kit Langton 87cd9446d8 test: use testEffect for plugin triggers (#25053) 2026-04-30 14:24:53 -04:00
Kit Langton f4ce240a2e Use PTY service directly in HTTP routes (#25138) 2026-04-30 14:24:43 -04:00
kirillk 78aa8c279e fix(jetbrains): use editor fonts in session chat 2026-04-30 14:18:32 -04:00
Kit Langton 320527a3e4 Support multiple Zed selections in TUI context (#25140) 2026-04-30 14:15:50 -04:00
John Fawcett 1e2aca357b docs(kilo-docs): scaffold Gastown documentation section
Add initial page structure for /code-with-ai/gastown/ with overview,
quick-start, concepts, mayor, sling-work, code-review, settings, and
troubleshooting pages. Register the section in the sidebar nav config.
2026-04-30 13:03:07 -05:00
Kit Langton 19271fca2d Use workspace service in HTTP routes (#25139) 2026-04-30 13:57:25 -04:00
Kit Langton feeebbe7d4 Preserve workspace context in session HTTP routes (#25136) 2026-04-30 13:53:26 -04:00
Alex Gold a1c79891c1 Merge pull request #9134 from Kilo-Org/docs/kiloclaw-setting-up-other-tools
docs(kilo-docs): add Setting Up Other Tools page for KiloClaw
2026-04-30 13:48:09 -04:00
kirillk fb11c7b56d fix(vscode): center wide welcome notifications 2026-04-30 13:39:49 -04:00
Kit Langton f384675c01 test: use Effect test helper for run-service (#25048) 2026-04-30 17:05:10 +00:00
Kit Langton ec3ab4a00c test: use testEffect for retry policy (#25050) 2026-04-30 12:55:33 -04:00
Kit Langton e4ac936eb9 test: use testEffect for plugin workspace adaptor (#25052) 2026-04-30 12:54:53 -04:00
Kit Langton 79e23b7eb9 test: use testEffect for instance state (#25115) 2026-04-30 12:53:13 -04:00
Kit Langton 92e80b4660 test: use Effect test helper for app runtime logger (#25049) 2026-04-30 12:52:29 -04:00
Kit Langton ce63ca4d7a test: use testEffect for system prompt test (#25047) 2026-04-30 12:51:32 -04:00
Kit Langton fef7981942 test: use Effect runtime in runner deadlock case (#25045) 2026-04-30 12:45:30 -04:00
Aiden Cline ffe0314c47 fix: ensure disabling OPENCODE_DISABLE_CLAUDE_CODE_SKILLS doesnt disable external skills too (#25123) 2026-04-30 11:15:53 -05:00
opencode-agent[bot] 375444a149 chore: update nix node_modules hashes 2026-04-30 15:48:28 +00:00
Kit Langton 65c15afe9f test: use testEffect for instruction tests (#25046) 2026-04-30 11:48:13 -04:00
opencode-agent[bot] 8f57a2a462 chore: generate 2026-04-30 15:46:04 +00:00
James Long 53e9cac383 refactor(core): convert control-plane workspace to Effect (#25018) 2026-04-30 11:44:58 -04:00
Alex Gold 17f19ab549 Merge branch 'main' into docs/kiloclaw-setting-up-other-tools 2026-04-30 11:34:10 -04:00
Sebastian fe0c182747 upgrade opentui to 0.2.0 (#24810) 2026-04-30 17:33:54 +02:00
Marius da3d79a688 fix(cli): scope GPT-5.5 prompt behavior (#9745)
* fix(cli): scope GPT-5.5 prompt behavior

* fix(cli): route GPT-5.5 prompt by metadata

* fix(cli): allow prompt metadata in provider config
2026-04-30 17:29:50 +02:00
Mark IJbema 5d5fab36bb fix(cli): repair broken imports and typecheck after opencode v1.14.29 merge
Fixes 257 typecheck errors surfaced after the upstream merge:

- Update imports to new module paths after upstream PR #24554 removed
  module barrel files (@/config, @/session, @/util, etc.) and PR #24309
  renamed @opencode-ai/shared to @opencode-ai/core.
- Migrate loadMode to use Info.zod.safeParse for consistency with
  loadAgents and ConfigCommand (unblocks KilocodeConfig.handleInvalid).
- Drop removed Npm.outdated mock from tests.
- Add missing Config.defaultLayer to bash-permission-metadata test runtime.
- Fix Tips component signature (kilocode drops upstream's 'connected' prop).
- Fix toast.tsx undefined 'duration' reference (should be toastOptions.duration).
- Move filesystem-containment test from deleted shared package to core.
2026-04-30 17:16:31 +02:00
Joshua Lambert 7ee765e731 Merge pull request #9580 from Kilo-Org/docs/plugin-cache-path
docs: clarify plugin cache path
2026-04-30 11:10:13 -04:00
opencode-agent[bot] 29b1060c67 chore: generate 2026-04-30 15:08:03 +00:00
Kit Langton dddfcbf0d8 test: port instance HttpApi path/vcs read coverage to Effect 2026-04-30 11:07:00 -04:00
Josh Lambert 6a32cb1e6f docs(kilo-docs): clarify plugin cache path 2026-04-30 10:39:33 -04:00
Marius e9f2760d8e Expose custom agent permissions in VS Code settings (#9733)
* feat(vscode): expose custom agent permissions

* style(vscode): format agent permission settings

* chore: update kilo-vscode visual regression baselines

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-30 16:33:51 +02:00
Marius d5fb9eb226 Add experimental Agent Manager tool (#9737)
* feat: add experimental agent manager tool

* fix(agent-manager): sanitize tool worktree names

* fix(cli): validate agent manager tool tasks
2026-04-30 16:32:28 +02:00
Mark IJbema 3f7037549e resolve merge conflicts 2026-04-30 16:25:46 +02:00
Marius 26e4c1148f fix: scope commit prompt config to project (#9460)
* fix: scope commit prompt config to project

* fix: address commit prompt review feedback

* fix: address project config review feedback

* fix: adapt project config update to schema statics

* fix(vscode): keep provider under line cap
2026-04-30 16:22:54 +02:00
Imanol Maiztegui c7011a9da5 Merge pull request #9748 from Kilo-Org/imanol/open-tool-diff
Open diff viewer on Edit tool calls
2026-04-30 16:21:37 +02:00
Marius 7bda97de99 ux(vscode): clarify indexing setting scope (#9747)
Co-authored-by: Josh Holmer <jholmer.in@gmail.com>
2026-04-30 16:21:11 +02:00
Marius b864338855 docs: add sqlite corruption troubleshooting (#9631) 2026-04-30 16:16:15 +02:00
Mark IJbema 08dfb8295c Merge pull request #9317 from Kilo-Org/mark/fix-autocomplete-listener-dispose
fix(vscode): dispose autocomplete context listener
2026-04-30 15:59:51 +02:00
Imanol Maiztegui 4708322213 Merge branch 'main' into imanol/open-tool-diff 2026-04-30 15:06:39 +02:00
Imanol Maiztegui 5f5e55c348 refactor(i18n): move openInDiffViewer translation key from ui to kilo-i18n
Relocate the `ui.messagePart.openInDiffViewer` string from the
`packages/ui` locale dictionaries to `packages/kilo-i18n`, removing
the duplicate entries in the UI package and consolidating ownership
of the diff viewer label under a single i18n source.
2026-04-30 15:06:13 +02:00
kilo-maintainer[bot] 8e0987e841 chore: update nix node_modules hashes 2026-04-30 12:55:16 +00:00
Marius 80535d4ed6 fix(cli): persist command permission approvals (#9746) 2026-04-30 14:55:02 +02:00
Imanol Maiztegui d255afa643 Merge branch 'main' into imanol/open-tool-diff 2026-04-30 14:54:18 +02:00
Imanol Maiztegui a3ed2bb37f test(kilo-ui): add storybook story for edit tool diff viewer button
Introduce `WithEditToolOpenDiffAction` story and supporting
`editCompletedPart` fixture with full filediff metadata to exercise
the `canOpenDiff()` code path. Force-reveal the hover-only action
slot via a scoped style override so visual regression snapshots
capture the icon-button layout.

- Add completed edit tool part with before/after file content
- Wire `onOpenDiff` prop through `AllProviders` into `DataProvider`
- Create dedicated `mockDataEdit` dataset for the new story
2026-04-30 14:50:11 +02:00
Imanol Maiztegui 236fa2dd88 chore(i18n): add translations for "Open in Diff Viewer" label across all locales
Add the `ui.messagePart.openInDiffViewer` key to 18 language files
to support the new diff viewer button introduced in the edit tool
header.
2026-04-30 14:45:33 +02:00
Imanol Maiztegui 006600b69d feat(kilo-ui): add hover-revealed diff viewer button to edit tool header
Introduce an icon button that appears on hover within the edit-tool
trigger, allowing users to open the diff viewer directly from the
tool header without clicking the file path.

- Add "Open in Diff Viewer" IconButton with tooltip inside edit trigger
- Extract openDiff logic into reusable handler with dedicated click handler
- Style the action button with opacity transition on parent hover/focus
- Add i18n string for "Open in Diff Viewer" label
2026-04-30 14:39:18 +02:00
Mark IJbema 09e9e2663d Merge pull request #9669 from Kilo-Org/chore/remove-ai-gen_ai-telemetry
chore(telemetry): remove ai.* and gen_ai.* span emission
2026-04-30 14:17:56 +02:00
OpeOginni 62e1335388 fix(opencode): allow oc://renderer origin in cors middleware (#25099) 2026-04-30 12:11:42 +00:00
Marius 535b8d0d37 docs(ui): explain reasoning state retention (#9738) 2026-04-30 14:07:58 +02:00
Marius a076e336b3 fix(vscode): preserve agent manager local sessions (#9742) 2026-04-30 14:02:53 +02:00
Mark IJbema a81caaf66e Merge pull request #9736 from Kilo-Org/mark/find-conflict-markers-script
chore(cli): add script to find merge conflict markers
2026-04-30 12:36:30 +02:00
Marius 22b5283f79 feat(vscode): make reasoning blocks stay expanded (#9704)
* feat(vscode): make reasoning blocks stay expanded

* chore: group Kilo config entries
2026-04-30 10:23:00 +00:00
kiloconnect[bot] 8185b01e51 chore(cli): require ripgrep for find-conflict-markers
Drop the POSIX grep fallback; bail with a clear error when rg is
missing.
2026-04-30 10:18:35 +00:00
kiloconnect[bot] 2eec02452b chore(cli): add script to find merge conflict markers in a file
Provides a small helper for upstream merge workflows so agents can be
allowlisted to search for conflict markers without needing general shell
access. Wraps the canonical ripgrep invocation with a POSIX grep fallback.
2026-04-30 10:08:23 +00:00
Rietie e103c0d79a Merge pull request #9700 from Kilo-Org/docs/seo-ai-provider-titles
docs(kilo-docs): add SEO titles and descriptions to AI provider pages
2026-04-30 11:59:00 +02:00
Rietie ce83e397c6 Merge pull request #9701 from Kilo-Org/docs/redirect-deleted-kiloclaw-pages
docs(kilo-docs): add redirects for deleted KiloClaw flat pages
2026-04-30 11:58:23 +02:00
Marius 1338266da9 docs(agent-manager): document worktree setup behavior (#9731) 2026-04-30 09:37:14 +00:00
Mark IJbema 12f7967ca4 Merge pull request #9707 from Kilo-Org/agent/opencode-merge-worktrees
Add opencode merge reference worktrees
2026-04-30 11:19:47 +02:00
Marius f2db4d165c feat(vscode): add terminal command display setting (#9708)
* feat(vscode): add terminal command display setting

* fix: annotate terminal display toggle change

* fix: annotate terminal display jsx block

* fix(vscode): format terminal display renderer

* fix(vscode): preserve bash error rendering

* chore: update kilo-vscode visual regression baselines

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-30 10:46:59 +02:00
Evgeny Shurakov a158e5dd18 Merge pull request #9729 from Kilo-Org/eshurakov/jasper-shampoo
CLI - Fix Remote Badge in TUI
2026-04-30 10:44:31 +02:00
Evgeny Shurakov 1493d656c9 fix(cli): keep remote badge visible while connecting 2026-04-30 10:23:27 +02:00
Joshua Lambert 82254696ec docs(kilo-docs): document codebase indexing for CLI and new VS Code extension (#9714)
* docs(kilo-docs): document codebase indexing for CLI and new VS Code extension

The existing Codebase Indexing page was flagged as legacy-only. Rewrite it to
cover the new shared implementation in the CLI and VS Code extension, including
the `/indexing` command, the `indexing` config section, LanceDB, and the full
list of supported embedding providers.

* docs(kilo-docs): address review feedback on codebase indexing

- Add a top-level warning that indexing is experimental in the CLI and
  new VS Code extension
- Add a new 'Enabling the feature' section that documents the
  `experimental.semantic_indexing` flag and where to toggle it (CLI
  `kilo.jsonc`, VS Code Experimental settings, or legacy direct config)
- Split Embedding Providers and Vector Stores into new-platform vs
  VSCode (Legacy) tabs so the legacy section only lists providers it
  actually supports (OpenAI, Gemini, Ollama; Qdrant only)
- Fix the Vercel AI Gateway link to point at the product docs
  (https://vercel.com/docs/ai-gateway) instead of the raw API endpoint
- Clarify that the Mistral indexing provider uses a La Plateforme API
  key, not the Codestral key from the autocomplete setup guide
- Call out the experimental flag prerequisite at each configuration
  entry point

* docs(kilo-docs): rename combined tab to 'VSCode & CLI'

* chore: revert unrelated package-lock changes

* docs(kilo-docs): order tabs VSCode, CLI, VSCode (Legacy)

* docs(kilo-docs): consolidate platform-specific indexing docs into one tabs block
2026-04-30 10:02:58 +02:00
Brendan Allan 908e28175f fix: invert *_ready getters to fix server status indicator (#25077) 2026-04-30 15:10:39 +08:00
Brendan Allan 3398fd7719 feat(httpapi): add CORS middleware to instance routes (#25074) 2026-04-30 07:06:17 +00:00
Luke Parker 9bddf7f3ef fix app crash restoring messages without model (#25062) 2026-04-30 14:44:53 +10:00
Dax Raad 8ba374fefa ci: enable sourcemaps for beta releases
Generate linked sourcemaps when building beta releases to help users
debug issues with readable stack traces.
2026-04-30 00:42:22 -04:00
Josh Lambert a6b78e833e docs: add per-message feedback proposal
Initial high-level design proposal for thumbs up/down feedback on
assistant messages. Covers the problem motivation, scope, payload
differences between Kilo Gateway and direct providers, and open
questions. Implementation details intentionally kept out — those
belong in the PR diff.
2026-04-30 00:39:02 -04:00
Aiden Cline 3ef0aaf768 tweak: make azure onboarding ux a bit better (#25057) 2026-04-29 23:35:59 -05:00
Tommy D. Rossi d7701dbfb6 fix(opencode): preserve external_dir and deny parent permissions in task child sessions (#23290) 2026-04-29 22:06:29 -05:00
Kit Langton c49bf0b402 test: cover ConfigService helper (#25042) 2026-04-30 02:41:59 +00:00
Kit Langton cee9610d26 refactor: use Effect config for HttpApi authorization (#25035) 2026-04-29 22:22:32 -04:00
Kit Langton 38adc13295 test: cover HttpApi authorization middleware (#25033) 2026-04-29 21:34:52 -04:00
Kit Langton 4fe14abb8c test: cover HttpApi instance context middleware (#25032) 2026-04-29 21:24:45 -04:00
Kit Langton 9052e8a1ba test: cover HttpApi workspace routing middleware (#25027) 2026-04-29 21:08:03 -04:00
github-actions[bot] de78dedceb Update VOUCHED list
https://github.com/anomalyco/opencode/issues/23890#issuecomment-4348703527
2026-04-30 00:58:42 +00:00
kirillk d79ae4180c refactor(jetbrains): centralize session UI styling 2026-04-29 20:30:47 -04:00
Kit Langton 6f508d574e test: deflake runner cancel test (#25021) 2026-04-29 20:19:52 -04:00
kirillk c655bc9998 docs: update JetBrains UI skill guidance 2026-04-29 19:38:20 -04:00
Kit Langton 61dfae31e7 test: cover HttpApi websocket proxy (#25017) 2026-04-29 19:37:50 -04:00
opencode ac6aa43e3b sync release versions for v1.14.30 2026-04-29 23:33:39 +00:00
opencode eb42193043 release: v1.14.30 2026-04-29 23:33:28 +00:00
Luke Parker ea89925042 fix: handle invalid mcp urls (#25019) 2026-04-30 09:32:26 +10:00
kirillk 6b2bf360f7 refactor(jetbrains): align session UI with platform styles 2026-04-29 19:15:18 -04:00
opencode-agent[bot] 12cbfe5b64 chore: generate 2026-04-29 22:40:26 +00:00
Luke Parker d7b7be1909 fix(desktop): Path mismatches cause sessions missing + strong ID + existing data fix (#25013) 2026-04-29 22:39:19 +00:00
Aiden Cline a740d2c667 fix: adjust azure defaults to closer match openai to prevent Item .. of type 'reasoning' was provided without its required following item (#25007) 2026-04-29 16:49:28 -05:00
Aiden Cline 588261076a fix: make deepseek string check a bit looser (#25012) 2026-04-29 16:47:45 -05:00
kirillk 1326c19230 feat: improve JetBrains chat renderers 2026-04-29 17:39:45 -04:00
Ruben De Smet 639e27c3ce feat: add Mistral Medium 3.5 with reasoning support (#24996) 2026-04-29 16:26:24 -05:00
Kirill Kalishev 970d8317d5 Merge pull request #9578 from Kilo-Org/vaulted-room
docs: add JetBrains UI style skill
2026-04-29 17:10:29 -04:00
Kirill Kalishev da33eb834e Merge branch 'main' into vaulted-room 2026-04-29 17:00:33 -04:00
opencode-agent[bot] 1124ae17b4 chore: generate 2026-04-29 20:52:19 +00:00
Kit Langton 9db5890ce5 Refactor HttpApi workspace routing and proxy boundaries (#25006) 2026-04-29 16:50:54 -04:00
Marian Alexandru Alecu 34b1dee811 Merge pull request #9626 from Kilo-Org/fix/external_directory-permissions
fix(cli): honor read-only external directory allows
2026-04-29 23:25:06 +03:00
James Long 293877cb7e fix(core): reconnect editor context for session directory (#24984) 2026-04-29 15:11:44 -04:00
kirillk fa02c562e4 docs: fix JetBrains UI skill tables 2026-04-29 14:55:09 -04:00
Kirill Kalishev b72e9c106f Merge pull request #9565 from Kilo-Org/wheat-outrigger
Refactor JetBrains session state and delayed UI updates
2026-04-29 14:48:47 -04:00
Kirill Kalishev 18e7a6b786 Merge branch 'main' into vaulted-room 2026-04-29 14:32:29 -04:00
Kirill Kalishev 5717a582fb Merge pull request #9651 from Kilo-Org/ash-couch
fix(vscode): refine prompt toolbar layout
2026-04-29 14:28:31 -04:00
kilo-maintainer[bot] 3728b9081a release: v7.2.31 2026-04-29 18:20:48 +00:00
opencode-agent[bot] c480006554 chore: generate 2026-04-29 18:17:10 +00:00
Aiden Cline 6aa8e894b1 chore: rm broken codesearch tool (#24992) 2026-04-29 13:15:44 -05:00
Marius 5b9a6268cd docs(kilo-docs): remove redundant byok agent manager note (#9711) 2026-04-29 18:12:38 +00:00
Marius d02c4a34c4 docs(kilo-docs): refresh Agent Manager docs (#9710)
* docs(kilo-docs): refresh agent manager docs

* docs(kilo-docs): clarify agent manager worktree deletion
2026-04-29 19:59:40 +02:00
Marius 1adb8213ff docs: include annotation check in quality gates (#9709) 2026-04-29 19:46:46 +02:00
Alex Gold f74d98b1eb Merge branch 'main' into docs/kiloclaw-setting-up-other-tools 2026-04-29 12:45:23 -04:00
Rietie 706de3ec10 Merge branch 'main' into docs/seo-ai-provider-titles 2026-04-29 18:11:47 +02:00
kiloconnect[bot] 26046c9b2b chore: add opencode merge reference worktrees 2026-04-29 16:06:32 +00:00
Aiden Cline 00bb9836a6 tweak: adjust order of system prompt instructions: Global, Project, Skills (#24974) 2026-04-29 10:55:53 -05:00
github-actions[bot] 71f9189607 Update VOUCHED list
https://github.com/anomalyco/opencode/issues/24964#issuecomment-4345349260
2026-04-29 15:54:34 +00:00
kilo-code-bot[bot] 9ad91c214a docs(kilo-docs): add upstream provider updates (#9663)
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-04-29 15:31:07 +00:00
Marius 9028174cfd fix(vscode): compact todo update cards (#9687)
* fix(vscode): compact todo update cards

* chore: update kilo-vscode visual regression baselines

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-29 17:31:04 +02:00
kilo-code-bot[bot] fe3cbd8623 docs(kilo-docs): update cli architecture patterns (#9660)
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-04-29 15:31:00 +00:00
Marius 8a6bde8138 docs: clarify extension settings guidance (#9692) 2026-04-29 17:28:05 +02:00
Mark IJbema 7d375b93ee refactor: kilo compat for v1.14.29 2026-04-29 17:24:20 +02:00
kilo-code-bot 6ff4f3db92 docs(kilo-docs): add redirect for deleted kiloclaw/version-pinning
Commit 3494a56b2 also removed /docs/kiloclaw/version-pinning alongside the
three flat pages this PR already covers; its content was moved to
/docs/kiloclaw/control-ui/version-pinning. Add the missing redirect so the
old URL no longer 404s.
2026-04-29 14:44:27 +00:00
kiloconnect[bot] ddf9608bd3 docs(kilo-docs): add redirects for deleted KiloClaw flat pages
Commit 3494a56b2 removed /docs/kiloclaw/control-ui, /docs/kiloclaw/pricing,
and /docs/kiloclaw/troubleshooting without adding redirects, producing 404s
on high-traffic URLs. Redirect each to its new nested canonical location.
2026-04-29 14:31:16 +00:00
kiloconnect[bot] b7b107bb16 docs(kilo-docs): add SEO titles and descriptions to AI provider pages
Every page under /docs/ai-providers was falling back to the site-wide default <title> 'Kilo Code Documentation' because the frontmatter only set sidebar_label. Search ranked these pages at positions 5-8, so unique provider-specific titles should improve click-through and rankings.
2026-04-29 14:31:15 +00:00
Mark IJbema c7dc020da6 Merge branch 'main' into chore/remove-ai-gen_ai-telemetry 2026-04-29 16:25:56 +02:00
Alex Alecu 3fa38e34aa fix(app): make custom elements file real 2026-04-29 17:24:20 +03:00
Alex Alecu a72d2a65f8 fix(cli): guard Windows config fallback paths 2026-04-29 16:57:15 +03:00
opencode-agent[bot] a3f7ea2555 chore: generate 2026-04-29 13:47:48 +00:00
Kit Langton d3df8e1180 test(httpapi): clean up SDK parity tests 2026-04-29 09:46:17 -04:00
Alex Alecu 9d84754482 fix(cli): compare raw Windows config paths 2026-04-29 16:44:31 +03:00
opencode-agent[bot] df147b65fd chore: generate 2026-04-29 13:36:05 +00:00
Kit Langton 6015084fa2 Prepare Effect HttpApi backend parity (#24853) 2026-04-29 09:34:50 -04:00
Alex Alecu 8c1c5aa2f5 test(cli): isolate config path variant coverage 2026-04-29 16:33:50 +03:00
Alex Alecu 5bdf98269b test(cli): avoid parallel pending permission requests 2026-04-29 16:01:12 +03:00
Alex Alecu 60bac86696 fix: handle CI symlinks and config paths 2026-04-29 15:51:16 +03:00
kiloconnect[bot] 05692356a6 ci: upgrade artifact actions to v7/v8 and switch kilo-cli to archive: false
download-artifact@v4 silently warned on digest mismatches, which hid the
corrupt `kilo-cli` download on run 25101862100 until the next step
failed with "CLI binary not found". v8 defaults `digest-mismatch`
to `error`, so the same failure surfaces on the download step itself
with an actionable message.

Also switches the build-cli upload to upload-artifact@v7's
`archive: false`, so the already-zstd'd tarball travels as-is instead
of being re-wrapped in a store-only zip. With `archive: false` the
`name:` input is ignored and the artifact is named after the file
(`kilo-cli.tar.zst`), so the two consumers (build-vscode, publish)
now reference `name: kilo-cli.tar.zst` and set `skip-decompress: true`.

The `kilo-vscode` upload stays on v4: it uploads a directory of .vsix
files and `archive: false` requires a single file.
2026-04-29 12:34:54 +00:00
Alex Alecu 2366679f4e fix: keep local checks passing on Windows 2026-04-29 14:24:32 +03:00
Alex Alecu 3e3ec93991 fix(kilo-docs): normalize source link extraction on Windows 2026-04-29 14:15:42 +03:00
Alex Alecu 02adfec4ad fix(cli): protect drive-stripped config paths on Windows 2026-04-29 14:14:28 +03:00
Marian Alexandru Alecu d25b1e8486 Merge branch 'main' into fix/external_directory-permissions 2026-04-29 13:51:20 +03:00
kiloconnect[bot] 0bf14eb2ff chore(telemetry): remove ai.* and gen_ai.* span emission
Drops the PostHogSpanExporter that converted AI SDK OpenTelemetry spans
into PostHog ai.* / gen_ai.* events, and disables AI SDK
experimental_telemetry in the CLI so those spans are no longer emitted.
Tool/session/indexing telemetry is unchanged.
2026-04-29 08:52:51 +00:00
Alex Alecu 105b9a340f Merge remote-tracking branch 'origin/main' into fix/external_directory-permissions 2026-04-29 11:15:54 +03:00
Alex Alecu 9ff1e20743 chore(cli): annotate bash node iteration 2026-04-29 11:15:47 +03:00
Alex Alecu 7dc7dad661 fix(cli): stabilize external directory permission tests 2026-04-29 11:11:27 +03:00
Marian Alexandru Alecu 13cdca2f78 Merge branch 'main' into fix/external_directory-permissions 2026-04-29 09:51:56 +03:00
Brendan Allan 65ba1f6c13 fix(download): update beta asset names from electron to desktop (#24908) 2026-04-29 14:50:06 +08:00
Brendan Allan d37e5af57d Disable Windows update code signature verification (#24905) 2026-04-29 14:40:37 +08:00
Marian Alexandru Alecu 8c90bc5bfd Merge branch 'main' into fix/external_directory-permissions 2026-04-29 09:28:40 +03:00
spark4862 d71b827d8c fix(session): remap compaction tail_start_id when forking (#24898)
Co-authored-by: spark4862 <spark4862@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-04-29 00:23:56 -05:00
Aiden Cline 504ca3d3d8 feat: make it easier to toggle on/off paste summary in the tui (#24869) 2026-04-28 23:55:14 -05:00
Mike a8c74c04de docs: add Atomic Chat provider section (#23069) 2026-04-28 23:10:41 -05:00
Brendan Allan f6b4f54216 refactor(app): convert getProjectAvatarSource to early returns (#24896) 2026-04-29 12:00:13 +08:00
Dax Raad fc0e3c65b3 ignore 2026-04-28 23:07:46 -04:00
Dax Raad 23b8ed788e ignore 2026-04-28 23:03:48 -04:00
Dax Raad 3bd890f46b ignore: ideas 2026-04-28 23:00:07 -04:00
github-actions[bot] 3165def377 chore: update kilo-vscode visual regression baselines 2026-04-29 00:58:21 +00:00
kirillk bc91af398d fix(vscode): refine prompt toolbar layout 2026-04-28 20:53:29 -04:00
Luke Parker 9fbeafb63e fix: clear timeout after promise rejection (#24864) 2026-04-28 23:37:12 +00:00
opencode-agent[bot] 91bd295209 chore: generate 2026-04-28 23:11:59 +00:00
Luke Parker d4bf70be06 fix(bash): memory leak - release parsed syntax trees (#24861)
Co-authored-by: jiwenshang <jiwenshang@xiaohongshu.com>
2026-04-28 23:10:48 +00:00
kirillk 4a08f618d7 fix: show JetBrains workspace error details 2026-04-28 18:33:04 -04:00
kirillk 382924d398 fix: address JetBrains session review feedback 2026-04-28 17:52:28 -04:00
kirillk 51c74132f9 fix: use theme-safe JetBrains session icons and colors 2026-04-28 17:36:20 -04:00
kirillk 8ff62a4f5d fix: adjust connection panel layout and rename retry action 2026-04-28 17:23:27 -04:00
kirillk 37176027a9 refactor: consolidate JetBrains session delayed state 2026-04-28 17:23:27 -04:00
kirillk 87609f2f9e fix: avoid transient JetBrains session loading states 2026-04-28 17:23:27 -04:00
kirillk 10caa9cf63 refactor: move JetBrains session view state into controller 2026-04-28 17:23:27 -04:00
kirillk 9927331c1c feat: add JetBrains session history panel 2026-04-28 17:23:27 -04:00
opencode-agent[bot] ae8904c4ff chore: generate 2026-04-28 20:50:56 +00:00
James Long 9209c04370 feat(core): filter sessions by path and add setting to disable (#24849) 2026-04-28 16:49:13 -04:00
Kit Langton 379e7f3f20 test(httpapi): cover sdk effect routes (#24836) 2026-04-28 16:34:06 -04:00
opencode-agent[bot] 366d11e1f8 chore: generate 2026-04-28 20:33:13 +00:00
Kit Langton 58836e75f0 fix(httpapi): wire global and control handlers (#24835) 2026-04-28 16:31:45 -04:00
Kirill Kalishev 2a7db12a87 Merge branch 'main' into wheat-outrigger 2026-04-28 16:20:06 -04:00
Aiden Cline 0acac216ae fix(copilot): ensure available variants sync from api (#24734)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-28 14:58:51 -05:00
opencode 276d162044 sync release versions for v1.14.29 2026-04-28 18:34:48 +00:00
opencode 5e67efc2fd release: v1.14.29 2026-04-28 18:34:37 +00:00
opencode-agent[bot] 1b0ed983c5 chore: generate 2026-04-28 18:25:23 +00:00
Kit Langton 2e8d690ab1 fix(httpapi): finish sdk openapi parity (#24827) 2026-04-28 14:24:10 -04:00
Kit Langton 1ff8d289af fix(tui): handle Zed selection byte offsets (#24825) 2026-04-28 14:09:39 -04:00
Dax d54ffbda1c tui: ignore invalid custom themes to prevent startup crashes (#24645) 2026-04-28 13:58:55 -04:00
Kit Langton c00058ed7a fix(httpapi): align request body openapi shape (#24811) 2026-04-28 12:55:37 -04:00
James Long 2c2fc3499b feat(core): store relative path for sessions (#24704) 2026-04-28 11:51:24 -04:00
Kit Langton ea3c6c3481 fix(httpapi): document instance query parameters (#24809) 2026-04-28 11:10:00 -04:00
opencode-agent[bot] 9b68b7195a chore: generate 2026-04-28 15:05:37 +00:00
Kit Langton 7739cc53b4 refactor(httpapi): fork server startup by flag (#24799) 2026-04-28 11:02:35 -04:00
Alex Alecu 9427e3a12a fix(review): guard bash redirects 2026-04-28 17:30:17 +03:00
Marian Alexandru Alecu 11a23095ac Merge branch 'main' into fix/external_directory-permissions 2026-04-28 17:26:15 +03:00
Alex Alecu a43a58784e chore(sdk): refresh generated event types 2026-04-28 16:56:26 +03:00
Alex Alecu 19497a17bc Merge remote-tracking branch 'origin/main' into fix/external_directory-permissions 2026-04-28 16:43:48 +03:00
David Hill 3fa78a8b01 docs: bump GitHub stars count to 150K (#24792) 2026-04-28 09:24:46 -04:00
Kit Langton e57d0c2fee fix(httpapi): document tui bad request responses
Document legacy 400 bad-request responses on TUI Effect HttpApi payload-validation endpoints and cover them with OpenAPI parity tests.
2026-04-28 09:23:54 -04:00
Kit Langton 2a4f2bf527 fix(httpapi): align sync seq validation
Reject negative and fractional sync sequence values in Effect HttpApi schemas so replay/history validation matches the legacy Hono routes.
2026-04-28 09:22:49 -04:00
Alex Alecu ae2f41ce5e chore(cli): annotate bash permission change 2026-04-28 15:40:45 +03:00
Alex Alecu 5dbf91cc16 chore: add changeset for external directory permissions 2026-04-28 15:39:17 +03:00
Alex Alecu b9a263f465 fix(cli): honor read-only external directory allows 2026-04-28 15:38:53 +03:00
Alex Alecu aea087aa23 test(cli): reproduce external directory read prompts 2026-04-28 15:37:12 +03:00
Brendan Allan aa07f38b07 fix(app): preserve per-workspace icon override from localStorage (#24738)
Co-authored-by: Andrew Avsenin <snatvb@ya.ru>
2026-04-28 19:37:40 +08:00
Brendan Allan 9d1f17d836 fix(ui): remove redundant flex overrides in tool components (#24749) 2026-04-28 15:51:18 +08:00
github-actions[bot] b420952e59 Update VOUCHED list
https://github.com/anomalyco/opencode/issues/24732#issuecomment-4332442679
2026-04-28 04:53:58 +00:00
opencode-agent[bot] bb9e445257 chore: generate 2026-04-28 04:45:24 +00:00
Aiden Cline 528fb1d404 fix: sanitize tools for moonshot (#24730) 2026-04-27 23:44:21 -05:00
Brendan Allan c8d9f7aa89 refactor(app): load sync state through TanStack Query (#23792) 2026-04-28 04:24:30 +00:00
opencode-agent[bot] cd7ec93cdf chore: generate 2026-04-28 02:34:43 +00:00
Kit Langton 796b652d2b fix(httpapi): preserve mcp oauth error parity (#24706) 2026-04-27 22:33:21 -04:00
Kit Langton 4d74849c1a fix(tui): keep Zed context polling responsive (#24711) 2026-04-27 22:24:04 -04:00
opencode-agent[bot] 937a7c48a5 chore: update nix node_modules hashes 2026-04-28 02:22:33 +00:00
Kit Langton 704eb00de4 chore: bump effect beta (#24705) 2026-04-27 21:58:11 -04:00
opencode-agent[bot] bad4599bf9 chore: generate 2026-04-28 01:50:04 +00:00
Kit Langton 892fd85ba7 fix(httpapi): preserve provider oauth authorize parity (#24703) 2026-04-27 21:48:50 -04:00
opencode-agent[bot] 0eaa47d857 chore: generate 2026-04-28 00:54:28 +00:00
Kit Langton faca24d487 fix(httpapi): align session boolean query parsing (#24693) 2026-04-27 20:53:27 -04:00
Kit Langton c103202ad5 test(httpapi): cover session json parity (#24682) 2026-04-27 19:48:57 -04:00
Kit Langton ce78a4265d fix(session): remove compaction summary dividers (#24677) 2026-04-27 18:15:11 -04:00
Kit Langton c4a2353ac3 fix(session): omit undefined optional fields (#24676) 2026-04-27 17:50:09 -04:00
Kit Langton 576efed196 fix(httpapi): preserve optional session fields (#24671) 2026-04-27 21:38:28 +00:00
opencode-agent[bot] dfc0075f90 chore: generate 2026-04-27 20:52:42 +00:00
Kit Langton acd15dcc8a test(httpapi): cover full OpenAPI route inventory (#24667) 2026-04-27 16:51:24 -04:00
Kit Langton 139c4fd555 fix(session): harden shell cancellation (#24553) 2026-04-27 20:47:18 +00:00
Cas e0f3df8252 fix(tui): consume Enter in dialog useKeyboard handlers (#23390) 2026-04-27 15:31:49 -05:00
opencode-agent[bot] 9cd2e3a1c3 chore: generate 2026-04-27 20:31:05 +00:00
Kit Langton f584f80219 test(httpapi): verify reflected route mounts (#24663) 2026-04-27 16:29:58 -04:00
Kit Langton 45eac589f8 fix(tui): preserve Zed context on terminal focus (#24662) 2026-04-27 16:25:37 -04:00
James Long fab1768826 feat(core): file context improvements and option to disable (#24661) 2026-04-27 16:10:13 -04:00
Kit Langton 51fc10e407 fix(httpapi): enforce instance route parity (#24660) 2026-04-27 16:07:31 -04:00
kirillk 4a44a0d01d docs: expand JetBrains UI style guidance 2026-04-27 15:46:26 -04:00
opencode-agent[bot] 7a1c8465f5 chore: generate 2026-04-27 19:38:33 +00:00
Kit Langton 5290e9ca7e fix(tui): stabilize Zed editor context polling (#24656) 2026-04-27 15:37:18 -04:00
kirillk 9bd8a66fac docs: add JetBrains UI style skill 2026-04-27 15:22:00 -04:00
Aiden Cline c361c2953f fix: ensure toolStreaming is set to off by default when using non anthropic models with anthropic sdk (#24642) 2026-04-27 14:16:00 -05:00
opencode-agent[bot] ccb7669736 chore: generate 2026-04-27 18:34:44 +00:00
Dax f25f1485d5 refactor: remove module barrels (#24554) 2026-04-27 14:33:33 -04:00
kirillk 09010ba956 fix: improve JetBrains session panel layout 2026-04-27 13:47:17 -04:00
Kit Langton 55ecb06748 fix(httpapi): accept empty session create body (#24640) 2026-04-27 17:17:11 +00:00
Kit Langton dc6991e5a8 fix(httpapi): mount workspace bridge routes (#24626) 2026-04-27 12:52:48 -04:00
Mark IJbema ff818b94d6 Merge branch 'main' into mark/fix-autocomplete-listener-dispose 2026-04-27 18:07:11 +02:00
Aiden Cline 738b3065dc tweak: make interleaved reasoning_content default to true for openai compat deepseek setups (#24630) 2026-04-27 10:17:38 -05:00
opencode-agent[bot] 26cc537cb1 chore: generate 2026-04-27 14:46:00 +00:00
Seashore Shi ede354b0e6 docs: fix duplicated word in CLI env var table (#24614)
Co-authored-by: Seashore <ss@SeashoredeMac-mini.local>
2026-04-27 09:44:53 -05:00
Kirill Kalishev 42ffeca175 Merge branch 'main' into wheat-outrigger 2026-04-27 09:18:10 -04:00
Jack 61eabfc60c update Go DeepSeek flash limits for cache pricing drop (#24592) 2026-04-27 17:02:27 +08:00
opencode-agent[bot] 2789b770aa chore: generate 2026-04-27 05:40:37 +00:00
Luke Parker 8718b98ee1 fix: pass workspace symbol query to experimental LSP tool (#24576) 2026-04-27 05:39:36 +00:00
opencode-agent[bot] c8b2f987f9 chore: generate 2026-04-27 05:39:13 +00:00
Frank 52b55b826f Merge branch 'fix/usage-chart' into dev 2026-04-27 01:37:52 -04:00
Frank e8c20235b8 zen: coupons 2026-04-27 01:36:28 -04:00
opencode-agent[bot] 17701628bd chore: generate 2026-04-27 05:18:33 +00:00
21pounder 0efc6163f1 fix(opencode): agent create generates permissions field with deny ins… (#24482)
Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-04-27 00:17:08 -05:00
Jack 1e191ba815 update Go DeepSeek request estimates for cache pricing changes (#24575) 2026-04-27 13:06:51 +08:00
Aiden Cline f19d863689 ignore: split up reasoning transforms (#24574) 2026-04-26 23:57:32 -05:00
Frank 4a1ef327ca sync 2026-04-27 00:52:54 -04:00
Aiden Cline 025a6392ce fix: default tool call streaming to false for google vertex (#24573) 2026-04-26 23:42:23 -05:00
opencode e578c442be sync release versions for v1.14.28 2026-04-27 04:23:44 +00:00
opencode-agent[bot] 0cecb1bff2 chore: generate 2026-04-27 04:05:59 +00:00
Frank 5d8971c1ed go: add deepseek icon 2026-04-27 00:04:44 -04:00
Dax a9b62d67df Refactor npm config handling (#24565) 2026-04-27 03:54:59 +00:00
Luke Parker 3525e61906 fix: ignore GitHub Actions changelog contributor (#24567) 2026-04-27 03:47:04 +00:00
github-actions[bot] 059e6c46db Update VOUCHED list
https://github.com/anomalyco/opencode/issues/24563#issuecomment-4323944984
2026-04-27 03:30:38 +00:00
Frank 5cf195e0af go: models endpoint 2026-04-26 23:02:18 -04:00
opencode 244d1debe4 sync release versions for v1.14.27 2026-04-27 02:09:07 +00:00
opencode-agent[bot] 35734b42fe chore: update nix node_modules hashes 2026-04-27 01:55:51 +00:00
Sebastian a3128e32c5 upgrade opentui to 0.1.105 (#24555) 2026-04-26 21:39:40 -04:00
Dax 5f8a72bfc4 fix(tui): hide provider checks before onboarding (#24551) 2026-04-27 01:18:26 +00:00
Kit Langton 418a1cf5f3 feat(httpapi): bridge tui routes (#24548) 2026-04-27 01:17:48 +00:00
Dax Raad 60ebd074ac core: refactor Installation service to use a single consolidated result object
Reorganizes the Installation service implementation by grouping info, method, latest, and upgrade methods into a single result object. This improves code locality and makes the service interface more maintainable. Also adds a clarifying comment explaining why the package manager's resolver is used for version lookups (to ensure registries, mirrors, auth, proxies, and dist-tags match upgrade behavior).
2026-04-26 21:05:42 -04:00
Kit Langton 216dd363e8 feat(httpapi): bridge pty routes (#24547) 2026-04-26 21:05:16 -04:00
Luke Parker 141f33d24b feat: configurable shell selection + desktop settings UI (#20602) 2026-04-27 00:54:55 +00:00
opencode-agent[bot] c4d8a8183e chore: generate 2026-04-26 23:56:15 +00:00
Kit Langton 58244eb687 feat(httpapi): bridge event stream (#24518) 2026-04-26 19:55:13 -04:00
Dax Raad e9071b0a80 tui: remove excessive debug logging from workspace creation flow to reduce terminal output noise 2026-04-26 19:33:40 -04:00
OpeOginni c68907ece2 fix(tui): update toast duration handling to use default value (#23395)
Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
2026-04-26 17:27:02 -05:00
sylwester-liljegren b3145df164 Merge branch 'main' into install-script-update 2026-04-27 01:06:55 +03:00
opencode af3998c8a6 sync release versions for v1.14.26 2026-04-26 21:01:16 +00:00
opencode-agent[bot] fad2618757 chore: update nix node_modules hashes 2026-04-26 20:45:18 +00:00
Sebastian 21e01dbe04 upgrade opentui to 0.1.104 (#24531) 2026-04-26 22:31:33 +02:00
Jack 3beadeebff feat(go): add Go model listing endpoint (#24304)
Co-authored-by: Frank <frank@anoma.ly>
2026-04-26 14:46:49 -04:00
Jermiah Joseph dcee1c3642 fix(editor): reject lock files with no workspace match for cwd (#24323) 2026-04-26 14:21:29 -04:00
kirillk f8e31e0b6d fix(jetbrains): make connection panel recovery reliable
Surface startup, workspace, and config issues in the panel so sessions explain why they are unavailable. Let retry refresh warnings first and restart the app when problems persist, while logging final error and warning states on the backend.
2026-04-26 13:59:33 -04:00
Aiden Cline 00d1a7e090 chore: rm empty file 2026-04-26 12:32:41 -05:00
opencode-agent[bot] bbb56c2a88 chore: generate 2026-04-26 17:14:24 +00:00
Frank 5186c6964b sync 2026-04-26 13:11:09 -04:00
Frank 79c66e353f sync 2026-04-26 12:50:03 -04:00
opencode-agent[bot] 41f5e8a861 chore: generate 2026-04-26 16:25:19 +00:00
Kit Langton c5b67927af feat(httpapi): bridge remaining session routes (#24510) 2026-04-26 12:24:19 -04:00
opencode-agent[bot] 301ecb185e chore: generate 2026-04-26 16:01:07 +00:00
Kit Langton 151df05eeb feat(httpapi): bridge session message mutations (#24487) 2026-04-26 12:00:02 -04:00
opencode-agent[bot] 55adcdfd07 chore: generate 2026-04-26 15:51:31 +00:00
Kit Langton daaa2e5911 feat(httpapi): bridge session lifecycle routes (#24486) 2026-04-26 11:50:26 -04:00
opencode-agent[bot] daff119fe4 chore: generate 2026-04-26 15:50:09 +00:00
Kit Langton e0d1ff42c0 feat(httpapi): bridge session read routes (#24485) 2026-04-26 11:49:11 -04:00
opencode-agent[bot] de413c56ae chore: generate 2026-04-26 15:32:42 +00:00
Kit Langton da61b0290a feat(httpapi): bridge sync routes (#24484) 2026-04-26 11:31:46 -04:00
Dax Raad d03e6cedde ci: update team assignments in github-triage
Update team member assignments in the triage tool:
- Remove thdxr from tui and core teams
- Add simonklee to tui team
- Add kitlangton to core team
2026-04-26 11:18:59 -04:00
Jack 7feb6ab962 fix(docs): correct OpenCode Go DeepSeek endpoints (#24500) 2026-04-26 23:15:55 +08:00
opencode-agent[bot] 854d4b7a53 chore: generate 2026-04-26 15:13:18 +00:00
Kit Langton aa5999b188 feat(httpapi): bridge workspace mutations (#24483) 2026-04-26 11:12:04 -04:00
opencode-agent[bot] 37c5eab6f8 chore: generate 2026-04-26 14:48:31 +00:00
Kit Langton 6daa2b9aeb feat(httpapi): bridge experimental session list (#24478) 2026-04-26 10:47:24 -04:00
Ariane Emory 5a5a2e5fa0 fix: correct typo in comment (#24420) 2026-04-26 00:26:48 -05:00
opencode-agent[bot] 95c43fc675 chore: update nix node_modules hashes 2026-04-26 05:19:08 +00:00
Aiden Cline e7053c41f4 fix: bump openrouter sdk version to resolve deepseek reasoning issue (bug was in sdk pkg) (#24435) 2026-04-26 00:05:16 -05:00
Dax Raad fc6d4b4010 core: Add User-Agent header to identify client version in HTTP requests 2026-04-25 23:51:23 -04:00
Frank 2893588016 sync 2026-04-25 23:23:48 -04:00
Kit Langton f2d4d816fb test(provider): avoid plugin dependency install timeout (#24416) 2026-04-26 02:11:25 +00:00
opencode-agent[bot] 097d930668 chore: generate 2026-04-26 01:55:57 +00:00
Kit Langton 7cab6824d1 feat(httpapi): bridge experimental tool routes (#24407) 2026-04-25 21:54:58 -04:00
opencode-agent[bot] f77277a69e chore: generate 2026-04-25 23:28:25 +00:00
Kit Langton 450128f9be feat(httpapi): bridge mcp oauth endpoints (#24405) 2026-04-25 19:27:11 -04:00
opencode-agent[bot] 3e35c974a4 chore: generate 2026-04-25 23:17:18 +00:00
Kit Langton a14c22d4e9 feat(httpapi): bridge mcp control endpoints (#24403) 2026-04-25 19:16:19 -04:00
Kit Langton 58c65874ba feat(httpapi): bridge project update endpoint (#24398) 2026-04-25 18:55:49 -04:00
opencode-agent[bot] 27b0877714 chore: generate 2026-04-25 22:43:13 +00:00
Kit Langton 5904f599a9 feat(httpapi): bridge project git init endpoint (#24394) 2026-04-25 18:42:02 -04:00
Kit Langton df9e1d9854 feat(httpapi): bridge config update endpoint (#24387) 2026-04-25 17:52:34 -04:00
opencode-agent[bot] 75a22f82bd chore: generate 2026-04-25 19:36:15 +00:00
Kit Langton a369130226 feat(httpapi): bridge worktree mutations (#24371) 2026-04-25 15:35:15 -04:00
opencode-agent[bot] 474024f9e6 chore: generate 2026-04-25 19:25:41 +00:00
Kit Langton b4f4134e81 feat(httpapi): bridge instance dispose endpoint (#24368) 2026-04-25 15:24:07 -04:00
Kit Langton cd64b67038 feat(tui): show /connect tip when user has no models configured (#24014) 2026-04-25 15:01:41 -04:00
opencode-agent[bot] 9af46df535 chore: generate 2026-04-25 18:56:31 +00:00
Kit Langton b749866f0b feat(httpapi): bridge worktree read endpoint (#24366) 2026-04-25 14:55:29 -04:00
opencode-agent[bot] 60fa708f0b chore: update nix node_modules hashes 2026-04-25 18:49:27 +00:00
opencode-agent[bot] 3b74077437 chore: generate 2026-04-25 18:47:06 +00:00
Kit Langton 95d4bb2130 feat(httpapi): bridge experimental read endpoints (#24365) 2026-04-25 14:46:06 -04:00
Dax Raad f5dce6d960 core: move npm service to core package for shared dependency management 2026-04-25 14:36:15 -04:00
Dax Raad 1e98167b0e core: move cross-spawn-spawner to root and remove unused types
The cross-spawn-spawner module has been moved from src/effect/ to src/
to simplify the core package structure. The src/types.d.ts file which
contained unused type declarations has also been removed. All imports
throughout the codebase have been updated to reflect the new location.

This change reduces the package's internal complexity by flattening the
module hierarchy and removing dead code, making future maintenance easier.
2026-04-25 14:30:16 -04:00
Dax Raad 3eee2f6afa core: move cross-spawn-spawner from opencode to core package
Moved the cross-spawn-spawner module from packages/opencode to packages/core
to enable code sharing across the monorepo. This consolidates the process
spawning infrastructure into the core package so other packages can use
cross-platform child process spawning without duplicating the implementation.

Updated all import statements across the codebase to reference the new
location (@opencode-ai/core/effect/cross-spawn-spawner). Removed the
local copy from the opencode package along with its tests.
2026-04-25 14:23:17 -04:00
opencode-agent[bot] ff4b60e1f3 chore: generate 2026-04-25 18:14:26 +00:00
Aiden Cline f91b73b938 ci: fix model name 2026-04-25 14:13:19 -04:00
Kit Langton 05661c60ff feat(httpapi): bridge file search endpoints (#24356) 2026-04-25 14:12:54 -04:00
Kit Langton 625aca49de feat(tui): read Zed editor context from state db (#24352) 2026-04-25 18:10:58 +00:00
opencode-agent[bot] 3bc0c36ace chore: generate 2026-04-25 18:01:35 +00:00
Kit Langton eb0219988b feat(httpapi): bridge catalog read endpoints (#24353) 2026-04-25 14:00:30 -04:00
Dax Raad 705f792e87 core: move Global module to @opencode-ai/core for centralized path management
Move the Global module from packages/opencode/src/global to packages/core/src/global
to provide a unified location for managing XDG directories and application paths.
This eliminates duplicate path definitions across packages and ensures consistent
access to data, config, cache, state, log, and bin directories throughout the codebase.
2026-04-25 13:52:32 -04:00
Aiden Cline 716cf74190 ci: adjust review flow (#24355) 2026-04-25 13:52:19 -04:00
opencode-agent[bot] fc8dae2422 chore: update nix node_modules hashes 2026-04-25 17:50:26 +00:00
opencode-agent[bot] 27353df0cc chore: generate 2026-04-25 17:31:57 +00:00
Dax Raad 1a734adb4d core: consolidate shared infrastructure into core package
Moves effect logging, observability, runtime utilities, flags, installation
version info, and process utilities from opencode to core package. This
enables better code sharing across packages and establishes core as the
single source of truth for foundational utilities.

All internal imports updated to use @opencode-ai/core paths for consistency.
2026-04-25 13:30:37 -04:00
Kit Langton a9740b9133 fix(config): preserve permission order with Effect decode (#24308) 2026-04-25 13:30:12 -04:00
truffle c1c3af8bf4 fix(cli): include working tree in WorktreeFamily.list for submodules
Inside a git submodule `git worktree list --porcelain` reports the
gitdir (`<repo>/.git/modules/<sub>`) rather than the actual working
tree, so the worktree-family filter for the experimental session
listing endpoint dropped every session whose directory was the real
submodule path. The CLI `kilo session list` was unaffected because
it filters on `project_id` only.

Append `Instance.worktree` to the parsed dirs so the working tree is
always in scope. Normal repos and linked worktrees already include it,
so the [...new Set(...)] dedup keeps those cases unchanged.

Closes #9267
2026-04-25 15:18:06 +00:00
opencode-agent[bot] 62651c7114 chore: update nix node_modules hashes 2026-04-25 15:16:42 +00:00
Dax 1d728fc627 feat: add startup debug command (#24310) 2026-04-25 15:08:19 +00:00
Dax 62ef2a2207 refactor: rename shared package to core (#24309) 2026-04-25 10:59:17 -04:00
Dax 37aa8442dc refactor: remove lazy cross-spawn runtime (#24305) 2026-04-25 14:46:16 +00:00
opencode-agent[bot] 5b0e828c10 chore: generate 2026-04-25 14:43:27 +00:00
Kit Langton d5bfaef53d feat(httpapi): bridge instance read endpoints (#24258) 2026-04-25 10:42:31 -04:00
opencode bad732c26a sync release versions for v1.14.25 2026-04-25 14:37:01 +00:00
Dax Raad 1b92c95425 core: permission config schema now provides full IntelliSense for all tool permission keys
The permission configuration previously used a generic record type that didn't offer editor completions. Updated the schema to explicitly list all tool permission keys (read, edit, glob, grep, list, bash, task, external_directory, lsp, skill, todowrite, question, webfetch, websearch, codesearch, doom_loop) with proper types, enabling autocomplete when editing permission files.
2026-04-25 09:48:09 -04:00
Dax Raad d748c71845 ci: centralize opentui dependencies in workspace catalog
Use catalog references for @opentui/core, @opentui/solid, and opentui-spinner
across packages to ensure consistent versions and simplify updates.
2026-04-25 09:41:30 -04:00
opencode-agent[bot] fc88ed1262 chore: generate 2026-04-25 13:19:42 +00:00
Dax 66f93035b0 fix permission config order (#24222) 2026-04-25 13:18:42 +00:00
Simon Klee 9ff999cc2b tool/lsp: include request details in permission metadata (#24139) 2026-04-25 14:21:35 +02:00
Kit Langton 4877eccc0d Fix shell cwd after login startup (#24215) 2026-04-25 01:14:52 -04:00
Aiden Cline f7d527cd28 ci: adjust auto close issue script to use not planned instead of completed (#24253) 2026-04-25 00:47:36 -04:00
opencode-agent[bot] e29058c346 chore: update nix node_modules hashes 2026-04-25 03:04:44 +00:00
Maddison Hellstrom 49894330d9 fix(build): add prettier to devDependencies (#23255) 2026-04-24 22:47:05 -04:00
Luke Parker cdc7d5f2ea chore: group beta PR logs (#24236) 2026-04-25 10:42:33 +10:00
opencode-agent[bot] ec201623fb chore: generate 2026-04-25 00:34:02 +00:00
Luke Parker 386091b79a fix: validate beta before pushing (#24230) 2026-04-25 10:32:41 +10:00
Luke Parker 1e4b7b5451 Add Roslyn support for Razor and C# scripts (#24228) 2026-04-25 10:25:57 +10:00
opencode-agent[bot] 5cd178ba70 chore: generate 2026-04-24 22:05:23 +00:00
Kit Langton 97eb9fdee8 test(httpapi): cover hono bridge middleware (#24216) 2026-04-24 18:03:51 -04:00
Kit Langton 5a04de231e refactor(ripgrep): migrate result schemas to effect (#24213) 2026-04-24 17:42:52 -04:00
Kyle Altendorf bb3509b5ff fix(opencode): clarify git amend condition to require verifying commit landed (#19937)
Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com>
Co-authored-by: Brendan Allan <14191578+Brendonovich@users.noreply.github.com>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Shoubhit Dash <shoubhit2005@gmail.com>
2026-04-24 17:42:10 -04:00
Aiden Cline 4a67905266 fix: ensure gpt-5.5 compacts at correct context size when using openai oauth (#24212) 2026-04-24 17:39:06 -04:00
opencode-agent[bot] c4e33d3168 chore: generate 2026-04-24 21:38:31 +00:00
Aiden Cline 872cdff2ab ignore: denounce ai spammer 2026-04-24 17:37:28 -04:00
Kit Langton 361d7001d0 Clarify HttpApi migration plan (#24211) 2026-04-24 17:36:49 -04:00
opencode-agent[bot] 7a02eee0f4 chore: generate 2026-04-24 21:13:00 +00:00
Kit Langton cf45a8d807 refactor(schema): decode effect schemas directly (#24169) 2026-04-24 17:11:52 -04:00
Kit Langton 435becbea0 Refactor HttpApi auth middleware wiring (#24168) 2026-04-24 17:11:07 -04:00
kirillk 9a0419d1b1 refactor(jetbrains): polish session ui naming 2026-04-24 15:07:17 -04:00
kirillk a63d77a4f7 refactor: streamline jetbrains session UI and tests
Keep SessionUi construction phased and align the session test tree with the production package layout so the UI and update flow are easier to navigate. Also pin Kotlin editorconfig defaults so IDE formatting matches repo expectations.
2026-04-24 15:04:54 -04:00
Frank 0405bc74e9 zen: gpt-5.5 2026-04-24 14:57:23 -04:00
Frank 4dab2a8555 zen: gpt-5.5 2026-04-24 14:43:04 -04:00
Frank 3776d85e15 zen: gpt-5.5 2026-04-24 14:39:24 -04:00
kirillk bb5ddee221 refactor(jetbrains): isolate session update and layout helpers
Move controller queue types into a dedicated update package and extract the generic layered root so SessionUi can stay focused on composition. Rename the message list panel to match its role and keep the queue condenser with the update flow.
2026-04-24 14:13:05 -04:00
Frank d01ad4c499 zen: gpt-5.5 2026-04-24 14:05:29 -04:00
kirillk 16c93d2d1a refactor(jetbrains): move busy state logic into model 2026-04-24 12:57:15 -04:00
kirillk 417aae4e55 fix(jetbrains): overlay connection status above prompt 2026-04-24 12:49:16 -04:00
opencode 28025a0f36 sync release versions for v1.14.24 2026-04-24 15:53:03 +00:00
opencode-agent[bot] 1220f784fe chore: generate 2026-04-24 15:48:08 +00:00
Frank 28f7d31e72 zen: deepseek v4 pro 2026-04-24 11:46:01 -04:00
opencode-agent[bot] 66936b0fff chore: update nix node_modules hashes 2026-04-24 15:45:10 +00:00
Sebastian 3a5507de95 Use OpenTUI theme detection for initial TUI mode, again (#23846) 2026-04-24 17:28:07 +02:00
Aiden Cline 86715fecc4 fix: ensure assistant messages always have reasoning on them for deepseek (#24180) 2026-04-24 11:10:47 -04:00
07akioni 3062d3e070 fix: use existingModel as fallback for interleaved field (#24172) 2026-04-24 10:41:41 -04:00
opencode-agent[bot] d89bfc32ac chore: generate 2026-04-24 13:20:23 +00:00
Kit Langton 011c23761b feat(httpapi): bridge mcp status endpoint (#24100) 2026-04-24 09:18:57 -04:00
opencode a8c8d2dd79 sync release versions for v1.14.23 2026-04-24 13:17:13 +00:00
Kit Langton 9f7ecd65e5 feat(httpapi): bridge file read endpoints (#24098) 2026-04-24 09:12:05 -04:00
truffle 778e9475ce fix(vscode): honor http.proxySupport=off by clearing env vars
VS Code's `http.proxySupport: "off"` is the documented opt-in to disable
proxy support entirely. The previous patch returned an empty object in
that case, so the spawned child still inherited ambient shell HTTP_PROXY.

Explicitly set HTTP_PROXY/HTTPS_PROXY/NO_PROXY to "" when proxySupport is
off, and short-circuit before reading `http.proxy` / `http.noProxy` so
the disable setting wins. Two regression tests.
2026-04-24 07:04:45 +00:00
truffle b05bed25f9 fix(vscode): forward VS Code http.proxy settings to spawned CLI process
VS Code's http.proxy and http.noProxy settings are not reflected in
process.env, so the CLI server spawned by ServerManager inherits no
proxy configuration. Users behind a corporate proxy see silent auth
failures on the Providers tab and all LLM calls bypass the proxy.

Translate the settings via a small buildProxyEnv() helper and spread
them into the spawn env after process.env (so the VS Code setting
wins when both are present). The standard HTTP_PROXY / HTTPS_PROXY /
NO_PROXY env vars are already honored by Bun's fetch and by most HTTP
clients the CLI reaches for.

Fixes #8213.
2026-04-24 05:11:56 +00:00
kirillk f95d67bab4 fix(jetbrains): simplify session loading panels 2026-04-23 16:35:33 -04:00
kiloconnect[bot] ce4a595cdc fix(vscode): dispose autocomplete context listener 2026-04-21 11:50:02 +00:00
Alex Gold 1fc37c1cd0 Merge branch 'main' into docs/kiloclaw-setting-up-other-tools 2026-04-20 17:05:01 -04:00
Alex Gold 0353f6b822 Fix brackets 2026-04-20 17:04:03 -04:00
Alex Gold 338eecf242 Updates 2026-04-20 16:52:19 -04:00
Sylwester Liljegren 96f5241aa1 feat(install): add Windows PATH persistence via registry
Add support for persistently adding the install directory to the Windows user PATH via the registry. This works from Git Bash (MINGW64), MSYS2, and Cygwin, converting paths appropriately and using PowerShell to modify the registry. Also adds to the current session's PATH for immediate use.
2026-04-20 14:23:29 +02:00
sylwester-liljegren 9421c29ff2 Merge pull request #1 from Kilo-Org/main
sync to main
2026-04-19 21:34:09 +03:00
Alex Gold 21baf77836 Apply suggestions from code review
Co-authored-by: Alex Gold <alex.gold@kilocode.ai>
2026-04-17 14:15:40 -04:00
Alex Gold 5e7b7dfbdd Rename setting-up-other-tools.md to other-tools.md 2026-04-17 13:47:49 -04:00
Alex Gold 0f7b16e51b Apply suggestion from @alexkgold 2026-04-17 13:47:37 -04:00
Alex Gold acd294e097 Apply suggestion from @alexkgold 2026-04-17 13:47:20 -04:00
Alex Gold fa2180bbfc Update packages/kilo-docs/pages/kiloclaw/tools/setting-up-other-tools.md
Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>
2026-04-17 12:24:39 -04:00
Alex Gold 1d2e1a2ca0 Merge branch 'main' into docs/kiloclaw-setting-up-other-tools 2026-04-17 12:19:45 -04:00
Alex Gold 934f1409c3 Update packages/kilo-docs/pages/kiloclaw/tools/setting-up-other-tools.md 2026-04-17 12:19:36 -04:00
Alex Gold ba4b581294 Manual AKG edits
Updated the document to reflect changes in terminology and added instructions for configuring 1Password with the KiloClaw agent.
2026-04-17 12:16:31 -04:00
kiloconnect[bot] 6e2515c232 docs(kilo-docs): add Setting Up Other Tools page for KiloClaw 2026-04-17 13:59:44 +00:00
scuttlebot da67f891ae docs: update new_task limitations and KiloClaw default model
- Add note that subagents cannot spawn further subagents (#8644)
- Document that new KiloClaw instances default to Kilo Auto Balanced (#2236)
2026-04-09 19:31:10 +00:00
Conny Brunnkvist 6be192ea8d fix(cli): reject non-positive --timeout in roll-call 2026-04-08 13:18:37 +07:00
Conny Brunnkvist 1536addc5b fix(cli): escape pipes in markdown output and exit non-zero on bad regex
Escape | in markdown table cells to prevent broken rows. Add
process.exitCode = 1 on the invalid regex path.
2026-04-08 13:18:37 +07:00
Conny Brunnkvist aa0f60f0b4 feat(cli): add markdown output mode and fix quiet/json interaction
JSON and md modes emit clean data to stdout with no decoration.
--quiet now only suppresses progress, never the result output.
Add formatMarkdown and tests.
2026-04-08 13:18:37 +07:00
Conny Brunnkvist 81cc9f9579 fix(cli): also require text input capability in roll-call model filter
Extract isTextModel predicate and add tests covering multimodal,
audio-only, image-only, and embedding models.
2026-04-08 13:18:37 +07:00
Conny Brunnkvist 6b96343457 fix(cli): exit non-zero when roll-call fails to test any models 2026-04-08 13:18:37 +07:00
Conny Brunnkvist 658355ee74 fix(cli): clarify roll-call tests text models only 2026-04-08 13:18:37 +07:00
Conny Brunnkvist 5be559ff4d fix(cli): skip non-text models in roll-call
Filter out models without text output capability (e.g. embeddings,
image-only) since generateText is the wrong probe for them and would
produce false negatives.
2026-04-08 13:18:37 +07:00
Conny Brunnkvist f9eb217e7a fix(cli): validate --parallel and filter args in roll-call command
Reject non-positive --parallel values that would cause the scheduler to
spin forever, and reject empty filter strings that would bypass the
safety guard and fan out to every configured model.
2026-04-08 13:18:37 +07:00
Conny Brunnkvist f4141a3c94 feat(cli): add roll-call command for batch-testing model connectivity
Adds a new CLI command that allows users to test multiple models for
connectivity and latency in parallel. This helps users discover which
provider/model pairs are available and working.

Features:
- Filter models by regex pattern (e.g., 'kilo roll-call "free"')
- Configurable prompt, timeout, and parallelization
- JSON or table output formats
- Verbose mode for real-time progress

Closes Kilo-Org/kilocode#6304
2026-04-08 13:18:37 +07:00
VastCosmic b809d9e283 Merge branch 'main' into fix/openai-compat-reasoning-params 2026-04-03 17:45:40 +08:00
VastCosmic 9889458d93 fix: gate OpenAI Responses API params for openai-compatible providers
Closes #8261

reasoningSummary and textVerbosity are OpenAI Responses API parameters
unsupported by generic openai-compatible endpoints. Adds
supportsOpenAIResponsesParams() to gate them by model.api.npm.
reasoningEffort remains universal.
2026-04-03 17:04:36 +08:00
Santiago Sainz 2c547be050 fix(vscode): preserve agent override clear semantics 2026-03-27 21:47:41 -06:00
Santiago Sainz 85ecae8f6f test(vscode): cover default agent clear paths
Follow-up hardening for #7835
2026-03-27 21:31:49 -06:00
Santiago Sainz 1d2124c344 fix(sdk): sync default agent nullability
Follow-up for #7835 bot review
2026-03-27 20:48:13 -06:00
Santiago Sainz c9152865da fix(vscode): allow clearing default agent
Follow-up for #7833
2026-03-27 16:30:02 -06:00
Santiago Sainz 09a4441f9f fix(vscode): persist false agent toggle values
Refs #7833
2026-03-27 16:22:20 -06:00
5027 changed files with 576309 additions and 256510 deletions
+7
View File
@@ -0,0 +1,7 @@
---
"@kilocode/cli": minor
"@kilocode/kilo-gateway": minor
"kilo-code": minor
---
Show a BYOK badge for Kilo Gateway models that can use an enabled personal or organization provider key.
+5
View File
@@ -0,0 +1,5 @@
---
"kilo-code": patch
---
Describe custom providers independently of their selected API protocol.
@@ -0,0 +1,6 @@
---
"@kilocode/cli": patch
"@kilocode/kilo-gateway": patch
---
Deny provider data collection for Kilo Gateway requests when prompt-training models are hidden.
@@ -0,0 +1,5 @@
---
"@kilocode/cli": patch
---
Add a privacy filter to the Console model explorer that hides Kilo Gateway models whose providers may use prompts for training.
+5
View File
@@ -0,0 +1,5 @@
---
"@kilocode/cli": patch
---
Show docs URL in dialog when no display server is detected on headless Linux systems
+5
View File
@@ -0,0 +1,5 @@
---
"@kilocode/cli": patch
---
Show the docs URL in an alert dialog when the browser cannot be opened on headless systems instead of silently failing.
@@ -0,0 +1,6 @@
---
"@kilocode/cli": patch
"kilo-code": patch
---
Hide reverted provider errors so Redo controls remain visible after rewinding a session.
@@ -0,0 +1,5 @@
---
"kilo-code": patch
---
Keep changed identifiers intact when highlighting edits within diff lines.
@@ -1,5 +0,0 @@
---
"kilo-code": patch
---
Show apply_patch diffs in the permission prompt before approval.
+7
View File
@@ -0,0 +1,7 @@
---
"@kilocode/cli": patch
"@kilocode/sdk": patch
"kilo-code": patch
---
Limit completion sounds to parent agent sessions.
+5
View File
@@ -0,0 +1,5 @@
---
"kilo-code": patch
---
Avoid failing Agent Manager startup when another extension already registered VS Code panel commands.
+5
View File
@@ -0,0 +1,5 @@
---
"kilo-code": patch
---
Keep chat output updating after reverting and resubmitting a prompt.
@@ -0,0 +1,5 @@
---
"kilo-code": patch
---
Prevent concurrent subagent updates from blanking the Agent Manager webview.
+5
View File
@@ -0,0 +1,5 @@
---
"kilo-code": patch
---
Speed up Agent Manager worktree hover cards so pull request details appear and dismiss more quickly.
+5
View File
@@ -0,0 +1,5 @@
---
"kilo-code": patch
---
Widen the chat readable lane from 88ch to 98ch so conversations, tools, and diffs can use more editor space.
+5
View File
@@ -7,3 +7,8 @@ end_of_line = lf
indent_style = space
indent_size = 2
max_line_length = 80
[*.{kt,kts}]
indent_size = 4
tab_width = 4
ij_kotlin_code_style_defaults = KOTLIN_OFFICIAL
+11 -3
View File
@@ -23,7 +23,7 @@ runs:
fi
- name: Setup Bun
uses: oven-sh/setup-bun@v2
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version-file: ${{ !steps.bun-url.outputs.url && 'package.json' || '' }}
bun-download-url: ${{ steps.bun-url.outputs.url }}
@@ -33,8 +33,9 @@ runs:
shell: bash
run: echo "dir=$(bun pm cache)" >> "$GITHUB_OUTPUT"
- name: Cache Bun dependencies
uses: actions/cache@v4
- name: Restore Bun dependencies
id: bun-cache
uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: ${{ steps.cache.outputs.dir }}
key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }}
@@ -56,3 +57,10 @@ runs:
bun install ${{ inputs.install-flags }}
fi
shell: bash
- name: Save Bun dependencies
if: steps.bun-cache.outputs.cache-hit != 'true' && github.event_name != 'pull_request' && github.event_name != 'pull_request_target'
uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: ${{ steps.cache.outputs.dir }}
key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }}
+10 -1
View File
@@ -21,7 +21,7 @@ runs:
steps:
- name: Create app token
id: apptoken
uses: actions/create-github-app-token@v2
uses: actions/create-github-app-token@fee1f7d63c2ff003460e3d139729b119787bc349 # v2.2.2
with:
# kilocode_change start
app-id: ${{ inputs['kilo-maintainer-app-id'] }}
@@ -39,6 +39,15 @@ runs:
- name: Clear checkout auth
run: |
git config --local --unset-all http.https://github.com/.extraheader || true
# kilocode_change start
keys="$(git config --local --name-only --get-regexp '^includeIf\.gitdir:' || true)"
for key in $keys; do
path="$(git config --local --get "$key" || true)"
case "$path" in
*git-credentials-*.config) git config --local --unset-all "$key" || true ;;
esac
done
# kilocode_change end
shell: bash
- name: Configure git remote
+12
View File
@@ -0,0 +1,12 @@
# kilocode_change - new file
name: Critical-only CodeQL config
query-filters:
- include:
kind:
- problem
- path-problem
- alert
- path-alert
tags contain: security
security-severity: /^(9(\.[0-9])?|10(\.0)?)$/
+50 -11
View File
@@ -1,3 +1,9 @@
## Issue
<!-- Reference an existing issue with `Fixes #123`, `Closes #123`, or equivalent linked issue wording. -->
Fixes #
## Context
<!-- Brief description of WHAT youre doing and WHY. -->
@@ -6,11 +12,13 @@
<!--
Some description of HOW you achieved it. Perhaps give a high level description of the program flow. Did you need to refactor something? What tradeoffs did you take? Are there things in here which youd particularly like people to pay close attention to?
Some description of HOW you achieved it. Perhaps give a high level description of the program flow. Did you need to refactor something? What tradeoffs did you take? Are there things in here which youd particularly like people to pay close attention to? Keep this focused on context reviewers cannot infer from the diff; skip file-by-file summaries, placeholders, and other filler.
-->
## Screenshots
## Screenshots / Video
<!-- Required for visual changes. Include the relevant before/after or resulting state. -->
| before | after |
|---|---|
@@ -18,18 +26,49 @@ Some description of HOW you achieved it. Perhaps give a high level description o
## How to Test
### Manual/local verification
<!--
A straightforward scenario of how to test your changes will help reviewers that are not familiar with the part of the code that you are changing but want to see it in action. This section can include a description or step-by-step instructions of how to get to the state of v2 that your change affects.
A "How To Test" section can look something like this:
- Sign in with a user with tracks
- Activate `show_awesome_cat_gifs` feature (add `?feature.show_awesome_cat_gifs=1` to your URL)
- You should see a GIF with cats dancing
Describe local CLI, extension, or docs verification. Example:
- Opened the updated settings page and confirmed the new copy appears
-->
-
### Reviewer test steps
<!--
Provide steps reviewers can retrace. Example:
1. Sign in with a user with tracks
2. Activate `show_awesome_cat_gifs` feature by adding `?feature.show_awesome_cat_gifs=1` to your URL
3. Confirm you see a GIF with cats dancing
-->
-
### Blocked checks and substitute verification
<!--
If a relevant command could not be completed, name the command, explain the blocker or failure, and describe the substitute verification performed. Example:
- `bun run test:integration` could not complete because the required API key is unavailable; substitute verification was testing the affected flow manually in the development extension
-->
-
<!--
Every PR marked ready for review must include testing evidence. A bare "Not tested" or "N/A" answer is not sufficient. For each piece of evidence make clear if the test was executed by the agent or by a human
Docs-only, config-only, and similar changes still need concrete evidence. For examples, see [Testing Evidence for Pull Requests](https://kilo.ai/docs/contributing/development-environment#testing-evidence-for-pull-requests). Draft PRs may be incomplete until marked ready for review.
-->
## Checklist
- [ ] Issue linked above, or exception explained
- [ ] Tests/verification described
- [ ] Screenshots/video included for visual changes, or marked N/A
- [ ] Changeset considered for user-facing changes
- [ ] I personally reviewed the diff and can explain the changes, including any AI-assisted work.
## Get in Touch
<!-- We'd love to have a way to chat with you about your changes if necessary. If you're in the [Kilo Code Discord](https://kilo.ai/discord), please share your handle here. -->
+100 -22
View File
@@ -1,35 +1,113 @@
name: Trigger webhook for feat PRs
name: Auto-docs dry-run intake
# Trigger on merged feature PRs, or manually with a specific PR number.
# IMPORTANT: This workflow intentionally does NOT check out PR code and does NOT
# execute any code from the PR branch. It only reads PR metadata and forwards it
# to a webhook. This is required for safe use of pull_request_target on a public repo.
on:
pull_request:
pull_request_target:
types: [closed]
workflow_dispatch:
inputs:
pr_number:
description: "PR number to test"
required: true
# Minimal permissions: read repo contents and PR metadata only.
permissions:
contents: read
pull-requests: read
# One run per PR at a time. Does not cancel in progress — let the current run
# finish so we don't drop events when a PR is quickly closed/reopened/closed.
concurrency:
group: auto-docs-${{ github.event.pull_request.number || inputs.pr_number }}
cancel-in-progress: false
jobs:
call-webhook:
call-valtown:
if: >
github.event.pull_request.merged == true &&
(startsWith(github.event.pull_request.title, 'feat:') ||
startsWith(github.event.pull_request.title, 'feat('))
github.event_name == 'workflow_dispatch' ||
(
github.event.pull_request.merged == true &&
(
startsWith(github.event.pull_request.title, 'feat:') ||
startsWith(github.event.pull_request.title, 'feat(')
)
)
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Send webhook safely
- name: Build webhook payload
env:
GH_TOKEN: ${{ github.token }}
EVENT_NAME: ${{ github.event_name }}
REPO: ${{ github.repository }}
PR_NUMBER_FROM_EVENT: ${{ github.event.pull_request.number }}
PR_NUMBER_FROM_INPUT: ${{ inputs.pr_number }}
run: |
payload=$(jq -n \
--arg repo "${GITHUB_REPOSITORY}" \
--arg pr_number "${{ github.event.pull_request.number }}" \
--arg title "${{ github.event.pull_request.title }}" \
--arg body "${{ github.event.pull_request.body }}" \
--arg author "${{ github.event.pull_request.user.login }}" \
--arg merged_at "${{ github.event.pull_request.merged_at }}" \
set -euo pipefail
PR_NUMBER="${PR_NUMBER_FROM_EVENT:-$PR_NUMBER_FROM_INPUT}"
if [ -z "$PR_NUMBER" ]; then
echo "Missing PR number"
exit 1
fi
gh api "repos/$REPO/pulls/$PR_NUMBER" > pr.json
jq -n \
--arg event_name "$EVENT_NAME" \
--arg repo "$REPO" \
--arg pr_number "$PR_NUMBER" \
--slurpfile pr pr.json \
'{
event_name: $event_name,
repo: $repo,
pr_number: $pr_number,
title: $title,
description: $body,
author: $author,
merged_at: $merged_at
}'
)
curl --fail-with-body -X POST "${{ secrets.DOC_WEBHOOK_URL }}" \
title: $pr[0].title,
description: ($pr[0].body // ""),
author: $pr[0].user.login,
merged_at: ($pr[0].merged_at // ""),
pr_url: $pr[0].html_url,
base_branch: $pr[0].base.ref,
head_branch: $pr[0].head.ref
}' > payload.json
echo "Payload created:"
jq '{
event_name,
repo,
pr_number,
title,
author,
merged_at,
pr_url,
base_branch,
head_branch
}' payload.json
- name: Send webhook to Val Town
env:
DOC_WEBHOOK_URL: ${{ secrets.DOC_WEBHOOK_URL }}
DOC_WEBHOOK_SECRET: ${{ secrets.DOC_WEBHOOK_SECRET }}
run: |
set -euo pipefail
if [ -z "${DOC_WEBHOOK_URL:-}" ]; then
echo "DOC_WEBHOOK_URL secret is not set"
exit 1
fi
if [ -z "${DOC_WEBHOOK_SECRET:-}" ]; then
echo "DOC_WEBHOOK_SECRET secret is not set"
exit 1
fi
curl --fail-with-body -sS -X POST "$DOC_WEBHOOK_URL" \
-H "Content-Type: application/json" \
--data-raw "$payload"
-H "X-Docs-Webhook-Secret: $DOC_WEBHOOK_SECRET" \
--data-binary @payload.json
+2 -1
View File
@@ -14,8 +14,9 @@ jobs:
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6 # kilocode_change
with:
persist-credentials: false # kilocode_change
fetch-depth: 0
- name: Setup Bun
@@ -0,0 +1,21 @@
# kilocode_change - new file
name: Check forbidden strings
on:
pull_request:
workflow_dispatch:
jobs:
check:
name: Check forbidden strings
if: github.repository == 'Kilo-Org/kilocode'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6 # kilocode_change
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
- uses: oven-sh/setup-bun@v2
- name: Run check
run: bun run script/check-forbidden-strings.ts
@@ -0,0 +1,27 @@
# kilocode_change - new file
name: Check Kilo generated artifacts
on:
pull_request:
paths:
- ".gitignore"
- ".github/workflows/check-kilo-generated-artifacts.yml"
- ".kilo/**"
- ".kilocode/**"
- "script/check-kilo-generated-artifacts.ts"
workflow_dispatch:
jobs:
check:
name: Check Kilo generated artifacts
if: github.repository == 'Kilo-Org/kilocode'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6 # kilocode_change
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
- uses: oven-sh/setup-bun@v2
- name: Run check
run: bun run script/check-kilo-generated-artifacts.ts
+1 -1
View File
@@ -14,7 +14,7 @@ jobs:
if: github.repository == 'Kilo-Org/kilocode'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6 # kilocode_change
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
@@ -5,10 +5,6 @@ on:
paths:
- ".github/**"
- "github/**"
- "sdks/vscode/**"
- "packages/app/**"
- "packages/desktop/**"
- "packages/desktop-electron/**"
- "packages/extensions/**"
- "packages/opencode/**"
- "packages/script/**"
@@ -24,7 +20,7 @@ jobs:
if: github.repository == 'Kilo-Org/kilocode'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6 # kilocode_change
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
fetch-depth: 0
@@ -40,3 +36,11 @@ jobs:
else
echo "No PR base SHA available (workflow_dispatch without PR context) — skipping."
fi
# kilocode_change start
- name: Check Effect Promise facade allowlist
run: bun run script/check-opencode-promise-facades.ts
- name: Check workflow allowlist
run: bun run script/check-workflows.ts
# kilocode_change end
-24
View File
@@ -1,24 +0,0 @@
name: close-issues
on:
schedule:
- cron: "0 2 * * *" # Daily at 2:00 AM
workflow_dispatch:
jobs:
close:
runs-on: ubuntu-latest
permissions:
contents: read
issues: write
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Close stale issues
env:
GITHUB_TOKEN: ${{ github.token }}
run: bun script/github/close-issues.ts
-236
View File
@@ -1,236 +0,0 @@
name: close-stale-prs # kilocode_change
on:
workflow_dispatch:
inputs:
dryRun:
description: "Log actions without closing PRs"
type: boolean
default: false
schedule:
- cron: "0 6 * * *"
permissions:
contents: read
issues: write
pull-requests: write
jobs:
close-stale-prs:
if: github.repository == 'Kilo-Org/kilocode'
runs-on: blacksmith-2vcpu-ubuntu-2404 # kilocode_change
timeout-minutes: 15
steps:
- name: Close inactive PRs
uses: actions/github-script@v8
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const DAYS_INACTIVE = 60
const MAX_RETRIES = 3
// Adaptive delay: fast for small batches, slower for large to respect
// GitHub's 80 content-generating requests/minute limit
const SMALL_BATCH_THRESHOLD = 10
const SMALL_BATCH_DELAY_MS = 1000 // 1s for daily operations (≤10 PRs)
const LARGE_BATCH_DELAY_MS = 2000 // 2s for backlog (>10 PRs) = ~30 ops/min, well under 80 limit
const startTime = Date.now()
const cutoff = new Date(Date.now() - DAYS_INACTIVE * 24 * 60 * 60 * 1000)
const { owner, repo } = context.repo
const dryRun = context.payload.inputs?.dryRun === "true"
core.info(`Dry run mode: ${dryRun}`)
core.info(`Cutoff date: ${cutoff.toISOString()}`)
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms))
}
async function withRetry(fn, description = 'API call') {
let lastError
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
try {
const result = await fn()
return result
} catch (error) {
lastError = error
const isRateLimited = error.status === 403 &&
(error.message?.includes('rate limit') || error.message?.includes('secondary'))
if (!isRateLimited) {
throw error
}
// Parse retry-after header, default to 60 seconds
const retryAfter = error.response?.headers?.['retry-after']
? parseInt(error.response.headers['retry-after'])
: 60
// Exponential backoff: retryAfter * 2^attempt
const backoffMs = retryAfter * 1000 * Math.pow(2, attempt)
core.warning(`${description}: Rate limited (attempt ${attempt + 1}/${MAX_RETRIES}). Waiting ${backoffMs / 1000}s before retry...`)
await sleep(backoffMs)
}
}
core.error(`${description}: Max retries (${MAX_RETRIES}) exceeded`)
throw lastError
}
const query = `
query($owner: String!, $repo: String!, $cursor: String) {
repository(owner: $owner, name: $repo) {
pullRequests(first: 100, states: OPEN, after: $cursor) {
pageInfo {
hasNextPage
endCursor
}
nodes {
number
title
author {
login
}
createdAt
commits(last: 1) {
nodes {
commit {
committedDate
}
}
}
comments(last: 1) {
nodes {
createdAt
}
}
reviews(last: 1) {
nodes {
createdAt
}
}
}
}
}
}
`
const allPrs = []
let cursor = null
let hasNextPage = true
let pageCount = 0
while (hasNextPage) {
pageCount++
core.info(`Fetching page ${pageCount} of open PRs...`)
const result = await withRetry(
() => github.graphql(query, { owner, repo, cursor }),
`GraphQL page ${pageCount}`
)
allPrs.push(...result.repository.pullRequests.nodes)
hasNextPage = result.repository.pullRequests.pageInfo.hasNextPage
cursor = result.repository.pullRequests.pageInfo.endCursor
core.info(`Page ${pageCount}: fetched ${result.repository.pullRequests.nodes.length} PRs (total: ${allPrs.length})`)
// Delay between pagination requests (use small batch delay for reads)
if (hasNextPage) {
await sleep(SMALL_BATCH_DELAY_MS)
}
}
core.info(`Found ${allPrs.length} open pull requests`)
const stalePrs = allPrs.filter((pr) => {
const dates = [
new Date(pr.createdAt),
pr.commits.nodes[0] ? new Date(pr.commits.nodes[0].commit.committedDate) : null,
pr.comments.nodes[0] ? new Date(pr.comments.nodes[0].createdAt) : null,
pr.reviews.nodes[0] ? new Date(pr.reviews.nodes[0].createdAt) : null,
].filter((d) => d !== null)
const lastActivity = dates.sort((a, b) => b.getTime() - a.getTime())[0]
if (!lastActivity || lastActivity > cutoff) {
core.info(`PR #${pr.number} is fresh (last activity: ${lastActivity?.toISOString() || "unknown"})`)
return false
}
core.info(`PR #${pr.number} is STALE (last activity: ${lastActivity.toISOString()})`)
return true
})
if (!stalePrs.length) {
core.info("No stale pull requests found.")
return
}
core.info(`Found ${stalePrs.length} stale pull requests`)
// ============================================
// Close stale PRs
// ============================================
const requestDelayMs = stalePrs.length > SMALL_BATCH_THRESHOLD
? LARGE_BATCH_DELAY_MS
: SMALL_BATCH_DELAY_MS
core.info(`Using ${requestDelayMs}ms delay between operations (${stalePrs.length > SMALL_BATCH_THRESHOLD ? 'large' : 'small'} batch mode)`)
let closedCount = 0
let skippedCount = 0
for (const pr of stalePrs) {
const issue_number = pr.number
const closeComment = `Closing this pull request because it has had no updates for more than ${DAYS_INACTIVE} days. If you plan to continue working on it, feel free to reopen or open a new PR.`
if (dryRun) {
core.info(`[dry-run] Would close PR #${issue_number} from ${pr.author?.login || 'unknown'}: ${pr.title}`)
continue
}
try {
// Add comment
await withRetry(
() => github.rest.issues.createComment({
owner,
repo,
issue_number,
body: closeComment,
}),
`Comment on PR #${issue_number}`
)
// Close PR
await withRetry(
() => github.rest.pulls.update({
owner,
repo,
pull_number: issue_number,
state: "closed",
}),
`Close PR #${issue_number}`
)
closedCount++
core.info(`Closed PR #${issue_number} from ${pr.author?.login || 'unknown'}: ${pr.title}`)
// Delay before processing next PR
await sleep(requestDelayMs)
} catch (error) {
skippedCount++
core.error(`Failed to close PR #${issue_number}: ${error.message}`)
}
}
const elapsed = Math.round((Date.now() - startTime) / 1000)
core.info(`\n========== Summary ==========`)
core.info(`Total open PRs found: ${allPrs.length}`)
core.info(`Stale PRs identified: ${stalePrs.length}`)
core.info(`PRs closed: ${closedCount}`)
core.info(`PRs skipped (errors): ${skippedCount}`)
core.info(`Elapsed time: ${elapsed}s`)
core.info(`=============================`)
+62
View File
@@ -0,0 +1,62 @@
# kilocode_change - new file
name: "CodeQL Kotlin"
on:
push:
branches: ["main"]
paths:
- "packages/kilo-jetbrains/**"
- ".github/workflows/codeql-kotlin.yml"
pull_request:
branches: ["main"]
paths:
- "packages/kilo-jetbrains/**"
- ".github/workflows/codeql-kotlin.yml"
schedule:
- cron: "29 10 * * 5"
workflow_dispatch:
jobs:
analyze:
name: Analyze (java-kotlin)
runs-on: ubuntu-latest
permissions:
security-events: write
packages: read
actions: read
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Setup Bun
uses: ./.github/actions/setup-bun
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "21"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-read-only: ${{ github.ref != 'refs/heads/main' }}
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: java-kotlin
build-mode: manual
config-file: ./.github/codeql/codeql-config.yml
- name: Build Java/Kotlin
shell: bash
run: ./gradlew typecheck --rerun-tasks --no-build-cache
working-directory: packages/kilo-jetbrains
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
with:
category: "/language:java-kotlin"
+81
View File
@@ -0,0 +1,81 @@
# kilocode_change - new file
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL Advanced"
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
schedule:
- cron: "29 10 * * 5"
workflow_dispatch:
jobs:
analyze:
name: Analyze (${{ matrix.language }})
# Runner size impacts CodeQL analysis time. To learn more, please see:
# - https://gh.io/recommended-hardware-resources-for-running-codeql
# - https://gh.io/supported-runners-and-hardware-resources
# - https://gh.io/using-larger-runners (GitHub.com only)
# Consider using larger runners or machines with greater resources for possible analysis time improvements.
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
permissions:
# required for all workflows
security-events: write
# required to fetch internal or private CodeQL packs
packages: read
# only required for workflows in private repositories
actions: read
contents: read
strategy:
fail-fast: false
matrix:
include:
- language: actions
build-mode: none
- language: javascript-typescript
build-mode: none
# CodeQL supports the following values keywords for 'language': 'actions', 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'rust', 'swift'
# Use `c-cpp` to analyze code written in C, C++ or both
# Use 'java-kotlin' to analyze code written in Java, Kotlin or both
# Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
# To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
# see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
# If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
steps:
- name: Checkout repository
uses: actions/checkout@v6
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
config-file: ./.github/codeql/codeql-config.yml
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
with:
category: "/language:${{matrix.language}}"
-96
View File
@@ -1,96 +0,0 @@
name: compliance-close
on:
schedule:
# Run every 30 minutes to check for expired compliance windows
- cron: "*/30 * * * *"
workflow_dispatch:
permissions:
contents: read
issues: write
pull-requests: write
jobs:
close-non-compliant:
if: github.repository == 'Kilo-Org/kilocode' && false # kilocode_change - disabled: not needed in kilocode repo
runs-on: ubuntu-latest
steps:
- name: Close non-compliant issues and PRs after 2 hours
uses: actions/github-script@v7
with:
script: |
const { data: items } = await github.rest.issues.listForRepo({
owner: context.repo.owner,
repo: context.repo.repo,
labels: 'needs:compliance',
state: 'open',
per_page: 100,
});
if (items.length === 0) {
core.info('No open issues/PRs with needs:compliance label');
return;
}
const now = Date.now();
const twoHours = 2 * 60 * 60 * 1000;
for (const item of items) {
const isPR = !!item.pull_request;
const kind = isPR ? 'PR' : 'issue';
const { data: comments } = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: item.number,
});
const complianceComment = comments.find(c => c.body.includes('<!-- issue-compliance -->'));
if (!complianceComment) continue;
const commentAge = now - new Date(complianceComment.created_at).getTime();
if (commentAge < twoHours) {
core.info(`${kind} #${item.number} still within 2-hour window (${Math.round(commentAge / 60000)}m elapsed)`);
continue;
}
const closeMessage = isPR
? 'This pull request has been automatically closed because it was not updated to meet our [contributing guidelines](../blob/dev/CONTRIBUTING.md) within the 2-hour window.\n\nFeel free to open a new pull request that follows our guidelines.'
: 'This issue has been automatically closed because it was not updated to meet our [contributing guidelines](../blob/dev/CONTRIBUTING.md) within the 2-hour window.\n\nFeel free to open a new issue that follows our issue templates.';
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: item.number,
body: closeMessage,
});
try {
await github.rest.issues.removeLabel({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: item.number,
name: 'needs:compliance',
});
} catch (e) {}
if (isPR) {
await github.rest.pulls.update({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: item.number,
state: 'closed',
});
} else {
await github.rest.issues.update({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: item.number,
state: 'closed',
state_reason: 'not_planned',
});
}
core.info(`Closed non-compliant ${kind} #${item.number} after 2-hour window`);
}
+5 -5
View File
@@ -3,7 +3,7 @@ name: containers
on:
push:
branches:
- dev
- main # kilocode_change
paths:
- packages/containers/**
- .github/workflows/containers.yml
@@ -26,18 +26,18 @@ jobs:
OWNER: ${{ github.repository_owner }}
# kilocode_change end
- uses: actions/checkout@v4
- uses: actions/checkout@v6 # kilocode_change
- uses: ./.github/actions/setup-bun
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0
- name: Login to GHCR
uses: docker/login-action@v3
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
-173
View File
@@ -1,173 +0,0 @@
name: daily-issues-recap
on:
schedule:
# Run at 6 PM EST (23:00 UTC, or 22:00 UTC during daylight saving)
- cron: "0 23 * * *"
workflow_dispatch: # Allow manual trigger for testing
jobs:
daily-recap:
# kilocode_change start - disabled for kilo-cli fork (OpenCode Discord integration)
if: false
# kilocode_change end
runs-on: blacksmith-4vcpu-ubuntu-2404
permissions:
contents: read
issues: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: ./.github/actions/setup-bun
- name: Install opencode
run: curl -fsSL https://opencode.ai/install | bash
- name: Generate daily issues recap
id: recap
env:
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
KILO_PERMISSION: |
{
"bash": {
"*": "deny",
"gh issue*": "allow",
"gh search*": "allow"
},
"webfetch": "deny",
"edit": "deny",
"write": "deny"
}
run: |
# Get today's date range
TODAY=$(date -u +%Y-%m-%d)
opencode run -m kilo/anthropic/claude-sonnet-4.5 "Generate a daily issues recap for the OpenCode repository.
TODAY'S DATE: ${TODAY}
STEP 1: Gather today's issues
Search for all OPEN issues created today (${TODAY}) using:
gh issue list --repo ${{ github.repository }} --state open --search \"created:${TODAY}\" --json number,title,body,labels,state,comments,createdAt,author --limit 500
IMPORTANT: EXCLUDE all issues authored by Anomaly team members. Filter out issues where the author login matches ANY of these:
adamdotdevin, Brendonovich, fwang, Hona, iamdavidhill, jayair, kitlangton, kommander, MrMushrooooom, R44VC0RP, rekram1-node, thdxr
This recap is specifically for COMMUNITY (external) issues only.
STEP 2: Analyze and categorize
For each issue created today, categorize it:
**Severity Assessment:**
- CRITICAL: Crashes, data loss, security issues, blocks major functionality
- HIGH: Significant bugs affecting many users, important features broken
- MEDIUM: Bugs with workarounds, minor features broken
- LOW: Minor issues, cosmetic, nice-to-haves
**Activity Assessment:**
- Note issues with high comment counts or engagement
- Note issues from repeat reporters (check if author has filed before)
STEP 3: Cross-reference with existing issues
For issues that seem like feature requests or recurring bugs:
- Search for similar older issues to identify patterns
- Note if this is a frequently requested feature
- Identify any issues that are duplicates of long-standing requests
STEP 4: Generate the recap
Create a structured recap with these sections:
===DISCORD_START===
**Daily Issues Recap - ${TODAY}**
**Summary Stats**
- Total issues opened today: [count]
- By category: [bugs/features/questions]
**Critical/High Priority Issues**
[List any CRITICAL or HIGH severity issues with brief descriptions and issue numbers]
**Most Active/Discussed**
[Issues with significant engagement or from active community members]
**Trending Topics**
[Patterns noticed - e.g., 'Multiple reports about X', 'Continued interest in Y feature']
**Duplicates & Related**
[Issues that relate to existing open issues]
===DISCORD_END===
STEP 5: Format for Discord
Format the recap as a Discord-compatible message:
- Use Discord markdown (**, __, etc.)
- BE EXTREMELY CONCISE - this is an EOD summary, not a detailed report
- Use hyperlinked issue numbers with suppressed embeds: [#1234](<https://github.com/${{ github.repository }}/issues/1234>)
- Group related issues on single lines where possible
- Add emoji sparingly for critical items only
- HARD LIMIT: Keep under 1800 characters total
- Skip sections that have nothing notable (e.g., if no critical issues, omit that section)
- Prioritize signal over completeness - only surface what matters
OUTPUT: Output ONLY the content between ===DISCORD_START=== and ===DISCORD_END=== markers. Include the markers so I can extract it." > /tmp/recap_raw.txt
# Extract only the Discord message between markers
sed -n '/===DISCORD_START===/,/===DISCORD_END===/p' /tmp/recap_raw.txt | grep -v '===DISCORD' > /tmp/recap.txt
echo "recap_file=/tmp/recap.txt" >> $GITHUB_OUTPUT
- name: Post to Discord
env:
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_ISSUES_WEBHOOK_URL }}
run: |
if [ -z "$DISCORD_WEBHOOK_URL" ]; then
echo "Warning: DISCORD_ISSUES_WEBHOOK_URL secret not set, skipping Discord post"
cat /tmp/recap.txt
exit 0
fi
# Read the recap
RECAP_RAW=$(cat /tmp/recap.txt)
RECAP_LENGTH=${#RECAP_RAW}
echo "Recap length: ${RECAP_LENGTH} chars"
# Function to post a message to Discord
post_to_discord() {
local msg="$1"
local content=$(echo "$msg" | jq -Rs '.')
curl -s -H "Content-Type: application/json" \
-X POST \
-d "{\"content\": ${content}}" \
"$DISCORD_WEBHOOK_URL"
sleep 1
}
# If under limit, send as single message
if [ "$RECAP_LENGTH" -le 1950 ]; then
post_to_discord "$RECAP_RAW"
else
echo "Splitting into multiple messages..."
remaining="$RECAP_RAW"
while [ ${#remaining} -gt 0 ]; do
if [ ${#remaining} -le 1950 ]; then
post_to_discord "$remaining"
break
else
chunk="${remaining:0:1900}"
last_newline=$(echo "$chunk" | grep -bo $'\n' | tail -1 | cut -d: -f1)
if [ -n "$last_newline" ] && [ "$last_newline" -gt 500 ]; then
chunk="${remaining:0:$last_newline}"
remaining="${remaining:$((last_newline+1))}"
else
chunk="${remaining:0:1900}"
remaining="${remaining:1900}"
fi
post_to_discord "$chunk"
fi
done
fi
echo "Posted daily recap to Discord"
-176
View File
@@ -1,176 +0,0 @@
name: daily-pr-recap
on:
schedule:
# Run at 5pm EST (22:00 UTC, or 21:00 UTC during daylight saving)
- cron: "0 22 * * *"
workflow_dispatch: # Allow manual trigger for testing
jobs:
pr-recap:
# kilocode_change start - disabled for kilo-cli fork (OpenCode Discord integration)
if: false
# kilocode_change end
runs-on: blacksmith-4vcpu-ubuntu-2404
permissions:
contents: read
pull-requests: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: ./.github/actions/setup-bun
- name: Install opencode
run: curl -fsSL https://opencode.ai/install | bash
- name: Generate daily PR recap
id: recap
env:
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
KILO_PERMISSION: |
{
"bash": {
"*": "deny",
"gh pr*": "allow",
"gh search*": "allow"
},
"webfetch": "deny",
"edit": "deny",
"write": "deny"
}
run: |
TODAY=$(date -u +%Y-%m-%d)
opencode run -m kilo/anthropic/claude-sonnet-4.5 "Generate a daily PR activity recap for the OpenCode repository.
TODAY'S DATE: ${TODAY}
STEP 1: Gather PR data
Run these commands to gather PR information. ONLY include OPEN PRs created or updated TODAY (${TODAY}):
# Open PRs created today
gh pr list --repo ${{ github.repository }} --state open --search \"created:${TODAY}\" --json number,title,author,labels,createdAt,updatedAt,reviewDecision,isDraft,additions,deletions --limit 100
# Open PRs with activity today (updated today)
gh pr list --repo ${{ github.repository }} --state open --search \"updated:${TODAY}\" --json number,title,author,labels,createdAt,updatedAt,reviewDecision,isDraft,additions,deletions --limit 100
IMPORTANT: EXCLUDE all PRs authored by Anomaly team members. Filter out PRs where the author login matches ANY of these:
adamdotdevin, Brendonovich, fwang, Hona, iamdavidhill, jayair, kitlangton, kommander, MrMushrooooom, R44VC0RP, rekram1-node, thdxr
This recap is specifically for COMMUNITY (external) contributions only.
STEP 2: For high-activity PRs, check comment counts
For promising PRs, run:
gh pr view [NUMBER] --repo ${{ github.repository }} --json comments --jq '[.comments[] | select(.author.login != \"copilot-pull-request-reviewer\" and .author.login != \"github-actions\")] | length'
IMPORTANT: When counting comments/activity, EXCLUDE these bot accounts:
- copilot-pull-request-reviewer
- github-actions
STEP 3: Identify what matters (ONLY from today's PRs)
**Bug Fixes From Today:**
- PRs with 'fix' or 'bug' in title created/updated today
- Small bug fixes (< 100 lines changed) that are easy to review
- Bug fixes from community contributors
**High Activity Today:**
- PRs with significant human comments today (excluding bots listed above)
- PRs with back-and-forth discussion today
**Quick Wins:**
- Small PRs (< 50 lines) that are approved or nearly approved
- PRs that just need a final review
STEP 4: Generate the recap
Create a structured recap:
===DISCORD_START===
**Daily PR Recap - ${TODAY}**
**New PRs Today**
[PRs opened today - group by type: bug fixes, features, etc.]
**Active PRs Today**
[PRs with activity/updates today - significant discussion]
**Quick Wins**
[Small PRs ready to merge]
===DISCORD_END===
STEP 5: Format for Discord
- Use Discord markdown (**, __, etc.)
- BE EXTREMELY CONCISE - surface what we might miss
- Use hyperlinked PR numbers with suppressed embeds: [#1234](<https://github.com/${{ github.repository }}/pull/1234>)
- Include PR author: [#1234](<url>) (@author)
- For bug fixes, add brief description of what it fixes
- Show line count for quick wins: \"(+15/-3 lines)\"
- HARD LIMIT: Keep under 1800 characters total
- Skip empty sections
- Focus on PRs that need human eyes
OUTPUT: Output ONLY the content between ===DISCORD_START=== and ===DISCORD_END=== markers. Include the markers so I can extract it." > /tmp/pr_recap_raw.txt
# Extract only the Discord message between markers
sed -n '/===DISCORD_START===/,/===DISCORD_END===/p' /tmp/pr_recap_raw.txt | grep -v '===DISCORD' > /tmp/pr_recap.txt
echo "recap_file=/tmp/pr_recap.txt" >> $GITHUB_OUTPUT
- name: Post to Discord
env:
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_ISSUES_WEBHOOK_URL }}
run: |
if [ -z "$DISCORD_WEBHOOK_URL" ]; then
echo "Warning: DISCORD_ISSUES_WEBHOOK_URL secret not set, skipping Discord post"
cat /tmp/pr_recap.txt
exit 0
fi
# Read the recap
RECAP_RAW=$(cat /tmp/pr_recap.txt)
RECAP_LENGTH=${#RECAP_RAW}
echo "Recap length: ${RECAP_LENGTH} chars"
# Function to post a message to Discord
post_to_discord() {
local msg="$1"
local content=$(echo "$msg" | jq -Rs '.')
curl -s -H "Content-Type: application/json" \
-X POST \
-d "{\"content\": ${content}}" \
"$DISCORD_WEBHOOK_URL"
sleep 1
}
# If under limit, send as single message
if [ "$RECAP_LENGTH" -le 1950 ]; then
post_to_discord "$RECAP_RAW"
else
echo "Splitting into multiple messages..."
remaining="$RECAP_RAW"
while [ ${#remaining} -gt 0 ]; do
if [ ${#remaining} -le 1950 ]; then
post_to_discord "$remaining"
break
else
chunk="${remaining:0:1900}"
last_newline=$(echo "$chunk" | grep -bo $'\n' | tail -1 | cut -d: -f1)
if [ -n "$last_newline" ] && [ "$last_newline" -gt 500 ]; then
chunk="${remaining:0:$last_newline}"
remaining="${remaining:$((last_newline+1))}"
else
chunk="${remaining:0:1900}"
remaining="${remaining:1900}"
fi
post_to_discord "$chunk"
fi
done
fi
echo "Posted daily PR recap to Discord"
@@ -0,0 +1,24 @@
name: close-issues
on:
schedule:
- cron: "0 2 * * *" # Daily at 2:00 AM
workflow_dispatch:
jobs:
close:
runs-on: ubuntu-latest
permissions:
contents: read
issues: write
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: latest
- name: Close stale issues
env:
GITHUB_TOKEN: ${{ github.token }}
run: bun script/github/close-issues.ts
@@ -0,0 +1,95 @@
name: compliance-close
on:
schedule:
# Run every 30 minutes to check for expired compliance windows
- cron: "*/30 * * * *"
workflow_dispatch:
permissions:
contents: read
issues: write
pull-requests: write
jobs:
close-non-compliant:
runs-on: ubuntu-latest
steps:
- name: Close non-compliant issues and PRs after 2 hours
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
with:
script: |
const { data: items } = await github.rest.issues.listForRepo({
owner: context.repo.owner,
repo: context.repo.repo,
labels: 'needs:compliance',
state: 'open',
per_page: 100,
});
if (items.length === 0) {
core.info('No open issues/PRs with needs:compliance label');
return;
}
const now = Date.now();
const twoHours = 2 * 60 * 60 * 1000;
for (const item of items) {
const isPR = !!item.pull_request;
const kind = isPR ? 'PR' : 'issue';
const { data: comments } = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: item.number,
});
const complianceComment = comments.find(c => c.body.includes('<!-- issue-compliance -->'));
if (!complianceComment) continue;
const commentAge = now - new Date(complianceComment.created_at).getTime();
if (commentAge < twoHours) {
core.info(`${kind} #${item.number} still within 2-hour window (${Math.round(commentAge / 60000)}m elapsed)`);
continue;
}
const closeMessage = isPR
? 'This pull request has been automatically closed because it was not updated to meet our [contributing guidelines](../blob/dev/CONTRIBUTING.md) within the 2-hour window.\n\nFeel free to open a new pull request that follows our guidelines.'
: 'This issue has been automatically closed because it was not updated to meet our [contributing guidelines](../blob/dev/CONTRIBUTING.md) within the 2-hour window.\n\nFeel free to open a new issue that follows our issue templates.';
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: item.number,
body: closeMessage,
});
try {
await github.rest.issues.removeLabel({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: item.number,
name: 'needs:compliance',
});
} catch (e) {}
if (isPR) {
await github.rest.pulls.update({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: item.number,
state: 'closed',
});
} else {
await github.rest.issues.update({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: item.number,
state: 'closed',
state_reason: 'not_planned',
});
}
core.info(`Closed non-compliant ${kind} #${item.number} after 2-hour window`);
}
@@ -0,0 +1,177 @@
name: duplicate-issues
on:
issues:
types: [opened, edited]
jobs:
check-duplicates:
if: github.event.action == 'opened'
runs-on: blacksmith-4vcpu-ubuntu-2404
permissions:
contents: read
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 1
- uses: ./.github/actions/setup-bun
- name: Install opencode
run: curl -fsSL https://kilo.ai/install | bash
- name: Check duplicates and compliance
env:
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
KILO_PERMISSION: |
{
"bash": {
"*": "deny",
"gh issue*": "allow"
},
"webfetch": "deny"
}
run: |
opencode run -m opencode/claude-sonnet-4-6 "A new issue has been created:
Issue number: ${{ github.event.issue.number }}
Lookup this issue with gh issue view ${{ github.event.issue.number }}.
You have TWO tasks. Perform both, then post a SINGLE comment (if needed).
---
TASK 1: CONTRIBUTING GUIDELINES COMPLIANCE CHECK
Check whether the issue follows our contributing guidelines and issue templates.
This project has three issue templates that every issue MUST use one of:
1. Bug Report - requires a Description field with real content
2. Feature Request - requires a verification checkbox and description, title should start with [FEATURE]:
3. Question - requires the Question field with real content
Additionally check:
- No AI-generated walls of text (long, AI-generated descriptions are not acceptable)
- The issue has real content, not just template placeholder text left unchanged
- Bug reports should include some context about how to reproduce
- Feature requests should explain the problem or need
- We want to push for having the user provide system description & information
Do NOT be nitpicky about optional fields. Only flag real problems like: no template used, required fields empty or placeholder text only, obviously AI-generated walls of text, or completely empty/nonsensical content.
---
TASK 2: DUPLICATE CHECK
Search through existing issues (excluding #${{ github.event.issue.number }}) to find potential duplicates.
Consider:
1. Similar titles or descriptions
2. Same error messages or symptoms
3. Related functionality or components
4. Similar feature requests
Additionally, if the issue mentions keybinds, keyboard shortcuts, or key bindings, note the pinned keybinds issue #4997.
---
POSTING YOUR COMMENT:
Based on your findings, post a SINGLE comment on issue #${{ github.event.issue.number }}. Build the comment as follows:
If the issue is NOT compliant, start the comment with:
<!-- issue-compliance -->
Then explain what needs to be fixed and that they have 2 hours to edit the issue before it is automatically closed. Also add the label needs:compliance to the issue using: gh issue edit ${{ github.event.issue.number }} --add-label needs:compliance
If duplicates were found, include a section about potential duplicates with links.
If the issue mentions keybinds/keyboard shortcuts, include a note about #4997.
If the issue IS compliant AND no duplicates were found AND no keybind reference, do NOT comment at all.
Use this format for the comment:
[If not compliant:]
<!-- issue-compliance -->
This issue doesn't fully meet our [contributing guidelines](../blob/dev/CONTRIBUTING.md).
**What needs to be fixed:**
- [specific reasons]
Please edit this issue to address the above within **2 hours**, or it will be automatically closed.
[If duplicates found, add:]
---
This issue might be a duplicate of existing issues. Please check:
- #[issue_number]: [brief description of similarity]
[If keybind-related, add:]
For keybind-related issues, please also check our pinned keybinds documentation: #4997
[End with if not compliant:]
If you believe this was flagged incorrectly, please let a maintainer know.
Remember: post at most ONE comment combining all findings. If everything is fine, post nothing."
recheck-compliance:
if: github.event.action == 'edited' && contains(github.event.issue.labels.*.name, 'needs:compliance')
runs-on: blacksmith-4vcpu-ubuntu-2404
permissions:
contents: read
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 1
- uses: ./.github/actions/setup-bun
- name: Install opencode
run: curl -fsSL https://kilo.ai/install | bash
- name: Recheck compliance
env:
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
KILO_PERMISSION: |
{
"bash": {
"*": "deny",
"gh issue*": "allow"
},
"webfetch": "deny"
}
run: |
opencode run -m opencode/claude-sonnet-4-6 "Issue #${{ github.event.issue.number }} was previously flagged as non-compliant and has been edited.
Lookup this issue with gh issue view ${{ github.event.issue.number }}.
Re-check whether the issue now follows our contributing guidelines and issue templates.
This project has three issue templates that every issue MUST use one of:
1. Bug Report - requires a Description field with real content
2. Feature Request - requires a verification checkbox and description, title should start with [FEATURE]:
3. Question - requires the Question field with real content
Additionally check:
- No AI-generated walls of text (long, AI-generated descriptions are not acceptable)
- The issue has real content, not just template placeholder text left unchanged
- Bug reports should include some context about how to reproduce
- Feature requests should explain the problem or need
- We want to push for having the user provide system description & information
Do NOT be nitpicky about optional fields. Only flag real problems like: no template used, required fields empty or placeholder text only, obviously AI-generated walls of text, or completely empty/nonsensical content.
If the issue is NOW compliant:
1. Remove the needs:compliance label: gh issue edit ${{ github.event.issue.number }} --remove-label needs:compliance
2. Find and delete the previous compliance comment (the one containing <!-- issue-compliance -->) using: gh api repos/${{ github.repository }}/issues/${{ github.event.issue.number }}/comments --jq '.[] | select(.body | contains(\"<!-- issue-compliance -->\")) | .id' then delete it with: gh api -X DELETE repos/${{ github.repository }}/issues/${{ github.event.issue.number }}/comments/{id}
3. Post a short comment thanking them for updating the issue.
If the issue is STILL not compliant:
Post a comment explaining what still needs to be fixed. Keep the needs:compliance label."
@@ -12,6 +12,6 @@ jobs:
runs-on: depot-ubuntu-24.04
steps:
- name: Send nicely-formatted embed to Discord
uses: SethCohen/github-releases-to-discord@v1
uses: SethCohen/github-releases-to-discord@24d166886aee4646d448c8a389ff9e1ebcab3682 # v1.20.0
with:
webhook_url: ${{ secrets.DISCORD_WEBHOOK }}
@@ -0,0 +1,95 @@
name: pr-management
on:
pull_request_target:
types: [opened]
jobs:
check-duplicates:
runs-on: blacksmith-4vcpu-ubuntu-2404
permissions:
contents: read
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 1
- name: Check team membership
id: team-check
run: |
LOGIN="${{ github.event.pull_request.user.login }}"
if [ "$LOGIN" = "opencode-agent[bot]" ] || grep -qxF "$LOGIN" .github/TEAM_MEMBERS; then
echo "is_team=true" >> "$GITHUB_OUTPUT"
echo "Skipping: $LOGIN is a team member or bot"
else
echo "is_team=false" >> "$GITHUB_OUTPUT"
fi
- name: Setup Bun
if: steps.team-check.outputs.is_team != 'true'
uses: ./.github/actions/setup-bun
- name: Install dependencies
if: steps.team-check.outputs.is_team != 'true'
run: bun install
- name: Install opencode
if: steps.team-check.outputs.is_team != 'true'
run: curl -fsSL https://kilo.ai/install | bash
- name: Build prompt
if: steps.team-check.outputs.is_team != 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_NUMBER: ${{ github.event.pull_request.number }}
run: |
{
echo "Check for duplicate PRs related to this new PR:"
echo ""
echo "CURRENT_PR_NUMBER: $PR_NUMBER"
echo ""
echo "Title: $(gh pr view "$PR_NUMBER" --json title --jq .title)"
echo ""
echo "Description:"
gh pr view "$PR_NUMBER" --json body --jq .body
} > pr_info.txt
- name: Check for duplicate PRs
if: steps.team-check.outputs.is_team != 'true'
env:
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_NUMBER: ${{ github.event.pull_request.number }}
run: |
COMMENT=$(bun script/duplicate-pr.ts -f pr_info.txt "Check the attached file for PR details and search for duplicates")
if [ "$COMMENT" != "No duplicate PRs found" ]; then
gh pr comment "$PR_NUMBER" --body "_The following comment was made by an LLM, it may be inaccurate:_
$COMMENT"
fi
add-contributor-label:
runs-on: ubuntu-latest
permissions:
pull-requests: write
issues: write
steps:
- name: Add Contributor Label
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
const isPR = !!context.payload.pull_request;
const issueNumber = isPR ? context.payload.pull_request.number : context.payload.issue.number;
const authorAssociation = isPR ? context.payload.pull_request.author_association : context.payload.issue.author_association;
if (authorAssociation === 'CONTRIBUTOR') {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issueNumber,
labels: ['contributor']
});
}
@@ -0,0 +1,351 @@
name: pr-standards
on:
pull_request_target:
types: [opened, edited, synchronize]
jobs:
check-standards:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- name: Check PR standards
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
with:
script: |
const pr = context.payload.pull_request;
const login = pr.user.login;
// Skip PRs older than Feb 18, 2026 at 6PM EST (Feb 19, 2026 00:00 UTC)
const cutoff = new Date('2026-02-19T00:00:00Z');
const prCreated = new Date(pr.created_at);
if (prCreated < cutoff) {
console.log(`Skipping: PR #${pr.number} was created before cutoff (${prCreated.toISOString()})`);
return;
}
// Check if author is a team member or bot
if (login === 'opencode-agent[bot]') return;
const { data: file } = await github.rest.repos.getContent({
owner: context.repo.owner,
repo: context.repo.repo,
path: '.github/TEAM_MEMBERS',
ref: 'dev'
});
const members = Buffer.from(file.content, 'base64').toString().split('\n').map(l => l.trim()).filter(Boolean);
if (members.includes(login)) {
console.log(`Skipping: ${login} is a team member`);
return;
}
const title = pr.title;
async function addLabel(label) {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
labels: [label]
});
}
async function removeLabel(label) {
try {
await github.rest.issues.removeLabel({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
name: label
});
} catch (e) {
// Label wasn't present, ignore
}
}
async function comment(marker, body) {
const markerText = `<!-- pr-standards:${marker} -->`;
const { data: comments } = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number
});
const existing = comments.find(c => c.body.includes(markerText));
if (existing) return;
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
body: markerText + '\n' + body
});
}
// Step 1: Check title format
// Matches: feat:, feat(scope):, feat (scope):, etc.
const titlePattern = /^(feat|fix|docs|chore|refactor|test)\s*(\([a-zA-Z0-9-]+\))?\s*:/;
const hasValidTitle = titlePattern.test(title);
if (!hasValidTitle) {
await addLabel('needs:title');
await comment('title', `Hey! Your PR title \`${title}\` doesn't follow conventional commit format.
Please update it to start with one of:
- \`feat:\` or \`feat(scope):\` new feature
- \`fix:\` or \`fix(scope):\` bug fix
- \`docs:\` or \`docs(scope):\` documentation changes
- \`chore:\` or \`chore(scope):\` maintenance tasks
- \`refactor:\` or \`refactor(scope):\` code refactoring
- \`test:\` or \`test(scope):\` adding or updating tests
Where \`scope\` is the package name (e.g., \`app\`, \`desktop\`, \`opencode\`).
See [CONTRIBUTING.md](../blob/dev/CONTRIBUTING.md#pr-titles) for details.`);
return;
}
await removeLabel('needs:title');
// Step 2: Check for linked issue (skip for docs/refactor/feat PRs)
const skipIssueCheck = /^(docs|refactor|feat)\s*(\([a-zA-Z0-9-]+\))?\s*:/.test(title);
if (skipIssueCheck) {
await removeLabel('needs:issue');
console.log('Skipping issue check for docs/refactor/feat PR');
return;
}
const query = `
query($owner: String!, $repo: String!, $number: Int!) {
repository(owner: $owner, name: $repo) {
pullRequest(number: $number) {
closingIssuesReferences(first: 1) {
totalCount
}
}
}
}
`;
const result = await github.graphql(query, {
owner: context.repo.owner,
repo: context.repo.repo,
number: pr.number
});
const linkedIssues = result.repository.pullRequest.closingIssuesReferences.totalCount;
if (linkedIssues === 0) {
await addLabel('needs:issue');
await comment('issue', `Thanks for your contribution!
This PR doesn't have a linked issue. All PRs must reference an existing issue.
Please:
1. Open an issue describing the bug/feature (if one doesn't exist)
2. Add \`Fixes #<number>\` or \`Closes #<number>\` to this PR description
See [CONTRIBUTING.md](../blob/dev/CONTRIBUTING.md#issue-first-policy) for details.`);
return;
}
await removeLabel('needs:issue');
console.log('PR meets all standards');
check-compliance:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- name: Check PR template compliance
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
with:
script: |
const pr = context.payload.pull_request;
const login = pr.user.login;
// Skip PRs older than Feb 18, 2026 at 6PM EST (Feb 19, 2026 00:00 UTC)
const cutoff = new Date('2026-02-19T00:00:00Z');
const prCreated = new Date(pr.created_at);
if (prCreated < cutoff) {
console.log(`Skipping: PR #${pr.number} was created before cutoff (${prCreated.toISOString()})`);
return;
}
// Check if author is a team member or bot
if (login === 'opencode-agent[bot]') return;
const { data: file } = await github.rest.repos.getContent({
owner: context.repo.owner,
repo: context.repo.repo,
path: '.github/TEAM_MEMBERS',
ref: 'dev'
});
const members = Buffer.from(file.content, 'base64').toString().split('\n').map(l => l.trim()).filter(Boolean);
if (members.includes(login)) {
console.log(`Skipping: ${login} is a team member`);
return;
}
const body = pr.body || '';
const title = pr.title;
const isDocsRefactorOrFeat = /^(docs|refactor|feat)\s*(\([a-zA-Z0-9-]+\))?\s*:/.test(title);
const issues = [];
// Check: template sections exist
const hasWhatSection = /### What does this PR do\?/.test(body);
const hasTypeSection = /### Type of change/.test(body);
const hasVerifySection = /### How did you verify your code works\?/.test(body);
const hasChecklistSection = /### Checklist/.test(body);
const hasIssueSection = /### Issue for this PR/.test(body);
if (!hasWhatSection || !hasTypeSection || !hasVerifySection || !hasChecklistSection || !hasIssueSection) {
issues.push('PR description is missing required template sections. Please use the [PR template](../blob/dev/.github/pull_request_template.md).');
}
// Check: "What does this PR do?" has real content (not just placeholder text)
if (hasWhatSection) {
const whatMatch = body.match(/### What does this PR do\?\s*\n([\s\S]*?)(?=###|$)/);
const whatContent = whatMatch ? whatMatch[1].trim() : '';
const placeholder = 'Please provide a description of the issue';
const onlyPlaceholder = whatContent.includes(placeholder) && whatContent.replace(placeholder, '').replace(/[*\s]/g, '').length < 20;
if (!whatContent || onlyPlaceholder) {
issues.push('"What does this PR do?" section is empty or only contains placeholder text. Please describe your changes.');
}
}
// Check: at least one "Type of change" checkbox is checked
if (hasTypeSection) {
const typeMatch = body.match(/### Type of change\s*\n([\s\S]*?)(?=###|$)/);
const typeContent = typeMatch ? typeMatch[1] : '';
const hasCheckedBox = /- \[x\]/i.test(typeContent);
if (!hasCheckedBox) {
issues.push('No "Type of change" checkbox is checked. Please select at least one.');
}
}
// Check: issue reference (skip for docs/refactor/feat)
if (!isDocsRefactorOrFeat && hasIssueSection) {
const issueMatch = body.match(/### Issue for this PR\s*\n([\s\S]*?)(?=###|$)/);
const issueContent = issueMatch ? issueMatch[1].trim() : '';
const hasIssueRef = /(closes|fixes|resolves)\s+#\d+/i.test(issueContent) || /#\d+/.test(issueContent);
if (!hasIssueRef) {
issues.push('No issue referenced. Please add `Closes #<number>` linking to the relevant issue.');
}
}
// Check: "How did you verify" has content
if (hasVerifySection) {
const verifyMatch = body.match(/### How did you verify your code works\?\s*\n([\s\S]*?)(?=###|$)/);
const verifyContent = verifyMatch ? verifyMatch[1].trim() : '';
if (!verifyContent) {
issues.push('"How did you verify your code works?" section is empty. Please explain how you tested.');
}
}
// Check: checklist boxes are checked
if (hasChecklistSection) {
const checklistMatch = body.match(/### Checklist\s*\n([\s\S]*?)(?=###|$)/);
const checklistContent = checklistMatch ? checklistMatch[1] : '';
const unchecked = (checklistContent.match(/- \[ \]/g) || []).length;
const checked = (checklistContent.match(/- \[x\]/gi) || []).length;
if (checked < 2) {
issues.push('Not all checklist items are checked. Please confirm you have tested locally and have not included unrelated changes.');
}
}
// Helper functions
async function addLabel(label) {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
labels: [label]
});
}
async function removeLabel(label) {
try {
await github.rest.issues.removeLabel({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
name: label
});
} catch (e) {}
}
const hasComplianceLabel = pr.labels.some(l => l.name === 'needs:compliance');
if (issues.length > 0) {
// Non-compliant
if (!hasComplianceLabel) {
await addLabel('needs:compliance');
}
const marker = '<!-- issue-compliance -->';
const { data: comments } = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number
});
const existing = comments.find(c => c.body.includes(marker));
const body_text = `${marker}
This PR doesn't fully meet our [contributing guidelines](../blob/dev/CONTRIBUTING.md) and [PR template](../blob/dev/.github/pull_request_template.md).
**What needs to be fixed:**
${issues.map(i => `- ${i}`).join('\n')}
Please edit this PR description to address the above within **2 hours**, or it will be automatically closed.
If you believe this was flagged incorrectly, please let a maintainer know.`;
if (existing) {
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: existing.id,
body: body_text
});
} else {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
body: body_text
});
}
console.log(`PR #${pr.number} is non-compliant: ${issues.join(', ')}`);
} else if (hasComplianceLabel) {
// Was non-compliant, now fixed
await removeLabel('needs:compliance');
const { data: comments } = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number
});
const marker = '<!-- issue-compliance -->';
const existing = comments.find(c => c.body.includes(marker));
if (existing) {
await github.rest.issues.deleteComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: existing.id
});
}
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
body: 'Thanks for updating your PR! It now meets our contributing guidelines. :+1:'
});
console.log(`PR #${pr.number} is now compliant, label removed`);
} else {
console.log(`PR #${pr.number} is compliant`);
}
@@ -16,7 +16,7 @@ jobs:
publish:
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
with:
fetch-depth: 0
@@ -16,7 +16,7 @@ jobs:
release:
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 0
@@ -29,7 +29,7 @@ jobs:
fi
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 1
@@ -49,13 +49,13 @@ jobs:
- name: Check PR guidelines compliance
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
KILO_PERMISSION: '{ "bash": { "*": "deny", "gh*": "allow", "gh pr review*": "deny" } }'
PR_TITLE: ${{ steps.pr-details.outputs.title }}
run: |
PR_BODY=$(jq -r .body pr_data.json)
opencode run -m anthropic/claude-opus-4-5 "A new pull request has been created: '${PR_TITLE}'
opencode run -m opencode/gpt-5.5 --variant medium "A new pull request has been created: '${PR_TITLE}'
<pr-number>
${{ steps.pr-number.outputs.number }}
@@ -15,7 +15,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- name: Setup Bun
uses: ./.github/actions/setup-bun
@@ -0,0 +1,38 @@
name: storybook
on:
push:
branches: [dev]
paths:
- ".github/workflows/storybook.yml"
- "package.json"
- "bun.lock"
- "packages/storybook/**"
- "packages/ui/**"
pull_request:
branches: [dev]
paths:
- ".github/workflows/storybook.yml"
- "package.json"
- "bun.lock"
- "packages/storybook/**"
- "packages/ui/**"
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
name: storybook build
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- name: Checkout repository
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- name: Setup Bun
uses: ./.github/actions/setup-bun
- name: Build Storybook
run: bun --cwd packages/storybook build
@@ -10,7 +10,7 @@ jobs:
name: Release Zed Extension
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 0
@@ -0,0 +1,37 @@
name: triage
on:
issues:
types: [opened]
jobs:
triage:
runs-on: blacksmith-4vcpu-ubuntu-2404
permissions:
contents: read
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 1
- name: Setup Bun
uses: ./.github/actions/setup-bun
- name: Install opencode
run: curl -fsSL https://kilo.ai/install | bash
- name: Triage issue
env:
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ISSUE_NUMBER: ${{ github.event.issue.number }}
ISSUE_TITLE: ${{ github.event.issue.title }}
ISSUE_BODY: ${{ github.event.issue.body }}
run: |
opencode run --agent triage "The following issue was just opened, triage it:
Title: $ISSUE_TITLE
$ISSUE_BODY"
+1 -1
View File
@@ -16,7 +16,7 @@ jobs:
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6 # kilocode_change
- name: Setup Bun
uses: ./.github/actions/setup-bun
+1 -1
View File
@@ -17,7 +17,7 @@ jobs:
if: github.repository == 'Kilo-Org/kilocode'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6 # kilocode_change
- name: Link Checker
uses: Kilo-Org/lychee-action@8646ba30535128ac92d33dfc9133794bfdd9b411
-185
View File
@@ -1,185 +0,0 @@
name: duplicate-issues
on:
issues:
types: [opened, edited]
jobs:
check-duplicates:
if: false # kilocode_change - disabled: not needed in kilocode repo
runs-on: blacksmith-4vcpu-ubuntu-2404
permissions:
contents: read
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: ./.github/actions/setup-bun
# kilocode_change start
- name: Setup Kilo
uses: ./.github/actions/setup-kilo
# kilocode_change end
- name: Check duplicates and compliance
env:
KILO_API_KEY: ${{ secrets.KILO_API_KEY }}
KILO_ORG_ID: ${{ secrets.KILO_ORG_ID }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
KILO_PERMISSION: |
{
"bash": {
"*": "deny",
"gh issue*": "allow"
},
"webfetch": "deny"
}
run: |
kilo run -m "kilo/anthropic/claude-haiku-4.5" "A new issue has been created:
Issue number: ${{ github.event.issue.number }}
Lookup this issue with gh issue view ${{ github.event.issue.number }}.
You have TWO tasks. Perform both, then post a SINGLE comment (if needed).
---
TASK 1: CONTRIBUTING GUIDELINES COMPLIANCE CHECK
Check whether the issue follows our contributing guidelines and issue templates.
This project has three issue templates that every issue MUST use one of:
1. Bug Report - requires a Description field with real content
2. Feature Request - requires a verification checkbox and description, title should start with [FEATURE]:
3. Question - requires the Question field with real content
Additionally check:
- No AI-generated walls of text (long, AI-generated descriptions are not acceptable)
- The issue has real content, not just template placeholder text left unchanged
- Bug reports should include some context about how to reproduce
- Feature requests should explain the problem or need
- We want to push for having the user provide system description & information
Do NOT be nitpicky about optional fields. Only flag real problems like: no template used, required fields empty or placeholder text only, obviously AI-generated walls of text, or completely empty/nonsensical content.
---
TASK 2: DUPLICATE CHECK
Search through existing issues (excluding #${{ github.event.issue.number }}) to find potential duplicates.
Consider:
1. Similar titles or descriptions
2. Same error messages or symptoms
3. Related functionality or components
4. Similar feature requests
Additionally, if the issue mentions keybinds, keyboard shortcuts, or key bindings, note the pinned keybinds issue #4997.
---
POSTING YOUR COMMENT:
Based on your findings, post a SINGLE comment on issue #${{ github.event.issue.number }}. Build the comment as follows:
If the issue is NOT compliant, start the comment with:
<!-- issue-compliance -->
Then explain what needs to be fixed and that they have 2 hours to edit the issue before it is automatically closed. Also add the label needs:compliance to the issue using: gh issue edit ${{ github.event.issue.number }} --add-label needs:compliance
If duplicates were found, include a section about potential duplicates with links.
If the issue mentions keybinds/keyboard shortcuts, include a note about #4997.
If the issue IS compliant AND no duplicates were found AND no keybind reference, do NOT comment at all.
Use this format for the comment:
[If not compliant:]
<!-- issue-compliance -->
This issue doesn't fully meet our [contributing guidelines](../blob/dev/CONTRIBUTING.md).
**What needs to be fixed:**
- [specific reasons]
Please edit this issue to address the above within **2 hours**, or it will be automatically closed.
[If duplicates found, add:]
---
This issue might be a duplicate of existing issues. Please check:
- #[issue_number]: [brief description of similarity]
[If keybind-related, add:]
For keybind-related issues, please also check our pinned keybinds documentation: #4997
[End with if not compliant:]
If you believe this was flagged incorrectly, please let a maintainer know.
Remember: post at most ONE comment combining all findings. If everything is fine, post nothing."
recheck-compliance:
if: github.event.action == 'edited' && contains(github.event.issue.labels.*.name, 'needs:compliance')
runs-on: blacksmith-4vcpu-ubuntu-2404
permissions:
contents: read
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: ./.github/actions/setup-bun
# kilocode_change start
- name: Setup Kilo
uses: ./.github/actions/setup-kilo
# kilocode_change end
- name: Recheck compliance
env:
# kilocode_change start
KILO_API_KEY: ${{ secrets.KILO_API_KEY }}
KILO_ORG_ID: ${{ secrets.KILO_ORG_ID }}
# kilocode_change end
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
KILO_PERMISSION: |
{
"bash": {
"*": "deny",
"gh issue*": "allow"
},
"webfetch": "deny"
}
run: |
kilo run -m "kilo/anthropic/claude-haiku-4.5" "Issue #${{ github.event.issue.number }} was previously flagged as non-compliant and has been edited.
Lookup this issue with gh issue view ${{ github.event.issue.number }}.
Re-check whether the issue now follows our contributing guidelines and issue templates.
This project has three issue templates that every issue MUST use one of:
1. Bug Report - requires a Description field with real content
2. Feature Request - requires a verification checkbox and description, title should start with [FEATURE]:
3. Question - requires the Question field with real content
Additionally check:
- No AI-generated walls of text (long, AI-generated descriptions are not acceptable)
- The issue has real content, not just template placeholder text left unchanged
- Bug reports should include some context about how to reproduce
- Feature requests should explain the problem or need
- We want to push for having the user provide system description & information
Do NOT be nitpicky about optional fields. Only flag real problems like: no template used, required fields empty or placeholder text only, obviously AI-generated walls of text, or completely empty/nonsensical content.
If the issue is NOW compliant:
1. Remove the needs:compliance label: gh issue edit ${{ github.event.issue.number }} --remove-label needs:compliance
2. Find and delete the previous compliance comment (the one containing <!-- issue-compliance -->) using: gh api repos/${{ github.repository }}/issues/${{ github.event.issue.number }}/comments --jq '.[] | select(.body | contains(\"<!-- issue-compliance -->\")) | .id' then delete it with: gh api -X DELETE repos/${{ github.repository }}/issues/${{ github.event.issue.number }}/comments/{id}
3. Post a short comment thanking them for updating the issue.
If the issue is STILL not compliant:
Post a comment explaining what still needs to be fixed. Keep the needs:compliance label."
+5 -1
View File
@@ -14,7 +14,11 @@ jobs:
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6 # kilocode_change
# kilocode_change start
with:
persist-credentials: false
# kilocode_change end
- name: Setup Bun
uses: ./.github/actions/setup-bun
+366
View File
@@ -0,0 +1,366 @@
# kilocode_change - new file
name: kilo-auto-close
on:
workflow_dispatch:
inputs:
dryRun:
description: "Log actions without closing items"
type: boolean
default: true
schedule:
- cron: "0 6 * * *"
permissions:
contents: read
issues: write
pull-requests: write
jobs:
close:
if: github.repository == 'Kilo-Org/kilocode'
runs-on: blacksmith-2vcpu-ubuntu-2404
timeout-minutes: 30
steps:
- name: Close inactive PRs and issues
uses: actions/github-script@v8
env:
KILO_AUTO_CLOSE_ENABLED: ${{ vars.KILO_AUTO_CLOSE_ENABLED }}
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const PR_DAYS_INACTIVE = 30
const ISSUE_DAYS_INACTIVE = 60
const MAX_RETRIES = 3
// Adaptive delay: fast for small batches, slower for large to respect
// GitHub's 80 content-generating requests/minute limit
const SMALL_BATCH_THRESHOLD = 10
const SMALL_BATCH_DELAY_MS = 1000 // 1s for daily operations (≤10 items)
const LARGE_BATCH_DELAY_MS = 2000 // 2s for backlog (>10 items) = ~30 ops/min, well under 80 limit
const startTime = Date.now()
const prCutoff = new Date(Date.now() - PR_DAYS_INACTIVE * 24 * 60 * 60 * 1000)
const issueCutoff = new Date(Date.now() - ISSUE_DAYS_INACTIVE * 24 * 60 * 60 * 1000)
const { owner, repo } = context.repo
const dryRunInput = context.payload.inputs?.dryRun
const enabled = process.env.KILO_AUTO_CLOSE_ENABLED === "true"
const dryRun = dryRunInput === undefined
? !enabled
: dryRunInput !== "false"
core.info(`Dry run mode: ${dryRun}`)
core.info(`PR cutoff date: ${prCutoff.toISOString()}`)
core.info(`Issue cutoff date: ${issueCutoff.toISOString()}`)
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms))
}
async function withRetry(fn, description = 'API call') {
let lastError
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
try {
const result = await fn()
return result
} catch (error) {
lastError = error
const isRateLimited = error.status === 403 &&
(error.message?.includes('rate limit') || error.message?.includes('secondary'))
if (!isRateLimited) {
throw error
}
if (attempt === MAX_RETRIES - 1) {
break
}
// Parse retry-after header, default to 60 seconds
const retryAfter = error.response?.headers?.['retry-after']
? parseInt(error.response.headers['retry-after'])
: 60
// Exponential backoff: retryAfter * 2^attempt
const backoffMs = retryAfter * 1000 * Math.pow(2, attempt)
core.warning(`${description}: Rate limited (attempt ${attempt + 1}/${MAX_RETRIES}). Waiting ${backoffMs / 1000}s before retry...`)
await sleep(backoffMs)
}
}
core.error(`${description}: Max retries (${MAX_RETRIES}) exceeded`)
throw lastError
}
const query = `
query($owner: String!, $repo: String!, $cursor: String) {
repository(owner: $owner, name: $repo) {
pullRequests(first: 100, states: OPEN, after: $cursor) {
pageInfo {
hasNextPage
endCursor
}
nodes {
number
title
author {
login
}
createdAt
commits(last: 1) {
nodes {
commit {
committedDate
}
}
}
comments(last: 1) {
nodes {
createdAt
}
}
reviews(last: 1) {
nodes {
createdAt
}
}
reviewThreads(last: 100) {
nodes {
comments(last: 1) {
nodes {
createdAt
}
}
}
}
}
}
}
}
`
const allPrs = []
let cursor = null
let hasNextPage = true
let pageCount = 0
while (hasNextPage) {
pageCount++
core.info(`Fetching page ${pageCount} of open PRs...`)
const result = await withRetry(
() => github.graphql(query, { owner, repo, cursor }),
`GraphQL page ${pageCount}`
)
allPrs.push(...result.repository.pullRequests.nodes)
hasNextPage = result.repository.pullRequests.pageInfo.hasNextPage
cursor = result.repository.pullRequests.pageInfo.endCursor
core.info(`Page ${pageCount}: fetched ${result.repository.pullRequests.nodes.length} PRs (total: ${allPrs.length})`)
// Delay between pagination requests (use small batch delay for reads)
if (hasNextPage) {
await sleep(SMALL_BATCH_DELAY_MS)
}
}
core.info(`Found ${allPrs.length} open pull requests`)
function entry(source, date) {
if (!date) return null
return { source, date: new Date(date) }
}
function latest(items) {
return items.filter(Boolean).sort((a, b) => b.date.getTime() - a.date.getTime())[0]
}
const stalePrs = allPrs.flatMap((pr) => {
const activity = latest([
entry("created", pr.createdAt),
entry("commit", pr.commits.nodes[0]?.commit.committedDate),
entry("comment", pr.comments.nodes[0]?.createdAt),
entry("review", pr.reviews.nodes[0]?.createdAt),
...pr.reviewThreads.nodes.map((t) => entry("review comment", t.comments.nodes[0]?.createdAt)),
])
const text = activity
? `${activity.date.toISOString()} via ${activity.source}`
: "unknown"
if (!activity || activity.date > prCutoff) {
core.info(`PR #${pr.number} is fresh (last activity: ${text})`)
return []
}
core.info(`PR #${pr.number} is STALE (last activity: ${text})`)
return [{ ...pr, activity }]
})
core.info(`Found ${stalePrs.length} stale pull requests`)
const prDelayMs = stalePrs.length > SMALL_BATCH_THRESHOLD
? LARGE_BATCH_DELAY_MS
: SMALL_BATCH_DELAY_MS
core.info(`Using ${prDelayMs}ms delay between PR operations (${stalePrs.length > SMALL_BATCH_THRESHOLD ? 'large' : 'small'} batch mode)`)
let closedPrCount = 0
let skippedPrCount = 0
for (const pr of stalePrs) {
const issue_number = pr.number
const closeComment = `To stay organized pull requests are automatically closed after ${PR_DAYS_INACTIVE} days of inactivity. If the pull request is still relevant please reopen it or create a fresh new one.`
if (dryRun) {
core.info(`[dry-run] Would close PR #${issue_number} from ${pr.author?.login || 'unknown'} (last activity: ${pr.activity.date.toISOString()} via ${pr.activity.source}): ${pr.title}`)
continue
}
try {
// Add comment
await withRetry(
() => github.rest.issues.createComment({
owner,
repo,
issue_number,
body: closeComment,
}),
`Comment on PR #${issue_number}`
)
// Close PR
await withRetry(
() => github.rest.pulls.update({
owner,
repo,
pull_number: issue_number,
state: "closed",
}),
`Close PR #${issue_number}`
)
closedPrCount++
core.info(`Closed PR #${issue_number} from ${pr.author?.login || 'unknown'} (last activity: ${pr.activity.date.toISOString()} via ${pr.activity.source}): ${pr.title}`)
// Delay before processing next PR
await sleep(prDelayMs)
} catch (error) {
skippedPrCount++
core.error(`Failed to close PR #${issue_number}: ${error.message}`)
}
}
let page = 1
let stop = false
const staleIssues = []
while (!stop) {
core.info(`Fetching page ${page} of open issues...`)
const result = await withRetry(
() => github.rest.issues.listForRepo({
owner,
repo,
state: "open",
sort: "updated",
direction: "asc",
per_page: 100,
page,
}),
`Issues page ${page}`
)
if (!result.data.length) {
break
}
core.info(`Page ${page}: fetched ${result.data.length} issues`)
for (const issue of result.data) {
const updated = new Date(issue.updated_at)
if (updated >= issueCutoff) {
core.info(`Found fresh issue/PR #${issue.number} (${updated.toISOString()}), stopping issue scan`)
stop = true
break
}
if (issue.pull_request) {
core.info(`Skipping PR #${issue.number} in issue scan`)
continue
}
staleIssues.push({ ...issue, activity: updated })
}
if (!stop) {
page++
await sleep(SMALL_BATCH_DELAY_MS)
}
}
core.info(`Found ${staleIssues.length} stale issues`)
const issueDelayMs = staleIssues.length > SMALL_BATCH_THRESHOLD
? LARGE_BATCH_DELAY_MS
: SMALL_BATCH_DELAY_MS
core.info(`Using ${issueDelayMs}ms delay between issue operations (${staleIssues.length > SMALL_BATCH_THRESHOLD ? 'large' : 'small'} batch mode)`)
let closedIssueCount = 0
let skippedIssueCount = 0
for (const issue of staleIssues) {
const closeComment = `To stay organized issues are automatically closed after ${ISSUE_DAYS_INACTIVE} days of no activity. If the issue is still relevant please reopen it or create a fresh new one.`
if (dryRun) {
core.info(`[dry-run] Would close issue #${issue.number} (last activity: ${issue.activity.toISOString()} via updated): ${issue.title}`)
continue
}
try {
await withRetry(
() => github.rest.issues.createComment({
owner,
repo,
issue_number: issue.number,
body: closeComment,
}),
`Comment on issue #${issue.number}`
)
await withRetry(
() => github.rest.issues.update({
owner,
repo,
issue_number: issue.number,
state: "closed",
state_reason: "not_planned",
}),
`Close issue #${issue.number}`
)
closedIssueCount++
core.info(`Closed issue #${issue.number} (last activity: ${issue.activity.toISOString()} via updated): ${issue.title}`)
await sleep(issueDelayMs)
} catch (error) {
skippedIssueCount++
core.error(`Failed to close issue #${issue.number}: ${error.message}`)
}
}
const elapsed = Math.round((Date.now() - startTime) / 1000)
core.info(`\n========== Summary ==========`)
core.info(`Total open PRs found: ${allPrs.length}`)
core.info(`Stale PRs identified: ${stalePrs.length}`)
core.info(`PRs closed: ${closedPrCount}`)
core.info(`PRs skipped (errors): ${skippedPrCount}`)
core.info(`Stale issues identified: ${staleIssues.length}`)
core.info(`Issues closed: ${closedIssueCount}`)
core.info(`Issues skipped (errors): ${skippedIssueCount}`)
core.info(`Elapsed time: ${elapsed}s`)
core.info(`=============================`)
+2 -21
View File
@@ -21,10 +21,10 @@ jobs:
timeout-minutes: 15
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup Nix
uses: nixbuild/nix-quick-install-action@v34
uses: nixbuild/nix-quick-install-action@2c9db80fb984ceb1bcaa77cdda3fdf8cfba92035 # v34
- name: Evaluate flake outputs (all systems)
run: |
@@ -40,8 +40,6 @@ jobs:
SYSTEMS="x86_64-linux aarch64-linux x86_64-darwin aarch64-darwin"
PACKAGES="kilo"
# TODO: move 'desktop' to PACKAGES when #11755 is fixed
OPTIONAL_PACKAGES="desktop"
echo ""
echo "=== Evaluating packages for all systems ==="
@@ -61,23 +59,6 @@ jobs:
done
done
echo ""
echo "=== Evaluating optional packages ==="
for system in $SYSTEMS; do
echo ""
echo "--- $system ---"
for pkg in $OPTIONAL_PACKAGES; do
printf " %s: " "$pkg"
if output=$(nix eval ".#packages.$system.$pkg.drvPath" --raw 2>&1); then
echo "✓"
else
echo "✗"
echo "::warning::Evaluation failed for packages.$system.$pkg"
echo "$output"
fi
done
done
echo ""
echo "=== Evaluating devShells for all systems ==="
for system in $SYSTEMS; do
+5 -5
View File
@@ -42,10 +42,10 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup Nix
uses: nixbuild/nix-quick-install-action@v34
uses: nixbuild/nix-quick-install-action@2c9db80fb984ceb1bcaa77cdda3fdf8cfba92035 # v34
- name: Compute node_modules hash
id: hash
@@ -73,7 +73,7 @@ jobs:
echo "Computed hash for ${SYSTEM}: $HASH"
- name: Upload hash
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7 # kilocode_change
with:
name: hash-${{ matrix.system }}
path: hash.txt
@@ -86,7 +86,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6 # kilocode_change
with:
persist-credentials: false
fetch-depth: 0
@@ -106,7 +106,7 @@ jobs:
git pull --rebase --autostash origin "$GITHUB_REF_NAME"
- name: Download hash artifacts
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8 # kilocode_change
with:
path: hashes
pattern: hash-*
-113
View File
@@ -1,113 +0,0 @@
name: pr-management
on:
pull_request_target:
types: [opened]
jobs:
# kilocode_change start
check-author:
if: github.repository == 'Kilo-Org/kilocode' && false # kilocode_change - disabled: not needed in kilocode repo
uses: ./.github/workflows/check-org-member.yml
with:
username: ${{ github.event.pull_request.user.login }}
secrets:
kilo-maintainer-app-id: ${{ secrets.KILO_MAINTAINER_APP_ID }}
kilo-maintainer-app-secret: ${{ secrets.KILO_MAINTAINER_APP_SECRET }}
check-duplicates:
needs: check-author
if: github.repository == 'Kilo-Org/kilocode' && false # kilocode_change - disabled: not needed in kilocode repo
# kilocode_change end
runs-on: blacksmith-4vcpu-ubuntu-2404
permissions:
contents: read
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Check team membership
id: team-check
run: |
LOGIN="${{ github.event.pull_request.user.login }}"
if [ "$LOGIN" = "opencode-agent[bot]" ] || grep -qxF "$LOGIN" .github/TEAM_MEMBERS; then
echo "is_team=true" >> "$GITHUB_OUTPUT"
echo "Skipping: $LOGIN is a team member or bot"
else
echo "is_team=false" >> "$GITHUB_OUTPUT"
fi
- name: Setup Bun
if: steps.team-check.outputs.is_team != 'true'
uses: ./.github/actions/setup-bun
- name: Install dependencies
if: steps.team-check.outputs.is_team != 'true'
run: bun install
# kilocode_change start
- name: Setup Kilo
uses: ./.github/actions/setup-kilo
# kilocode_change end
- name: Build prompt
if: steps.team-check.outputs.is_team != 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_NUMBER: ${{ github.event.pull_request.number }}
run: |
{
echo "Check for duplicate PRs related to this new PR:"
echo ""
echo "CURRENT_PR_NUMBER: $PR_NUMBER"
echo ""
echo "Title: $(gh pr view "$PR_NUMBER" --json title --jq .title)"
echo ""
echo "Description:"
gh pr view "$PR_NUMBER" --json body --jq .body
} > pr_info.txt
- name: Check for duplicate PRs
if: steps.team-check.outputs.is_team != 'true'
env:
# kilocode_change start
KILO_API_KEY: ${{ secrets.KILO_API_KEY }}
KILO_ORG_ID: ${{ secrets.KILO_ORG_ID }}
# kilocode_change end
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_NUMBER: ${{ github.event.pull_request.number }}
run: |
COMMENT=$(bun script/duplicate-pr.ts -f pr_info.txt "Check the attached file for PR details and search for duplicates")
if [ "$COMMENT" != "No duplicate PRs found" ]; then
gh pr comment "$PR_NUMBER" --body "_The following comment was made by an LLM, it may be inaccurate:_
$COMMENT"
fi
add-contributor-label:
if: github.repository == 'Kilo-Org/kilocode' && false # kilocode_change - disabled: not needed in kilocode repo
runs-on: blacksmith-2vcpu-ubuntu-2404 # kilocode_change
permissions:
pull-requests: write
issues: write
steps:
- name: Add Contributor Label
uses: actions/github-script@v8
with:
script: |
const isPR = !!context.payload.pull_request;
const issueNumber = isPR ? context.payload.pull_request.number : context.payload.issue.number;
const authorAssociation = isPR ? context.payload.pull_request.author_association : context.payload.issue.author_association;
if (authorAssociation === 'CONTRIBUTOR') {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issueNumber,
labels: ['contributor']
});
}
-340
View File
@@ -1,340 +0,0 @@
name: pr-standards
on:
pull_request_target:
types: [opened, edited, synchronize]
jobs:
# kilocode_change start
check-author:
if: github.repository == 'Kilo-Org/kilocode' && false # kilocode_change - disabled: not needed in kilocode repo
uses: ./.github/workflows/check-org-member.yml
with:
username: ${{ github.event.pull_request.user.login }}
secrets:
kilo-maintainer-app-id: ${{ secrets.KILO_MAINTAINER_APP_ID }}
kilo-maintainer-app-secret: ${{ secrets.KILO_MAINTAINER_APP_SECRET }}
check-standards:
needs: check-author
if: github.repository == 'Kilo-Org/kilocode' && false # kilocode_change - disabled: not needed in kilocode repo
# kilocode_change end
runs-on: blacksmith-4vcpu-ubuntu-2404
permissions:
pull-requests: write
steps:
- name: Check PR standards
uses: actions/github-script@v7
with:
script: |
const pr = context.payload.pull_request;
const title = pr.title;
async function addLabel(label) {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
labels: [label]
});
}
async function removeLabel(label) {
try {
await github.rest.issues.removeLabel({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
name: label
});
} catch (e) {
// Label wasn't present, ignore
}
}
async function comment(marker, body) {
const markerText = `<!-- pr-standards:${marker} -->`;
const { data: comments } = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number
});
const existing = comments.find(c => c.body.includes(markerText));
if (existing) return;
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
body: markerText + '\n' + body
});
}
// Step 1: Check title format
// Matches: feat:, feat(scope):, feat (scope):, etc.
const titlePattern = /^(feat|fix|docs|chore|refactor|test)\s*(\([a-zA-Z0-9-]+\))?\s*:/;
const hasValidTitle = titlePattern.test(title);
if (!hasValidTitle) {
await addLabel('needs:title');
await comment('title', `Hey! Your PR title \`${title}\` doesn't follow conventional commit format.
Please update it to start with one of:
- \`feat:\` or \`feat(scope):\` new feature
- \`fix:\` or \`fix(scope):\` bug fix
- \`docs:\` or \`docs(scope):\` documentation changes
- \`chore:\` or \`chore(scope):\` maintenance tasks
- \`refactor:\` or \`refactor(scope):\` code refactoring
- \`test:\` or \`test(scope):\` adding or updating tests
Where \`scope\` is the package name (e.g., \`app\`, \`desktop\`, \`kilo\`).
See [CONTRIBUTING.md](../blob/main/CONTRIBUTING.md#pr-titles) for details.`);
return;
}
await removeLabel('needs:title');
// Step 2: Check for linked issue (skip for docs/refactor/feat PRs)
const skipIssueCheck = /^(docs|refactor|feat)\s*(\([a-zA-Z0-9-]+\))?\s*:/.test(title);
if (skipIssueCheck) {
await removeLabel('needs:issue');
console.log('Skipping issue check for docs/refactor/feat PR');
return;
}
const query = `
query($owner: String!, $repo: String!, $number: Int!) {
repository(owner: $owner, name: $repo) {
pullRequest(number: $number) {
closingIssuesReferences(first: 1) {
totalCount
}
}
}
}
`;
const result = await github.graphql(query, {
owner: context.repo.owner,
repo: context.repo.repo,
number: pr.number
});
const linkedIssues = result.repository.pullRequest.closingIssuesReferences.totalCount;
if (linkedIssues === 0) {
await addLabel('needs:issue');
await comment('issue', `Thanks for your contribution!
This PR doesn't have a linked issue. All PRs must reference an existing issue.
Please:
1. Open an issue describing the bug/feature (if one doesn't exist)
2. Add \`Fixes #<number>\` or \`Closes #<number>\` to this PR description
See [CONTRIBUTING.md](../blob/main/CONTRIBUTING.md#issue-first-policy) for details.`);
return;
}
await removeLabel('needs:issue');
console.log('PR meets all standards');
check-compliance:
if: github.repository == 'Kilo-Org/kilocode' && false # kilocode_change - disabled: not needed in kilocode repo
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- name: Check PR template compliance
uses: actions/github-script@v7
with:
script: |
const pr = context.payload.pull_request;
const login = pr.user.login;
// Skip PRs older than Feb 18, 2026 at 6PM EST (Feb 19, 2026 00:00 UTC)
const cutoff = new Date('2026-02-19T00:00:00Z');
const prCreated = new Date(pr.created_at);
if (prCreated < cutoff) {
console.log(`Skipping: PR #${pr.number} was created before cutoff (${prCreated.toISOString()})`);
return;
}
// Check if author is a team member or bot
if (login === 'opencode-agent[bot]') return;
const { data: file } = await github.rest.repos.getContent({
owner: context.repo.owner,
repo: context.repo.repo,
path: '.github/TEAM_MEMBERS',
ref: 'dev'
});
const members = Buffer.from(file.content, 'base64').toString().split('\n').map(l => l.trim()).filter(Boolean);
if (members.includes(login)) {
console.log(`Skipping: ${login} is a team member`);
return;
}
const body = pr.body || '';
const title = pr.title;
const isDocsRefactorOrFeat = /^(docs|refactor|feat)\s*(\([a-zA-Z0-9-]+\))?\s*:/.test(title);
const issues = [];
// Check: template sections exist
const hasWhatSection = /### What does this PR do\?/.test(body);
const hasTypeSection = /### Type of change/.test(body);
const hasVerifySection = /### How did you verify your code works\?/.test(body);
const hasChecklistSection = /### Checklist/.test(body);
const hasIssueSection = /### Issue for this PR/.test(body);
if (!hasWhatSection || !hasTypeSection || !hasVerifySection || !hasChecklistSection || !hasIssueSection) {
issues.push('PR description is missing required template sections. Please use the [PR template](../blob/dev/.github/pull_request_template.md).');
}
// Check: "What does this PR do?" has real content (not just placeholder text)
if (hasWhatSection) {
const whatMatch = body.match(/### What does this PR do\?\s*\n([\s\S]*?)(?=###|$)/);
const whatContent = whatMatch ? whatMatch[1].trim() : '';
const placeholder = 'Please provide a description of the issue';
const onlyPlaceholder = whatContent.includes(placeholder) && whatContent.replace(placeholder, '').replace(/[*\s]/g, '').length < 20;
if (!whatContent || onlyPlaceholder) {
issues.push('"What does this PR do?" section is empty or only contains placeholder text. Please describe your changes.');
}
}
// Check: at least one "Type of change" checkbox is checked
if (hasTypeSection) {
const typeMatch = body.match(/### Type of change\s*\n([\s\S]*?)(?=###|$)/);
const typeContent = typeMatch ? typeMatch[1] : '';
const hasCheckedBox = /- \[x\]/i.test(typeContent);
if (!hasCheckedBox) {
issues.push('No "Type of change" checkbox is checked. Please select at least one.');
}
}
// Check: issue reference (skip for docs/refactor/feat)
if (!isDocsRefactorOrFeat && hasIssueSection) {
const issueMatch = body.match(/### Issue for this PR\s*\n([\s\S]*?)(?=###|$)/);
const issueContent = issueMatch ? issueMatch[1].trim() : '';
const hasIssueRef = /(closes|fixes|resolves)\s+#\d+/i.test(issueContent) || /#\d+/.test(issueContent);
if (!hasIssueRef) {
issues.push('No issue referenced. Please add `Closes #<number>` linking to the relevant issue.');
}
}
// Check: "How did you verify" has content
if (hasVerifySection) {
const verifyMatch = body.match(/### How did you verify your code works\?\s*\n([\s\S]*?)(?=###|$)/);
const verifyContent = verifyMatch ? verifyMatch[1].trim() : '';
if (!verifyContent) {
issues.push('"How did you verify your code works?" section is empty. Please explain how you tested.');
}
}
// Check: checklist boxes are checked
if (hasChecklistSection) {
const checklistMatch = body.match(/### Checklist\s*\n([\s\S]*?)(?=###|$)/);
const checklistContent = checklistMatch ? checklistMatch[1] : '';
const unchecked = (checklistContent.match(/- \[ \]/g) || []).length;
const checked = (checklistContent.match(/- \[x\]/gi) || []).length;
if (checked < 2) {
issues.push('Not all checklist items are checked. Please confirm you have tested locally and have not included unrelated changes.');
}
}
// Helper functions
async function addLabel(label) {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
labels: [label]
});
}
async function removeLabel(label) {
try {
await github.rest.issues.removeLabel({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
name: label
});
} catch (e) {}
}
const hasComplianceLabel = pr.labels.some(l => l.name === 'needs:compliance');
if (issues.length > 0) {
// Non-compliant
if (!hasComplianceLabel) {
await addLabel('needs:compliance');
}
const marker = '<!-- issue-compliance -->';
const { data: comments } = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number
});
const existing = comments.find(c => c.body.includes(marker));
const body_text = `${marker}
This PR doesn't fully meet our [contributing guidelines](../blob/dev/CONTRIBUTING.md) and [PR template](../blob/dev/.github/pull_request_template.md).
**What needs to be fixed:**
${issues.map(i => `- ${i}`).join('\n')}
Please edit this PR description to address the above within **2 hours**, or it will be automatically closed.
If you believe this was flagged incorrectly, please let a maintainer know.`;
if (existing) {
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: existing.id,
body: body_text
});
} else {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
body: body_text
});
}
console.log(`PR #${pr.number} is non-compliant: ${issues.join(', ')}`);
} else if (hasComplianceLabel) {
// Was non-compliant, now fixed
await removeLabel('needs:compliance');
const { data: comments } = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number
});
const marker = '<!-- issue-compliance -->';
const existing = comments.find(c => c.body.includes(marker));
if (existing) {
await github.rest.issues.deleteComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: existing.id
});
}
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
body: 'Thanks for updating your PR! It now meets our contributing guidelines. :+1:'
});
console.log(`PR #${pr.number} is now compliant, label removed`);
} else {
console.log(`PR #${pr.number} is compliant`);
}
@@ -0,0 +1,64 @@
# kilocode_change - new file
name: prepare-jetbrains-release
on:
workflow_dispatch:
inputs:
kind:
description: "Release kind"
required: true
type: choice
options:
- rc
- stable
version:
description: "Version, e.g. 7.3.13-rc.1 or 7.3.13"
required: true
type: string
from_tag:
description: "Optional previous tag for changelog range"
required: false
type: string
permissions:
contents: write
pull-requests: write
concurrency:
group: prepare-jetbrains-release-${{ inputs.version }}
cancel-in-progress: false
jobs:
prepare:
if: github.repository == 'Kilo-Org/kilocode'
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
persist-credentials: false
fetch-depth: 0
- name: Setup Bun
uses: ./.github/actions/setup-bun
- name: Setup Git Committer
id: committer
uses: ./.github/actions/setup-git-committer
with:
kilo-maintainer-app-id: ${{ secrets.KILO_MAINTAINER_APP_ID }}
kilo-maintainer-app-secret: ${{ secrets.KILO_MAINTAINER_APP_SECRET }}
- name: Create release tag and PR
run: |
args=(--kind "$KIND" --version "$VERSION")
if [[ -n "$FROM_TAG" ]]; then
args+=(--from-tag "$FROM_TAG")
fi
bun script/jetbrains-release-pr.ts "${args[@]}"
env:
GH_TOKEN: ${{ steps.committer.outputs.token }}
GH_REPO: ${{ github.repository }}
KIND: ${{ inputs.kind }}
VERSION: ${{ inputs.version }}
FROM_TAG: ${{ inputs.from_tag }}
+194
View File
@@ -0,0 +1,194 @@
# kilocode_change - new file
name: publish-jetbrains
on:
pull_request:
types:
- closed
branches:
- main
concurrency:
group: publish-jetbrains-pr-${{ github.event.pull_request.number }}
cancel-in-progress: false
permissions:
contents: write
pull-requests: read
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
publish:
if: >-
github.repository == 'Kilo-Org/kilocode' &&
github.event.pull_request.merged == true &&
startsWith(github.event.pull_request.head.ref, 'jetbrains/release/') &&
contains(github.event.pull_request.labels.*.name, 'jetbrains-release') &&
github.event.pull_request.head.repo.full_name == github.repository
runs-on: blacksmith-8vcpu-ubuntu-2404
steps:
- name: Checkout merged release PR
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.merge_commit_sha }}
- name: Setup Bun for validation
uses: ./.github/actions/setup-bun
- name: Validate release PR and tag
id: release
run: bun script/jetbrains-release-validate.ts --pr "$PR_NUMBER"
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
- name: Save reviewed release metadata
run: |
cp packages/kilo-jetbrains/CHANGELOG.md "$RUNNER_TEMP/jetbrains-CHANGELOG.md"
cp packages/kilo-jetbrains/gradle.properties "$RUNNER_TEMP/jetbrains-gradle.properties"
- name: Checkout release tag
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ steps.release.outputs.tag }}
- name: Restore reviewed release metadata
run: |
cp "$RUNNER_TEMP/jetbrains-CHANGELOG.md" packages/kilo-jetbrains/CHANGELOG.md
cp "$RUNNER_TEMP/jetbrains-gradle.properties" packages/kilo-jetbrains/gradle.properties
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "24"
- name: Setup Bun
uses: ./.github/actions/setup-bun
- name: Install dependencies
run: bun install
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "21"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Install build tools
run: |
sudo apt-get update
sudo apt-get install -y patchelf zip
- name: Validate publishing secrets
run: |
missing=0
for name in JETBRAINS_MARKETPLACE_TOKEN JETBRAINS_CERTIFICATE_CHAIN JETBRAINS_PRIVATE_KEY JETBRAINS_PRIVATE_KEY_PASSWORD; do
if [[ -z "${!name}" ]]; then
echo "Missing required secret: $name" >&2
missing=1
fi
done
exit "$missing"
env:
JETBRAINS_MARKETPLACE_TOKEN: ${{ secrets.JETBRAINS_MARKETPLACE_TOKEN }}
JETBRAINS_CERTIFICATE_CHAIN: ${{ secrets.JETBRAINS_CERTIFICATE_CHAIN }}
JETBRAINS_PRIVATE_KEY: ${{ secrets.JETBRAINS_PRIVATE_KEY }}
JETBRAINS_PRIVATE_KEY_PASSWORD: ${{ secrets.JETBRAINS_PRIVATE_KEY_PASSWORD }}
- name: Prepare CLI resources
working-directory: packages/kilo-jetbrains
run: bun script/build.ts --production --prepare-cli
env:
KILO_VERSION: ${{ steps.release.outputs.version }}
KILO_CHANNEL: ${{ steps.release.outputs.cli_channel }}
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
- name: Verify plugin
working-directory: packages/kilo-jetbrains
run: ./gradlew verifyPlugin -Pproduction=true -Pkilo.channel="$CHANNEL"
env:
VERSION: ${{ steps.release.outputs.version }}
CHANNEL: ${{ steps.release.outputs.marketplace_channel }}
- name: Render release notes
working-directory: packages/kilo-jetbrains
run: |
if ! grep -Fq "## [$VERSION]" CHANGELOG.md; then
echo "Missing packages/kilo-jetbrains/CHANGELOG.md entry for $VERSION. Review and merge a release PR before publishing." >&2
exit 1
fi
./gradlew getChangelog --project-version "$VERSION" --no-header --no-empty-sections --output-file=build/release-notes.md
env:
VERSION: ${{ steps.release.outputs.version }}
- name: Publish to JetBrains Marketplace
working-directory: packages/kilo-jetbrains
run: ./gradlew publishPlugin -Pproduction=true -Pkilo.channel="$CHANNEL"
env:
VERSION: ${{ steps.release.outputs.version }}
CHANNEL: ${{ steps.release.outputs.marketplace_channel }}
JETBRAINS_MARKETPLACE_TOKEN: ${{ secrets.JETBRAINS_MARKETPLACE_TOKEN }}
JETBRAINS_CERTIFICATE_CHAIN: ${{ secrets.JETBRAINS_CERTIFICATE_CHAIN }}
JETBRAINS_PRIVATE_KEY: ${{ secrets.JETBRAINS_PRIVATE_KEY }}
JETBRAINS_PRIVATE_KEY_PASSWORD: ${{ secrets.JETBRAINS_PRIVATE_KEY_PASSWORD }}
- name: Resolve plugin archive
id: archive
run: |
mapfile -t signed < <(compgen -G "packages/kilo-jetbrains/build/distributions/*-signed.zip")
if [[ "${#signed[@]}" -eq 1 ]]; then
echo "path=${signed[0]}" >> "$GITHUB_OUTPUT"
exit 0
fi
if [[ "${#signed[@]}" -gt 1 ]]; then
echo "Expected exactly one signed JetBrains plugin ZIP, found ${#signed[@]}." >&2
printf '%s\n' "${signed[@]}" >&2
exit 1
fi
mapfile -t files < <(compgen -G "packages/kilo-jetbrains/build/distributions/*.zip")
if [[ "${#files[@]}" -ne 1 ]]; then
echo "Expected exactly one JetBrains plugin ZIP, found ${#files[@]}." >&2
printf '%s\n' "${files[@]}" >&2
exit 1
fi
echo "path=${files[0]}" >> "$GITHUB_OUTPUT"
- name: Upload to GitHub Release
run: |
tag="$TAG"
title="JetBrains $VERSION"
flags=(--title "$title" --notes-file "$NOTES")
if [[ "$KIND" == "rc" ]]; then
flags+=(--prerelease)
fi
if gh release view "$tag" --repo "$GITHUB_REPOSITORY" >/dev/null 2>&1; then
gh release upload "$tag" "$ARCHIVE" --clobber --repo "$GITHUB_REPOSITORY"
gh release edit "$tag" "${flags[@]}" --repo "$GITHUB_REPOSITORY"
exit 0
fi
gh release create "$tag" "$ARCHIVE" "${flags[@]}" --repo "$GITHUB_REPOSITORY"
env:
GH_TOKEN: ${{ github.token }}
TAG: ${{ steps.release.outputs.tag }}
VERSION: ${{ steps.release.outputs.version }}
KIND: ${{ steps.release.outputs.kind }}
ARCHIVE: ${{ steps.archive.outputs.path }}
NOTES: packages/kilo-jetbrains/build/release-notes.md
- name: Upload workflow artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: kilo-jetbrains-${{ steps.release.outputs.version }}
path: packages/kilo-jetbrains/build/distributions/*.zip
if-no-files-found: ignore
+210 -138
View File
@@ -42,7 +42,7 @@ jobs:
runs-on: blacksmith-4vcpu-ubuntu-2404
if: github.repository == 'Kilo-Org/kilocode'
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6 # kilocode_change
with:
fetch-depth: 0
@@ -78,7 +78,7 @@ jobs:
runs-on: blacksmith-4vcpu-ubuntu-2404
if: github.repository == 'Kilo-Org/kilocode'
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6 # kilocode_change
with:
fetch-tags: true
@@ -99,34 +99,214 @@ jobs:
# download-artifact@v4's streaming unzip is CPU-bound and processes entries one by one;
# collapsing ~480 files into one tar cuts build-vscode download from >30m to seconds.
# zstd compresses the wasms (~4x) and leaves the already-compact binaries alone, for
# ~1 GB artifact. compression-level: 0 on the outer zip avoids double-compression.
# zstd + GNU tar are preinstalled on both github-hosted and blacksmith ubuntu-2404.
# See actions/upload-artifact#36, actions/toolkit#1533.
# ~1 GB artifact. upload-artifact@v7's `archive: false` skips the zip wrapper entirely
# so the tarball travels as-is (download-artifact@v8 auto-detects via Content-Type).
# With `archive: false` the `name:` input is ignored; the artifact is named after the
# file (kilo-cli.tar.zst). zstd + GNU tar are preinstalled on both github-hosted and
# blacksmith ubuntu-2404. See actions/upload-artifact#36, actions/toolkit#1533.
- name: Pack CLI dist into tar.zst
run: |
find packages/opencode/dist -name '*.map' -delete
tar --zstd -cf /tmp/kilo-cli.tar.zst -C packages/opencode/dist .
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v7
with:
name: kilo-cli
path: /tmp/kilo-cli.tar.zst
compression-level: 0
archive: false
# kilocode_change end
outputs:
version: ${{ needs.version.outputs.version }}
build-vscode:
# kilocode_change start - execute supported Unix CLI binaries before packaging VSIX artifacts
validate-cli-unix:
name: Validate CLI (${{ matrix.target }})
needs: build-cli
runs-on: ${{ matrix.runner }}
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
include:
- target: darwin-arm64
runner: macos-15
uname: arm64
package: "@kilocode/cli-darwin-arm64"
mode: host
- target: darwin-x64
runner: macos-15-intel
uname: x86_64
package: "@kilocode/cli-darwin-x64"
mode: host
- target: linux-arm64
runner: ubuntu-24.04-arm
uname: aarch64
package: "@kilocode/cli-linux-arm64"
mode: host
- target: linux-x64
runner: ubuntu-24.04
uname: x86_64
package: "@kilocode/cli-linux-x64"
mode: host
- target: alpine-arm64
runner: ubuntu-24.04-arm
uname: aarch64
package: "@kilocode/cli-linux-arm64-musl"
mode: alpine
platform: linux/arm64
- target: alpine-x64
runner: ubuntu-24.04
uname: x86_64
package: "@kilocode/cli-linux-x64-musl"
mode: alpine
platform: linux/amd64
steps:
- uses: actions/download-artifact@v8
with:
name: kilo-cli.tar.zst
path: /tmp
skip-decompress: true
- name: Unpack CLI dist
run: |
mkdir -p dist
tar --zstd -xf /tmp/kilo-cli.tar.zst -C dist
- name: Run CLI smoke test
run: |
test "$(uname -m)" = "${{ matrix.uname }}"
smoke_host() {
binary="$1"
"$binary" --version
root="$(mktemp -d)"
trap 'rm -rf "$root"' RETURN
(
unset KILO_MODELS_PATH KILO_MODELS_URL KILO_CONFIG KILO_CONFIG_DIR
export XDG_DATA_HOME="$root/data"
export XDG_CACHE_HOME="$root/cache"
export XDG_CONFIG_HOME="$root/config"
export XDG_STATE_HOME="$root/state"
export KILO_DISABLE_MODELS_FETCH=1
export KILO_DISABLE_PROJECT_CONFIG=1
export KILO_CONFIG_CONTENT='{"enabled_providers":["anthropic"]}'
export ANTHROPIC_API_KEY=dummy
"$binary" --pure models anthropic | grep -q '^anthropic/'
)
}
if [ "${{ matrix.mode }}" = "host" ]; then
smoke_host "./dist/${{ matrix.package }}/bin/kilo"
exit 0
fi
docker run --rm \
--platform "${{ matrix.platform }}" \
-v "$PWD/dist:/dist:ro" \
-e PACKAGE="${{ matrix.package }}" \
alpine:3.22 \
sh -c '
set -eu
# kilocode_change start - Bun musl binaries link against libstdc++ and libgcc_s
# (GCC C++ runtime). Alpine does not ship these by default; they are available
# as optional packages and must be installed for any Bun-compiled musl binary to run.
apk add --no-cache libstdc++ libgcc
# kilocode_change end
binary="/dist/$PACKAGE/bin/kilo"
"$binary" --version
root="$(mktemp -d)"
trap '\''rm -rf "$root"'\'' EXIT
unset KILO_MODELS_PATH KILO_MODELS_URL KILO_CONFIG KILO_CONFIG_DIR
export XDG_DATA_HOME="$root/data"
export XDG_CACHE_HOME="$root/cache"
export XDG_CONFIG_HOME="$root/config"
export XDG_STATE_HOME="$root/state"
export KILO_DISABLE_MODELS_FETCH=1
export KILO_DISABLE_PROJECT_CONFIG=1
export KILO_CONFIG_CONTENT='\''{"enabled_providers":["anthropic"]}'\''
export ANTHROPIC_API_KEY=dummy
"$binary" --pure models anthropic | grep -q "^anthropic/"
'
validate-cli-windows:
name: Validate CLI (windows-${{ matrix.arch }})
needs: build-cli
runs-on: ${{ matrix.runner }}
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
include:
- arch: arm64
runner: windows-11-arm
package: "@kilocode/cli-windows-arm64"
- arch: x64
runner: windows-2025
package: "@kilocode/cli-windows-x64"
steps:
- uses: actions/download-artifact@v8
with:
name: kilo-cli.tar.zst
path: ${{ runner.temp }}
skip-decompress: true
- name: Install zstd
shell: pwsh
run: |
if (-not (Get-Command zstd -ErrorAction SilentlyContinue)) {
choco install zstandard -y --no-progress
}
- name: Unpack CLI dist
shell: pwsh
run: |
New-Item -ItemType Directory -Force -Path dist | Out-Null
zstd -d --stdout "$env:RUNNER_TEMP\kilo-cli.tar.zst" | tar -xf - -C dist
- name: Run CLI smoke test
shell: pwsh
run: |
$package = "${{ matrix.package }}".Replace("/", "\")
$binary = ".\dist\$package\bin\kilo.exe"
& $binary --version
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
$root = Join-Path $env:RUNNER_TEMP ([guid]::NewGuid().ToString())
New-Item -ItemType Directory -Force -Path $root | Out-Null
try {
foreach ($name in "KILO_MODELS_PATH", "KILO_MODELS_URL", "KILO_CONFIG", "KILO_CONFIG_DIR") {
Remove-Item "Env:$name" -ErrorAction SilentlyContinue
}
$env:XDG_DATA_HOME = Join-Path $root "data"
$env:XDG_CACHE_HOME = Join-Path $root "cache"
$env:XDG_CONFIG_HOME = Join-Path $root "config"
$env:XDG_STATE_HOME = Join-Path $root "state"
$env:KILO_DISABLE_MODELS_FETCH = "1"
$env:KILO_DISABLE_PROJECT_CONFIG = "1"
$env:KILO_CONFIG_CONTENT = '{"enabled_providers":["anthropic"]}'
$env:ANTHROPIC_API_KEY = "dummy"
$output = & $binary --pure models anthropic
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
if (-not ($output -match "(?m)^anthropic/")) {
throw "Compiled Windows binary did not list Anthropic models from the embedded snapshot"
}
} finally {
Remove-Item -Recurse -Force $root -ErrorAction SilentlyContinue
}
# kilocode_change end
build-vscode:
needs:
- build-cli
- validate-cli-unix
- validate-cli-windows
runs-on: blacksmith-4vcpu-ubuntu-2404
if: github.repository == 'Kilo-Org/kilocode'
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6 # kilocode_change
- uses: ./.github/actions/setup-bun
- uses: actions/setup-node@v4
- uses: actions/setup-node@v6 # kilocode_change
with:
node-version: "24"
registry-url: "https://registry.npmjs.org"
@@ -135,10 +315,11 @@ jobs:
run: bun install -g @vscode/vsce
# kilocode_change start - download into /tmp and extract the tar.zst packed by build-cli
- uses: actions/download-artifact@v4
- uses: actions/download-artifact@v8
with:
name: kilo-cli
name: kilo-cli.tar.zst
path: /tmp
skip-decompress: true
- name: Unpack CLI dist
run: |
@@ -154,127 +335,11 @@ jobs:
KILO_PRE_RELEASE: ${{ inputs.pre_release }}
GH_REPO: ${{ github.repository }}
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v7 # kilocode_change
with:
name: kilo-vscode
path: packages/kilo-vscode/out
# build-tauri:
# needs:
# - build-cli
# - version
# continue-on-error: false
# strategy:
# fail-fast: false
# matrix:
# settings:
# - host: macos-latest
# target: x86_64-apple-darwin
# - host: macos-latest
# target: aarch64-apple-darwin
# - host: blacksmith-4vcpu-windows-2025
# target: x86_64-pc-windows-msvc
# - host: blacksmith-4vcpu-ubuntu-2404
# target: x86_64-unknown-linux-gnu
# - host: blacksmith-8vcpu-ubuntu-2404-arm
# target: aarch64-unknown-linux-gnu
# runs-on: ${{ matrix.settings.host }}
# steps:
# - uses: actions/checkout@v3
# with:
# fetch-tags: true
# - uses: apple-actions/import-codesign-certs@v2
# if: ${{ runner.os == 'macOS' }}
# with:
# keychain: build
# p12-file-base64: ${{ secrets.APPLE_CERTIFICATE }}
# p12-password: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
# - name: Verify Certificate
# if: ${{ runner.os == 'macOS' }}
# run: |
# CERT_INFO=$(security find-identity -v -p codesigning build.keychain | grep "Developer ID Application")
# CERT_ID=$(echo "$CERT_INFO" | awk -F'"' '{print $2}')
# echo "CERT_ID=$CERT_ID" >> $GITHUB_ENV
# echo "Certificate imported."
# - name: Setup Apple API Key
# if: ${{ runner.os == 'macOS' }}
# run: |
# echo "${{ secrets.APPLE_API_KEY_PATH }}" > $RUNNER_TEMP/apple-api-key.p8
# - uses: ./.github/actions/setup-bun
# - name: Cache apt packages
# if: contains(matrix.settings.host, 'ubuntu')
# uses: actions/cache@v4
# with:
# path: /var/cache/apt/archives
# key: ${{ runner.os }}-${{ matrix.settings.target }}-apt-${{ hashFiles('.github/workflows/publish.yml') }}
# restore-keys: |
# ${{ runner.os }}-${{ matrix.settings.target }}-apt-
# - name: install dependencies (ubuntu only)
# if: contains(matrix.settings.host, 'ubuntu')
# run: |
# sudo apt-get update
# sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
# - name: install Rust stable
# uses: dtolnay/rust-toolchain@stable
# with:
# targets: ${{ matrix.settings.target }}
# - uses: Swatinem/rust-cache@v2
# with:
# workspaces: packages/desktop/src-tauri
# shared-key: ${{ matrix.settings.target }}
# - name: Prepare
# run: |
# cd packages/desktop
# bun ./scripts/prepare.ts
# env:
# KILO_VERSION: ${{ needs.version.outputs.version }}
# GITHUB_TOKEN: ${{ steps.committer.outputs.token }}
# RUST_TARGET: ${{ matrix.settings.target }}
# GH_TOKEN: ${{ github.token }}
# GITHUB_RUN_ID: ${{ github.run_id }}
# # Fixes AppImage build issues, can be removed when https://github.com/tauri-apps/tauri/pull/12491 is released
# - name: Install tauri-cli from portable appimage branch
# if: contains(matrix.settings.host, 'ubuntu')
# run: |
# cargo install tauri-cli --git https://github.com/tauri-apps/tauri --branch feat/truly-portable-appimage --force
# echo "Installed tauri-cli version:"
# cargo tauri --version
# - name: Build and upload artifacts
# uses: tauri-apps/tauri-action@390cbe447412ced1303d35abe75287949e43437a
# timeout-minutes: 60
# with:
# projectPath: packages/desktop
# uploadWorkflowArtifacts: true
# tauriScript: ${{ (contains(matrix.settings.host, 'ubuntu') && 'cargo tauri') || '' }}
# args: --target ${{ matrix.settings.target }} --config ./src-tauri/tauri.prod.conf.json --verbose
# updaterJsonPreferNsis: true
# releaseId: ${{ needs.version.outputs.release }}
# tagName: ${{ needs.version.outputs.tag }}
# releaseDraft: true
# releaseAssetNamePattern: opencode-desktop-[platform]-[arch][ext]
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# TAURI_BUNDLER_NEW_APPIMAGE_FORMAT: true
# TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
# TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
# APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
# APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
# APPLE_SIGNING_IDENTITY: ${{ env.CERT_ID }}
# APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }}
# APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
# APPLE_API_KEY_PATH: ${{ runner.temp }}/apple-api-key.p8
# kilocode_change start
# Run smoke tests against CLI assets uploaded to the draft GitHub release
# before publishing the release and package artifacts.
@@ -289,16 +354,22 @@ jobs:
cli_version: ${{ needs.version.outputs.version }}
secrets: inherit
# kilocode_change end
publish:
needs:
- version
- build-cli
- build-vscode
- validate-cli-unix # kilocode_change
- validate-cli-windows # kilocode_change
- smoke-test
# - build-tauri
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6 # kilocode_change
# kilocode_change start
with:
persist-credentials: false
# kilocode_change end
- uses: ./.github/actions/setup-bun
@@ -315,10 +386,11 @@ jobs:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- uses: actions/setup-node@v4
- uses: actions/setup-node@v6 # kilocode_change
with:
node-version: "24"
registry-url: "https://registry.npmjs.org"
package-manager-cache: false # kilocode_change
- name: Install @vscode/vsce
run: bun install -g @vscode/vsce
@@ -333,23 +405,24 @@ jobs:
# kilocode_change end
# kilocode_change start - download into /tmp and extract the tar.zst packed by build-cli
- uses: actions/download-artifact@v4
- uses: actions/download-artifact@v8
with:
name: kilo-cli
name: kilo-cli.tar.zst
path: /tmp
skip-decompress: true
- name: Unpack CLI dist
run: |
mkdir -p packages/opencode/dist
tar --zstd -xf /tmp/kilo-cli.tar.zst -C packages/opencode/dist
# kilocode_change end
- uses: actions/download-artifact@v4
- uses: actions/download-artifact@v8
with:
name: kilo-vscode
path: packages/kilo-vscode/out
- name: Cache apt packages (AUR)
uses: actions/cache@v4
uses: actions/cache@v5 # kilocode_change
with:
path: /var/cache/apt/archives
key: ${{ runner.os }}-apt-aur-${{ hashFiles('.github/workflows/publish.yml') }}
@@ -375,7 +448,6 @@ jobs:
GH_REPO: ${{ github.repository }}
AUR_KEY: ${{ secrets.AUR_KEY }}
GITHUB_TOKEN: ${{ steps.committer.outputs.token }}
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_CONFIG_PROVENANCE: true
VSCE_PAT: ${{ secrets.VSCE_TOKEN }}
OPENVSX_TOKEN: ${{ secrets.OVSX_TOKEN }}
+24 -5
View File
@@ -47,7 +47,7 @@ jobs:
KILO_ORG_ID: ${{ secrets.KILO_ORG_ID }}
steps:
- name: Checkout kilo-bench
uses: actions/checkout@v4
uses: actions/checkout@v6 # kilocode_change
with:
repository: Kilo-Org/kilo-bench
token: ${{ secrets.BENCH_GITHUB_TOKEN }}
@@ -96,6 +96,16 @@ jobs:
echo "cli_url=$URL" >> "$GITHUB_OUTPUT"
echo "::notice::Testing CLI v${VERSION} via asset API: $URL"
# Harbor's default agent-setup timeout is 360s. The hello-world container
# (FROM ubuntu:24.04) needs apt-get update + apt-get install + a NodeSource
# curl|bash + apt install nodejs before the CLI even downloads, and on
# the Blacksmith runners that occasionally pushes past 6 min when an apt
# mirror or NodeSource cdn is slow, killing the run with
# AgentSetupTimeoutError. Doubling the multiplier to 2 gives enough
# headroom for transient mirror/cdn slowness while still finishing well
# under timeout-minutes. Note: --timeout-multiplier scales every timeout
# uniformly (setup, agent, verifier, env build), but they're all upper
# limits so this is harmless.
- name: Run smoke test — hello-world
env:
KILO_CLI_URL: ${{ steps.cli.outputs.cli_url }}
@@ -104,7 +114,8 @@ jobs:
./scripts/run_eval.sh \
-m kilo/anthropic/claude-sonnet-4.6 \
-d hello-world \
--job-name smoke-test-hello-world
--job-name smoke-test-hello-world \
--timeout-multiplier 2
- name: Run smoke test — log-summary-date-ranges
env:
@@ -114,19 +125,27 @@ jobs:
./scripts/run_eval.sh \
-m kilo/anthropic/claude-sonnet-4.6 \
-d terminal-bench-sample \
-t "log-summary-date-ranges" \
--job-name smoke-test-log-summary
--include-task-name "log-summary-date-ranges" \
--job-name smoke-test-log-summary \
--timeout-multiplier 2
- name: Validate results
run: python3 scripts/validate_smoke_test.py jobs/smoke-test-*/
# Also upload the agent setup logs (stdout/stderr/return-code from the
# CLI install script) so we can see exactly which step stalls when the
# next AgentSetupTimeoutError happens. These come from the install
# script in kilo-bench, which uses `set -euo pipefail` (no `set -x`)
# and never echoes auth tokens or API keys, so the captured output is
# safe to upload.
- name: Upload results
if: always()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7 # kilocode_change
with:
name: smoke-test-results
path: |
jobs/smoke-test-*/**/result.json
jobs/smoke-test-*/**/trajectory.json
jobs/smoke-test-*/**/agent/setup/*.txt
retention-days: 30
if-no-files-found: warn
+1 -1
View File
@@ -16,7 +16,7 @@ jobs:
if: github.repository == 'Kilo-Org/kilocode'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6 # kilocode_change
- uses: oven-sh/setup-bun@v2
-39
View File
@@ -1,39 +0,0 @@
name: storybook
on:
push:
branches: [dev]
paths:
- ".github/workflows/storybook.yml"
- "package.json"
- "bun.lock"
- "packages/storybook/**"
- "packages/ui/**"
pull_request:
branches: [dev]
paths:
- ".github/workflows/storybook.yml"
- "package.json"
- "bun.lock"
- "packages/storybook/**"
- "packages/ui/**"
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
if: false
name: storybook build
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Bun
uses: ./.github/actions/setup-bun
- name: Build Storybook
run: bun --cwd packages/storybook build
+103
View File
@@ -0,0 +1,103 @@
# kilocode_change - new file
name: test-jetbrains
on:
workflow_call:
workflow_dispatch:
permissions:
contents: read
checks: write
pull-requests: read
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
changes:
name: detect JetBrains changes
runs-on: blacksmith-4vcpu-ubuntu-2404
outputs:
jetbrains: ${{ github.event_name == 'workflow_dispatch' && 'true' || steps.filter.outputs.jetbrains }}
steps:
- name: Checkout repository
if: github.event_name != 'workflow_dispatch'
uses: actions/checkout@v6
- name: Detect JetBrains changes
if: github.event_name != 'workflow_dispatch'
id: filter
uses: Kilo-Org/paths-filter@668c092af3649c4b664c54e4b704aa46782f6f7c # v3
with:
predicate-quantifier: every
filters: |
jetbrains:
- '**'
- '!packages/kilo-vscode/**'
- '!packages/kilo-docs/**'
unit:
name: jetbrains
needs: changes
if: github.event_name == 'workflow_dispatch' || needs.changes.outputs.jetbrains == 'true'
runs-on: blacksmith-4vcpu-ubuntu-2404
container:
image: ghcr.io/kilo-org/build/jetbrains:24.04
defaults:
run:
shell: bash
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Mark workspace as git-safe
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Install dependencies
run: bun install
- name: Run JetBrains unit tests
run: bun script/test-ci.ts
working-directory: packages/kilo-jetbrains
- name: Publish JetBrains unit reports
if: always()
uses: mikepenz/action-junit-report@bccf2e31636835cf0874589931c4116687171386 # v6.4.0
with:
report_paths: packages/kilo-jetbrains/.artifacts/unit/junit.xml
check_name: "unit results (jetbrains)"
detailed_summary: true
include_time_in_summary: true
fail_on_failure: false
- name: Upload JetBrains unit artifacts
if: always()
uses: actions/upload-artifact@v7
with:
name: unit-jetbrains-${{ github.run_attempt }}
include-hidden-files: true
if-no-files-found: ignore
retention-days: 7
path: packages/kilo-jetbrains/.artifacts/unit/junit.xml
required:
name: result
needs:
- changes
- unit
if: always()
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- name: Verify JetBrains jobs passed
run: |
echo "changes=${{ needs.changes.result }}"
echo "jetbrains=${{ needs.unit.result }}"
test "${{ needs.changes.result }}" = "success"
if [ "${{ needs.changes.outputs.jetbrains }}" = "true" ]; then
test "${{ needs.unit.result }}" = "success"
else
test "${{ needs.changes.outputs.jetbrains }}" = "false"
test "${{ needs.unit.result }}" = "skipped"
fi
+1 -1
View File
@@ -27,7 +27,7 @@ jobs:
shell: bash
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6 # kilocode_change
with:
token: ${{ secrets.GITHUB_TOKEN }}
+40 -88
View File
@@ -21,6 +21,7 @@ env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
# kilocode_change start
unit:
name: unit (${{ matrix.settings.name }})
strategy:
@@ -28,24 +29,35 @@ jobs:
matrix:
settings:
- name: linux
host: blacksmith-8vcpu-ubuntu-2404
host: blacksmith-4vcpu-ubuntu-2404 # kilocode_change
- name: windows
host: blacksmith-8vcpu-windows-2025
host: blacksmith-4vcpu-windows-2025 # kilocode_change
runs-on: ${{ matrix.settings.host }}
timeout-minutes: 45 # kilocode_change
defaults:
run:
shell: bash
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6 # kilocode_change
with:
token: ${{ secrets.GITHUB_TOKEN }}
# kilocode_change start
- name: Setup Node
uses: actions/setup-node@v4
id: setup-node
continue-on-error: ${{ runner.os == 'Windows' }}
uses: actions/setup-node@v6 # kilocode_change
with:
node-version: "24"
- name: Retry Setup Node on Windows
if: runner.os == 'Windows' && steps.setup-node.outcome == 'failure'
uses: actions/setup-node@v6
with:
node-version: "24"
# kilocode_change end
- name: Setup Bun
uses: ./.github/actions/setup-bun
@@ -55,7 +67,7 @@ jobs:
git config --global user.name "kilo-maintainer[bot]"
- name: Cache Turbo
uses: actions/cache@v4
uses: actions/cache@v5 # kilocode_change
with:
path: node_modules/.cache/turbo
key: turbo-${{ runner.os }}-${{ hashFiles('turbo.json', '**/package.json') }}-${{ github.sha }}
@@ -64,13 +76,18 @@ jobs:
turbo-${{ runner.os }}-
- name: Run unit tests
run: bun turbo test:ci
run: bun turbo test:ci --filter='!@kilocode/kilo-jetbrains'
env:
KILO_EXPERIMENTAL_DISABLE_FILEWATCHER: ${{ runner.os == 'Windows' && 'true' || 'false' }}
- name: Run HttpApi exerciser gates
if: runner.os == 'Linux'
working-directory: packages/opencode
run: bun run test:httpapi
- name: Publish unit reports
if: always()
uses: mikepenz/action-junit-report@v6
uses: mikepenz/action-junit-report@bccf2e31636835cf0874589931c4116687171386 # v6.4.0
with:
report_paths: packages/*/.artifacts/unit/junit.xml
check_name: "unit results (${{ matrix.settings.name }})"
@@ -80,103 +97,38 @@ jobs:
- name: Upload unit artifacts
if: always()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7 # kilocode_change
with:
name: unit-${{ matrix.settings.name }}-${{ github.run_attempt }}
include-hidden-files: true
if-no-files-found: ignore
retention-days: 7
path: packages/*/.artifacts/unit/junit.xml
# kilocode_change end
e2e:
# kilocode_change - disabled: packages/app is not actively maintained
if: false
name: e2e (${{ matrix.settings.name }})
strategy:
fail-fast: false
matrix:
settings:
- name: linux
host: blacksmith-4vcpu-ubuntu-2404
- name: windows
host: blacksmith-4vcpu-windows-2025
runs-on: ${{ matrix.settings.host }}
env:
PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/.playwright-browsers
defaults:
run:
shell: bash
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "24"
- name: Setup Bun
uses: ./.github/actions/setup-bun
- name: Read Playwright version
id: playwright-version
run: |
version=$(node -e 'console.log(require("./package.json").workspaces.catalog["@playwright/test"])')
echo "version=$version" >> "$GITHUB_OUTPUT"
- name: Cache Playwright browsers
id: playwright-cache
uses: actions/cache@v4
with:
path: ${{ github.workspace }}/.playwright-browsers
key: ${{ runner.os }}-${{ runner.arch }}-playwright-${{ steps.playwright-version.outputs.version }}-chromium
- name: Install Playwright system dependencies
if: runner.os == 'Linux'
working-directory: packages/app
run: bunx playwright install-deps chromium
- name: Install Playwright browsers
if: steps.playwright-cache.outputs.cache-hit != 'true'
working-directory: packages/app
run: bunx playwright install chromium
- name: Run app e2e tests
run: bun --cwd packages/app test:e2e:local
env:
CI: true
# kilocode_change start
KILO_API_KEY: ${{ secrets.KILO_API_KEY }}
KILO_ORG_ID: ${{ secrets.KILO_ORG_ID }}
KILO_DISABLE_SHARE: "true"
KILO_DISABLE_SESSION_INGEST: "true"
KILO_E2E_REQUIRE_PAID: "true"
# kilocode_change end
PLAYWRIGHT_JUNIT_OUTPUT: e2e/junit-${{ matrix.settings.name }}.xml
timeout-minutes: 30
- name: Upload Playwright artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: playwright-${{ matrix.settings.name }}-${{ github.run_attempt }}
if-no-files-found: ignore
retention-days: 7
path: |
packages/app/e2e/junit-*.xml
packages/app/e2e/test-results
packages/app/e2e/playwright-report
# kilocode_change start
jetbrains:
name: jetbrains
permissions:
contents: read
checks: write
pull-requests: read
uses: ./.github/workflows/test-jetbrains.yml
# kilocode_change end
# kilocode_change start
required:
name: test (linux)
runs-on: blacksmith-4vcpu-ubuntu-2404
needs:
- unit
- jetbrains
if: always()
steps:
- name: Verify upstream test jobs passed
run: |
echo "unit=${{ needs.unit.result }}"
echo "jetbrains=${{ needs.jetbrains.result }}"
test "${{ needs.unit.result }}" = "success"
test "${{ needs.jetbrains.result }}" = "success"
# kilocode_change end
-39
View File
@@ -1,39 +0,0 @@
name: triage
on:
issues:
types: [opened]
jobs:
triage:
if: github.repository == 'Kilo-Org/kilocode'
runs-on: blacksmith-4vcpu-ubuntu-2404
permissions:
contents: read
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Setup Bun
uses: ./.github/actions/setup-bun
- name: Setup Kilo
uses: ./.github/actions/setup-kilo
- name: Triage issue
env:
KILO_API_KEY: ${{ secrets.KILO_API_KEY }}
KILO_ORG_ID: ${{ secrets.KILO_ORG_ID }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ISSUE_NUMBER: ${{ github.event.issue.number }}
ISSUE_TITLE: ${{ github.event.issue.title }}
ISSUE_BODY: ${{ github.event.issue.body }}
run: |
kilo run --agent triage "The following issue was just opened, triage it:
Title: $ISSUE_TITLE
$ISSUE_BODY"
+52 -4
View File
@@ -8,14 +8,62 @@ on:
workflow_dispatch:
jobs:
typecheck:
typecheck-js:
name: typecheck-js
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6 # kilocode_change
- name: Setup Bun
uses: ./.github/actions/setup-bun
- name: Run typecheck
run: bun typecheck
# kilocode_change start
- name: Run TypeScript typecheck
run: bun turbo typecheck --filter='!@kilocode/kilo-jetbrains'
- name: Build Kilo Console
run: bun turbo build --filter=@kilocode/kilo-console
# kilocode_change end
# kilocode_change start
typecheck-jetbrains:
name: typecheck-jetbrains
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Setup Bun
uses: ./.github/actions/setup-bun
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "21"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-read-only: ${{ github.ref != 'refs/heads/main' }}
- name: Run JetBrains typecheck
run: ./gradlew typecheck
working-directory: packages/kilo-jetbrains
required:
name: typecheck
runs-on: blacksmith-4vcpu-ubuntu-2404
needs:
- typecheck-js
- typecheck-jetbrains
if: always()
steps:
- name: Verify typecheck jobs passed
run: |
echo "typecheck-js=${{ needs.typecheck-js.result }}"
echo "typecheck-jetbrains=${{ needs.typecheck-jetbrains.result }}"
test "${{ needs.typecheck-js.result }}" = "success"
test "${{ needs.typecheck-jetbrains.result }}" = "success"
# kilocode_change end
+41 -28
View File
@@ -12,22 +12,26 @@ jobs:
matched: ${{ steps.filter.outputs.matched }}
is_fork: ${{ steps.fork-check.outputs.is_fork }}
steps:
- uses: actions/checkout@v4
- uses: Kilo-Org/paths-filter@master
- uses: actions/checkout@v6 # kilocode_change
# kilocode_change start
- name: Check changed files
id: filter
with:
filters: |
matched:
- "packages/kilo-ui/**"
- "packages/ui/**"
- "packages/util/**"
- "packages/sdk/js/**"
- "packages/kilo-vscode/webview-ui/**"
- "packages/kilo-vscode/.storybook/**"
- "packages/kilo-vscode/tests/visual-regression*"
- "packages/kilo-vscode/tests/permission-dock-dropdown*"
- "packages/kilo-docs/public/img/screenshot-tests/**"
- ".github/workflows/visual-regression.yml"
env:
GH_TOKEN: ${{ github.token }}
PR: ${{ github.event.pull_request.number }}
run: |
matched=false
while IFS= read -r file; do
case "$file" in
packages/kilo-ui/*|packages/ui/*|packages/util/*|packages/sdk/js/*|packages/kilo-vscode/webview-ui/*|packages/kilo-vscode/.storybook/*|packages/kilo-vscode/tests/visual-regression*|packages/kilo-vscode/tests/permission-dock-dropdown*|packages/kilo-vscode/tests/accessibility*|packages/kilo-docs/public/img/screenshot-tests/*|.github/workflows/visual-regression.yml)
matched=true
break
;;
esac
done < <(gh api --paginate "repos/${GITHUB_REPOSITORY}/pulls/${PR}/files" --jq '.[].filename')
echo "matched=$matched" >> "$GITHUB_OUTPUT"
echo "matched=$matched"
# kilocode_change end
- name: Check if PR is from a fork
id: fork-check
run: |
@@ -47,7 +51,7 @@ jobs:
steps:
- name: Checkout (internal)
if: needs.check-paths.outputs.is_fork != 'true'
uses: actions/checkout@v4
uses: actions/checkout@v6 # kilocode_change
with:
lfs: true
token: ${{ secrets.BOT_PAT }}
@@ -55,7 +59,7 @@ jobs:
- name: Checkout (fork)
if: needs.check-paths.outputs.is_fork == 'true'
uses: actions/checkout@v4
uses: actions/checkout@v6 # kilocode_change
with:
lfs: true
@@ -77,7 +81,7 @@ jobs:
bun-version: latest
- name: Cache Bun modules
uses: actions/cache@v4
uses: actions/cache@v5 # kilocode_change
with:
path: ~/.bun/install/cache
key: bun-${{ hashFiles('bun.lock') }}
@@ -87,7 +91,7 @@ jobs:
- name: Cache Playwright browsers
id: playwright-cache
uses: actions/cache@v4
uses: actions/cache@v5 # kilocode_change
with:
path: ~/.cache/ms-playwright
key: playwright-${{ hashFiles('packages/kilo-ui/package.json') }}
@@ -103,7 +107,7 @@ jobs:
- name: Cache Storybook build
id: storybook-cache
uses: actions/cache@v4
uses: actions/cache@v5 # kilocode_change
with:
path: packages/kilo-ui/storybook-static
key: storybook-${{ hashFiles('packages/kilo-ui/src/**', 'packages/kilo-ui/.storybook/**', 'packages/ui/src/**', 'packages/kilo-ui/package.json') }}
@@ -195,7 +199,7 @@ jobs:
- name: Upload test results on failure
if: failure()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7 # kilocode_change
with:
name: visual-regression-results
path: packages/kilo-ui/test-results/
@@ -207,11 +211,15 @@ jobs:
name: Visual Regression (kilo-vscode webview)
runs-on: blacksmith-4vcpu-ubuntu-2404
timeout-minutes: 15
# kilocode_change start
env:
NODE_OPTIONS: --max-old-space-size=4096
# kilocode_change end
steps:
- name: Checkout (internal)
if: needs.check-paths.outputs.is_fork != 'true'
uses: actions/checkout@v4
uses: actions/checkout@v6 # kilocode_change
with:
lfs: true
token: ${{ secrets.BOT_PAT }}
@@ -219,7 +227,7 @@ jobs:
- name: Checkout (fork)
if: needs.check-paths.outputs.is_fork == 'true'
uses: actions/checkout@v4
uses: actions/checkout@v6 # kilocode_change
with:
lfs: true
@@ -241,7 +249,7 @@ jobs:
bun-version: latest
- name: Cache Bun modules
uses: actions/cache@v4
uses: actions/cache@v5 # kilocode_change
with:
path: ~/.bun/install/cache
key: bun-${{ hashFiles('bun.lock') }}
@@ -251,7 +259,7 @@ jobs:
- name: Cache Playwright browsers
id: playwright-cache-vscode
uses: actions/cache@v4
uses: actions/cache@v5 # kilocode_change
with:
path: ~/.cache/ms-playwright
key: playwright-vscode-${{ hashFiles('packages/kilo-vscode/package.json') }}
@@ -267,7 +275,7 @@ jobs:
- name: Cache Storybook build
id: storybook-cache-vscode
uses: actions/cache@v4
uses: actions/cache@v5 # kilocode_change
with:
path: packages/kilo-vscode/storybook-static
key: storybook-vscode-${{ hashFiles('packages/kilo-vscode/webview-ui/src/**', 'packages/kilo-vscode/.storybook/**', 'packages/kilo-ui/src/**', 'packages/ui/src/**', 'packages/kilo-vscode/package.json') }}
@@ -276,13 +284,18 @@ jobs:
if: steps.storybook-cache-vscode.outputs.cache-hit != 'true'
run: bun run build-storybook
working-directory: packages/kilo-vscode
# kilocode_change start
env:
NODE_OPTIONS: --max-old-space-size=4096
# kilocode_change end
- name: Generate baselines for new/missing stories
- name: Generate baselines and enforce webview accessibility checks # kilocode_change
run: bun run test:visual:update
working-directory: packages/kilo-vscode
env:
CI: true
PLAYWRIGHT_WORKERS: "4"
NODE_OPTIONS: --max-old-space-size=4096 # kilocode_change
- name: Remove stale baselines for deleted stories
run: |
@@ -386,7 +399,7 @@ jobs:
- name: Upload test results on failure
if: failure()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7 # kilocode_change
with:
name: visual-regression-vscode-results
path: packages/kilo-vscode/test-results/
@@ -12,7 +12,7 @@ permissions:
jobs:
check-release:
if: vars.OPENCODE_WATCH_ENABLED != 'false'
if: github.repository == 'Kilo-Org/kilocode' && vars.OPENCODE_WATCH_ENABLED != 'false'
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
@@ -40,9 +40,12 @@ jobs:
env:
URL: ${{ secrets.OPENCODE_WATCH_SYNC_URL }}
SECRET: ${{ secrets.OPENCODE_WATCH_SYNC_SECRET }}
VERCEL: ${{ secrets.OPENCODE_WATCH_VERCEL_SECRET }}
run: |
if [ -n "$URL" ] && [ -n "$SECRET" ]; then
curl -sf -X POST "$URL" -H "x-sync-secret: $SECRET" -H "Content-Type: application/json" -d '{}' || true
headers=(-H "x-sync-secret: $SECRET" -H "Content-Type: application/json")
[ -n "$VERCEL" ] && headers+=(-H "x-vercel-protection-bypass: $VERCEL")
curl -sf -X POST "$URL" "${headers[@]}" -d '{}' || true
fi
- if: steps.fetch.outputs.tag != '' && steps.cache.outputs.cache-hit != 'true'
+19 -1
View File
@@ -1,9 +1,11 @@
.husky/_
.DS_Store
.secrets/
node_modules
.worktrees
.sst
.env
.env.local
.idea/*
!.idea/gradle.xml
!.idea/.run
@@ -33,9 +35,11 @@ a.out
target
.scripts
.direnv/
packages/kilo-jetbrains/build-tasks/.gradle/
# Local dev files
opencode-dev
.kilo-dev/
UPCOMING_CHANGELOG.md
logs/
*.bun-build
@@ -45,8 +49,22 @@ telemetry-id
tsconfig.tsbuildinfo
# Kilo
.kilo/.gitignore
.kilo/package.json
.kilo/package-lock.json
.kilo/pnpm-lock.yaml
.kilo/bun.lock
.kilo/yarn.lock
.kilo/node_modules
.kilo/plans/*upstream-merge-report-*.md
.kilocode/.gitignore
.kilocode/package.json
.kilocode/package-lock.json
.kilocode/pnpm-lock.yaml
.kilocode/bun.lock
.kilocode/yarn.lock
.kilocode/node_modules
# Test Artifacts
packages/app/.artifacts/
packages/opencode/.artifacts/
packages/opencode/.artifacts/
+5
View File
@@ -0,0 +1,5 @@
# Fake secret-looking strings used by HTTP recorder redaction tests.
afa57acfda894e0ebf3c637dd710310b705c0a2f:packages/http-recorder/test/record-replay.test.ts:generic-api-key:69
afa57acfda894e0ebf3c637dd710310b705c0a2f:packages/http-recorder/test/record-replay.test.ts:generic-api-key:92
afa57acfda894e0ebf3c637dd710310b705c0a2f:packages/http-recorder/test/record-replay.test.ts:generic-api-key:146
afa57acfda894e0ebf3c637dd710310b705c0a2f:packages/http-recorder/test/record-replay.test.ts:gcp-api-key:71
+421
View File
@@ -0,0 +1,421 @@
---
description: Resolve upstream opencode merge conflicts interactively
mode: primary
permission:
read: ask
edit: ask
webfetch: ask
bash:
"*": ask
"git status *": allow
"git log *": allow
"git diff *": allow
"git show *": allow
"git ls-files *": allow
"git ls-tree *": allow
"git grep *": allow
"git hash-object *": allow
"git remote -v *": allow
"git rev-parse *": allow
"git merge-base *": allow
"git show-ref *": allow
"git worktree list": allow
"git branch --show-current": allow
"grep *": allow
"rg *": allow
"head *": allow
"tail *": allow
"cat *": allow
"wc *": allow
"ls *": allow
"pwd *": allow
"diff *": allow
"gh pr view *": allow
"gh run view *": allow
"gh api \"repos/sst/opencode/commits/dev\" *": allow
"axiom *": allow
"bun test *": allow
"bun run typecheck *": allow
"bun run lint *": allow
"bun run script/check-opencode-annotations.ts *": allow
"script/upstream/find-conflict-markers.sh *": allow
"./script/upstream/find-conflict-markers.sh *": allow
---
Resolve the manual part of an upstream merge.
**Do not load the `kilocode-merge-minimizer` skill.** That skill is for
authoring new Kilo changes against shared upstream files; during an upstream
merge it gives the wrong guidance (it nudges toward extracting Kilo logic out
of conflict regions, which is exactly the opposite of what merge resolution
needs). Follow the rules in this agent file instead.
The user will provide the upstream version (for example `v1.1.50` or `1.1.50`)
in their first message. If they don't, infer it from the current branch name,
from `upstream-merge-report-<version>.md`, or from the newest relevant report
file.
## Workflow
### 1. Inspect the current merge state
- `git status --short`
- `git diff --name-only --diff-filter=U`
- `upstream-merge-report-<version>.md` when present
- `.worktrees/opencode-merge/auto-merge` for the automated merge snapshot when present
### 2. Read every conflicted file end-to-end before planning
Use `script/upstream/find-conflict-markers.sh <file>` to jump to each region,
then read enough surrounding lines to understand the code — not just the
conflict hunk. Specifically check:
- is this a plain 3-way on a single expression, or a structural refactor?
- does upstream rename/move something that invalidates a HEAD-only declaration?
- does a `kilocode_change` marker in HEAD encode a bug fix, a feature, or a
defensive check?
- is the conflicted block referenced by *non-conflicted* code elsewhere in the
same file (imports, signatures, call sites) that will break if we drop it?
When HEAD includes a non-obvious Kilo-specific wrapper (e.g. a helper in
`packages/opencode/src/kilocode/`), find out why it exists before deciding to
keep or bypass it:
```bash
git log --all --oneline -S "<symbol>" -- packages/opencode/src/kilocode/
git log --all --oneline -- <kilo-file>
```
Look at the commit message and any PR reference. "We wrote our own because of
PR #NNNN" is a real constraint; "we wrote our own because of a typo" is not.
When upstream narrows an externally-visible compatibility list (models,
providers, routes, config keys, file formats), verify the intent from upstream
PRs, issues, release notes, or current docs before dropping entries. Treat
silent list shrinkage during a refactor as suspicious until proven intentional.
### 3. Write a plan in chat and get approval
For every conflicted file (and any adjacent file the resolution forces you to
touch — see §6) include:
- expected resolution kind: `hybrid`, `take-ours`, `take-theirs`, `regenerated`,
`removed`, `renamed`, or `other`
- risk level: `low`, `medium`, or `high`
- one-sentence rationale (what Kilo behaviour is preserved, what upstream
feature is adopted, what is dropped)
- verification commands you expect to run (targeted tests, typecheck)
Group files by risk level. Ask the user which batch to start with. You can
resolve an entire `low` batch in one pass if the user approves the batch, but
resolve `medium` and `high` files one at a time.
**Do not resolve a file until the user has approved that file's (or batch's)
strategy.**
### 4. Before every edit, explain reasoning before showing the diff
The user needs to review intent, not just the raw change. For each file, in
order:
1. Show the conflict's surrounding context (1030 lines around each conflict
region, in chat).
2. Explain what each of the three sides (HEAD, merge-base, upstream) is doing.
3. State which Kilo behaviour must survive and why (reference PR numbers /
`kilocode_change` comments when possible).
4. State the resolution and why it is better than the alternatives.
5. Then apply the edit. The tool will display the diff — the user only has to
verify the diff matches the reasoning.
Do not lead with the diff. A diff without reasoning forces the user to
reverse-engineer the decision.
### 5. Apply resolution rules
Reference worktrees when present:
- `.worktrees/opencode-merge/opencode` — pristine upstream tree
- `.worktrees/opencode-merge/kilo-main` — Kilo base snapshot
- `.worktrees/opencode-merge/auto-merge` — automated merge snapshot (original
conflict reference)
Apply in order:
- prefer upstream code and architecture whenever compatible with Kilo behaviour
- preserve Kilo-specific behaviour marked with `kilocode_change`
- keep `kilocode_change` markers around Kilo-specific code in shared opencode
files
- when upstream refactors a region that HEAD had annotated with
`kilocode_change`, **check whether the marker encodes a bug fix or a feature
delta**. Bug fixes (missing `await`, defensive null-check, error capture)
usually need to be re-applied on top of the upstream refactor. Example from
v1.14.30: `Workspace.isSyncing` was missing an `await` — upstream's Effect
refactor reintroduced the same bug, so we had to port the fix into the new
`Effect.gen` block.
- when a `take-theirs` drops a line that was the target of a Kilo pre-filter,
the upstream line may be actively wrong for Kilo — e.g. an inner `continue`
filter whose condition collides with an outer filter Kilo added. Re-read the
surrounding 20 lines before committing to `take-theirs`.
- if Kilo-specific code must be refactored to fit new upstream architecture,
explain the refactor in the final summary
- if upstream moved the relevant logic to another file, port the Kilo behaviour
there and list both paths in the final summary. Verify the new file already
carries the Kilo-renamed symbols (e.g. `x-kilo-directory`) by diffing against
pristine upstream.
- if upstream extracts shared policy into a helper, move Kilo-specific additions
into the helper when possible instead of keeping a pre-check at the old call
site. The extracted helper should stay the source of truth for all callers.
- if upstream deleted a file, analyse whether the Kilo behaviour should be
ported elsewhere or removed rather than restoring the deleted file
- if tests fail only because upstream intentionally removed behaviour, remove
or update the obsolete tests rather than adding the old file back
- do not modify unrelated files
When removing code that existed in one side of a conflict, prefer
**commenting it out with `kilocode_change` markers** over deletion when the
surrounding structure (an `if`, a loop) still makes sense. That keeps the
intent visible to the next merger. Example:
```ts
} else if (input?.scope !== "project" && !Flag.KILO_EXPERIMENTAL_WORKSPACES) {
// kilocode_change start - directory filtering handled by KiloSession.filters above
// if (input?.directory) {
// conditions.push(eq(SessionTable.directory, input.directory))
// }
// kilocode_change end
}
```
Use `TODO:` not `NOTE:` for follow-ups. `TODO` is searchable and implies an
owner will act on it; `NOTE` reads as permanent commentary.
### 6. Look for adjacent files the conflict forces you to touch
Upstream restructures sometimes split one file into several (e.g. `permission.ts`
`groups/permission.ts` + `handlers/permission.ts`). Only the *renamed* file
shows up in `git diff --diff-filter=U`; the new sibling may need a Kilo feature
ported in too. After resolving the flagged file, check:
- files that import from the resolved file — do they compile?
- files at paths implied by new imports (e.g. `../middleware/*`, `./handlers/*`)
- `kilocode_change` comments in the *auto-merge* snapshot that didn't end up in
the working tree because the hosting file was renamed
Add any such files to the plan as `hybrid` or `take-ours` with the same
approval flow.
### 6.5. Scan auto-merged files for latent bugs
Files not in `--diff-filter=U` merged without conflict markers but may still
be broken. Check every auto-merged file for:
- **Duplicate declarations in the same scope.** If both sides added equivalent
code independently, auto-merge keeps both. Grep touched functions for
repeated identifiers before trusting the merge.
- **Duplicate keys in config/manifest files.** If both sides added the same
entry to a shared manifest (dependencies, scripts, workflow lists), the
merged file may have the key twice. This often breaks install/setup before
any test runs — a cheap early win to scan for.
- **Orphaned imports and references.** A rename upstream may leave a Kilo
callsite pointing at a now-missing export. Run full typecheck from the repo
root; references that silently survived the merge surface there.
- **Partial auto-merges.** Upstream may have refactored a region Kilo
deliberately stubbed out (commented blocks, removed fallbacks). If the
auto-merge pulled in references to names that only exist in the removed
path, the file compiles upstream but breaks on Kilo.
### 7. Verify each resolution before moving on
- confirm `script/upstream/find-conflict-markers.sh <file>` prints nothing
- read the final file region (the new shape after edit) and sanity-check imports
- for apparently-unused symbols upstream introduced, `grep` the file and the
rest of the package before deleting — they may be called from non-conflicted
code elsewhere. Example: `isTheme` in `theme.tsx` looked unused at the
resolution site but was called twice further down.
- run the smallest relevant check (single `bun test` file, or `bun run
typecheck` in the touched package)
- summarise the exact resolution, tradeoff, and verification result in chat
- ask the user to approve the resolved file before staging it or resolving the
next one (for `medium` / `high`; `low` batches can be staged together)
### 8. Run the full checks once everything is resolved
- `git diff --name-only --diff-filter=U` returns empty
- `bun run typecheck` from `packages/opencode/` (targeted) and from repo root
(catches non-conflicted call-site breakage)
- relevant targeted tests. Tests that hang or time out in an unrelated part of
the graph may be pre-existing — note them, don't block the merge on them
- `bun run script/check-opencode-annotations.ts` if `packages/opencode/` shared
files changed. Note that this tool compares against the merge base via `HEAD`
and will be silent until the merge commit lands
- other CI guards that touched files imply (knip for `kilo-vscode/`,
`check-kilocode-change`, source-links, visual regression,
`script/check-forbidden-strings.ts`)
- if you encounter a hardcoded upstream URL, repo path, or attribution string
during conflict resolution that obviously shouldn't ship in Kilo (e.g. another
`https://opencode.ai/...` link, an `anomalyco/opencode` reference, an
attribution header naming "opencode"), suggest adding a literal pattern for
it to `script/check-forbidden-strings.ts` in the merge summary so future
merges catch it automatically. Don't add it silently mid-merge — flag it for
the user.
### 9. Commit with the standard message
Per `script/upstream/README.md`:
```bash
git commit -m "resolve merge conflicts"
```
The default `git merge` auto-message (`Merge branch '…' into …`) is also fine,
but `resolve merge conflicts` is the convention for these PRs.
### 9.5. Handle downstream API renames as separate commits
Upstream often renames exported APIs. The rename itself auto-merges cleanly in
shared code, but the change cascades into Kilo-only files (kilocode tests,
kilo-specific source, plugins) that still reference the old symbol. Those
files don't appear in `--diff-filter=U` because their own content didn't
conflict.
Keep the behavioural merge commit focused on resolution decisions. Land the
cascade in one or more follow-up commits:
- after the merge commit, run full repo typecheck and collect every "cannot
find name" / "property does not exist" error
- bulk-rename with a mechanical transform when the rename is one-to-one
- restructure or parameter-thread when upstream changed semantics, not just
the name (e.g. moved a helper behind a dependency-injected surface, so
callers now need the injected handle)
- split large downstream refactors into their own commits with messages that
name the rename
Reviewers can then skim the behavioural commit without untangling mechanical
rename noise from merge decisions.
### 9.6. Handle upstream-added tests that diverge from Kilo
Upstream sometimes adds tests that encode design contracts Kilo intentionally
breaks. These auto-merge cleanly and then fail. Three resolution patterns:
- **Rewrite the test** when the test is a contract assertion and Kilo has a
different but equally valid contract. Invert or adjust the assertion with a
`kilocode_change` marker explaining the divergence.
- **Skip the test** when the test relies on patterns that Kilo has replaced
(interception seams that are bypassed by dependency injection, fixture
helpers bound to a removed API, assumptions about serialization shape that
Kilo's extensions break). Mark with `kilocode_change` and a rationale
explaining what would need to change for the test to run.
- **Delete the test** when it covers functionality Kilo deliberately removed
(fallback paths, deprecated endpoints, products Kilo doesn't ship). Note
the deletion in the PR body.
Never silently delete; always leave a breadcrumb. A future reviewer should be
able to understand why this one upstream test is treated differently.
### 10. Resync version strings in a separate commit
Upstream stamps its own version into shared files — notably
`packages/extensions/zed/extension.toml` (version field + 5 Kilo-Org download
URLs), and any `package.json` that upstream bumped in the same release window.
After the merge this leaves parts of the tree pointing at upstream's version
(e.g. `1.14.30`), whose release tag does not exist on Kilo's pipeline, so the
Zed download URLs silently 404.
Fix this in a dedicated commit *after* `resolve merge conflicts`:
```bash
bun run script/sync-versions.ts # uses root package.json version
# or, to target an explicit version:
bun run script/sync-versions.ts 7.2.41
git add -A
git commit -m "chore: resync versions after upstream merge"
```
The script rewrites every top-level `"version"` in `package.json` files
(excluding `node_modules`, hidden dirs, and `packages/kilo-jetbrains/` which
tracks its own cadence), plus the Zed extension toml. It is idempotent — rerun
it any time to rebase the version back onto Kilo main (useful during
long-running upstream merges where `main` releases in the meantime).
Keeping this in its own commit makes reviewers' job easier: the merge commit
only contains behavioural resolutions, and the version resync is a trivial
diff they can skim in one glance.
### 11. Write the PR body
Structure the description so reviewers can skim:
- **Non-trivial merge decisions**: a short section per file (or group of
related files) that required more than a mechanical `take-ours`/`take-theirs`.
Focus on *what Kilo behaviour survived* and *what upstream features were
adopted*. Link to Kilo PRs when a `kilocode_change` encodes a specific fix.
- **Notable auto-merged changes**: new columns, new helper files, renamed
middleware — anything reviewers should eyeball even though git didn't flag
it.
- **What to test**: explicit, scenario-level test steps for each non-trivial
change. Don't list tests; list *user-visible behaviour* so a tester who
doesn't read the diff can exercise it.
- **CI guards to watch**: typecheck, knip, annotation check, visual regression.
- **Follow-ups**: any `TODO:` you left in code, as a bullet list with links.
## User-approval checkpoints
Every manual merge decision requires explicit user approval **before applying**
and **again after verification**. Be especially cautious when a decision is
destructive, changes auth, billing, data deletion, public API compatibility,
config schema behaviour, migrations, provider routing, or security posture.
## Common pitfalls
- Auto-merged code can reference declarations that still live inside conflict
blocks.
- Related sibling files can need edits even when they are not listed as
unmerged — especially after upstream structural splits.
- `renamed` should be used only when behaviour moves to a different file.
- Function signatures can drift across conflict boundaries (args added, return
types widened). Grep for every call site before finalising.
- Full-repo typecheck is the catch-all for non-conflicted call-site breakage.
- Upstream can reintroduce bugs a Kilo `kilocode_change` had already fixed —
during big refactors check every `kilocode_change` the refactor touched.
- "Take-theirs" on an inner conditional is often wrong when Kilo added an outer
pre-filter whose whole point was to widen what makes it to the inner block.
- Apparently-unused upstream-added declarations may be called from
non-conflicted code elsewhere. Grep before deleting.
- Stricter DOM lib types (upstream TS upgrade) can surface latent casting
issues around `WebSocket.send`, `Headers`, etc. — prefer narrowing the Kilo
type over adding `any` casts.
- Auto-merge can duplicate the same declaration twice in one scope when both
sides added equivalent code independently. Silent for git, caught by
typecheck. Same hazard for duplicated object keys in config/manifest files —
those can break install before any test runs.
- Kilo code may rely on ambient context (async-local storage, globally-set
flags, process env) being populated at a lifecycle moment that upstream
refactors away. If Kilo behaviour reads ambient state during init, forked
work, or event handlers, check the refactor still establishes that state at
the right time. Fix by restoring the ambient state, or by threading the
needed value through explicitly.
- Tests that intercept via process-global or module-global spies can become
no-ops after upstream moves the intercepted code path through dependency
injection. The production code no longer touches the spied symbol. Fixing
the test usually means injecting a mock at the new seam rather than tweaking
the spy.
- When Kilo extends a shared data shape with extra optional fields, different
serialization paths for that shape can diverge on whether missing values are
omitted or emitted as null. Parity tests between two such paths break on
every Kilo addition — audit the encoding assumption before adding fields.
- Rule ordering in allowlist/permission evaluation is usually last-match-wins.
Re-declaring a catch-all rule "for safety" in a later ruleset silently
overrides more specific allow rules from an earlier ruleset. Treat a
redundant catch-all as destructive, not defensive.
- Upstream-added tests can encode a design contract Kilo deliberately breaks.
The test passes upstream because upstream doesn't share Kilo's requirement.
Decide between refactoring Kilo to match the upstream contract or rewriting
the test to assert Kilo's divergent contract — with a `kilocode_change`
marker explaining the divergence.
- CI and local can show different test failures. Tests that read user-local
state (home dir, global config, auth tokens) pass in one environment but
fail in the other. A green local run does not imply green CI.
- Dependency manifests and lockfiles move together. When the merge edits one,
regenerate and commit the other in the same change — otherwise CI breaks on
the follow-up setup step.
+69
View File
@@ -0,0 +1,69 @@
---
description: Review an upstream merge PR and write reports
---
Review $1.
Branch off so we have all the code for the reviewed PR. Then run the following reviews in parallel, using one subagent per review, and save each result in the named markdown file at the repository root. A human will read those files, so if in doubt add a finding for human verification.
When all subagents are done, commit the report files and create a draft PR with the reviewed PR branch as base.
Do not include exhaustive per-file checklists in the report files. Summarize the scope and methodology, then list only findings, notable non-findings, command outputs, and limitations.
## KILOCODE_CHANGE_MARKERS.md
Review carefully, file by file, whether we accidentally removed any `kilocode_change` marker.
Get the full list of files changed in the reviewed PR. Check each changed file. For each file, compare both our `main` branch and the upstream-merged version in the reviewed PR. Determine whether any marker removal, marker move, or Kilo-specific change makes sense, and comment on that.
Do not include a full "Files Checked" section. Mention the number of changed files checked, but only list files that have findings or need human verification.
## INFRASTRUCTURE_CHANGE.md
Review whether this PR adds, removes, or changes any infrastructure, such as GitHub Actions, CI config, release/deploy scripts, Docker/build infrastructure, package manager/workspace infrastructure, repository automation, issue templates, changelog automation, or generated SDK/build automation.
We want to merge upstream code but keep our own infrastructure, so flag anything infrastructure-related. When in doubt, add a finding and say a human should check manually.
Do not include a full "Files Checked" section. Only list infrastructure-relevant files and findings.
## OPENCODE_MENTIONS.md
Check whether the merge now mentions OpenCode somewhere user-facing instead of Kilo, or links to OpenCode web properties.
Focus on UI strings, docs, help text, package metadata shown to users, URLs, CLI output, config docs, generated SDK/OpenAPI descriptions, and error messages.
## UNNECESSARY_MARKERS.md
Check whether any merged files now use `kilocode_change` markers without any actual difference to upstream.
Use `script/upstream/find-reset-candidates.ts --dry-run` to see whether any files changed in the PR are actually now identical to upstream. If you find candidates, verify them with `script/upstream/reset-to-upstream.ts --dry-run`.
## BROKEN_PIPELINE_CHAINS.md
Review this PR for broken end-to-end chains where our custom functionality requires changes across multiple files or layers, but the merge may have removed or altered an intermediate step. The code may still compile, so these issues can be silent.
Look for cases like:
- A parameter that is set but never read.
- A field that is populated but never passed through.
- An event that is emitted but no longer handled.
- A config option that is defined but never propagated to where it is used.
- A type definition extended on one side but not consumed on the other.
For each `kilocode_change` in this PR, trace the full chain: where the value or behavior is introduced, where it needs to flow through, and where it is ultimately consumed. Verify every link in the chain still exists after the merge.
Pay special attention to:
- Props or parameters passed through multiple component or function layers.
- Values written to state, context, or storage that are read elsewhere.
- Message types, events, or IPC handlers where sender and receiver must match.
- Configuration or feature flags defined in one place and checked in another.
- Type definitions extended on one side but consumed on the other.
When in doubt, add a finding. A human will verify it. Compiling code is not proof the chain is intact.
## TESTS.md
Check whether this PR removed any Kilo-specific tests.
Kilo-specific tests may live in paths containing `kilo` or `kilocode`, or may include Kilo-specific assertions, fixtures, or `kilocode_change` markers.
-376
View File
@@ -1,376 +0,0 @@
{
"name": ".kilo",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"dependencies": {
"@kilocode/plugin": "7.2.24"
}
},
"node_modules/@kilocode/plugin": {
"version": "7.2.24",
"resolved": "https://registry.npmjs.org/@kilocode/plugin/-/plugin-7.2.24.tgz",
"integrity": "sha512-b2Xh3N/KaGdYj9hZbzZLKlDHXUsdMey0zL8G+RsnxDQCuhNm46LPyixtlJQhbCyir/zEEvy3uJI9kqKCsOWmQg==",
"license": "MIT",
"dependencies": {
"@kilocode/sdk": "7.2.24",
"effect": "4.0.0-beta.48",
"zod": "4.1.8"
},
"peerDependencies": {
"@opentui/core": ">=0.1.100",
"@opentui/solid": ">=0.1.100"
},
"peerDependenciesMeta": {
"@opentui/core": {
"optional": true
},
"@opentui/solid": {
"optional": true
}
}
},
"node_modules/@kilocode/sdk": {
"version": "7.2.24",
"resolved": "https://registry.npmjs.org/@kilocode/sdk/-/sdk-7.2.24.tgz",
"integrity": "sha512-Yos6WeyvMl86OGXLQqQ9YWDm/geAC77xetoptEsS3DLtPVgvz1Nqkvas77fAuAqwkSfGL2mLIiHUTqJUTVflOw==",
"license": "MIT",
"dependencies": {
"cross-spawn": "7.0.6"
}
},
"node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz",
"integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz",
"integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz",
"integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==",
"cpu": [
"arm"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz",
"integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz",
"integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz",
"integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@standard-schema/spec": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz",
"integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==",
"license": "MIT"
},
"node_modules/cross-spawn": {
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
"license": "MIT",
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
"which": "^2.0.1"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/detect-libc": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
"integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
"license": "Apache-2.0",
"optional": true,
"engines": {
"node": ">=8"
}
},
"node_modules/effect": {
"version": "4.0.0-beta.48",
"resolved": "https://registry.npmjs.org/effect/-/effect-4.0.0-beta.48.tgz",
"integrity": "sha512-MMAM/ZabuNdNmgXiin+BAanQXK7qM8mlt7nfXDoJ/Gn9V8i89JlCq+2N0AiWmqFLXjGLA0u3FjiOjSOYQk5uMw==",
"license": "MIT",
"dependencies": {
"@standard-schema/spec": "^1.1.0",
"fast-check": "^4.6.0",
"find-my-way-ts": "^0.1.6",
"ini": "^6.0.0",
"kubernetes-types": "^1.30.0",
"msgpackr": "^1.11.9",
"multipasta": "^0.2.7",
"toml": "^4.1.1",
"uuid": "^13.0.0",
"yaml": "^2.8.3"
}
},
"node_modules/fast-check": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/fast-check/-/fast-check-4.7.0.tgz",
"integrity": "sha512-NsZRtqvSSoCP0HbNjUD+r1JH8zqZalyp6gLY9e7OYs7NK9b6AHOs2baBFeBG7bVNsuoukh89x2Yg3rPsul8ziQ==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/dubzzz"
},
{
"type": "opencollective",
"url": "https://opencollective.com/fast-check"
}
],
"license": "MIT",
"dependencies": {
"pure-rand": "^8.0.0"
},
"engines": {
"node": ">=12.17.0"
}
},
"node_modules/find-my-way-ts": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/find-my-way-ts/-/find-my-way-ts-0.1.6.tgz",
"integrity": "sha512-a85L9ZoXtNAey3Y6Z+eBWW658kO/MwR7zIafkIUPUMf3isZG0NCs2pjW2wtjxAKuJPxMAsHUIP4ZPGv0o5gyTA==",
"license": "MIT"
},
"node_modules/ini": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz",
"integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==",
"license": "ISC",
"engines": {
"node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"license": "ISC"
},
"node_modules/kubernetes-types": {
"version": "1.30.0",
"resolved": "https://registry.npmjs.org/kubernetes-types/-/kubernetes-types-1.30.0.tgz",
"integrity": "sha512-Dew1okvhM/SQcIa2rcgujNndZwU8VnSapDgdxlYoB84ZlpAD43U6KLAFqYo17ykSFGHNPrg0qry0bP+GJd9v7Q==",
"license": "Apache-2.0"
},
"node_modules/msgpackr": {
"version": "1.11.10",
"resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.10.tgz",
"integrity": "sha512-iCZNq+HszvF+fC3anCm4nBmWEnbeIAfpDs6IStAEKhQ2YSgkjzVG2FF9XJqwwQh5bH3N9OUTUt4QwVN6MLMLtA==",
"license": "MIT",
"optionalDependencies": {
"msgpackr-extract": "^3.0.2"
}
},
"node_modules/msgpackr-extract": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz",
"integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==",
"hasInstallScript": true,
"license": "MIT",
"optional": true,
"dependencies": {
"node-gyp-build-optional-packages": "5.2.2"
},
"bin": {
"download-msgpackr-prebuilds": "bin/download-prebuilds.js"
},
"optionalDependencies": {
"@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3",
"@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3",
"@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3",
"@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3",
"@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3",
"@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3"
}
},
"node_modules/multipasta": {
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/multipasta/-/multipasta-0.2.7.tgz",
"integrity": "sha512-KPA58d68KgGil15oDqXjkUBEBYc00XvbPj5/X+dyzeo/lWm9Nc25pQRlf1D+gv4OpK7NM0J1odrbu9JNNGvynA==",
"license": "MIT"
},
"node_modules/node-gyp-build-optional-packages": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz",
"integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==",
"license": "MIT",
"optional": true,
"dependencies": {
"detect-libc": "^2.0.1"
},
"bin": {
"node-gyp-build-optional-packages": "bin.js",
"node-gyp-build-optional-packages-optional": "optional.js",
"node-gyp-build-optional-packages-test": "build-test.js"
}
},
"node_modules/path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/pure-rand": {
"version": "8.4.0",
"resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-8.4.0.tgz",
"integrity": "sha512-IoM8YF/jY0hiugFo/wOWqfmarlE6J0wc6fDK1PhftMk7MGhVZl88sZimmqBBFomLOCSmcCCpsfj7wXASCpvK9A==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/dubzzz"
},
{
"type": "opencollective",
"url": "https://opencollective.com/fast-check"
}
],
"license": "MIT"
},
"node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"license": "MIT",
"dependencies": {
"shebang-regex": "^3.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/shebang-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/toml": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/toml/-/toml-4.1.1.tgz",
"integrity": "sha512-EBJnVBr3dTXdA89WVFoAIPUqkBjxPMwRqsfuo1r240tKFHXv3zgca4+NJib/h6TyvGF7vOawz0jGuryJCdNHrw==",
"license": "MIT",
"engines": {
"node": ">=20"
}
},
"node_modules/uuid": {
"version": "13.0.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz",
"integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==",
"funding": [
"https://github.com/sponsors/broofa",
"https://github.com/sponsors/ctavan"
],
"license": "MIT",
"bin": {
"uuid": "dist-node/bin/uuid"
}
},
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
},
"bin": {
"node-which": "bin/node-which"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/yaml": {
"version": "2.8.3",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz",
"integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==",
"license": "ISC",
"bin": {
"yaml": "bin.mjs"
},
"engines": {
"node": ">= 14.6"
},
"funding": {
"url": "https://github.com/sponsors/eemeli"
}
},
"node_modules/zod": {
"version": "4.1.8",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
}
}
}
+37
View File
@@ -0,0 +1,37 @@
# Sample Plan With Todos
## Goal
Create a clear sample plan that breaks work into actionable todos.
## Todos
1. Define the objective
- Clarify the desired outcome.
- Identify the target audience.
- List success criteria.
2. Gather requirements
- Collect relevant inputs.
- Note constraints and assumptions.
- Identify dependencies.
3. Break down the work
- Split the goal into smaller tasks.
- Prioritize tasks by importance.
- Estimate effort for each task.
4. Execute the tasks
- Complete the highest-priority items first.
- Track progress as todos are finished.
- Adjust the plan if new information appears.
5. Review and validate
- Check that all todos are complete.
- Verify the result matches the goal.
- Document any follow-up work.
## Acceptance Criteria
- The plan has a clear goal.
- The plan includes a list of actionable todos.
- The todos are ordered logically.
- The plan includes a way to confirm completion.
+38
View File
@@ -0,0 +1,38 @@
# Sample Plan With Todos
## Goal
Create a simple sample plan that demonstrates how to organize work into clear, actionable todos.
## Implementation Steps
1. Define the objective
- State the desired outcome in one sentence.
- Identify who the plan is for.
- List the criteria that indicate success.
2. Gather requirements
- Capture relevant inputs and context.
- Note constraints, assumptions, and dependencies.
- Identify any missing information that may affect execution.
3. Break down the work
- Split the objective into smaller tasks.
- Order tasks by dependency and priority.
- Keep each todo specific enough to complete independently.
4. Execute the todos
- Work through the highest-priority tasks first.
- Mark todos complete as progress is made.
- Update the plan if new information changes the scope.
5. Review the result
- Confirm every todo has been addressed.
- Verify the result matches the original objective.
- Record any follow-up work separately.
## Acceptance Criteria
- The plan has a clear goal.
- The plan includes actionable todos.
- The todos are ordered logically.
- The plan includes a review step to confirm completion.
@@ -0,0 +1,37 @@
# Sample Plan: Add Todo-Based Workflow
## Goal
Create a small, traceable workflow for implementing a feature with clear todos, validation steps, and completion criteria.
## Scope
- Identify the affected package or feature area.
- Make the smallest correct code change.
- Add or update tests only where they verify behavior.
- Run the smallest relevant checks before completion.
## Todos
- [ ] Inspect the relevant files and existing patterns.
- [ ] Confirm whether the change belongs in Kilo-owned code or shared upstream code.
- [ ] Implement the minimal code change.
- [ ] Add or update targeted tests if behavior changes.
- [ ] Run formatting or linting if the touched package requires it.
- [ ] Run the smallest relevant typecheck or test command.
- [ ] Fix any failures introduced by the change.
- [ ] Summarize changed files and verification results.
## Implementation Notes
- Prefer Kilo-owned directories for Kilo-specific behavior.
- If shared upstream files must be edited, keep the change narrow and add `kilocode_change` markers where required.
- Avoid broad refactors unless they are necessary for the requested behavior.
- Preserve existing style, naming, and package conventions.
## Verification
- Run the targeted test for the changed behavior when available.
- Run the package typecheck if TypeScript code changes.
- Run any repo-specific guard required by touched files, such as annotation or source-link checks.
## Completion Criteria
- The requested behavior is implemented.
- Tests or checks relevant to the change pass, or any inability to run them is documented.
- No unrelated files are modified.
- The final response includes a concise summary and verification status.
+35
View File
@@ -0,0 +1,35 @@
# Sample Plan
## Goal
Create a small example feature or change using a clear implementation workflow and tracked todo list.
## Scope
- Add or update a minimal code path.
- Add focused tests for the changed behavior.
- Run the smallest relevant verification command.
- Summarize the result and any follow-up work.
## Todo
- [ ] Inspect the relevant files and existing patterns.
- [ ] Identify the smallest safe implementation approach.
- [ ] Make the code change.
- [ ] Add or update tests for the behavior.
- [ ] Run targeted tests or typecheck.
- [ ] Fix any failures introduced by the change.
- [ ] Provide a concise final summary with verification results.
## Implementation Notes
- Prefer the smallest correct change over broad refactors.
- Preserve existing style and naming conventions.
- Avoid touching unrelated files.
- If shared upstream-owned files are involved, use the repositorys `kilocode_change` marker guidance.
## Verification
Run the most specific applicable check for the touched area, such as:
- CLI: `bun test ./path/to/test.ts` from `packages/opencode/`
- VS Code extension: `bun run test:unit` from `packages/kilo-vscode/`
- Cross-package changes: `bun run typecheck` from the repo root
## Risks
- The sample scope may need adjustment once the real target files are known.
- Verification commands depend on which package is touched.
+69
View File
@@ -0,0 +1,69 @@
# Plan: Replace Internal SVGLoader Usage
## Context
The JetBrains plugin currently imports `com.intellij.util.SVGLoader` in `packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/ui/SvgIconColorizer.kt` and calls `SVGLoader.load(ByteArrayInputStream(patch()), scale.toFloat())` from `SvgIcon.image(Graphics)`.
Inspection reports this as an internal API usage because `SVGLoader` and its `load(InputStream, float)` method are marked `@ApiStatus.Internal`.
I checked the local IntelliJ source reference via `$INTELLIJ_REPO=/Users/kirillk/products/intellij-community`:
- `platform/util/ui/src/com/intellij/util/SVGLoader.kt`
- `platform/util/ui/src/com/intellij/ui/svg/svg.kt`
- `platform/util/ui/src/com/intellij/ui/svg/jsvg.kt`
- `libraries/jsvg/intellij.libraries.jsvg.iml`
Important findings:
- IntelliJ `SVGLoader.load(stream, scale)` delegates to internal `loadSvg(...)` in `com.intellij.ui.svg`.
- The actual renderer uses `com.github.weisj:jsvg:2.1.0` and renders into a `BufferedImage` with antialiasing, bicubic interpolation, and pure stroke control.
- Copying `SVGLoader.kt` directly would keep references to other internal IntelliJ APIs (`IconLoader`, `ScaleContext`, `ImageUtil`, `SvgAttributePatcher`, `createJSvgDocument`, `renderSvgWithSize`, cache classes, etc.) and would be broader than needed.
## Implementation Plan
1. Add Kilo-owned SVG rendering code under the frontend UI package, for example:
- `packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/ui/SvgLoader.kt`
- Package: `ai.kilocode.client.ui`
- Suggested internal object name: `SvgLoader`
2. Keep the copied implementation minimal and purpose-specific:
- Accept `InputStream` and `scale: Float`.
- Parse the SVG with `com.github.weisj.jsvg.parser.SVGLoader().load(stream)` or the equivalent public jsvg API available in version `2.1.0`.
- Determine image dimensions from the root SVG `width` and `height` already parsed by existing `SvgIconColorizer.size(...)`, or by passing dimensions into the loader if the public jsvg API does not expose reliable intrinsic size.
- Render into `BufferedImage(width * scale, height * scale, BufferedImage.TYPE_INT_ARGB)` using `Graphics2D` rendering hints matching IntelliJs `jsvg.kt`:
- `KEY_ANTIALIASING = VALUE_ANTIALIAS_ON`
- `KEY_INTERPOLATION = VALUE_INTERPOLATION_BICUBIC`
- `KEY_STROKE_CONTROL = VALUE_STROKE_PURE`
- Return `Image`/`BufferedImage`.
3. If jsvg does not expose intrinsic size cleanly from public API, adjust the API to avoid duplicating SVG parsing:
- Add `width` and `height` parameters to the Kilo loader.
- In `SvgIcon.image(Graphics)`, call the loader with the already-computed `size.first` and `size.second`.
- This is the likely smallest stable solution because current icons already require explicit `width` and `height` for `SvgIconColorizer.size(...)`.
4. Add the jsvg dependency explicitly to the plugin frontend module instead of relying on the IntelliJ-bundled library:
- In `packages/kilo-jetbrains/gradle/libs.versions.toml`, add `jsvg = "2.1.0"` and `jsvg = { module = "com.github.weisj:jsvg", version.ref = "jsvg" }`.
- In `packages/kilo-jetbrains/frontend/build.gradle.kts`, add `implementation(libs.jsvg)`.
- This follows the package instruction to bundle third-party libraries with the plugin rather than relying on IDE-bundled versions.
5. Update `SvgIconColorizer.kt`:
- Remove `import com.intellij.util.SVGLoader`.
- Replace `SVGLoader.load(ByteArrayInputStream(patch()), scale.toFloat())` with the Kilo-owned loader call.
- Keep the existing color patching, cache key, scale calculation, and size parsing intact.
6. Add a focused frontend unit test:
- New test file: `frontend/src/test/kotlin/ai/kilocode/client/ui/SvgIconColorizerTest.kt` or `SvgLoaderTest.kt`.
- Exercise the actual loader/colorizer with a small SVG resource or inline SVG bytes.
- Assert that rendering returns a non-empty image at scale `1f` and `2f`, and that scaled dimensions are correct.
- If testing the colorizer, paint the icon into a `BufferedImage` and verify at least one expected patched pixel color appears.
7. Run verification from `packages/kilo-jetbrains/`:
- `./gradlew typecheck`
- A targeted frontend test if Gradle supports one cleanly, otherwise `./gradlew test`.
- The requested DevKit internal API inspection is IDE-based; note in final response that the code no longer references `com.intellij.util.SVGLoader`, and typecheck/tests were run.
## Notes And Risks
- The user said “copy SaveLoaer”; I interpret this as “copy `SVGLoader`”. The implementation should copy the relevant rendering behavior, not IntelliJs full internal `SVGLoader` object, because the full source depends on multiple other internal APIs and cache infrastructure.
- This change is in `packages/kilo-jetbrains/`, a Kilo-owned package, so `kilocode_change` markers are not needed.
- jsvg package names and constructors should be confirmed during implementation against the downloaded dependency/API available to Gradle. If the API differs from IntelliJ source usage, inspect the source jar or compile error and adapt the minimal wrapper accordingly.
+60
View File
@@ -0,0 +1,60 @@
# Remove JetBrains SVG Runtime Colorization
## Goal
Stop runtime SVG recoloring in the JetBrains plugin and rely on IntelliJ's standard light/dark icon asset resolution. Ensure every SVG asset used by the plugin has a light/dark pair.
## Findings
- Runtime colorization exists only in `frontend/src/main/kotlin/ai/kilocode/client/ui/SvgIconColorizer.kt`.
- The only production caller is `frontend/src/main/kotlin/ai/kilocode/client/session/scroll/ScrollButtonIcon.kt`.
- `ScrollButtonIcon` colorizes two icons at runtime:
- `/icons/scroll-bottom.svg`
- `/icons/scroll-question.svg`
- Both already have dark variants:
- `scroll-bottom_dark.svg`
- `scroll-question_dark.svg`
- Other used frontend icons already have light/dark pairs:
- `send.svg` / `send_dark.svg`
- `stop.svg` / `stop_dark.svg`
- `shield.svg` / `shield_dark.svg`
- `shield-filled.svg` / `shield-filled_dark.svg`
- `compress.svg` / `compress_dark.svg`
- `chevron-down.svg` / `chevron-down_dark.svg`
- `arrow-up.svg` / `arrow-up_dark.svg`
- `arrow-down-to-line.svg` / `arrow-down-to-line_dark.svg`
- `kilo.svg` / `kilo_dark.svg`
- `kilo-content.svg` / `kilo-content_dark.svg`
- `plus.svg` / `plus_dark.svg` exists, though no current direct source reference was found.
- `kilo@20x20.svg` / `kilo@20x20_dark.svg` exists, though no current direct source reference was found.
- `src/main/resources/META-INF/pluginIcon.svg` is present and has no `pluginIcon_dark.svg`. It is not referenced in source/XML, but JetBrains treats this filename conventionally as plugin metadata/marketplace icon, so it should be paired for completeness.
- The SVG assets use literal colors and no `currentColor`, `<style>`, CSS classes, or CSS variables were found in `frontend/src/main/resources/icons/*.svg`.
## Implementation Plan
1. Replace `ScrollButtonIcon` runtime colorization with standard `IconLoader.getIcon(...)` loading.
- Remove imports for `colorizedSvgIcon`, `SessionUiStyle`, `UiStyle`, `JBUI`, and `Color` from `ScrollButtonIcon.kt`.
- Add `IconLoader` import.
- Load `bottom` with `IconLoader.getIcon("/icons/scroll-bottom.svg", ScrollButtonIcon::class.java)`.
- Load `prompt` with `IconLoader.getIcon("/icons/scroll-question.svg", ScrollButtonIcon::class.java)`.
- Keep `create(question: Boolean = false)` unchanged so callers continue to receive the appropriate icon.
- IntelliJ should automatically resolve `_dark.svg` variants when the look and feel is dark.
2. Delete `frontend/src/main/kotlin/ai/kilocode/client/ui/SvgIconColorizer.kt` after confirming no callers remain.
3. Remove now-unused scroll icon source palette constants from `SessionUiStyle.ScrollIcon`.
- Delete the `ScrollIcon` object if no references remain.
- This also removes stale comments about runtime colorization.
4. Add `src/main/resources/META-INF/pluginIcon_dark.svg` as the dark-mode pair for `pluginIcon.svg`.
- Use the same artwork/colors as `pluginIcon.svg` unless there is a desired brand-specific dark variant; the current icon already has a black background and yellow mark, so an identical dark pair is acceptable and satisfies IntelliJ's expected pair convention.
5. Re-scan the JetBrains package after edits.
- Confirm there are no `colorizedSvgIcon` or `SvgIconColorizer` references.
- Confirm every used SVG path has a sibling `_dark.svg` where IntelliJ expects one.
- Confirm no frontend SVG uses `currentColor`, `<style>`, CSS classes, or CSS variables.
6. Run the smallest relevant verification from `packages/kilo-jetbrains/`:
- `bun run typecheck` or `./gradlew typecheck`.
## Files Expected To Change
- `packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/scroll/ScrollButtonIcon.kt`
- `packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/style/SessionUiStyle.kt`
- Delete `packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/ui/SvgIconColorizer.kt`
- Add `packages/kilo-jetbrains/src/main/resources/META-INF/pluginIcon_dark.svg`
## Risks
- The scroll icons will no longer follow arbitrary runtime theme colors; they will use the static light/dark SVG asset colors. This matches the requested behavior.
- If a non-default theme expects palette overrides, static literal SVG colors still follow normal IntelliJ SVG handling better than custom byte-patching, but the exact custom-color behavior may differ from the old colorizer.
+49
View File
@@ -0,0 +1,49 @@
# Fix JetBrains Session Question Scroll
## Goal
When a question-like active view first appears in the JetBrains session UI, do not auto-scroll the transcript if the user is already away from the tail and the scroll-to-bottom button is visible. This applies to permission prompts and question-based views. Existing behavior should remain: if the transcript is already at the bottom, new questions/permissions keep the view at the bottom; explicit question navigation can still jump to the active card.
## Current Findings
- `SessionUi` wires `QuestionView` with:
- `follow = { scroll.following() }`
- `scroll = { scroll.followBottom(it) }`
- `QuestionView.show()` runs on first display and calls:
- `val tail = follow()` before rendering the card
- `scroll(tail)` after rendering
- `SessionScroll.following()` currently returns `component.viewport.view === messages && tail`.
- This can use stale internal follow state instead of the live scrollbar state. The user-visible condition is better represented by `SessionScroll.atBottom()`, which is also what `SessionController.beforeUpdate` uses for normal transcript updates.
- Existing `SessionScrollTest` already covers question and login-required middle-scroll preservation, but it does not cover permission first appearance and likely does not cover a stale-tail/live-not-at-bottom edge.
## Implementation Plan
1. Update question first-show follow sampling to use live bottom state.
- In `SessionUi.buildUi()`, change the `QuestionView` `follow` lambda from `scroll.following()` to `scroll.atBottom()`.
- Alternatively, if a single semantic API is preferred, change `SessionScroll.following()` to return `component.viewport.view === messages && atBottom()` and keep the `SessionUi` call site unchanged. Prefer the smaller, clearer call-site change unless tests show other `following()` behavior should change too.
2. Add permission scroll regression tests in `SessionScrollTest`.
- Add `test permission appearing at bottom keeps scroll at bottom`.
- Add `test permission appearing while user is in middle preserves scroll position`.
- Emit `ChatEventDto.PermissionAsked("ses_test", PermissionRequestDto(...))` using the same DTO style as the existing recovered permission test.
- Assert the scrollbar value is preserved and `jumpButton().isVisible` stays true when initially away from bottom.
3. Strengthen question regression coverage if needed.
- Keep the existing `test question appearing while user is in middle preserves scroll position`.
- If the bug reproduces only when the jump button is visible but `tail` can be stale, add a targeted regression that creates the visible jump state before `QuestionAsked` and asserts first display does not jump.
- Avoid adding production-only test hooks; use existing `setValue`, `setValuePassive`, `drainScroll`, and event helpers.
4. Preserve intentional explicit navigation behavior.
- Do not change `QuestionView.goForward()`, `goBack()`, or `goReview()`, which intentionally call `scroll(true)` and are covered by existing tests that expect navigation to jump to the active question card.
- Do not change prompt growth or normal streaming follow behavior unless a failing test shows the same stale-state issue applies there.
5. Verification.
- Run the targeted JetBrains frontend session scroll tests from `packages/kilo-jetbrains/` using Gradle test filtering for `SessionScrollTest` if supported.
- Run `./gradlew typecheck` from `packages/kilo-jetbrains/` if the targeted tests pass or if Gradle filtering is unavailable.
- If Java 21 is unavailable, first check/report that blocker as instructed by the repo docs.
## Expected Files To Touch
- `packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt`
- `packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionScrollTest.kt`
## Non-Goals
- No backend or RPC protocol changes.
- No redesign of the session scroll algorithm.
- No changes to explicit question navigation auto-scroll behavior.
+81
View File
@@ -0,0 +1,81 @@
# Plan: JetBrains Question-Style Scroll Button
## Goal
Fix JetBrains session scrolling so that when any inline prompt card appears while the scroll/jump button is already visible, the transcript scroll position is preserved and only the scroll button state changes. This applies to all current `BaseQuestionView`-backed session cards: questions, permissions, and login-required prompts. Preserve existing behavior that question navigation, review/back/next, and bottom-following content changes auto-scroll when they are supposed to.
## Findings
- The relevant files are `packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt`, `.../scroll/SessionScroll.kt`, `.../views/question/QuestionView.kt`, `.../views/permission/PermissionView.kt`, `.../views/LoginRequiredView.kt`, `.../views/base/BaseQuestionView.kt`, and `frontend/src/test/kotlin/ai/kilocode/client/session/SessionScrollTest.kt`.
- `QuestionView`, `PermissionView`, and `LoginRequiredView` do not inherit from `BaseQuestionView`; they compose it as the shared card shell. Scroll behavior should stay outside `BaseQuestionView` because it is a pure visual component with no session scroll context.
- The current uncommitted `SessionUi.kt` attempt changes `QuestionView` from `follow = { scroll.following() }` to `follow = { scroll.atBottom() }`.
- That fixes initial question appearance when the user is visibly away from bottom, but it is too broad because `QuestionView.follow()` is also used after custom editor growth, selection refresh, reply/reject, and other internal updates.
- `QuestionView` already intentionally calls `scroll(true)` in `goBack`, `goForward`, and `goReview`; those forced calls are the behavior that preserves auto-scroll when switching question pages.
- `PermissionView.show()` and `LoginRequiredView.show()` do not call scroll directly. They rely on `SessionController.beforeUpdate` / `afterUpdate`, which samples `scroll.atBottom()` before the state change and calls `scroll.followBottom(follow)` afterward. With the stale-tail fix, this path can preserve scroll for all non-question inline prompt cards.
- The uncommitted `SessionScroll.followBottom(false)` change that clears stale `tail` when the transcript is visible and not actually at bottom is directionally correct. It prevents later `following()` calls from resurrecting auto-follow after a non-follow decision.
- The current scroll button pending state is named `question` / `setQuestionPending` and is only enabled for non-plan `AwaitingQuestion`. To cover all `BaseQuestionView`-backed prompts, this should become a generic pending-input/attention state and include `AwaitingPermission` and `LoginRequired`.
- Existing behavior intentionally keeps plan follow-up questions using the normal scroll icon (`test plan followup question keeps scroll icon`), so preserve that exception unless product intent changes separately.
- The uncommitted `build.gradle.kts` and `script/build-sign-check.sh` changes are unrelated to this bug and should not be touched as part of this fix.
## Implementation Plan
1. In `QuestionView.kt`, split the scroll-follow decision into two callbacks.
- Keep the existing `follow` callback for question-internal updates.
- Add a second callback for initial question appearance, with a default that delegates to `follow` so existing tests/call sites remain compatible.
- In `show(q)`, sample the new initial callback before making the question visible or rebuilding the card, then call `scroll(tail)` after `syncPage()` as today.
- Leave `scroll(true)` in `goBack`, `goForward`, and `goReview` unchanged.
- Leave existing `scroll(follow())` calls in custom editor changes, option selection, reply, and reject paths unchanged.
2. In `SessionUi.kt`, wire the callbacks with distinct meanings.
- Use `follow = { scroll.following() }` for question-internal updates.
- Use the new initial callback as `{ scroll.atBottom() }` for initial question appearance.
- Keep `scroll = { scroll.followBottom(it) }`.
3. Generalize the scroll button pending state for all inline prompt cards.
- Rename `SessionScroll.setQuestionPending` and the backing `question` boolean to a generic name such as `setInputPending` / `pending` or `setAttentionPending` / `pending`.
- Rename `questionPending(state)` in `SessionUi.kt` to match the broader meaning.
- Return `true` for non-plan `SessionState.AwaitingQuestion`, `SessionState.AwaitingPermission`, and `SessionState.LoginRequired`.
- Keep returning `false` for plan follow-up questions so the existing plan-specific icon behavior is preserved.
- Reuse the existing question-style icon and tooltip for now, unless a separate product decision asks for a different permission/login-specific icon or string.
4. In `SessionScroll.kt`, keep the stale-tail reconciliation in `followBottom(false)`.
- When `follow` is false, increment `seq`, and if the active view is the transcript and `!atBottom()`, set `tail = false` before `updateJump()`.
- Do not change `following()` to use `atBottom()`, because `tail` is needed to preserve bottom-follow behavior across deferred layout/height growth.
5. Do not add scroll callbacks to `PermissionView`, `LoginRequiredView`, or `BaseQuestionView` unless tests prove the controller-level path is insufficient.
- `PermissionView` and `LoginRequiredView` should remain retained visual views that show/hide themselves and refresh their parent.
- `BaseQuestionView` should stay a scroll-unaware card shell.
- The shared behavior for those cards should come from the controller-level state-change follow decision plus the generalized pending-button state.
6. In `SessionScrollTest.kt`, update tests around question-style prompt appearance and preserved behavior.
- Keep or add an assertion that the jump button is visible before emitting a question in the middle-scroll test.
- Keep a regression for stale `tail` plus visible jump button if no public-only scenario can reproduce the failed state; keep the reflective helper local to this test file and avoid adding production test hooks.
- Keep existing behavior tests for question navigation from the middle, forced navigation resuming follow, custom question answer growth at bottom, custom question answer growth in the middle, and option selection not resuming follow.
- Add or keep permission bottom/middle tests to prove `AwaitingPermission` preserves scroll when away from bottom and follows when at bottom.
- Add or keep login-required bottom/middle tests to prove `LoginRequired` preserves scroll when away from bottom and follows when at bottom.
- Add explicit button-state assertions for permission and login-required while away from bottom: the button remains visible, switches to the pending-input icon/tooltip, and clicking it still scrolls to bottom.
- Keep the plan follow-up test proving plan prompts do not switch to the pending-input icon.
7. Add a patch changeset for the JetBrains plugin unless an existing branch changeset is intentionally covering this exact fix.
- Suggested release note: `Preserve JetBrains chat scroll position when inline prompts appear while the scroll button is visible.`
## Verification
- From `packages/kilo-jetbrains/`, run `./gradlew test --tests "ai.kilocode.client.session.SessionScrollTest"`.
- From `packages/kilo-jetbrains/`, run `./gradlew typecheck`.
- Do not run root `bun test`.
## Expected Outcome
- If the transcript is away from bottom and the jump button is visible, a newly appearing question, permission prompt, or login-required prompt changes the button state without moving `bar.value`.
- If the transcript is at bottom, a newly appearing question, permission prompt, or login-required prompt follows to the new bottom.
- Clicking the visible pending-input scroll button still jumps to the bottom for every inline prompt card.
- Question carousel next/back/review still jumps to the bottom even if the transcript was previously in the middle.
- Custom question editor growth still follows when the transcript was following and preserves position when it was not.
+109
View File
@@ -0,0 +1,109 @@
# Plan: JetBrains Feedback & Support Button
## Goal
Add the VS Code empty-state `Feedback & Support` affordance to the JetBrains plugin, including a non-modal popup with the same three destinations:
- GitHub issues: `https://github.com/Kilo-Org/kilocode/issues/new/choose`
- Discord: `https://kilo.ai/discord`
- Customer support: `https://kilo.ai/support`
The popup must hide when clicking outside or pressing Escape.
## Findings
- The JetBrains empty state is `packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/EmptySessionPanel.kt`.
- It already renders the logo, welcome copy, recents, and `Show History`; this is the right place to add the button.
- The VS Code implementation is:
- Button: `packages/kilo-vscode/webview-ui/src/components/chat/MessageList.tsx`
- Popup content: `packages/kilo-vscode/webview-ui/src/components/chat/FeedbackDialog.tsx`
- Styling: `packages/kilo-vscode/webview-ui/src/styles/welcome.css`
- Local IntelliJ API source is available at `$INTELLIJ_REPO=/Users/kirillk/products/intellij-community`.
- IntelliJ popup API confirmed in local source:
- `JBPopupFactory.getInstance().createComponentPopupBuilder(content, focusComponent)`
- `setModalContext(false)` for non-modal context
- `setRequestFocus(false)` / `setFocusable(false)` if we want the popup not to steal focus
- `setCancelOnClickOutside(true)` for outside-click dismissal
- `setCancelKeyEnabled(true)` for Escape dismissal
- `setCancelOnWindowDeactivation(true)` and `setCancelOnOtherWindowOpen(true)` are available and appropriate for cleanup
- IntelliJ platform icons found in `AllIcons`:
- Feedback button: `AllIcons.Ide.Feedback`
- GitHub action: `AllIcons.Vcs.Vendors.Github`
- Support/help action: `AllIcons.Actions.Help` or `AllIcons.General.ContextHelp`
- Discord: no platform icon found. Add a Discord icon by borrowing the existing VS Code/kilo-ui Discord SVG artwork and adapting it into the JetBrains plugin resources with IntelliJ-compatible SVG colors and dark variant if needed.
## Implementation Steps
1. Add localized JetBrains bundle keys.
- Add base English strings to `frontend/src/main/resources/messages/KiloBundle.properties`:
- `feedback.button=Feedback & Support`
- `feedback.dialog.message=We'd love to hear your feedback or help with any issues you're experiencing.`
- `feedback.dialog.github=Report an issue on GitHub`
- `feedback.dialog.discord=Join our Discord community`
- `feedback.dialog.support=Customer Support`
- Reuse existing cancel text if present; otherwise add `common.cancel=Cancel` only if needed.
- Add matching keys to localized `KiloBundle_*.properties` files. If accurate translations are not already available from the VS Code i18n files, copy the VS Code translations for matching locales where practical and leave English fallback only if the JetBrains bundle mechanism supports it cleanly.
2. Extend `EmptySessionPanel` UI.
- Add a new retained `FeedbackButton`, styled to match VS Code conceptually:
- feedback icon + `Feedback & Support` text
- dashed link-colored border
- transparent background
- hand cursor
- hover state fills with link color and flips foreground/background for contrast
- Use IntelliJ theme APIs instead of raw colors:
- link color: `JBUI.CurrentTheme.Link.Foreground.ENABLED`
- hover link color: `JBUI.CurrentTheme.Link.Foreground.HOVERED` if useful
- editor/panel background from existing session style or `UiStyle.Colors.editorBackground()` / component background
- spacing via `UiStyle.Gap` / `JBUI.Borders`
- rounded arc via `UiStyle.Arc.component()` or `JBUI.getInt("Button.arc", 6)` at paint time
- Add the feedback button below the existing `Show History` button in the empty-state south area, keeping the current centered layout.
- Keep Swing mutations on EDT and preserve retained-component behavior.
3. Implement the feedback popup in frontend Swing code.
- Add a small popup builder method/class inside `EmptySessionPanel.kt` or a new nearby UI file if the file would become too large.
- Content should mirror VS Code:
- Kilo logo at top using existing `/icons/kilo-content.svg`
- message text
- three action buttons/rows for GitHub, Discord, and Customer Support
- every action should have an icon: `AllIcons.Vcs.Vendors.Github` for GitHub, the borrowed Discord SVG for Discord, and `AllIcons.Actions.Help` or `AllIcons.General.ContextHelp` for Customer Support
- optional Cancel button if it fits the JetBrains UX; Escape/outside click already dismisses
- Add the Discord icon asset under `frontend/src/main/resources/icons/` using the plugin's existing icon naming pattern, for example `discord.svg` and `discord_dark.svg` if the borrowed asset needs separate theme variants.
- Load the Discord icon with `IconLoader.getIcon("/icons/discord.svg", EmptySessionPanel::class.java)` or a small Kilo-owned icon object if multiple call sites need it.
- Use `BrowserUtil.browse(url)` to open links.
- Close the popup after opening a URL.
- Use `JBPopupFactory.createComponentPopupBuilder(content, null)` and configure:
- `.setModalContext(false)`
- `.setRequestFocus(false)`
- `.setFocusable(false)` unless keyboard tabbing inside popup is desired; if buttons need keyboard focus, use `.setFocusable(true)` with `.setRequestFocus(false)`
- `.setCancelOnClickOutside(true)`
- `.setCancelKeyEnabled(true)`
- `.setCancelOnWindowDeactivation(true)`
- `.setCancelOnOtherWindowOpen(true)`
- `.setResizable(false)`
- `.setMovable(false)`
- Show with `popup.showUnderneathOf(feedbackButton)`.
4. Add test coverage in `EmptySessionPanelTest.kt`.
- Assert feedback button text uses `KiloBundle.message("feedback.button")`.
- Assert feedback button has hand cursor and visible border semantics.
- Add an injectable browse callback or popup action callback only if needed for testing without launching browsers; keep it minimal and avoid production-only test hooks if component traversal can exercise enough behavior.
- Add a test that clicking the feedback button creates/shows popup content, if feasible in `BasePlatformTestCase`; otherwise test the retained popup content builder/action rows directly through package-internal methods.
- Assert the three action labels exist and URL callbacks map to the same URLs as VS Code.
- Assert the Discord action has an icon, so the plan cannot regress to a text-only Discord row.
5. Add release note.
- This is user-facing for the JetBrains plugin, so add a patch changeset under `.changeset/` unless the repo has a JetBrains-specific release-note mechanism that supersedes changesets.
- Suggested text: `Add Feedback & Support to the JetBrains empty session screen.`
6. Verify.
- Run the focused frontend/JetBrains tests first, preferably from `packages/kilo-jetbrains/`:
- `./gradlew :frontend:test --tests "ai.kilocode.client.session.ui.EmptySessionPanelTest"`
- Run JetBrains typecheck from `packages/kilo-jetbrains/`:
- `bun run typecheck` or `./gradlew typecheck`
- If touching only frontend UI and tests pass, no backend/SDK generation is needed.
## Notes
- Do not add Kotlin UI DSL, Compose, or JCEF.
- Do not modify shared opencode files; this work is entirely under `packages/kilo-jetbrains/` plus a changeset.
- Prefer platform icons where available, but explicitly borrow/add the Discord icon because `AllIcons` does not provide one and the popup should match the VS Code button set visually.
@@ -0,0 +1,67 @@
# JetBrains MdView Editor Theme Colors Plan
## Goal
Keep JetBrains markdown layout compact while making markdown colors and backgrounds come from the active editor color scheme, and ensure existing theme/editor-setting listeners refresh all existing `MdView` instances after changes.
## Findings
- `SessionUi` already subscribes to `EditorColorsManager.TOPIC` and `LafManagerListener.TOPIC`, then calls `applyStyle(SessionEditorStyle.current())` on the session tree.
- Most markdown consumers already propagate that style through `MdView.applyStyle(style)` via `TextView`, `ReasoningView`, message lists, and session panels.
- `PlanExitView.applyStyle()` sets only font/code font/foreground and does not call `md.applyStyle(style)`, so internal markdown role colors can stay tied to the initial style.
- `MdViewHybrid.applyStyle()` restyles retained HTML panes and code block containers, but retained `CodeField` editors need explicit reapplication of `SessionEditorStyle.applyToEditor()` after creation so syntax highlighting and editor colors follow scheme changes.
- `MdCommon.defaults()` currently mixes editor colors, UI theme colors, and one literal inline-code color fallback. The literal fallback should be removed, and markdown roles should derive from `EditorColorsScheme`/syntax attributes wherever possible.
- `TextView` currently overrides markdown background with `SessionUiStyle.Transcript.bgColor()` (`UiStyle.Colors.bg()`), while prompt markdown already uses `style.editorBackground`. If markdown surfaces should consistently use editor background, normal text views need to use `style.editorBackground` too.
## Implementation Plan
1. Keep compact CSS unchanged.
- Do not reintroduce line-height, margin, padding, heading sizing, or other geometry rules.
- Keep the current role color/background selectors only.
2. Derive markdown role defaults from editor settings.
- Update `MdCommon.defaults(style)` to use `style.editorForeground` and `style.editorBackground` for primary text/background.
- Add small local helper functions for editor attributes, for example foreground/background from `style.editorScheme.getAttributes(key)` and color keys from `style.editorScheme.getColor(key)`.
- Use public IntelliJ editor keys for role colors:
- Links: `CodeInsightColors.HYPERLINK_ATTRIBUTES.foregroundColor`, fallback to platform link color if absent.
- Inline code foreground/background: `DefaultLanguageHighlighterColors.DOC_CODE_INLINE`, fallback to `STRING`, then editor foreground/background.
- Code block foreground/background: `DefaultLanguageHighlighterColors.DOC_CODE_BLOCK`, fallback to editor foreground/background.
- Quote/emphasis/list weak text: comment/doc-comment attributes, fallback to editor foreground or `UIUtil.getContextHelpForeground()` only when the scheme has no useful value.
- Borders/HR/table/code border: editor preview/border color keys such as `EditorColors.PREVIEW_BORDER_COLOR`, fallback to `UiStyle.Colors.contentBorder()`.
- Remove `JBColor(0x...)` or other literal runtime color fallbacks from `MdCommon`.
- Keep public `MdView` API unchanged; role colors stay internal unless a concrete external override need appears.
3. Ensure style propagation reaches every markdown instance.
- Update `PlanExitView.applyStyle(style)` to call `md.applyStyle(style)` before applying its explicit font/code-font/foreground overrides.
- Audit existing markdown callers after the change; keep using the existing `SessionEditorStyleTarget` propagation path rather than adding per-`MdView` theme listeners.
- Keep explicit foreground overrides in `TextView`, `ReasoningView`, and `PlanExitView` where they intentionally set body text role, but let internal markdown role colors refresh from the new style snapshot.
4. Ensure retained hybrid code blocks update after editor setting changes.
- In `MdViewHybrid.CodeView.style(opts)`, for retained `CodeField` blocks, reapply `style.applyToEditor(editor)` to the underlying editor if it exists.
- Reapply code editor background/scroll pane/viewport backgrounds from `opts.preBg` in the same path.
- Preserve retained component/editor reuse: do not rebuild code block panes just to update style.
5. Align markdown backgrounds with editor settings.
- Keep `MdCommon` default background as `style.editorBackground`.
- Change normal `TextView` markdown background to `style.editorBackground` if the intent is that all markdown surfaces use editor background, matching `PromptView` and session root behavior.
- Preserve `transparent` handling: when `md.opaque = false`, background should still be the editor-derived value for child/code surfaces, but the Swing component should remain non-opaque.
6. Update tests.
- Extend `MdViewTest` to verify markdown role CSS changes when applying a `SessionEditorStyle` backed by a customized editor scheme, especially inline code, code block, link, and border colors.
- Extend `MdViewHybridTest` to assert `applyStyle()` updates retained HTML panes and retained code editors without replacing them, including editor scheme/background changes.
- Add or extend `PlanExitViewTest` so `applyStyle()` refreshes the nested markdown style, not just foreground/font overrides.
- Keep existing compactness expectations: tests should not assert new spacing, padding, margin, line-height, or size rules.
## Verification
- From `packages/kilo-jetbrains/`, run `./gradlew frontend:test --tests '*MdView*'`.
- From `packages/kilo-jetbrains/`, run `./gradlew frontend:test --tests '*PlanExitViewTest*'` if the focused test is not covered by the MdView filter.
- From `packages/kilo-jetbrains/`, run `bun run typecheck`.
## Constraints
- Do not introduce JCEF, Compose, or Kotlin UI DSL.
- Do not add new theme/editor listeners in `MdView`; use the existing `SessionUi` listener and `SessionEditorStyleTarget` propagation path.
- Avoid hardcoded runtime colors in markdown styling; prefer editor scheme attributes/color keys, then platform/theme APIs as non-literal fallbacks.
- Preserve retained Swing behavior and `MdViewHybrid.sync()` component reuse.
- Keep the public `MdView` override API stable unless implementation proves a new external override is required.
@@ -0,0 +1,69 @@
# JetBrains MdView VS Code Styling Plan
## Goal
Improve JetBrains markdown output so assistant/user transcript markdown visually matches the VS Code webview markdown style while keeping the existing Swing/JBHtmlPane + editor-backed code block architecture.
## Findings
- VS Code markdown styling is split across `packages/ui/src/components/markdown.css`, `packages/kilo-ui/src/components/markdown.css`, `packages/kilo-ui/src/styles/vscode-bridge.css`, and message-part overrides.
- Base VS Code markdown uses 14px sans text, 160% line height, tight first/last margins, same-size medium headings, 12px paragraph spacing, link-colored anchors, compact lists, weak list markers, weak blockquotes with a 2px left border, invisible HR spacing, bordered/padded code blocks, green inline code, and lightly bordered tables.
- The VS Code theme bridge maps markdown roles to editor/theme tokens: heading/link/list/image use `textLinkForeground`, text/strong/code-block use editor foreground, inline code uses charts/syntax green, quote/emphasis use description foreground, HR uses panel border.
- JetBrains markdown is rendered by `MdViewHybrid` and `MdViewHtmlPane`, with shared CSS from `MdCommon.rules()` and defaults from `MdCommon.defaults()`.
- JetBrains currently styles only broad tag font/color, links, code/pre colors, blockquote border/text color, and table border. It lacks VS Code-equivalent spacing, heading/strong/emphasis/list marker/table cell rules, inline-code foreground, blockquote geometry, HR spacing, and code block surface polish.
- JetBrains fenced code blocks are already stronger than VS Code in one respect: they use `EditorTextField` with real IDE syntax highlighting and streaming retention. Preserve this instead of switching to web/JCEF rendering.
## Implementation Plan
1. Expand JetBrains markdown style tokens.
- Add internal fields to `MdStyle` for heading, strong, emphasis, inline code foreground, list marker, HR, table/header, and code block border colors.
- Keep the public `MdView` override API stable unless a new external override is clearly needed.
- Compute defaults in `MdCommon.defaults(style)` from IntelliJ/editor theme sources and centralized Kilo semantic colors where no platform key matches.
- Use `JBColor.namedColor("Kilo.Markdown.*", fallback)` for Kilo-specific markdown palette fallbacks, so themes can override them and runtime code avoids scattered hardcoded colors.
2. Mirror VS Code markdown CSS in `MdCommon.rules()`.
- Add root/body wrapping rules: max width behavior, break-word wrapping, base line-height, and first/last-child margin trimming where supported by `JBHtmlPane` CSS.
- Add heading rules: same base size, medium/bold weight, role-specific color, line height, and bottom spacing.
- Add paragraph, list, list item, nested list, and marker rules. If Swing HTML does not support `::marker`, fall back to `li { color: ... }` plus child text color reset only if supported; otherwise keep list text normal and document the limitation in tests.
- Add strong/emphasis colors matching VS Code token roles.
- Add anchor styling matching VS Code: themed link color, no forced background, and underline behavior where `JBHtmlPane` supports it.
- Add blockquote geometry: 2px left border, 24px vertical margin, 8px left padding, weak text, and normal style.
- Add table layout rules: collapse borders, full width where possible, 24px vertical margin, 12px cell padding, weak row borders, stronger header text.
- Keep HRs visually hidden but spaced consistently with VS Code if the renderer includes them. `MdViewHybrid` currently filters thematic breaks, so this mainly benefits `MdViewHtmlPane` and future reuse.
- Add inline-code foreground and medium font weight. Avoid inline code backgrounds unless the current `JBHtmlPane` configuration already draws them acceptably.
3. Polish JetBrains code block containers without losing IDE highlighting.
- Keep `EditorTextField` for fenced/indented blocks and `JBTextArea` fallback.
- Style `JBScrollPane` code blocks to match VS Codes `markdown-code` wrapper feel: subtle background, subtle border, rounded-ish platform arc if feasible, 12px-ish padding, and thin horizontal scrollbar behavior.
- Use `SessionUiStyle.View.Code` for geometry constants. Add only minimal new constants there if current values cannot represent the VS Code spacing.
- Separate code block border color from table border internally so table styling can change without affecting code boxes.
- Continue applying `SessionEditorStyle.applyToEditor(ed)` so code blocks follow IDE syntax highlighting and editor font changes.
4. Add file/path affordance parity where safe.
- For markdown links whose `href` looks like a relative file path, keep existing link dispatch so the current caller can open files/URLs appropriately.
- Consider decorating inline code that looks like a path with a `file-link` class only when an `openFile` callback is available through the existing usage path. If the current `MdView` abstraction only has `openUrl`, do not widen it unless the call sites can pass file opening cleanly.
- At minimum, make inline code/path-looking content visually closer to VS Code by using the inline-code foreground and dotted underline for explicit file links where generated HTML contains link/code classes.
5. Preserve retained Swing behavior.
- Keep `MdViewHybrid.sync()` prefix reuse logic unchanged unless necessary.
- Ensure style updates call `reloadCssStylesheets()` and reassign text only for retained `JBHtmlPane` blocks, not by rebuilding all blocks.
- Keep streaming fenced-code fast path and editor disposal behavior intact.
6. Add focused tests.
- Extend `MdViewTest` and/or `MdViewHybridTest` to assert `overrideSheet()` contains the new VS Code-equivalent rules for headings, strong/emphasis, links, inline code foreground, list/table/blockquote spacing, HR, and code block/table border separation.
- Add component tests for code block pane styling: background, viewport background, border color, padding, scrollbar policy, and retained editor instance after `applyStyle()`.
- Keep existing stress/leak tests green. Add a small stress assertion only if the implementation changes style application semantics.
- Add a changeset: `@kilocode/kilo-jetbrains` patch with user-facing wording such as `Improve markdown readability in JetBrains chat transcripts.`
## Verification
- Run targeted JetBrains markdown tests first from `packages/kilo-jetbrains/`: `./gradlew frontend:test --tests '*MdView*'` if the Gradle module supports it; otherwise run the closest supported targeted Gradle test command.
- Run `bun run typecheck` from `packages/kilo-jetbrains/`.
- If targeted Gradle filtering is unreliable, run `./gradlew test` from `packages/kilo-jetbrains/`.
## Constraints
- Do not introduce JCEF, Compose, or Kotlin UI DSL.
- Keep changes inside `packages/kilo-jetbrains/` and `.changeset/` unless a shared Kilo UI source of truth is explicitly required.
- No `kilocode_change` markers are needed for JetBrains or Kilo UI paths.
- Prefer IntelliJ theme APIs and centralized semantic tokens over scattered literal colors.
@@ -0,0 +1,63 @@
# JetBrains Session UI Icons And Header Layout Plan
## Goal
Improve JetBrains session UI icon consistency and reduce accidental header interactions:
- Use Kilo/VS Code-aligned session icons in session views.
- Fix the reasoning header icon.
- Normalize session part collapse/expand chevrons so collapsed/expanded states do not jump between differently sized glyphs.
- Move the session-details toggle away from compaction and place it before the session title.
## Findings
- Session view icons are centralized in `packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/SessionViewIcons.kt` and loaded from `frontend/src/main/resources/icons/views/*.svg`.
- The JetBrains `views` SVGs already mirror the shared VS Code/UI icon paths from `packages/ui/src/components/icon.tsx` for the audited names, including `brain`, `chevron-down`, `chevron-right`, `checklist`, `console`, `warning`, etc.
- The reasoning view currently renders `SessionViewIcons.eye` in `ReasoningView.kt`; VS Code/shared UI uses the `brain` icon for reasoning/thinking surfaces, and `SessionViewIcons.brain` already exists.
- Standard collapsible session parts use `SessionViewIcons.chevronDown` when expanded and `SessionViewIcons.chevronRight` when collapsed in `AbstractSessionPartView.kt`; `QuestionResultView.kt` repeats this pattern manually. The down/right SVG paths have different visual extents.
- The session header currently places the details toggle next to the compact button in the right-side controls in `SessionHeaderPanel.kt`, making the two actions easy to confuse.
## Implementation Steps
1. **Keep icon sources aligned with VS Code/shared UI**
- Treat `packages/ui/src/components/icon.tsx` as the source for Kilo web/session glyph shapes.
- Re-check `SessionViewIcons.kt` entries against available JetBrains assets; only update or add SVGs if a session view uses a Kilo icon missing from `frontend/src/main/resources/icons/views/`.
- Preserve JetBrains SVG theming rules: no `currentColor`; use literal palette colors and dark variants where assets are added or changed.
2. **Fix reasoning icon**
- In `ReasoningView.kt`, change the reasoning header glyph from `SessionViewIcons.eye` to `SessionViewIcons.brain`.
- Add or update test coverage in `ReasoningViewTest.kt` by inspecting the rendered Swing label tree and asserting the reasoning icon is `SessionViewIcons.brain`.
3. **Normalize collapse/expand chevrons for session parts**
- Stop using the mixed `chevronRight`/`chevronDown` pair for collapsible session content.
- Use a single base Kilo chevron glyph for both states, matching the current custom chevron used by the session header (`/icons/chevron-down.svg` / equivalent `SessionViewIcons.chevronDown`).
- Add a shared rotated icon for the opposite state instead of switching to a differently sized right-facing asset. Prefer a small reusable helper or centralized icon field rather than importing header-specific UI into session views.
- Update `AbstractSessionPartView.kt` and `QuestionResultView.kt` to use the normalized chevron pair.
- Leave `QuestionView.kt` navigation chevrons alone unless auditing shows they are being used for collapse/expand; those are previous/next controls, not expand/collapse controls.
4. **Relocate and change header show/hide details toggle**
- In `SessionHeaderPanel.kt`, replace the custom header details chevron with platform `AllIcons` arrows/chevrons, e.g. collapsed = `AllIcons.General.ArrowRight`, expanded = `AllIcons.General.ArrowDown`.
- Move the details toggle out of the right-side controls and into `BorderLayout.WEST` of the header row.
- Rebuild the top header as:
- outer border layout
- west: details toggle button
- center: inner border layout
- inner center: session title
- inner east: horizontal stack/row with price/context and compact button
- Remove the details toggle from the right-side row so compaction remains visually separate from show/hide details.
- Keep existing tooltip/accessibility strings and expansion persistence behavior unchanged.
5. **Tests**
- Update `SessionHeaderPanelTest.kt` to assert:
- collapsed/expanded header details icons use the selected `AllIcons` constants;
- the details toggle persists expansion state as before;
- the details toggle is parented/laid out separately from the compact button.
- Update `AbstractSessionPartViewTest.kt` to assert collapsible parts keep the same icon dimensions across collapsed/expanded states and no longer use the mismatched right/down pair.
- Update `QuestionResultViewTest.kt` similarly because it has its own chevron implementation.
- Update `ReasoningViewTest.kt` for the brain icon.
6. **Verification**
- Run the smallest relevant JetBrains checks from `packages/kilo-jetbrains/`:
- `./gradlew test --tests "ai.kilocode.client.session.views.ReasoningViewTest" --tests "ai.kilocode.client.session.views.base.AbstractSessionPartViewTest" --tests "ai.kilocode.client.session.views.QuestionResultViewTest" --tests "ai.kilocode.client.session.ui.header.SessionHeaderPanelTest"`
- `./gradlew typecheck`
- If the filtered Gradle test syntax is not accepted by the project, run `./gradlew test` from `packages/kilo-jetbrains/` instead.
## Notes
- No shared upstream `opencode` files are involved; changes stay under `packages/kilo-jetbrains/`.
- A changeset may be needed because this is user-facing JetBrains UI polish; confirm existing changeset policy for the private JetBrains package during implementation.
+68
View File
@@ -0,0 +1,68 @@
---
name: gh-issues
description: Use when creating, triaging, or commenting on GitHub issues for the Kilo VS Code extension or JetBrains plugin via `gh`. Covers issue templates, project board assignment, title conventions, and required `gh` scopes.
---
# GitHub Issues
Use this skill whenever you create or manage a GitHub issue with `gh` for either the VS Code extension or the JetBrains plugin.
## Templates
The repo defines issue templates in `.github/ISSUE_TEMPLATE/`. Pick the matching template instead of opening a blank issue:
| Template | When to use |
|---|---|
| `Bug report` (`bug-report.yml`) | Reproducible defects with steps, expected, and actual behavior |
| `Feature Request` (`feature-request.yml`) | New capabilities, enhancements, or behavior changes |
| `Question` (`question.yml`) | Usage or design questions that aren't obviously bugs or feature requests |
Pass the template title to `gh issue create --template`.
## Title Conventions
- Use a plain, descriptive title that reads cleanly as a standalone sentence.
- Do not add platform-specific prefixes such as `[JetBrains]`, `[Jetbrains]`, `[JB]`, `[VS Code]`, `[VSCode]`, or similar. Routing happens through project boards, not the title.
## Project Boards
Every new issue must land on the correct project board:
| Surface | Project | URL |
|---|---|---|
| VS Code extension | `VS Code Extension` | https://github.com/orgs/Kilo-Org/projects/25 |
| JetBrains plugin | `Jetbrains Plugin` | https://github.com/orgs/Kilo-Org/projects/39 |
Pass the project title to `gh issue create --project`.
## Recipes
Create a VS Code extension bug report and add it to the board:
```bash
gh issue create \
--template "Bug report" \
--project "VS Code Extension" \
--title "Sidebar chat fails to render after reload" \
--body "..."
```
Create a JetBrains feature request:
```bash
gh issue create \
--template "Feature Request" \
--project "Jetbrains Plugin" \
--title "Support Kotlin Multiplatform target detection" \
--body "..."
```
## Scope Errors
If `gh` reports a missing scope when assigning a project, refresh the auth token and retry:
```bash
gh auth refresh -s project
```
After the refresh succeeds, re-run the original `gh issue create` command. Do not fall back to creating the issue without the project — the board assignment is required.
@@ -0,0 +1,119 @@
---
name: kilocode-merge-minimizer
description: Use when changing shared upstream-owned files, editing or reviewing `kilocode_change` markers, or moving additive Kilo-specific behavior into Kilo-owned code to reduce future merge conflicts.
---
# Kilo Merge Minimizer
Use this skill whenever a normal development task touches shared upstream-owned code and includes Kilo-specific behavior, especially for marker cleanup, extraction work, or `kilocode_change` annotations.
Do not use this as the primary guide for upstream merge resolution. Upstream merges have their own instructions and should not duplicate that workflow here.
## Goal
Minimize Kilo's long-term diff against upstream OpenCode while preserving behavior.
Prefer this shape for Kilo-specific additions:
1. Shared upstream file contains only a minimal hook, import, call, registration, or config entry.
2. Kilo-specific behavior lives in Kilo-owned code.
3. Unavoidable shared-file changes have narrow `kilocode_change` markers.
4. The annotation checker passes.
For changes to existing upstream behavior, prefer the smallest in-place shared-file diff with narrow markers. Do not move changed upstream logic into Kilo-owned code just to avoid textual conflicts, because that can create harder semantic merge conflicts.
## Core Rules
- Use `script/check-opencode-annotations.ts` as the source of truth for current shared scopes and exempt paths.
- Use `script/upstream/fix-kilocode-markers.ts` for stale or broad markers, inspecting `--dry-run` output before applying changes.
- Treat upstream-owned files as shared unless the checker or repo ownership rules exempt them.
- Put Kilo-owned UI, CLI, runtime logic, and tests in Kilo-owned paths where practical.
- Avoid adding Kilo business logic directly to shared files.
- Keep shared-file edits as close as possible to upstream shape.
- Do not change shared files unless the change is required for Kilo functionality, fixes a Kilo bug, or is a minimal targeted upstream-quality fix.
- Do not create a large Kilo-only fork for a general upstream-quality improvement. Prefer a minimal targeted fix, or leave the broader change for upstream.
- Do not duplicate upstream logic unless there is a concrete reason. If duplication is unavoidable, isolate the Kilo delta and keep the upstream dependency obvious.
## Shared File Structure
- Do not refactor, rename, split files, or extract helpers in shared files just to improve readability or make Kilo extraction cleaner.
- Avoid structural changes that make upstream behavior harder to compare or hide semantic dependency on upstream code.
## Shared File Style
- Preserve upstream formatting and import style in shared files, even when it differs from Kilo style.
- Put Kilo-only imports on separate marked lines instead of reorganizing upstream imports.
## Decision Rules
Extract Kilo logic when:
- The change is an additive Kilo feature or integration, not a modification of existing upstream behavior.
- The shared-file change has meaningful Kilo-owned behavior, not just a tiny condition, import, registration, or field.
- The code has loops, branching, error handling, async workflows, storage access, network calls, UI rendering, or telemetry.
- The shared file can become a small orchestrator that calls Kilo helpers.
- The Kilo code is independent enough that extraction will not hide future upstream fixes or behavior changes.
Keep the change inline when:
- The Kilo delta is a single field, import, call, simple condition, or small registry entry.
- Extraction would reshape upstream code more than the Kilo change itself.
- The change modifies an upstream algorithm, ordering, heuristic, control flow, or bug fix.
- Extraction would duplicate upstream logic or hide semantic dependency on upstream behavior.
- The Kilo helper closes over upstream-local state. Keep closure-scoped helpers inline and contiguous in one narrow marker block.
- The shared file owns the only route table, enum, schema, switch, or registry where the hook must exist.
- The change restores upstream shape or removes a stale Kilo divergence.
Always preserve upstream behavior order unless the Kilo behavior change is intentional and tested.
## Marker Rules
- Mark only Kilo-specific diff lines in shared upstream files.
- Prefer inline markers for single-line changes: `const value = 42 // kilocode_change`.
- Use block markers only for adjacent Kilo-specific lines:
```ts
// kilocode_change start
registerKiloFeature(app)
// kilocode_change end
```
- Use the file's native comment style, including JSX block comments inside JSX and `#` comments for YAML, TOML, and shell.
- Do not add markers in checker-exempt Kilo-owned paths.
- Remove stale markers when upstream already contains the behavior or when touching Kilo-owned files that still have old markers.
- Use `// kilocode_change - new file` only for unavoidable new Kilo-specific files inside shared upstream paths.
## Tests
- Put Kilo-specific CLI/runtime tests in Kilo-owned test paths.
- Move tests out of shared upstream test paths when the behavior under test is Kilo-specific.
- Tests should cover the real failing path, not private or unstable APIs chosen only for convenience.
- Do not add skip gates for required regression coverage.
## Verification
After editing shared files or marker comments, run:
```bash
bun run script/check-opencode-annotations.ts
```
If the PR uses a non-default comparison base, pass the correct base ref:
```bash
bun run script/check-opencode-annotations.ts --base <base-ref>
```
For stale or broad markers in one shared file, inspect the dry run before applying:
```bash
bun run script/upstream/fix-kilocode-markers.ts <repo-relative-file> --dry-run
```
Before finishing, confirm:
- Shared files contain minimal integration points only.
- Kilo logic and tests live in Kilo-owned paths where practical.
- Markers are narrow.
- Stale markers are removed.
- The annotation checker passed, or the reason it could not run is reported.
+172
View File
@@ -0,0 +1,172 @@
---
name: release-jetbrains
description: Use when releasing the Kilo JetBrains plugin -- resolve a version ("next rc" or explicit), run the prepare workflow, edit and commit a filtered human-readable changelog on the release PR, then watch publish to completion.
---
# JetBrains Release
Use this skill when releasing the Kilo JetBrains plugin.
This skill drives the existing JetBrains release workflows. It must not move, delete, or recreate JetBrains release tags. It must always confirm the resolved version with the user before dispatching the prepare workflow because the prepare workflow creates an immutable `jetbrains/v<version>` tag.
## Preconditions
- Run from the repository root.
- `gh` must be authenticated for `Kilo-Org/kilocode` with permission to dispatch workflows, read PRs, and write contents. Merge permission is only required if the user asks the skill to merge the release PR automatically.
- Check auth with `gh auth status`. For GitHub CLI OAuth, refresh common release scopes with `gh auth refresh -s repo -s workflow`; `repo` covers private-repo contents and PR operations, and `workflow` allows workflow dispatch. If using a fine-grained token instead, grant repository permissions for Actions read/write, Contents read/write, and Pull requests read/write. Merging still requires normal repository collaborator permission or a token/user allowed by branch protection.
- Reference `packages/kilo-jetbrains/RELEASING.md` for manual recovery rules.
- Do not locally check out the generated release branch. The helper scripts update the release branch through GitHub to avoid disturbing the current worktree.
## Version Resolution
Resolve the user's version request:
```bash
bun .kilo/skills/release-jetbrains/script/resolve-version.ts --spec "next rc"
```
Accepted specs:
| Spec | Meaning |
|---|---|
| `next rc` | If the latest JetBrains tag is an RC, increment its `rc.n`; otherwise start the next patch RC at `rc.1`. |
| `next stable` | If the latest JetBrains tag is an RC, use its base version; otherwise use the next patch stable. |
| `x.y.z-rc.n` | Explicit RC release. |
| `x.y.z` | Explicit stable release. |
Show the resolved `version`, `kind`, and default `fromTagDefault` to the user and ask for confirmation before continuing.
## Prepare Workflow
After confirmation, dispatch and watch the prepare workflow:
```bash
bun .kilo/skills/release-jetbrains/script/dispatch-prepare.ts --kind rc --version 7.0.1-rc.7
```
Pass a generous Bash timeout, such as `1800000` ms, because the script blocks on `gh run watch --exit-status`. If the shell times out but the workflow is still running, re-attach with:
```bash
bun .kilo/skills/release-jetbrains/script/dispatch-prepare.ts --kind rc --version 7.0.1-rc.7 --run-id <run-id>
```
The script prints `prNumber`, `prUrl`, `runUrl`, and `branch` on success. Immediately show the `prUrl` to the user so they can open the release PR without asking for it later.
## Changelog Draft
Create a changelog draft after the prepare PR exists:
1. Read the PR body with `gh pr view <pr> --json body`.
2. Extract `JetBrains-From-Tag`, `JetBrains-Tag`, and `## Generated Notes`.
3. Fetch the release range tags if they are missing locally:
```bash
git fetch origin refs/tags/<from-tag>:refs/tags/<from-tag> refs/tags/<tag>:refs/tags/<tag>
```
4. Use the release range and path filter as the primary relevance signal:
```bash
git log --oneline <from-tag>..<tag> -- packages/opencode packages/kilo-jetbrains
```
Keep JetBrains and CLI/runtime changes. Drop unrelated VS Code, docs, gateway, telemetry, i18n, desktop, and webview-only changes unless they affect the CLI bundled into the JetBrains plugin.
Rewrite terse commit or PR titles into user-facing bullets grouped under `### Added`, `### Fixed`, and `### Changed`. Keep the exact generated header format:
```markdown
## [<version>] - <date>
```
Write the editable draft to:
```text
packages/kilo-jetbrains/build/release/<version>-changelog.md
```
Include source context in an HTML comment so it is easy to edit but not shipped:
```markdown
<!-- CONTEXT - deleted automatically on commit. Source PRs in range:
- #1234 feat(jetbrains): ... https://github.com/Kilo-Org/kilocode/pull/1234
- #1235 fix(cli): ... https://github.com/Kilo-Org/kilocode/pull/1235
-->
```
Ask the user to edit the file and confirm when done.
## Commit Changelog
After the user confirms the draft is ready, strip the `<!-- CONTEXT ... -->` block into a temporary cleaned file, then commit the cleaned section to the release branch:
```bash
bun .kilo/skills/release-jetbrains/script/update-changelog.ts --version 7.0.1-rc.7 --file /path/to/clean-section.md
```
The script updates `packages/kilo-jetbrains/CHANGELOG.md` on `jetbrains/release/v<version>` through the GitHub contents API and commits with:
```text
docs(jetbrains): edit changelog for v<version>
```
If `update-changelog.ts` fails with `gh: Not Found (HTTP 404)`, verify the release branch and changelog path with:
```bash
gh api "repos/Kilo-Org/kilocode/contents/packages/kilo-jetbrains/CHANGELOG.md?ref=jetbrains/release/v<version>"
```
Then either fix and retry the helper, or perform the equivalent contents API update using `ref` in the query string.
After the changelog commit succeeds, show the release PR URL again and tell the user that the PR needs manual approval and merge before publishing can continue.
## Approve And Publish
Ask the user to approve the release changelog and metadata. Before merging or publishing, verify the PR approval and required checks are green:
```bash
gh pr view <pr> --json mergeStateStatus,reviewDecision,statusCheckRollup
gh pr checks <pr> --watch --interval 10
```
Do not merge or publish while required checks are failing unless the user explicitly gives a maintainer override.
If a required check fails from an apparent flake, rerun only the failed jobs and wait for the run to finish:
```bash
gh run rerun <run-id> --failed
gh run watch <run-id> --exit-status
```
By default, have the user merge the release PR manually in GitHub, then watch the publish workflow:
```bash
bun .kilo/skills/release-jetbrains/script/watch-publish.ts --pr <number> --version 7.0.1-rc.7
```
Only merge automatically when the user explicitly asks for it and `gh` has merge permission:
```bash
bun .kilo/skills/release-jetbrains/script/watch-publish.ts --pr <number> --version 7.0.1-rc.7 --merge
```
Pass a generous Bash timeout, such as `1800000` ms. If the shell times out, re-attach with:
```bash
bun .kilo/skills/release-jetbrains/script/watch-publish.ts --pr <number> --version 7.0.1-rc.7 --run-id <run-id>
```
If `watch-publish.ts --merge` reports that the PR is already merged, or a transient GitHub API `5xx` interrupts publish-run discovery, rerun without `--merge`:
```bash
bun .kilo/skills/release-jetbrains/script/watch-publish.ts --pr <number> --version <version>
```
Report the Marketplace channel and GitHub Release URL. RC versions publish to the `eap` channel; stable versions publish to the default Marketplace channel.
## Recovery
- If prepare created the tag but failed before creating a PR, rerun prepare for the same version. The existing workflow reuses the tag if it points to the same commit.
- If a tag points to an unexpected SHA, stop and inspect manually. Do not move or delete release tags casually.
- If release PR checks fail from an apparent flake, use `gh run rerun <run-id> --failed`, then `gh run watch <run-id> --exit-status` before publishing.
- If publish fails after merge, rerun the failed workflow only if Marketplace did not already accept the version.
- If Marketplace succeeds but GitHub Release upload fails, manually create or edit the GitHub Release for `jetbrains/v<version>` using the reviewed changelog.
@@ -0,0 +1,75 @@
#!/usr/bin/env bun
import { $ } from "bun"
import { parseArgs } from "util"
const repo = process.env.GH_REPO ?? process.env.GITHUB_REPOSITORY ?? "Kilo-Org/kilocode"
const workflow = "prepare-jetbrains-release.yml"
const { values } = parseArgs({
args: Bun.argv.slice(2),
options: {
kind: { type: "string" },
version: { type: "string" },
"from-tag": { type: "string" },
"run-id": { type: "string" },
help: { type: "boolean", short: "h", default: false },
},
})
if (values.help) {
console.log(
`Usage: bun .kilo/skills/release-jetbrains/script/dispatch-prepare.ts --kind <rc|stable> --version <version> [--from-tag <tag>] [--run-id <id>]`,
)
process.exit(0)
}
const kind = values.kind
const ver = values.version
const branch = `jetbrains/release/v${ver}`
if (kind !== "rc" && kind !== "stable") throw new Error("--kind must be rc or stable")
if (!ver) throw new Error("--version is required")
const id = values["run-id"] ?? (await dispatch())
const url = `https://github.com/${repo}/actions/runs/${id}`
console.log(`prepareRunId=${id}`)
console.log(`runUrl=${url}`)
await $`gh run watch ${id} --repo ${repo} --exit-status`
const pr = (await $`gh pr view ${branch} --repo ${repo} --json number,url`.json()) as { number: number; url: string }
console.log(
JSON.stringify(
{
prNumber: pr.number,
prUrl: pr.url,
runUrl: url,
branch,
},
null,
2,
),
)
async function dispatch() {
const before = new Set((await runs()).map((run) => run.databaseId))
const args = ["workflow", "run", workflow, "--repo", repo, "-f", `kind=${kind}`, "-f", `version=${ver}`]
if (values["from-tag"]) args.push("-f", `from_tag=${values["from-tag"]}`)
await $`gh ${args}`
for (const _ of Array.from({ length: 60 })) {
const run = (await runs()).find((item) => !before.has(item.databaseId))
if (run) return String(run.databaseId)
await Bun.sleep(1000)
}
throw new Error(`No new ${workflow} run appeared after dispatch`)
}
async function runs() {
return (await $`gh run list --repo ${repo} --workflow ${workflow} --event workflow_dispatch --json databaseId,createdAt,status --limit 100`.json()) as {
databaseId: number
createdAt: string
status: string
}[]
}
@@ -0,0 +1,109 @@
#!/usr/bin/env bun
import { $ } from "bun"
import semver from "semver"
import { parseArgs } from "util"
const { values } = parseArgs({
args: Bun.argv.slice(2),
options: {
spec: { type: "string" },
help: { type: "boolean", short: "h", default: false },
},
})
if (values.help) {
console.log(
`Usage: bun .kilo/skills/release-jetbrains/script/resolve-version.ts --spec <next rc|next stable|version>`,
)
process.exit(0)
}
const spec = values.spec?.trim().toLowerCase()
if (!spec) throw new Error("--spec is required")
await $`git fetch origin main --tags`.quiet()
const tags = await list()
const hit = explicit(spec) ?? next(spec, tags)
const from = base(hit.version, hit.kind, tags)
console.log(
JSON.stringify(
{
version: hit.version,
kind: hit.kind,
fromTagDefault: from,
},
null,
2,
),
)
type Kind = "rc" | "stable"
type Tag = { tag: string; version: string }
function explicit(spec: string) {
if (/^\d+\.\d+\.\d+-rc\.\d+$/.test(spec)) return { version: spec, kind: "rc" as Kind }
if (/^\d+\.\d+\.\d+$/.test(spec)) return { version: spec, kind: "stable" as Kind }
return undefined
}
function next(spec: string, tags: Tag[]) {
const latest = [...tags].sort((a, b) => semver.rcompare(a.version, b.version))[0]
if (!latest) throw new Error("No JetBrains release tags found; pass an explicit version")
const parsed = semver.parse(latest.version)
if (!parsed) throw new Error(`Invalid latest JetBrains tag: ${latest.tag}`)
if (spec === "next rc") return rc(parsed)
if (spec === "next stable") return stable(parsed)
throw new Error("--spec must be 'next rc', 'next stable', x.y.z-rc.n, or x.y.z")
}
function rc(ver: semver.SemVer) {
const pre = ver.prerelease
if (pre[0] === "rc" && typeof pre[1] === "number") {
return { version: `${ver.major}.${ver.minor}.${ver.patch}-rc.${pre[1] + 1}`, kind: "rc" as Kind }
}
return { version: `${ver.major}.${ver.minor}.${ver.patch + 1}-rc.1`, kind: "rc" as Kind }
}
function stable(ver: semver.SemVer) {
if (ver.prerelease.length) return { version: `${ver.major}.${ver.minor}.${ver.patch}`, kind: "stable" as Kind }
return { version: `${ver.major}.${ver.minor}.${ver.patch + 1}`, kind: "stable" as Kind }
}
function base(ver: string, kind: Kind, tags: Tag[]) {
const want = semver.parse(ver)
if (!want) throw new Error(`Invalid semver: ${ver}`)
const prior = tags
.filter((item) => !semver.prerelease(item.version) && semver.lt(item.version, ver))
.sort((a, b) => semver.rcompare(a.version, b.version))
if (kind === "stable") {
const hit = prior[0]
if (!hit) return null
return hit.tag
}
const prerelease = tags
.filter((item) => {
const parsed = semver.parse(item.version)
if (!parsed) return false
if (parsed.major !== want.major || parsed.minor !== want.minor || parsed.patch !== want.patch) return false
return Boolean(semver.prerelease(item.version)) && semver.lt(item.version, ver)
})
.sort((a, b) => semver.rcompare(a.version, b.version))
return (prerelease[0] ?? prior[0])?.tag ?? null
}
async function list() {
const text = await $`git tag --list ${"jetbrains/v*"}`.text()
return text
.split(/\r?\n/)
.map((item) => item.trim())
.filter(Boolean)
.map((tag) => ({ tag, version: tag.replace(/^jetbrains\/v/, "") }))
.filter((item) => semver.valid(item.version))
}
@@ -0,0 +1,84 @@
#!/usr/bin/env bun
import { $ } from "bun"
import { parseArgs } from "util"
const repo = process.env.GH_REPO ?? process.env.GITHUB_REPOSITORY ?? "Kilo-Org/kilocode"
const path = "packages/kilo-jetbrains/CHANGELOG.md"
const { values } = parseArgs({
args: Bun.argv.slice(2),
options: {
version: { type: "string" },
file: { type: "string" },
help: { type: "boolean", short: "h", default: false },
},
})
if (values.help) {
console.log(
`Usage: bun .kilo/skills/release-jetbrains/script/update-changelog.ts --version <version> --file <section.md>`,
)
process.exit(0)
}
const ver = values.version
const file = values.file
if (!ver) throw new Error("--version is required")
if (!file) throw new Error("--file is required")
const branch = `jetbrains/release/v${ver}`
const section = strip((await Bun.file(file).text()).trim())
validate(section, ver)
const current = (await $`gh api ${`repos/${repo}/contents/${path}?ref=${encodeURIComponent(branch)}`}`.json()) as {
content: string
encoding: string
sha: string
}
if (current.encoding !== "base64") throw new Error(`Unexpected content encoding: ${current.encoding}`)
const text = Buffer.from(current.content.replace(/\s/g, ""), "base64").toString("utf8")
const pattern = regex(ver)
if (!pattern.test(text)) throw new Error(`${path} is missing a section for ${ver} on ${branch}`)
const next =
text
.replace(pattern, `\n${section}\n`)
.replace(/\n{3,}/g, "\n\n")
.trimEnd() + "\n"
if (next === text) {
console.log("CHANGELOG.md already contains the provided section")
process.exit(0)
}
const body = {
message: `docs(jetbrains): edit changelog for v${ver}`,
content: Buffer.from(next).toString("base64"),
sha: current.sha,
branch,
}
const tmp = await temp(body)
await $`gh api ${`repos/${repo}/contents/${path}`} --method PUT --input ${tmp}`
console.log(`Committed changelog update to ${branch}`)
function strip(text: string) {
return text.replace(/<!--\s*CONTEXT[\s\S]*?-->/g, "").trim()
}
function validate(section: string, ver: string) {
if (!section.startsWith(`## [${ver}]`)) throw new Error(`Section must start with ## [${ver}]`)
if (!/^### (Added|Fixed|Changed)$/m.test(section)) {
throw new Error("Section must contain at least one Added, Fixed, or Changed heading")
}
}
function regex(ver: string) {
const safe = ver.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")
return new RegExp(`\n?## \\[${safe}\\][\\s\\S]*?(?=\n## \\[|$)`)
}
async function temp(body: object) {
const file = `/tmp/kilo-jetbrains-changelog-${Date.now()}.json`
await Bun.write(file, JSON.stringify(body))
return file
}
@@ -0,0 +1,128 @@
#!/usr/bin/env bun
import { $ } from "bun"
import { parseArgs } from "util"
const repo = process.env.GH_REPO ?? process.env.GITHUB_REPOSITORY ?? "Kilo-Org/kilocode"
const workflow = "publish-jetbrains.yml"
const { values } = parseArgs({
args: Bun.argv.slice(2),
options: {
pr: { type: "string" },
version: { type: "string" },
merge: { type: "boolean", default: false },
"run-id": { type: "string" },
help: { type: "boolean", short: "h", default: false },
},
})
if (values.help) {
console.log(
`Usage: bun .kilo/skills/release-jetbrains/script/watch-publish.ts --pr <number> --version <version> [--merge] [--run-id <id>]`,
)
process.exit(0)
}
const pr = values.pr
const ver = values.version
if (!pr) throw new Error("--pr is required")
if (!ver) throw new Error("--version is required")
const branch = `jetbrains/release/v${ver}`
const id = values["run-id"] ?? (values.merge ? await merge() : await find())
const url = `https://github.com/${repo}/actions/runs/${id}`
console.log(`publishRunId=${id}`)
console.log(`runUrl=${url}`)
await $`gh run watch ${id} --repo ${repo} --exit-status`
const rel = await retry(
async () =>
(await $`gh release view ${`jetbrains/v${ver}`} --repo ${repo} --json url,isPrerelease`.json()) as {
url: string
isPrerelease: boolean
},
"view release",
)
console.log(
JSON.stringify(
{
version: ver,
marketplaceChannel: rel.isPrerelease ? "eap" : "default",
releaseUrl: rel.url,
runUrl: url,
},
null,
2,
),
)
async function merge() {
const before = new Set((await runs()).map((run) => run.databaseId))
try {
await $`gh pr merge ${pr} --repo ${repo} --merge`
} catch (err) {
if (await merged()) {
console.warn(`PR ${pr} is already merged; looking for the publish workflow run`)
return await find()
}
throw err
}
for (const _ of Array.from({ length: 120 })) {
const run = (await runs()).find((item) => item.headBranch === branch && !before.has(item.databaseId))
if (run) return String(run.databaseId)
await Bun.sleep(1000)
}
throw new Error(`No new ${workflow} run appeared after merging PR ${pr}`)
}
async function find() {
for (const _ of Array.from({ length: 120 })) {
const run = (await runs()).find((item) => item.headBranch === branch)
if (run) return String(run.databaseId)
await Bun.sleep(1000)
}
throw new Error(`No ${workflow} run found for ${branch}. Merge PR ${pr} first, or pass --merge to merge it automatically.`)
}
async function merged() {
const info = await retry(
async () => (await $`gh pr view ${pr} --repo ${repo} --json state`.json()) as { state: string },
"check PR state",
)
return info.state === "MERGED"
}
async function runs() {
return await retry(
async () =>
(await $`gh run list --repo ${repo} --workflow ${workflow} --event pull_request --json databaseId,createdAt,headBranch,status --limit 100`.json()) as {
databaseId: number
createdAt: string
headBranch: string
status: string
}[],
"list workflow runs",
)
}
async function retry<T>(task: () => Promise<T>, label: string, tries = 5): Promise<T> {
try {
return await task()
} catch (err) {
if (tries <= 1 || !transient(err)) throw err
console.warn(`${label} failed with a transient GitHub error; retrying (${tries - 1} left): ${message(err)}`)
await Bun.sleep(2000)
return await retry(task, label, tries - 1)
}
}
function transient(err: unknown) {
return /\bHTTP 5\d\d\b|\b50[234]\b|Bad Gateway|Gateway Timeout|Service Unavailable/i.test(message(err))
}
function message(err: unknown) {
return err instanceof Error ? err.message : String(err)
}
-376
View File
@@ -1,376 +0,0 @@
{
"name": ".kilocode",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"dependencies": {
"@kilocode/plugin": "7.2.24"
}
},
"node_modules/@kilocode/plugin": {
"version": "7.2.24",
"resolved": "https://registry.npmjs.org/@kilocode/plugin/-/plugin-7.2.24.tgz",
"integrity": "sha512-b2Xh3N/KaGdYj9hZbzZLKlDHXUsdMey0zL8G+RsnxDQCuhNm46LPyixtlJQhbCyir/zEEvy3uJI9kqKCsOWmQg==",
"license": "MIT",
"dependencies": {
"@kilocode/sdk": "7.2.24",
"effect": "4.0.0-beta.48",
"zod": "4.1.8"
},
"peerDependencies": {
"@opentui/core": ">=0.1.100",
"@opentui/solid": ">=0.1.100"
},
"peerDependenciesMeta": {
"@opentui/core": {
"optional": true
},
"@opentui/solid": {
"optional": true
}
}
},
"node_modules/@kilocode/sdk": {
"version": "7.2.24",
"resolved": "https://registry.npmjs.org/@kilocode/sdk/-/sdk-7.2.24.tgz",
"integrity": "sha512-Yos6WeyvMl86OGXLQqQ9YWDm/geAC77xetoptEsS3DLtPVgvz1Nqkvas77fAuAqwkSfGL2mLIiHUTqJUTVflOw==",
"license": "MIT",
"dependencies": {
"cross-spawn": "7.0.6"
}
},
"node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz",
"integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz",
"integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz",
"integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==",
"cpu": [
"arm"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz",
"integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz",
"integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz",
"integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@standard-schema/spec": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz",
"integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==",
"license": "MIT"
},
"node_modules/cross-spawn": {
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
"license": "MIT",
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
"which": "^2.0.1"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/detect-libc": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
"integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
"license": "Apache-2.0",
"optional": true,
"engines": {
"node": ">=8"
}
},
"node_modules/effect": {
"version": "4.0.0-beta.48",
"resolved": "https://registry.npmjs.org/effect/-/effect-4.0.0-beta.48.tgz",
"integrity": "sha512-MMAM/ZabuNdNmgXiin+BAanQXK7qM8mlt7nfXDoJ/Gn9V8i89JlCq+2N0AiWmqFLXjGLA0u3FjiOjSOYQk5uMw==",
"license": "MIT",
"dependencies": {
"@standard-schema/spec": "^1.1.0",
"fast-check": "^4.6.0",
"find-my-way-ts": "^0.1.6",
"ini": "^6.0.0",
"kubernetes-types": "^1.30.0",
"msgpackr": "^1.11.9",
"multipasta": "^0.2.7",
"toml": "^4.1.1",
"uuid": "^13.0.0",
"yaml": "^2.8.3"
}
},
"node_modules/fast-check": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/fast-check/-/fast-check-4.7.0.tgz",
"integrity": "sha512-NsZRtqvSSoCP0HbNjUD+r1JH8zqZalyp6gLY9e7OYs7NK9b6AHOs2baBFeBG7bVNsuoukh89x2Yg3rPsul8ziQ==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/dubzzz"
},
{
"type": "opencollective",
"url": "https://opencollective.com/fast-check"
}
],
"license": "MIT",
"dependencies": {
"pure-rand": "^8.0.0"
},
"engines": {
"node": ">=12.17.0"
}
},
"node_modules/find-my-way-ts": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/find-my-way-ts/-/find-my-way-ts-0.1.6.tgz",
"integrity": "sha512-a85L9ZoXtNAey3Y6Z+eBWW658kO/MwR7zIafkIUPUMf3isZG0NCs2pjW2wtjxAKuJPxMAsHUIP4ZPGv0o5gyTA==",
"license": "MIT"
},
"node_modules/ini": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz",
"integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==",
"license": "ISC",
"engines": {
"node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"license": "ISC"
},
"node_modules/kubernetes-types": {
"version": "1.30.0",
"resolved": "https://registry.npmjs.org/kubernetes-types/-/kubernetes-types-1.30.0.tgz",
"integrity": "sha512-Dew1okvhM/SQcIa2rcgujNndZwU8VnSapDgdxlYoB84ZlpAD43U6KLAFqYo17ykSFGHNPrg0qry0bP+GJd9v7Q==",
"license": "Apache-2.0"
},
"node_modules/msgpackr": {
"version": "1.11.10",
"resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.10.tgz",
"integrity": "sha512-iCZNq+HszvF+fC3anCm4nBmWEnbeIAfpDs6IStAEKhQ2YSgkjzVG2FF9XJqwwQh5bH3N9OUTUt4QwVN6MLMLtA==",
"license": "MIT",
"optionalDependencies": {
"msgpackr-extract": "^3.0.2"
}
},
"node_modules/msgpackr-extract": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz",
"integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==",
"hasInstallScript": true,
"license": "MIT",
"optional": true,
"dependencies": {
"node-gyp-build-optional-packages": "5.2.2"
},
"bin": {
"download-msgpackr-prebuilds": "bin/download-prebuilds.js"
},
"optionalDependencies": {
"@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3",
"@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3",
"@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3",
"@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3",
"@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3",
"@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3"
}
},
"node_modules/multipasta": {
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/multipasta/-/multipasta-0.2.7.tgz",
"integrity": "sha512-KPA58d68KgGil15oDqXjkUBEBYc00XvbPj5/X+dyzeo/lWm9Nc25pQRlf1D+gv4OpK7NM0J1odrbu9JNNGvynA==",
"license": "MIT"
},
"node_modules/node-gyp-build-optional-packages": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz",
"integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==",
"license": "MIT",
"optional": true,
"dependencies": {
"detect-libc": "^2.0.1"
},
"bin": {
"node-gyp-build-optional-packages": "bin.js",
"node-gyp-build-optional-packages-optional": "optional.js",
"node-gyp-build-optional-packages-test": "build-test.js"
}
},
"node_modules/path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/pure-rand": {
"version": "8.4.0",
"resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-8.4.0.tgz",
"integrity": "sha512-IoM8YF/jY0hiugFo/wOWqfmarlE6J0wc6fDK1PhftMk7MGhVZl88sZimmqBBFomLOCSmcCCpsfj7wXASCpvK9A==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/dubzzz"
},
{
"type": "opencollective",
"url": "https://opencollective.com/fast-check"
}
],
"license": "MIT"
},
"node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"license": "MIT",
"dependencies": {
"shebang-regex": "^3.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/shebang-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/toml": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/toml/-/toml-4.1.1.tgz",
"integrity": "sha512-EBJnVBr3dTXdA89WVFoAIPUqkBjxPMwRqsfuo1r240tKFHXv3zgca4+NJib/h6TyvGF7vOawz0jGuryJCdNHrw==",
"license": "MIT",
"engines": {
"node": ">=20"
}
},
"node_modules/uuid": {
"version": "13.0.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz",
"integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==",
"funding": [
"https://github.com/sponsors/broofa",
"https://github.com/sponsors/ctavan"
],
"license": "MIT",
"bin": {
"uuid": "dist-node/bin/uuid"
}
},
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
},
"bin": {
"node-which": "bin/node-which"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/yaml": {
"version": "2.8.3",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz",
"integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==",
"license": "ISC",
"bin": {
"yaml": "bin.mjs"
},
"engines": {
"node": ">= 14.6"
},
"funding": {
"url": "https://github.com/sponsors/eemeli"
}
},
"node_modules/zod": {
"version": "4.1.8",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
}
}
}
+1
View File
@@ -0,0 +1 @@
v1.15.9
+19 -76
View File
@@ -1,7 +1,7 @@
---
mode: primary
hidden: true
model: kilo/minimax/minimax-m2.5
model: kilo/openai/gpt-5-nano # kilocode_change
color: "#44BA81"
tools:
"*": false
@@ -14,95 +14,38 @@ Use your github-triage tool to triage issues.
This file is the source of truth for ownership/routing rules.
## Labels
Assign issues by choosing the team with the strongest overlap. The github-triage tool will assign a random member from that team.
### windows
Do not add labels to issues. Only assign an owner.
Use for any issue that mentions Windows (the OS). Be sure they are saying that they are on Windows.
When calling github-triage, pass one of these team values: tui, desktop_web, core, inference, windows, jetbrains, extension
- Use if they mention WSL too
## Teams
#### perf
### TUI
Performance-related issues:
Terminal UI issues, including rendering, keybindings, scrolling, terminal compatibility, SSH behavior, crashes in the TUI, and low-level TUI performance.
- Slow performance
- High RAM usage
- High CPU usage
### Desktop / Web
**Only** add if it's likely a RAM or CPU issue. **Do not** add for LLM slowness.
Desktop application and browser-based app issues, including `opencode web`, desktop-specific UI behavior, packaging, and web view problems.
#### nix
### Core
**Only** add if the issue explicitly mentions nix.
Core opencode server and harness issues, including sqlite, snapshots, memory, API behavior, agent context construction, tool execution, provider integrations, model behavior, documentation, and larger architectural features.
If the issue does not mention nix, do not add nix.
### Inference
If the issue mentions nix, assign to `catrielmuller`.
Kilo Provider, Provider implementation, and billing issues.
#### core
### Windows
Use for core server issues in `packages/opencode/`, excluding `packages/opencode/src/cli/cmd/tui/`.
Windows-specific issues, including native Windows behavior, WSL interactions, path handling, shell compatibility, and installation or runtime problems that only happen on Windows.
Examples:
### Jetbrains
- LSP server behavior
- Harness behavior (agent + tools)
- Feature requests for server behavior
- Agent context construction
- API endpoints
- Provider integration issues
- New, broken, or poor-quality models
Jetbrains extension related issues.
#### vscode
### Extension
Use for issues related to the VS Code extension in `packages/kilo-vscode/`.
#### gateway
Use for issues related to the Kilo Gateway in `packages/kilo-gateway/`.
When assigning to people here are the following rules:
Nix:
ONLY assign if the issue will have the "nix" label.
- catrielmuller
Models / Providers:
Use for issues about model quality, provider integrations, or broken/new models.
- chrarnoldus
Cloud Agents:
Use for issues about cloud agent behavior or infrastructure.
- pandemicsyn
- eshurakov
Core (`packages/opencode/...`):
- kevinvandijk
- marius-kilocode
- catrielmuller
VSCode Extension (`packages/kilo-vscode/...`):
- markijbema
Kilo Gateway (`packages/kilo-gateway/...`):
- jrf0110
Windows:
- catrielmuller (assign any issue that mentions Windows or is likely Windows-specific)
Determinism rules:
- If "nix" label is added but title + body does not mention nix/nixos, the tool will drop "nix"
- If title + body mentions nix/nixos, assign to `catrielmuller`
- If "vscode" label is added, assign to `markijbema`
- If "gateway" label is added, assign to `jrf0110`
In all other cases, choose the team/section with the most overlap with the issue and assign a member from that team at random.
VSCode Extension related issues.
+4 -1
View File
@@ -18,9 +18,12 @@ Do not use `git log` or author metadata when deciding attribution.
Rules:
- Write the final file with sections in this order:
- Write the final file with release sections in this order:
`## Core`, `## TUI`, `## Desktop`, `## SDK`, `## Extensions`
- Only include sections that have at least one notable entry
- Within each release section, keep bug fixes grouped under `### Bugfixes`
- Keep other notable entries under `### Improvements` when a section has bug fixes too
- Omit empty subsections
- Keep one bullet per commit you keep
- Skip commits that are entirely internal, CI, tests, refactors, or otherwise not user-facing
- Start each bullet with a capital letter
+1
View File
@@ -18,4 +18,5 @@
"github-triage": false,
"github-pr-search": false,
},
"disabled_providers": [],
}
+367 -285
View File
@@ -1,35 +1,62 @@
/** @jsxImportSource @opentui/solid */
import { useKeyboard, useTerminalDimensions, type JSX } from "@opentui/solid"
import { RGBA, VignetteEffect } from "@opentui/core"
import type {
TuiKeybindSet,
TuiPlugin,
TuiPluginApi,
TuiPluginMeta,
TuiPluginModule,
TuiSlotPlugin,
} from "@opencode-ai/plugin/tui"
import { useTerminalDimensions, type JSX } from "@opentui/solid"
import { useBindings, useKeymapSelector } from "@opentui/keymap/solid"
import { RGBA, VignetteEffect, type KeyEvent, type Renderable } from "@opentui/core"
import { createBindingLookup, type BindingConfig } from "@opentui/keymap/extras"
import type { TuiPlugin, TuiPluginApi, TuiPluginMeta, TuiPluginModule, TuiSlotPlugin } from "@opencode-ai/plugin/tui"
const tabs = ["overview", "counter", "help"]
const bind = {
modal: "ctrl+shift+m",
screen: "ctrl+shift+o",
home: "escape,ctrl+h",
left: "left,h",
right: "right,l",
up: "up,k",
down: "down,j",
alert: "a",
confirm: "c",
prompt: "p",
select: "s",
modal_accept: "enter,return",
modal_close: "escape",
dialog_close: "escape",
local: "x",
local_push: "enter,return",
local_close: "q,backspace",
host: "z",
const command = {
modal: "smoke_modal",
screen: "smoke_screen",
alert: "smoke_alert",
confirm: "smoke_confirm",
prompt: "smoke_prompt",
select: "smoke_select",
host: "smoke_host",
home: "smoke_home",
toast: "smoke_toast",
dialog_close: "smoke_dialog_close",
local_push: "smoke_local_push",
local_pop: "smoke_local_pop",
screen_home: "smoke_screen_home",
screen_left: "smoke_screen_left",
screen_right: "smoke_screen_right",
screen_up: "smoke_screen_up",
screen_down: "smoke_screen_down",
screen_modal: "smoke_screen_modal",
screen_local: "smoke_screen_local",
screen_host: "smoke_screen_host",
screen_alert: "smoke_screen_alert",
screen_confirm: "smoke_screen_confirm",
screen_prompt: "smoke_screen_prompt",
screen_select: "smoke_screen_select",
modal_accept: "smoke_modal_accept",
modal_close: "smoke_modal_close",
}
type SmokeBindings = BindingConfig<Renderable, KeyEvent>
const defaultKeymap = {
[command.modal]: "ctrl+shift+m",
[command.screen]: "ctrl+shift+o",
[command.dialog_close]: "escape",
[command.local_push]: "enter,return",
[command.local_pop]: "escape,q,backspace",
[command.screen_home]: "escape,ctrl+h",
[command.screen_left]: "left,h",
[command.screen_right]: "right,l",
[command.screen_up]: "up,k",
[command.screen_down]: "down,j",
[command.screen_modal]: "ctrl+shift+m",
[command.screen_local]: "x",
[command.screen_host]: "z",
[command.screen_alert]: "a",
[command.screen_confirm]: "c",
[command.screen_prompt]: "p",
[command.screen_select]: "s",
[command.modal_accept]: "enter,return",
[command.modal_close]: "escape",
}
const pick = (value: unknown, fallback: string) => {
@@ -43,16 +70,14 @@ const num = (value: unknown, fallback: number) => {
return value
}
const rec = (value: unknown) => {
if (!value || typeof value !== "object" || Array.isArray(value)) return
return Object.fromEntries(Object.entries(value))
}
const record = (value: unknown): value is Record<string, unknown> =>
!!value && typeof value === "object" && !Array.isArray(value)
type Cfg = {
label: string
route: string
vignette: number
keybinds: Record<string, unknown> | undefined
keybinds: SmokeBindings | undefined
}
type Route = {
@@ -74,7 +99,7 @@ const cfg = (options: Record<string, unknown> | undefined) => {
label: pick(options?.label, "smoke"),
route: pick(options?.route, "workspace-smoke"),
vignette: Math.max(0, num(options?.vignette, 0.35)),
keybinds: rec(options?.keybinds),
keybinds: record(options?.keybinds) ? (options.keybinds as SmokeBindings) : undefined,
}
}
@@ -85,7 +110,12 @@ const names = (input: Cfg) => {
}
}
type Keys = TuiKeybindSet
function createKeys(input: SmokeBindings | undefined) {
return createBindingLookup({ ...defaultKeymap, ...input })
}
type Keys = ReturnType<typeof createKeys>
const ui = {
panel: "#1d1d1d",
border: "#4a4a4a",
@@ -292,125 +322,174 @@ const Screen = (props: {
}
const pop = (base?: State) => {
const next = base ?? current(props.api, props.route)
const local = Math.max(0, next.local - 1)
set(local, next)
set(Math.max(0, next.local - 1), next)
}
const show = () => {
setTimeout(() => {
open()
}, 0)
}
useKeyboard((evt) => {
if (props.api.route.current.name !== props.route.screen) return
const next = current(props.api, props.route)
if (props.api.ui.dialog.open) {
if (props.keys.match("dialog_close", evt)) {
evt.preventDefault()
evt.stopPropagation()
props.api.ui.dialog.clear()
return
}
return
}
const screenActive = () => props.api.route.current.name === props.route.screen
if (next.local > 0) {
if (evt.name === "escape" || props.keys.match("local_close", evt)) {
evt.preventDefault()
evt.stopPropagation()
pop(next)
return
}
useBindings(() => ({
enabled: () => screenActive() && props.api.ui.dialog.open,
commands: [
{
name: command.dialog_close,
run() {
props.api.ui.dialog.clear()
},
},
],
bindings: props.keys.gather("smoke.dialog", [command.dialog_close]),
}))
if (props.keys.match("local_push", evt)) {
evt.preventDefault()
evt.stopPropagation()
push(next)
return
}
return
}
useBindings(() => ({
enabled: () => screenActive() && !props.api.ui.dialog.open && current(props.api, props.route).local > 0,
commands: [
{
name: command.local_push,
run() {
push(current(props.api, props.route))
},
},
{
name: command.local_pop,
run() {
pop(current(props.api, props.route))
},
},
],
bindings: props.keys.gather("smoke.local", [command.local_push, command.local_pop]),
}))
if (props.keys.match("home", evt)) {
evt.preventDefault()
evt.stopPropagation()
props.api.route.navigate("home")
return
}
useBindings(() => ({
enabled: () => screenActive() && !props.api.ui.dialog.open && current(props.api, props.route).local === 0,
commands: [
{
name: command.screen_home,
run() {
props.api.route.navigate("home")
},
},
{
name: command.screen_left,
run() {
const next = current(props.api, props.route)
props.api.route.navigate(props.route.screen, { ...next, tab: (next.tab - 1 + tabs.length) % tabs.length })
},
},
{
name: command.screen_right,
run() {
const next = current(props.api, props.route)
props.api.route.navigate(props.route.screen, { ...next, tab: (next.tab + 1) % tabs.length })
},
},
{
name: command.screen_up,
run() {
const next = current(props.api, props.route)
props.api.route.navigate(props.route.screen, { ...next, count: next.count + 1 })
},
},
{
name: command.screen_down,
run() {
const next = current(props.api, props.route)
props.api.route.navigate(props.route.screen, { ...next, count: next.count - 1 })
},
},
{
name: command.screen_modal,
run() {
props.api.route.navigate(props.route.modal, current(props.api, props.route))
},
},
{
name: command.screen_local,
run() {
open()
},
},
{
name: command.screen_host,
run() {
host(props.api, props.input, skin)
},
},
{
name: command.screen_alert,
run() {
warn(props.api, props.route, current(props.api, props.route))
},
},
{
name: command.screen_confirm,
run() {
check(props.api, props.route, current(props.api, props.route))
},
},
{
name: command.screen_prompt,
run() {
entry(props.api, props.route, current(props.api, props.route))
},
},
{
name: command.screen_select,
run() {
picker(props.api, props.route, current(props.api, props.route))
},
},
],
bindings: props.keys.gather("smoke.screen", [
command.screen_home,
command.screen_left,
command.screen_right,
command.screen_up,
command.screen_down,
command.screen_modal,
command.screen_local,
command.screen_host,
command.screen_alert,
command.screen_confirm,
command.screen_prompt,
command.screen_select,
]),
}))
const shortcuts = useKeymapSelector((keymap) => {
const bindings = keymap.getCommandBindings({
visibility: "registered",
commands: [
command.screen_home,
command.screen_up,
command.screen_down,
command.screen_modal,
command.screen_alert,
command.screen_confirm,
command.screen_prompt,
command.screen_select,
command.screen_local,
command.screen_host,
command.local_push,
command.local_pop,
],
})
if (props.keys.match("left", evt)) {
evt.preventDefault()
evt.stopPropagation()
props.api.route.navigate(props.route.screen, { ...next, tab: (next.tab - 1 + tabs.length) % tabs.length })
return
}
if (props.keys.match("right", evt)) {
evt.preventDefault()
evt.stopPropagation()
props.api.route.navigate(props.route.screen, { ...next, tab: (next.tab + 1) % tabs.length })
return
}
if (props.keys.match("up", evt)) {
evt.preventDefault()
evt.stopPropagation()
props.api.route.navigate(props.route.screen, { ...next, count: next.count + 1 })
return
}
if (props.keys.match("down", evt)) {
evt.preventDefault()
evt.stopPropagation()
props.api.route.navigate(props.route.screen, { ...next, count: next.count - 1 })
return
}
if (props.keys.match("modal", evt)) {
evt.preventDefault()
evt.stopPropagation()
props.api.route.navigate(props.route.modal, next)
return
}
if (props.keys.match("local", evt)) {
evt.preventDefault()
evt.stopPropagation()
open()
return
}
if (props.keys.match("host", evt)) {
evt.preventDefault()
evt.stopPropagation()
host(props.api, props.input, skin)
return
}
if (props.keys.match("alert", evt)) {
evt.preventDefault()
evt.stopPropagation()
warn(props.api, props.route, next)
return
}
if (props.keys.match("confirm", evt)) {
evt.preventDefault()
evt.stopPropagation()
check(props.api, props.route, next)
return
}
if (props.keys.match("prompt", evt)) {
evt.preventDefault()
evt.stopPropagation()
entry(props.api, props.route, next)
return
}
if (props.keys.match("select", evt)) {
evt.preventDefault()
evt.stopPropagation()
picker(props.api, props.route, next)
return {
screen_home: props.api.keys.formatBindings(bindings.get(command.screen_home)) ?? "",
screen_up: props.api.keys.formatBindings(bindings.get(command.screen_up)) ?? "",
screen_down: props.api.keys.formatBindings(bindings.get(command.screen_down)) ?? "",
screen_modal: props.api.keys.formatBindings(bindings.get(command.screen_modal)) ?? "",
screen_alert: props.api.keys.formatBindings(bindings.get(command.screen_alert)) ?? "",
screen_confirm: props.api.keys.formatBindings(bindings.get(command.screen_confirm)) ?? "",
screen_prompt: props.api.keys.formatBindings(bindings.get(command.screen_prompt)) ?? "",
screen_select: props.api.keys.formatBindings(bindings.get(command.screen_select)) ?? "",
screen_local: props.api.keys.formatBindings(bindings.get(command.screen_local)) ?? "",
screen_host: props.api.keys.formatBindings(bindings.get(command.screen_host)) ?? "",
local_push: props.api.keys.formatBindings(bindings.get(command.local_push)) ?? "",
local_pop: props.api.keys.formatBindings(bindings.get(command.local_pop)) ?? "",
}
})
@@ -430,7 +509,7 @@ const Screen = (props: {
<b>{props.input.label} screen</b>
<span style={{ fg: skin.muted }}> plugin route</span>
</text>
<text fg={skin.muted}>{props.keys.print("home")} home</text>
<text fg={skin.muted}>{shortcuts().screen_home} home</text>
</box>
<box flexDirection="row" gap={1} paddingBottom={1}>
@@ -477,7 +556,7 @@ const Screen = (props: {
<box flexDirection="column" gap={1}>
<text fg={skin.text}>Counter: {value.count}</text>
<text fg={skin.muted}>
{props.keys.print("up")} / {props.keys.print("down")} change value
{shortcuts().screen_up} / {shortcuts().screen_down} change value
</text>
</box>
) : null}
@@ -485,17 +564,16 @@ const Screen = (props: {
{value.tab === 2 ? (
<box flexDirection="column" gap={1}>
<text fg={skin.muted}>
{props.keys.print("modal")} modal | {props.keys.print("alert")} alert | {props.keys.print("confirm")}{" "}
confirm | {props.keys.print("prompt")} prompt | {props.keys.print("select")} select
{shortcuts().screen_modal} modal | {shortcuts().screen_alert} alert | {shortcuts().screen_confirm}{" "}
confirm | {shortcuts().screen_prompt} prompt | {shortcuts().screen_select} select
</text>
<text fg={skin.muted}>
{props.keys.print("local")} local stack | {props.keys.print("host")} host stack
{shortcuts().screen_local} local stack | {shortcuts().screen_host} host stack
</text>
<text fg={skin.muted}>
local open: {props.keys.print("local_push")} push nested · esc or {props.keys.print("local_close")}{" "}
close
local open: {shortcuts().local_push} push nested · {shortcuts().local_pop} close
</text>
<text fg={skin.muted}>{props.keys.print("home")} returns home</text>
<text fg={skin.muted}>{shortcuts().screen_home} returns home</text>
</box>
) : null}
</box>
@@ -548,7 +626,7 @@ const Screen = (props: {
</text>
<text fg={skin.muted}>Plugin-owned stack depth: {value.local}</text>
<text fg={skin.muted}>
{props.keys.print("local_push")} push nested · {props.keys.print("local_close")} pop/close
{shortcuts().local_push} push nested · {shortcuts().local_pop} pop/close
</text>
<box flexDirection="row" gap={1}>
<Btn txt="push" run={push} skin={skin} on />
@@ -571,20 +649,35 @@ const Modal = (props: {
const value = parse(props.params)
const skin = tone(props.api)
useKeyboard((evt) => {
if (props.api.route.current.name !== props.route.modal) return
useBindings(() => ({
enabled: () => props.api.route.current.name === props.route.modal,
commands: [
{
name: command.modal_accept,
run() {
props.api.route.navigate(props.route.screen, { ...parse(props.params), source: "modal" })
},
},
{
name: command.modal_close,
run() {
props.api.route.navigate("home")
},
},
],
bindings: props.keys.gather("smoke.modal", [command.modal_accept, command.modal_close]),
}))
const shortcuts = useKeymapSelector((keymap) => {
const bindings = keymap.getCommandBindings({
visibility: "registered",
commands: [command.modal, command.screen, command.modal_accept, command.modal_close],
})
if (props.keys.match("modal_accept", evt)) {
evt.preventDefault()
evt.stopPropagation()
props.api.route.navigate(props.route.screen, { ...value, source: "modal" })
return
}
if (props.keys.match("modal_close", evt)) {
evt.preventDefault()
evt.stopPropagation()
props.api.route.navigate("home")
return {
modal: props.api.keys.formatBindings(bindings.get(command.modal)) ?? "",
screen: props.api.keys.formatBindings(bindings.get(command.screen)) ?? "",
modal_accept: props.api.keys.formatBindings(bindings.get(command.modal_accept)) ?? "",
modal_close: props.api.keys.formatBindings(bindings.get(command.modal_close)) ?? "",
}
})
@@ -595,10 +688,10 @@ const Modal = (props: {
<text fg={skin.text}>
<b>{props.input.label} modal</b>
</text>
<text fg={skin.muted}>{props.keys.print("modal")} modal command</text>
<text fg={skin.muted}>{props.keys.print("screen")} screen command</text>
<text fg={skin.muted}>{shortcuts().modal} modal command</text>
<text fg={skin.muted}>{shortcuts().screen} screen command</text>
<text fg={skin.muted}>
{props.keys.print("modal_accept")} opens screen · {props.keys.print("modal_close")} closes
{shortcuts().modal_accept} opens screen · {shortcuts().modal_close} closes
</text>
<box flexDirection="row" gap={1}>
<Btn
@@ -651,25 +744,8 @@ const home = (api: TuiPluginApi, input: Cfg) => ({
},
home_prompt(ctx, value) {
const skin = look(ctx.theme.current)
type Prompt = (props: {
workspaceID?: string
visible?: boolean
disabled?: boolean
onSubmit?: () => void
hint?: JSX.Element
right?: JSX.Element
showPlaceholder?: boolean
placeholders?: {
normal?: string[]
shell?: string[]
}
}) => JSX.Element
type Slot = (
props: { name: string; mode?: unknown; children?: JSX.Element } & Record<string, unknown>,
) => JSX.Element | null
const ui = api.ui as TuiPluginApi["ui"] & { Prompt: Prompt; Slot: Slot }
const Prompt = ui.Prompt
const Slot = ui.Slot
const Prompt = api.ui.Prompt
const Slot = api.ui.Slot
const normal = [
`[SMOKE] route check for ${input.label}`,
"[SMOKE] confirm home_prompt slot override",
@@ -791,109 +867,115 @@ const slot = (api: TuiPluginApi, input: Cfg): TuiSlotPlugin[] => [
const reg = (api: TuiPluginApi, input: Cfg, keys: Keys) => {
const route = names(input)
api.command.register(() => [
{
title: `${input.label} modal`,
value: "plugin.smoke.modal",
keybind: keys.get("modal"),
category: "Plugin",
slash: {
name: "smoke",
api.keymap.registerLayer({
commands: [
{
name: command.modal,
title: `${input.label} modal`,
category: "Plugin",
namespace: "palette",
slashName: "smoke",
run() {
api.route.navigate(route.modal, { source: "command" })
},
},
onSelect: () => {
api.route.navigate(route.modal, { source: "command" })
{
name: command.screen,
title: `${input.label} screen`,
category: "Plugin",
namespace: "palette",
slashName: "smoke-screen",
run() {
api.route.navigate(route.screen, { source: "command", tab: 0, count: 0 })
},
},
},
{
title: `${input.label} screen`,
value: "plugin.smoke.screen",
keybind: keys.get("screen"),
category: "Plugin",
slash: {
name: "smoke-screen",
{
name: command.alert,
title: `${input.label} alert dialog`,
category: "Plugin",
namespace: "palette",
slashName: "smoke-alert",
run() {
warn(api, route, current(api, route))
},
},
onSelect: () => {
api.route.navigate(route.screen, { source: "command", tab: 0, count: 0 })
{
name: command.confirm,
title: `${input.label} confirm dialog`,
category: "Plugin",
namespace: "palette",
slashName: "smoke-confirm",
run() {
check(api, route, current(api, route))
},
},
},
{
title: `${input.label} alert dialog`,
value: "plugin.smoke.alert",
category: "Plugin",
slash: {
name: "smoke-alert",
{
name: command.prompt,
title: `${input.label} prompt dialog`,
category: "Plugin",
namespace: "palette",
slashName: "smoke-prompt",
run() {
entry(api, route, current(api, route))
},
},
onSelect: () => {
warn(api, route, current(api, route))
{
name: command.select,
title: `${input.label} select dialog`,
category: "Plugin",
namespace: "palette",
slashName: "smoke-select",
run() {
picker(api, route, current(api, route))
},
},
},
{
title: `${input.label} confirm dialog`,
value: "plugin.smoke.confirm",
category: "Plugin",
slash: {
name: "smoke-confirm",
{
name: command.host,
title: `${input.label} host overlay`,
category: "Plugin",
namespace: "palette",
slashName: "smoke-host",
run() {
host(api, input, tone(api))
},
},
onSelect: () => {
check(api, route, current(api, route))
{
name: command.home,
title: `${input.label} go home`,
category: "Plugin",
namespace: "palette",
enabled: () => api.route.current.name !== "home",
run() {
api.route.navigate("home")
},
},
},
{
title: `${input.label} prompt dialog`,
value: "plugin.smoke.prompt",
category: "Plugin",
slash: {
name: "smoke-prompt",
{
name: command.toast,
title: `${input.label} toast`,
category: "Plugin",
namespace: "palette",
run() {
api.ui.toast({
variant: "info",
title: "Smoke",
message: "Plugin toast works",
duration: 2000,
})
},
},
onSelect: () => {
entry(api, route, current(api, route))
},
},
{
title: `${input.label} select dialog`,
value: "plugin.smoke.select",
category: "Plugin",
slash: {
name: "smoke-select",
},
onSelect: () => {
picker(api, route, current(api, route))
},
},
{
title: `${input.label} host overlay`,
value: "plugin.smoke.host",
category: "Plugin",
slash: {
name: "smoke-host",
},
onSelect: () => {
host(api, input, tone(api))
},
},
{
title: `${input.label} go home`,
value: "plugin.smoke.home",
category: "Plugin",
enabled: api.route.current.name !== "home",
onSelect: () => {
api.route.navigate("home")
},
},
{
title: `${input.label} toast`,
value: "plugin.smoke.toast",
category: "Plugin",
onSelect: () => {
api.ui.toast({
variant: "info",
title: "Smoke",
message: "Plugin toast works",
duration: 2000,
})
},
},
])
],
bindings: keys.gather("smoke.global", [
command.modal,
command.screen,
command.alert,
command.confirm,
command.prompt,
command.select,
command.host,
command.home,
command.toast,
]),
})
}
const tui: TuiPlugin = async (api, options, meta) => {
@@ -902,9 +984,9 @@ const tui: TuiPlugin = async (api, options, meta) => {
await api.theme.install("./smoke-theme.json")
api.theme.set("smoke-theme")
const value = cfg(options ?? undefined)
const value = cfg(options)
const route = names(value)
const keys = api.keybind.create(bind, value.keybinds)
const keys = createKeys(value.keybinds)
const fx = new VignetteEffect(value.vignette)
const post = fx.apply.bind(fx)
api.renderer.addPostProcessFn(post)
+27 -10
View File
@@ -1,21 +1,38 @@
---
name: effect
description: Answer questions about the Effect framework
description: Work with Effect v4 / effect-smol TypeScript code in this repo
---
# Effect
This codebase uses Effect, a framework for writing typescript.
This codebase uses Effect for typed, composable TypeScript services, schemas, and workflows.
## How to Answer Effect Questions
## Source Of Truth
1. Clone the Effect repository: `https://github.com/Effect-TS/effect-smol` to
`.opencode/references/effect-smol` in this project NOT the skill folder.
2. Use the explore agent to search the codebase for answers about Effect patterns, APIs, and concepts
3. Provide responses based on the actual Effect source code and documentation
Use the current Effect v4 / effect-smol source, not memory or older Effect v2/v3 examples.
1. If `.opencode/references/effect-smol` is missing, clone `https://github.com/Effect-TS/effect-smol` there. Do this in the project, not in the skill folder.
2. Search `.opencode/references/effect-smol` for exact APIs, examples, tests, and naming patterns before answering or implementing Effect-specific code.
3. Also inspect existing repo code for local house style before introducing new patterns.
4. Prefer answers and implementations backed by specific source files or nearby repo examples.
## Guidelines
- Always use the explore agent with the cloned repository when answering Effect-related questions
- Reference specific files and patterns found in the Effect codebase
- Do not answer from memory - always verify against the source
- Prefer current Effect v4 APIs and project-local patterns over old blog posts, examples, or package-memory guesses.
- Use `Effect.gen(function* () { ... })` for multi-step workflows.
- Use `Effect.fn("Name")` or `Effect.fnUntraced(...)` for named effects when adding reusable service methods or important workflows.
- Prefer Effect `Schema` for API and domain data shapes. Use branded schemas for IDs and `Schema.TaggedErrorClass` for typed domain errors when modeling new error surfaces.
- Keep HTTP handlers thin: decode input, read request context, call services, and map transport errors. Put business rules in services.
- In Effect service code, prefer Effect-aware platform abstractions and dependencies over ad hoc promises where the surrounding code already does so.
- Keep layer composition explicit. Avoid broad hidden provisioning that makes missing dependencies hard to see.
- In tests, prefer the repo's existing Effect test helpers and live tests for filesystem, git, child process, locks, or timing behavior.
- Do not introduce `any`, non-null assertions, unchecked casts, or older Effect APIs just to satisfy types.
- Do not answer from memory. Verify against `.opencode/references/effect-smol` or nearby code first.
## Testing Patterns
- Use `testEffect(...)` from `packages/opencode/test/lib/effect.ts` for tests that exercise Effect services, layers, runtime context, scoped resources, or platform integrations.
- Use `it.live(...)` for filesystem, git repositories, HTTP servers, sockets, child processes, locks, real time, and other live platform behavior.
- Run tests from package directories such as `packages/opencode`; never run package tests from the repo root.
- Prefer explicit test layers over ad hoc managed runtimes. Keep dependency provisioning visible in the test file.
- Use scoped fixtures and finalizers for resources that must be cleaned up, including temporary directories, flags, databases, fibers, servers, and global state.

Some files were not shown because too many files have changed in this diff Show More