Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
daf5b99
fix(provider): detect nested rate-limit errors in SSE responses
Apr 20, 2026
ec33256
feat(provider): learn rate limits empirically and parse headers
claude Apr 20, 2026
2ffd1b0
refactor(provider): tighten rate-limit module after review
claude Apr 20, 2026
ce628d0
Merge pull request #1 from TTK95/claude/add-rate-limit-tracking-EuuBc
TTK95 Apr 20, 2026
13df724
Merge branch 'anomalyco:dev' into dev
TTK95 Apr 20, 2026
8a6b623
Merge branch 'anomalyco:dev' into dev
TTK95 Apr 20, 2026
fb120c0
feat(permission): add YOLO mode and replace session permissions
Apr 20, 2026
27c51d1
Merge branch 'anomalyco:dev' into dev
TTK95 Apr 20, 2026
dac7c96
Add pre-flight rate limiting with token accounting
claude Apr 20, 2026
ba0bc34
Merge pull request #2 from TTK95/claude/rwth-api-rate-limits-algv0
TTK95 Apr 21, 2026
87d3247
Merge remote-tracking branch 'upstream/dev' into feat/yolo-mode
Apr 21, 2026
330bafd
Merge branch 'anomalyco:dev' into dev
TTK95 Apr 21, 2026
db21042
Merge remote-tracking branch 'fork/dev' into dev
Apr 21, 2026
489568d
Add message counters to stats output
Apr 21, 2026
d42c2f3
Merge branch 'anomalyco:dev' into dev
TTK95 Apr 21, 2026
5b50232
feat(tui): add /usage stats screen with Overview and Models subviews
claude Apr 21, 2026
f9ee468
Add RWTH provider, parseModel aliases, and sidebar message counters
Apr 21, 2026
6085b96
refactor(tui): tighten /usage stats module
claude Apr 21, 2026
0508e51
Merge pull request #3 from TTK95/claude/add-stats-window-LymQp
TTK95 Apr 21, 2026
c02448b
Merge remote-tracking branch 'origin/dev' into dev
Apr 21, 2026
3e39fae
Merge remote-tracking branch 'origin/dev' into dev
Apr 21, 2026
62b58f4
fix(tui): replace /usage top tab bar with plain "Usage" headline
Apr 21, 2026
b78d907
docs: add local rebuild + reinstall guide for opencode CLI
Apr 21, 2026
5265a3d
feat: port four Claude Code conveniences to OpenCode
claude Apr 22, 2026
d892a6f
refactor(background-shell): tighten surface, recover from missing she…
claude Apr 22, 2026
3e2f619
Merge pull request #4 from TTK95/claude/explore-claude-opencode-featu…
TTK95 Apr 23, 2026
e3249b3
merge: upstream/dev (v1.14.21) into dev; bump to 1.14.21-dev_ttk
Apr 23, 2026
35519a4
fix(tui): resolve TuiThemeCurrent type constraint in sidebar context
Apr 23, 2026
ebce014
chore: ignore .claude/ (local Claude Code settings and agent worktrees)
Apr 23, 2026
c52e81d
fix(provider): narrow nested rate-limit detector, let insufficient_qu…
Apr 23, 2026
f6fecc3
feat(remote): add self-hostable remote-control tunnel for opencode
claude Apr 23, 2026
cd603dc
fix(tui): use TuiThemeCurrent as an object type, not ReturnType
claude Apr 23, 2026
5b8e274
Merge pull request #5 from TTK95/merge/upstream-v1.14.21-dev_ttk
TTK95 Apr 23, 2026
0685550
feat(relay): serve self-contained mobile chat UI at /r/:code
claude Apr 23, 2026
b56e441
Revert "feat(relay): serve self-contained mobile chat UI at /r/:code"
claude Apr 23, 2026
ee7ecc6
Revert "feat(remote): add self-hostable remote-control tunnel for ope…
claude Apr 23, 2026
947037b
feat(tailscale): add `opencode tailscale` for remote control over a t…
claude Apr 23, 2026
5e97497
feat(container): add Docker sandbox for tool execution
claude Apr 23, 2026
7d74db9
fix(container): harden env forwarding, surface session id, add tests
claude Apr 23, 2026
7d5bae8
refactor(tailscale): tighten defaults, improve errors, test TLS passt…
claude Apr 23, 2026
164ee9d
Merge pull request #6 from TTK95/claude/docker-sandbox-feature-rcayv
TTK95 Apr 24, 2026
533d990
Merge pull request #7 from TTK95/claude/remote-control-opencode-UNdj9
TTK95 Apr 24, 2026
288e111
merge: upstream/dev (v1.14.22) into dev; bump to 1.14.22-dev_ttk
Apr 24, 2026
1dd87bd
chore: bump LOCAL_REINSTALL.md and bun.lock to 1.14.22-dev_ttk
Apr 24, 2026
76636ea
fix(tool): port bash-output and kill-shell params from zod to Effect …
Apr 24, 2026
3c852a5
docs: add CUSTOM_FEATURES.md enumerating fork patches on top of upstream
Apr 24, 2026
27aaccc
Merge remote-tracking branch 'origin/dev' into dev
Apr 24, 2026
92217da
docs: add Tailscale and Docker sandbox sections to CUSTOM_FEATURES
Apr 24, 2026
17828f9
feat(tui): wire --container / --container-image to the TUI default co…
Apr 24, 2026
0e443a5
docs: document Docker Desktop prerequisite for container sandbox
Apr 24, 2026
3edeedd
Merge remote-tracking branch 'upstream/dev' into dev
Apr 27, 2026
13c884d
fix(post-merge): re-target imports to @opencode-ai/core after shared→…
Apr 27, 2026
c4314f5
Merge remote-tracking branch 'upstream/dev' into dev
Apr 27, 2026
6e17d81
ci: add weekly upstream sync workflow
Apr 27, 2026
bb24445
docs: add design plan for fork self-update (Option 2)
Apr 27, 2026
c488681
feat(installation): add fork self-update via github-release method
Apr 27, 2026
090f690
fix(installation): stamp OPENCODE_REPO at build time + clean error paths
Apr 27, 2026
35b6406
fix: address Codex P1/P2 review on PR #8
Apr 27, 2026
a107fee
fix(sync-upstream): replace JS ternary in Bash heredoc
Apr 27, 2026
722d2fc
fix(sync-upstream): actually toggle PR draft state on existing branch
Apr 27, 2026
ef2892c
fix(sync-upstream): bail when sync branch has an open PR
Apr 27, 2026
70dd776
fix(sync-upstream): defer bun install + harden branch guard against g…
Apr 27, 2026
8beb06d
fix(sync-upstream): distinguish ls-remote "no refs" from real errors
Apr 27, 2026
d8ce95d
chore: final review polish
Apr 27, 2026
0701c64
Merge pull request #8 from TTK95/feat/auto-sync-and-self-update
TTK95 Apr 27, 2026
58f4a09
fix command sync coverage
Apr 27, 2026
5aed2c7
Merge upstream/dev into sync/upstream-v1.14.29
Apr 29, 2026
bf70e39
fix(fork): update Log + InstanceState imports for upstream path conso…
Apr 29, 2026
4a0f091
fix(app): cast fork's id-bearing test todos to Todo via unknown
Apr 29, 2026
56f9260
fix(cli): allow --method github-release on upgrade command
Apr 27, 2026
7887249
Merge upstream/dev (v1.14.39) into sync branch
May 5, 2026
0a3cb04
feat(permission): auto-approve sandboxed bash/edit/external_directory
May 5, 2026
40caf86
fix(installation): make Windows github-release upgrade actually repla…
May 5, 2026
61e362a
Merge remote-tracking branch 'upstream/dev' into dev
May 5, 2026
37d1991
chore: sync bun.lock workspace versions to 1.14.41
May 5, 2026
2752cf9
docs: add container mode report (EN + DE)
May 5, 2026
e9f4920
docs(container): add prerequisites section (EN + DE)
May 5, 2026
620a262
docs: add fork install guide (Windows + Linux, EN + DE)
May 5, 2026
01649e2
feat(tui): show container + yolo mode in sidebar and footer
May 5, 2026
f7bfdbe
fix(tui): render container/yolo badges in actual sidebar + home footer
May 5, 2026
d02c4e4
fix(tui): correct container badge cache + yolo evaluation
May 6, 2026
ce2518e
fix(tui): add container runtime registry + diagnostic /container
May 6, 2026
f8ebaf4
feat(container): preBoot diagnostic + startup toast + stderr trace
May 6, 2026
76d7da6
fix(server): expose container info on the legacy Hono /path route too
May 6, 2026
4623d00
fix(server): make /yolo toggle actually disable + copy-mode container…
May 6, 2026
fd990ee
chore: re-baseline fork version to 1.14.39-ttk.0
May 6, 2026
2418059
fix(container): gate external_directory in sandbox mode + honest /con…
May 6, 2026
23c4834
chore(release): 1.14.39-ttk.1
May 6, 2026
7314c50
ci(deploy): gate SST deploy job to upstream repo only
May 6, 2026
c6b4eaf
fix: address Codex P1 review on PR #10
May 6, 2026
67a8a2b
fix: address Codex P1+P2 second-pass review on PR #10
May 6, 2026
64fb13e
fix: address Codex 3rd-pass review on PR #10
May 6, 2026
0c49129
fix(provider): tick rate-limiter after dispatch, not before
May 6, 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
1 change: 1 addition & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ concurrency: ${{ github.workflow }}-${{ github.ref }}
jobs:
deploy:
runs-on: ubuntu-latest
if: github.repository == 'anomalyco/opencode'
steps:
- uses: actions/checkout@v3

Expand Down
123 changes: 123 additions & 0 deletions .github/workflows/release-fork.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
name: Release Fork Build

# Builds a fork-channel opencode binary on every push to dev (when the
# version in packages/opencode/package.json doesn't already have a
# matching v<version> release) and publishes it as a GitHub release with
# the windows-x64 zip attached. The in-app `opencode upgrade` flow on
# fork builds (channel `dev_ttk`) pulls from these releases.
#
# Single-platform (windows-x64) on purpose — the user's only target.
# Adding macOS/Linux later is a runs-on matrix expansion.

on:
push:
branches: [dev]
paths:
- "packages/opencode/package.json"
- "packages/opencode/**"
- "packages/core/**"
- "packages/plugin/**"
- "packages/script/**"
- "bun.lock"
- ".github/workflows/release-fork.yml"
workflow_dispatch:

permissions:
contents: write

jobs:
check-version:
runs-on: ubuntu-latest
outputs:
version: ${{ steps.read.outputs.version }}
tag: ${{ steps.read.outputs.tag }}
should_release: ${{ steps.read.outputs.should_release }}
steps:
- uses: actions/checkout@v4
- name: Read version + check existing tag
id: read
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -e
VERSION=$(jq -r .version packages/opencode/package.json)
TAG="v${VERSION}"
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
echo "tag=${TAG}" >> "$GITHUB_OUTPUT"
if gh release view "$TAG" --repo "$GITHUB_REPOSITORY" > /dev/null 2>&1; then
echo "should_release=false" >> "$GITHUB_OUTPUT"
echo "Release ${TAG} already exists — skipping."
else
echo "should_release=true" >> "$GITHUB_OUTPUT"
fi

build-and-release:
needs: check-version
if: needs.check-version.outputs.should_release == 'true'
runs-on: windows-latest
steps:
- uses: actions/checkout@v4

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version-file: package.json

- name: Install deps
run: bun install --frozen-lockfile

- name: Build windows-x64 (fork channel)
shell: bash
env:
OPENCODE_VERSION: ${{ needs.check-version.outputs.version }}
OPENCODE_CHANNEL: dev_ttk
OPENCODE_REPO: ${{ github.repository }}
run: bun run --cwd packages/opencode build --single

- name: Smoke test binary
shell: pwsh
# Use a substring (`-notlike *expected*`) rather than `-notmatch`
# so the version is treated as a literal — `1.14.28-dev_ttk`
# contains regex metachars (`.`) that would silently match too
# much under `-notmatch`.
run: |
$exe = "packages/opencode/dist/opencode-windows-x64/bin/opencode.exe"
if (-not (Test-Path $exe)) { throw "Binary not produced at $exe" }
$version = (& $exe --version).Trim()
$expected = "${{ needs.check-version.outputs.version }}"
Write-Host "Built '$version' (expected substring '$expected')"
if ($version -notlike "*$expected*") {
throw "Version mismatch: expected substring '$expected', got '$version'"
}

- name: Package zip
shell: pwsh
# Zip the `bin` directory itself (not its contents). The upgrade
# flow extracts the archive into <installRoot>; we need the
# archive root to be `bin/...` so the new binary lands at
# <installRoot>/bin/opencode.exe — the path the launcher reads.
# `Compress-Archive -Path bin/*` would flatten and write
# opencode.exe at <installRoot>/, leaving the launcher pointing
# at the stale binary in bin/.
run: |
Compress-Archive `
-Path "packages/opencode/dist/opencode-windows-x64/bin" `
-DestinationPath "opencode-windows-x64.zip" `
-Force

- name: Create release
shell: bash
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release create "${{ needs.check-version.outputs.tag }}" \
"opencode-windows-x64.zip" \
--repo "$GITHUB_REPOSITORY" \
--title "opencode ${{ needs.check-version.outputs.version }} (fork)" \
--notes "Auto-published fork build of opencode ${{ needs.check-version.outputs.version }}.

\`opencode upgrade\` on fork installs (channel \`dev_ttk\`) will pull this release automatically.

- Platform: \`windows-x64\`
- Channel: \`dev_ttk\`
- Built from: ${{ github.sha }}"
Loading
Loading