571 Commits
Author SHA1 Message Date
kilo-maintainer[bot] a5aaef74a8 release: v7.4.21 2026-08-11 03:07:28 +00:00
Josh Lambert e48c534978 fix(tui): separate autocomplete descriptions from labels 2026-08-10 10:32:19 -04: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
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
marius-kilocode 3917ed1f9b fix(cli): route interactive terminal through workspace 2026-08-06 10:53:23 +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 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
kilo-maintainer[bot] 62baedd258 release: v7.4.20 2026-08-04 10:23:57 +00:00
kilo-maintainer[bot] 20aead0d87 release: v7.4.19 2026-08-04 07:56:10 +00: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
bagatao@anaconda.com 68f11a8dea Merge branch 'main' into feat/explain-tool-auto-approval-tui 2026-08-03 11:46:50 +02:00
kilo-maintainer[bot] f00da9a75b release: v7.4.18 2026-07-31 19:59:08 +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 b29bb95602 Merge remote-tracking branch 'origin/main' into feat/execute-cmds-in-skill-context 2026-07-29 16:53:37 +02:00
Bruno Agatao 1ed1a48494 fix(cli): display verbatim skill commands in the permission prompt 2026-07-29 14:46:44 +02:00
kilo-maintainer[bot] a0364858a6 release: v7.4.17 2026-07-29 11:29:05 +00: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 28f2abe5e9 Merge remote-tracking branch 'origin/main' into marius-kilocode/kilo-opencode-v1.17.9 2026-07-27 08:11:14 +02:00
kilo-maintainer[bot] f80ebff83b release: v7.4.16 2026-07-24 15:55:31 +00: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
marius-kilocode 51d8031c99 chore: complete OpenCode v1.17.9 integration 2026-07-22 17:20:20 +02:00
marius-kilocode a51864cd75 resolve merge conflicts 2026-07-22 15:00:34 +02:00
marius-kilocode a776bd4d29 refactor: kilo compat for v1.17.9 2026-07-22 13:31:23 +02:00
marius-kilocode 3d648d7fcd feat: reference past chats with @-mentions 2026-07-22 11:46:10 +02:00
Marius 54a9109b46 Merge pull request #12404 from Kilo-Org/marius-kilocode/kilo-opencode-v1.17.5
OpenCode v1.17.5
2026-07-22 11:28:52 +02:00
kilo-maintainer[bot] 13e4259662 release: v7.4.15 2026-07-22 09:21:25 +00:00
marius-kilocode d054f394e4 fix(tui): treat global events as default location for integration refresh
The v2 integration refresh converted event metadata directly into a
Location.Ref, so the global routing sentinel (directory "global") was
sent to the server as a real filesystem location. LocationServiceMap
built the full project graph for it, and Fff.create({ basePath: "global" })
failed on every refresh after OAuth callback disposal. Map global events
back to the current default location instead.
2026-07-21 15:23:25 +02:00
marius-kilocode 0bcd1b2c86 Merge remote-tracking branch 'origin/main' into marius-kilocode/kilo-opencode-v1.17.5 2026-07-21 12:35:20 +02:00
Johnny Eric Amancio fa23cd22ff Merge pull request #12422 from Kilo-Org/johnnyeric/fix-memory-ui-feedback
fix(memory): refine CLI and extension experience
2026-07-21 12:27:03 +02:00
marius-kilocode 82dda99b94 fix: restore kilo ci scripts and install policy
The package.json reconciliation dropped Kilo's test:ci scripts from the
six upstream-shared packages (core, effect-drizzle-sqlite,
http-recorder, llm, tui, ui), silently scheduling zero tests in the
non-CLI CI job, removed the dev:local root entrypoint, and adopted
upstream's tree-sitter-powershell native build permission. Restores all
of them to the Kilo base state.
2026-07-21 11:01:49 +02:00