Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
179 commits
Select commit Hold shift + click to select a range
a6b6395
fix(tui): gate logo subpixel rendering on truecolor support (#25265)
simonklee May 1, 2026
97ed9ba
fix: correct documentation typos (#25260)
luojiyin1987 May 1, 2026
8c79c58
refactor: rename workspace adapters (#25272)
kitlangton May 1, 2026
16ddf5f
fix(session): use finite archived timestamp schema (#25275)
kitlangton May 1, 2026
bcae852
zen: remove hardcoded safety identifier
fwang May 1, 2026
29ec077
fix: bedrock reasoning issue (#25303)
rekram1-node May 1, 2026
2115df5
Update VOUCHED list
github-actions[bot] May 1, 2026
c2609cb
core: allow agents to access global tmp directory without permission …
thdxr May 1, 2026
6252412
chore: generate
opencode-agent[bot] May 1, 2026
4781564
core: fix npm package detection to properly handle cached directories…
rekram1-node May 1, 2026
51e310c
fix(read): prevent unsupported image formats from being sending to pr…
zeke May 1, 2026
cec9c61
Move instance loading into Effect service (#25277)
kitlangton May 2, 2026
0b498dd
fix(httpapi): preserve OpenAPI parameter parity (#25291)
kitlangton May 2, 2026
d297c29
chore: generate
opencode-agent[bot] May 2, 2026
160928a
Extract InstanceStore.provide helper (#25372)
kitlangton May 2, 2026
1571933
Drop ALS fallbacks from containsPath and workspace routing (#25374)
kitlangton May 2, 2026
f33aec1
Convert LoadInput.init to Effect + extract InstanceBootstrap as a Ser…
kitlangton May 2, 2026
becf57e
chore: generate
opencode-agent[bot] May 2, 2026
d99dde6
Migrate test inits from Promise to Effect (#25377)
kitlangton May 2, 2026
a849812
chore: generate
opencode-agent[bot] May 2, 2026
075f876
fix(httpapi): re-land workspace create payload accepts missing extra …
kitlangton May 2, 2026
5242a1c
fix(httpapi): install Instance ALS for adapter Promise bridge (#25417)
kitlangton May 2, 2026
4c4860f
Replace Instance.disposeAll/load with fixture helper (#25418)
kitlangton May 2, 2026
78b3000
fix(tui): keep shell-mode prompt editable (#25419)
kitlangton May 2, 2026
6a76346
upgrade opentui to 0.2.2 (#25420)
kommander May 2, 2026
31ed460
chore: update nix node_modules hashes
opencode-agent[bot] May 2, 2026
b09b7d2
refactor(instance-store): consolidate dispose helpers (#25424)
kitlangton May 2, 2026
7371db5
sync release versions for v1.14.32
May 2, 2026
3b91557
Delete Instance.dispose and Instance.reload (#25427)
kitlangton May 2, 2026
9606122
chore: generate
opencode-agent[bot] May 2, 2026
1ea6e6c
fix(nix): remove stale packages/shared filter (#24930)
jerome-benoit May 2, 2026
0d0ec7d
docs: CLI docs for current commands and flags (#25399)
OpeOginni May 2, 2026
146ff8a
feat(cli): add effectCmd wrapper + convert models command (#25429)
kitlangton May 2, 2026
ff4779c
chore: generate
opencode-agent[bot] May 2, 2026
b460db1
tweak: allow read tool to accept offset of 0 (#25431)
rekram1-node May 2, 2026
f8738c9
feat(models): effectify ModelsDev as Service (#25434)
kitlangton May 2, 2026
b3a7513
chore: generate
opencode-agent[bot] May 2, 2026
6cd02c0
fix(telemetry): emit Tool.execute span for MCP and plugin tools (#25452)
kitlangton May 2, 2026
05b82a6
refactor(cli): drop ModelsDev Promise compat shim (#25460)
kitlangton May 2, 2026
430bde9
fix(instance): restore InstanceBootstrap init parameter for non-Effec…
HyeokjaeLee May 2, 2026
c444e97
chore: generate
opencode-agent[bot] May 2, 2026
43e2087
sync release versions for v1.14.33
May 2, 2026
8396d6b
refactor(cli): convert pr command to effectCmd (#25465)
kitlangton May 2, 2026
b314781
chore: generate
opencode-agent[bot] May 2, 2026
e318e17
refactor(cli): convert export command to effectCmd (#25471)
kitlangton May 2, 2026
0c816eb
refactor(cli): convert plugin command to effectCmd (#25473)
kitlangton May 2, 2026
79b6ce5
refactor(cli): convert import command to effectCmd (#25467)
kitlangton May 2, 2026
c1686c6
refactor(cli): convert stats command to effectCmd (#25474)
kitlangton May 2, 2026
dfe1325
chore: generate
opencode-agent[bot] May 2, 2026
1986a6e
refactor(cli): convert session subcommands to effectCmd (#25483)
kitlangton May 2, 2026
3f45981
feat: refactor bash tool with shell-aware prompts for bash, pwsh+powe…
Hona May 2, 2026
7ab1c1c
refactor(cli): convert debug agent command to effectCmd (#25485)
kitlangton May 2, 2026
9d03d44
chore: generate
opencode-agent[bot] May 2, 2026
4de44bb
refactor(cli): convert debug subcommands to effectCmd (#25479)
kitlangton May 2, 2026
36007ae
chore: generate
opencode-agent[bot] May 2, 2026
f98053c
fix(instance): run bootstrap from instance store (#25475)
kitlangton May 2, 2026
9bef88e
chore: generate
opencode-agent[bot] May 2, 2026
85bb900
feat(cli): auto-dispose InstanceContext after effectCmd handlers (#25…
kitlangton May 2, 2026
6b68b10
docs: clarify LSP and formatter opt-in config (#25502)
Hona May 3, 2026
d10fb88
chore: generate
opencode-agent[bot] May 3, 2026
fd01dc9
test(httpapi): add route exerciser
kitlangton May 3, 2026
a646406
chore: generate
opencode-agent[bot] May 3, 2026
7d91d3b
Normalize instance lifecycle wiring (#25501)
kitlangton May 3, 2026
80f2b13
chore: generate
opencode-agent[bot] May 3, 2026
68b3448
refactor(cli): drop redundant explicit Effect.ensuring(store.dispose)…
kitlangton May 3, 2026
9293cdd
chore: generate
opencode-agent[bot] May 3, 2026
e709dc3
feat: default HTTP API backend to on for dev/beta channels
kitlangton May 3, 2026
e98c291
feat(cli): add instance: false opt-out to effectCmd (#25507)
kitlangton May 3, 2026
1409a07
refactor(cli): convert web + account to effectCmd (instance: false) (…
kitlangton May 3, 2026
a3bc5d3
Refactor v2 session events as schemas (#24512)
thdxr May 3, 2026
a6cadba
chore: generate
opencode-agent[bot] May 3, 2026
ad05a46
refactor(lifecycle): bootstrap as pure orchestration (#25510)
kitlangton May 3, 2026
c4311dd
feat(cli): allow effectCmd instance to be a function of args (#25517)
kitlangton May 3, 2026
2829943
refactor(cli): convert debug wait, agent list, acp to effectCmd (#25518)
kitlangton May 3, 2026
7409dcc
refactor(cli): convert run command to effectCmd (#25519)
kitlangton May 3, 2026
61150f6
chore: generate
opencode-agent[bot] May 3, 2026
0956b15
refactor(acp): drop async from synchronous ACP.init (#25520)
kitlangton May 3, 2026
0ba013f
chore: rm log statement (#25470)
rekram1-node May 3, 2026
b4cc7d1
fix(desktop): limit zoom handler to zoom keys (#25516)
Hona May 3, 2026
be88cd5
chore(opencode): exclude .map files from CLI binary build (#25500)
PanAchy May 3, 2026
af9fdf0
refactor(cli): convert github subcommands to effectCmd (#25522)
kitlangton May 3, 2026
31cb0bf
chore: generate
opencode-agent[bot] May 3, 2026
db24f89
refactor(cli): convert mcp list, auth, auth list, logout to effectCmd…
kitlangton May 3, 2026
a3d282a
chore: generate
opencode-agent[bot] May 3, 2026
a79a659
chore: bump Effect beta (#25524)
kitlangton May 3, 2026
bdabb10
refactor(cli/stats): Stage 4 — fully Effect-native body (#25523)
kitlangton May 3, 2026
5f03d89
fix(httpapi): pagination Link header echoes request host (#25527)
kitlangton May 3, 2026
0e13279
refactor(cli): convert agent / providers / mcp to effectCmd (#25525)
kitlangton May 3, 2026
3f1ce36
chore: generate
opencode-agent[bot] May 3, 2026
33312bf
fix(session): encode v2 session responses (#25528)
thdxr May 3, 2026
b89d48a
chore: update nix node_modules hashes
opencode-agent[bot] May 3, 2026
8e016b4
fix: regression w/ auth login where stderr was ignored instead of inh…
rekram1-node May 3, 2026
1717d63
refactor(cli/mcp+agent): Stage 4 — drop AppRuntime.runPromise bridges…
kitlangton May 3, 2026
bd32252
refactor(cli/providers): Stage 4 — drop inline AppRuntime.runPromise …
kitlangton May 3, 2026
2df8eda
fix(cli): bridge Instance.current ALS in effectCmd handlers (regressi…
kitlangton May 3, 2026
9179baf
Add debug info command (#25550)
thdxr May 3, 2026
fc57eb3
ci
thdxr May 3, 2026
7ccab8d
core: update triage agent to use qwen3.6-plus model for improved resp…
thdxr May 3, 2026
a08e4c9
core: simplify triage workflow to focus on issue ownership
thdxr May 3, 2026
e2afdc1
chore: generate
opencode-agent[bot] May 3, 2026
252e2f9
ci: remove automatic labels from GitHub issue templates to allow manu…
thdxr May 3, 2026
b205e10
ci: remove vouch-based contributor filtering workflows
thdxr May 3, 2026
4f7f901
ci: stop sending daily community recap notifications
thdxr May 3, 2026
8299fb3
ignore: remove triage-unassigned.ts script
thdxr May 3, 2026
d1f597b
fix(vcs): avoid unbounded diff memory usage (#25581)
nexxeln May 3, 2026
ca75ac6
refactor(server): extract Hono-coupled utilities to backend-neutral m…
kitlangton May 3, 2026
3c9f3c5
chore: generate
opencode-agent[bot] May 3, 2026
0ee3b87
feat(server): Server.openapi() backed by HttpApi spec, parity-checked…
kitlangton May 3, 2026
a43f767
chore: generate
opencode-agent[bot] May 3, 2026
2ad1eb5
feat(server): native HttpApi listener with Bun.serve + WS upgrade (#2…
kitlangton May 3, 2026
7a503de
fix(acp): pass server auth to internal client (#25591)
nexxeln May 3, 2026
379600b
fix(sdk+cli): surface real errors instead of bare {} when server retu…
kitlangton May 3, 2026
8433e8b
chore: generate
opencode-agent[bot] May 3, 2026
1015661
fix(httpapi): add basic auth challenge for browser login
OpeOginni May 3, 2026
fb224d8
chore: generate
opencode-agent[bot] May 3, 2026
e77867e
ci: only build electron desktop (#19067)
Brendonovich May 3, 2026
0a7d02c
feat: group changelog bugfixes (#25597)
nexxeln May 3, 2026
8694c5b
fix(auth): respect server username in clients (#25596)
nexxeln May 3, 2026
13ac849
refactor(config+core): drop ConfigPaths.readFile, add AppFileSystem.r…
kitlangton May 3, 2026
57d5c09
chore: generate
opencode-agent[bot] May 3, 2026
df7dd06
refactor(cli/github+run): Stage 4 — drop AppRuntime.runPromise bridge…
kitlangton May 3, 2026
40dc2fa
refactor(cli/providers): flatten — Effect-native handlers end-to-end …
kitlangton May 3, 2026
c06af70
chore: generate
opencode-agent[bot] May 3, 2026
adb7cb1
fix(auth): add username option for basic auth in RunCommand (#25600)
OpeOginni May 3, 2026
387220f
fix(server): support desktop PTY websockets with HttpApi (#25598)
kitlangton May 3, 2026
28112fb
chore: generate
opencode-agent[bot] May 3, 2026
7749d8e
Add v2 session failure events (#25628)
thdxr May 3, 2026
a9dc0fa
chore: generate
opencode-agent[bot] May 3, 2026
6312c55
fix(server): serve embedded UI from bunfs (#25632)
kitlangton May 3, 2026
755cd56
chore: generate
opencode-agent[bot] May 3, 2026
825ab2e
refactor(cli): effectify provider commands (#25633)
kitlangton May 3, 2026
ca6150d
fix(app): preserve auth token credentials (#25636)
kitlangton May 3, 2026
c2b1974
Effectify plugin agent regression test (#25646)
kitlangton May 3, 2026
ce89bcb
fix: allow Codex Spark with Codex OAuth (#25640)
Utkub24 May 3, 2026
7bc26da
feat(server): pty websocket auth tickets (#25660)
kitlangton May 4, 2026
9f708e7
chore: generate
opencode-agent[bot] May 4, 2026
a366128
fix(app): prevent terminal recovery loops (#25710)
Hona May 4, 2026
67047fa
chore: generate
opencode-agent[bot] May 4, 2026
1251a87
fix(opencode): strip transfer-encoding in UI proxy and allow public m…
OpeOginni May 4, 2026
6e9f10a
test(server): regression reproducers for #25698 (#25714)
kitlangton May 4, 2026
2c819f2
chore: generate
opencode-agent[bot] May 4, 2026
c1f607d
fix: ensure anthropic sdk properly resolves when using azure (#25721)
rekram1-node May 4, 2026
1aed6b1
sync
fwang May 4, 2026
b70e270
chore(docs): rename firmware provider to frogbot (#25453)
cgilly2fast May 4, 2026
25dc6f0
fix(worktree): fork workspace worktree boot (#25723)
kitlangton May 4, 2026
fb07c20
fix(server): provide fresh ConfigProvider per HttpApi listener (#25726)
kitlangton May 4, 2026
007b57f
test(agent): skip InstanceBootstrap in plugin-agent regression test (…
kitlangton May 4, 2026
5720883
sync
fwang May 4, 2026
d431a0e
fix: ensure effect server middleware properly parses errors (#25717)
rekram1-node May 4, 2026
4b65b1e
sync release versions for v1.14.34
May 4, 2026
6a5e329
fix(vcs): preserve batched patch boundaries (#25787)
Hona May 5, 2026
f14784d
chore: generate
opencode-agent[bot] May 5, 2026
6b85277
sync release versions for v1.14.35
May 5, 2026
ca2411d
Run UI unit tests in CI (#25792)
Hona May 5, 2026
84afd2b
update: normalize download asset names to match new naming convention…
Brendonovich May 5, 2026
22a4a9d
feat(core): session warping (#25768)
jlongster May 5, 2026
f33b17e
chore: generate
opencode-agent[bot] May 5, 2026
2740d39
devex: Enable Electron MCP servers with DevTools debug port (#25795)
Hona May 5, 2026
edd480f
fix(tui): fix type error for calling workspace.warp (#25801)
jlongster May 5, 2026
f6a3615
fix(console): remove Cloudflare cache config from download fetch (#25…
Brendonovich May 5, 2026
0df2bb0
docs: restore v2 todo
thdxr May 5, 2026
39c88f9
Improve v2 session message rendering (#25634)
thdxr May 5, 2026
75d141b
fix(session): cancel subtask child sessions (#25798)
kitlangton May 5, 2026
2d0a757
chore: generate
opencode-agent[bot] May 5, 2026
07f1c8c
fix(desktop): stabilize Windows titlebar zoom (#25813)
Hona May 5, 2026
6f7d63e
chore: generate
opencode-agent[bot] May 5, 2026
b4147c8
refactor(desktop): consolidate desktop-electron into desktop package …
Brendonovich May 5, 2026
03544a2
fix(desktop): update main process (#25825)
Brendonovich May 5, 2026
301ab36
chore: update nix node_modules hashes
opencode-agent[bot] May 5, 2026
8df3ef1
sync release versions for v1.14.37
May 5, 2026
b8f8f5d
fix(desktop): trust system certificates (#25837)
Hona May 5, 2026
52bb088
fix(server): allow all connect-src origins in CSP for embedded UI (#2…
Brendonovich May 5, 2026
292c2aa
chore: update nix node_modules hashes
opencode-agent[bot] May 5, 2026
a20446f
sync release versions for v1.14.38
May 5, 2026
bb9b81a
fix(desktop): add error handling to store-get IPC handler (#25850)
Brendonovich May 5, 2026
465c83c
fix(desktop): respect proxy environment (#25846)
Hona May 5, 2026
8119548
fix(compaction): order compaction summary before retained tail (#25851)
nexxeln May 5, 2026
773078e
sync release versions for v1.14.39
May 5, 2026
b210708
sync: upstream v1.14.39 (773078e81 on dev)
May 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
  •  
  •  
  •  
1 change: 0 additions & 1 deletion .github/ISSUE_TEMPLATE/bug-report.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
name: Bug report
description: Report an issue that should be fixed
labels: ["bug"]
body:
- type: textarea
id: description
Expand Down
1 change: 0 additions & 1 deletion .github/ISSUE_TEMPLATE/feature-request.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
name: 🚀 Feature Request
description: Suggest an idea, feature, or enhancement
labels: [discussion]
title: "[FEATURE]:"

body:
Expand Down
1 change: 0 additions & 1 deletion .github/ISSUE_TEMPLATE/question.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
name: Question
description: Ask a question
labels: ["question"]
body:
- type: textarea
id: question
Expand Down
1 change: 0 additions & 1 deletion .github/TEAM_MEMBERS
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,5 @@ MrMushrooooom
nexxeln
R44VC0RP
rekram1-node
RhysSullivan
thdxr
simonklee
40 changes: 0 additions & 40 deletions .github/VOUCHED.td

This file was deleted.

127 changes: 15 additions & 112 deletions .opencode/agent/triage.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
mode: primary
hidden: true
model: opencode/minimax-m2.5
model: opencode/gpt-5.4-nano
color: "#44BA81"
tools:
"*": false
Expand All @@ -14,127 +14,30 @@ Use your github-triage tool to triage issues.

This file is the source of truth for ownership/routing rules.

## Labels
Assign issues by choosing the team with the strongest overlap. The github-triage tool will assign a random member from that team.

### windows
Do not add labels to issues. Only assign an owner.

Use for any issue that mentions Windows (the OS). Be sure they are saying that they are on Windows.
When calling github-triage, pass one of these team values: tui, desktop_web, core, inference, windows.

- Use if they mention WSL too
## Teams

#### perf
### TUI

Performance-related issues:
Terminal UI issues, including rendering, keybindings, scrolling, terminal compatibility, SSH behavior, crashes in the TUI, and low-level TUI performance.

- Slow performance
- High RAM usage
- High CPU usage
### Desktop / Web

**Only** add if it's likely a RAM or CPU issue. **Do not** add for LLM slowness.
Desktop application and browser-based app issues, including `opencode web`, desktop-specific UI behavior, packaging, and web view problems.

#### desktop
### Core

Desktop app issues:
Core opencode server and harness issues, including sqlite, snapshots, memory, API behavior, agent context construction, tool execution, provider integrations, model behavior, documentation, and larger architectural features.

- `opencode web` command
- The desktop app itself
### Inference

**Only** add if it's specifically about the Desktop application or `opencode web` view. **Do not** add for terminal, TUI, or general opencode issues.
OpenCode Zen, OpenCode Go, and billing issues.

#### nix
### Windows

**Only** add if the issue explicitly mentions nix.

If the issue does not mention nix, do not add nix.

If the issue mentions nix, assign to `rekram1-node`.

#### zen

**Only** add if the issue mentions "zen" or "opencode zen" or "opencode black".

If the issue doesn't have "zen" or "opencode black" in it then don't add zen label

#### core

Use for core server issues in `packages/opencode/`, excluding `packages/opencode/src/cli/cmd/tui/`.

Examples:

- LSP server behavior
- Harness behavior (agent + tools)
- Feature requests for server behavior
- Agent context construction
- API endpoints
- Provider integration issues
- New, broken, or poor-quality models

#### acp

If the issue mentions acp support, assign acp label.

#### docs

Add if the issue requests better documentation or docs updates.

#### opentui

TUI issues potentially caused by our underlying TUI library:

- Keybindings not working
- Scroll speed issues (too fast/slow/laggy)
- Screen flickering
- Crashes with opentui in the log

**Do not** add for general TUI bugs.

When assigning to people here are the following rules:

Desktop / Web:
Use for desktop-labeled issues only.

- adamdotdevin
- iamdavidhill
- Brendonovich
- nexxeln

Zen:
ONLY assign if the issue will have the "zen" label.

- fwang
- MrMushrooooom

TUI (`packages/opencode/src/cli/cmd/tui/...`):

- thdxr for TUI UX/UI product decisions and interaction flow
- kommander for OpenTUI engine issues: rendering artifacts, keybind handling, terminal compatibility, SSH behavior, and low-level perf bottlenecks
- rekram1-node for TUI bugs that are not clearly OpenTUI engine issues

Core (`packages/opencode/...`, excluding TUI subtree):

- thdxr for sqlite/snapshot/memory bugs and larger architectural core features
- jlongster for opencode server + API feature work (tool currently remaps jlongster -> thdxr until assignable)
- rekram1-node for harness issues, provider issues, and other bug-squashing

For core bugs that do not clearly map, either thdxr or rekram1-node is acceptable.

Docs:

- R44VC0RP

Windows:

- Hona (assign any issue that mentions Windows or is likely Windows-specific)

Determinism rules:

- If title + body does not contain "zen", do not add the "zen" label
- If "nix" label is added but title + body does not mention nix/nixos, the tool will drop "nix"
- If title + body mentions nix/nixos, assign to `rekram1-node`
- If "desktop" label is added, the tool will override assignee and randomly pick one Desktop / Web owner

In all other cases, choose the team/section with the most overlap with the issue and assign a member from that team at random.

ACP:

- rekram1-node (assign any acp issues to rekram1-node)
Windows-specific issues, including native Windows behavior, WSL interactions, path handling, shell compatibility, and installation or runtime problems that only happen on Windows.
5 changes: 4 additions & 1 deletion .opencode/command/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,12 @@ Do not use `git log` or author metadata when deciding attribution.

Rules:

- Write the final file with sections in this order:
- Write the final file with release sections in this order:
`## Core`, `## TUI`, `## Desktop`, `## SDK`, `## Extensions`
- Only include sections that have at least one notable entry
- Within each release section, keep bug fixes grouped under `### Bugfixes`
- Keep other notable entries under `### Improvements` when a section has bug fixes too
- Omit empty subsections
- Keep one bullet per commit you keep
- Skip commits that are entirely internal, CI, tests, refactors, or otherwise not user-facing
- Start each bullet with a capital letter
Expand Down
80 changes: 12 additions & 68 deletions .opencode/tool/github-triage.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
/// <reference path="../env.d.ts" />
import { tool } from "@opencode-ai/plugin"

const TEAM = {
desktop: ["adamdotdevin", "iamdavidhill", "Brendonovich", "nexxeln"],
zen: ["fwang", "MrMushrooooom"],
tui: ["kommander", "rekram1-node", "simonklee"],
core: ["kitlangton", "rekram1-node", "jlongster"],
docs: ["R44VC0RP"],
tui: ["kommander", "simonklee"],
desktop_web: ["Hona", "Brendonovich"],
core: ["jlongster", "rekram1-node", "nexxeln", "kitlangton"],
inference: ["fwang", "MrMushrooooom"],
windows: ["Hona"],
} as const

const ASSIGNEES = [...new Set(Object.values(TEAM).flat())]

function pick<T>(items: readonly T[]) {
return items[Math.floor(Math.random() * items.length)]!
}
Expand Down Expand Up @@ -38,79 +36,25 @@ async function githubFetch(endpoint: string, options: RequestInit = {}) {
}

export default tool({
description: `Use this tool to assign and/or label a GitHub issue.
description: `Use this tool to assign a GitHub issue.

Choose labels and assignee using the current triage policy and ownership rules.
Pick the most fitting labels for the issue and assign one owner.

If unsure, choose the team/section with the most overlap with the issue and assign a member from that team at random.`,
Provide the team that should own the issue. This tool picks a random assignee from that team and does not apply labels.`,
args: {
assignee: tool.schema
.enum(ASSIGNEES as [string, ...string[]])
.describe("The username of the assignee")
.default("rekram1-node"),
labels: tool.schema
.array(tool.schema.enum(["nix", "opentui", "perf", "web", "desktop", "zen", "docs", "windows", "core"]))
.describe("The labels(s) to add to the issue")
.default([]),
team: tool.schema
.enum(Object.keys(TEAM) as [keyof typeof TEAM, ...(keyof typeof TEAM)[]])
.describe("The owning team"),
},
async execute(args) {
const issue = getIssueNumber()
const owner = "anomalyco"
const repo = "opencode"

const results: string[] = []
let labels = [...new Set(args.labels.map((x) => (x === "desktop" ? "web" : x)))]
const web = labels.includes("web")
const text = `${process.env.ISSUE_TITLE ?? ""}\n${process.env.ISSUE_BODY ?? ""}`.toLowerCase()
const zen = /\bzen\b/.test(text) || text.includes("opencode black")
const nix = /\bnix(os)?\b/.test(text)

if (labels.includes("nix") && !nix) {
labels = labels.filter((x) => x !== "nix")
results.push("Dropped label: nix (issue does not mention nix)")
}

const assignee = nix ? "rekram1-node" : web ? pick(TEAM.desktop) : args.assignee

if (labels.includes("zen") && !zen) {
throw new Error("Only add the zen label when issue title/body contains 'zen'")
}

if (web && !nix && !(TEAM.desktop as readonly string[]).includes(assignee)) {
throw new Error("Web issues must be assigned to adamdotdevin, iamdavidhill, Brendonovich, or nexxeln")
}

if ((TEAM.zen as readonly string[]).includes(assignee) && !labels.includes("zen")) {
throw new Error("Only zen issues should be assigned to fwang or MrMushrooooom")
}

if (assignee === "Hona" && !labels.includes("windows")) {
throw new Error("Only windows issues should be assigned to Hona")
}

if (assignee === "R44VC0RP" && !labels.includes("docs")) {
throw new Error("Only docs issues should be assigned to R44VC0RP")
}

if (assignee === "kommander" && !labels.includes("opentui")) {
throw new Error("Only opentui issues should be assigned to kommander")
}
const assignee = pick(TEAM[args.team])

await githubFetch(`/repos/${owner}/${repo}/issues/${issue}/assignees`, {
method: "POST",
body: JSON.stringify({ assignees: [assignee] }),
})
results.push(`Assigned @${assignee} to issue #${issue}`)

if (labels.length > 0) {
await githubFetch(`/repos/${owner}/${repo}/issues/${issue}/labels`, {
method: "POST",
body: JSON.stringify({ labels }),
})
results.push(`Added labels: ${labels.join(", ")}`)
}

return results.join("\n")
return `Assigned @${assignee} from ${args.team} to issue #${issue}`
},
})
1 change: 1 addition & 0 deletions UPSTREAM.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ Each upstream has its own append-only table. Add a row every time you pull.
| 2026-05-01 | `eb7555d3c` | `bad732c26` | bcode | Merged upstream release point for v1.14.25 (`sync release versions for v1.14.25` on `dev`). 73 upstream commits. **Targeted v1.14.25 instead of latest (v1.14.31, 357 commits)** because v1.14.26 introduces a sweeping refactor — `packages/shared` → `packages/core` rename (PR #24309) + Global module move (`packages/opencode/src/global/index.ts` + `packages/shared/src/global.ts` → `packages/core/src/global.ts`) — that needs design discussion before adoption. Splitting into two syncs keeps each one mechanical. Conflicts: `packages/opencode/package.json` (kept `@browser-use/browsercode-core` name, took version bump to 1.14.25), `bun.lock` (took upstream, regenerated via `bun install`), `.github/workflows/publish.yml` (deleted by us per PR #14, upstream modified — kept our deletion). Yellow-zone audit (4 files: `cli/cmd/tui/app.tsx`, `config/config.ts`, `installation/index.ts`, `session/session.ts`): all auto-merged cleanly, BrowserCode customizations (USER_AGENT, `bcode.sh` URLs, `.bcode` paths, BCODE_UPGRADE_DISABLED block, doc-string overrides) verified present. **Notable upstream change pulled in:** PR #23244 — tool framework + all 18 built-in tools migrated from Zod to Effect Schema. Required adapting our Level-1 `packages/bcode-browser/src/browser-execute.ts` (`z.object` → `Schema.Struct`, `z.infer` → `Schema.Schema.Type`) and Level-2 adapter `packages/opencode/src/tool/browser-execute.ts` (drop `z` import, use `Schema.Schema.Type` for args). Filtered typecheck: 5/5 passed. Next sync should target v1.14.26+ with the shared→core rename as a documented integration step. |
| 2026-05-01 | `bad732c26` | `af3998c8a` | bcode | Merged upstream release point for v1.14.26 (`sync release versions for v1.14.26` on `dev`). 72 upstream commits. **`packages/shared` → `packages/core` refactor.** PR #24309 renamed the directory + npm package (`@opencode-ai/shared` → `@opencode-ai/core`), purely mechanical (166 files, 218/218 lines, all import-string swaps). Five followup commits relocated modules into the new `packages/core/`: Global (from both `packages/opencode/src/global/index.ts` and `packages/shared/src/global.ts` consolidated into `packages/core/src/global.ts`), cross-spawn-spawner, npm service, and effect/util siblings (logger, runtime, observability, memo-map, log, opencode-process). BrowserCode integration: ported single-string divergence `app = "bcode"` from both deleted Global files into the new `packages/core/src/global.ts`; **dropped CACHE_VERSION cache-bust mechanism verbatim with upstream** — confirmed unused for BrowserCode (never bumped, no consumer depends on the wipe; investigated upstream/dev to confirm intentional removal); updated `browser-execute.ts` import `@/global` → `@opencode-ai/core/global` and trimmed CACHE_VERSION reference from comment. Conflicts: `.github/workflows/review.yml` (kept our deletion), `bun.lock` (regenerated), `packages/opencode/package.json` (kept name, bumped to 1.14.26), `packages/opencode/src/agent/agent.ts` (hunk 1 auto-merged: kept browser-sessions whitelist + took upstream's `_ctx`→`ctx` rename; hunk 2 resolved by keeping `.bcode/plans` and adopting upstream's `ctx.worktree`), `packages/opencode/src/global/index.ts` + `packages/shared/src/global.ts` (deleted with upstream). Filtered typecheck: 5/5 passed. |
| 2026-05-01 | `af3998c8a` | `21f8027ef` | bcode | Merged upstream release point for v1.14.31 (`sync release versions for v1.14.31` on `dev`). 212 upstream commits across v1.14.27–v1.14.31. Conflicts: `.github/workflows/{deploy,publish}.yml` (kept our deletions per PR #14), `bun.lock` (regenerated), `packages/opencode/package.json` (kept name, bumped to 1.14.31), `packages/opencode/src/agent/agent.ts` (kept browser-sessions whitelist + took upstream's new `Global.Path.tmp` whitelist addition — both go in the same `whitelistedDirs` array), `packages/opencode/src/config/config.ts` (kept `bcode.json/bcode.jsonc` filenames + `bcode.sh` config schema URL; adopted upstream's `mergeConfig` helper pattern, retiring `mergeDeep(pipe(...))` chain), `packages/opencode/src/session/session.ts` (kept `.bcode/plans` rename; adopted upstream's new `(input, instance: InstanceContext)` signature using `instance.project`/`instance.worktree`), `packages/opencode/src/installation/index.ts` (substantial restructure — upstream switched from explicit `Service.of({...})` to `result: Interface = {...}` pattern with self-referential method calls; took upstream verbatim as the base, then re-applied 5 BrowserCode divergences: USER_AGENT prefix, `https://bcode.sh/install` URL, `.bcode/bin` execPath check, BCODE_UPGRADE_DISABLED const, early-return guards in `latest`/`upgrade`/`info`). Yellow-zone audit (7 files: `cli/cmd/tui/app.tsx`, `agent.ts`, `config.ts`, `installation/index.ts`, `session.ts`, `index.ts`, `core/src/global.ts`): customizations preserved (`scriptName("bcode")`, banner, USER_AGENT, `bcode.sh`, `.bcode` paths, `app = "bcode"`). Filtered typecheck: 5/5 passed. PR #29 (v1.14.25) supersedes — close in favor of this PR which covers the same window plus three additional release points. |
| 2026-05-06 | `21f8027ef` | `773078e81` | bcode | Merged upstream release point for v1.14.39 (`sync release versions for v1.14.39` on `dev`). 178 upstream commits across v1.14.32–v1.14.39. **Notable upstream change pulled in:** PR #20039 — `tool/bash.{ts,txt}` renamed to `tool/shell.{ts,txt}` with sub-folder `tool/shell/{id,prompt}.ts`; `Match` predicate switched from string literal `"bash"` to `ShellID.ToolID`. Auto-merge handled the rename inside our session/index.tsx; only the import block needed manual resolution (kept our `BrowserExecuteTool` import, took upstream's `ShellTool` + `ShellID` imports). **CLI Effect-ification:** `cli/cmd/{run,serve,web,agent}.ts` switched from `async (args) => {...}` handlers to `Effect.fn("Cli.<name>")(function* (args) {...})` form (also adds new `instance: false` and `directory: ...` fields to delegate context loading to the framework). Resolved by adopting upstream handler shape verbatim and re-applying our `bcode` brand strings in `describe:` fields. `cli/cmd/agent.ts` also dropped a level of indentation (legacy nested-effect block) and switched from `Instance.worktree`/`AppRuntime.runPromise(Agent.Service.use(...))` to `ctx.worktree`/`Effect.runPromise(agentSvc.generate(...))`; took upstream wholesale, flipped post-merge `.opencode` → `.bcode` (one site). Conflicts: `.github/workflows/publish.yml` (re-deleted per PR #14), `bun.lock` (regenerated), `README.md` (kept our concise replacement, dropped upstream's reintroduced FAQ/Discord block), `packages/opencode/package.json` (kept name, bumped to 1.14.39), `cli/cmd/{agent,run,serve,web}.ts` (Effect-ification + brand strings), `cli/cmd/tui/routes/session/index.tsx` (Bash→Shell import block). Yellow-zone audit (9 files touched upstream: `core/src/global.ts`, `script/build.ts`, `cli/cmd/tui/app.tsx`, `cli/cmd/tui/routes/session/index.tsx`, `config/config.ts`, `plugin/index.ts`, `provider/provider.ts`, `session/session.ts`, `storage/db.ts`): customizations preserved (`app = "bcode"`, banner+title BrowserCode, BC-prefixed session title, `bcode.json/bcode.jsonc/.bcode/`, `bcode.sh` schema URLs, `bcode.db`, `.bcode/plans`, `bcode-<target>` asset name, BrowserExecute renderer, attribution headers `https://bcode.sh/`/`X-Title: bcode`). Filtered typecheck: 5/5 passed in 13.8s. |

### browser-use/browser-harness → `packages/bcode-browser/harness/`

Expand Down
Loading
Loading