Commit Graph
551 Commits
Author SHA1 Message Date
webreflection 4e38e0c2e4 fix(security): update DOMPurify to 3.4.13 to fix dependabot warnings 2026-08-26 14:18:08 +02:00
kilo-maintainer[bot] ed3380ea49 release: v7.5.0 2026-08-26 11:03:25 +00:00
kilo-maintainer[bot] 67cd629f3c release: v7.4.23 2026-08-20 12:26:16 +00:00
kilo-maintainer[bot] 67cda85c94 release: v7.4.22 2026-08-13 22:26:16 +00:00
sylwester-liljegrenandSylwester Liljegren 8013e5f504 feat(ui): parse and render clickable file links (#11219)
* feat(ui): parse file-path candidates with line and column suffixes

Replace the regex-based parseFilePath with extractSuffix and
normalizeCandidatePath helpers, and make extractFilePathFromHref return
structured { path, line, column } data instead of a bare string.

This shifts inline-code detection from "does this string look like a
file?" to "extract a candidate path so the filesystem can confirm it
later", which also handles :line / :line:col and :start-end line ranges,
a/ and b/ diff prefixes, and Windows drive paths. Unit tests are
rewritten to cover the new helpers and the structured href result.

* feat(ui): render and open clickable file links

Mark every inline code span as a file-link candidate during markdown
rendering, then validate candidates against the filesystem after render
and promote confirmed files to clickable links. Results are cached so
morphdom re-renders during streaming resolve without extra round-trips,
and unconfirmed candidates fall back to plain code.

Clicking a confirmed link (or a markdown link whose href is a file path)
opens the file at the referenced line/column. Markdown file-path links
also get distinct styling.

* fix(ui): tighten file-link detection and streaming validation

Address kilo-code-bot review on #11219:
- preserve top-level a/ and b/ directories instead of treating them as diff
  prefixes for every candidate
- only treat markdown hrefs as file targets when the href still looks like a
  file path after removing query/fragment and parsing line suffixes
- observe text and file-link attribute mutations during streaming so morphdom
  in-place updates re-run validation

* fix(ui): preserve common extensionless file hrefs

Address kilo-code-bot review on #11219: keep the href guard that avoids
routing extensionless docs links through openFile, but allow common
extensionless workspace files (LICENSE, Dockerfile, Makefile) to use the
file-open path. Mirror the helper in kilo-ui and cover the allowlist plus
unknown extensionless rejection in file-path tests.

* fix(ui): scope file-link validation to session and harden against races

Addresses review feedback on PR #11219 (marius-kilocode):

- validateFiles requests now carry an explicit sessionID; the extension
  resolves the workspace directory from that id instead of its own
  mutable currentSession, so a session switch mid-request can't validate
  candidates against the wrong worktree.
- Introduce a module-level file-link-validator singleton shared by every
  TextPartDisplay instance: in-flight requests for the same path are
  coalesced instead of duplicated, and the validation cache lives outside
  component state so virtualization unmount/remount no longer discards it
  and repeats filesystem checks for unchanged history.
- Bound filesystem check concurrency in file-links.ts (mapLimit, cap 8)
  instead of firing an unbounded Promise.all per validateFiles call.
- Guard DOM promotion against stale responses: only mutate a candidate
  element if it's still connected and still represents the path that was
  validated, so a slow response can't clobber a newer candidate that
  reused the same node during streaming.
- A validateFiles timeout now rejects instead of resolving with [], and
  is retried with backoff before giving up as an unconfirmed (not
  negative) result, so it's never cached as "file doesn't exist".

* test(ui): update bidi contract test for file-link candidate markup

The codespan renderer added by this PR marks non-trivial inline code
spans as file-link candidates, so the plain <code dir="auto"> markup
this test expected no longer matches. Update the expectation to the
candidate-wrapped output while still asserting dir="auto" is preserved.

* refactor(ui): harden and de-duplicate clickable file-link validation

Follow-up review fixes on PR #11219:

- Escape the `data-file-candidate` attribute value in the codespan
  renderer. It's derived from raw model output, so a stray `"` could
  break out of the attribute (neutralized by the DOMPurify pass, but now
  fixed at generation time for correctness + defense-in-depth). Adds
  escapeAttribute() to the shared file-path module.
- Only treat code spans that look like file paths (an extension or a
  known extensionless name) as candidates, so bare identifiers like
  `useState`/`null` no longer trigger filesystem probes during
  streaming. Exposes looksLikeFilePath() for this.
- De-duplicate file-path.ts: expose it via the `@opencode-ai/ui/file-path`
  export and import it from kilo-ui instead of keeping a byte-identical
  copy with dead exports. Deletes packages/kilo-ui/src/file-path.ts.
- Keep target/rel on file-path markdown links so the shared opencode
  consumer's navigation/security behavior is unchanged; Kilo's click
  handler still intercepts via preventDefault.
- Cache negative validation results with a short TTL so a file created
  mid-session becomes clickable on the next scan (positives never
  expire). Retry/TTL are now tunable via checkFile options.
- Filter the MutationObserver so promote()'s own class/attribute writes
  no longer schedule an extra no-op validation pass.
- Add unit tests for looksLikeFilePath, escapeAttribute, the codespan
  candidate/escaping behavior, and the validator's dedup/batching/cache/
  TTL/retry paths.

* fix(ui): scope file-link open to its session and harden rendering

Thread an explicit sessionID through the click-to-open path (OpenFileFn,
openFile webview message, editor-actions) so opening a validated file link
resolves against the session it was rendered for, mirroring validateFiles and
avoiding the wrong worktree during an Agent Manager session switch.

Also: re-scan file-link candidates once streaming stops so candidates left
'unknown' after a mid-stream validation timeout get a final pass; make the
validator cache LRU (refresh recency on read) instead of FIFO; and escape
href/title in the markdown link renderer as defense-in-depth alongside
DOMPurify.

* feat(ui): make extensionless and bare-token file references clickable

The candidate heuristic previously required a dotted basename or one of three hardcoded extensionless names (Dockerfile/LICENSE/Makefile), so real files like 'install', 'run-script', or 'configure' were never validated and stayed plain.

Split the heuristic: keep looksLikeFilePath strict for markdown-link hrefs (decided statically, no filesystem check, so a false positive would hijack a doc route), and add a permissive looksLikeCandidate for inline code spans, which ARE validated against the filesystem afterward. A code span now qualifies unless it is empty or contains code punctuation, so extensionless files and separator paths become clickable while expressions like useState() stay plain.

To keep the broader candidate set from multiplying probes, defer candidate validation until a message finishes streaming instead of running it on every morphdom frame; completed history still validates on mount.

* refactor(ui): isolate file-link negative cache from confirmed positives

Addresses kilo-code-bot's suggestion on the widened looksLikeCandidate heuristic: with nearly every bare token now probed, transient negatives (useState, null, ...) dominated the single fixed-size LRU and could evict confirmed-file entries, forcing re-probes on revisit.

Split the validator cache into a positives Set (confirmed files, never expire) and a negatives Map (TTL'd), each LRU-bounded independently (2000 / 1000). Negative-probe churn now only evicts other negatives, a real clickable file is never pushed out by non-file noise, and eviction stays O(1) with no scan.

* feat(ui): validate file links during streaming with a per-element settle debounce

Replaces the defer-until-complete pass with incremental validation so links appear while a message streams (requested in review), without the partial-path probe storm that defer avoided.

Because morphdom keeps the same <code> node as a healed streamed path grows (src/fo -> src/foo.ts), each candidate carries a per-element debounce: a probe fires only after that element's path has been stable for 400ms, and re-arms whenever the path changes, so intermediate partials are superseded before hitting the filesystem. Settled candidates behind the streaming frontier light up mid-stream; on completion all pending candidates flush immediately. Combined with the split positive/negative caches, a growing token now costs one probe for its final value instead of one per frame.

---------

Co-authored-by: Sylwester Liljegren <sylwester.liljegren@softronic.se>
2026-08-13 13:59:13 +02:00
Johnny Eric Amancio 5119e565e2 Merge remote-tracking branch 'origin/johnnyeric/kilo-opencode-v1.18.0' into johnnyeric/kilo-opencode-v1.18.13
# Conflicts:
#	bun.lock
2026-08-11 11:59:05 +02:00
kilo-maintainer[bot] a5aaef74a8 release: v7.4.21 2026-08-11 03:07:28 +00:00
Johnny Eric Amancio cce22e608f merge: upstream v1.18.13 2026-08-06 00:31:20 +02:00
Johnny Eric Amancio 0fff61fa62 refactor: kilo compat for v1.18.13 2026-08-06 00:00:45 +02: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
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
kilo-maintainer[bot] f00da9a75b release: v7.4.18 2026-07-31 19:59:08 +00: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 518501a994 resolve merge conflicts 2026-07-30 14:24:24 +02:00
kilo-maintainer[bot] a0364858a6 release: v7.4.17 2026-07-29 11:29:05 +00:00
Johnny Amancio 898f0dc40b refactor: kilo compat for v1.17.13 2026-07-29 02:06:01 +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 a776bd4d29 refactor: kilo compat for v1.17.9 2026-07-22 13:31:23 +02:00
kilo-maintainer[bot] 13e4259662 release: v7.4.15 2026-07-22 09:21:25 +00:00
kilo-maintainer[bot] 7060f8cb21 release: v7.4.13 2026-07-20 17:45:05 +00:00
marius-kilocode 4327386ff8 refactor: kilo compat for v1.17.5 2026-07-20 10:55:41 +02:00
Johnny Amancio 8861ec1f13 Merge remote-tracking branch 'origin/main' into johnnyeric/kilo-opencode-v1.17.4
# Conflicts:
#	packages/opencode/src/cli/cmd/tui.ts
#	packages/opencode/src/cli/tui/worker.ts
#	packages/opencode/test/kilocode/cli/tui/thread.test.ts
2026-07-17 11:50:24 +02:00
Mohammad Javad Naderiandmarius-kilocode f85724830c fix(ui): support bidirectional chat markdown (#11944)
* fix(ui): support bidirectional chat markdown

* fix(ui): address bidi markdown review feedback

* fix(ui): distinguish user message bubbles

* fix(ui): simplify markdown bidi direction

Mark the markdown container with one auto direction instead of
decorating each rendered block after parsing. Assistant replies usually
have one dominant natural language, but coding responses often start
list items and paragraphs with identifiers, method names, or HTTP terms.
Per-block auto direction lets those English tokens choose the direction
for whole lists even when the surrounding answer is right-to-left.

Keeping direction on the root makes the answer follow the dominant
prose direction more consistently, while code and pre elements keep their
own auto direction so code-like content does not decide the container
direction. This also removes the post-render bidi decoration pass.

* fix(ui): isolate markdown math direction

* fix(vscode): improve bidi text rendering

Match the chat user message bubble to the prompt input by using
plaintext unicode-bidi handling inside the Kilo UI message text.

Set automatic direction on session title labels in the task header,
recent sessions, history, cloud history, and Agent Manager so RTL and
mixed-direction titles render correctly without changing row layout.

* fix(ui): preserve code block direction while streaming

Keep dir on the existing pre element when streaming Shiki highlighting
updates it in place. The updater removes current attributes before
copying Shiki attributes, and Shiki does not emit dir, so RTL markdown
roots could briefly force code blocks to render right-to-left during
streaming.

Export the update helper for a focused behavior test that verifies the
in-place highlight update keeps direction, replaces stale attributes,
applies Shiki attributes, preserves scroll position, and updates the
source hash.

* chore(vscode): fix formatting issues

Format files after adding automatic direction attributes.

* test(ui): improve markdown bidi tests

Replace source-shape checks with an isolated Markdown component render
for the root dir contract.

Use happy-dom for the streaming highlight update test so innerHTML
parsing, attributes, connectivity, and HTMLPreElement checks use a real
DOM implementation. Restore patched globals in finally to avoid test
leakage.

* test(ui): address markdown bidi review comments

* fix(ui): revert user message bubble styles

* Revert "fix(ui): revert user message bubble styles"

This reverts commit 282264e25c.

* refactor(agent-manager): extract unassigned sessions section

---------

Co-authored-by: marius-kilocode <marius@kilocode.ai>
2026-07-17 07:26:28 +00:00
kilo-maintainer[bot] 9ac93a4c90 release: v7.4.11 2026-07-16 19:33:52 +00:00
Johnny Amancio a87ddecf8f Merge remote-tracking branch 'origin/main' into johnnyeric/kilo-opencode-v1.17.4
# Conflicts:
#	.github/workflows/test.yml
#	packages/opencode/src/session/processor.ts
#	packages/opencode/test/kilocode/session-prompt-permission-refresh.test.ts
2026-07-16 12:56:16 +02:00
kilo-maintainer[bot] 0d13b79d2c release: v7.4.9 2026-07-15 18:45:17 +00:00
Johnny Amancio 2d92d8dae2 chore: merge latest Kilo main 2026-07-15 13:01:08 +02:00
kilo-maintainer[bot] 19bd048e21 release: v7.4.8 2026-07-15 10:29:22 +00:00
Johnny Amancio bfcb911648 fix: address upstream merge review findings
Addresses validated findings documented in Kilo-Org/kilocode#12218.
2026-07-15 01:57:53 +02:00
Johnny Amancio 2855ebbe48 refactor: kilo compat for v1.17.4 2026-07-13 19:15:48 +02:00
+25 ef6b152ff8 OpenCode v1.16.2 (#12088)
* feat(worktree): add managed workspace cloning (#30117)

* test(tui): skip crashing keymap textarea renderer

* fix(core): allow skipping migration execution

* fix(opencode): remove automatic full session diffs (#30127)

* chore: generate

* refactor(worktree): move project out of repository

* zen: deepseek flash

* fix(tui): remount session view on session switch (#30129)

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>

* go: minimax m3

* refactor(opencode): inline local provider helpers (#30169)

* refactor(opencode): simplify provider setup flow (#30173)

* fix(app): show project sessions before path sync resolves (#30167)

Co-authored-by: LukeParkerDev <10430890+Hona@users.noreply.github.com>

* fix(core): preserve session metadata migration identity (#30176)

* refactor(session): align namespace imports and inline trivial helpers (#30180)

* opencode(run): add queued prompt management (#30103)

Direct run mode previously made submitted follow-up prompts irrevocable while a response was still running. Let users edit or remove queued prompts before dispatch without interrupting the active turn.

* chore: generate

* fix(acp): honor session/cancel by aborting the running turn (#30145)

Co-authored-by: Shoubhit Dash <shoubhit2005@gmail.com>

* fix(tui): prevent prompt corruption when pasting near wide characters (#29710)

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Simon Klee <hello@simonklee.dk>

* fix(opencode): avoid nullable webfetch format schema (#30215)

* chore: generate

* fix(core): contain lsp warmup defects (#30226)

* add run --replay mode (#30239)

* chore: generate

* chore: update nix node_modules hashes

* fix(stats): restore leaderboard spacing

* fix(stats): center top models dot grid

* fix(stats): stabilize top models hover

* fix(stats): align big-pickle provider resolution (#30274)

* feat(app): v2 desktop UI improvements (#29689)

Co-authored-by: Brendan Allan <git@brendonovich.dev>
Co-authored-by: Brendan Allan <14191578+Brendonovich@users.noreply.github.com>

* chore: generate

* fix(tui): clarify inline subagent rows (#30051)

* fix(tui): handle events across workspaces (#30281)

* feat(core): update Copilot for token-based billing (#30181)

* fix(tui): keep background marker with subagent label (#30271)

* fix(tui): keep retry attempt before message (#30275)

* chore: generate

* fix(opencode): enforce storage path invariants (#29666)

* chore: generate

* feat(core): add location-based permission service (#30287)

* chore: generate

* fix(tui): preserve live parts during session hydration (#30300)

* fix(app): restore deferred MCP status updates (#30220)

* fix: export v2 stylesheets and declare core node types (#30312)

* chore: update nix node_modules hashes

* fix(app): avoid suspending on pending child path (#30314)

* fix(opencode): remove sunsetted gpt-5.2 and gpt-5.3-codex from allowed models for codex subscriptions (#30316)

* chore: generate

* feat(core): expose session location

* chore: generate

* fix(opencode): preserve websocket api errors (#30321)

* refactor(core): simplify session pagination

* feat(core): add location filesystem contract

* feat(core): add dummy location filesystem layer

* chore: generate

* feat(opencode): add filesystem read and list routes

* chore: generate

* infra: stats

* sync

* feat(app): inset new layout session panels (#30342)

* fix(app): tab title truncation and close button positioning (#30349)

* tui: show model context in run footer (#30380)

* tui: revert OpenTUI upgrade to 0.2.16 (#30383)

* chore: update nix node_modules hashes

* feat(core): add managed repository cache (#30408)

* chore: generate

* chore: generate

* sync

* feat(stats): add cache ratio section

* feat(core): add flagged project references (#30414)

* chore: generate

* feat(core): support named migrations (#30418)

* fix(stats): clean retired provider rows during sync (#30420)

* fix(stats): mention opencode go in top models copy

* feat(core): expose project reference filesystem access (#30423)

* chore: generate

* sync

* fix(tui): scope diff viewer to session directory (#30426)

* test: widen provider header timeout margin (#30427)

* fix(plugin): restore private git install fallback (#30430)

* fix(stats): remove leaderboard nav link

* chore(opencode): remove scout agent (#30435)

* chore: generate

* feat(stats): improve cache ratio chart

* chore: generate

* fix(effect-drizzle-sqlite): preserve transaction begin errors (#30448)

* chore: bump effect beta to 74 (#30449)

* Revert "tui: revert OpenTUI upgrade to 0.2.16 (#30383)" (#30452)

* chore: update nix node_modules hashes

* refactor(opencode): improve startup time by 38% (#30453)

Co-authored-by: starptech <starptech@starptechs-MBP.fritz.box>

* chore: generate

* fix(opencode): patch empty Gemini replay messages (#30463)

* chore: generate

* refactor(core): consolidate filesystem services (#30447)

* chore: generate

* run: enable interactive replay by default (#30465)

* chore: update nix node_modules hashes

* refactor(opencode): remove JSON storage migration (#30461)

* chore: generate

* chore: update nix node_modules hashes

* fix(tui): stop idle background task spinner (#30484)

* refactor(core): move v1 schemas into core (#30473)

* chore: generate

* fix: task id passed to background job for continuation (#30485)

* chore: generate

* feat(core): project copying and tracking directories (#30139)

* chore: generate

* fix(opencode): preserve signed thinking during anthropic reorder (#30182)

* Revert "fix(opencode): preserve signed thinking during anthropic reorder" (#30502)

* fix: rm tool reorder logic from old bug (#30483)

* chore: generate

* feat(app): polish home projects list UI (#30436)

* feat(app): polish select-v2 component (#30446)

Co-authored-by: Brendan Allan <git@brendonovich.dev>

* fix(github): enforce existing git author identity (#30507)

* feat(app): new update button  (#30460)

Co-authored-by: Brendan Allan <git@brendonovich.dev>

* fix(opencode): fallback to sh for curl upgrade (#30499)

Co-authored-by: Shoubhit Dash <shoubhit2005@gmail.com>

* fix(ui): render whole-file patches as complete diffs (#30516)

* chore: generate

* feat(app): add servers tab to settings dialog (#29675)

* refactor(core): consolidate pty service (#30537)

* chore: generate

* tui: truncate sidebar file paths (#30531)

* chore: update nix node_modules hashes

* feat(stats): add geo breakdown (#30456)

* chore: generate

* chore: update nix node_modules hashes

* fix(acp): classify apply_patch as edit (#30564)

* fix(acp): classify task as think (#30565)

* fix(acp): include external directory permission context (#30567)

* fix(acp): clean read tool display content (#30569)

* fix(tui): route question responses by session directory (#30578)

* fix(stats): serve stats og image from banner

* docs(go): add Qwen3.7 Plus model (#30594)

* fix(openai): preserve websocket idle state (#30586)

* refactor(core): remove ai sdk option fields (#30581)

* chore: generate

* test(core): cover v1 provider option lowering (#30599)

* chore: generate

* refactor(core): nest model api id (#30603)

* fix(core): expose azure openai xhigh efforts (#30620)

* feat(core): add skill registry and file agent loading (#30617)

* chore: generate

* chore: update nix node_modules hashes

* fix(stats): count all go usage

* chore: remove zed extension and automation (#30628)

* fix(opencode): preserve variant for delegated tasks (#30630)

* zen: update nvidia tos

* fix(opencode): route SAP AI Core reasoning variants through modelParams (#30482)

* chore: generate

* fix(app): hide unavailable titlebar update (#30642)

* feat(app): v2 thinking level selector (#30646)

* fix(app,ui): session review reactivity and VCS query cache (#30660)

* feat(core): add embedded v2 session runtime and tool foundation (#30632)

* chore: generate

* chore: update nix node_modules hashes

* docs: correct compaction prune default (#30670)

* fix(opencode): avoid shell cancel race (#30641)

* feat: bump bedrock and add proper mantle support for openai models through aws bedrock (#30464)

* test: wait for shell truncation readiness (#30679)

* chore: update nix node_modules hashes

* refactor(opencode): clean up task tool prompts (#30687)

* feat(core): add command registry (#30624)

* chore: generate

* fix(acp): replay loaded session transcript (#30645)

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Shoubhit Dash <shoubhit2005@gmail.com>

* fix(core): reset pre-launch session projections (#30728)

* feat(tui): improve experimental session switcher (#30738)

* fix(opencode): respect disabled auto compaction on overflow (#30749)

* zen: nemotron 3 ultra

* fix(enterprise): install hono standard validator peer (#30740)

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>

* fix build

* chore: update nix node_modules hashes

* make scripts executable

* fix(tui): show toast when variant_list keybind used with no variants (#30724)

* fix(opencode): `ACP.loadSession` should replay all messages (#30761)

Co-authored-by: Shoubhit Dash <shoubhit2005@gmail.com>

* fix(opencode): attribute task child agent on creation (#30786)

* fix(tui): add Vue syntax highlighting (#30802)

* fix: bump @openrouter/ai-sdk-provider to 2.9.0 (#30800)

* feat(core): moving sessions (#30640)

* chore: generate

* tweak: background agent prompting to avoid polling issues (#30790)

* upgrade opentui to 0.3.2 (#30748)

* chore: update nix node_modules hashes

* feat(desktop): surface local server startup failures (#30822)

* ci: publish

* refactor(core): make v2 session inputs event sourced (#30785)

* chore: generate

* fix(llm): normalize OpenAI function tool schemas

* chore: generate

* feat(stats): refresh stats routes and homepage (#30419)

* fix(stats): sort metric charts by top usage

* feat(core): add public native API (#30828)

* chore: generate

* feat(app): color themes (#30824)

Co-authored-by: LukeParkerDev <10430890+Hona@users.noreply.github.com>

* chore: generate

* sync release versions for v1.16.0

* feat(core): attach global native tools (#30832)

* chore: generate

* feat(core): add Snowflake Cortex provider (#29901)

Co-authored-by: Cortex Code <noreply@snowflake.com>

* chore: generate

* feat(core): persist v2 session context epochs (#30789)

* chore: generate

* feat(tui): allow backgrounding synchronous subagents (#30488)

* fix(app): improve tab handling (#30669)

* chore: generate

* fix(tui): prioritize models slash autocomplete (#30848)

* fix(tui): route permission replies to session directory (#30851)

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>

* fix(cli): harden daemon lifecycle (#30844)

* chore: generate

* feat(app): improve desktop multi-server support (#30678)

Co-authored-by: Brendan Allan <git@brendonovich.dev>

* chore: generate

* fix(app): handle tab overflow and scrolling in titlebar (#30886)

* fix(app): tab overflow (#30894)

* tui: guard path formatting inputs (#30469)

Fixes #27726, #25216, #24856, #24294, #17071, #29164, #24837, #16865, #14279, #29895

* opencode/run: refresh themes after terminal reloads (#30917)

* chore: generate

* fix(tui): fall back to local cwd when editor spawns in attach mode (#30583)

* docs: update Go Qwen tiered pricing (#30936)

* chore: generate

* feat(tui): add diff hunk navigation (#30935)

* chore: rm fuzzy search on references (#30931)

* fix: use mapError instead of orDie for context snapshot decoding (#30905)

Co-authored-by: Shoubhit Dash <shoubhit2005@gmail.com>

* fix(core): recover corrupted models cache (#30947)

* chore: bun install (#30968)

* fix(opencode): resolve Bedrock hang by using node build conditions (#30873)

* fix(workflows): retry nix-hashes compute-hash on transient failure (#30743)

* fix(stats): scroll model charts to latest on mobile

* fix(opencode): prevent destructive edit matches (#30932)

* chore: generate

* fix(core): respect v2 default agents (#30969)

* chore: generate

* test(opencode): remove disposal event wait race (#30971)

* test(opencode): remove shell timeout output race (#30974)

* fix(opencode): gate reasoning summaries by provider (#30973)

* feat(core): admit v2 skill guidance (#30843)

* fix(workflows): serialize desktop release uploads (#30978)

* fix(stats): add mobile chart end spacing

* release: v1.16.2

* refactor: kilo compat for v1.16.2

* fix(opencode): address v1.16.2 merge regressions

* chore: update kilo-vscode visual regression baselines

* fix(opencode): restore Kilo behavior after v1.16.2 merge

* fix(opencode): retry Windows migration cleanup

* test(opencode): restore clone and macOS watcher coverage

* fix(opencode): address second-pass review for #12099

Preserve imported usage and retry partial JSON migrations. Refresh active dependency patches, remove the obsolete GCP patch, and regenerate Kilo HttpApi branding.

---------

Co-authored-by: Dax <mail@thdxr.com>
Co-authored-by: Dax Raad <d@ironbay.co>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Frank <frank@anoma.ly>
Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
Co-authored-by: Michael Hart <mhart@cloudflare.com>
Co-authored-by: LukeParkerDev <10430890+Hona@users.noreply.github.com>
Co-authored-by: Simon Klee <hello@simonklee.dk>
Co-authored-by: smagnuso <smagnuso@gmail.com>
Co-authored-by: Shoubhit Dash <shoubhit2005@gmail.com>
Co-authored-by: Orca丶 <93272799+dauphinYan@users.noreply.github.com>
Co-authored-by: Adam <2363879+adamdotdevin@users.noreply.github.com>
Co-authored-by: Aarav Sareen <96787824+arvsrn@users.noreply.github.com>
Co-authored-by: Brendan Allan <git@brendonovich.dev>
Co-authored-by: Brendan Allan <14191578+Brendonovich@users.noreply.github.com>
Co-authored-by: Kit Langton <kit.langton@gmail.com>
Co-authored-by: James Long <longster@gmail.com>
Co-authored-by: Dustin Deus <deusdustin@gmail.com>
Co-authored-by: starptech <starptech@starptechs-MBP.fritz.box>
Co-authored-by: Ulises Jeremias <ulisescf.24@gmail.com>
Co-authored-by: Jack <jack@anoma.ly>
Co-authored-by: Jérôme Benoit <jerome.benoit@sap.com>
Co-authored-by: Ariane Emory <97994360+ariane-emory@users.noreply.github.com>
Co-authored-by: LIU Xinyu <contact@lxy.cc>
Co-authored-by: Colin McDonnell <colinmcd94@gmail.com>
Co-authored-by: Sebastian <hasta84@gmail.com>
Co-authored-by: opencode <opencode@sst.dev>
Co-authored-by: Kamesh Sampath <kamesh.sampath@hotmail.com>
Co-authored-by: Cortex Code <noreply@snowflake.com>
Co-authored-by: pcadena-lila <pcadena@lila.ai>
Co-authored-by: weiconghe <46336277+weiconghe@users.noreply.github.com>
Co-authored-by: alberto <914199+alblez@users.noreply.github.com>
Co-authored-by: kilo-maintainer[bot] <kilo-maintainer[bot]@users.noreply.github.com>
2026-07-13 18:00:35 +02:00
kilo-maintainer[bot] afda979458 release: v7.4.7 2026-07-13 14:45:02 +00:00
kilo-maintainer[bot] 2535b742ac release: v7.4.6 2026-07-13 13:56:01 +00:00
kilo-maintainer[bot] 3cddd07ad4 release: v7.4.5 2026-07-09 14:31:42 +00:00
kilo-maintainer[bot] 2c175fbd25 release: v7.4.4 2026-07-09 13:13:38 +00:00
kilo-maintainer[bot] 2464bfe475 release: v7.4.3 2026-07-09 11:55:41 +00:00
kilo-maintainer[bot] 6509c66b4b release: v7.4.2 2026-07-08 20:39:16 +00:00
Johnny Amancio 2770028959 refactor: kilo compat for v1.16.2 2026-07-07 18:11:20 +02:00
kilo-maintainer[bot] 4ed43ab7c5 release: v7.4.1 2026-07-03 17:10:11 +00:00
kilo-maintainer[bot] c78d44a143 release: v7.4.0 2026-07-03 14:40:55 +00:00
kilo-maintainer[bot] 82da283d1d release: v7.3.63 2026-06-30 09:55:39 +00:00
marius-kilocode 69e5cac6de chore(ci): compact bun junit test output 2026-06-29 17:36:43 +02:00
kilo-maintainer[bot] 0f55066dc7 release: v7.3.54 2026-06-23 01:51:02 +00:00
kilo-maintainer[bot] 90643d2325 release: v7.3.53 2026-06-22 17:12:51 +00:00
kilo-maintainer[bot] e3da86822f release: v7.3.52 2026-06-22 09:15:48 +00:00
kilo-maintainer[bot] 2e89ea4027 release: v7.3.51 2026-06-22 08:45:30 +00:00
kilo-maintainer[bot] 533c2017fa release: v7.3.50 2026-06-19 18:12:57 +00:00