Commit Graph

2625 Commits

Author SHA1 Message Date
Marius 6ecb406a32 feat: add kilo-gateway to thinking variants switch statement (#76) 2026-02-02 16:16:50 +01:00
GitHub Action 76ceaeafd9 chore: generate 2026-02-02 15:06:38 +00:00
Igor Šćekić d06d57c186 Merge pull request #73 from Kilo-Org/add-some-defensive-code-around-getting-org-id 2026-02-02 16:05:10 +01:00
Igor Šćekić b04e8e877c fix(kilo-sessions): handle sync throws in inflight cache
Wrap callback execution in a promise microtask so synchronous errors flow
through the existing `.catch()` and the in-flight entry is reliably cleaned
up. Update tests to await the microtask before asserting call count.
2026-02-02 15:41:37 +01:00
Igor Šćekić cd62b61774 fix(kilo-sessions): cache client creation with shared ttl
Add an in-flight cache entry for getClient to avoid repeated token
validation and client recreation, and use a single ttl constant for
token and org lookups.
2026-02-02 15:23:32 +01:00
Igor Šćekić 13001c4f10 fix(kilo-sessions): cap token validity cache to 15 minutes 2026-02-02 15:08:59 +01:00
Igor Šćekić 6eb37d4305 fix(kilo-sessions): drop in-flight cache entry on errors 2026-02-02 15:06:50 +01:00
Igor Šćekić 6d53540a58 fix(kilo-sessions): update cache key only on token change 2026-02-02 15:06:04 +01:00
Igor Šćekić c5657260a3 refactor(kilo-sessions): make clearCache synchronous 2026-02-02 14:52:43 +01:00
Igor Šćekić 6834fe4380 fix(kilo-sessions): clear auth validity cache on token change
Ensure in-flight auth validity lookups are not reused across different tokens
by clearing the previous cache key when a new token is received.
2026-02-02 14:51:03 +01:00
Igor Šćekić fb552eddfe fix(kilo-sessions): key auth validity cache by token
Use a per-token cache key for auth validity to prevent different
sessions from sharing the same cached result.
2026-02-02 14:40:39 +01:00
Igor Šćekić 642d1c8477 fix(kilo-sessions): cache token and auth validity
Use in-flight cache for token retrieval and token validity checks, and
centralize cache clearing on auth errors to avoid reusing invalid
credentials while still allowing retries after transient failures.
2026-02-02 14:30:50 +01:00
Igor Šćekić 5ef866eebd fix(kilo-sessions): stop caching undefined in in-flight cache
Treat `undefined` as a non-cacheable sentinel by deleting the cache entry
when the callback resolves to `undefined`, ensuring future calls retry
instead of serving stale data.
2026-02-02 14:29:07 +01:00
Igor Šćekić e815689023 fix(kilo-sessions): await in-flight refresh to avoid stale reads
Always return the in-flight promise when a refresh is running so callers
don’t receive an expired cached value. Preserve the original timestamp
until refresh succeeds and only update it on successful recompute to
avoid masking failed refreshes.
2026-02-02 13:37:08 +01:00
Igor Šćekić 9e64e10d80 fix(kilo-sessions): cache undefined values in in-flight cache
Track entry presence separately from the cached value so `undefined`
results are treated as valid cache hits within the TTL.
2026-02-02 13:22:19 +01:00
Igor Šćekić 2f1c9fe6ea fix(kilo-sessions): clear org in-flight cache on auth reset 2026-02-02 13:21:12 +01:00
Igor Šćekić bdf13f83b8 perf(kilo-sessions): add in-flight cache
Introduce a shared in-flight + TTL cache to dedupe concurrent
getClient() and org ID resolution calls, and clear cached client state
when auth becomes invalid to avoid repeated use of stale credentials.
2026-02-02 13:11:47 +01:00
Igor Šćekić d69e22abe0 fix(kilo-sessions): validate org id as uuid
Ensure orgId is only sourced from env/auth when it is a valid UUID, and
cache it with a UUID type to prevent invalid values from propagating.
2026-02-02 13:05:28 +01:00
Catriel Müller 1b5ef0737f Merge OpenCode v1.1.42 (#67)
* chore: details

* fix(tui): add visual feedback for diff wrap and conceal toggles (#10655)

* fix: await SessionRevert.cleanup for shell (#10669)

* fix: Make diff wrapping toggle always available in command_list and correct a type error (resolves #10682) (#10683)

* feat(app): default servers on web

* fix(app): handle non-tool call permissions

* fix(app): line selection waits on ready

* wip(app): model settings

* feat(app): model settings

* chore: generate

* wip(app): sidebar hover full

* wip(app): full-height sidebar

* wip(app): full-height sidebar

* feat(app): better sidebar hover when collapsed

* fix(app): query selector with non-latin chars

* chore: stale-while-revalidate headers for changelog

* chore: generate

* feat(opencode): add agent description (#10680)

* feat: dynamically resolve AGENTS.md files from subdirectories as agent explores them (#10678)

* chore: gen changelog page off changelog json

* upgrade opentui to v0.1.75

* chore: update nix node_modules hashes

* fix: move changelog footer outside content div to fix padding (#10712)

* fix(app): Order themes alphabetically (#10698)

* fix(app): restore external link opening in system browser (#10697)

* fix(ui): use focus-visible instead of focus to prevent sticky hover effect on click (#10651)

* fix: add 44px top padding to sticky version header on changelog (#10715)

* feat(app): file tree

* wip(app): file tree mode

* wip(app): file tree mode

* chore: cleanup

* chore: cleanup

* chore(app): createStore over signals

* fix(enterprise): add message navigation to share page desktop view (#10071)

Co-authored-by: Claude <noreply@anthropic.com>

* chore: fix changelog page

* Revert "fix(app): restore external link opening in system browser (#10697)"

This reverts commit 984518b1c0.

* ignore: tweak ai deps

* feat: use anthropic compat messages api for anthropic models through copilot

* chore: debug changelog

* fix: ensure openai 404 errors are retried (#10590)

* chore: generate

* test(app): e2e test for sidebar nav

* chore: refactor changelog

* fix(app): session load cap

* chore(app): missing i18n strings

* chore: cleanup

* fix(app): session sync issue

* chore: generate

* fix(ui): update button styles and disconnect button size

* fix(app): set provider row height to 56px

* fix(app): add hover text for env-connected providers

* fix(app): use default cursor for env provider text

* feat(ui): add providers icon and use in settings

* feat(ui): add models icon and use in settings

* fix(app): style view all button with interactive color and margin

* feat(ui): add optional transition animations to dialog

* fix(ui): prevent double-close and fix dialog replacement

* feat(app): add transition to select provider dialog

* feat(app): add transition to command palette

* fix(ui): reduce dialog transition in time to 150ms

* feat(app): add provider descriptions to settings

* feat(app): add Vercel AI Gateway provider description

* fix(ui): scope filetree pill tabs styling

* fix(app): adjust filetree panel padding

* fix(app): tighten filetree row spacing

* fix(app): use chevron icons for filetree folders

* fix(app): use medium font for filetree items

* fix(app): refine filetree row spacing and indent

* fix(app): reduce filetree folder indent

* fix(app): dim non-deep filetree guide lines

* fix(app): fade filetree guide lines on hover

* fix(app): move file tree toggle to right

* fix(app): disable tooltips in filetree tabs

* test(app): fix e2e test

* ci: add stale pr job

* ci: add dry-run option to stale PR closer workflow

Allows testing stale PR closure without actually closing PRs

* tweak: retry logic to catch certain provider problems

* fix(app): disconnect zen provider

* fix(app): zen disconnect not working

* chore: generate

* chore: cleanup

* fix: search clear icon

* wip: new release modal

- highlight key updates or new features
- needs some transition love
- all copy including text and video placeholder

* chore: cleanup

* wip: highlights

* wip: highlights

* wip: highlights

* tweak: when using messages api for copilot, attach anthropic beta headers

* chore: don't flip github draft release automatically

* fix(app): file tree performance

* fix(app): reactive file tree

* chore: generate

* chore: cleanup

* fix(app): enable file watcher

* chore: cleanup

* chore: cleanup

* test(app): file tree spec

* feat(release): add highlights template to draft releases (#10745)

* docs: add Italian README (#10732)

* chore: generate

* fix(app): add connect provier in model selector (#10706)

* fix(desktop): disable magnification gestures on macOS (#10605)

* feat: add /learn command to extract session learnings to scoped AGENTS.md files (#10717)

* fix: use Instance.directory instead of process.cwd() in read tool

* fix(core): expose Instance.directory to custom tools

* fix(app): only show files in select dialog when clicking + tab

* desktop: deduplicate tauri configs

* ignore: update download stats 2026-01-27

* fix(app): auto-scroll button sometimes sticks

* chore(app): missing tooltips

* feat(app): forward and back buttons

* chore: cleanup

* feat(core): add worktree to plugin tool context

* fix(app): agent fallback colors

* fix(app): non-fatal error handling

* docs(core): plugin tool context updates

* fix(ui): set filetree tablist height to 48px with centered content

* fix(app): center filetree empty state with 32px top margin

* fix(app): update review empty states to 14px and align select file empty state

* fix(app): only show left border on plus button when sticky

* fix(app): use smaller close icon on tabs to match comment cards

* fix(ui): add max-width 280px to tabs with text truncation

* fix(app): don't show session skeleton after workspace reset

* perf(app): don't keep parts in memory

* perf(app): cleanup connect provider timers

* perf(app): shared terminal ghostty-web instance

* fix(app): select model anchor

* Revert "fix(app): select model anchor"

This reverts commit 36babf5fc390fd9a892ad3742690740296d94a23.

* fix(app): open markdown links in external browser

* fix(app): navigate to tabs when opening file

* chore(app): cleanup tailwind vs pure css

* fix(app): tooltips causing getComputedStyle errors in model select

* fix(app): swallow file search errors

* feat(opencode): Handle Venice cache creation tokens (#10735)

Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>

* chore: generate

* chore(docs): Better explanation on how to allow tools in external directories (#10862)

* tweak: adjust retry check to be more defensive

* ci: make tests passing a requirement pre-release

* zen: kimi k2.5 and minimax m2.1

* feat(app): update settings in general settings

* chore(app): translations

* test(app): new e2e smoke tests

* feat(app): show loaded agents.md files

* fix(app): session diffs not always loading

* feat(app): improved layout

* chore: generate

* tweak: add recommended topP/temp for kimi k2.5

* Set temperature for kimi k2.5

* Revert "ci: make tests passing a requirement pre-release"

This reverts commit 8c00818108.

* Revert "Set temperature for kimi k2.5"

This reverts commit bb63d16fa8.

* feat(app): color filetree change dots by diff kind

* feat(app): add filetree tooltips with diff labels

* fix(app): shorten nav tooltips

* fix(app): adjust titlebar left spacing

* fix(app): delay nav tooltips

* fix(app): align filetree change styling

* fix(app): set filetree padding to 6px

* fix(app): highlight selected change

Track clicked file in the Changes tree and apply selection styling to the matching review diff.

* chore(app): show 5 highlights

* fix(app): auto-scroll

* fix(app): don't connect to localhost through vpn

* perf(app): better memory management

* chore: cleanup

* feat(desktop): i18n for tauri side

* feat(desktop): tauri locales

* fix(app): not auto-navigating to last project

* chore: update nix node_modules hashes

* fix(tui): handle 4-5 codes too in c to copy logic

* fix(app): spinner color

* fix(app): file tree not always loading

* test(app): fix outdated e2e test

* test(app): fix outdated e2e test

* fix(app): file tree not always loading

* fix(app): terminal corruption

* feat(app): add 'connect provider' button to the manage models dialog (#10887)

* fix(app): auto-scroll

* feat: support headless authentication for chatgpt/codex (#10890)

Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>

* fix(app): reintroduce review tab

* release: v1.1.37

* feat(app): use opentui markdown component behind experimental flag (#10900)

* chore: generate

* docs: add Daytona OpenCode plugin to ecosystem (#10917)

* chore: generate

* fix(cli): restore brand integrity of CLI wordmark (#10912)

* zen: kimi k2.5

* fix(opencode): ensure unsub(PartUpdated) is always called in TaskTool (#9992)

* chore: generate

* ignore: adjust flag

* bump plugin version

* ci

* fix: ensure parallel tool calls dont double load AGENTS.md

* release: v1.1.38

* fix: ensure copilot plugin properly sets headers for new messages api

* chore: generate

* release: v1.1.39

* bump: plugins

* ignore: update download stats 2026-01-28

* chore(app): global config changes

* feat(app): custom provider

* chore: cleanup

* wip(app): global config

* chore: cleanup

* chore: cleanup

* chore: generate

* feat(i18n): add th locale support (#10809)

* chore: generate

* fix(desktop): enable ctrl+n and ctrl+p for popover navigation (#10777)

* fix: add SubtaskPart with metadata reference (#10990)

Co-authored-by: yangtianzhe <yangtianzhe@corp.netease.com>

* chore: generate

* fix(app): close review pane

* fix(markdown): Add streaming prop to markdown element (#11025)

* release: v1.1.40

* fix(script): remove highlights template from release notes (#11052)

* chore: generate

* fix(ui): allow KaTeX inline math to be followed by punctuation (#11033)

* fix(app): alignment and padding in dialogs (#10866)

* fix(app): fill missing zh keys to avoid English fallback (#10841)

* chore: generate

* fix(opencode): normalize zh punctuation for Chinese UI (#10842)

* fix(ui): improve zh duration display formatting (#10844)

* fix(opencode): add `AbortSignal` support to `Ripgrep.files()` and `GlobTool` (#10833)

* fix(typescript errors): remove duplicate keys causing typescript failures (#11071)

* fix(app): file tabs - auto scroll on open & scroll via mouse wheel (#11070)

* tweak: add ctx.abort to grep tool

* fix(app): types

* docs: update experimental environment variables in CLI docs (#11030)

* fix(app): make settings more responsive for mobile and small web/desktop (#10775)

* chore: generate

* fix(opencode): allow media-src data: URL for small audio files (#11082)

* fix(provider): include providerID in SDK cache key (#11020)

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* fix: maxOutputTokens was accidentally hardcoded to undefined  (#10995)

* fix: ensure variants for copilot models work w/ maxTokens being set

* release: v1.1.41

* test: fix test

* chore: generate

* feat(cli): include cache tokens in stats (#10582)

* ci: adjust team

* guard destroyed input field in timeout

* feat: Sequential numbering for forked session titles (Issue #10105) (#10321)

* more timeout race guards

* fix: ensure that kimi doesnt have fake variants available

* fix: frontmatter was adding newlines in some cases causing invalid model ids (#11095)

Co-authored-by: aptdnfapt <aptdnfapt@users.noreply.github.com>

* fix: undo change that used anthropic messages endpoint for anthropic models on copilot due to ratelimiting issues, go back to completions endpoint instead

* release: v1.1.42

* fix: fix types

* fix: fix kilocode/sdk type

* chore: update nix node_modules hashes

---------

Co-authored-by: adamelmore <2363879+adamdottv@users.noreply.github.com>
Co-authored-by: Idris Gadi <85882535+IdrisGit@users.noreply.github.com>
Co-authored-by: Noam Bressler <noamzbr@gmail.com>
Co-authored-by: Ariane Emory <97994360+ariane-emory@users.noreply.github.com>
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Steffen Deusch <steffen@deusch.me>
Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
Co-authored-by: Sebastian Herrlinger <hasta84@gmail.com>
Co-authored-by: Ryan Vogel <ryan@mandarin3d.com>
Co-authored-by: Sam Huckaby <samhuckaby@gmail.com>
Co-authored-by: Alex Yaroshuk <34632190+alexyaroshuk@users.noreply.github.com>
Co-authored-by: Rahul A Mistry <149420892+ProdigyRahul@users.noreply.github.com>
Co-authored-by: Adam <2363879+adamdotdevin@users.noreply.github.com>
Co-authored-by: zerone0x <hi@trine.dev>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
Co-authored-by: Tim <hello@timsmart.co>
Co-authored-by: David Hill <iamdavidhill@gmail.com>
Co-authored-by: Fabio Martino <fabiomartino@users.noreply.github.com>
Co-authored-by: Chris Yang <18487241+ysm-dev@users.noreply.github.com>
Co-authored-by: Brendan Allan <git@brendonovich.dev>
Co-authored-by: dpuyosa <dpuyosa@users.noreply.github.com>
Co-authored-by: OpeOginni <107570612+OpeOginni@users.noreply.github.com>
Co-authored-by: Frank <frank@anoma.ly>
Co-authored-by: Rohan Godha <git@rohangodha.com>
Co-authored-by: opencode <opencode@sst.dev>
Co-authored-by: Tommy D. Rossi <beats.by.morse@gmail.com>
Co-authored-by: James Murdza <james@jamesmurdza.com>
Co-authored-by: Tito <github@mynameistito.com>
Co-authored-by: Goni Zahavy <goni1993@gmail.com>
Co-authored-by: Dax Raad <d@ironbay.co>
Co-authored-by: Nattawee Phantawong <crozzio@gmail.com>
Co-authored-by: Sairaj <sairaj2119@gmail.com>
Co-authored-by: RenegadeE <37529469+YangTianz@users.noreply.github.com>
Co-authored-by: yangtianzhe <yangtianzhe@corp.netease.com>
Co-authored-by: Max Kong <kongzheyuan@outlook.com>
Co-authored-by: Julian Coy <julian@juliancoy.com>
Co-authored-by: Babou <42550761+bbabou@users.noreply.github.com>
Co-authored-by: Devin Griffin <31415269+DNGriffin@users.noreply.github.com>
Co-authored-by: tan <zerotanapok@gmail.com>
Co-authored-by: Saba Tchikhinashvili <38084512+saba-ch@users.noreply.github.com>
Co-authored-by: ideallove <20013535+ideallove@users.noreply.github.com>
Co-authored-by: Benjamin Oldenburg <benjamin.oldenburg@ordis.co.th>
Co-authored-by: aptdnfapt <aptdnfapt@users.noreply.github.com>
Co-authored-by: marius-kilocode <marius@kilocode.ai>
2026-02-02 12:47:09 +01:00
Igor Šćekić 38406b1c85 Merge pull request #72 from Kilo-Org/add-support-for-missing-cli-session-metadata 2026-02-02 12:39:40 +01:00
Igor Šćekić b4b05db389 refactor(share): rename ShareNext to KiloSessions
Move share/ingest modules under kilo-sessions and update bootstrap and
session share/unshare/remove flows to use KiloSessions. Update ingest
queue test imports accordingly.
2026-02-02 12:39:24 +01:00
Brendan O'Leary 501a80f590 Merge pull request #53 from Kilo-Org/bdo/markdown-table-formating 2026-02-01 03:06:55 +01:00
Igor Šćekić c06a87abe9 fix(share): resolve orgId from auth when env missing
Fetch orgId from KILO auth when KILO_ORG_ID is not set and cache the
result briefly to avoid repeated lookups during ingest sync.
2026-01-30 11:02:57 +01:00
Igor Šćekić 5f927347cc feat(share): sync kilo platform/org metadata to ingest
Add `kilo_meta` items to the ingest queue with a stable key so updates
coalesce, and send metadata derived from `KILO_PLATFORM` and `KILO_ORG_ID`
during session sync.
2026-01-29 22:09:11 +01:00
Igor Šćekić 9d0f9da3b8 feat(share): allow ingest url override via env var 2026-01-29 19:32:37 +01:00
Igor Šćekić 85c6f13c5a Merge pull request #54 from Kilo-Org/add-session-sync 2026-01-29 18:49:29 +01:00
Igor Šćekić e99573595e chore: annotate files with kilocode_change markers 2026-01-29 18:38:33 +01:00
Marius c14ace5283 fix: update kilo theme colors to match official kilocode CLI theme (#66) 2026-01-29 16:12:33 +01:00
Marius fafd49e251 fix: prioritize Kilo Gateway models in search results (#64)
* fix: prioritize Kilo Gateway models in search results

* fix: use stable partition to preserve fuzzysort ranking
2026-01-29 15:36:20 +01:00
Catriel Müller a42e1a7f90 feat: legacy cli auth migration (#63) 2026-01-29 14:18:06 +01:00
Suresh Kumar Sivasankaran 356be1768f Handle kilo tips (#60)
Co-authored-by: Suresh Sivasankaran <suresh.sivasankaran@epilot.cloud>
2026-01-29 14:14:28 +01:00
Igor Šćekić 1bb41afc72 refactor(share): extract ingest queue into module
Move per-session debounce/retry ingest logic into a reusable IngestQueue
helper and wire ShareNext to use it, including an auth error callback to
clear cached credentials. Add test coverage for coalescing, throttling,
retry/backoff, and non-retryable failures.
2026-01-29 14:10:10 +01:00
Igor Šćekić a7910b4d92 fix(cli): allow empty messages array in import response 2026-01-29 13:17:09 +01:00
Igor Šćekić 452a88ec8d refactor(share): remove legacy Share sync module
Drop Share.init() from bootstrap and delete the old Share
implementation now superseded by ShareNext.
2026-01-29 13:06:29 +01:00
Igor Šćekić f5b7b82d6d fix(share): encode session id in share/unshare urls 2026-01-29 12:59:43 +01:00
Igor Šćekić ecc2b29824 fix(cli): validate import response messages array 2026-01-29 12:39:30 +01:00
Igor Šćekić 81f69b4f04 fix(share): add retry/backoff to session sync flush
Coalesce ingest updates with a per-session due time and schedule flushes
to respect active backoff windows.

Retry transient failures (network, 429, 5xx, etc.) with capped exponential
backoff and a small retry budget, while avoiding overwriting newer queued
updates during in-flight retries.
2026-01-29 12:26:53 +01:00
Igor Šćekić b81323b062 fix(share): block share/unshare when ingest disabled
Add ingest-disabled guardrails to share and unshare, and harden
session removal by encoding the session id and logging network/HTTP
failures instead of throwing.
2026-01-29 12:08:28 +01:00
Igor Šćekić f3e5c7eebc fix(cli): encode session id in import fetch url 2026-01-29 12:08:07 +01:00
Catriel Müller 01a141ebba refactor: rename plugin 2026-01-29 11:53:34 +01:00
Igor Šćekić 18c2977815 Merge branch 'dev' into add-session-sync 2026-01-29 11:50:40 +01:00
Igor Šćekić b3d2673499 fix(share): avoid caching auth on network failures
Skip caching when the auth request fails without a response so
subsequent calls can retry instead of persisting an invalid state.
2026-01-29 11:50:30 +01:00
Catriel Müller 454604333d refactor: disable auto upgrade 2026-01-29 11:39:49 +01:00
Igor Šćekić 7067554978 feat(share): allow disabling session ingest
Add `KILO_DISABLE_SESSION_INGEST` to skip session ingest initialization.
Also cache the ingest client briefly to reduce repeated auth/token checks and
surface clearer errors when session creation requests fail.
2026-01-29 11:27:03 +01:00
Igor Šćekić 7fff59fa47 fix(cli): validate and parse kilo session URLs safely 2026-01-29 11:23:20 +01:00
Igor Šćekić 1b75836d8a fix(share): remove disabled guard from getClient 2026-01-29 11:15:39 +01:00
Igor Šćekić ed19d4872c fix(share): skip session sync when kilo token is invalid
Validate the kilo API token against the user endpoint before syncing and
cache auth validity per token to avoid repeated checks.
2026-01-29 11:12:20 +01:00
Igor Šćekić 3c01ef8bc6 Merge branch 'dev' into add-session-sync 2026-01-28 18:33:34 +01:00
Igor Šćekić 282e3ba4ae perf(share): debounce session sync and retry on failure
Coalesce frequent session updates into a per-session debounce queue with
stable entity keys to reduce redundant POSTs. Improve resilience by
handling async init/full sync errors, validating responses, and requeueing
failed batches without overwriting newer updates.
2026-01-28 18:31:47 +01:00
Catriel Müller 2aba4349a0 Test Fix (#55)
* refactor: update model names

* refactor: fix test matrix
2026-01-28 17:52:05 +01:00