Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
774 commits
Select commit Hold shift + click to select a range
96d8462
fix(core): keep project labels stable across clones (#45735)
kitlangton Aug 27, 2026
8381153
fix(tui): respect selection copy modes (#45758)
simonklee Aug 27, 2026
5d4ce14
fix(core): skip tracing streamed LLM deltas (#45761)
opencode-agent[bot] Aug 27, 2026
98e3fa9
test(core): budget real startup in session revert test (#45762)
kitlangton Aug 27, 2026
7d00767
refactor(core): simplify duplicate test layers (#45444)
kitlangton Aug 27, 2026
ace4249
refactor(core): name session runner test services (#45445)
kitlangton Aug 27, 2026
0440bd9
refactor(core): simplify Effect test setup (#45446)
kitlangton Aug 27, 2026
ba85531
refactor(core): remove redundant coordinator test scopes (#45451)
kitlangton Aug 27, 2026
0913967
refactor(core): isolate tool test fixture state (#45452)
kitlangton Aug 27, 2026
3288a12
fix(ai): safely replay unsigned Bedrock reasoning (#45765)
opencode-agent[bot] Aug 27, 2026
991a0d0
refactor(core): remove identity schema pipes (#45624)
kitlangton Aug 27, 2026
7fe8bf5
refactor(core): remove duplicate config failure (#45625)
kitlangton Aug 27, 2026
454ed81
fix(desktop): minify production bundles (#45770)
Hona Aug 27, 2026
0a7baaa
refactor(core): reuse shared record guard (#45643)
kitlangton Aug 27, 2026
a067c45
test(schema): target config color contract (#45626)
kitlangton Aug 27, 2026
bfb00cb
refactor(core): remove unused chat state (#45664)
kitlangton Aug 27, 2026
569a39c
refactor(core): preserve Copilot handler inference (#45668)
kitlangton Aug 27, 2026
38e4c97
refactor(core): import filesystem search schemas directly (#45684)
kitlangton Aug 27, 2026
fa7a1ca
chore: remove duplicate oxlint options (#45719)
kitlangton Aug 27, 2026
a438d34
chore: lint identity pipe callbacks (#45771)
kitlangton Aug 27, 2026
bdf2e84
feat(core): support Azure CLI authentication (#45086)
opencode-agent[bot] Aug 27, 2026
d432823
fix(deps): upgrade diff to 8.0.4 (#45772)
Hona Aug 27, 2026
6bbf2e3
refactor(core): parse MCP prompt arguments once (#45646)
kitlangton Aug 27, 2026
b4bd148
refactor(core): remove unused responses state (#45659)
kitlangton Aug 27, 2026
792f84b
refactor(core): reuse execute visibility predicate (#45699)
kitlangton Aug 27, 2026
4f6c4dd
test(core): guarantee execution scope cleanup (#45740)
kitlangton Aug 27, 2026
f0d5b5e
refactor(core): remove unused response stream state (#45742)
kitlangton Aug 27, 2026
b20748f
fix(cli): prevent repeated updates and npm cache growth (#45091)
opencode-agent[bot] Aug 27, 2026
498436f
chore(desktop): upgrade Electron to 42.10.1 (#45775)
Hona Aug 27, 2026
81e099a
fix(core): preserve benchmark directory argument (#45634)
kitlangton Aug 27, 2026
74f5317
docs(tui): complete session tabs story guidance (#45712)
kitlangton Aug 27, 2026
35231b4
refactor(core): use keyed MCP credential reads (#45708)
kitlangton Aug 27, 2026
02550b3
refactor(util): narrow layer visitor options (#45734)
kitlangton Aug 27, 2026
62d9aa9
refactor(core): delegate credential activation (#45692)
kitlangton Aug 27, 2026
84fa689
fix(desktop): preserve lazy Sentry loading (#45776)
Hona Aug 27, 2026
4681c73
fix(desktop): bundle selected main-process dependencies (#45774)
Hona Aug 27, 2026
59e7b32
refactor(core): extract instance module from location services (#45705)
kitlangton Aug 27, 2026
7477e21
fix(session-ui): upgrade DOMPurify and restore Mermaid rendering (#45…
Hona Aug 28, 2026
a2dcf2d
fix(core): wake sessions for recovered shell outcomes (#45781)
kitlangton Aug 28, 2026
89ca9fc
fix(core): complete supervisor flush when plugin activation fails (#4…
kitlangton Aug 28, 2026
4cecfe8
chore(desktop): remove stale native packaging (#45786)
Hona Aug 28, 2026
8f350df
chore(deps): remove unused frontend dependencies (#45779)
Hona Aug 28, 2026
a03a1dd
chore: upgrade opentui to 0.5.9 (#45785)
jlongster Aug 28, 2026
7b6b0f2
fix(core): cap provider retry-after delays at fifteen minutes (#45787)
rekram1-node Aug 28, 2026
d5be4cf
fix(core): share native model defaults with v1 config migration (#45760)
opencode-agent[bot] Aug 28, 2026
c0fa9af
fix(app): render local Markdown images through the server (#45780)
Hona Aug 28, 2026
aecea54
chore: update nix node_modules hashes
opencode-agent[bot] Aug 28, 2026
6881cff
chore(deps): refresh Vite and Electron Builder tooling (#45790)
Hona Aug 28, 2026
216af25
chore: update nix node_modules hashes
opencode-agent[bot] Aug 28, 2026
132ec56
chore(ui): refresh Kobalte and Solid primitives (#45794)
Hona Aug 28, 2026
0ce3214
chore(deps): upgrade Sentry and verify reporting (#45796)
Hona Aug 28, 2026
7111e71
fix(core): treat project paths as internal (#45799)
rekram1-node Aug 28, 2026
078522e
chore: update nix node_modules hashes
opencode-agent[bot] Aug 28, 2026
b92b84f
chore(deps): refresh markdown dependencies (#45793)
Hona Aug 28, 2026
2389111
chore: update nix node_modules hashes
opencode-agent[bot] Aug 28, 2026
88988b8
fix(core): preserve typed config test-layer errors (#45778)
kitlangton Aug 28, 2026
c5113ee
chore(desktop): trim external dependency archives (#45804)
Hona Aug 28, 2026
8ab08f7
refactor(core): remove infallible layer conversion (#45672)
kitlangton Aug 28, 2026
35d681a
test(core): make test sentinels effective (#45706)
kitlangton Aug 28, 2026
43c8690
docs(core): correct newtype decoding guidance (#45736)
kitlangton Aug 28, 2026
d34dd6c
refactor(core): type native PTY import explicitly (#45710)
kitlangton Aug 28, 2026
e6d656d
refactor(core): clarify PTY binary validation (#45715)
kitlangton Aug 28, 2026
e0bad10
test(core): exercise fsutil passthroughs (#45667)
kitlangton Aug 28, 2026
762291b
feat(core): durable session metadata at creation (#45805)
kitlangton Aug 28, 2026
04c9e01
refactor: normalize filesystem boundary imports (#45730)
kitlangton Aug 28, 2026
11aab20
test(core): remove dead test setup (#45669)
kitlangton Aug 28, 2026
fd77a72
test(core): align session test vocabulary (#45670)
kitlangton Aug 28, 2026
0c75b7b
feat(core): per-instance plugin input (#45732)
kitlangton Aug 28, 2026
09b0edd
refactor(core): compare plugin generations directly (#45728)
kitlangton Aug 28, 2026
1faba03
fix(core): normalize Windows tool paths (#45806)
rekram1-node Aug 28, 2026
2ce126e
test(core): simplify runner scenario fixtures (#45440)
kitlangton Aug 28, 2026
cbc3e63
refactor(core): simplify skill discovery validation (#45729)
kitlangton Aug 28, 2026
17aa942
refactor(core): reuse tool name normalization (#45644)
kitlangton Aug 28, 2026
9cab8b4
refactor(core): remove unreachable transport state (#45628)
kitlangton Aug 28, 2026
9d673d7
docs(core): align built-in prompt guidance (#45642)
kitlangton Aug 28, 2026
b0db52d
refactor(tui): remove inert diff viewer setup (#45687)
kitlangton Aug 28, 2026
ade8175
refactor(core): use environment driver namespace (#45707)
kitlangton Aug 28, 2026
dd2674e
refactor(core): reuse Mercurial diff preparation (#45652)
kitlangton Aug 28, 2026
d84d142
test(core): bind acquired test services (#45711)
kitlangton Aug 28, 2026
8fa672e
docs: document diagnostic profile signals
thdxr Aug 28, 2026
ac55c05
fix(core): correct compaction history direction (#45698)
kitlangton Aug 28, 2026
e63779d
fix(core): keep vertex settings serializable (#45704)
kitlangton Aug 28, 2026
64ef851
fix(core): preserve assistant text metadata (#45650)
kitlangton Aug 28, 2026
0123fed
fix(core): preserve Responses tool strictness (#45663)
kitlangton Aug 28, 2026
87f21a3
fix(core): forward plugin interrupt options (#45632)
kitlangton Aug 28, 2026
6fad330
chore(deps): upgrade Solid and Router (#45808)
Hona Aug 28, 2026
0b82fe6
refactor(core): consolidate model error mapping (#45722)
kitlangton Aug 28, 2026
afe9e57
refactor(core): simplify instruction preview blobs (#45702)
kitlangton Aug 28, 2026
becf5bf
refactor(core): retain changed worktrees directly (#45709)
kitlangton Aug 28, 2026
2cca1ae
refactor(core): use nonthrowing URL parsing (#45726)
kitlangton Aug 28, 2026
6bf342a
refactor(core): consolidate HTML inline handling (#45649)
kitlangton Aug 28, 2026
07facd2
refactor(util): share process stop policy (#45725)
kitlangton Aug 28, 2026
a258b17
test(core): use partial service mocks (#45703)
kitlangton Aug 28, 2026
048aec3
refactor(core): share local provider settings fold (#45645)
kitlangton Aug 28, 2026
a065ad4
feat(core): vanilla instance discovery option (#45752)
kitlangton Aug 28, 2026
3c9e5ad
chore: update nix node_modules hashes
opencode-agent[bot] Aug 28, 2026
1d3308d
test(core): refresh test vocabulary (#45714)
kitlangton Aug 28, 2026
38bffc9
chore(deps): upgrade Effect to rc.112 (#45819)
kitlangton Aug 28, 2026
56f2559
fix(codemode): report original tool errors (#45820)
rekram1-node Aug 28, 2026
95725d1
chore: remove unused changesets (#45827)
kitlangton Aug 28, 2026
a519363
test(core): use direct test imports (#45683)
kitlangton Aug 28, 2026
d2c307a
test(core): remove unused test imports (#45674)
kitlangton Aug 28, 2026
4685ba8
chore: update nix node_modules hashes
opencode-agent[bot] Aug 28, 2026
074413a
fix(ai): normalize response item boundaries (#45789)
rekram1-node Aug 28, 2026
92b9eeb
feat(tui): streamline diff review workflow (#45817)
kitlangton Aug 28, 2026
bb390f4
fix(session-ui): enable word diffs in unified view (#45833)
Hona Aug 28, 2026
55674b8
fix(ai): make final snapshots authoritative for text and reasoning (#…
rekram1-node Aug 28, 2026
5cbafc5
refactor(ai): default unrecognized provider failures to retry (#45825)
rekram1-node Aug 28, 2026
bdf019a
fix(ai): detect DashScope input length overflow errors (#45834)
rekram1-node Aug 28, 2026
18e22cd
refactor(ai): simplify response stream state (#45835)
rekram1-node Aug 28, 2026
5743537
test(core): use effectful temp fixtures (#45637)
kitlangton Aug 28, 2026
e12e04f
fix(core): strengthen background shell guidance (#45843)
rekram1-node Aug 28, 2026
d2ee536
fix(core): classify AISDK network failures as transport errors (#45840)
rekram1-node Aug 28, 2026
85d8b07
fix(ai): ignore late converse tool deltas (#45847)
rekram1-node Aug 28, 2026
11ca603
fix(ai): finish chat streams at done sentinel (#45850)
rekram1-node Aug 28, 2026
1c8e557
Revert "fix(cli): prevent repeated updates and npm cache growth" (#45…
neriousy Aug 28, 2026
ca47949
feat(plugin): expose experimental terminal reads (#45792)
jlongster Aug 28, 2026
0d42e76
feat(ai): add first-class TestLLM controls (#45828)
kitlangton Aug 28, 2026
201536f
test: repair stale V2 baseline coverage (#45826)
kitlangton Aug 28, 2026
e142a78
refactor(tui): extract reusable pane resize logic (#45939)
jlongster Aug 28, 2026
a808a02
refactor(core): separate config file editing (#45818)
kitlangton Aug 28, 2026
b9cb4fc
chore(core): retire prompt-cache diagnostics (#45965)
kitlangton Aug 28, 2026
936c73b
refactor(core): simplify tool settlement (#45967)
kitlangton Aug 28, 2026
e8fa7da
fix(client): preserve live activity during hydration (#45975)
kitlangton Aug 28, 2026
1f77f4a
refactor(core): inline auxiliary model operations (#45974)
kitlangton Aug 28, 2026
503e680
test(core): preserve session layer inference (#45629)
kitlangton Aug 28, 2026
d71cc3b
test(core): guarantee lock fixture cleanup (#45636)
kitlangton Aug 28, 2026
fc27061
refactor(core): remove tool context aliases (#45639)
kitlangton Aug 28, 2026
9a227d1
fix(core): remove unreachable MCP authorization path (#45633)
kitlangton Aug 28, 2026
484f5fa
docs(plugin): update current API examples (#45627)
kitlangton Aug 28, 2026
39daec9
refactor(core): narrow session internals (#45638)
kitlangton Aug 28, 2026
f1fd6ba
test(core): await registry readiness barriers (#45630)
kitlangton Aug 28, 2026
1eff846
fix(ai): keep chat reasoning in one lifecycle (#45864)
rekram1-node Aug 28, 2026
e7918e2
refactor(core): remove ineffective typed recovery (#45631)
kitlangton Aug 28, 2026
8f1eff5
refactor(core): deepen snapshot comparison helper (#45653)
kitlangton Aug 28, 2026
9d33d83
refactor(core): reuse native option projection (#45647)
kitlangton Aug 28, 2026
f367c20
refactor(core): remove unused command dependency (#45623)
kitlangton Aug 28, 2026
e50c898
refactor(core): reuse plugin response wrapper (#45648)
kitlangton Aug 28, 2026
374d317
test(core): simplify provider test setup (#45635)
kitlangton Aug 28, 2026
9bc2165
refactor(core): reuse lazy shell parser initialization (#45651)
kitlangton Aug 28, 2026
c601d3b
refactor(core): share provider factory loading (#45654)
kitlangton Aug 28, 2026
ac3cd1b
test(core): simplify provider smoke tests (#45656)
kitlangton Aug 28, 2026
d28b6e9
test(core): construct valid tool contexts (#45657)
kitlangton Aug 28, 2026
e4bc8b7
refactor(core): reuse MCP prompt helpers (#45660)
kitlangton Aug 28, 2026
fe188f8
fix(core): normalize directory page headings (#45641)
kitlangton Aug 28, 2026
8e25e83
fix(core): continue retryable failures after durable output (#45861)
rekram1-node Aug 28, 2026
6da20f0
chore(protocol): refresh committed OpenAPI baseline (#45969)
kitlangton Aug 28, 2026
0d6232f
test(core): share git test fixtures (#45640)
kitlangton Aug 28, 2026
cd3b12c
feat(tui): resize terminal panes (#45979)
jlongster Aug 28, 2026
732f949
fix(tui): admit compaction requests optimistically (#45973)
kitlangton Aug 28, 2026
f699205
fix(core): isolate shell jobs by shell ID (#45985)
opencode-agent[bot] Aug 28, 2026
196893c
refactor(core): remove unused config editor (#45991)
kitlangton Aug 28, 2026
07f27c4
refactor(core): simplify migration narrowing (#45677)
kitlangton Aug 28, 2026
1ce3c7e
fix(tui): stop flashing when jumping to session start
kitlangton Aug 28, 2026
d150342
test(core): reuse session projection fixtures (#45661)
kitlangton Aug 28, 2026
42a3fec
docs(core): clarify runtime ownership (#45671)
kitlangton Aug 28, 2026
da57b27
refactor(core): flatten durable commit validation (#45662)
kitlangton Aug 28, 2026
0bb6cf3
fix(tui): animate automatic session renames (#45957)
kitlangton Aug 28, 2026
f7d6b00
test(core): use collected arrays directly (#45665)
kitlangton Aug 28, 2026
ba0755d
refactor(core): reuse platform contract types (#45666)
kitlangton Aug 28, 2026
5c908eb
refactor(core): simplify reference config precedence (#45673)
kitlangton Aug 28, 2026
2379ab3
fix(core): defer memory filesystem observation (#45675)
kitlangton Aug 28, 2026
5634ef1
refactor(core): simplify manual compaction (#45678)
kitlangton Aug 28, 2026
134cdda
fix(core): normalize SDK file data (#45679)
kitlangton Aug 28, 2026
facd7ff
refactor(core): simplify V1 migration effects (#45685)
kitlangton Aug 28, 2026
0362ef4
test(core): isolate transport metrics (#45688)
kitlangton Aug 28, 2026
3151660
refactor(core): name shell records as commands (#45693)
kitlangton Aug 28, 2026
31af985
test(core): assert pending prompt identity (#45680)
kitlangton Aug 28, 2026
52ec62b
docs: correct config discovery boundary (#45681)
kitlangton Aug 28, 2026
4a0256d
test(core): use effect search harness (#45682)
kitlangton Aug 28, 2026
3badee1
test(core): simplify config test setup (#45689)
kitlangton Aug 28, 2026
6062e30
test(core): assert typed failures directly (#45690)
kitlangton Aug 28, 2026
000d088
docs(core): record adapter fork boundaries (#45691)
kitlangton Aug 28, 2026
ebdfcf4
test(tui): remove brittle animation sampling (#46003)
kitlangton Aug 28, 2026
426e5c6
fix(tui): open recent picker before server reads (#45977)
kitlangton Aug 28, 2026
0593a6b
fix(core): isolate models seed replay (#45686)
kitlangton Aug 28, 2026
3625942
feat(core): pass session context to MCP tools (#46008)
kitlangton Aug 28, 2026
aea3e7c
fix(core): refresh plugins in background (#45993)
kitlangton Aug 28, 2026
964245b
test(core): isolate project adoption fixture (#46009)
kitlangton Aug 28, 2026
ce005ce
refactor(core): remove unused result plumbing (#45695)
kitlangton Aug 28, 2026
d354c3d
fix(server): avoid loading locations for pending reads (#45994)
kitlangton Aug 28, 2026
a35f96f
fix(core): preserve late opaque reasoning (#45694)
kitlangton Aug 28, 2026
80323a4
test(core): name acquired test services (#45696)
kitlangton Aug 28, 2026
ee42eb3
fix(core): render built-in command arguments (#45697)
kitlangton Aug 28, 2026
fe788b7
fix(core): use runtime update columns (#45700)
kitlangton Aug 28, 2026
6784509
fix(util): share streamed stderr consumption (#45716)
kitlangton Aug 28, 2026
0a718be
refactor(plugin): normalize web search API type (#45717)
kitlangton Aug 28, 2026
9538c21
refactor(core): derive config recognition fields (#45701)
kitlangton Aug 28, 2026
e409567
refactor(core): express operation policies as transforms (#45713)
kitlangton Aug 28, 2026
b1d7dd8
refactor(core): use nonempty array guards (#45718)
kitlangton Aug 28, 2026
d837ffe
feat(plugin): add session retry hook (#45999)
rekram1-node Aug 28, 2026
b0c8a8c
fix(util): refresh flock heartbeat time (#45720)
kitlangton Aug 28, 2026
5990679
refactor: use typed error mapping operators (#45727)
kitlangton Aug 28, 2026
edef6a4
refactor(core): flatten git runner arguments (#45731)
kitlangton Aug 28, 2026
6e1f783
refactor(core): expose pty layer directly (#45733)
kitlangton Aug 28, 2026
bd379e1
refactor(core): remove unused instruction import (#45747)
kitlangton Aug 28, 2026
d82a0b2
docs: clarify release workflow (#46025)
kitlangton Aug 28, 2026
d0baff1
fix(core): make provider publication cancellation-safe (#46026)
kitlangton Aug 28, 2026
9e39a4f
test(core): simplify skill test setup (#45721)
kitlangton Aug 28, 2026
8a24a01
test(core): repair runner fixture claims (#45737)
kitlangton Aug 28, 2026
803b771
refactor(core): import canonical schema contracts (#45746)
kitlangton Aug 28, 2026
87525e0
test(core): synchronize retry tests on scheduled events (#46027)
kitlangton Aug 28, 2026
f61858e
fix(ai): avoid filtered tool calls (#46029)
rekram1-node Aug 28, 2026
2751813
test(core): simplify provider test fixtures (#45743)
kitlangton Aug 28, 2026
0b32bdf
test(core): use disposable session fixtures (#45745)
kitlangton Aug 28, 2026
f2fb191
test(core): inject vertex auth transport (#45751)
kitlangton Aug 28, 2026
f779b27
test(core): align runner service style (#45753)
kitlangton Aug 28, 2026
51d53f4
test(ci): register omitted V2 unit suites (#45970)
kitlangton Aug 28, 2026
1da2572
refactor(core): remove unused insert state (#45738)
kitlangton Aug 28, 2026
5b39f51
test(core): share selector sentinels (#45748)
kitlangton Aug 28, 2026
82b6e0e
chore: enforce mapError simplifications (#46028)
kitlangton Aug 28, 2026
8e7190f
fix(ai): respect completed response item text (#45854)
rekram1-node Aug 28, 2026
cf014bf
fix(ai): avoid truncated tool calls (#46040)
rekram1-node Aug 28, 2026
1c9c530
fix(ai): classify retryable server failures (#46038)
rekram1-node Aug 28, 2026
a5f8869
fix(ai): reject unknown chat finishes (#46036)
rekram1-node Aug 28, 2026
6809be2
fix(core): reuse permission policy for pending approvals (#46050)
kitlangton Aug 29, 2026
fa5ccac
refactor(core): share subagent completion delivery (#46054)
kitlangton Aug 29, 2026
095ed63
fix(app): keep workspace submit buttons neutral (#46052)
opencode-agent[bot] Aug 29, 2026
c0d0f5f
feat(cli): configure server CORS origins (#45544)
Brendonovich Aug 29, 2026
6b7a1d4
fix(core): preserve Responses tool identities (#45658)
kitlangton Aug 29, 2026
ad9117b
fix(session): run user shells immediately in the background
kitlangton Aug 29, 2026
e3bda5e
feat(tui): add branch review scopes
kitlangton Aug 29, 2026
51a082c
fix(core): release exited shell execution state (#46058)
Hona Aug 29, 2026
4ab3186
fix(app): reduce session-switch latency (#46044)
Hona Aug 29, 2026
a38cbd4
refactor(core): isolate shell tool preparation
kitlangton Aug 29, 2026
0116a98
refactor(tui): share app lifecycle test fixture
kitlangton Aug 29, 2026
6e954f7
refactor(core): isolate Session admission and controls (#46019)
kitlangton Aug 29, 2026
6cfffeb
refactor(core): avoid encoding rejected image candidates (#46073)
kitlangton Aug 29, 2026
7852cec
chore: update nix node_modules hashes
opencode-agent[bot] Aug 29, 2026
cf2c3a5
refactor(core): reuse catalog response digest (#46071)
kitlangton Aug 29, 2026
849824e
refactor(core): merge defaults for selected MCP servers (#46072)
kitlangton Aug 29, 2026
3ee2e48
fix(app): preserve Windows panel top outlines (#46090)
Hona Aug 29, 2026
106629a
feat(infra): deploy beta web app with SST (#46086)
Hona Aug 29, 2026
1719477
test(tui): wait for diff base search focus (#46083)
kitlangton Aug 29, 2026
8ba434b
refactor(core): move projected Session reads into Store (#46075)
kitlangton Aug 29, 2026
e70d667
fix(ai): preserve Anthropic finish across usage deltas (#46171)
rekram1-node Aug 29, 2026
4df3029
fix(desktop): scope library validation exception to CLI (#46212)
opencode-agent[bot] Aug 30, 2026
c2ef80a
fix(ai): fail malformed converse output (#46193)
rekram1-node Aug 30, 2026
5cd2c22
chore: update nix node_modules hashes
opencode-agent[bot] Aug 30, 2026
b12d436
fix(app): recover sessions with unavailable locations (#46215)
opencode-agent[bot] Aug 30, 2026
b1e3a7b
fix(ai): preserve forced reasoning signature (#46218)
rekram1-node Aug 30, 2026
4a977b2
refactor(core): bind standalone skill activation to Session (#46077)
kitlangton Aug 30, 2026
bf50194
fix(ai): reject truncated bedrock frames (#46281)
rekram1-node Aug 30, 2026
d323b34
feat(ai): add native Mistral provider (#46278)
rekram1-node Aug 30, 2026
c746ea3
fix(ai): use unique Gemini block ids (#46279)
rekram1-node Aug 30, 2026
f77647a
fix(ai): accumulate bedrock redacted content (#46283)
rekram1-node Aug 30, 2026
68c1207
fix(ai): close Gemini text before tools (#46286)
rekram1-node Aug 30, 2026
424d1d3
fix(tui): avoid unstyled code on session open
kitlangton Aug 30, 2026
0a751f1
chore(tui): integrate existing highlight cache
kitlangton Aug 30, 2026
ea6b792
fix(tui): keep write previews from flashing unstyled
kitlangton Aug 30, 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
  •  
  •  
  •  
5 changes: 0 additions & 5 deletions .changeset/calm-moves-cache.md

This file was deleted.

5 changes: 5 additions & 0 deletions .changeset/directory-page-heading.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@opencode-ai/core": patch
---

Correct directory page headings when the read offset is zero.
5 changes: 0 additions & 5 deletions .changeset/idempotent-prompt-reuse.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/promise-plugin-adapter.md

This file was deleted.

8 changes: 0 additions & 8 deletions .changeset/quiet-forms-replace-questions.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/share-session-model-request.md

This file was deleted.

9 changes: 0 additions & 9 deletions .changeset/shell-permission-scan.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/steer-resume-simplified.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/unify-request-envelope.md

This file was deleted.

6 changes: 0 additions & 6 deletions .changeset/websocket-request-hooks.md

This file was deleted.

1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ packages/core/migration/**/snapshot.json linguist-generated
packages/core/src/database/migration.gen.ts linguist-generated
packages/core/src/models-dev/snapshot.txt linguist-generated
packages/core/src/**/*.txt text eol=lf
packages/httpapi-codegen/test/generated/*.ts text eol=lf
1 change: 0 additions & 1 deletion .github/workflows/deploy-www.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ jobs:
working-directory: packages/www
run: bun run build
env:
BLUME_ENV: ${{ github.ref_name == 'v2' && 'production' || 'dev' }}
CLOUDFLARE_ENV: ${{ github.ref_name == 'v2' && 'production' || 'dev' }}

- name: Deploy
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ on:
branches:
- dev
- production
- beta
workflow_dispatch:

concurrency: ${{ github.workflow }}-${{ github.ref }}
Expand All @@ -15,7 +16,7 @@ permissions:

jobs:
deploy:
if: github.repository == 'anomalyco/opencode' && (github.ref_name == 'dev' || github.ref_name == 'production')
if: github.repository == 'anomalyco/opencode' && (github.ref_name == 'dev' || github.ref_name == 'production' || github.ref_name == 'beta')
runs-on: ubuntu-latest
environment: ${{ github.ref_name }}
steps:
Expand All @@ -28,6 +29,7 @@ jobs:
node-version: "24"

- uses: aws-actions/configure-aws-credentials@7474bc4690e29a8392af63c5b98e7449536d5c3a # v4.3.1
if: github.ref_name != 'beta'
with:
role-to-assume: ${{ vars.AWS_DEPLOY_ROLE_ARN }}
role-session-name: opencode-${{ github.run_id }}
Expand Down
11 changes: 10 additions & 1 deletion .github/workflows/pr-standards.yml
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,16 @@ jobs:

const linkedIssues = result.repository.pullRequest.closingIssuesReferences.totalCount;

if (linkedIssues === 0) {
// GitHub only populates closingIssuesReferences when a PR targets the repository's
// default branch (dev). PRs targeting other branches like v2 always return totalCount 0.
// Fall back to checking the PR description for closing keywords (e.g. Closes #123).
const body = pr.body || '';
const issueMatch = body.match(/### Issue for this PR\s*\n([\s\S]*?)(?=###|$)/);
const issueContent = issueMatch ? issueMatch[1].trim() : body;
const hasBodyIssueRef = /(closes|fixes|resolves)\s+#\d+/i.test(issueContent) || /#\d+/.test(issueContent);
const hasLinkedIssue = linkedIssues > 0 || hasBodyIssueRef;

if (!hasLinkedIssue) {
await addLabel('needs:issue');
await comment('issue', `Thanks for your contribution!

Expand Down
43 changes: 37 additions & 6 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ jobs:

- uses: ./.github/actions/setup-bun
with:
bun-version: canary # Bun 1.4 until its stable release is published
bun-version: 1.4.0

- name: Setup git committer
id: committer
Expand All @@ -113,7 +113,7 @@ jobs:
id: build
run: ./packages/cli/script/build.ts ${{ (github.ref_name == 'beta' && '--sourcemaps') || '' }}
env:
BUN_COMPILE_RELEASE: canary
BUN_COMPILE_RELEASE: bun-v1.4.0
OPENCODE_VERSION: ${{ needs.version.outputs.version }}
OPENCODE_RELEASE: ${{ needs.version.outputs.release }}
GH_REPO: ${{ needs.version.outputs.repo }}
Expand Down Expand Up @@ -195,9 +195,33 @@ jobs:
path: packages/cli/dist/cli-*
if-no-files-found: error

build-node-cli:
build-node-app-archive:
needs: version
if: github.repository == 'anomalyco/opencode' && false # Temporarily disabled
runs-on: blacksmith-4vcpu-ubuntu-2404
timeout-minutes: 30
if: github.repository == 'anomalyco/opencode'
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0

- uses: ./.github/actions/setup-bun

- name: Build app archive
run: bun packages/cli/script/build-node.ts --app-archive-only --app-archive=.cache/app-archive.bin --skip-install
env:
OPENCODE_VERSION: ${{ needs.version.outputs.version }}
OPENCODE_RELEASE: ${{ needs.version.outputs.release }}

- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: opencode-node-app-archive
path: packages/cli/.cache/app-archive.bin
if-no-files-found: error

build-node-cli:
needs:
- version
- build-node-app-archive
if: github.repository == 'anomalyco/opencode'
strategy:
fail-fast: false
matrix:
Expand All @@ -210,6 +234,7 @@ jobs:
host: macos-26
- target: windows-arm64
host: blacksmith-4vcpu-windows-2025
bun_install_flags: --cpu=*
- target: windows-x64
host: blacksmith-4vcpu-windows-2025
runs-on: ${{ matrix.settings.host }}
Expand All @@ -221,14 +246,19 @@ jobs:

- uses: ./.github/actions/setup-bun
with:
install-flags: --os=* --cpu=*
install-flags: ${{ matrix.settings.bun_install_flags }}

- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: "26.4.0"

- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: opencode-node-app-archive
path: packages/cli/.cache

- name: Build
run: bun packages/cli/script/build-node.ts --target=${{ matrix.settings.target }} --skip-install --outdir=dist/node
run: bun packages/cli/script/build-node.ts --target=${{ matrix.settings.target }} --skip-install --outdir=dist/node --app-archive=.cache/app-archive.bin
env:
OPENCODE_VERSION: ${{ needs.version.outputs.version }}
OPENCODE_RELEASE: ${{ needs.version.outputs.release }}
Expand Down Expand Up @@ -543,6 +573,7 @@ jobs:
- version
- build-cli
- sign-cli-macos
- build-node-app-archive
- build-node-cli
- sign-cli-windows
- build-electron
Expand Down
91 changes: 84 additions & 7 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,36 @@ env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

jobs:
affected:
name: affected packages
runs-on: blacksmith-4vcpu-ubuntu-2404
outputs:
app: ${{ steps.packages.outputs.app }}
steps:
- name: Checkout repository
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0

- name: Setup Bun
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version-file: package.json

- name: Find affected packages
id: packages
env:
TURBO_SCM_BASE: ${{ github.event_name == 'pull_request' && format('{0}^1', github.sha) || github.event.before }}
TURBO_SCM_HEAD: ${{ github.sha }}
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "app=true" >> "$GITHUB_OUTPUT"
exit 0
fi
bun x turbo@2.10.2 ls --affected --filter=@opencode-ai/app --output=json > affected.json
bun -e 'const result = await Bun.file("affected.json").json(); console.log(`app=${result.packages.count > 0}`)' >> "$GITHUB_OUTPUT"

unit:
name: unit (${{ matrix.settings.name }})
strategy:
Expand All @@ -41,6 +71,7 @@ jobs:
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0

- name: Setup Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
Expand All @@ -50,6 +81,14 @@ jobs:
- name: Setup Bun
uses: ./.github/actions/setup-bun

- name: Test Effect simplification rules
if: runner.os == 'Linux'
run: bun run test:effect-simplification-rules

- name: Check Effect simplifications
if: runner.os == 'Linux'
run: bun run lint:effect-simplifications

- name: Configure git identity
run: |
git config --global user.email "bot@opencode.ai"
Expand All @@ -72,9 +111,34 @@ jobs:

- name: Run unit tests
timeout-minutes: 20
run: GITHUB_ACTIONS=false bun turbo test
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
GITHUB_ACTIONS=false bun turbo test
exit 0
fi
GITHUB_ACTIONS=false bun turbo test --affected
env:
OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER: ${{ runner.os == 'Windows' && 'true' || 'false' }}
TURBO_SCM_BASE: ${{ github.event_name == 'pull_request' && format('{0}^1', github.sha) || github.event.before }}
TURBO_SCM_HEAD: ${{ github.sha }}

- name: Verify published codemode package
if: runner.os == 'Linux'
working-directory: packages/codemode
run: bun run script/publish.ts --dry-run

- name: Verify packed workerd SDK
if: runner.os == 'Linux'
timeout-minutes: 15
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
bun turbo verify:package --filter=@opencode-ai/sdk
exit 0
fi
bun turbo verify:package --affected --filter=@opencode-ai/sdk
env:
TURBO_SCM_BASE: ${{ github.event_name == 'pull_request' && format('{0}^1', github.sha) || github.event.before }}
TURBO_SCM_HEAD: ${{ github.sha }}

- name: Verify compiled service lifecycle
if: always()
Expand Down Expand Up @@ -114,7 +178,7 @@ jobs:

e2e:
name: e2e (${{ matrix.settings.name }})
if: github.ref_name != 'v2' && github.head_ref != 'v2'
needs: affected
strategy:
fail-fast: false
matrix:
Expand All @@ -125,56 +189,69 @@ jobs:
host: blacksmith-4vcpu-windows-2025
runs-on: ${{ matrix.settings.host }}
env:
E2E_ENABLED: ${{ needs.affected.outputs.app == 'true' && github.ref_name != 'v2' && github.head_ref != 'v2' }}
PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/.playwright-browsers
defaults:
run:
shell: bash
steps:
- name: Checkout repository
if: env.E2E_ENABLED == 'true'
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
token: ${{ secrets.GITHUB_TOKEN }}

- name: Setup Node
if: env.E2E_ENABLED == 'true'
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
# Playwright 1.59 hangs while extracting Chromium with Node 24.16.
node-version: "24.15"

- name: Setup Bun
if: env.E2E_ENABLED == 'true'
uses: ./.github/actions/setup-bun

- name: Read Playwright version
if: env.E2E_ENABLED == 'true'
id: playwright-version
run: |
version=$(node -e 'console.log(require("./package.json").workspaces.catalog["@playwright/test"])')
echo "version=$version" >> "$GITHUB_OUTPUT"

- name: Cache Playwright browsers
if: env.E2E_ENABLED == 'true'
id: playwright-cache
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: ${{ github.workspace }}/.playwright-browsers
key: ${{ runner.os }}-${{ runner.arch }}-playwright-${{ steps.playwright-version.outputs.version }}-chromium

- name: Install Playwright system dependencies
if: runner.os == 'Linux'
if: env.E2E_ENABLED == 'true' && runner.os == 'Linux'
working-directory: packages/app
run: bunx playwright install-deps chromium

- name: Install Playwright browsers
if: steps.playwright-cache.outputs.cache-hit != 'true'
if: env.E2E_ENABLED == 'true' && steps.playwright-cache.outputs.cache-hit != 'true'
working-directory: packages/app
run: bunx playwright install chromium

- name: Run app e2e tests
run: bun --cwd packages/app test:e2e:local
- name: Run app e2e tests against production build
if: env.E2E_ENABLED == 'true'
run: bun --cwd packages/app test:e2e:built
env:
CI: true
timeout-minutes: 30

- name: Verify service worker precaching and upgrades
if: env.E2E_ENABLED == 'true'
working-directory: packages/app
run: bunx playwright test --config e2e/service-worker/playwright.config.ts
timeout-minutes: 5

- name: Upload Playwright artifacts
if: always()
if: always() && env.E2E_ENABLED == 'true'
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: playwright-${{ matrix.settings.name }}-${{ github.run_attempt }}
Expand Down
Loading
Loading