Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
122 commits
Select commit Hold shift + click to select a range
a0636fc
fix(app): auto-scroll ux
adamdotdevin Jan 20, 2026
80dc74a
add keyboard shortcut (mod+,) to open settings dialog
iamdavidhill Jan 20, 2026
3b46f90
fix: icon size in sidbar
iamdavidhill Jan 20, 2026
85ef23a
fix(app): don't interfere with scroll when using message nav
adamdotdevin Jan 20, 2026
5c3e9cf
chore: generate
actions-user Jan 20, 2026
0c4ffec
chore: rename toModelMessage -> toModelMessages
rekram1-node Jan 20, 2026
021e42c
core: fix issue when switching models (mainly between providers) wher…
rekram1-node Jan 20, 2026
7f50b27
docs: add Anthropic subscription warning and update feature list to h…
R44VC0RP Jan 20, 2026
0470717
feat(app): initial i18n stubbing
adamdotdevin Jan 19, 2026
92beae1
wip(app): i18n
adamdotdevin Jan 20, 2026
a68e5a1
wip(app): i18n
adamdotdevin Jan 20, 2026
7138bd0
chore: spec
adamdotdevin Jan 20, 2026
835fea6
wip(app): i18n prompt input
adamdotdevin Jan 20, 2026
7a359ff
wip(app): i18n
adamdotdevin Jan 20, 2026
7e8e4d9
wip(app): i18n
adamdotdevin Jan 20, 2026
be493e8
wip(app): i18n
adamdotdevin Jan 20, 2026
0f2e8ea
wip(app): i18n
adamdotdevin Jan 20, 2026
9b7d9c8
wip(app): i18n
adamdotdevin Jan 20, 2026
f86c37f
wip(app): i18n
adamdotdevin Jan 20, 2026
ef36af0
wip(app): i18n
adamdotdevin Jan 20, 2026
b13c269
wip(app): i18n
adamdotdevin Jan 20, 2026
6037e88
wip(app): i18n
adamdotdevin Jan 20, 2026
233d003
wip(app): i18n
adamdotdevin Jan 20, 2026
bb8bf32
chore: generate
actions-user Jan 20, 2026
20c8624
chore: update nix node_modules hashes
actions-user Jan 21, 2026
489f2d3
fix(ui): remove portal spacer and fix terminal toggle padding (#9728)
alexyaroshuk Jan 21, 2026
a71c40c
fix(app): fix numbered list rendering in web markdown (#9723)
R44VC0RP Jan 21, 2026
6793b4a
chore: generate
actions-user Jan 21, 2026
65d9e82
feat(desktop): standardize desktop layout icons (#9685)
jacobabahn Jan 21, 2026
3723e1b
fix: correct dot prefix display in directory names for RTL text rende…
yxshee Jan 21, 2026
cbe20d2
fix: don't update session timestamp for metadata-only changes (resolv…
ariane-emory Jan 21, 2026
dac7357
chore: generate
actions-user Jan 21, 2026
be9a0bf
wip: support
fwang Jan 21, 2026
217e485
chore: generate
actions-user Jan 21, 2026
34d473c
chore: revert "Update flake.lock" (#9725)
gigamonster256 Jan 21, 2026
b93f33e
fix(tui): responsive layout for narrow screens (#9703)
vmotta8 Jan 21, 2026
9dc95c4
tweak: ensure synthetic user message following subtasks is only added…
rekram1-node Jan 21, 2026
74bd52e
fix: ensure apply patch tool emits edited events
rekram1-node Jan 21, 2026
2049af4
chore: generate
actions-user Jan 21, 2026
c9ea966
feat: add OPENCODE_DISABLE_FILETIME_CHECK flag (#6581)
luojiyin1987 Jan 21, 2026
a18ae2c
feat: add OPENCODE_DISABLE_PROJECT_CONFIG env var (#8093)
kdcokenny Jan 21, 2026
96e9c89
chore: generate
actions-user Jan 21, 2026
0f979bb
chore(opencode): Use Bun.semver instead of node-semver (#9773)
RiskyMH Jan 21, 2026
a639961
chore: update nix node_modules hashes
actions-user Jan 21, 2026
65938ba
core: update session summary after revert to show file changes
thdxr Jan 21, 2026
d6caaee
fix(desktop): no proxy for connecting to sidecar (#9690)
adamdotdevin Jan 21, 2026
cf6ad4c
fix: handle special characters in paths and git snapshot reading logi…
shirukai Jan 21, 2026
79aa931
chore: generate
actions-user Jan 21, 2026
8e8fb6a
feat(app): allow users to select directory text on new session (#9760)
DNGriffin Jan 21, 2026
2e5fe6d
fix(ui): preserve filename casing in edit/write tool titles (#9752)
zerone0x Jan 21, 2026
996eeb1
feat(app): add manage models icon to selector (per Figma request) (#9…
kearns-cu Jan 21, 2026
7b8fad6
test(app): fix e2e
adamdotdevin Jan 21, 2026
64c80f1
fix(app): don't show notification on session if active
adamdotdevin Jan 21, 2026
e6438aa
feat(app): korean translations
adamdotdevin Jan 21, 2026
118b4f6
feat(app): german translations
adamdotdevin Jan 21, 2026
09a9556
feat(app): spanish translations
adamdotdevin Jan 21, 2026
efff527
feat(app): french translations
adamdotdevin Jan 21, 2026
4a38690
feat(app): japanese translations
adamdotdevin Jan 21, 2026
8b0353c
feat(app): danish translations
adamdotdevin Jan 21, 2026
4b83351
test(app): fix e2e
adamdotdevin Jan 21, 2026
34e4d07
ignore: update download stats 2026-01-21
actions-user Jan 21, 2026
bb710e9
fix(core): snapshot regression
adamdotdevin Jan 21, 2026
e237f06
test(app): fix e2e
adamdotdevin Jan 21, 2026
ab705bb
fix(desktop): add workaround for nushell
Brendonovich Jan 21, 2026
259b2a3
fix(app): japanese language support
adamdotdevin Jan 21, 2026
87d91c2
fix(app): terminal improvements - focus, rename, error state, CSP (#9…
unitythemaker Jan 21, 2026
7ed448a
test(app): fix e2e
adamdotdevin Jan 21, 2026
d00b8df
feat(desktop): properly integrate window controls on windows (#9835)
Brendonovich Jan 21, 2026
368cd2a
fix(app): workspaces padding wonkiness (#9772)
DNGriffin Jan 21, 2026
19f6838
chore: generate
actions-user Jan 21, 2026
6ac8c85
feat(app): model tooltip metadata in chooser (per Figma request) (#9707)
kearns-cu Jan 21, 2026
f736751
chore: generate
actions-user Jan 21, 2026
63da3a3
fix(app): breaking out of auto-scroll
adamdotdevin Jan 21, 2026
4fc7bcf
fix: type error
adamdotdevin Jan 21, 2026
97e0e79
wip: black
fwang Jan 21, 2026
f7f2d97
test(app): fix e2e
adamdotdevin Jan 21, 2026
0059fdc
fix(app): add aria-labels to titlebar and sidebar buttons (#9843)
ndarilek Jan 21, 2026
b10f423
chore: generate
actions-user Jan 21, 2026
9f02ffe
fix(app): new workspace button with all languages (#9848)
ProdigyRahul Jan 21, 2026
fd77d31
tweak(session title): change prompt to have the response with user la…
spoons-and-mirrors Jan 21, 2026
bfbcbc8
feat(formatters): add laravel pint as a `.php` formatter (#7312)
nunomaduro Jan 21, 2026
b8a0e42
feat(app): search on settings shortcuts (#9850)
ProdigyRahul Jan 21, 2026
178767a
chore: generate
actions-user Jan 21, 2026
0e1a8a1
fix: Claude w/bedrock custom inference profile - caching support (#9838)
stevoland Jan 21, 2026
ab3d412
tweak: adjust skill tool description to make it more clear which skil…
rekram1-node Jan 21, 2026
850d50e
fix(app): missing i18n keys
adamdotdevin Jan 21, 2026
b746c00
feat(app): new sounds
adamdotdevin Jan 21, 2026
621550a
fix(app): keybind search height
adamdotdevin Jan 21, 2026
cd34f5e
feat(app): new sound effects, downmixed to mono
adamdotdevin Jan 21, 2026
c4c489a
release: v1.1.29
Jan 21, 2026
95b17bc
chore: generate
actions-user Jan 21, 2026
8df09ab
feat: Make the models.dev domain configurable for offline environment…
bartbroere Jan 21, 2026
1820569
chore(deps): update GitLab packages for better self-hosted instance s…
vglafirov Jan 21, 2026
d03cac2
chore: generate
actions-user Jan 21, 2026
51126f0
chore: update nix node_modules hashes
actions-user Jan 21, 2026
301e74d
fix: Persist loaded model and mode on ACP session load (#9829)
noamzbr Jan 21, 2026
d9f0287
tweak: add back todo list tools for openai models
rekram1-node Jan 21, 2026
2a370f8
feat: implement home directory expansion for permission patterns usin…
Danztee Jan 21, 2026
c69e3bb
fix(app): auto-scroll ux
adamdotdevin Jan 21, 2026
df2ed99
fix(desktop): Navigation with Big Sessions (#9529)
dbpolito Jan 21, 2026
13405ae
fix(app): remove terminal button border to align with close button (#…
allanhvam Jan 21, 2026
6f7a1c6
tweak: adjust textVerbosity and reasoningEffort defaults to better ma…
rekram1-node Jan 21, 2026
3ba1111
fix(app): terminal issues/regression
adamdotdevin Jan 21, 2026
b33cec4
fix: type error
adamdotdevin Jan 21, 2026
aa599b4
fix: when dropping unsupported metadata match on providerID/model.id …
rekram1-node Jan 21, 2026
416aaff
feat(acp): add session/list and session/fork support (#7976)
remorses Jan 21, 2026
7e609cc
chore: update nix node_modules hashes
actions-user Jan 21, 2026
5253565
fix(app): tab should select suggestion
adamdotdevin Jan 21, 2026
ae8cff2
fix(app): renaming non-git projects shouldn't affect other projects
adamdotdevin Jan 21, 2026
6d656e4
fix(app): querySelector errors, more defensive scroll-to-item
adamdotdevin Jan 21, 2026
fa91337
fix(app): provider connect oauth error handling
adamdotdevin Jan 21, 2026
1b98f26
fix(web): missing favicons
adamdotdevin Jan 21, 2026
b7b2eae
fix(web): favicon rename again
adamdotdevin Jan 21, 2026
0b63cae
fix: update pre-push hook to allow caret version differences (#9876)
gigamonster256 Jan 21, 2026
bcdec15
fix(web): favicon rename again
adamdotdevin Jan 21, 2026
09d2fd5
release: v1.1.30
Jan 21, 2026
a83145e
Merge upstream v1.1.30
shuv1337 Jan 21, 2026
8224694
Merge origin/integration to restore missing fork fixes
shuv1337 Jan 22, 2026
bf2d5a9
fix: add null check for auth in codex plugin loader
shuv1337 Jan 22, 2026
6028bff
refactor: remove standalone theme and font picker components
shuv1337 Jan 22, 2026
e08d1ed
refactor: simplify sidebar layout and add directory picker dialog
shuv1337 Jan 22, 2026
f87238f
Fix provider tests with local models fixture
shuv1337 Jan 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ jobs:
printf '%s\n' "MODELS_DEV_API_JSON=${{ github.workspace }}/packages/opencode/test/tool/fixtures/models-api.json" >> "$GITHUB_ENV"

- name: Seed opencode data
if: runner.os != 'Windows'
if: matrix.settings.name != 'windows'
working-directory: packages/opencode
run: bun script/seed-e2e.ts
env:
Expand All @@ -78,9 +78,9 @@ jobs:
OPENCODE_E2E_MODEL: "opencode/gpt-5-nano"

- name: Run opencode server
if: runner.os != 'Windows'
if: matrix.settings.name != 'windows'
working-directory: packages/opencode
run: bun dev -- --print-logs --log-level WARN serve --port 4096 --hostname 0.0.0.0 &
run: bun dev -- --print-logs --log-level WARN serve --port 4096 --hostname 127.0.0.1 &
env:
MODELS_DEV_API_JSON: ${{ env.MODELS_DEV_API_JSON }}
OPENCODE_DISABLE_MODELS_FETCH: "true"
Expand All @@ -96,10 +96,10 @@ jobs:
OPENCODE_CLIENT: "app"

- name: Wait for opencode server
if: runner.os != 'Windows'
if: matrix.settings.name != 'windows'
run: |
for i in {1..60}; do
curl -fsS "http://localhost:4096/global/health" > /dev/null && exit 0
for i in {1..120}; do
curl -fsS "http://127.0.0.1:4096/global/health" > /dev/null && exit 0
sleep 1
done
exit 1
Expand All @@ -120,9 +120,9 @@ jobs:
XDG_CACHE_HOME: ${{ env.XDG_CACHE_HOME }}
XDG_CONFIG_HOME: ${{ env.XDG_CONFIG_HOME }}
XDG_STATE_HOME: ${{ env.XDG_STATE_HOME }}
PLAYWRIGHT_SERVER_HOST: "localhost"
PLAYWRIGHT_SERVER_HOST: "127.0.0.1"
PLAYWRIGHT_SERVER_PORT: "4096"
VITE_OPENCODE_SERVER_HOST: "localhost"
VITE_OPENCODE_SERVER_HOST: "127.0.0.1"
VITE_OPENCODE_SERVER_PORT: "4096"
OPENCODE_CLIENT: "app"
timeout-minutes: 30
23 changes: 17 additions & 6 deletions .husky/pre-push
Original file line number Diff line number Diff line change
@@ -1,9 +1,20 @@
#!/bin/sh
set -e
# Check if bun version matches package.json
EXPECTED_VERSION=$(grep '"packageManager"' package.json | sed 's/.*"bun@\([^"]*\)".*/\1/')
CURRENT_VERSION=$(bun --version)
if [ "$CURRENT_VERSION" != "$EXPECTED_VERSION" ]; then
echo "Error: Bun version $CURRENT_VERSION does not match expected version $EXPECTED_VERSION from package.json"
exit 1
fi
# keep in sync with packages/script/src/index.ts semver qualifier
bun -e '
import { semver } from "bun";
const pkg = await Bun.file("package.json").json();
const expectedBunVersion = pkg.packageManager?.split("@")[1];
if (!expectedBunVersion) {
throw new Error("packageManager field not found in root package.json");
}
const expectedBunVersionRange = `^${expectedBunVersion}`;
if (!semver.satisfies(process.versions.bun, expectedBunVersionRange)) {
throw new Error(`This script requires bun@${expectedBunVersionRange}, but you are using bun@${process.versions.bun}`);
}
if (process.versions.bun !== expectedBunVersion) {
console.warn(`Warning: Bun version ${process.versions.bun} differs from expected ${expectedBunVersion}`);
}
'
bun typecheck
1 change: 1 addition & 0 deletions STATS.md
Original file line number Diff line number Diff line change
Expand Up @@ -206,3 +206,4 @@
| 2026-01-18 | 4,627,623 (+238,065) | 1,839,171 (+33,856) | 6,466,794 (+271,921) |
| 2026-01-19 | 4,861,108 (+233,485) | 1,863,112 (+23,941) | 6,724,220 (+257,426) |
| 2026-01-20 | 5,128,999 (+267,891) | 1,903,665 (+40,553) | 7,032,664 (+308,444) |
| 2026-01-21 | 5,444,842 (+315,843) | 1,962,531 (+58,866) | 7,407,373 (+374,709) |
46 changes: 22 additions & 24 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 14 additions & 1 deletion infra/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ const GITHUB_APP_ID = new sst.Secret("GITHUB_APP_ID")
const GITHUB_APP_PRIVATE_KEY = new sst.Secret("GITHUB_APP_PRIVATE_KEY")
export const EMAILOCTOPUS_API_KEY = new sst.Secret("EMAILOCTOPUS_API_KEY")
const ADMIN_SECRET = new sst.Secret("ADMIN_SECRET")
const DISCORD_SUPPORT_BOT_TOKEN = new sst.Secret("DISCORD_SUPPORT_BOT_TOKEN")
const DISCORD_SUPPORT_CHANNEL_ID = new sst.Secret("DISCORD_SUPPORT_CHANNEL_ID")
const FEISHU_APP_ID = new sst.Secret("FEISHU_APP_ID")
const FEISHU_APP_SECRET = new sst.Secret("FEISHU_APP_SECRET")
const bucket = new sst.cloudflare.Bucket("Bucket")

export const api = new sst.cloudflare.Worker("Api", {
Expand All @@ -13,7 +17,16 @@ export const api = new sst.cloudflare.Worker("Api", {
WEB_DOMAIN: domain,
},
url: true,
link: [bucket, GITHUB_APP_ID, GITHUB_APP_PRIVATE_KEY, ADMIN_SECRET],
link: [
bucket,
GITHUB_APP_ID,
GITHUB_APP_PRIVATE_KEY,
ADMIN_SECRET,
DISCORD_SUPPORT_BOT_TOKEN,
DISCORD_SUPPORT_CHANNEL_ID,
FEISHU_APP_ID,
FEISHU_APP_SECRET,
],
transform: {
worker: (args) => {
args.logpush = true
Expand Down
8 changes: 4 additions & 4 deletions nix/hashes.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"nodeModules": {
"x86_64-linux": "sha256-xVA4r7Qugw0TSx5wiTI5al93FI4D5LlvQo2ab3cUlmE=",
"aarch64-linux": "sha256-EV0U/mXlrnEyCryL9rLlOZvMn6U0+BSgPhTIudVeqTo=",
"aarch64-darwin": "sha256-zQvdRyNEHrpJsQMj8PZH0Ub21EREmDetVaJ0yBCgDlE=",
"x86_64-darwin": "sha256-Tt5k5KBnrsNVIqPET7OFzClerjdR68XYstyCj3KpvdI="
"x86_64-linux": "sha256-sH6zUk9G4vC6btPZIR9aiSHX0F4aGyUZB7fKbpDUcpE=",
"aarch64-linux": "sha256-CVpdXnFns34hmGwwlRrrI6Uk6B/jZUxfnH4HC2NanEo=",
"aarch64-darwin": "sha256-khP27Iiq+FAZRlzUy7rGXc2MviZjirFH1ShRyd7q1bY=",
"x86_64-darwin": "sha256-nE2p62Tld64sQVMq7j0YNT5Zwjqp22H997+K8xfi1ag="
}
}
8 changes: 8 additions & 0 deletions packages/app/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@

- NEVER try to restart the app, or the server process, EVER.

## Local Dev

- `opencode dev web` proxies `https://app.opencode.ai`, so local UI/CSS changes will not show there.
- For local UI changes, run the backend and app dev servers separately.
- Backend (from `packages/opencode`): `bun run --conditions=browser ./src/index.ts serve --port 4096`
- App (from `packages/app`): `bun dev -- --port 4444`
- Open `http://localhost:4444` to verify UI changes (it targets the backend at `http://localhost:4096`).

## SolidJS

- Always prefer `createStore` over multiple `createSignal` calls
Expand Down
3 changes: 2 additions & 1 deletion packages/app/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/app",
"version": "1.1.28-1",
"version": "1.1.30",
"description": "",
"type": "module",
"exports": {
Expand Down Expand Up @@ -43,6 +43,7 @@
"@shikijs/transformers": "3.9.2",
"@solid-primitives/active-element": "2.1.3",
"@solid-primitives/audio": "1.4.2",
"@solid-primitives/i18n": "2.2.1",
"@solid-primitives/event-bus": "1.1.2",
"@solid-primitives/media": "2.3.3",
"@solid-primitives/resize-observer": "2.1.3",
Expand Down
1 change: 0 additions & 1 deletion packages/app/public/apple-touch-icon-v2.png

This file was deleted.

1 change: 1 addition & 0 deletions packages/app/public/apple-touch-icon-v3.png
1 change: 0 additions & 1 deletion packages/app/public/favicon-96x96-v2.png

This file was deleted.

1 change: 1 addition & 0 deletions packages/app/public/favicon-96x96-v3.png
1 change: 0 additions & 1 deletion packages/app/public/favicon-v2.ico

This file was deleted.

1 change: 0 additions & 1 deletion packages/app/public/favicon-v2.svg

This file was deleted.

1 change: 1 addition & 0 deletions packages/app/public/favicon-v3.ico
Loading