70 Commits

Author SHA1 Message Date
marius-kilocode 8a8f67f9c7 fix(cli): reduce startup initialization work 2026-08-28 15:50:27 +02:00
marius-kilocode 575bf9b028 Merge remote-tracking branch 'origin/main' into puzzling-crowberry 2026-08-20 14:34:31 +02:00
Johnny Eric Amancio 0d5d334480 fix(tui): order live transcript by message created time so wrapped ids stay visible (#13247)
* fix(tui): order live transcript by message created time so wrapped ids stay visible

* test(tui): cover window eviction and versioned sync channel for wrapped ids
2026-08-20 14:05:01 +02:00
marius-kilocode 9701b518b6 Merge main into puzzling-crowberry 2026-08-19 14:53:12 +02:00
marius-kilocode ba658fc8d7 chore: checkpoint before merging main 2026-08-19 14:50:11 +02:00
marius-kilocode da10638654 fix: remove agent requirements feature 2026-08-19 11:35:11 +02:00
Johnny Eric Amancio 3acb1ec386 fix(tui): keep Kilo Gateway models visible in the model picker (#13170)
* fix(tui): keep Kilo Gateway models visible in the model picker

Selecting a model removed it from its provider section, so a recently
used Kilo sonnet vanished from "Recommended"/"Kilo Gateway" and only
survived under "Recent". Search also keyed off title and section header
only, so filtering by `kilo` never matched titles like "Anthropic Claude
Sonnet 4.5" grouped under "Recommended".

Recents now stay in their provider section (favorites are still deduped
into their own section) and search additionally keys off the provider
name, provider id, and model id, matching the VS Code selector.

Option building moves to kilocode/model-picker.ts so the grouping and
search rules are unit testable.

* chore: add changeset for TUI gateway picker

* fix(tui): identify the selected picker row by reference

Keeping recents in their provider section means a model can legitimately
appear twice in the list (once under "Recent", once under its provider or
"Recommended" section). DialogSelect resolved the selected row by value
equality, so both copies lit up as active whenever either was selected —
visible on every picker open, since the current model is usually a recent
— and hovering the provider-section copy warped selection and scroll to
the "Recent" copy instead.

Match the selected row by object reference instead. Rows are always
distinct objects, so this is a strict refinement for every other dialog;
`current` still uses value equality, which is correct — both rows really
are the current model.
2026-08-18 13:25:46 +02:00
marius-kilocode a066d0f983 fix(permission): cover tui sandbox escalation prompt 2026-08-17 15:42:47 +02:00
Johnny Eric Amancio b5f5d9f22a fix(tui): stop leftover toast titles during update install (#13114)
SolidJS store merge kept the previous toast title when the next toast omitted it, so the update prompt reused "MCP Authentication Required".
2026-08-13 21:34:30 +02:00
bagatao@anaconda.com 0af6c2d8f5 Merge branch 'main' into feat/worktree-for-cli 2026-08-12 17:29:19 +02:00
Johnny Eric Amancio fbb52c89d3 Merge remote-tracking branch 'origin/main' into johnnyeric/kilo-opencode-v1.18.0 2026-08-11 11:47:51 +02:00
Josh Lambert e48c534978 fix(tui): separate autocomplete descriptions from labels 2026-08-10 10:32:19 -04:00
Johnny Eric Amancio 7318f37617 Merge remote-tracking branch 'origin/main' into johnnyeric/kilo-opencode-v1.18.0 2026-08-06 17:44:26 +02:00
Bruno Agatao aac78b2ad5 Merge branch 'feat/worktree-for-cli' of github.com:Kilo-Org/kilocode into feat/worktree-for-cli 2026-08-06 16:23:51 +02:00
Bruno Agatao b57cfdce43 feat(cli): add kilo worktree create/list/remove commands and TUI alias 2026-08-06 16:23:43 +02:00
Josh Lambert 14f3b73eaf chore(tui): narrow disposal change markers 2026-08-06 09:11:40 -04:00
Josh Lambert 82c68086b9 fix(tui): preserve mounted refresh failures 2026-08-06 09:07:55 -04:00
Josh Lambert e2ec77813a fix(tui): suppress expected disposal aborts 2026-08-06 08:47:07 -04:00
Johnny Eric Amancio 4174457a0d Merge remote-tracking branch 'origin/main' into johnnyeric/kilo-opencode-v1.18.0
# Conflicts:
#	package.json
2026-08-06 14:02:04 +02:00
Marius 157afe4622 Merge pull request #12935 from Kilo-Org/fix-cli-interactive-terminal
fix(cli): restore interactive terminal input for workspaces
2026-08-06 13:36:42 +02:00
Johnny Eric Amancio 3003a302bc fix: address pull request review comments 2026-08-06 12:37:02 +02:00
marius-kilocode 3917ed1f9b fix(cli): route interactive terminal through workspace 2026-08-06 10:53:23 +02:00
Johnny Eric Amancio 25f4b58d93 fix: address post-merge validation findings 2026-08-05 21:08:55 +02:00
Johnny Eric Amancio 88083fb5c5 resolve merge conflicts 2026-08-05 16:01:49 +02:00
Aarav 0b96332bb3 Merge branch 'main' into feat/privacy-mode-tui 2026-08-05 07:40:31 -06:00
Aarav Sharma 76f8967dc1 fix(cli): read privacy_mode only from global config and use balance-independent color
The /privacy command wrote only to global config but read the effective
config, so a project-level privacy_mode could shadow the global toggle
and the UI would not change even though the command reported success.
Since privacy mode is a personal preference, persist and read it only
from the global config.

The sidebar footer used tone() for both the bullet and masked balance,
so the bullet color still revealed whether the balance was low. Use
theme().textMuted for both while masked, retaining tone() only when
privacy mode is off.
2026-08-05 07:34:24 -06:00
Johnny Eric Amancio 76783409bf refactor: kilo compat for v1.18.0 2026-08-05 11:59:08 +02:00
Johnny Eric Amancio 6c138449d5 Merge remote-tracking branch 'origin/main' into johnnyeric/kilo-opencode-v1.17.13
# Conflicts:
#	package.json
#	packages/core/schema.json
#	packages/core/src/command.ts
#	packages/core/src/config/plugin/command.ts
#	packages/core/src/database/schema.gen.ts
#	packages/core/src/session/sql.ts
#	packages/core/src/v1/session.ts
#	packages/kilo-docs/public/img/screenshot-tests/kilo-vscode/visual-regression/agentmanager/full-screen-diff-with-changes-chromium-linux.png
#	packages/kilo-docs/public/img/screenshot-tests/kilo-vscode/visual-regression/labs-tool-call-lab/search-previews-chromium-linux.png
#	packages/opencode/src/command/index.ts
#	packages/opencode/test/server/httpapi-ui.test.ts
#	packages/sdk/js/src/v2/gen/types.gen.ts
#	packages/sdk/openapi.json
#	packages/tui/src/routes/session/index.tsx
2026-08-04 12:57:20 +02:00
Igor Šćekić 63a38f5c7a feat(tui): expand a collapsed paste on a second identical paste (#12816)
* feat(tui): expand a collapsed paste on a second identical paste

* chore: retrigger review

* chore(tui): add paste expansion changeset

* fix(cli): target paste changeset

* fix(tui): refresh autocomplete after expanding a paste

Call auto()?.onInput on the expand-placeholder path so open autocomplete
matches onContentChange when a second identical paste expands text.
2026-08-03 19:46:57 +00:00
Bruno Agatao abe17f1f9d fix(tui): move the tool approval/denial note back onto the header line
The note was appended after the tool's own output (or, in an interim
revert, on its own line above it), which either looked like part of
the output or was visually noisier than desired. Render it inline on
the header/title line instead, matching the existing RoutedModelMeta
badge convention (' · note'), so it reads unambiguously as metadata
about the call rather than output.
2026-07-31 16:31:49 +02:00
Johnny Amancio 76d06fd8ba fix: name the auto-approve commands by scope and repair CI failures
Restore packages/ui/src/components/markdown.css. Upstream moved markdown
styling into the new session-ui package and deleted this file, but Kilo still
ships packages/ui's markdown component to the VS Code webview, so the rules
went missing while their consumer stayed. The copy button lost
position: absolute and opacity: 0, so it rendered below every code block
instead of in its corner, and showed the copy and check icons at once because
nothing hid the check state.

The palette showed "Enable auto-approve permissions" next to "Enable
auto-approve mode", which reads as the same command twice. They are not: one
lasts for the TUI run and is what --auto and --yolo seed, the other saves a
rule to global config. Both now say which they are and carry a desc, which
the palette already renders. The saved one is enforced server side, so its
desc says it covers every client. No behaviour change, and the command names
are untouched so the slash aliases still work.

Tests no longer depend on the developer's credential store. Credential
imports Global.data/auth.json on startup, and the catalog, plugin and
models-dev layers built Credential.node without overriding Global, so results
changed depending on whether the machine was logged in. They now use a temp
data directory, as the integration suite already did. That suite in turn set
KILO_AUTH_CONTENT at module scope; bun shares one process across test files,
so it leaked into credential.test.ts, whose auth.json cases then read "{}"
and found no credentials. Scoped with beforeAll/afterAll.

macOS-only failures, all merge gaps in Kilo tests:

- sandbox/state.test.ts runs a script in a subprocess; the LayerNode
  migration put AppNodeBuilder.build in it without adding the import
- sandbox/session-tools.test.ts mocked MCP without clients(), which
  upstream's resource tools now call
- sandbox/session.test.ts built SessionV2 without binding SessionExecution

Generated files: schema.gen.ts was formatted by an older prettier than the
one main's dependency bump resolves, so the generator no longer reproduced it
and the migration check called the schema stale. packages/client was missing
Pty.sessionID and the compaction include field. Both regenerated.

Also corrected the listener comment: it claimed application services still
come from AppRuntime, but the SessionV2 and MoveSession builds sit inside
KiloListener's Layer.fresh boundary and self-provide their subtrees, which is
deliberate since both bind this listener's own LocationServiceMap.
2026-07-30 22:01:05 +02:00
Johnny Amancio a606a91e69 fix: restore Kilo deltas the merge dropped
- tool-input delta/end no longer recreate a settled call as a pending part
- outputTokenMax is back in overflow accounting, with RuntimeFlags rewired
- MCP server instructions reach the system prompt again (sys.mcp call site)
- session revert decodes stored messages through the Kilo normalize boundary
- shell tool titles runs with the model description and keeps it in metadata
- subdirectory snapshots drop newly ignored files: the ignore check and the
  index removal ran from the instance dir, but candidates are worktree
  relative
- customize-opencode builtin stays unregistered after the boot.ts rename
- --auto is interpreted in one place; the flag beside it now covers only
  --yolo and --dangerously-skip-permissions
- --cloud-fork works again, validateSession had landed before the import
- TUI block tool skips the empty title row, opencode catalog gate reads
  credentials per reload, TUI worker logs crashes, Snowflake OAuth uses the
  Kilo page, annotations guard covers the shared packages
- tests: startRun spawned without the solid preload so every run under it
  died on the JSX runtime; two upstream tests get a permission fixture since
  headless auto-rejects bash; one expected a single error record where Kilo
  emits two, as it did before this merge
- changeset for the range, help snapshot, llmgateway indentation
2026-07-30 19:52:20 +02:00
Bruno Agatao 8e515dd6f1 feat(tui): show why a tool call was auto-approved or denied
Ports the auto-approval provenance explanation already shown in
kilo-ui/vscode to the TUI. Adds a Kilo-owned tool-approval.tsx with a
plain-text description helper (describeApproval) and a shared
ApprovalNote row component, then wires a single call into InlineTool/
InlineToolRow (Shell, Read, Grep, Glob, WebFetch, etc.) and BlockTool
(Write, Edit, ApplyPatch, Task), showing a muted line under completed/
failed tool calls.

Todo writes are excluded via a hideApproval prop, mirroring the
kilo-ui behavior that treats them as orchestration rather than an
auditable action.
2026-07-30 18:04:55 +02:00
Johnny Amancio db000fef1c Merge remote-tracking branch 'origin/main' into johnnyeric/kilo-opencode-v1.17.13
# Conflicts:
#	bun.lock
#	packages/core/src/v1/permission.ts
#	packages/opencode/src/acp/permission.ts
#	packages/opencode/src/cli/cmd/tui.ts
#	packages/opencode/src/skill/discovery.ts
#	packages/opencode/src/skill/index.ts
#	packages/opencode/test/cli/run/run-process.test.ts
#	packages/opencode/test/skill/discovery.test.ts
#	packages/opencode/test/tool/registry.test.ts
#	packages/sdk/openapi.json
#	packages/server/src/handlers/pty.ts
2026-07-30 16:32:39 +02:00
Johnny Amancio 61b2f1d0cb fix: repair generated artifacts and branding after the v1.17.13 merge
Generation was failing. Upstream added a guard in this range that rejects
duplicate session event variants, and Kilo's tool-content codec on the shared
event schema was tripping it, so openapi.json and the SDK were stale and a temp
packages/sdk/js/openapi.json got committed by accident.

Move the codec off the event schema into core/src/kilocode/event-storage.ts,
keyed by event type and applied only at the SQL boundary. Session events are on
the wire now (SessionEvent.Durable backs /api/session/{id}/history), so a
transform there forked the generated API. Shipped readers still parse old rows
and the wire contract goes back to upstream's. Drops the consumer-side
normalizers in the TUI and sync-v2 that existed only to undo the widening.

Also: restore the Kilo HttpApi title and a few branding strings, balance five
kilocode_change markers, drop a duplicate TUI palette entry, and teach
check-model-tool-network about the LayerNode wiring that replaced
Layer.provide(ToolNetwork.httpLayer).
2026-07-30 16:20:25 +02:00
Johnny Amancio 518501a994 resolve merge conflicts 2026-07-30 14:24:24 +02:00
Bruno Agatao e19c4c77de refactor(tui): extract skill-shell prompt presentation into kilocode 2026-07-30 12:25:04 +02:00
Bruno Agatao 1ed1a48494 fix(cli): display verbatim skill commands in the permission prompt 2026-07-29 14:46:44 +02:00
bagatao@anaconda.com 3877da6c2b Merge branch 'main' into feat/execute-cmds-in-skill-context 2026-07-29 12:56:50 +02:00
Bruno Agatao 8f4725729e fix(cli): harden skill shell permission prompt display 2026-07-29 12:53:01 +02:00
Aarav 0abe474b6d feat(tui): make Context sidebar section collapsible (#11986)
The TUI session sidebar already lets Token Usage, Models, and Terminal
Bench 2.0 collapse on header click (▼/▶), but Context was always
expanded. Match the existing collapsible pattern so users can fold it
away when they want a less cluttered sidebar. When collapsed, the header
shows a one-line summary of percent used and total cost.
2026-07-29 11:52:54 +02:00
Bruno Agatao 7650d0fd09 fix(cli): require human approval for skill shell command batches 2026-07-29 11:12:34 +02:00
Johnny Amancio 898f0dc40b refactor: kilo compat for v1.17.13 2026-07-29 02:06:01 +02:00
Bruno Agatao c08f37e88b feat(cli): execute shell commands in skill files with batch approval 2026-07-28 15:26:14 +02:00
marius-kilocode 60217b482d Merge remote-tracking branch 'origin/main' into marius-kilocode/kilo-opencode-v1.17.9 2026-07-28 10:43:36 +02: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
2026-07-27 14:53:43 +02:00
marius-kilocode 64343089d8 chore: merge latest main 2026-07-24 13:12:52 +02:00
marius-kilocode 1b60773cae fix: resolve OpenCode merge regressions 2026-07-24 12:56:42 +02:00
Marius bf2cf9375b Merge pull request #12456 from Kilo-Org/correct-session-scoping
feat: reference past chats with @-mentions
2026-07-23 14:15:56 +02:00
marius-kilocode 7eaa47b62a fix: address session mention review 2026-07-23 12:54:02 +02:00