Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
506 commits
Select commit Hold shift + click to select a range
3151e22
fix(core): harden model selection edges (#30987)
kitlangton Jun 5, 2026
ecdfcd9
fix(tui): show current location in working copies; order by created; …
jlongster Jun 5, 2026
a7bd1cd
chore: generate
opencode-agent[bot] Jun 5, 2026
beae729
feat(core): compact v2 session context (#30986)
kitlangton Jun 5, 2026
3bbf8c8
fix(opencode): terminate help output with newline (#30992)
rekram1-node Jun 5, 2026
ca9bf7a
fix(opencode): honor Bedrock Mantle config (#31001)
rekram1-node Jun 5, 2026
0bdd9aa
fix(core): preserve model request semantics (#30990)
kitlangton Jun 5, 2026
760d523
chore: generate
opencode-agent[bot] Jun 5, 2026
a9094fd
feat(core): bound v2 tool output (#30999)
kitlangton Jun 5, 2026
7ebc7ff
chore: generate
opencode-agent[bot] Jun 5, 2026
05d1104
fix(core): scope Vertex provider transforms (#31004)
kitlangton Jun 5, 2026
a57fb32
feat(core): expose session model switching (#31011)
kitlangton Jun 5, 2026
c814f84
fix(tui): update tool spacing before layout
kitlangton Jun 5, 2026
820c984
fix(core): recover v2 context overflow (#31005)
kitlangton Jun 5, 2026
025e1ac
fix(core): validate public session model switches (#31012)
kitlangton Jun 5, 2026
f591bf5
feat(tui): delete working copies from move dialog (#31017)
jlongster Jun 5, 2026
969bb90
chore: generate
opencode-agent[bot] Jun 5, 2026
499a8a4
fix(tui): bootstrap new project copies (#31019)
jlongster Jun 5, 2026
a645615
fix(opencode): limit generated project copy names (#31022)
jlongster Jun 5, 2026
d5b2056
fix(tui): inject reminder after moving session (#31027)
jlongster Jun 5, 2026
015e79f
fix(session): respect directory filter with workspaces (#30804)
rexdotsh Jun 5, 2026
e3a55db
feat(app): improve servers UI (#30961)
arvsrn Jun 5, 2026
93a58f5
chore: generate
opencode-agent[bot] Jun 5, 2026
24347f3
feat(app): updates to project avatar (#30964)
arvsrn Jun 5, 2026
9ed17da
chore: generate
opencode-agent[bot] Jun 5, 2026
1fd9c77
feat(app): sessions list improvements (#30941)
arvsrn Jun 5, 2026
3e704d0
chore: generate
opencode-agent[bot] Jun 5, 2026
7c6adcf
fix(core): scope v2 prompt cache by session (#31036)
opencode-agent[bot] Jun 5, 2026
b36b859
fix(stats): filter market share to go
adamdotdevin Jun 5, 2026
f750dea
fix(app): increase project session limit and add scrolling (#31035)
Hona Jun 5, 2026
83dca45
fix(core): make V2 reads media-aware and binary-safe (#31038)
kitlangton Jun 5, 2026
fa2b63f
chore: update nix node_modules hashes
opencode-agent[bot] Jun 6, 2026
3f0ef9b
feat(opencode): add search to auth logout command (#31053)
rekram1-node Jun 6, 2026
ba57718
feat(opencode): support non-interactive MCP add (#31054)
rekram1-node Jun 6, 2026
54f4974
feat(http-recorder): prepare public beta release (#31018)
kitlangton Jun 6, 2026
ceccde7
refactor(core): simplify filesystem mutation protocol (#31059)
kitlangton Jun 6, 2026
147169e
refactor(core): simplify filesystem read protocol (#31058)
kitlangton Jun 6, 2026
4ac4df4
chore: update nix node_modules hashes
opencode-agent[bot] Jun 6, 2026
09d9cf0
refactor(core): simplify search root protocol (#31060)
kitlangton Jun 6, 2026
bd7eb06
feat: desktop v2 everything WSL (#23407)
Hona Jun 6, 2026
1399323
chore: generate
opencode-agent[bot] Jun 6, 2026
747b8da
fix(core): bound prompt cache session keys (#31062)
kitlangton Jun 6, 2026
4814ab3
fix(core): enforce V2 tool permissions (#31061)
kitlangton Jun 6, 2026
7d3d80f
feat(opencode): fff search tools (#27802)
dmtrKovalenko Jun 6, 2026
77963d8
chore: generate
opencode-agent[bot] Jun 6, 2026
4519a1d
chore: update nix node_modules hashes
opencode-agent[bot] Jun 6, 2026
b9131aa
fix: background agent prompting, lets kill this sleep behavior oml (#…
rekram1-node Jun 6, 2026
0875203
test: fix tool test (#31163)
rekram1-node Jun 6, 2026
06d7840
docs: fix MCP header interpolation example to {env:VAR} (#31078)
fancive Jun 6, 2026
effd27b
chore(http-recorder): disable release automation (#31160)
kitlangton Jun 7, 2026
660a00d
refactor(core): unify v2 tool architecture (#31168)
kitlangton Jun 7, 2026
807c804
fix(core): use static tool type imports (#31170)
kitlangton Jun 7, 2026
12acb9a
docs(v2): update permission rule naming (#31167)
kitlangton Jun 7, 2026
10d1e04
fix(core): isolate image normalization (#31165)
kitlangton Jun 7, 2026
48c26fa
fix(test): release Windows search handles (#31172)
kitlangton Jun 7, 2026
eb9a683
fix(core): harden unified tool runtime (#31171)
kitlangton Jun 7, 2026
1025540
test(core): cover managed output read permissions (#31166)
kitlangton Jun 7, 2026
53ff1b5
fix(core): preserve session failure causes
kitlangton Jun 7, 2026
fe0c4f8
refactor(server): canonicalize service API (#31049)
thdxr Jun 7, 2026
155e1f2
chore: generate
opencode-agent[bot] Jun 7, 2026
31c099b
chore: update nix node_modules hashes
opencode-agent[bot] Jun 7, 2026
f20655b
fix(tui): sort connect providers alphabetically (#30891)
robertDouglass Jun 7, 2026
9b4d5b0
feat(desktop): make updates persistent and responsive (#31191)
Hona Jun 7, 2026
7a2c49e
chore: generate
opencode-agent[bot] Jun 7, 2026
106f8e9
refactor(tui): extract standalone package (#31193)
thdxr Jun 7, 2026
21a644f
chore: generate
opencode-agent[bot] Jun 7, 2026
f240497
chore: update nix node_modules hashes
opencode-agent[bot] Jun 7, 2026
a29deb1
fix(app): refresh directory MCP status (#31194)
Hona Jun 7, 2026
2181472
feat(desktop): open attachments in active project (#31192)
Hona Jun 7, 2026
472b331
chore: generate
opencode-agent[bot] Jun 7, 2026
2006259
fix(desktop): style home session scrollbar (#31202)
Hona Jun 7, 2026
e82542b
fix(desktop): disable hidden agent cycling (#31207)
Hona Jun 7, 2026
233427f
test(core): cover skill directory output (#31263)
rekram1-node Jun 7, 2026
aacdb34
fix(opencode): avoid duplicate skill catalog (#31269)
rekram1-node Jun 7, 2026
8ff4013
chore(opencode): update MCP SDK to 1.29.0 (#31268)
rekram1-node Jun 7, 2026
c495635
chore: generate
opencode-agent[bot] Jun 7, 2026
914a643
chore: update nix node_modules hashes
opencode-agent[bot] Jun 7, 2026
07808be
run: make minimal mode more minimal (#31227)
simonklee Jun 7, 2026
3867fa2
chore: generate
opencode-agent[bot] Jun 7, 2026
b1d14ac
chore: update web and desktop code owners (#31289)
Hona Jun 8, 2026
65a3f7f
fix(desktop): few WSL bugs (#31095)
neriousy Jun 8, 2026
4d09a71
chore: generate
opencode-agent[bot] Jun 8, 2026
b5cb9aa
fix(opencode): respect MCP server capabilities (#31271)
rekram1-node Jun 8, 2026
4863aed
console: update email
fwang Jun 8, 2026
79ea379
zen: fix
fwang Jun 8, 2026
685a894
fix(opencode): include acp pending tool input (#31321)
nexxeln Jun 8, 2026
bea56fe
fix(lsp): resolve JDTLS root to topmost pom.xml in Java Maven multi-m…
areyouok Jun 8, 2026
d46af9c
chore: generate
opencode-agent[bot] Jun 8, 2026
0050134
fix(session): merge per-call tool rules into session permission (#30529)
remorses Jun 8, 2026
1772e8e
docs(go): update MiniMax M3 pricing (#31350)
MrMushrooooom Jun 8, 2026
b1a6c40
fix: speed up fff file search (#31366)
nexxeln Jun 8, 2026
89e371c
chore: generate
opencode-agent[bot] Jun 8, 2026
f116a55
fix(stats): show new for leaderboard deltas
adamdotdevin Jun 8, 2026
4119051
fix: stabilize fff file results (#31369)
nexxeln Jun 8, 2026
ea5f976
chore: generate
opencode-agent[bot] Jun 8, 2026
89e2a23
fix(core): restore npm proxy agent patch (#31373)
rekram1-node Jun 8, 2026
f3f59db
chore: update nix node_modules hashes
opencode-agent[bot] Jun 8, 2026
31d2fec
chore: upgrade OpenTUI to v0.3.4 (#31326)
simonklee Jun 8, 2026
9654412
chore: update nix node_modules hashes
opencode-agent[bot] Jun 8, 2026
b34d924
fix(core): disable fff trace logs (#31380)
nexxeln Jun 8, 2026
f43209b
fix(session): avoid sticky prompt tool overrides (#31394)
nexxeln Jun 8, 2026
0a7cb20
fix(opencode): await run event loop (#31389)
rekram1-node Jun 8, 2026
c06ad7c
refactor(core): replace legacy logger with Effect logging (#31310)
thdxr Jun 8, 2026
5376661
chore: generate
opencode-agent[bot] Jun 8, 2026
fc52c5a
fix(tui): trim select footer action highlight (#31411)
jlongster Jun 8, 2026
6e84142
fix(opencode): support MiniMax M3 thinking toggle (#31426)
rekram1-node Jun 8, 2026
a86ecf3
fix: adjust item id stripping to happen prior to request signing (#31…
rekram1-node Jun 8, 2026
161247c
fix(opencode): generate reasoning variants for all OpenRouter models.…
AnthonyMLau Jun 9, 2026
f565ff3
feat(app): add draft tab support to tabs store (#31343)
Brendonovich Jun 9, 2026
277ecc5
chore: generate
opencode-agent[bot] Jun 9, 2026
0efc334
fix(opencode): paginate MCP catalogs (#31442)
rekram1-node Jun 9, 2026
79cff28
fix(opencode): pass abort signal to MCP tool calls (#31455)
rekram1-node Jun 9, 2026
1a08ee7
feat(app): draft prompt state (#31452)
Brendonovich Jun 9, 2026
50c9d52
chore: generate
opencode-agent[bot] Jun 9, 2026
384a8f5
feat(app): tabs help button (#31454)
Brendonovich Jun 9, 2026
ab701d2
feat: add "reasoning" as interleaved field option for vLLM providers …
delta9000 Jun 9, 2026
5372c63
fix(app): clip rounded session panels (#31462)
Hona Jun 9, 2026
2ababc8
core: fix idle CPU use in file logger (#31478)
simonklee Jun 9, 2026
671d193
docs: add uninstall troubleshooting steps (#31424)
opencode-agent[bot] Jun 9, 2026
7c1e61a
leave a breadcrumb comment about batchWindow zero (#31508)
kommander Jun 9, 2026
b4a6419
chore: stats -> data
adamdotdevin Jun 9, 2026
960eace
test(core): avoid Windows worker close race (#31532)
rekram1-node Jun 9, 2026
3752218
refactor(tui): centralize application exit (#31524)
thdxr Jun 9, 2026
8415ff5
chore: generate
opencode-agent[bot] Jun 9, 2026
0bb677c
feat(opencode): configure Cohere North model (#31536)
rekram1-node Jun 9, 2026
6566ede
refactor(core): consolidate references (#31539)
thdxr Jun 9, 2026
ffcb45d
feat(tui): show project copy in session list (#31421)
jlongster Jun 9, 2026
ada5b31
chore: generate
opencode-agent[bot] Jun 9, 2026
f1c31f4
fix(stats): use data branding assets
adamdotdevin Jun 9, 2026
db9391e
drop citation_options from cohere (#31543)
rekram1-node Jun 9, 2026
531eebb
zen: add north mini code model
fwang Jun 9, 2026
d68397b
fix(data): timestamp formatting
adamdotdevin Jun 9, 2026
c4bc902
fix(opencode): support Claude Fable reasoning (#31546)
rekram1-node Jun 9, 2026
0777cf1
fix(mcp): log actionable connection statuses (#31544)
rekram1-node Jun 9, 2026
132ef57
refactor(core): simplify location filesystem (#31545)
thdxr Jun 9, 2026
cc52dc3
chore: generate
opencode-agent[bot] Jun 9, 2026
1daf535
chore: update nix node_modules hashes
opencode-agent[bot] Jun 9, 2026
600e405
fix(opencode): restore effect error logging (#31551)
thdxr Jun 9, 2026
7a54a2c
chore: generate
opencode-agent[bot] Jun 9, 2026
07e5ea9
feat(opencode): add typed application layer graph (#31531)
jlongster Jun 9, 2026
9b8e356
zen: add claude fable 5
fwang Jun 9, 2026
c939aa0
chore: generate
opencode-agent[bot] Jun 9, 2026
381eabb
refactor(mcp): simplify service helpers (#31549)
rekram1-node Jun 9, 2026
80c0b06
feat: add X-Session-Id header for proxy cache routing affinity (#31511)
songchaow Jun 9, 2026
bc42187
zen: update email
fwang Jun 9, 2026
1cc94bb
fix(desktop): update Electron stack and panel layout (#31571)
Hona Jun 9, 2026
215fb39
chore: generate
opencode-agent[bot] Jun 9, 2026
ce4e658
chore: update nix node_modules hashes
opencode-agent[bot] Jun 9, 2026
a0409e6
refactor(core): unify filesystem search service (#31566)
thdxr Jun 10, 2026
6ae6f0f
chore: generate
opencode-agent[bot] Jun 10, 2026
1d46b5c
chore: update nix node_modules hashes
opencode-agent[bot] Jun 10, 2026
c4aa049
fix(tui): let gutter replace current marker (#31586)
thdxr Jun 10, 2026
4597c68
fix(core): prefer shorter paths for tied search scores
thdxr Jun 10, 2026
be8fee5
chore: generate
opencode-agent[bot] Jun 10, 2026
7859182
fix(core): expose partial filesystem scan results
thdxr Jun 10, 2026
4ae468f
chore: generate
opencode-agent[bot] Jun 10, 2026
e9e2612
chore: Update fff to 0.9.4 (#31583)
dmtrKovalenko Jun 10, 2026
e9106ef
chore: update nix node_modules hashes
opencode-agent[bot] Jun 10, 2026
6c6ed68
sync release versions for v1.17.0
Jun 10, 2026
0fc33e2
feat(app): /new-session route for new design (#31457)
Brendonovich Jun 10, 2026
8a2cfc0
feat(core): add project reference guidance (#31601)
thdxr Jun 10, 2026
9107336
fix(mcp): make client creation failure-safe (#31595)
rekram1-node Jun 10, 2026
954d618
fix(opencode): support Anthropic fallback responses (#31611)
rekram1-node Jun 10, 2026
174ab58
fix(mcp): apply timeouts to prompts and resources (#31612)
rekram1-node Jun 10, 2026
5e342f7
chore: update nix node_modules hashes
opencode-agent[bot] Jun 10, 2026
e0449c0
fix(desktop): restore macOS auto-updates (#31621)
Hona Jun 10, 2026
8264191
chore: update nix node_modules hashes
opencode-agent[bot] Jun 10, 2026
97e713e
zen: deepseek v4 pro
fwang Jun 10, 2026
90fb32b
fix(core): accept deprecated reference config key (#31659)
Hona Jun 10, 2026
2cf68f3
chore: generate
opencode-agent[bot] Jun 10, 2026
4c9abff
sync release versions for v1.17.1
Jun 10, 2026
5863e12
put fff behind flag
thdxr Jun 10, 2026
c9e2a38
ci: change model from gpt-5.4-nano to gpt-5.4-mini (#31695)
rekram1-node Jun 10, 2026
1dad38d
fix(core): do not gate fff on initial scan
thdxr Jun 10, 2026
538cfaf
feat(core): enable fff by default
thdxr Jun 10, 2026
e4300e9
fix(core): disable fff by default on windows
thdxr Jun 10, 2026
3ad6923
fix(opencode): let subagents use their own permissions (#31696)
rekram1-node Jun 10, 2026
02608a4
fix: recover from expired enterprise auth on remote config load (#31661)
Ayushlm10 Jun 10, 2026
649618c
fix(app): restore device attachment picker (#31707)
rexdotsh Jun 10, 2026
e1073e5
chore: generate
opencode-agent[bot] Jun 10, 2026
2e0f88d
fix(desktop): restore linux launcher identity (#31709)
neriousy Jun 10, 2026
2c65273
sync release versions for v1.17.2
Jun 10, 2026
14ec7ed
fix fff disabling logic
thdxr Jun 10, 2026
bed780f
chore: bump gitlab-ai-provider to 6.9.1 (#31728)
vglafirov Jun 10, 2026
5b54203
chore: update nix node_modules hashes
opencode-agent[bot] Jun 10, 2026
8688ed7
feat(web): data link
adamdotdevin Jun 10, 2026
936363e
sync release versions for v1.17.3
Jun 10, 2026
bb82aab
update opencode.jsonc
thdxr Jun 10, 2026
722f4dd
chore: pin gitlab-ai-provider to 6.9.0 (#31741)
vglafirov Jun 10, 2026
f43b0d3
fix(mcp): apply timeouts to catalog requests (#31618)
rekram1-node Jun 10, 2026
c51a158
tui: fix session list search filtering (#31748)
simonklee Jun 10, 2026
07b983e
feat(mcp): support server log notifications (#31752)
rekram1-node Jun 10, 2026
6e2bcaf
chore: update nix node_modules hashes
opencode-agent[bot] Jun 10, 2026
eb70b61
test(opencode): simplify test registry layer wiring (#31761)
jlongster Jun 10, 2026
cc22646
docs: add branch naming guidance
thdxr Jun 10, 2026
51891d5
fix(snapshot): reuse source git objects to avoid re-hashing huge repo…
dmtrKovalenko Jun 11, 2026
20bf18f
test(opencode): simplify share layer wiring (#31811)
jlongster Jun 11, 2026
ff967e5
chore: generate
opencode-agent[bot] Jun 11, 2026
8bf0675
feat(server): add v2 session API endpoints (#31822)
thdxr Jun 11, 2026
38536cf
test(opencode): simplify processor layer wiring (#31823)
jlongster Jun 11, 2026
69623c2
chore: generate
opencode-agent[bot] Jun 11, 2026
47a4560
refactor(tui): replace v2 sync with data context (#31826)
thdxr Jun 11, 2026
51b10b1
chore: generate
opencode-agent[bot] Jun 11, 2026
bf05e8a
fix(mcp): preserve headers during auth and debug (#31802)
rekram1-node Jun 11, 2026
dac0dd5
feat(core): add connector authentication (#31837)
thdxr Jun 11, 2026
710e408
chore: generate
opencode-agent[bot] Jun 11, 2026
8bd249d
upgrade opentui-spinner (#31561)
kommander Jun 11, 2026
318dbe9
chore: update nix node_modules hashes
opencode-agent[bot] Jun 11, 2026
92c70c9
fix(tui): preserve exit epilogue during scoped shutdown (#31805)
tobwen Jun 11, 2026
2bde20c
test(opencode): simplify snapshot race layer wiring (#31827)
jlongster Jun 11, 2026
567d6ed
fix(tui): restore legacy sync consumers (#31908)
thdxr Jun 11, 2026
31b233e
chore: generate
opencode-agent[bot] Jun 11, 2026
31c5454
refactor(server): serve raw filesystem content (#31911)
thdxr Jun 11, 2026
6dd4d14
chore: generate
opencode-agent[bot] Jun 11, 2026
04e5ca9
chore: bump gitlab-ai-provider to 6.9.3 and opencode-gitlab-auth to 2…
vglafirov Jun 11, 2026
a1dee8b
chore: update nix node_modules hashes
opencode-agent[bot] Jun 11, 2026
e2527db
fix(opencode): surface content-filter finish reason as visible error …
kkdawkins Jun 11, 2026
2e71292
fix(gemini): prevent gemini incompatibility with some tools (#31877)
Killusions Jun 11, 2026
a150424
fix(tui): show terminal tool failure labels (#31934)
rekram1-node Jun 11, 2026
84f94e6
chore: generate
opencode-agent[bot] Jun 11, 2026
e07e420
fix(stats): align deep route metadata with /data (#31930)
adamdotdevin Jun 11, 2026
9eb07ab
chore: generate
opencode-agent[bot] Jun 11, 2026
ca8db31
fix(tui): show prompt submission errors (#31949)
rekram1-node Jun 11, 2026
7e7ad37
feat(opencode): support cwd on local MCP servers (#30676)
Grantmartin2002 Jun 11, 2026
cd2e6f0
chore: generate
opencode-agent[bot] Jun 11, 2026
bace18c
zen: make payment method off_session
fwang Jun 11, 2026
03a2504
fix(tui): shorten move session description (#31967)
iamdavidhill Jun 12, 2026
abda351
release: v1.17.4
Jun 12, 2026
2770028
refactor: kilo compat for v1.16.2
johnnyeric Jul 7, 2026
5d2f888
chore(opencode): record v1.16.2 compatibility ancestry
johnnyeric Jul 13, 2026
2855ebb
refactor: kilo compat for v1.17.4
johnnyeric Jul 13, 2026
fe8e187
merge: record upstream v1.17.4
johnnyeric Jul 13, 2026
68b5957
resolve merge conflicts
johnnyeric Jul 14, 2026
4e2d04a
fix(opencode): complete v1.17.4 compatibility
johnnyeric Jul 14, 2026
d093f81
chore: merge latest Kilo main
johnnyeric Jul 14, 2026
bfcb911
fix: address upstream merge review findings
johnnyeric Jul 14, 2026
e2d6614
fix: address upstream merge bot and CI findings
johnnyeric Jul 14, 2026
2d92d8d
chore: merge latest Kilo main
johnnyeric Jul 15, 2026
790affb
fix: address v1.17.4 compatibility review
johnnyeric Jul 15, 2026
e6d0427
fix: address third-pass upstream merge review
johnnyeric Jul 15, 2026
a87ddec
Merge remote-tracking branch 'origin/main' into johnnyeric/kilo-openc…
johnnyeric Jul 16, 2026
627be20
Merge remote-tracking branch 'origin/main' into johnnyeric/kilo-openc…
johnnyeric Jul 16, 2026
03a14d1
chore(ci): clarify Kilo test workflow markers
johnnyeric Jul 16, 2026
983af17
Merge remote-tracking branch 'origin/main' into johnnyeric/kilo-openc…
johnnyeric Jul 16, 2026
d4fc1f0
chore(ci): clarify Kilo test workflow markers
johnnyeric Jul 16, 2026
1872dbc
fix(opencode): address fourth-pass upstream review
johnnyeric Jul 16, 2026
1ac3023
Merge remote-tracking branch 'origin/main' into johnnyeric/kilo-openc…
johnnyeric Jul 16, 2026
77fcd32
chore: reconcile remote PR ancestry
johnnyeric Jul 16, 2026
8861ec1
Merge remote-tracking branch 'origin/main' into johnnyeric/kilo-openc…
johnnyeric Jul 17, 2026
3e0d20c
Merge remote-tracking branch 'origin/main' into johnnyeric/kilo-openc…
johnnyeric Jul 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 2 additions & 4 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
# web + desktop packages
packages/app/ @adamdotdevin
packages/tauri/ @adamdotdevin
packages/desktop/src-tauri/ @brendonovich
packages/desktop/ @adamdotdevin
packages/app/ @Hona @Brendonovich
packages/desktop/ @Hona @Brendonovich
57 changes: 41 additions & 16 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ name: test
on:
push:
branches:
- main
- main # kilocode_change
pull_request:
workflow_dispatch:

concurrency:
# Keep every run on main so cancelled checks do not pollute the default branch
# Keep every run on main so cancelled checks do not pollute the default branch # kilocode_change
# commit history. PRs and other branches still share a group and cancel stale runs.
group: ${{ case(github.ref == 'refs/heads/main', format('{0}-{1}', github.workflow, github.run_id), format('{0}-{1}', github.workflow, github.event.pull_request.number || github.ref)) }}
group: ${{ case(github.ref == 'refs/heads/main', format('{0}-{1}', github.workflow, github.run_id), format('{0}-{1}', github.workflow, github.event.pull_request.number || github.ref)) }} # kilocode_change
cancel-in-progress: true

permissions:
Expand Down Expand Up @@ -65,26 +65,31 @@ jobs:
fi
echo 'general=true' >> "$GITHUB_OUTPUT"
echo 'settings=[{"os":"linux","index":1,"total":2,"host":"blacksmith-4vcpu-ubuntu-2404","run":true,"packages":true},{"os":"linux","index":2,"total":2,"host":"blacksmith-4vcpu-ubuntu-2404","run":true,"packages":false},{"os":"macos","index":1,"total":1,"host":"macos-15","run":true,"packages":true},{"os":"windows","index":1,"total":4,"host":"blacksmith-4vcpu-windows-2025","run":true,"packages":true},{"os":"windows","index":2,"total":4,"host":"blacksmith-4vcpu-windows-2025","run":true,"packages":false},{"os":"windows","index":3,"total":4,"host":"blacksmith-4vcpu-windows-2025","run":true,"packages":false},{"os":"windows","index":4,"total":4,"host":"blacksmith-4vcpu-windows-2025","run":true,"packages":false}]' >> "$GITHUB_OUTPUT"
# kilocode_change end

unit:
# kilocode_change start
name: ${{ !matrix.settings.run && 'unit (unchanged)' || matrix.settings.total > 1 && format('unit ({0}, {1}/{2})', matrix.settings.os, matrix.settings.index, matrix.settings.total) || format('unit ({0})', matrix.settings.os) }}
needs: changes
strategy: # kilocode_change
# kilocode_change end
strategy:
fail-fast: false
matrix:
settings: ${{ fromJSON(needs.changes.outputs.settings) }}
settings: ${{ fromJSON(needs.changes.outputs.settings) }} # kilocode_change
runs-on: ${{ matrix.settings.host }}
timeout-minutes: 45 # kilocode_change
defaults:
run:
shell: bash
steps:
# kilocode_change start
- name: Skip unchanged general unit tests
if: ${{ !matrix.settings.run }}
run: echo "Only isolated product, documentation, or metadata files changed; general unit tests are unchanged."
# kilocode_change end

- name: Checkout repository
if: matrix.settings.run
if: matrix.settings.run # kilocode_change
uses: actions/checkout@v6 # kilocode_change
with:
token: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -94,10 +99,12 @@ jobs:
if: matrix.settings.run
id: setup-node
continue-on-error: ${{ runner.os == 'Windows' }}
uses: actions/setup-node@v6 # kilocode_change
uses: actions/setup-node@v6
with:
node-version: "24"
# kilocode_change end

# kilocode_change start
- name: Retry Setup Node on Windows
if: matrix.settings.run && runner.os == 'Windows' && steps.setup-node.outcome == 'failure'
uses: actions/setup-node@v6
Expand All @@ -106,7 +113,7 @@ jobs:
# kilocode_change end

- name: Setup Bun
if: matrix.settings.run
if: matrix.settings.run # kilocode_change
uses: ./.github/actions/setup-bun

# kilocode_change start
Expand All @@ -115,35 +122,51 @@ jobs:
uses: ./.github/actions/setup-linux-sandbox
# kilocode_change end
- name: Configure git identity
if: matrix.settings.run
if: matrix.settings.run # kilocode_change
# kilocode_change start
run: |
git config --global user.email "kilo-maintainer[bot]@users.noreply.github.com"
git config --global user.name "kilo-maintainer[bot]"
# kilocode_change end

- name: Cache Turbo
if: matrix.settings.run
if: matrix.settings.run # kilocode_change
uses: actions/cache@v5 # kilocode_change
with:
path: .turbo/cache # kilocode_change
key: turbo-${{ runner.os }}-${{ hashFiles('turbo.json', 'bun.lock') }}-${{ matrix.settings.os }}-${{ matrix.settings.index }}-${{ github.sha }}
key: turbo-${{ runner.os }}-${{ hashFiles('turbo.json', 'bun.lock') }}-${{ matrix.settings.os }}-${{ matrix.settings.index }}-${{ github.sha }} # kilocode_change
# kilocode_change start
restore-keys: |
turbo-${{ runner.os }}-${{ hashFiles('turbo.json', 'bun.lock') }}-${{ matrix.settings.os }}-${{ matrix.settings.index }}-
turbo-${{ runner.os }}-${{ hashFiles('turbo.json', 'bun.lock') }}-
turbo-${{ runner.os }}-
# kilocode_change end

# kilocode_change start - test non-CLI packages separately from sharded CLI tests
- name: Run non-CLI unit tests
if: matrix.settings.run && matrix.settings.packages
run: bun turbo test:ci --filter='!@kilocode/cli' --filter='!@kilocode/kilo-jetbrains'
run: bun turbo test:ci --output-logs=errors-only --log-order=grouped --log-prefix=task --filter='!@kilocode/cli' --filter='!@kilocode/kilo-jetbrains'
# kilocode_change end

# kilocode_change start - ensure the Darwin profile cannot suppress its own validation
- name: Validate Darwin CLI test profile
if: matrix.settings.run && matrix.settings.os == 'macos'
working-directory: packages/opencode
run: bun test test/kilocode/test-profile.test.ts
# kilocode_change end

# kilocode_change start - run Kilo CLI tests through platform-specific shards
- name: Run CLI unit tests
if: matrix.settings.run
run: bun turbo test:ci --filter='@kilocode/cli'
run: bun turbo test:ci --output-logs=errors-only --log-order=grouped --log-prefix=task --filter='@kilocode/cli'
env:
KILO_EXPERIMENTAL_DISABLE_FILEWATCHER: ${{ runner.os == 'Windows' && 'true' || 'false' }}
KILO_TEST_PROFILE: ${{ matrix.settings.os == 'macos' && 'darwin' || '' }}
KILO_TEST_SHARD: ${{ format('{0}/{1}', matrix.settings.index, matrix.settings.total) }}
# kilocode_change end

- name: Publish unit reports # kilocode_change
# kilocode_change start
- name: Publish unit reports
if: always() && matrix.settings.run
uses: mikepenz/action-junit-report@bccf2e31636835cf0874589931c4116687171386 # v6.4.0
with:
Expand All @@ -155,14 +178,14 @@ jobs:

- name: Upload unit artifacts
if: always() && matrix.settings.run
uses: actions/upload-artifact@v7 # kilocode_change
uses: actions/upload-artifact@v7
with:
name: unit-${{ matrix.settings.os }}-${{ matrix.settings.index }}-${{ github.run_attempt }}
include-hidden-files: true
if-no-files-found: ignore
retention-days: 7
path: packages/*/.artifacts/unit/junit.xml
# kilocode_change end
# kilocode_change end

# kilocode_change start
httpapi:
Expand Down Expand Up @@ -225,7 +248,9 @@ jobs:
run: |
echo "unit=${{ needs.unit.result }}"
test "${{ needs.unit.result }}" = "success"
# kilocode_change end

# kilocode_change start
required:
name: test (linux)
runs-on: blacksmith-4vcpu-ubuntu-2404
Expand Down
2 changes: 1 addition & 1 deletion .opencode-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v1.16.2
v1.17.4
7 changes: 5 additions & 2 deletions .opencode/opencode.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,11 @@
"packages/opencode/migration/*": "deny",
},
},
"reference": {
"effect": "github.com/Effect-TS/effect-smol",
"references": {
"effect": {
"repository": "github.com/Effect-TS/effect-smol",
"description": "Use for Effect v4 and effect-smol implementation details",
},
},
"mcp": {},
"tools": {
Expand Down
26 changes: 26 additions & 0 deletions CONTEXT.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,19 @@ An expected temporary inability to observe a **Context Source** value; the runti
**Safe Provider-Turn Boundary**:
The point immediately before a provider call, after durable input promotion and any required tool settlement, where context changes may be admitted chronologically.

**Model Tool Output**:
The bounded projection of a Core-executed tool result persisted in Session history and replayed to the model. A tool may shape this projection semantically, but the Tool Registry enforces the final size limit.

**Managed Tool Output File**:
A temporary file created under Kilo's shared tool-output directory to retain complete output that was too large for Session history.

**Model Request Options**:
Provider-semantic model settings selected from the Catalog and active Session variant before the LLM protocol adapter encodes them for a provider request.
_Avoid_: Request body, wire options

**Generation Controls**:
Provider-neutral sampling and output controls, partitioned from provider semantics and compatibility wire fields when model metadata enters the Catalog.

## Relationships

- A **System Context** is an opaque carrier composed from zero or more **Context Sources**.
Expand Down Expand Up @@ -84,9 +97,22 @@ The point immediately before a provider call, after durable input promotion and
- A **Baseline System Context** durably preserves the exact joined text used for the active provider-cache prefix.
- Compaction or a model/provider switch starts a new **Context Epoch** because the baseline can be replaced without preserving the prior provider cache.
- A model/provider switch always starts a new **Context Epoch** while preserving chronological conversation history.
- **Model Request Options** remain provider-semantic through Catalog resolution. The Session runner maps them into the LLM package's provider-option namespace; the selected protocol adapter alone owns provider wire encoding.
- **Generation Controls**, protocol-semantic **Model Request Options**, and compatibility request body fields are separate Catalog domains. A shared ingestion adapter partitions legacy and models.dev AI-SDK-shaped options before routing.
- A **Mid-Conversation System Message** lowers to the provider's native chronological instruction role when supported and to a wrapped chronological fallback otherwise.
- When the effective aggregate instruction set changes, its **Mid-Conversation System Message** includes the complete current ordered set and supersedes the prior aggregate value; when no ambient instructions remain, the message states that previously loaded instructions no longer apply.
- Ambient project instruction discovery honors `KILO_DISABLE_PROJECT_CONFIG`; global instructions remain eligible.
- Oversized textual **Model Tool Output** retains a bounded preview in Session history while its complete text moves to managed tool-output storage. Arbitrary structured-result size is a separate concern.
- One tool settlement receives one aggregate textual limit, using the configured maximum lines or UTF-8 bytes, whichever is reached first. The limit is provider-independent; token pressure belongs to context assembly and compaction.
- Generic truncation preserves the beginning and end of textual output. Tools may apply a more meaningful strategy before the Tool Registry enforces the final limit.
- A truncated **Model Tool Output** identifies its complete text both in the bounded model-visible preview and as a typed managed output path. Managed output paths do not modify the tool's validated structured result.
- A **Managed Tool Output File** is temporary and may expire after its retention period. The bounded **Model Tool Output**, not the file, is the durable replayable record.
- Failure to retain a **Managed Tool Output File** does not change a successful tool operation into a failed one. The Session records an explicitly lossy bounded output without a path, while operators receive diagnostics for the storage failure.
- Once a tool operation succeeds, bounding its **Model Tool Output** and publishing its one durable settlement form an interruption-safe completion region. Raw oversized success is never published before a later correction.
- When a structured-only result would exceed the **Model Tool Output** limit, its validated structured value remains unchanged for Session consumers while model replay uses a bounded textual JSON preview and optional managed output path.
- Existing tool-managed output paths survive generic bounding. A fallback file retains exactly the complete projected text received by the Tool Registry and never claims to reconstruct output already discarded by tool-specific shaping.
- **Managed Tool Output Files** use globally unique names in one shared flat directory. Their absolute paths are readable and searchable by ordinary tools; other absolute paths remain outside Location-scoped filesystem authority.
- Provider-executed tool results remain provider-native transcript facts outside generic Tool Registry bounding. Their context control requires provider-aware pruning or compaction because some providers require exact structured round-trip payloads.

## Example dialogue

Expand Down
Loading
Loading