Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
558 commits
Select commit Hold shift + click to select a range
2bccfd7
chore: fix some norwegian i18n issues (#12935)
omBratteng Feb 10, 2026
0732ab3
fix: use absolute paths for sidebar session navigation (#12898)
riftzen-bit Feb 10, 2026
8779538
chore: fix typos and GitHub capitalization (#12852)
PeterDaveHello Feb 10, 2026
19ad7ad
chore: fix test
adamdotdevin Feb 10, 2026
4c4e30c
fix(docs): locale translations
adamdotdevin Feb 10, 2026
c607c01
chore: fix e2e tests
adamdotdevin Feb 10, 2026
18b6257
chore: generate
opencode-agent[bot] Feb 10, 2026
65c9669
test(e2e): redo & undo test (#12974)
neriousy Feb 10, 2026
1e03a55
fix(app): persist defensiveness (#12973)
adamdotdevin Feb 10, 2026
27fa9dc
refactor: clean up dialog-model.tsx per code review (#12983)
thdxr Feb 10, 2026
6f5dfe1
fix(app): use agent configured variant (#12993)
adamdotdevin Feb 10, 2026
3929f0b
fix(app): terminal replay (#12991)
adamdotdevin Feb 10, 2026
70c794e
fix(app): regressions
adamdotdevin Feb 10, 2026
2c57607
chore: translator agent
adamdotdevin Feb 10, 2026
284b00f
fix(app): don't dispose instance after reset workspace
adamdotdevin Feb 10, 2026
d1f5b9e
fix(app): memory leak with event fetch
adamdotdevin Feb 10, 2026
659f15a
fix(app): no changes in review pane
adamdotdevin Feb 10, 2026
7d5be15
wip: zen
fwang Feb 10, 2026
d863a9c
fix(app): global event default fetch
adamdotdevin Feb 10, 2026
eb25878
zen: retry on 429
fwang Feb 10, 2026
a3aad9c
fix(app): include basic auth
adamdotdevin Feb 10, 2026
1e2f664
fix(app): back to platform fetch for now
adamdotdevin Feb 10, 2026
1d11a0a
release: v1.1.54
Feb 10, 2026
8bdf6fa
fix: show helpful message when free usage limit is exceeded (#13005)
thdxr Feb 10, 2026
80220ce
fix(app): disable terminal transparency
adamdotdevin Feb 10, 2026
fc37337
fix(app): memory leak with platform fetch for events
adamdotdevin Feb 10, 2026
a067325
core: increase test timeout to 30s to prevent failures during package…
thdxr Feb 10, 2026
fbc4147
release: v1.1.55
Feb 10, 2026
fd55313
fix(docs): locale translations
adamdotdevin Feb 10, 2026
5511955
fix(app): don't scroll code search input
adamdotdevin Feb 10, 2026
4f6b929
chore: generate
opencode-agent[bot] Feb 10, 2026
92a77b7
fix(app): don't close sidebar on session change (#13013)
adamdotdevin Feb 10, 2026
8c56571
zen: log error
fwang Feb 10, 2026
dce4c05
fix(desktop): open apps with executables on Windows (#13022)
neriousy Feb 10, 2026
21475a1
fix(docs): invalid markdown
adamdotdevin Feb 10, 2026
50f3e74
fix(app): task tool rendering
adamdotdevin Feb 10, 2026
1bbbd51
release: v1.1.56
Feb 10, 2026
66c2bb8
chore: update website stats
adamdotdevin Feb 10, 2026
3894c21
wip: zen
fwang Feb 10, 2026
50c705c
fix(docs): locale translations
adamdotdevin Feb 10, 2026
3ea58bb
wip: zen
fwang Feb 10, 2026
7a3c775
wip: zen
fwang Feb 10, 2026
0afa6e0
wip: zen
fwang Feb 10, 2026
39145b9
wip: zen
fwang Feb 10, 2026
2455633
wip: zen
fwang Feb 10, 2026
a90b622
Update VOUCHED list
github-actions[bot] Feb 11, 2026
53ec15a
fix(tui): improve amazon-bedrock check to include container credentia…
OpeOginni Feb 11, 2026
6e9cd57
fix(tui): default session sidebar to auto (#13046)
thdxr Feb 11, 2026
60bdb6e
tweak: /review prompt to look for behavior changes more explicitly (#…
rekram1-node Feb 11, 2026
0fd6f36
fix(core): ensure compaction is more reliable, add reserve token buff…
rekram1-node Feb 11, 2026
c6ec2f4
chore: generate
opencode-agent[bot] Feb 11, 2026
8c120f2
docs: remove 'Migrating to 1.0' documentation section (#13076)
ariane-emory Feb 11, 2026
22125d1
wip: zen
fwang Feb 11, 2026
d98bd4b
fix: add additional context overflow cases, remove overcorrecting one…
rekram1-node Feb 11, 2026
213a872
feat(desktop): add WSL backend mode (#12914)
Brendonovich Feb 11, 2026
7838881
fix(desktop): read wayland preference from store (#13081)
Brendonovich Feb 11, 2026
7e1247c
fix(desktop): server spawn resilience (#13028)
adamdotdevin Feb 11, 2026
b523998
fix(docs): avoid footer language selector truncation (#13124)
webwww123 Feb 11, 2026
567e094
docs(ko): improve translations for intro, cli, and commands (#13094)
Seungjun0906 Feb 11, 2026
5ba4c0e
chore: generate
opencode-agent[bot] Feb 11, 2026
cf7a1b8
feat(desktop): enhance Windows app resolution and UI loading states (…
neriousy Feb 11, 2026
8bfd6fd
fix: encode non-ASCII directory paths in v1 SDK HTTP headers (#13131)
MrMushrooooom Feb 11, 2026
a25b2af
desktop: use tracing for logging (#13135)
Brendonovich Feb 11, 2026
dd1862c
fix(web): prevent language select label truncation (#13100)
taroj1205 Feb 11, 2026
c426cb0
fix(app): copy path button styles
adamdotdevin Feb 11, 2026
ef5ec5d
fix(app): terminal copy/paste
adamdotdevin Feb 11, 2026
edcfd56
release: v1.1.57
Feb 11, 2026
93957da
fix(tui): prevent home wordmark corruption in height-constrained term…
kitlangton Feb 11, 2026
352a54c
feat(prompt): mode-specific input placeholders (#12388)
kitlangton Feb 11, 2026
7a463cd
fix(tui): keep /share available to copy existing link (#12532)
kitlangton Feb 11, 2026
17bdb5d
fix(tui): dismiss dialogs with ctrl+c (#12884)
kitlangton Feb 11, 2026
7222fc0
fix(app): terminal resize
adamdotdevin Feb 11, 2026
5033082
fix(console): translations
adamdotdevin Feb 11, 2026
8c5ba8a
fix(app): terminal PTY buffer carryover
adamdotdevin Feb 11, 2026
a52fe28
fix(app): notifications on child sessions
adamdotdevin Feb 11, 2026
2e8082d
Revert "feat(desktop): add WSL backend mode (#12914)"
adamdotdevin Feb 11, 2026
4dc363f
release: v1.1.58
Feb 11, 2026
4619e9d
fix(app): sidebar remount
adamdotdevin Feb 11, 2026
fc88dde
test(app): more e2e tests (#13162)
adamdotdevin Feb 11, 2026
eef3ae3
Fix/reverception (#13166)
neriousy Feb 11, 2026
f252e32
fix(app): translations
adamdotdevin Feb 11, 2026
42bea5d
release: v1.1.59
Feb 11, 2026
94cb639
chore: generate
opencode-agent[bot] Feb 11, 2026
81b5a6a
fix(app):workspace reset (#13170)
neriousy Feb 11, 2026
8f56ed5
chore: generate
opencode-agent[bot] Feb 11, 2026
fbabce1
fix(app): translations
adamdotdevin Feb 11, 2026
6b30e0b
chore: update docs sync workflow
adamdotdevin Feb 11, 2026
e347152
add square logo variants to brand page
thdxr Feb 11, 2026
6b4d617
feat: adjust read tool so that it can handle dirs too (#13090)
rekram1-node Feb 11, 2026
006d673
tweak: make read tool offset 1 indexed instead of 0 to avoid confusio…
rekram1-node Feb 11, 2026
e2a33f7
Update VOUCHED list
github-actions[bot] Feb 11, 2026
8c7b35a
tweak: compaction check (#13214)
rekram1-node Feb 11, 2026
125727d
upgrade opentui to 0.1.79 (#13036)
kommander Feb 11, 2026
264dd21
chore: update nix node_modules hashes
opencode-agent[bot] Feb 11, 2026
c856f87
chore: upgrade bun to 1.3.9 (#13223)
Hona Feb 11, 2026
8577eb8
chore: update nix node_modules hashes
opencode-agent[bot] Feb 11, 2026
3befd0c
tweak: use promise all for mcp listTools calls (#13229)
rekram1-node Feb 12, 2026
8eea53a
docs(ar): second-pass localization cleanup
adamdotdevin Feb 11, 2026
aea68c3
fix(docs): locale translations for nav elements and headings
adamdotdevin Feb 12, 2026
81ca2df
fix(app): guard randomUUID in insecure browser contexts (#13237)
adamdotdevin Feb 12, 2026
bf5a01e
feat(opencode): Venice Add automatic variant generation for Venice mo…
dpuyosa Feb 12, 2026
135f8ff
feat(tui): add toggle to hide session header (#13244)
kitlangton Feb 12, 2026
5bdf1c4
Update VOUCHED list
github-actions[bot] Feb 12, 2026
ad20870
support custom api url per model
thdxr Feb 12, 2026
6678019
chore: generate
opencode-agent[bot] Feb 12, 2026
e269788
feat: support claude agent SDK-style structured outputs in the OpenCo…
K-Mistele Feb 12, 2026
f6e7aef
chore: generate
opencode-agent[bot] Feb 12, 2026
8f9742d
fix(win32): use ffi to get around bun raw input/ctrl+c issues (#13052)
Hona Feb 12, 2026
03de51b
release: v1.1.60
Feb 12, 2026
d86f24b
zen: return cost
fwang Feb 12, 2026
624dd94
tweak: tool outputs to be more llm friendly (#13269)
rekram1-node Feb 12, 2026
1413d77
desktop: sqlite migration progress bar (#13294)
Brendonovich Feb 12, 2026
0eaeb45
Testing SignPath Integration (#13308)
Brendonovich Feb 12, 2026
fa97475
ci: move test-sigining policy
Brendonovich Feb 12, 2026
5f42188
chore: style loading screen
adamdotdevin Feb 12, 2026
ecb2742
wip(ui): diff virtualization (#12693)
adamdotdevin Feb 12, 2026
9f9f0fb
chore: update nix node_modules hashes
opencode-agent[bot] Feb 12, 2026
d723147
feat: update to not post comment on workflows when no duplicates foun…
R44VC0RP Feb 12, 2026
d82d22b
wip: zen
fwang Feb 12, 2026
a115565
core: allow model configurations without npm/api provider details
thdxr Feb 12, 2026
892bb75
release: v1.1.61
Feb 12, 2026
85df106
chore: generate
opencode-agent[bot] Feb 12, 2026
ae811ad
wip: zen
fwang Feb 12, 2026
56ad2db
core: expose tool arguments in shell hook for plugin visibility
thdxr Feb 12, 2026
ff4414b
chore: refactor packages/app files (#13236)
adamdotdevin Feb 12, 2026
ed472d8
fix(app): more defensive session context metrics
adamdotdevin Feb 12, 2026
a82ca86
fix(app): more defensive code component
adamdotdevin Feb 12, 2026
658bf6f
zen: minimax m2.5
fwang Feb 12, 2026
59a323e
wip: zen
fwang Feb 12, 2026
ecab692
fix(docs): correct `format` attribute in `StructuredOutputs` (#13340)
dtfiedler Feb 12, 2026
2db618d
fix: downgrade bun to 1.3.5 (#13347)
rekram1-node Feb 12, 2026
847e06f
chore: update nix node_modules hashes
opencode-agent[bot] Feb 12, 2026
ba54cee
feat(tool): return image attachments from webfetch (#13331)
R44VC0RP Feb 12, 2026
789705e
ignore: document test fixtures for agents
thdxr Feb 12, 2026
da95213
chore(app): refactor for better solidjs hygiene (#13344)
adamdotdevin Feb 12, 2026
0771e3a
fix(app): preserve undo history for plain-text paste (#13351)
gitRasheed Feb 12, 2026
ff0abac
fix(app): project icons unloading
adamdotdevin Feb 12, 2026
aaee5fb
release: v1.1.62
Feb 12, 2026
e6e9c15
improve codex model list
thdxr Feb 12, 2026
ac018e3
release: v1.1.63
Feb 12, 2026
d1ee4c8
test: add more test cases for project.test.ts (#13355)
rekram1-node Feb 12, 2026
958320f
fix(app): remote http server connections
adamdotdevin Feb 12, 2026
50f208d
fix(app): suggestion active state broken
adamdotdevin Feb 12, 2026
3696d1d
chore: cleanup
adamdotdevin Feb 12, 2026
81c623f
chore: cleanup
adamdotdevin Feb 12, 2026
e9b9a62
chore: cleanup
adamdotdevin Feb 12, 2026
7ccf223
chore: cleanup
adamdotdevin Feb 12, 2026
70303d0
chore: cleanup
adamdotdevin Feb 12, 2026
ff3b174
fix(app): normalize oauth error messages
adamdotdevin Feb 12, 2026
4e0f509
feat(app): option to turn off sound effects
adamdotdevin Feb 12, 2026
548608b
fix(app): terminal pty isolation
adamdotdevin Feb 12, 2026
11dd281
docs: update STACKIT provider documentation with typo fix (#13357)
amankalra172 Feb 12, 2026
20dcff1
chore: generate
opencode-agent[bot] Feb 12, 2026
c0814da
do not open console on error (#13374)
kommander Feb 12, 2026
a8f2884
feat: windows selection behavior, manual ctrl+c (#13315)
Hona Feb 12, 2026
4018c86
fix: baseline CPU detection (#13371)
Hona Feb 12, 2026
445e0d7
chore: update nix node_modules hashes
opencode-agent[bot] Feb 12, 2026
93eee0d
fix: look for recent model in fallback in cli (#12582)
smitchaudhary Feb 12, 2026
d475fd6
chore: generate
opencode-agent[bot] Feb 12, 2026
f66624f
chore: cleanup flag code (#13389)
rekram1-node Feb 12, 2026
29671c1
fix: token substitution in OPENCODE_CONFIG_CONTENT (#13384)
ariane-emory Feb 12, 2026
76db218
release: v1.1.64
Feb 12, 2026
991496a
fix: resolve ACP hanging indefinitely in thinking state on Windows (#…
ASidorenkoCode Feb 13, 2026
adb0c4d
desktop: only show loading window if sqlite migration is necessary
Brendonovich Feb 13, 2026
0303c29
fix(app): failed to create store
adamdotdevin Feb 13, 2026
8da5fd0
fix(app): worktree delete
adamdotdevin Feb 13, 2026
b525c03
chore: cleanup
adamdotdevin Feb 13, 2026
7f95cc6
fix(app): prompt input quirks
adamdotdevin Feb 13, 2026
c9719df
fix(app): notification should navigate to session
adamdotdevin Feb 13, 2026
dec304a
fix(app): emoji as avatar
adamdotdevin Feb 13, 2026
e0f1c3c
cleanup desktop loading page
Brendonovich Feb 13, 2026
fb7b2f6
feat(app): toggle all provider models
adamdotdevin Feb 13, 2026
dd296f7
fix(app): reconnect event stream on disconnect
adamdotdevin Feb 13, 2026
b06afd6
ci: remove signpath policy
Brendonovich Feb 13, 2026
1608565
feat(hook): add tool.definition hook for plugins to modify tool descr…
spoons-and-mirrors Feb 13, 2026
98aeb60
fix: ensure @-ing a dir uses the read tool instead of dead list tool …
rekram1-node Feb 13, 2026
1fb6c0b
Revert "fix: token substitution in OPENCODE_CONFIG_CONTENT" (#13429)
rekram1-node Feb 13, 2026
34ebe81
release: v1.1.65
Feb 13, 2026
0d90a22
feat: update some ai sdk packages and uuse adaptive reasoning for opu…
rekram1-node Feb 13, 2026
693127d
feat(cli): add --dir option to run command (#12443)
BlankParticle Feb 13, 2026
b8ee882
chore: update nix node_modules hashes
opencode-agent[bot] Feb 13, 2026
ebb907d
fix(desktop): performance optimization for showing large diff & files…
neriousy Feb 13, 2026
9f20e0d
fix(web): sync docs locale cookie on alias redirects (#13109)
Seungjun0906 Feb 13, 2026
ebe5a2b
fix(app): remount SDK/sync tree when server URL changes (#13437)
ysm-dev Feb 13, 2026
b1764b2
docs: Fix zh-cn translation mistake in tools.mdx (#13407)
Annopick Feb 13, 2026
f991a6c
chore: generate
opencode-agent[bot] Feb 13, 2026
e242fe1
fix(web): use prompt_async endpoint to avoid timeout over VPN/tunnel …
eytans Feb 13, 2026
1c71604
fix(app): terminal resize
adamdotdevin Feb 13, 2026
4f51c09
chore: cleanup
adamdotdevin Feb 13, 2026
b8848cf
docs(ko): polish Korean phrasing in acp, agents, config, and custom-t…
Seungjun0906 Feb 13, 2026
88e2eb5
docs: add pacman installation option for Arch Linux alongside AUR (#1…
G36maid Feb 13, 2026
bc1fd06
fix(test): move timeout config to CLI flag (#13494)
yanhao98 Feb 13, 2026
72c09e1
fix: standardize zh-CN docs character set and terminology (#13500)
niushuai1991 Feb 13, 2026
d30e917
fix(ui): support cmd-click links in inline code (#12552)
kitlangton Feb 13, 2026
d018903
fix: prevent opencode run crash on malformed tool inputs (#13051)
0xK3vin Feb 14, 2026
6d95f0d
sqlite again (#10597)
thdxr Feb 14, 2026
afb04ed
chore: generate
opencode-agent[bot] Feb 14, 2026
7d46872
desktop: remote OPENCODE_SQLITE env (#13545)
Brendonovich Feb 14, 2026
d0dcffe
chore: update nix node_modules hashes
opencode-agent[bot] Feb 14, 2026
0b9e929
desktop: fix rust
Brendonovich Feb 14, 2026
ffc000d
release: v1.2.0
Feb 14, 2026
1e25df2
zen: minimax m2.5 & glm5
fwang Feb 14, 2026
179c407
fix: tweak websearch tool description date info to avoid cache busts …
rekram1-node Feb 14, 2026
b020758
tui: show all project sessions from any working directory
thdxr Feb 14, 2026
cd775a2
release: v1.2.1
Feb 14, 2026
ed439b2
ci: test-signing signpath policy
Brendonovich Feb 14, 2026
df3203d
ci: move signpath policy
Brendonovich Feb 14, 2026
ef205c3
bump vertex ai packages (#13625)
rekram1-node Feb 14, 2026
759ec10
fix vercel gateway variants (#13541)
rekram1-node Feb 14, 2026
306fc77
chore: update nix node_modules hashes
opencode-agent[bot] Feb 14, 2026
68bb8ce
core: filter sessions at database level to improve session list loadi…
thdxr Feb 14, 2026
8631d6c
core: add comprehensive test coverage for Session.list() filters
thdxr Feb 14, 2026
3b6b3e6
release: v1.2.2
Feb 14, 2026
933a491
fix: ensure vercel variants pass amazon models under bedrock key (#13…
rekram1-node Feb 14, 2026
575f2cf
chore: bump nixpkgs to get bun 1.3.9 (#13302)
albertov Feb 14, 2026
67c985c
fix: add WAL checkpoint on database open (#13633)
thdxr Feb 14, 2026
839c5cd
fix: ensure anthropic models on OR also have variant support (#13498)
rekram1-node Feb 14, 2026
7911cb6
chore: update nix node_modules hashes
opencode-agent[bot] Feb 14, 2026
c190f5f
release: v1.2.3
Feb 15, 2026
460a87f
fix(app): stack overflow in filetree (#13667)
adamdotdevin Feb 15, 2026
85b5f5b
feat(app): clear notifications action (#13668)
adamdotdevin Feb 15, 2026
2bab5e8
fix: derive all IDs from file paths during json migration
thdxr Feb 15, 2026
b5c8bd3
test: add tests for path-derived IDs in json migration
thdxr Feb 15, 2026
45f0050
core: add db command for database inspection and querying
thdxr Feb 15, 2026
d1482e1
release: v1.2.4
Feb 15, 2026
eb553f5
fix: ensure sqlite migration logs to stderr instead of stdout (#13691)
rekram1-node Feb 15, 2026
985c2a3
feat: Add GeistMono Nerd Font to available mono font options (#13720)
brandon-julio-t Feb 15, 2026
3aaa34b
fix(desktop): focus window after update/relaunch (#13701)
zerone0x Feb 15, 2026
3761121
docs: add Ukrainian README translation (#13697)
dector Feb 15, 2026
878ddc6
fix(app): keybind [shift+tab] (#13695)
neriousy Feb 15, 2026
3c85cf4
fix(app): only navigate prompt history at input boundaries (#13690)
nexxeln Feb 15, 2026
cf50a28
fix(desktop): issue viewing new files opened from the file tree (#13689)
shanebishop1 Feb 15, 2026
3a3aa30
feat(app): localize "free usage exceeded" error & "Add credits" click…
alexyaroshuk Feb 15, 2026
62a24c2
release: v1.2.5
Feb 15, 2026
9b23130
feat(opencode): add `cljfmt` formatter support for Clojure files (#13…
finalfantasia Feb 15, 2026
d9363da
fix(website): correct zh-CN translation of proprietary terms in zen.m…
pkx07 Feb 15, 2026
21e0778
chore: generate
opencode-agent[bot] Feb 15, 2026
920255e
desktop: use process-wrap instead of manual job object (#13431)
Brendonovich Feb 16, 2026
afd0716
feat(opencode): Add Venice support in temperature, topP, topK and sma…
dpuyosa Feb 16, 2026
6080784
fix(desktop): normalize Linux Wayland/X11 backend and decoration poli…
bnema Feb 16, 2026
f7708ef
feat: add openai-compatible endpoint support for google-vertex provid…
leehack Feb 16, 2026
089ab9d
chore: generate
opencode-agent[bot] Feb 16, 2026
1d041c8
fix: google vertex var priority (#13816)
rekram1-node Feb 16, 2026
3ebf27a
fix(docs): correct critical translation errors in Russian zen page (#…
hobostay Feb 16, 2026
45fa5e7
fix(core): remove unnecessary per-message title LLM calls (#13804)
rmk40 Feb 16, 2026
3420eb4
(feat) customizable subagent config and system env prompt
pschiel Dec 31, 2025
d988bfb
gpt subagent fix
pschiel Jan 28, 2026
d168f47
resolve slop
pschiel Jan 28, 2026
d4d83b2
agents_md option
pschiel Jan 29, 2026
f6bb1bd
cfg not in req
pschiel Feb 16, 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
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# web + desktop packages
packages/app/ @adamdotdevin
packages/tauri/ @adamdotdevin
packages/desktop/src-tauri/ @brendonovich
packages/desktop/ @adamdotdevin
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
blank_issues_enabled: true
blank_issues_enabled: false
contact_links:
- name: 💬 Discord Community
url: https://discord.gg/opencode
Expand Down
21 changes: 21 additions & 0 deletions .github/VOUCHED.td
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Vouched contributors for this project.
#
# See https://github.com/mitchellh/vouch for details.
#
# Syntax:
# - One handle per line (without @), sorted alphabetically.
# - Optional platform prefix: platform:username (e.g., github:user).
# - Denounce with minus prefix: -username or -platform:username.
# - Optional details after a space following the handle.
adamdotdevin
ariane-emory
-florianleibert
fwang
iamdavidhill
jayair
kitlangton
kommander
r44vc0rp
rekram1-node
-spider-yamet clawdbot/llm psychosis, spam pinging the team
thdxr
2 changes: 1 addition & 1 deletion .github/actions/setup-bun/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ runs:
- name: Mount Bun Cache
uses: useblacksmith/stickydisk@v1
with:
key: ${{ github.repository }}-bun-cache
key: ${{ github.repository }}-bun-cache-${{ runner.os }}
path: ~/.bun

- name: Setup Bun
Expand Down
2 changes: 1 addition & 1 deletion .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
### What does this PR do?

Please provide a description of the issue (if there is one), the changes you made to fix it, and why they work. It is expected that you understand why your changes work and if you do not understand why at least say as much so a maintainer knows how much to value the pr.
Please provide a description of the issue (if there is one), the changes you made to fix it, and why they work. It is expected that you understand why your changes work and if you do not understand why at least say as much so a maintainer knows how much to value the PR.

**If you paste a large clearly AI generated description here your PR may be IGNORED or CLOSED!**

Expand Down
86 changes: 86 additions & 0 deletions .github/workflows/compliance-close.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
name: compliance-close

on:
schedule:
# Run every 30 minutes to check for expired compliance windows
- cron: "*/30 * * * *"
workflow_dispatch:

permissions:
contents: read
issues: write
pull-requests: write

jobs:
close-non-compliant:
runs-on: ubuntu-latest
steps:
- name: Close non-compliant issues and PRs after 2 hours
uses: actions/github-script@v7
with:
script: |
const { data: items } = await github.rest.issues.listForRepo({
owner: context.repo.owner,
repo: context.repo.repo,
labels: 'needs:compliance',
state: 'open',
per_page: 100,
});
if (items.length === 0) {
core.info('No open issues/PRs with needs:compliance label');
return;
}
const now = Date.now();
const twoHours = 2 * 60 * 60 * 1000;
for (const item of items) {
const isPR = !!item.pull_request;
const kind = isPR ? 'PR' : 'issue';
const { data: comments } = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: item.number,
});
const complianceComment = comments.find(c => c.body.includes('<!-- issue-compliance -->'));
if (!complianceComment) continue;
const commentAge = now - new Date(complianceComment.created_at).getTime();
if (commentAge < twoHours) {
core.info(`${kind} #${item.number} still within 2-hour window (${Math.round(commentAge / 60000)}m elapsed)`);
continue;
}
const closeMessage = isPR
? 'This pull request has been automatically closed because it was not updated to meet our [contributing guidelines](../blob/dev/CONTRIBUTING.md) within the 2-hour window.\n\nFeel free to open a new pull request that follows our guidelines.'
: 'This issue has been automatically closed because it was not updated to meet our [contributing guidelines](../blob/dev/CONTRIBUTING.md) within the 2-hour window.\n\nFeel free to open a new issue that follows our issue templates.';
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: item.number,
body: closeMessage,
});
if (isPR) {
await github.rest.pulls.update({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: item.number,
state: 'closed',
});
} else {
await github.rest.issues.update({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: item.number,
state: 'closed',
state_reason: 'not_planned',
});
}
core.info(`Closed non-compliant ${kind} #${item.number} after 2-hour window`);
}
8 changes: 6 additions & 2 deletions .github/workflows/daily-issues-recap.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,12 @@ jobs:
TODAY'S DATE: ${TODAY}
STEP 1: Gather today's issues
Search for all issues created today (${TODAY}) using:
gh issue list --repo ${{ github.repository }} --state all --search \"created:${TODAY}\" --json number,title,body,labels,state,comments,createdAt,author --limit 500
Search for all OPEN issues created today (${TODAY}) using:
gh issue list --repo ${{ github.repository }} --state open --search \"created:${TODAY}\" --json number,title,body,labels,state,comments,createdAt,author --limit 500
IMPORTANT: EXCLUDE all issues authored by Anomaly team members. Filter out issues where the author login matches ANY of these:
adamdotdevin, Brendonovich, fwang, Hona, iamdavidhill, jayair, kitlangton, kommander, MrMushrooooom, R44VC0RP, rekram1-node, thdxr
This recap is specifically for COMMUNITY (external) issues only.
STEP 2: Analyze and categorize
For each issue created today, categorize it:
Expand Down
12 changes: 8 additions & 4 deletions .github/workflows/daily-pr-recap.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,18 @@ jobs:
TODAY'S DATE: ${TODAY}
STEP 1: Gather PR data
Run these commands to gather PR information. ONLY include PRs created or updated TODAY (${TODAY}):
Run these commands to gather PR information. ONLY include OPEN PRs created or updated TODAY (${TODAY}):
# PRs created today
gh pr list --repo ${{ github.repository }} --state all --search \"created:${TODAY}\" --json number,title,author,labels,createdAt,updatedAt,reviewDecision,isDraft,additions,deletions --limit 100
# Open PRs created today
gh pr list --repo ${{ github.repository }} --state open --search \"created:${TODAY}\" --json number,title,author,labels,createdAt,updatedAt,reviewDecision,isDraft,additions,deletions --limit 100
# PRs with activity today (updated today)
# Open PRs with activity today (updated today)
gh pr list --repo ${{ github.repository }} --state open --search \"updated:${TODAY}\" --json number,title,author,labels,createdAt,updatedAt,reviewDecision,isDraft,additions,deletions --limit 100
IMPORTANT: EXCLUDE all PRs authored by Anomaly team members. Filter out PRs where the author login matches ANY of these:
adamdotdevin, Brendonovich, fwang, Hona, iamdavidhill, jayair, kitlangton, kommander, MrMushrooooom, R44VC0RP, rekram1-node, thdxr
This recap is specifically for COMMUNITY (external) contributions only.
STEP 2: For high-activity PRs, check comment counts
Expand Down
85 changes: 85 additions & 0 deletions .github/workflows/docs-locale-sync.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
name: docs-locale-sync

on:
push:
branches:
- dev
paths:
- packages/web/src/content/docs/*.mdx

jobs:
sync-locales:
if: github.actor != 'opencode-agent[bot]'
runs-on: blacksmith-4vcpu-ubuntu-2404
permissions:
id-token: write
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Setup Bun
uses: ./.github/actions/setup-bun

- name: Setup git committer
id: committer
uses: ./.github/actions/setup-git-committer
with:
opencode-app-id: ${{ vars.OPENCODE_APP_ID }}
opencode-app-secret: ${{ secrets.OPENCODE_APP_SECRET }}

- name: Compute changed English docs
id: changes
run: |
FILES=$(git diff --name-only "${{ github.event.before }}" "${{ github.sha }}" -- 'packages/web/src/content/docs/*.mdx' || true)
if [ -z "$FILES" ]; then
echo "has_changes=false" >> "$GITHUB_OUTPUT"
echo "No English docs changed in push range"
exit 0
fi
echo "has_changes=true" >> "$GITHUB_OUTPUT"
{
echo "files<<EOF"
echo "$FILES"
echo "EOF"
} >> "$GITHUB_OUTPUT"

- name: Sync locale docs with OpenCode
if: steps.changes.outputs.has_changes == 'true'
uses: sst/opencode/github@latest
env:
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
with:
model: opencode/gpt-5.2
agent: docs
prompt: |
Update localized docs to match the latest English docs changes.

Changed English doc files:
<changed_english_docs>
${{ steps.changes.outputs.files }}
</changed_english_docs>

Requirements:
1. Update all relevant locale docs under packages/web/src/content/docs/<locale>/ so they reflect these English page changes.
2. You MUST use the Task tool for translation work and launch subagents with subagent_type `translator` (defined in .opencode/agent/translator.md).
3. Do not translate directly in the primary agent. Use translator subagent output as the source for locale text updates.
4. Run translator subagent Task calls in parallel whenever file/locale translation work is independent.
5. Preserve frontmatter keys, internal links, code blocks, and existing locale-specific metadata unless the English change requires an update.
6. Keep locale docs structure aligned with their corresponding English pages.
7. Do not modify English source docs in packages/web/src/content/docs/*.mdx.
8. If no locale updates are needed, make no changes.

- name: Commit and push locale docs updates
if: steps.changes.outputs.has_changes == 'true'
run: |
if [ -z "$(git status --porcelain)" ]; then
echo "No locale docs changes to commit"
exit 0
fi
git add -A
git commit -m "docs(i18n): sync locale docs from english changes"
git pull --rebase --autostash origin "$GITHUB_REF_NAME"
git push origin HEAD:"$GITHUB_REF_NAME"
82 changes: 68 additions & 14 deletions .github/workflows/duplicate-issues.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
- name: Install opencode
run: curl -fsSL https://opencode.ai/install | bash

- name: Check for duplicate issues
- name: Check duplicates and compliance
env:
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -34,30 +34,84 @@ jobs:
"webfetch": "deny"
}
run: |
opencode run -m opencode/claude-haiku-4-5 "A new issue has been created:'
opencode run -m opencode/claude-haiku-4-5 "A new issue has been created:
Issue number:
${{ github.event.issue.number }}
Issue number: ${{ github.event.issue.number }}
Lookup this issue and search through existing issues (excluding #${{ github.event.issue.number }}) in this repository to find any potential duplicates of this new issue.
Lookup this issue with gh issue view ${{ github.event.issue.number }}.
You have TWO tasks. Perform both, then post a SINGLE comment (if needed).
---
TASK 1: CONTRIBUTING GUIDELINES COMPLIANCE CHECK
Check whether the issue follows our contributing guidelines and issue templates.
This project has three issue templates that every issue MUST use one of:
1. Bug Report - requires a Description field with real content
2. Feature Request - requires a verification checkbox and description, title should start with [FEATURE]:
3. Question - requires the Question field with real content
Additionally check:
- No AI-generated walls of text (long, AI-generated descriptions are not acceptable)
- The issue has real content, not just template placeholder text left unchanged
- Bug reports should include some context about how to reproduce
- Feature requests should explain the problem or need
- We want to push for having the user provide system description & information
Do NOT be nitpicky about optional fields. Only flag real problems like: no template used, required fields empty or placeholder text only, obviously AI-generated walls of text, or completely empty/nonsensical content.
---
TASK 2: DUPLICATE CHECK
Search through existing issues (excluding #${{ github.event.issue.number }}) to find potential duplicates.
Consider:
1. Similar titles or descriptions
2. Same error messages or symptoms
3. Related functionality or components
4. Similar feature requests
If you find any potential duplicates, please comment on the new issue with:
- A brief explanation of why it might be a duplicate
- Links to the potentially duplicate issues
- A suggestion to check those issues first
Additionally, if the issue mentions keybinds, keyboard shortcuts, or key bindings, note the pinned keybinds issue #4997.
---
POSTING YOUR COMMENT:
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:
<!-- 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
If duplicates were found, include a section about potential duplicates with links.
If the issue mentions keybinds/keyboard shortcuts, include a note about #4997.
If the issue IS compliant AND no duplicates were found AND no keybind reference, do NOT comment at all.
Use this format for the comment:
'This issue might be a duplicate of existing issues. Please check:
[If not compliant:]
<!-- issue-compliance -->
This issue doesn't fully meet our [contributing guidelines](../blob/dev/CONTRIBUTING.md).
**What needs to be fixed:**
- [specific reasons]
Please edit this issue to address the above within **2 hours**, or it will be automatically closed.
[If duplicates found, add:]
---
This issue might be a duplicate of existing issues. Please check:
- #[issue_number]: [brief description of similarity]
Feel free to ignore if none of these address your specific case.'
[If keybind-related, add:]
For keybind-related issues, please also check our pinned keybinds documentation: #4997
Additionally, if the issue mentions keybinds, keyboard shortcuts, or key bindings, please add a comment mentioning the pinned keybinds issue #4997:
'For keybind-related issues, please also check our pinned keybinds documentation: #4997'
[End with if not compliant:]
If you believe this was flagged incorrectly, please let a maintainer know.
If no clear duplicates are found, do not comment."
Remember: post at most ONE comment combining all findings. If everything is fine, post nothing."
3 changes: 3 additions & 0 deletions .github/workflows/nix-hashes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ on:
- "package.json"
- "packages/*/package.json"
- "flake.lock"
- "nix/node_modules.nix"
- "nix/scripts/**"
- "patches/**"
- ".github/workflows/nix-hashes.yml"

jobs:
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/pr-management.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,11 @@ jobs:
run: |
COMMENT=$(bun script/duplicate-pr.ts -f pr_info.txt "Check the attached file for PR details and search for duplicates")
gh pr comment "$PR_NUMBER" --body "_The following comment was made by an LLM, it may be inaccurate:_
if [ "$COMMENT" != "No duplicate PRs found" ]; then
gh pr comment "$PR_NUMBER" --body "_The following comment was made by an LLM, it may be inaccurate:_
$COMMENT"
fi
add-contributor-label:
runs-on: ubuntu-latest
Expand Down
Loading