Commit Graph

26422 Commits

Author SHA1 Message Date
kirillk 2da0cac53f fix(jetbrains): use file-based signing secrets for bundled publish workflow
Passing the JETBRAINS_CERTIFICATE_CHAIN / JETBRAINS_PRIVATE_KEY multiline
secret content directly as certificateChain/privateKey Gradle properties
gets mishandled by the zip-signer CLI when signPlugin and
verifyPluginSignature run as separate Gradle invocations (#12567), causing
verifyPluginSignature to fail with 'Invalid argument: ***' as the masked
multiline content is split into extra CLI args.

Mirror script/build-version.sh: write the certificate chain and private
key to temp files under $RUNNER_TEMP and wire
certificateChainFile/privateKeyFile (file-based) into the intellij
signing extension instead of certificateChain/privateKey (raw content).

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-07-27 15:56:30 +00:00
Kirill Kalishev 714b987c48 Merge pull request #12567 from Kilo-Org/foul-aries
fix(jetbrains): split bundled publish Gradle tasks
2026-07-27 11:11:33 -04:00
kirillk 51d660319f fix(jetbrains): split bundled publish Gradle tasks 2026-07-27 10:59:57 -04:00
Thomas Brugman 2da8949813 fix(ui): preserve parenthesized tildes in markdown (#12540) 2026-07-27 15:49:03 +02:00
Marius 44f5963669 fix(vscode): prevent recursive settings saves (#12561)
* fix(vscode): prevent recursive settings saves

* docs: clarify settings save release note
2026-07-27 13:32:15 +00:00
Kirill Kalishev 439448291e Merge pull request #12563 from Kilo-Org/jetbrains/release/v7.0.11
release(jetbrains): v7.0.11
2026-07-27 09:29:04 -04:00
Kirill Kalishev d7baa1e67b Apply suggestion from @kilo-code-bot[bot]
Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>
2026-07-27 09:26:17 -04:00
Kirill Kalishev c96a679202 docs(jetbrains): edit changelog for v7.0.11 2026-07-27 09:24:39 -04:00
bagatao@anaconda.com ee77f9edda Merge pull request #12556 from Kilo-Org/fix/explain-tool-auto-approval
fix(ui): refine auto-approval line for subagent and todo tools
2026-07-27 15:22:07 +02:00
Josh Holmer c12a567f2a test(cli): cover TUI startup outside package (#12417)
* test(cli): cover TUI startup outside package

* fix(cli): use native preload path in TUI test

---------

Co-authored-by: Johnny Eric Amancio <johnnyeric@gmail.com>
2026-07-27 15:14:31 +02:00
kilo-maintainer[bot] b31833a24e release(jetbrains): v7.0.11 2026-07-27 13:11:50 +00:00
Aarav 1f3383cf3d fix(tui): restore variant cycle keybind hint in prompt footer (#12463)
The Ctrl+T variant cycling shortcut hint was rendered in the TUI prompt footer hint row, gated on the active model exposing reasoning variants. It was accidentally removed during an upstream refactor (commit 81eb6e670b in anomalyco/opencode, "refactor(prompt): remove variant cycle display from footer").

- Add useCommandShortcut("variant.cycle") alongside the existing agent and command palette shortcuts
- Render the hint as the first item in the footer row, matching the original placement before agents/commands
- Gate visibility on local.model.variant.list().length > 0, matching the original upstream guard so the hint is discoverable as soon as the model exposes variants, regardless of whether one is currently selected
jetbrains/v7.0.11
2026-07-27 14:53:43 +02:00
Marius 65c5e9d2c0 fix(vscode): sync mode cycling state (#12560) 2026-07-27 14:07:28 +02:00
Bruno Agatao d93537cd73 fix(ui): actually hide auto-approval line for hidden placement 2026-07-27 12:45:37 +02:00
Bruno Agatao 61c86222ce fix(ui): refine auto-approval line for subagent and todo tools 2026-07-27 12:27:11 +02:00
Igor Šćekić b2735bfbc9 fix(cli): flush the session ingest tail on shutdown (#12545)
* fix(cli): drain session ingest queue on shutdown and flush terminal batches promptly

* fix(cli): drain the session ingest queue on process shutdown

* fix(cli): pin drain bound expiry, add changeset, conform to naming rule

* fix(cli): keep kilo-sessions out of the CLI startup import graph

* fix(cli): never let the ingest drain task reject the shutdown sequence

* test(cli): pin drain-before-dispose ordering on the KiloCli shutdown path

* fix(cli): make the guarded ingest drain non-rejecting and correct the lazy-import rationale

* test(cli): cover the retryable-status drain path under shutdown

* test(cli): decouple cli-shutdown drain assertions from declaration order
2026-07-27 11:12:42 +02:00
Christiaan Arnoldus 614c21ee81 Merge pull request #12544 from Kilo-Org/fix/opus-5-adaptive-thinking
fix(cli): support adaptive thinking for Claude 5+
2026-07-27 10:16:23 +02:00
Marius 17cc581129 Merge pull request #12514 from Kilo-Org/fix-cli-subprocess-timeouts
fix(cli): stabilize cross-platform subprocess tests
2026-07-27 09:16:28 +02:00
chrarnoldus 737bc7b392 docs: include sonnet in adaptive thinking note
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-07-26 21:00:36 +00:00
chrarnoldus 8aeff4856f fix(cli): cover future sonnet adaptive versions
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-07-26 20:50:52 +00:00
chrarnoldus a69a7cc5c4 fix(cli): cover future opus adaptive versions
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-07-26 20:03:01 +00:00
chrarnoldus b8d83fb537 fix(cli): support adaptive thinking for opus 5
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-07-26 19:36:51 +00:00
Igor Šćekić a19d44c3ef Advertise the instance from enableRemote and report attention status on the heartbeat (#12532)
* fix(cli): advertise the instance from enableRemote so /remote registers as a spawn target

Enabling the remote relay from the TUI `/remote` slash command connected the
socket and mirrored sessions, but never advertised the instance, so the CLI
never appeared as a spawn target in the mobile "Run on" picker. Only the
explicit `kilo remote` command called setInstanceAdvertisement.

The advertisement now runs on every successful enableRemote() entry, before the
already-connected and coalescing early returns. That ordering matters: bootstrap
auto-enable frequently connects first, so `/remote` usually hits
`if (remote) return` and an advertisement placed in the connection-setup body
would leave the defect unfixed in the common case. `ingestDisabled` returns
before the advertisement and stays unadvertised.

The ensure helper is a no-op when an advertisement is already set, so it fires no
extra heartbeat, while explicit setInstanceAdvertisement keeps its existing
replace semantics. buildInstanceAdvertisement moves to a shared module so the
command path and the enable path derive it identically.

* fix(cli): report pending question and permission on the session heartbeat

The heartbeat built each session's status from SessionStatus.Service, whose
union is idle/retry/busy/offline and which never consults Question.Service or
Permission.Service. deriveStatus() already did consult both, but only fed the
ingest session_status sync. So a session genuinely blocked on a question was
advertised as busy on the heartbeat, and the mobile app — which takes live row
status from the heartbeat — showed no needs-input badge.

Extract the precedence (permission, then question, then SessionStatus) into a
shared helper used by both deriveStatus and the heartbeat, so the two channels
cannot drift.

The heartbeat runs on a ~10s timer across every session, and deriveStatus makes
service calls per session, so the permission and question lists are fetched once
per tick and indexed by session id rather than queried per session. A test pins
the call count.

Behaviour note beyond the strict fix: sharing the derivation also means a
SessionStatus of offline now reports as retry on the wire, matching what
deriveStatus has always sent to ingest. Nothing consumes offline from the
heartbeat — the transport forwards only idle and busy, and the mobile row treats
both as non-attention — so the effect is that the two channels now agree. The
detach fence test is parameterised accordingly; its assertion that the status
clears on detach is unchanged.

* chore(cli): widen the promise-facade allowlist for the heartbeat attention tests

The DEF-3 heartbeat tests raise and reply to real Question and Permission
requests through the global AppRuntime, which took kilo-sessions.test.ts from 4
classified references to 29 and failed the allowlist check.

Bumping the count rather than restructuring the tests is deliberate: the
heartbeat resolves attention status from the global Question.Service and
Permission.Service, so asserting it requires driving those same services.
Scoped layers cannot express that — the global-runtime coupling is the thing
under test — and it is the same integration pattern this entry already
sanctioned for the detach fence. The reason string records that.
2026-07-25 15:45:43 +02:00
Joshua Lambert eab61d853a Merge pull request #12505 from Kilo-Org/fix/run-duplicate-events
fix(cli): emit run events once
2026-07-24 19:48:51 -04:00
Joshua Lambert d6b45d3237 Merge pull request #12410 from Kilo-Org/investigate-pane-auto-resize-behavior
fix(vscode): preserve active editor pane
2026-07-24 19:22:27 -04:00
Igor Šćekić 61a704334c fix(ci): pass KILO_ORG_ID to docs-sync LLM steps (#12519)
Without KILO_ORG_ID the kilo provider sends no X-KiloCode-OrganizationId
header, so the gateway bills the key owner's personal balance instead of
the org. The dry run (run 30107542234) 402'd every triage chunk with
"Add credits to continue, or switch to a free model" and silently
classified 0/187 PRs.

Hoist KILO_API_KEY + KILO_ORG_ID to job-level env, matching smoke-test.yml.
2026-07-24 13:02:37 -07:00
Kirill Kalishev e3fc1d73a5 Merge pull request #12517 from Kilo-Org/chore/jetbrains-cli-pin-v7.4.16
chore(jetbrains): bump CLI pin to v7.4.16
2026-07-24 14:59:03 -04:00
Kirill Kalishev 3c9e0e1984 Merge pull request #12518 from Kilo-Org/achieved-pumpkin
feat(jetbrains): publish bundled CLI builds on GitHub
2026-07-24 14:54:25 -04:00
kirillk 32652b017a fix(jetbrains): prune bundled CLI cache 2026-07-24 14:10:51 -04:00
kirillk d266efcda8 chore(jetbrains): rename bundled publish workflow 2026-07-24 13:47:28 -04:00
kirillk d39b22040d fix(jetbrains): harden bundled release workflow 2026-07-24 13:18:18 -04:00
Joshua Lambert e1ef4f989a Merge branch 'main' into investigate-pane-auto-resize-behavior 2026-07-24 12:59:35 -04:00
Marius 85a5ebf3e7 Merge branch 'main' into fix-cli-subprocess-timeouts 2026-07-24 18:55:11 +02:00
kirillk 452d0eb55f feat(jetbrains): publish bundled CLI builds 2026-07-24 12:49:58 -04:00
kilo-maintainer[bot] 2a5c6e2af1 chore(jetbrains): bump CLI pin to v7.4.16 2026-07-24 16:04:22 +00:00
kilo-maintainer[bot] f80ebff83b release: v7.4.16 v7.4.16 2026-07-24 15:55:31 +00:00
Igor Šćekić 1346963e59 feat: daily docs-sync bot keeping kilo-docs in sync with merged PRs (#12512)
* feat: daily docs-sync bot workflow (Kilo CLI)

Adds a scheduled workflow that keeps packages/kilo-docs in sync with PRs
merged to Kilo-Org/cloud and Kilo-Org/kilocode:

- watermark.mjs derives the processing window from the bot's own PR body
  marker (self-healing, no external state; 72h fallback, 14d cap)
- collect.mjs queries merged PRs via the GitHub API and applies a
  deterministic pre-filter (bots, chores, docs-only PRs)
- triage.mjs classifies PRs in chunks of 25 with kilo run; failed chunks
  degrade to unclassified instead of failing the run
- edit.mjs updates docs in batches of 5 PRs with kilo run, bounded per
  batch; failures surface as skipped entries in the PR body
- verify runs the kilo-docs build + test suite; one LLM fix pass on
  failure; still-red becomes a draft PR
- upsert-pr.mjs maintains one rolling auto-docs PR (appends while open,
  fresh branch after merge), with a 15-file draft cap and a
  machine-readable processed-through watermark

Also adds docs-sync.yml to the workflow allowlist in
script/check-workflows.ts.

* fix: correct kilo run invocation and auth

- message positional must come before flags: --file is multi-value and
  consumes a trailing message as a file path (File not found)
- authenticate via the existing KILO_API_KEY repo secret (the kilo
  provider reads it natively); drop the DOCS_SYNC_KILO_CONFIG config
  secret requirement
- fix default model IDs: gateway provider id is kilo/, not kilocode/
- include stderr tail in triage/edit failure logs

* fix: handle kilo run double-printed assistant output

kilo run prints the assistant message twice (streaming render + final
summary), so stdout can contain the same JSON array back-to-back. Parse
the largest valid trailing array instead of slicing first-to-last
bracket. Verified against real chunked triage output.

* fix: reviewer-pass robustness fixes

- edit.mjs: unambiguous summary file path in the batch prompt and a
  fallback read when the agent drops the docs-sync-out/ prefix, so real
  edits never report as skipped
- prepare-branch.mjs: use the open auto-docs PR's actual head.ref
  instead of assuming docs/auto-sync
- upsert-pr.mjs: compute the 15-file draft cap on the cumulative PR
  diff (origin/main...HEAD), not just the latest commit

* fix: address Kilobot review findings

Security:
- sanitize HTML-comment sequences out of agent-generated PR body values
  so a crafted value cannot forge section markers or the watermark
- draft any PR whose diff touches non-content files in packages/kilo-docs
  (outside pages/ and lib/nav/) — build-executable changes force human
  review before merge
- on merge conflict, keep the conflicted rolling branch untouched
  (preserving human commits) and continue on a fresh dated branch that
  links the old PR

Resilience:
- retry GitHub API calls on network errors and 5xx, not just 403
  rate limits
- isolate per-PR collect failures instead of aborting the run
- trust watermark markers only on bot-authored PRs and clamp future
  dates loudly
- validate chunk triage entries belong to their chunk before the shared
  dedupe
- use changed_files for files_total and skip docs-only classification
  on truncated (300+) file lists
- pipe stderr in the edit pass so failure warnings carry the real CLI
  error

* fix: address second Kilobot review round

- escape pipe characters in changeRow actions (same as skippedRow)
- sanitize agent-chosen file paths before they land in draftReasons
  and the PR body (residual marker-forgery path via filenames)
- log expected fetch misses in prepare-branch instead of silent catches

* feat: keep bot-authored PRs in the docs-sync digest

Release and dependency bots ship user-facing changes (e.g. JetBrains
release PRs from kilo-maintainer[bot]). The auto-docs label check and
docs-only path filter remain as the loop guards.
2026-07-24 15:38:39 +00:00
marius-kilocode c4aebfe305 fix(cli): tolerate process signal failures in test runner 2026-07-24 17:06:49 +02:00
LCZcn96 c72817e67f fix(cli): bound skill discovery in non-git projects (#12475) 2026-07-24 16:31:31 +02:00
Joshua Lambert bada1c3890 Merge pull request #12515 from Kilo-Org/fix/silent-kilo-pass-refresh
fix(tui): silence optional Kilo Pass failures
2026-07-24 09:35:08 -04:00
Kirill Kalishev c4af7072e3 Merge pull request #12516 from Kilo-Org/jetbrains/release/v7.0.10
release(jetbrains): v7.0.10
2026-07-24 09:33:25 -04:00
Kirill Kalishev 783be6c431 docs(jetbrains): edit changelog for v7.0.10 2026-07-24 09:30:38 -04:00
marius-kilocode 14934c736b fix(cli): resolve OpenTUI links across install layouts 2026-07-24 15:21:11 +02:00
kilo-maintainer[bot] 489601e5fa release(jetbrains): v7.0.10 2026-07-24 13:19:26 +00:00
Johnny Eric Amancio 9e1b54d875 fix: activate plan handoff sessions and retry recovered question replies (#12511)
Two regressions in the plan handoff flow:

Choosing "Start new session" after a plan created the session in the
background but left the UI on the completed plan. Since #10466 the
sidebar only activates sessionCreated messages that match a pending
draft tab, and followup sessions carry no draftID. registerSession now
takes an activate flag, adoptPendingFollowup passes it, and the webview
opens and focuses the tab when set.

Replying to a recovered question took two submits. The first reply hit
the recorded stale directory, got a 404, and the handler redrew the
question instead of retrying. Recovery now rediscovers the directory
and retries the reply or reject there once, and only marks the question
stale when a complete scan confirms it is gone.
jetbrains/v7.0.10
2026-07-24 15:11:28 +02:00
marius-kilocode f3a4003356 fix(cli): resolve bundled OpenTUI native modules 2026-07-24 15:09:23 +02:00
Marius 5bd5b90009 Merge pull request #12513 from Kilo-Org/standardize-queued-message-remove-button
fix(ui): align queued message remove button with message action buttons
2026-07-24 15:02:19 +02:00
bagatao@anaconda.com 5b866245c4 Merge pull request #12494 from Kilo-Org/feat/explain-tool-auto-approval
feat: explain tool auto-approval
2026-07-24 14:48:00 +02:00
Josh Lambert faa810f3ee test(gateway): cover Kilo Pass response failures 2026-07-24 08:45:23 -04:00
Josh Lambert f715e2f5fa fix(tui): silence optional Kilo Pass failures 2026-07-24 08:44:31 -04:00