Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
311 commits
Select commit Hold shift + click to select a range
f90d154
zen: budget
fwang Jun 29, 2026
5409151
feat(app): sticky session list header (#34220)
arvsrn Jun 29, 2026
56a789d
feat(app): show loader on session hover (#34224)
arvsrn Jun 29, 2026
be8cfa7
chore: generate
opencode-agent[bot] Jun 29, 2026
84bb706
feat(app): new timeline header (#34192)
arvsrn Jun 29, 2026
48dc05e
chore: generate
opencode-agent[bot] Jun 29, 2026
2070fd9
feat(app): improve projects sidebar reactivity (#34391)
arvsrn Jun 29, 2026
b5f92c9
docs: fix Kimi K2.7 Go model ID (#34413)
MrMushrooooom Jun 29, 2026
0a5e617
feat(app): update message part ui to v2 (#34394)
arvsrn Jun 29, 2026
7fac843
feat(app): align slash popover to v2 tokens (#34286)
arvsrn Jun 29, 2026
82a482b
chore: generate
opencode-agent[bot] Jun 29, 2026
48fc9e3
feat(llm): add response reducer (#34417)
nexxeln Jun 29, 2026
c363775
chore: generate
opencode-agent[bot] Jun 29, 2026
b0151e1
test(llm): verify generate reducer law (#34418)
nexxeln Jun 29, 2026
e5101d9
test(llm): lock event reducer laws (#34423)
nexxeln Jun 29, 2026
6d9539f
fix: exempt org issues from compliance close (#34431)
opencode-agent[bot] Jun 29, 2026
1fd8bf5
feat(llm): add model defaults and compatibility data (#34436)
nexxeln Jun 29, 2026
7077c70
chore: generate
opencode-agent[bot] Jun 29, 2026
08c5a2a
feat(llm): enforce request precedence (#34440)
nexxeln Jun 29, 2026
c0e43c0
chore: generate
opencode-agent[bot] Jun 29, 2026
a377642
refactor(core): finish test layer node conversion (#34385)
jlongster Jun 29, 2026
9205dfe
chore: generate
opencode-agent[bot] Jun 29, 2026
f7eeb08
fix(llm): narrow raw overlays (#34448)
nexxeln Jun 29, 2026
71ec022
chore: generate
opencode-agent[bot] Jun 29, 2026
18466b8
feat(llm): add tool schema projections (#34454)
nexxeln Jun 29, 2026
b10d617
chore: generate
opencode-agent[bot] Jun 29, 2026
bc5ce5e
refactor(core): convert opencode tests to nodes (#34453)
jlongster Jun 29, 2026
de18555
chore: generate
opencode-agent[bot] Jun 29, 2026
d4fd528
refactor(core): convert more opencode tests to nodes (#34464)
jlongster Jun 29, 2026
d6e54e9
chore: generate
opencode-agent[bot] Jun 29, 2026
762588c
refactor(core): convert prompt tests to nodes (#34470)
jlongster Jun 29, 2026
be14739
refactor(core): convert config tests to nodes (#34474)
jlongster Jun 29, 2026
d8f9388
chore: generate
opencode-agent[bot] Jun 29, 2026
b9dae85
refactor(opencode): migrate compaction and workspace tests to layer n…
jlongster Jun 29, 2026
0ebe74b
refactor(opencode): migrate llm tests to layer nodes (#34479)
jlongster Jun 29, 2026
93a7b4a
chore: generate
opencode-agent[bot] Jun 29, 2026
aae0e89
refactor(opencode): use layer nodes in plugin tests (#34495)
jlongster Jun 29, 2026
4d32947
chore: generate
opencode-agent[bot] Jun 29, 2026
15bcbb1
refactor(opencode): migrate session tests to layer nodes (#34494)
jlongster Jun 29, 2026
9151af7
chore: generate
opencode-agent[bot] Jun 29, 2026
7a035d7
refactor(opencode): bind instance bootstrap node (#34502)
jlongster Jun 29, 2026
7d33a6f
chore: generate
opencode-agent[bot] Jun 29, 2026
3726052
refactor(opencode): use layer nodes in server tests (#34503)
jlongster Jun 29, 2026
fd213e6
fix(mcp): prefer content over structured output (#34505)
rekram1-node Jun 29, 2026
7823538
chore: generate
opencode-agent[bot] Jun 29, 2026
884c256
fix(console): cancel upstream provider requests (#34467)
StarpTech Jun 29, 2026
d71454c
fix(core): expose models.dev modes as models (#34521)
rekram1-node Jun 29, 2026
e9d4ca7
zen: track region
fwang Jun 29, 2026
4caec80
chore: generate
opencode-agent[bot] Jun 29, 2026
60b6229
zen: track region
fwang Jun 29, 2026
5b62211
refactor(opencode): build runtimes from layer nodes (#34515)
jlongster Jun 30, 2026
2ace237
chore: generate
opencode-agent[bot] Jun 30, 2026
2fe68b5
fix(ui): prevent tool status blank frame (#34547)
Hona Jun 30, 2026
8f1e13f
fix(core): skip fff in node runtime (#34353)
opencode-agent[bot] Jun 30, 2026
cb3e28d
fix(app): collapse review pane by default (#34165)
opencode-agent[bot] Jun 30, 2026
1f37c26
refactor(opencode): use layer nodes in remaining harnesses (#34516)
jlongster Jun 30, 2026
ce82b21
chore: generate
opencode-agent[bot] Jun 30, 2026
018ce34
revert(core): skip fff in node runtime (#34549)
opencode-agent[bot] Jun 30, 2026
91561bb
refactor(opencode): remove app service layer exports (#34517)
jlongster Jun 30, 2026
451876b
refactor(opencode): remove core service layer exports (#34518)
jlongster Jun 30, 2026
ba41dad
ci: skip issue actions for team authors (#34556)
opencode-agent[bot] Jun 30, 2026
0a5bed2
feat(tui): add yolo permission mode (#33279)
thdxr Jun 30, 2026
797cb53
chore: generate
opencode-agent[bot] Jun 30, 2026
e687eb9
fix(app): register export logs globally (#34352)
opencode-agent[bot] Jun 30, 2026
6b074ed
fix(app): suppress middle-click tab auxclick (#34355)
opencode-agent[bot] Jun 30, 2026
b19ae65
sync
fwang Jun 30, 2026
e34822d
fix(desktop): preserve selected model during session promotion (#34466)
usrnk1 Jun 30, 2026
90f0576
fix(session-ui): deselect review line on draft cancel (#34585)
opencode-agent[bot] Jun 30, 2026
1982d98
fix(session-ui): align code copy tooltip with v2 style (#34459)
opencode-agent[bot] Jun 30, 2026
003c22b
fix(desktop): context menu button / tab intermittent issue (#34420)
usrnk1 Jun 30, 2026
8289883
chore: generate
opencode-agent[bot] Jun 30, 2026
f69f677
feat(desktop): add hover background to session title and single-click…
usrnk1 Jun 30, 2026
4aaed42
fix(app): preserve macos titlebar inset (#34594)
opencode-agent[bot] Jun 30, 2026
aa56750
fix(desktop): persist last active url (#34595)
Brendonovich Jun 30, 2026
ad63cf1
feat(app): hide separators around active tabs (#34591)
usrnk1 Jun 30, 2026
3aa2860
fix(app): restore prompt cursor on focus (#34175)
Brendonovich Jun 30, 2026
3ca89ac
fix(app): autocomplete configured references (#34308)
opencode-agent[bot] Jun 30, 2026
06cb0de
feat(app): autocomplete mcp resources (#34597)
Brendonovich Jun 30, 2026
bd83177
chore: generate
opencode-agent[bot] Jun 30, 2026
b329fcc
fix(docs): fix Russian translation for index.mdx (#34001)
runvip Jun 30, 2026
8e10ab0
chore: bump venice provider (#34629)
rekram1-node Jun 30, 2026
eaf42c4
chore: update nix node_modules hashes
opencode-agent[bot] Jun 30, 2026
63e2488
feat(desktop): polish inline session title editing (#34607)
usrnk1 Jun 30, 2026
fa9ba29
feat(desktop): make error view draggable (#34627)
usrnk1 Jun 30, 2026
c86066e
test(opencode): update help snapshots (#34639)
jlongster Jun 30, 2026
6fc9405
refactor(core): route aggregate layers through nodes (#34621)
jlongster Jun 30, 2026
20445ca
fix(cli): hide auto approval aliases in help (#34641)
opencode-agent[bot] Jun 30, 2026
fced9c5
feat(desktop): polish tooltips and session search (#34632)
usrnk1 Jun 30, 2026
74e7a37
chore: generate
opencode-agent[bot] Jun 30, 2026
5691f36
refactor(core): remove tool layer exports (#34622)
jlongster Jun 30, 2026
6387f95
refactor(core): remove session layer exports (#34623)
jlongster Jun 30, 2026
a4b6047
fix(core): drop legacy config filename (#34645)
opencode-agent[bot] Jun 30, 2026
c8fde60
fix(app): hide missing workspace branch (#34649)
Brendonovich Jun 30, 2026
472d0f3
refactor(core): remove infrastructure layer exports (#34624)
jlongster Jun 30, 2026
e787268
chore: generate
opencode-agent[bot] Jun 30, 2026
5a23bdc
refactor(core): remove domain layer exports (#34625)
jlongster Jun 30, 2026
3af9f64
chore: generate
opencode-agent[bot] Jun 30, 2026
6636683
refactor: remove remaining default layer aliases (#34660)
jlongster Jun 30, 2026
6789214
fix(console): remove expired Go MiniMax promo (#34663)
MrMushrooooom Jun 30, 2026
3a669d5
fix(provider): enable sonnet 5 adaptive thinking (#34673)
rekram1-node Jun 30, 2026
afff74e
sync release versions for v1.17.12
Jun 30, 2026
928c37b
zen: kk2.7, mm3, sonnet5
fwang Jun 30, 2026
c88ca97
chore: generate
opencode-agent[bot] Jun 30, 2026
f1407e4
fix(core): stop replaying stale GitHub Copilot Responses item IDs (#3…
rekram1-node Jul 1, 2026
ae3fefb
fix(session-ui): recognize more inline file paths (#34688)
opencode-agent[bot] Jul 1, 2026
439ec9b
chore: generate
opencode-agent[bot] Jul 1, 2026
45a437c
fix(app): clamp virtualizer range to scroll bounds (#34588)
opencode-agent[bot] Jul 1, 2026
2b611a5
chore: update nix node_modules hashes
opencode-agent[bot] Jul 1, 2026
55552c5
fix(provider): force openai reasoning variants (#34702)
rekram1-node Jul 1, 2026
af72cec
feat(desktop): scope tabs to windows (#34669)
Brendonovich Jul 1, 2026
bd7f7ad
chore: generate
opencode-agent[bot] Jul 1, 2026
5e1a1ed
fix(app): scope session page errors (#34254)
Brendonovich Jul 1, 2026
bf18cc9
chore: generate
opencode-agent[bot] Jul 1, 2026
4d91f0c
feat(app): v2 wsl ui (#34233)
arvsrn Jul 1, 2026
34ee942
chore: generate
opencode-agent[bot] Jul 1, 2026
cd00422
fix(app): question UI fixes and UX improvements (#34116)
eXamadeus Jul 1, 2026
6f2ff35
chore: generate
opencode-agent[bot] Jul 1, 2026
2f4d36d
fix(desktop): clean stale draft stores (#34651)
Brendonovich Jul 1, 2026
8b68dc0
chore: generate
opencode-agent[bot] Jul 1, 2026
f014686
feat(desktop): session tab hover preview popover (#34678)
usrnk1 Jul 1, 2026
9410eda
feat(app): composer improvements (#34720)
arvsrn Jul 1, 2026
4b1c7f2
chore: generate
opencode-agent[bot] Jul 1, 2026
246dea3
feat(app): more v2 ui alignment (#34465)
arvsrn Jul 1, 2026
3136b1b
feat(desktop): improve markdown heading spacing in session timeline (…
usrnk1 Jul 1, 2026
87aa62d
chore: generate
opencode-agent[bot] Jul 1, 2026
6697cf3
feat(app): minor fixes (#34748)
arvsrn Jul 1, 2026
1e73b76
sync release versions for v1.17.13
Jul 1, 2026
9495e3e
chore: bump gitlab-ai-provider to 6.10.0 (#34756)
vglafirov Jul 1, 2026
7de5aa0
chore: update nix node_modules hashes
opencode-agent[bot] Jul 1, 2026
74e5644
feat(stats): redesign lab hero
adamdotdevin Jul 1, 2026
262ef4f
feat(stats): add lab overview
adamdotdevin Jul 1, 2026
91ca75c
feat(stats): redesign lab usage
adamdotdevin Jul 1, 2026
85e8ac3
feat(data): another redesigned lab section
adamdotdevin Jul 1, 2026
3706b33
feat(stats): use catalog descriptions
adamdotdevin Jul 1, 2026
5668d36
chore: generate
opencode-agent[bot] Jul 1, 2026
beb586a
fix(stats): refine lab page tooltips
adamdotdevin Jul 1, 2026
fc29f99
fix(stats): include locale header in vary (#34789)
adamdotdevin Jul 1, 2026
3df5556
zen: new inference
fwang Jul 1, 2026
f266e82
fix(desktop): keep window tabs across app close (#34807)
Hona Jul 1, 2026
3cf7180
fix(app): stabilize session timeline layout continuity (#34533)
Hona Jul 2, 2026
917eca4
feat(desktop): refine session tab preview popover (#34792)
usrnk1 Jul 2, 2026
4de7e90
fix(ui): raise v2 tooltip layer (#34455)
opencode-agent[bot] Jul 2, 2026
b393499
chore: update nix node_modules hashes
opencode-agent[bot] Jul 2, 2026
6ca60d9
fix(opencode): update Cerebras SDK reasoning replay (#34826)
opencode-agent[bot] Jul 2, 2026
a39db9c
chore: update nix node_modules hashes
opencode-agent[bot] Jul 2, 2026
39dfbb5
fix(app): resolve target session lineage outside router transition (#…
Hona Jul 2, 2026
d6b8971
chore: generate
opencode-agent[bot] Jul 2, 2026
a0d64b1
fix(opencode): filter session list by resolved instance directory (#3…
Hona Jul 2, 2026
5fecf7a
fix(app): only allow \(...\) syntax for inline latex (#34850)
Brendonovich Jul 2, 2026
27c9b13
test(opencode): cover Windows session list directory spellings (#34857)
Hona Jul 2, 2026
1fb2ecc
fix(app): scope session tab indicators to the tab's server (#34861)
Hona Jul 2, 2026
403164a
chore: generate
opencode-agent[bot] Jul 2, 2026
4023359
fix(app): clear original prompt after retarget (#34863)
Brendonovich Jul 2, 2026
fbb95a6
fix(app): seed session status before warming session info (#34864)
Hona Jul 2, 2026
7d26186
feat(app): v2 review panel overhaul (#31882)
arvsrn Jul 2, 2026
4a42cae
fix(app): keep terminal mounted when switching session tabs in a work…
Hona Jul 2, 2026
f52424e
fix(ui): resolve toast icon inside the toast component (#34874)
Hona Jul 2, 2026
373cd08
fix(copilot): honor advertised model endpoints (#34958)
rekram1-node Jul 2, 2026
7457139
fix(stats): polish lab pages
adamdotdevin Jul 2, 2026
299daa2
feat(stats): redesign model hero
adamdotdevin Jul 2, 2026
5ecd19d
chore: generate
opencode-agent[bot] Jul 2, 2026
3adfb97
feat(tui): add debug info dialog with copy to clipboard (#35004)
StarpTech Jul 2, 2026
cb54824
zen: new inference
fwang Jul 3, 2026
20b090e
zen: new inference
fwang Jul 3, 2026
c07ac0d
feat(app): navigate tabs on mousedown in new layout (#35042)
Hona Jul 3, 2026
6dba0cc
zen: new inference
fwang Jul 3, 2026
5455fed
zen: new inference
fwang Jul 3, 2026
04d236c
fix(app): keep v2 review pane mounted across session tab switches (#3…
Hona Jul 3, 2026
cb93114
feat: experimental codemode (#34677)
rekram1-node Jul 3, 2026
83c638e
chore: generate
opencode-agent[bot] Jul 3, 2026
2ef1a59
fix(ci): setup Node 24 before bun install for node-gyp (#35076)
Hona Jul 3, 2026
379adee
revert: back out experimental codemode (#35077)
rekram1-node Jul 3, 2026
2409c7a
feat(codemode): add confined execution package (#35079)
rekram1-node Jul 3, 2026
3f0fc22
chore: generate
opencode-agent[bot] Jul 3, 2026
7d48a22
chore: update nix node_modules hashes
opencode-agent[bot] Jul 3, 2026
eb34766
chore: remove root node-gyp pin after Node 24 setup (#35092)
rekram1-node Jul 3, 2026
bf58fae
feat(desktop): add recently closed projects to home (#34926)
usrnk1 Jul 3, 2026
4c6e2a9
feat(app): align subagent UI with v2 (#34931)
arvsrn Jul 3, 2026
caedf36
chore: generate
opencode-agent[bot] Jul 3, 2026
d46c02b
feat(desktop): papercut fixes (#34939)
usrnk1 Jul 3, 2026
458ec7b
refactor(opencode): expose MCP tools in native shape from the service…
rekram1-node Jul 3, 2026
a9144ec
feat(app): improvements to model search (#34954)
arvsrn Jul 3, 2026
30936a9
chore: generate
opencode-agent[bot] Jul 3, 2026
abaab29
feat(opencode): add code-mode MCP adapter (#35085)
rekram1-node Jul 3, 2026
72845e0
chore: generate
opencode-agent[bot] Jul 3, 2026
41a3cfc
chore: update nix node_modules hashes
opencode-agent[bot] Jul 3, 2026
a4fed69
feat(app): dropdown search fix (#34961)
arvsrn Jul 3, 2026
9aab24e
fix(opencode): provide Observability beneath all route service graphs…
kitlangton Jul 3, 2026
eba0bd0
chore: upgrade turbo (#35173)
jlongster Jul 3, 2026
7d84cb0
feat(stats): add model momentum section
adamdotdevin Jul 3, 2026
2152624
chore: generate
opencode-agent[bot] Jul 3, 2026
33ed95f
fix(core): rewrite replacements while hoisting layers (#35175)
jlongster Jul 3, 2026
1f47bbf
fix(stats): link market share labs
adamdotdevin Jul 3, 2026
1681547
chore: artifacts
adamdotdevin Jul 3, 2026
a09447b
chore: generate
opencode-agent[bot] Jul 3, 2026
39c6dd1
feat(tui): render code-mode execute tool with child calls (#35113)
rekram1-node Jul 3, 2026
27e8e2e
refactor(opencode): fail the execute tool on program failure (#35180)
rekram1-node Jul 3, 2026
911fb70
fix(tui): align execute child calls with task indentation (#35190)
rekram1-node Jul 3, 2026
96d53c6
refactor(core): move path resolve into fs service (#35202)
jlongster Jul 3, 2026
ed6dc87
feat(opencode): gate execute tool behind code mode flag (#35185)
rekram1-node Jul 3, 2026
436cd39
chore: generate
opencode-agent[bot] Jul 3, 2026
b44bc0a
cleanup: tweak compaction prompt (#35220)
opencode-agent[bot] Jul 3, 2026
933dbfd
fix(app): restore unfocused composer typing (#35249)
Hona Jul 3, 2026
8b6a2b1
fix(app): delay initial tab preview (#35266)
opencode-agent[bot] Jul 4, 2026
f63a451
fix(desktop): stabilize esm shim injection (#35270)
Hona Jul 4, 2026
a226767
fix(app): match new session panel corners (#35257)
Hona Jul 4, 2026
7a8e7c8
tui: preserve spinner registration (#35292)
simonklee Jul 4, 2026
bcbbf32
fix(app): use v2 tooltip for prompt context (#35351)
opencode-agent[bot] Jul 4, 2026
709af58
fix(core): stop after declined permissions (#35356)
opencode-agent[bot] Jul 4, 2026
a8983bd
feat(codemode): add OpenAPI tool adapter (#35192)
rekram1-node Jul 4, 2026
1b9b260
chore: generate
opencode-agent[bot] Jul 4, 2026
a12d50e
fix(app): hydrate timeline message parents (#35269)
Hona Jul 5, 2026
476e3fc
chore: generate
opencode-agent[bot] Jul 5, 2026
82db86e
feat(desktop): reopen closed tabs and background tab open (#35010)
usrnk1 Jul 5, 2026
78bca5c
chore: generate
opencode-agent[bot] Jul 5, 2026
7cf8d1c
feat(app): terminal improvements (#34747)
arvsrn Jul 5, 2026
7135bc4
chore: generate
opencode-agent[bot] Jul 5, 2026
efd5f0a
fix(app): preserve timeline selection autoscroll (#35383)
Hona Jul 5, 2026
b7e4f1e
fix: update Feishu community link (#35392)
MrMushrooooom Jul 5, 2026
f14eafe
refactor(codemode): remove generic agent tool (#35417)
rekram1-node Jul 5, 2026
be73f46
refactor(codemode): namespace public types (#35425)
rekram1-node Jul 5, 2026
d3459eb
test(mcp): replace module mocks with real servers (#35450)
rekram1-node Jul 5, 2026
e9f5d34
fix(tui): shorten home tips (#31966)
iamdavidhill Jul 5, 2026
68f225a
fix(provider): preserve OpenRouter small model effort (#35478)
opencode-agent[bot] Jul 5, 2026
2b34df9
fix(mcp): preserve metadata across tool pages (#35439)
rekram1-node Jul 6, 2026
e0ec9be
chore: update nix node_modules hashes
opencode-agent[bot] Jul 6, 2026
d4f7039
fix(codemode): unify catalog signatures (#35452)
rekram1-node Jul 6, 2026
e12cb7f
chore: generate
opencode-agent[bot] Jul 6, 2026
14df88e
fix(app): preserve provider dialog backdrop (#35370)
opencode-agent[bot] Jul 6, 2026
3a149ba
fix(app): optimize large review panes (#35375)
Hona Jul 6, 2026
38bb38e
refactor(app): unify provider connect dialog (#35518)
Brendonovich Jul 6, 2026
377d5d2
fix(app): avoid shortcut settings flash (#35349)
opencode-agent[bot] Jul 6, 2026
7f57d2a
feat(app): show draft server status in titlebar (#35521)
Brendonovich Jul 6, 2026
dffecb6
fix(desktop): gate first launch onboarding (#34930)
Brendonovich Jul 6, 2026
977a40a
chore: generate
opencode-agent[bot] Jul 6, 2026
b0e41ff
fix(app): use selected home project for new sessions (#35530)
Brendonovich Jul 6, 2026
561070f
deps: upgrade OpenTUI to v0.4.3 (#35226)
simonklee Jul 6, 2026
0df44c4
chore: generate
opencode-agent[bot] Jul 6, 2026
eb6ff0c
chore: update nix node_modules hashes
opencode-agent[bot] Jul 6, 2026
d5aa79c
feat(codemode): sync v2 implementation (#35574)
rekram1-node Jul 6, 2026
728e86b
chore: generate
opencode-agent[bot] Jul 6, 2026
203885d
sync release versions for v1.17.14
Jul 6, 2026
6cd5812
chore: merge dev into v2
rekram1-node Jul 6, 2026
451b643
chore: update merge branch with latest dev
rekram1-node Jul 6, 2026
7da1598
chore: update merge branch with latest v2
rekram1-node Jul 6, 2026
16a992c
fix(core): update permission tests for prompt input
rekram1-node Jul 6, 2026
497c665
chore: update merge branch with latest v2
rekram1-node Jul 6, 2026
627c0d0
fix(cli): align prompt attachment contract
rekram1-node Jul 6, 2026
9c23bc8
chore: update merge branch with latest v2
rekram1-node Jul 6, 2026
b2e819d
test(core): align AISDK fixtures with JSON settings
rekram1-node Jul 6, 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
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion README.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,4 +125,4 @@ OpenCode 内置两种 Agent,可用 `Tab` 键快速切换:

---

**加入我们的社区** [飞书](https://applink.feishu.cn/client/chat/chatter/add_by_link?link_token=738j8655-cd59-4633-a30a-1124e0096789&qr_code=true) | [X.com](https://x.com/opencode)
**加入我们的社区** [飞书](https://applink.feishu.cn/client/chat/chatter/add_by_link?link_token=52ao9352-5623-4fa0-b7dd-3407c392c1af&qr_code=true) | [X.com](https://x.com/opencode)
2 changes: 1 addition & 1 deletion README.zht.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,4 +125,4 @@ OpenCode 內建了兩種 Agent,您可以使用 `Tab` 鍵快速切換。

---

**加入我們的社群** [飞书](https://applink.feishu.cn/client/chat/chatter/add_by_link?link_token=738j8655-cd59-4633-a30a-1124e0096789&qr_code=true) | [X.com](https://x.com/opencode)
**加入我們的社群** [飞书](https://applink.feishu.cn/client/chat/chatter/add_by_link?link_token=52ao9352-5623-4fa0-b7dd-3407c392c1af&qr_code=true) | [X.com](https://x.com/opencode)
3 changes: 3 additions & 0 deletions artifacts/glm52-rise-video/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
node_modules
.remotion
out/frame-*.png
483 changes: 483 additions & 0 deletions artifacts/glm52-rise-video/bun.lock

Large diffs are not rendered by default.

Binary file added artifacts/glm52-rise-video/out/flash-share.mp4
Binary file not shown.
Binary file not shown.
Binary file added artifacts/glm52-rise-video/out/june-totals.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added artifacts/glm52-rise-video/out/minimax-climb.mp4
Binary file not shown.
Binary file added artifacts/glm52-rise-video/out/novel-1984.mp4
Binary file not shown.
Binary file added artifacts/glm52-rise-video/out/nz-sheep.mp4
Binary file not shown.
24 changes: 24 additions & 0 deletions artifacts/glm52-rise-video/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"name": "glm52-rise-video",
"private": true,
"type": "module",
"scripts": {
"render": "remotion render src/index.tsx GLM52Rise out/glm-52-broke-out.mp4 --codec h264 --pixel-format yuv420p",
"render:sheep": "remotion render src/index.tsx NZSheep out/nz-sheep.mp4 --codec h264 --pixel-format yuv420p",
"render:novel": "remotion render src/index.tsx NovelTokens out/novel-1984.mp4 --codec h264 --pixel-format yuv420p",
"render:flash": "remotion render src/index.tsx FlashShare out/flash-share.mp4 --codec h264 --pixel-format yuv420p",
"render:minimax": "remotion render src/index.tsx MiniMaxClimb out/minimax-climb.mp4 --codec h264 --pixel-format yuv420p",
"still:june": "remotion still src/index.tsx JuneTotals out/june-totals.png --frame=0"
},
"dependencies": {
"@remotion/cli": "^4.0.384",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"remotion": "^4.0.384"
},
"devDependencies": {
"@types/react": "^19.2.8",
"@types/react-dom": "^19.2.3",
"typescript": "^5.8.2"
}
}
Binary file added artifacts/glm52-rise-video/public/book.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added artifacts/glm52-rise-video/public/sheep.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
156 changes: 156 additions & 0 deletions artifacts/glm52-rise-video/src/data.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
// Verified against the production opencode-stats PlanetScale DB.
// Scope: tier='Go' (OpenCode Go), dataset='zen', client='all', source='all', grain='day'.
// metric = total_tokens. Daily token volume per model; GLM-5.2 (zhipu) launched Jun 17.
// Segments per day (tokens): glm-5.2, deepseek-v4-flash, deepseek-v4-pro, minimax-m3, all others.

export type Day = {
date: string
total: number
glm: number
dsf: number
dsp: number
mm: number
others: number
}

export const days: Day[] = [
{
date: "Jun 12",
total: 2_283_799_449_383,
glm: 0,
dsf: 1_176_701_653_509,
dsp: 569_527_034_307,
mm: 159_016_250_684,
others: 378_554_510_883,
},
{
date: "Jun 13",
total: 2_008_462_388_420,
glm: 0,
dsf: 995_338_131_997,
dsp: 445_817_536_548,
mm: 211_743_241_967,
others: 355_563_477_908,
},
{
date: "Jun 14",
total: 2_007_785_405_251,
glm: 0,
dsf: 983_954_176_228,
dsp: 428_151_999_341,
mm: 262_476_527_930,
others: 333_202_701_752,
},
{
date: "Jun 15",
total: 2_694_736_103_062,
glm: 0,
dsf: 1_255_893_953_859,
dsp: 632_223_338_376,
mm: 352_507_442_991,
others: 454_111_367_836,
},
{
date: "Jun 16",
total: 2_838_153_758_908,
glm: 0,
dsf: 1_336_625_283_800,
dsp: 676_480_415_730,
mm: 305_268_829_013,
others: 519_779_230_365,
},
{
date: "Jun 17",
total: 2_778_964_711_109,
glm: 70_095_977_043,
dsf: 1_339_831_523_555,
dsp: 660_414_395_220,
mm: 251_302_096_157,
others: 457_320_719_134,
},
{
date: "Jun 18",
total: 2_806_992_430_656,
glm: 201_130_231_172,
dsf: 1_295_599_996_869,
dsp: 595_665_008_776,
mm: 322_205_104_324,
others: 392_392_089_515,
},
{
date: "Jun 19",
total: 2_419_611_630_232,
glm: 199_086_413_910,
dsf: 1_115_750_468_802,
dsp: 475_965_869_304,
mm: 303_586_698_735,
others: 325_222_179_481,
},
{
date: "Jun 20",
total: 2_188_278_916_865,
glm: 193_931_516_396,
dsf: 1_050_194_681_012,
dsp: 395_303_435_278,
mm: 281_998_000_337,
others: 266_851_283_842,
},
{
date: "Jun 21",
total: 2_042_309_961_344,
glm: 181_894_043_118,
dsf: 985_164_570_580,
dsp: 368_194_079_542,
mm: 259_812_551_324,
others: 247_244_716_780,
},
{
date: "Jun 22",
total: 2_893_934_325_663,
glm: 301_759_048_475,
dsf: 1_298_124_282_989,
dsp: 581_012_596_194,
mm: 371_581_117_839,
others: 341_457_280_166,
},
{
date: "Jun 23",
total: 3_109_009_321_480,
glm: 282_277_235_158,
dsf: 1_423_571_678_821,
dsp: 627_374_654_587,
mm: 429_416_300_508,
others: 346_369_452_406,
},
{
date: "Jun 24",
total: 2_939_149_971_595,
glm: 256_497_442_533,
dsf: 1_373_583_023_234,
dsp: 601_270_997_775,
mm: 391_586_493_231,
others: 316_212_014_822,
},
{
date: "Jun 25",
total: 3_029_641_552_948,
glm: 256_279_657_734,
dsf: 1_481_084_002_776,
dsp: 602_077_167_287,
mm: 375_985_302_874,
others: 314_215_422_277,
},
]

export const launchIndex = 5 // Jun 17, first day of GLM-5.2 usage
// GLM-5.2 weekly token volume, Jun 19-25 (sum of glm): 1,671,725,357,324 = 1.67T
export const glmWeekTokensT = 1.672

// stacked segments, bottom -> top. GLM-5.2 is the hero (blue); the rest are the field it cut into.
export const segments = [
{ key: "glm", label: "GLM-5.2", color: "#3b5cf6", hero: true },
{ key: "dsf", label: "deepseek-v4-flash", color: "#9ca3ad" },
{ key: "dsp", label: "deepseek-v4-pro", color: "#b3b9c1" },
{ key: "mm", label: "minimax-m3", color: "#c8cdd3" },
{ key: "others", label: "other models", color: "#dde0e4" },
] as const
185 changes: 185 additions & 0 deletions artifacts/glm52-rise-video/src/flash.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,185 @@
import React from "react"
import { AbsoluteFill, Easing, interpolate, spring, useCurrentFrame, useVideoConfig } from "remotion"

// stats.opencode.ai design tokens (light theme)
const c = {
bg: "#ffffff",
ink: "#161616",
muted: "#5c5c5c",
faint: "#808080",
line: "#e6e6e6",
dot: "#e4e4e4",
gray: "#aab0b8",
accent: "#3b5cf6",
accentHi: "#5b78ff",
}
const MONO = '"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace'

const DOT_MASK =
"url(\"data:image/svg+xml,%3Csvg viewBox='0 0 6 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0H2V2H0V0Z' fill='black'/%3E%3C/svg%3E\")"

// verified: OpenCode Go, week of Jun 22-28, 2026 (2026-W26). share = % of 19.64T total Go tokens.
const bars = [
{ label: "deepseek-v4-flash", share: 48.3, hero: true },
{ label: "deepseek-v4-pro", share: 19.4 },
{ label: "minimax-m3", share: 13.0 },
{ label: "glm-5.2", share: 8.3 },
{ label: "mimo-v2.5", share: 4.3 },
{ label: "kimi-k2.7-code", share: 2.6 },
{ label: "other models", share: 4.1 },
]

function DataWordmark({ height = 30 }: { height?: number }) {
return (
<svg width={(height * 66) / 20} height={height} viewBox="0 0 66 20" fill="none" style={{ color: c.ink }}>
<path opacity="0.2" d="M12 16H4V8H12V16Z" fill="currentColor" />
<path d="M12 4H4V16H12V4ZM16 20H0V0H16V20Z" fill="currentColor" />
<path
d="M63.3543 16L62.5119 12.8711H58.6437L57.8013 16H55.7383L59.2454 4H61.9618L65.4689 16H63.3543ZM61.0678 7.851L60.6896 5.94269H60.4489L60.0707 7.851L59.1595 11.1347H61.9962L61.0678 7.851Z"
fill="currentColor"
/>
<path d="M52.5951 5.87392V16H50.4461V5.87392H47.4375V4H55.6209V5.87392H52.5951Z" fill="currentColor" />
<path
d="M45.2059 16L44.3635 12.8711H40.4953L39.6529 16H37.5898L41.097 4H43.8133L47.3205 16H45.2059ZM42.9194 7.851L42.5411 5.94269H42.3004L41.9222 7.851L41.011 11.1347H43.8477L42.9194 7.851Z"
fill="currentColor"
/>
<path
d="M28 4H32.0917C32.8138 4 33.4556 4.11461 34.0172 4.34384C34.5903 4.5616 35.0716 4.9169 35.4613 5.40974C35.8625 5.89112 36.1662 6.51003 36.3725 7.26648C36.5788 8.02292 36.6819 8.9341 36.6819 10C36.6819 11.0659 36.5788 11.9771 36.3725 12.7335C36.1662 13.49 35.8625 14.1146 35.4613 14.6075C35.0716 15.0888 34.5903 15.4441 34.0172 15.6734C33.4556 15.8911 32.8138 16 32.0917 16H28V4ZM32.0917 14.1261C32.8252 14.1261 33.3926 13.9026 33.7937 13.4556C34.1948 12.9971 34.3954 12.3152 34.3954 11.4097V8.59026C34.3954 7.68481 34.1948 7.0086 33.7937 6.5616C33.3926 6.10315 32.8252 5.87392 32.0917 5.87392H30.149V14.1261H32.0917Z"
fill="currentColor"
/>
</svg>
)
}

export function FlashShare() {
const frame = useCurrentFrame()
const { fps } = useVideoConfig()

const grow = (i: number) =>
Math.min(
1,
Math.max(0, spring({ frame: frame - 18 - i * 7, fps, config: { damping: 18, stiffness: 120, mass: 0.6 } })),
)

return (
<AbsoluteFill style={{ background: c.bg, color: c.ink, fontFamily: MONO, padding: 72, boxSizing: "border-box" }}>
<div style={{ height: "100%", display: "flex", flexDirection: "column" }}>
{/* header */}
<div style={{ display: "flex", justifyContent: "space-between", alignItems: "center" }}>
<DataWordmark height={30} />
<div style={{ fontSize: 20, fontWeight: 500, color: c.faint, letterSpacing: 1 }}>JUN 22–28, 2026</div>
</div>

{/* headline (static) */}
<div style={{ marginTop: 50 }}>
<div style={{ fontSize: 23, fontWeight: 600, color: c.muted, letterSpacing: 2 }}>
OPENCODE GO · SHARE OF TOKENS
</div>
<div
style={{ display: "flex", justifyContent: "space-between", alignItems: "baseline", gap: 24, marginTop: 14 }}
>
<div style={{ fontSize: 62, fontWeight: 600, letterSpacing: -2, lineHeight: 1 }}>DeepSeek V4 Flash</div>
<div
style={{
fontSize: 88,
fontWeight: 600,
letterSpacing: -2,
lineHeight: 1,
color: c.accent,
fontVariantNumeric: "tabular-nums",
}}
>
48%
</div>
</div>
</div>

{/* bar chart */}
<div style={{ flex: 1, display: "flex", flexDirection: "column", justifyContent: "center", gap: 16 }}>
{bars.map((b, i) => {
const g = grow(i)
const pct = b.share * g
return (
<div key={b.label} style={{ display: "flex", alignItems: "center", gap: 18 }}>
<div
style={{
width: 268,
fontSize: 23,
fontWeight: b.hero ? 600 : 500,
color: b.hero ? c.ink : c.muted,
textAlign: "right",
whiteSpace: "nowrap",
}}
>
{b.label}
</div>
<div style={{ position: "relative", flex: 1, height: 48 }}>
{/* dotted 100% track — height is a multiple of the 12px tile, anchored bottom, so dots never clip */}
<div
style={{
position: "absolute",
inset: 0,
background: c.dot,
WebkitMaskImage: DOT_MASK,
maskImage: DOT_MASK,
WebkitMaskSize: "12px 12px",
maskSize: "12px 12px",
WebkitMaskRepeat: "repeat",
maskRepeat: "repeat",
WebkitMaskPosition: "left bottom",
maskPosition: "left bottom",
}}
/>
{/* fill */}
<div
style={{
position: "absolute",
left: 0,
top: 0,
bottom: 0,
width: `${pct}%`,
background: b.hero ? c.accent : c.gray,
borderRight: b.hero ? `2px solid ${c.accentHi}` : "none",
}}
/>
</div>
<div
style={{
width: 84,
fontSize: 24,
fontWeight: b.hero ? 600 : 500,
color: b.hero ? c.accent : c.muted,
textAlign: "right",
fontVariantNumeric: "tabular-nums",
}}
>
{Math.round(pct)}%
</div>
</div>
)
})}
</div>

{/* footer */}
<div
style={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
marginTop: 24,
paddingTop: 22,
borderTop: `1px solid ${c.line}`,
fontSize: 20,
fontWeight: 500,
}}
>
<div style={{ display: "inline-flex", alignItems: "center", gap: 9, color: c.muted }}>
<span style={{ width: 13, height: 13, background: c.accent, display: "inline-block" }} />
DeepSeek V4 Flash · 9.48T tokens · 83.6M requests
</div>
<div style={{ color: c.ink }}>opencode.ai/data</div>
</div>
</div>
</AbsoluteFill>
)
}
Loading
Loading