Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1265 commits
Select commit Hold shift + click to select a range
cc88305
feat(tui): reopen closed session tabs (#39731)
kitlangton Jul 30, 2026
22d2012
fix(tui): register storybook only for story runs (#39733)
kitlangton Jul 30, 2026
9abd959
fix(simulation): mirror kitty keyboard protocol (#39741)
kitlangton Jul 30, 2026
16b247f
fix(tui): smooth new session tab handoff (#39745)
kitlangton Jul 30, 2026
7814568
feat(tui): delete current session (#39750)
kitlangton Jul 30, 2026
cc12890
refactor(core): isolate AI SDK native mappings (#39761)
rekram1-node Jul 30, 2026
8e3e94a
fix(tui): focus palette settings after layout (#39585)
kitlangton Jul 30, 2026
b866900
fix(tui): name deleted session in toast (#39768)
kitlangton Jul 30, 2026
146fdb9
feat(tui): add open menu for sessions and projects (#39752)
kitlangton Jul 31, 2026
a460f02
feat(tui): inherit session directory when creating a new session (#39…
kitlangton Jul 31, 2026
865f512
fix(tui): preserve current selection across list updates (#39774)
kitlangton Jul 31, 2026
eb95bd2
feat(session): make generated titles optional (#39747)
kitlangton Jul 31, 2026
0a6a5d3
fix(session): retry failed title generation (#39748)
kitlangton Jul 31, 2026
5c7e2b5
fix(tui): clarify open menu project labels (#39780)
kitlangton Jul 31, 2026
98229d4
feat(plugin): add session request hook (#39764)
rekram1-node Jul 31, 2026
5b4ebf3
fix(core): map xAI native options (#39787)
rekram1-node Jul 31, 2026
671e164
refactor(core): contain Codex in OpenAI plugin (#39734)
rekram1-node Jul 31, 2026
ff2b184
feat(ai): support Gemini thinking levels (#39796)
rekram1-node Jul 31, 2026
77df98d
Revert "feat(tui): delete current session (#39750)"
kitlangton Jul 31, 2026
db45026
fix(tui): default tabs to global scope (#39783)
kitlangton Jul 31, 2026
1d18459
fix(tui): align session picker scope (#39784)
kitlangton Jul 31, 2026
d07d9ae
fix(tui): remove shells from their location (#39885)
kitlangton Jul 31, 2026
1311d90
fix(tui): preserve session location during handoff (#39886)
kitlangton Jul 31, 2026
7aaf4e7
refactor(session): centralize fallback title policy (#39890)
kitlangton Jul 31, 2026
7fd12c5
fix(tui): fit project paths in open menu (#39887)
kitlangton Jul 31, 2026
dc3c996
fix(tui): stabilize generated session titles (#39894)
kitlangton Jul 31, 2026
6c37842
fix(cli): deduplicate Node asset destinations (#39900)
kitlangton Jul 31, 2026
7129ed6
fix(core): respect model input limits (#39797)
rekram1-node Jul 31, 2026
7757f71
test(app): restore stable offset observer ordering (#39901)
kitlangton Jul 31, 2026
3468aa0
feat(ai): configure chat max tokens field (#39909)
rekram1-node Jul 31, 2026
0e26116
fix(tui): stabilize open picker
kitlangton Jul 31, 2026
db9e942
fix(core): resize large image attachments (#39919)
kitlangton Jul 31, 2026
b498a5c
feat(ai): expand OpenRouter native support (#39907)
rekram1-node Jul 31, 2026
3bfce3f
feat(tui): expand pasted text (#39920)
kitlangton Jul 31, 2026
e60e8d9
refactor(core): rename attachments config to media (#39927)
opencode-agent[bot] Jul 31, 2026
b69e51d
refactor(ai): simplify provider options (#39924)
opencode-agent[bot] Jul 31, 2026
dd0e41c
fix(tui): render plugin slots and routes with component semantics (#3…
kitlangton Jul 31, 2026
0481dba
fix(tui): improve narrow layouts (#39918)
kitlangton Jul 31, 2026
f92e490
fix(tui): preserve diff hunk boundaries (#39693)
opencode-agent[bot] Jul 31, 2026
84dd56e
fix(core): bound outbound image history (#39929)
rekram1-node Jul 31, 2026
06e26d8
feat(protocol): accept title on session create (#39935)
kitlangton Jul 31, 2026
102086c
feat(tui): hot-reload local TUI plugins (#39776)
kitlangton Jul 31, 2026
2cfe888
feat(plugin): expose session rename and wait to plugins (#39932)
kitlangton Jul 31, 2026
56c6add
refactor(core): remove unused helpers (#39943)
opencode-agent[bot] Jul 31, 2026
90c8463
feat(theme): export expandTheme (#39967)
jlongster Jul 31, 2026
9256770
refactor(tui): remove unused stop voice operation (#39969)
opencode-agent[bot] Aug 1, 2026
6c567dc
refactor(core): remove unreferenced layer map example (#39971)
opencode-agent[bot] Aug 1, 2026
3b6ab39
refactor(core): remove unused console state model (#39972)
opencode-agent[bot] Aug 1, 2026
a484f87
refactor(core): remove unused dependencies (#39973)
opencode-agent[bot] Aug 1, 2026
fe0eb4e
refactor(core): remove orphaned move service (#39974)
opencode-agent[bot] Aug 1, 2026
f99469b
refactor(core): remove unused layer exports (#39975)
opencode-agent[bot] Aug 1, 2026
80874c2
refactor(tui): remove dead assistant renderer (#39945)
opencode-agent[bot] Aug 1, 2026
25b6a17
refactor(cli): remove no-op migrate command (#39946)
opencode-agent[bot] Aug 1, 2026
255e9bb
refactor(tui): remove onboarding hint residue (#39947)
opencode-agent[bot] Aug 1, 2026
6d3f84b
refactor(tui): remove dialog show helpers (#39948)
opencode-agent[bot] Aug 1, 2026
5b84e39
refactor(tui): remove stub child cycling commands (#39949)
opencode-agent[bot] Aug 1, 2026
02df1e9
refactor(tui): reuse canonical logo (#39951)
opencode-agent[bot] Aug 1, 2026
f6b5f6b
refactor(tui): remove prompt re-export barrels (#39953)
opencode-agent[bot] Aug 1, 2026
8846336
refactor(tui): remove unused fade file path (#39954)
opencode-agent[bot] Aug 1, 2026
9eb9c1d
refactor(tui): remove placeholder LSP panel (#39955)
opencode-agent[bot] Aug 1, 2026
1884368
refactor(tui): remove ignored attention kv option (#39956)
opencode-agent[bot] Aug 1, 2026
97f5fb3
Remove unused subagent retry formatter (#39952)
opencode-agent[bot] Aug 1, 2026
b5afaed
Remove unused config optional hook (#39957)
opencode-agent[bot] Aug 1, 2026
4569659
Remove unused Zed helpers (#39958)
opencode-agent[bot] Aug 1, 2026
eab59ea
Remove unused locale helpers (#39959)
opencode-agent[bot] Aug 1, 2026
70393a1
Remove unused error data serializer (#39960)
opencode-agent[bot] Aug 1, 2026
c2db18c
refactor(tui): remove unwired file selection helper (#39961)
opencode-agent[bot] Aug 1, 2026
cfcd8de
refactor(cli): remove unused warning helper (#39962)
opencode-agent[bot] Aug 1, 2026
8285a18
refactor(tui): remove unused revert diff parser (#39963)
opencode-agent[bot] Aug 1, 2026
ee65779
refactor(tui): remove unused duration formatter (#39964)
opencode-agent[bot] Aug 1, 2026
14e4c3d
fix(tui): ignore hidden tab close hitbox (#39940)
kitlangton Aug 1, 2026
47c6840
fix(tui): harden session tab state hygiene (#39941)
kitlangton Aug 1, 2026
6a54379
fix(tui): persist tab reorder once per drag (#39942)
kitlangton Aug 1, 2026
85ea15e
test(tui): wait for mini prompt readiness (#39980)
opencode-agent[bot] Aug 1, 2026
e872bd3
feat(tui): prioritize favorite model search results (#40049)
kitlangton Aug 1, 2026
d5f6c08
fix(tui): prevent sidebar scrollbar flash (#40056)
kitlangton Aug 1, 2026
003b22e
fix: preserve provider error status (#39976)
rekram1-node Aug 1, 2026
0e3da4b
feat(tui): add vertical session tabs (#40072)
kitlangton Aug 1, 2026
f158abd
fix(tui): make vertical tabs responsive (#40080)
kitlangton Aug 1, 2026
c391983
fix(tui): discover plugins across config roots (#39988)
kitlangton Aug 1, 2026
5d72952
refactor(tui): remove redundant code (#40081)
kitlangton Aug 1, 2026
634b9b2
refactor(ai): align multimodal naming (#40073)
rekram1-node Aug 2, 2026
adbd228
fix(tui): reserve home and end for navigation (#40123)
opencode-agent[bot] Aug 2, 2026
bf7f0cb
feat(ai): add native Bedrock Mantle support (#40119)
opencode-agent[bot] Aug 2, 2026
dd01412
fix(core): route Bedrock packages natively (#40165)
opencode-agent[bot] Aug 2, 2026
3f30203
test(core): stabilize shell integration timing (#40084)
kitlangton Aug 2, 2026
8ce850e
fix(ai): expose client service requirements (#40275)
nexxeln Aug 3, 2026
8df03aa
fix(core): ignore empty agent files (#40302)
opencode-agent[bot] Aug 3, 2026
93e8b75
refactor(schema): rename agent default constructor (#40324)
rekram1-node Aug 3, 2026
a4ad173
fix(core): apply safe defaults to all agents (#40316)
rekram1-node Aug 3, 2026
28d784b
fix(core): execute tools renamed by context hooks (#40359)
rekram1-node Aug 4, 2026
42e8d11
feat(vcs): expose branch info (#40368)
rekram1-node Aug 4, 2026
aa820db
feat(plugin): add session HTTP middleware (#40327)
rekram1-node Aug 4, 2026
94fcb11
fix(core): avoid implicit output limits (#40488)
opencode-agent[bot] Aug 4, 2026
9bd99b4
feat(vcs): publish branch updates (#40371)
rekram1-node Aug 4, 2026
0b1ec45
fix(tui): show branch beside directory (#40500)
rekram1-node Aug 4, 2026
d1c9e39
fix(tui): update tab titles immediately (#40318)
opencode-agent[bot] Aug 4, 2026
b9c118e
chore(core): drop unreachable AI SDK provider packages (#40504)
rekram1-node Aug 4, 2026
1fd817f
fix(client): wait for live service contenders (#40515)
kitlangton Aug 4, 2026
53b8111
refactor: rename tool call ID fields
thdxr Aug 4, 2026
6d2eb22
fix(app): finish tool call ID rename (#40539)
opencode-agent[bot] Aug 5, 2026
4ed3437
fix: retry empty incomplete streams (#40535)
rekram1-node Aug 5, 2026
ad9a95f
fix(ai): preserve Gemini tool finish semantics (#40546)
opencode-agent[bot] Aug 5, 2026
ab20a7b
feat(tui): streamline tab navigation shortcuts (#40551)
kitlangton Aug 5, 2026
62e5d73
fix(ai): classify malformed Responses tool calls (#40549)
opencode-agent[bot] Aug 5, 2026
f9ac6f3
fix(ai): restore Responses tool input semantics (#40553)
opencode-agent[bot] Aug 5, 2026
330ef10
fix(core): report missing shell workdir (#40542)
rekram1-node Aug 5, 2026
c74a0d8
test(app): migrate e2e fixtures to v2 (#40374)
Brendonovich Aug 5, 2026
daa998f
fix(core): make xAI OAuth device-only (#40538)
rekram1-node Aug 5, 2026
f2b3a12
refactor(app): own rendering contracts (#40375)
Brendonovich Aug 5, 2026
4eb1b37
fix(app): reconcile v2 session projections (#40376)
Brendonovich Aug 5, 2026
b1c1b79
refactor(app): migrate supported v2 APIs (#40378)
Brendonovich Aug 5, 2026
c0ab35c
fix(app): show active search details (#40597)
opencode-agent[bot] Aug 5, 2026
76b318e
refactor(app): gate unsupported v2 capabilities (#40381)
Brendonovich Aug 5, 2026
143a776
fix(acp): surface subagent activity (#40438)
nexxeln Aug 5, 2026
3b0195e
fix(core): avoid eager directory snapshots (#40552)
kitlangton Aug 5, 2026
ed8e1f4
fix(core): reconcile promoted prompt retries from messages (#40664)
kitlangton Aug 5, 2026
6f4c199
fix(tui): wait for diff request in tests (#40670)
kitlangton Aug 5, 2026
5aa0413
refactor(core): remove dead fork pending copy (#40675)
kitlangton Aug 5, 2026
0a0fc09
refactor(core): remove unused file mutation methods (#40667)
kitlangton Aug 5, 2026
3e253c5
refactor(core): persist instruction updates as messages (#40679)
kitlangton Aug 5, 2026
faadc05
refactor(core): remove unused snapshot operations (#40687)
kitlangton Aug 5, 2026
5ea62ab
refactor(core): remove orphaned git change operations (#40683)
kitlangton Aug 5, 2026
cae7a13
refactor(server): remove obsolete auth header helpers (#40682)
kitlangton Aug 5, 2026
25aaea3
refactor(core): remove unused shell tree killer (#40680)
kitlangton Aug 5, 2026
b03ca0d
refactor(core): remove unused bus sequences (#40681)
kitlangton Aug 5, 2026
d10b652
refactor(core): remove unused formatter methods (#40684)
kitlangton Aug 5, 2026
5256655
refactor(core): remove obsolete project commit bridge (#40701)
kitlangton Aug 5, 2026
686127f
refactor(core): remove unreachable repository validation (#40700)
kitlangton Aug 5, 2026
0af6c82
refactor(core): remove orphaned message projector paths (#40705)
kitlangton Aug 5, 2026
74e3155
refactor(session-ui): remove unused exported components (#40685)
kitlangton Aug 5, 2026
45d5871
fix(core): bound protected home searches (#40518)
kitlangton Aug 5, 2026
f3912a2
refactor(app): remove unused UI helpers (#40686)
kitlangton Aug 5, 2026
9349359
refactor(core): remove unused filesystem search methods (#40703)
kitlangton Aug 5, 2026
e78869c
refactor(core): remove unused agent default method (#40725)
kitlangton Aug 5, 2026
681526d
refactor(core): remove duplicate directory query (#40731)
kitlangton Aug 5, 2026
2fd1660
refactor(core): remove test-only ignore helper (#40733)
kitlangton Aug 5, 2026
732bb9c
refactor(core): remove discarded MCP connection details (#40726)
kitlangton Aug 5, 2026
b40ed3a
refactor(console): remove unused mail helpers (#40740)
kitlangton Aug 5, 2026
693a1bf
refactor(core): remove unused copy strategy registry (#40735)
kitlangton Aug 5, 2026
8876733
refactor(core): remove unused session exports (#40730)
kitlangton Aug 5, 2026
0df96dd
refactor(codemode): remove unused spread helper (#40729)
kitlangton Aug 5, 2026
0726a25
refactor(console): remove abandoned desktop promo (#40737)
kitlangton Aug 5, 2026
3acaa5a
refactor(core): remove unused shell posix metadata (#40734)
kitlangton Aug 5, 2026
fb47f06
refactor(desktop): remove superseded local sidecar (#40743)
kitlangton Aug 5, 2026
8646587
refactor(web): remove unused share anchor (#40742)
kitlangton Aug 5, 2026
6e4d01f
refactor(session-ui): remove unused panel title (#40741)
kitlangton Aug 5, 2026
73581b3
refactor(web): remove unused icons (#40744)
kitlangton Aug 5, 2026
56c33e8
fix(tui): keep model search order stable (#40753)
kitlangton Aug 5, 2026
285444a
refactor(web): remove superseded ornate logos (#40750)
kitlangton Aug 5, 2026
c46f6ae
refactor(app): remove unused help placeholder (#40756)
kitlangton Aug 5, 2026
6f91bc7
fix(tui): load sidebar project names sooner (#40763)
kitlangton Aug 5, 2026
120e4e7
fix(core): make event persistence opt-in
thdxr Aug 5, 2026
bd2f37b
fix(core): clarify current session label
thdxr Aug 5, 2026
3839aaf
refactor: remove orphaned sqlite package (#40766)
kitlangton Aug 6, 2026
1bfc23f
refactor(console): remove unused landing assets (#40757)
kitlangton Aug 6, 2026
f297bd3
refactor(desktop): remove disconnected CLI installer (#40751)
kitlangton Aug 6, 2026
0c558a6
refactor(console): remove unused mail assets (#40758)
kitlangton Aug 6, 2026
03e9789
test(core): align event persistence expectations (#40783)
kitlangton Aug 6, 2026
0fbe489
feat(core): migrate v1 data to v2 (#40723)
thdxr Aug 6, 2026
9314992
refactor(app): remove v1 compatibility (#40382)
Brendonovich Aug 6, 2026
25c2150
refactor(app): use native v2 types (#40608)
Brendonovich Aug 6, 2026
ae494ff
fix(core): retire legacy provider aliases (#40487)
rekram1-node Aug 6, 2026
a15ec42
test: repair v2 CI failures (#40803)
opencode-agent[bot] Aug 6, 2026
0cce215
fix(ai): harden compatible chat parsing (#40798)
rekram1-node Aug 6, 2026
a38d442
fix(core): continue interrupted responses (#40576)
rekram1-node Aug 6, 2026
30d1400
feat(cli): add models command
thdxr Aug 6, 2026
e629182
fix(cli): rename auth connect to login
thdxr Aug 6, 2026
a0c77b7
refactor(app): use native session info (#40824)
Brendonovich Aug 6, 2026
51cef27
refactor(core): deduplicate Copilot endpoint routing (#40765)
kitlangton Aug 6, 2026
0f27ee7
fix(cli): reuse server for noninteractive commands
thdxr Aug 6, 2026
939da6a
feat(cli): add debug config command (#40895)
thdxr Aug 6, 2026
1539bd6
fix(client): evict unresponsive service (#40896)
thdxr Aug 6, 2026
0215498
fix(core): load well-known config first (#40897)
thdxr Aug 6, 2026
912a801
refactor(drizzle): declare query variance (#40891)
jlongster Aug 6, 2026
be2f74d
refactor(plugin): split session HTTP hooks (#40724)
rekram1-node Aug 6, 2026
ec95b27
fix(core): align ChatGPT context limits (#40902)
rekram1-node Aug 6, 2026
8864b01
feat(core): increase retained compaction context (#40906)
rekram1-node Aug 6, 2026
7dbe8c4
refactor(mcp): remove unused registration status (#40904)
rekram1-node Aug 6, 2026
c66d841
fix(tui): open authorization links (#40912)
kitlangton Aug 6, 2026
20fa444
fix(config): omit unset optional values (#40918)
thdxr Aug 6, 2026
a779027
fix(tui): compact single-line prompts (#40924)
kitlangton Aug 6, 2026
65c6a71
fix(tui): simplify MCP status rows (#40916)
kitlangton Aug 6, 2026
5cf97f1
feat(core): normalize mixed config formats (#40919)
thdxr Aug 6, 2026
d35ca49
feat(tui): enable cwd-scoped session tabs by default
thdxr Aug 6, 2026
cd64a17
test(core): cover config precedence
thdxr Aug 6, 2026
727beae
fix(core): deduplicate websearch consent prompts (#40869)
opencode-agent[bot] Aug 6, 2026
0cc507b
feat(cli): add session import and export (#40914)
jlongster Aug 6, 2026
dcae95e
feat(ai): expose model compatibility options (#40942)
rekram1-node Aug 6, 2026
1eb3a43
fix(tui): keep model selection session scoped (#40913)
kitlangton Aug 7, 2026
d765151
fix(tui): use tab layout setting (#40952)
opencode-agent[bot] Aug 7, 2026
047d434
fix(tui): dismiss stale permission prompts (#40960)
kitlangton Aug 7, 2026
439ed66
fix(core): migrate legacy small model (#40966)
opencode-agent[bot] Aug 7, 2026
76e4d88
fix(core): default custom agents to primary (#40880)
opencode-agent[bot] Aug 7, 2026
cc7827f
refactor(core): simplify file tools to lexical paths (#40962)
kitlangton Aug 7, 2026
a1b4843
refactor(app): remove legacy layout (#40947)
Brendonovich Aug 7, 2026
5fb0d7c
feat(core): bound tool output (#40929)
rekram1-node Aug 7, 2026
2092350
fix(core): align shell output limits (#41007)
rekram1-node Aug 7, 2026
e6c9b6b
feat(core): add firecrawl web search (#41042)
nexxeln Aug 7, 2026
8977881
feat(tui): queue prompts with option enter (#40922)
opencode-agent[bot] Aug 7, 2026
3bb0d7f
feat(core): add workspace environment foundation (#40967)
kitlangton Aug 7, 2026
292dfa3
feat(core): add restart continuation message (#40989)
rekram1-node Aug 7, 2026
c9cbd2b
feat(core): add local environment driver (#41076)
kitlangton Aug 7, 2026
e6d2044
test: fix cross-platform unit failures (#41075)
kitlangton Aug 7, 2026
bc47030
fix(core): serialize edit and patch transactions (#40641)
opencode-agent[bot] Aug 7, 2026
48d1a6e
fix(tui): mute expanded thinking content (#41082)
opencode-agent[bot] Aug 7, 2026
6e82f5d
fix(core): connect custom providers (#40761)
opencode-agent[bot] Aug 7, 2026
8ba8af1
refactor(core): move read tool onto environment (#41084)
kitlangton Aug 7, 2026
c79ced1
fix(core): reload changed skill sources (#40954)
kitlangton Aug 7, 2026
db31c42
refactor(core): move mutation path onto environment (#41091)
kitlangton Aug 7, 2026
917d644
refactor(core): move exec tools onto environment (#41095)
kitlangton Aug 7, 2026
e5ef00b
fix(core): bound project filesystem watches (#41096)
kitlangton Aug 7, 2026
b4f769f
fix(core): normalize tool images once (#41097)
kitlangton Aug 7, 2026
db3b54a
fix(ai): preserve Gemini agent loop parity (#41109)
opencode-agent[bot] Aug 7, 2026
9ca650f
refactor(ai): promote prompt cache key (#39965)
rekram1-node Aug 7, 2026
6f3a360
fix(ai): forward chat cache keys (#41131)
rekram1-node Aug 7, 2026
d2c99ba
chore: improve incremental typecheck performance (#40925)
jlongster Aug 7, 2026
3776975
fix(tui): unify integration connection copy (#41137)
opencode-agent[bot] Aug 7, 2026
0b84e24
fix(tui): standardize compact terminology (#41141)
opencode-agent[bot] Aug 7, 2026
952d4d4
feat(server): add modal environment driver (#41118)
kitlangton Aug 7, 2026
79a493e
fix(tui): show external worktree session labels (#41147)
opencode-agent[bot] Aug 8, 2026
b3aea1c
feat(console): add workspace unblock endpoint (#41170)
opencode-agent[bot] Aug 8, 2026
f3f1204
feat(tui): render Mermaid diagrams (#41113)
kitlangton Aug 8, 2026
2cf65c0
fix(merman): support undirected edges and place multiline state label…
kitlangton Aug 8, 2026
3a4772a
fix(merman): separate sibling subgraphs (#41178)
kitlangton Aug 8, 2026
fd09760
fix(tui): open sessions by exact ID (#41180)
kitlangton Aug 8, 2026
aa05fd2
refactor(core): remove legacy account runtime schemas (#41173)
kitlangton Aug 8, 2026
0df6aed
fix(merman): derive neutral diagram palette (#41181)
kitlangton Aug 8, 2026
8c758e4
fix(core): reuse shared patch diff (#41186)
kitlangton Aug 8, 2026
dd60206
fix(merman): tighten flowchart spacing (#41191)
kitlangton Aug 8, 2026
5e63703
fix(tui): refine provider failure presentation (#41179)
jlongster Aug 8, 2026
9b7b402
feat(server): run modal sandboxes on the vm runtime (#41177)
kitlangton Aug 8, 2026
b274db8
chore(core): format package (#41205)
opencode-agent[bot] Aug 8, 2026
f0d1029
Add v2 branch to workflow triggers (#41207)
rekram1-node Aug 8, 2026
4194d55
chore: generate
opencode-agent[bot] Aug 8, 2026
bc93da4
fix(core): reload changed MCP config (#41204)
opencode-agent[bot] Aug 8, 2026
e566c08
chore: generate
opencode-agent[bot] Aug 8, 2026
7afe537
fix(ai): align chat assistant content (#41210)
opencode-agent[bot] Aug 8, 2026
1ca86ad
fix(ai): break ToolResultValue type circularity (#41303)
kitlangton Aug 8, 2026
83b4769
feat(core): add workspace domain and placement binding (#41187)
kitlangton Aug 8, 2026
c2ba0be
feat: attach skills to prompts (#41188)
kitlangton Aug 8, 2026
f43f2b3
chore: generate
opencode-agent[bot] Aug 8, 2026
cc0061f
fix(core): update recorded prompt cache key (#41307)
kitlangton Aug 9, 2026
4eff0ee
fix(core): flush plugin reload generations (#41309)
kitlangton Aug 9, 2026
ff0a0b0
fix(tui): isolate lifecycle and theme tests (#41310)
kitlangton Aug 9, 2026
bc51baa
fix(tui): align session tab shortcut labels (#41308)
kitlangton Aug 9, 2026
445af9c
docs: fix install command rendering (#41340)
opencode-agent[bot] Aug 9, 2026
e8f215b
chore: generate
opencode-agent[bot] Aug 9, 2026
84fd347
fix(codegen): write prettier-stable generated manifests (#41343)
kitlangton Aug 9, 2026
64d0ea3
fix(tui): keep closed tabs closed across TUIs
Aug 9, 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
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
packages/core/migration/**/snapshot.json linguist-generated
packages/core/src/database/migration.gen.ts linguist-generated
packages/core/src/**/*.txt text eol=lf
6 changes: 5 additions & 1 deletion .github/TEAM_MEMBERS
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
adamdotdevin
arvsrn
Brendonovich
fwang
Hona
Expand All @@ -7,11 +8,14 @@ jayair
jlongster
kitlangton
kommander
ludvigrask
MrMushrooooom
nexxeln
R44VC0RP
rekram1-node
thdxr
simonklee
Slickstef11
usrnk1
vimtor
starptech
StarpTech
7 changes: 7 additions & 0 deletions .github/actions/setup-bun/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@ inputs:
runs:
using: "composite"
steps:
# node-gyp@latest (invoked via bunx for native install scripts) requires Node >=22;
# some runner images ship an older system Node on PATH
- name: Setup Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: "24"

- name: Get baseline download URL
id: bun-url
shell: bash
Expand Down
38 changes: 38 additions & 0 deletions .github/workflows/compliance-close.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,48 @@ jobs:

const now = Date.now();
const twoHours = 2 * 60 * 60 * 1000;
const orgMemberAssociations = new Set(['OWNER', 'MEMBER']);
const agentLogin = 'opencode-agent[bot]';
const { data: file } = await github.rest.repos.getContent({
owner: context.repo.owner,
repo: context.repo.repo,
path: '.github/TEAM_MEMBERS',
ref: 'dev',
});
const teamMembers = new Set(
Buffer.from(file.content, 'base64')
.toString()
.split('\n')
.map((line) => line.trim().toLowerCase())
.filter(Boolean)
);

function isExempt(item) {
const login = item.user?.login?.toLowerCase();
return (
login === agentLogin ||
orgMemberAssociations.has(item.author_association) ||
(login && teamMembers.has(login))
);
}

for (const item of items) {
const isPR = !!item.pull_request;
const kind = isPR ? 'PR' : 'issue';
const login = item.user?.login;

if (isExempt(item)) {
core.info(`Skipping ${kind} #${item.number}; author ${login || 'unknown'} is exempt`);
try {
await github.rest.issues.removeLabel({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: item.number,
name: 'needs:compliance',
});
} catch (e) {}
continue;
}

const { data: comments } = await github.rest.issues.listComments({
owner: context.repo.owner,
Expand Down
37 changes: 37 additions & 0 deletions .github/workflows/deploy-www.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: deploy-www

on:
push:
branches:
- dev
- v2
workflow_dispatch:

concurrency:
group: deploy-www-${{ github.ref_name }}
cancel-in-progress: false

permissions:
contents: read

jobs:
deploy:
if: github.repository == 'anomalyco/opencode' && (github.ref_name == 'dev' || github.ref_name == 'v2')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0

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

- name: Build
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
working-directory: packages/www
run: bun run deploy
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
46 changes: 45 additions & 1 deletion .github/workflows/duplicate-issues.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,31 @@ jobs:
with:
fetch-depth: 1

- name: Check exempt issue author
id: author
run: |
LOGIN="${{ github.event.issue.user.login }}"
ASSOCIATION="${{ github.event.issue.author_association }}"

if [ "$LOGIN" = "opencode-agent[bot]" ] ||
[ "$ASSOCIATION" = "OWNER" ] ||
[ "$ASSOCIATION" = "MEMBER" ] ||
grep -qxiF "$LOGIN" .github/TEAM_MEMBERS; then
echo "skip=true" >> "$GITHUB_OUTPUT"
echo "Skipping issue automation for exempt author: $LOGIN ($ASSOCIATION)"
else
echo "skip=false" >> "$GITHUB_OUTPUT"
fi

- uses: ./.github/actions/setup-bun
if: steps.author.outputs.skip != 'true'

- name: Install opencode
if: steps.author.outputs.skip != 'true'
run: curl -fsSL https://opencode.ai/install | bash

- name: Check duplicates and compliance
if: steps.author.outputs.skip != 'true'
env:
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -38,6 +57,7 @@ jobs:
opencode run -m opencode/claude-sonnet-4-6 "A new issue has been created:

Issue number: ${{ github.event.issue.number }}
Issue author association: ${{ github.event.issue.author_association }}

Lookup this issue with gh issue view ${{ github.event.issue.number }}.

Expand All @@ -49,6 +69,8 @@ jobs:

Check whether the issue follows our contributing guidelines and issue templates.

If the issue author association is OWNER or MEMBER, skip this compliance check. Do not add the needs:compliance label for organization-owned issues.

This project has three issue templates that every issue MUST use one of:

1. Bug Report - requires a Description field with real content
Expand Down Expand Up @@ -83,7 +105,7 @@ jobs:

Based on your findings, post a SINGLE comment on issue #${{ github.event.issue.number }}. Build the comment as follows:

If the issue is NOT compliant, start the comment with:
If the issue is NOT compliant and the author association is not OWNER or MEMBER, start the comment with:
<!-- issue-compliance -->
Then explain what needs to be fixed and that they have 2 hours to edit the issue before it is automatically closed. Also add the label needs:compliance to the issue using: gh issue edit ${{ github.event.issue.number }} --add-label needs:compliance

Expand Down Expand Up @@ -129,12 +151,31 @@ jobs:
with:
fetch-depth: 1

- name: Check exempt issue author
id: author
run: |
LOGIN="${{ github.event.issue.user.login }}"
ASSOCIATION="${{ github.event.issue.author_association }}"

if [ "$LOGIN" = "opencode-agent[bot]" ] ||
[ "$ASSOCIATION" = "OWNER" ] ||
[ "$ASSOCIATION" = "MEMBER" ] ||
grep -qxiF "$LOGIN" .github/TEAM_MEMBERS; then
echo "skip=true" >> "$GITHUB_OUTPUT"
echo "Skipping issue automation for exempt author: $LOGIN ($ASSOCIATION)"
else
echo "skip=false" >> "$GITHUB_OUTPUT"
fi

- uses: ./.github/actions/setup-bun
if: steps.author.outputs.skip != 'true'

- name: Install opencode
if: steps.author.outputs.skip != 'true'
run: curl -fsSL https://opencode.ai/install | bash

- name: Recheck compliance
if: steps.author.outputs.skip != 'true'
env:
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -148,9 +189,12 @@ jobs:
}
run: |
opencode run -m opencode/claude-sonnet-4-6 "Issue #${{ github.event.issue.number }} was previously flagged as non-compliant and has been edited.
Issue author association: ${{ github.event.issue.author_association }}

Lookup this issue with gh issue view ${{ github.event.issue.number }}.

If the issue author association is OWNER or MEMBER, remove the needs:compliance label if present, delete the previous compliance comment if present, and do not post a new comment.

Re-check whether the issue now follows our contributing guidelines and issue templates.

This project has three issue templates that every issue MUST use one of:
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/generate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ on:
push:
branches:
- dev
- v2

jobs:
generate:
Expand Down
Loading
Loading