Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
8bcbfd6
wip(app): settings
adamdotdevin Jan 6, 2026
de3641e
wip(app): settings
adamdotdevin Jan 6, 2026
df094a1
wip(app): settings
adamdotdevin Jan 7, 2026
924fc9e
wip(app): settings
adamdotdevin Jan 16, 2026
dd5b5f5
chore: cleanup
adamdotdevin Jan 19, 2026
3402855
chore: cleanup
adamdotdevin Jan 20, 2026
d77cbf9
chore: cleanup
adamdotdevin Jan 20, 2026
47fa496
chore: generate
actions-user Jan 20, 2026
ac7e674
fix(app): broken
adamdotdevin Jan 20, 2026
01b1294
fix(app): terminal no longer hangs on exit or ctrl + D and closes the…
ProdigyRahul Jan 20, 2026
c365f0a
feat: add restart and reload menu items on macOS (#9212)
BlankParticle Jan 20, 2026
8595dae
fix(app): session loading loop
adamdotdevin Jan 20, 2026
cd2125e
chore: generate
actions-user Jan 20, 2026
e8b0a65
feat: Support ACP audience by mapping to ignore and synthetic (#9593)
noamzbr Jan 20, 2026
733226d
chore: generate
actions-user Jan 20, 2026
8f62d4a
fix(mcp): register OAuth callback before opening browser (#9646)
msvechla Jan 20, 2026
7f86253
fix(app): better pending states for workspace operations
adamdotdevin Jan 20, 2026
86b2002
fix: type error
adamdotdevin Jan 20, 2026
5f67e6f
fix(app): don't jump accordion on expand/collapse
adamdotdevin Jan 20, 2026
8639b07
feat(app): add tooltips to sidebar new session/workspace buttons (#9652)
ProdigyRahul Jan 20, 2026
dfe6ce2
chore: generate
actions-user Jan 20, 2026
5622c53
tweak: adjust codex prompt to discourage unnecessary question asking …
rekram1-node Jan 20, 2026
68e41a1
fix: pass arguments to commands without explicit placeholders (#9606)
remorses Jan 20, 2026
a3a06ff
fix(ui): show filename in Edit/Write permission titles (#9662)
zerone0x Jan 20, 2026
b05d88a
docs: clarify that malicious config files are not an attack vector
thdxr Jan 20, 2026
7170983
fix(app): duplicate session loads
adamdotdevin Jan 20, 2026
17c4202
fix(opencode): Allow compatible Bun versions in packageManager field …
MBanucu Jan 20, 2026
17438a2
Update node_modules hashes
actions-user Jan 20, 2026
1bc919d
ignore: add bun/file io skill just for our repo
rekram1-node Jan 20, 2026
156ce54
fix(ui): prevent Enter key action during IME composition (#9564)
DRunkPiano114 Jan 20, 2026
80481c2
fix(app): cleanup pty.exited event listener on unmount (#9671)
ProdigyRahul Jan 20, 2026
281c9d1
fix(app): change terminal.new keybind to ctrl+alt+t (#9670)
ProdigyRahul Jan 20, 2026
5521d66
wip(app): ayu colors
adamdotdevin Jan 20, 2026
0b9b85e
wip(app): ayu colors
adamdotdevin Jan 20, 2026
1d6f650
fix(app): ayu theme colors
adamdotdevin Jan 20, 2026
1ac0980
test(app): windows e2e
adamdotdevin Jan 20, 2026
f73d7e6
test(app): windows fixes
adamdotdevin Jan 20, 2026
1466b43
test(app): windows fixes
adamdotdevin Jan 20, 2026
95e9407
test(app): fix e2e
adamdotdevin Jan 20, 2026
ff8abd8
increase session messages popover open delay to 1000ms
iamdavidhill Jan 20, 2026
a94667e
increase icon letter size to 32px in edit project dialog
iamdavidhill Jan 20, 2026
74ad6dd
update settings tabs layout and spacing
iamdavidhill Jan 20, 2026
1753139
use active background color for selected settings tab
iamdavidhill Jan 20, 2026
1a4abe8
add sliders icon and use it for General settings tab
iamdavidhill Jan 20, 2026
83557e9
add keyboard icon and use it for Shortcuts settings tab
iamdavidhill Jan 20, 2026
745206f
increase gap between icon and label in settings tabs to 12px
iamdavidhill Jan 20, 2026
ecae24f
use medium font weight for settings tab labels
iamdavidhill Jan 20, 2026
0cbbe5a
remove subheader from General settings panel
iamdavidhill Jan 20, 2026
262aca1
remove border and background from settings panel headers
iamdavidhill Jan 20, 2026
78bcbda
wrap settings row groups with styled container
iamdavidhill Jan 20, 2026
f9c951a
render font options in their respective fonts
iamdavidhill Jan 20, 2026
0ffc2c2
increase select dropdown padding to 4px
iamdavidhill Jan 20, 2026
af8d911
update select item styling: 4px radius, default cursor, 8px 2px padding
iamdavidhill Jan 20, 2026
09a6107
set select dropdown min-width to 180px
iamdavidhill Jan 20, 2026
f3b0f31
adjust select dropdown positioning and padding structure
iamdavidhill Jan 20, 2026
9ffb714
set select dropdown border-radius to 8px
iamdavidhill Jan 20, 2026
c57491b
add triggerStyle prop to Select and use it for font selector
iamdavidhill Jan 20, 2026
bcb8d97
add selector icon and use it for select dropdown trigger
iamdavidhill Jan 20, 2026
a8113ee
update select trigger and dropdown styling
iamdavidhill Jan 20, 2026
36bbe80
add 4px gutter between select trigger and dropdown
iamdavidhill Jan 20, 2026
2b95956
add x-large dialog size and use it for settings modal
iamdavidhill Jan 20, 2026
0d9ce6a
set settings sidebar width to 200px
iamdavidhill Jan 20, 2026
19ac6f1
set hover background of active sidebar item to surface-raised-base
iamdavidhill Jan 20, 2026
c2c2bb1
add 4px left padding to sidebar section title
iamdavidhill Jan 20, 2026
f250a22
update select trigger icon styling and spacing
iamdavidhill Jan 20, 2026
26f66b5
update: color token
iamdavidhill Jan 20, 2026
715860f
set default select trigger background to transparent
iamdavidhill Jan 20, 2026
0c270b4
reset select trigger to default state after selection
iamdavidhill Jan 20, 2026
1092cf4
increase gap between label and icon in select trigger to 12px
iamdavidhill Jan 20, 2026
3eea1d4
set select trigger value font weight to regular
iamdavidhill Jan 20, 2026
73b1bc4
increase specificity of select trigger hover/expanded states
iamdavidhill Jan 20, 2026
39afc05
add fade gradient to settings panel headers
iamdavidhill Jan 20, 2026
7f42776
set 32px spacing between main title and group title
iamdavidhill Jan 20, 2026
602b6be
update settings panel padding and make content full width
iamdavidhill Jan 20, 2026
dbc15d4
add color scheme preview on hover in appearance dropdown
iamdavidhill Jan 20, 2026
261b1ec
update keyboard shortcuts panel to match general settings styling
iamdavidhill Jan 20, 2026
7653e2d
update: add new border and shadow style
iamdavidhill Jan 20, 2026
7eb724f
fix: dialog shadow
iamdavidhill Jan 20, 2026
e83c01a
fix(tui): prevent sidebar height from overflowing. (#9689)
IdrisGit Jan 20, 2026
eea70be
chore: follow conventional commit in nix CI (#9672)
gigamonster256 Jan 20, 2026
c4594c4
fix(opencode): relax bun version requirement (#9682)
gigamonster256 Jan 20, 2026
96a9744
fix: type error
adamdotdevin Jan 20, 2026
bf9047c
fix settings sidebar active tab hover to use consistent background
iamdavidhill Jan 20, 2026
ecd28fd
fix: prompt agent button style
iamdavidhill Jan 20, 2026
de87694
fix: resolve Select children type conflict with ButtonProps
iamdavidhill Jan 20, 2026
1f3b2b5
fix(app): Edit-project name race condition (#9551)
DNGriffin Jan 20, 2026
6946950
fix(opencode): preserve tool input from running state for MCP tool re…
rynfar Jan 20, 2026
d51089b
docs(web): add KDCO plugins to ecosystem (#7694)
kdcokenny Jan 20, 2026
8c5c377
fix: review empty state font size
iamdavidhill Jan 20, 2026
2111473
fix: remove close delay on hover cards to stop overlapping
iamdavidhill Jan 20, 2026
4350b8f
fix: show View all sessions button for active project and close hover…
iamdavidhill Jan 20, 2026
575cc59
fix: increase sidebar icon size by removing 16px constraint
iamdavidhill Jan 20, 2026
7be6671
refactor Select component to use settings variant for settings modal …
iamdavidhill Jan 20, 2026
8137e4d
chore: agents.md
adamdotdevin Jan 20, 2026
d2fcdef
release: v1.1.28
Jan 20, 2026
785dc6a
sync: merge upstream v1.1.28 into shuvcode-dev
shuv1337 Jan 21, 2026
59aed64
Merge branch 'integration' into shuvcode-dev
shuv1337 Jan 21, 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
92 changes: 66 additions & 26 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,29 @@ on:
workflow_dispatch:
jobs:
test:
runs-on: blacksmith-4vcpu-ubuntu-2404
name: test (${{ matrix.settings.name }})
strategy:
fail-fast: false
matrix:
settings:
- name: linux
host: blacksmith-4vcpu-ubuntu-2404
playwright: bunx playwright install --with-deps
workdir: .
command: |
git config --global user.email "bot@opencode.ai"
git config --global user.name "opencode"
bun turbo typecheck
bun turbo test
- name: windows
host: windows-latest
playwright: bunx playwright install
workdir: packages/app
command: bun test:e2e
runs-on: ${{ matrix.settings.host }}
defaults:
run:
shell: bash
steps:
- name: Checkout repository
uses: actions/checkout@v4
Expand All @@ -21,42 +43,63 @@ jobs:

- name: Install Playwright browsers
working-directory: packages/app
run: bunx playwright install --with-deps
run: ${{ matrix.settings.playwright }}

- name: Set OS-specific paths
run: |
if [ "${{ runner.os }}" = "Windows" ]; then
printf '%s\n' "OPENCODE_E2E_ROOT=${{ runner.temp }}\\opencode-e2e" >> "$GITHUB_ENV"
printf '%s\n' "OPENCODE_TEST_HOME=${{ runner.temp }}\\opencode-e2e\\home" >> "$GITHUB_ENV"
printf '%s\n' "XDG_DATA_HOME=${{ runner.temp }}\\opencode-e2e\\share" >> "$GITHUB_ENV"
printf '%s\n' "XDG_CACHE_HOME=${{ runner.temp }}\\opencode-e2e\\cache" >> "$GITHUB_ENV"
printf '%s\n' "XDG_CONFIG_HOME=${{ runner.temp }}\\opencode-e2e\\config" >> "$GITHUB_ENV"
printf '%s\n' "XDG_STATE_HOME=${{ runner.temp }}\\opencode-e2e\\state" >> "$GITHUB_ENV"
printf '%s\n' "MODELS_DEV_API_JSON=${{ github.workspace }}\\packages\\opencode\\test\\tool\\fixtures\\models-api.json" >> "$GITHUB_ENV"
else
printf '%s\n' "OPENCODE_E2E_ROOT=${{ runner.temp }}/opencode-e2e" >> "$GITHUB_ENV"
printf '%s\n' "OPENCODE_TEST_HOME=${{ runner.temp }}/opencode-e2e/home" >> "$GITHUB_ENV"
printf '%s\n' "XDG_DATA_HOME=${{ runner.temp }}/opencode-e2e/share" >> "$GITHUB_ENV"
printf '%s\n' "XDG_CACHE_HOME=${{ runner.temp }}/opencode-e2e/cache" >> "$GITHUB_ENV"
printf '%s\n' "XDG_CONFIG_HOME=${{ runner.temp }}/opencode-e2e/config" >> "$GITHUB_ENV"
printf '%s\n' "XDG_STATE_HOME=${{ runner.temp }}/opencode-e2e/state" >> "$GITHUB_ENV"
printf '%s\n' "MODELS_DEV_API_JSON=${{ github.workspace }}/packages/opencode/test/tool/fixtures/models-api.json" >> "$GITHUB_ENV"
fi

- name: Seed opencode data
working-directory: packages/opencode
run: bun script/seed-e2e.ts
env:
MODELS_DEV_API_JSON: ${{ github.workspace }}/packages/opencode/test/tool/fixtures/models-api.json
MODELS_DEV_API_JSON: ${{ env.MODELS_DEV_API_JSON }}
OPENCODE_DISABLE_MODELS_FETCH: "true"
OPENCODE_DISABLE_SHARE: "true"
OPENCODE_DISABLE_LSP_DOWNLOAD: "true"
OPENCODE_DISABLE_DEFAULT_PLUGINS: "true"
OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER: "true"
OPENCODE_TEST_HOME: ${{ runner.temp }}/opencode-e2e/home
XDG_DATA_HOME: ${{ runner.temp }}/opencode-e2e/share
XDG_CACHE_HOME: ${{ runner.temp }}/opencode-e2e/cache
XDG_CONFIG_HOME: ${{ runner.temp }}/opencode-e2e/config
XDG_STATE_HOME: ${{ runner.temp }}/opencode-e2e/state
OPENCODE_TEST_HOME: ${{ env.OPENCODE_TEST_HOME }}
XDG_DATA_HOME: ${{ env.XDG_DATA_HOME }}
XDG_CACHE_HOME: ${{ env.XDG_CACHE_HOME }}
XDG_CONFIG_HOME: ${{ env.XDG_CONFIG_HOME }}
XDG_STATE_HOME: ${{ env.XDG_STATE_HOME }}
OPENCODE_E2E_PROJECT_DIR: ${{ github.workspace }}
OPENCODE_E2E_SESSION_TITLE: "E2E Session"
OPENCODE_E2E_MESSAGE: "Seeded for UI e2e"
OPENCODE_E2E_MODEL: "opencode/gpt-5-nano"

- name: Run opencode server
run: bun run dev -- --print-logs --log-level WARN serve --port 4096 --hostname 0.0.0.0 &
working-directory: packages/opencode
run: bun dev -- --print-logs --log-level WARN serve --port 4096 --hostname 0.0.0.0 &
env:
MODELS_DEV_API_JSON: ${{ github.workspace }}/packages/opencode/test/tool/fixtures/models-api.json
MODELS_DEV_API_JSON: ${{ env.MODELS_DEV_API_JSON }}
OPENCODE_DISABLE_MODELS_FETCH: "true"
OPENCODE_DISABLE_SHARE: "true"
OPENCODE_DISABLE_LSP_DOWNLOAD: "true"
OPENCODE_DISABLE_DEFAULT_PLUGINS: "true"
OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER: "true"
OPENCODE_TEST_HOME: ${{ runner.temp }}/opencode-e2e/home
XDG_DATA_HOME: ${{ runner.temp }}/opencode-e2e/share
XDG_CACHE_HOME: ${{ runner.temp }}/opencode-e2e/cache
XDG_CONFIG_HOME: ${{ runner.temp }}/opencode-e2e/config
XDG_STATE_HOME: ${{ runner.temp }}/opencode-e2e/state
OPENCODE_TEST_HOME: ${{ env.OPENCODE_TEST_HOME }}
XDG_DATA_HOME: ${{ env.XDG_DATA_HOME }}
XDG_CACHE_HOME: ${{ env.XDG_CACHE_HOME }}
XDG_CONFIG_HOME: ${{ env.XDG_CONFIG_HOME }}
XDG_STATE_HOME: ${{ env.XDG_STATE_HOME }}
OPENCODE_CLIENT: "app"

- name: Wait for opencode server
Expand All @@ -68,24 +111,21 @@ jobs:
exit 1

- name: run
run: |
git config --global user.email "bot@opencode.ai"
git config --global user.name "opencode"
bun turbo typecheck
bun turbo test
working-directory: ${{ matrix.settings.workdir }}
run: ${{ matrix.settings.command }}
env:
CI: true
MODELS_DEV_API_JSON: ${{ github.workspace }}/packages/opencode/test/tool/fixtures/models-api.json
MODELS_DEV_API_JSON: ${{ env.MODELS_DEV_API_JSON }}
OPENCODE_DISABLE_MODELS_FETCH: "true"
OPENCODE_DISABLE_SHARE: "true"
OPENCODE_DISABLE_LSP_DOWNLOAD: "true"
OPENCODE_DISABLE_DEFAULT_PLUGINS: "true"
OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER: "true"
OPENCODE_TEST_HOME: ${{ runner.temp }}/opencode-e2e/home
XDG_DATA_HOME: ${{ runner.temp }}/opencode-e2e/share
XDG_CACHE_HOME: ${{ runner.temp }}/opencode-e2e/cache
XDG_CONFIG_HOME: ${{ runner.temp }}/opencode-e2e/config
XDG_STATE_HOME: ${{ runner.temp }}/opencode-e2e/state
OPENCODE_TEST_HOME: ${{ env.OPENCODE_TEST_HOME }}
XDG_DATA_HOME: ${{ env.XDG_DATA_HOME }}
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_PORT: "4096"
VITE_OPENCODE_SERVER_HOST: "localhost"
Expand Down
138 changes: 138 additions & 0 deletions .github/workflows/update-nix-hashes.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
name: Update Nix Hashes

permissions:
contents: write

on:
workflow_dispatch:
push:
paths:
- "bun.lock"
- "package.json"
- "packages/*/package.json"
- "flake.lock"
- ".github/workflows/update-nix-hashes.yml"
pull_request:
paths:
- "bun.lock"
- "package.json"
- "packages/*/package.json"
- "flake.lock"
- ".github/workflows/update-nix-hashes.yml"

jobs:
update-node-modules-hashes:
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
runs-on: blacksmith-4vcpu-ubuntu-2404
env:
TITLE: node_modules hashes

steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0
ref: ${{ github.head_ref || github.ref_name }}
repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }}

- name: Setup Nix
uses: nixbuild/nix-quick-install-action@v34

- name: Configure git
run: |
git config --global user.email "action@github.com"
git config --global user.name "Github Action"

- name: Pull latest changes
env:
TARGET_BRANCH: ${{ github.head_ref || github.ref_name }}
run: |
BRANCH="${TARGET_BRANCH:-${GITHUB_REF_NAME}}"
git pull --rebase --autostash origin "$BRANCH"

- name: Compute all node_modules hashes
run: |
set -euo pipefail

HASH_FILE="nix/hashes.json"
SYSTEMS="x86_64-linux aarch64-linux x86_64-darwin aarch64-darwin"

if [ ! -f "$HASH_FILE" ]; then
mkdir -p "$(dirname "$HASH_FILE")"
echo '{"nodeModules":{}}' > "$HASH_FILE"
fi

for SYSTEM in $SYSTEMS; do
echo "Computing hash for ${SYSTEM}..."
BUILD_LOG=$(mktemp)
trap 'rm -f "$BUILD_LOG"' EXIT

# The updater derivations use fakeHash, so they will fail and reveal the correct hash
UPDATER_ATTR=".#packages.x86_64-linux.${SYSTEM}_node_modules"

nix build "$UPDATER_ATTR" --no-link 2>&1 | tee "$BUILD_LOG" || true

CORRECT_HASH="$(grep -E 'got:\s+sha256-[A-Za-z0-9+/=]+' "$BUILD_LOG" | awk '{print $2}' | head -n1 || true)"

if [ -z "$CORRECT_HASH" ]; then
CORRECT_HASH="$(grep -A2 'hash mismatch' "$BUILD_LOG" | grep 'got:' | awk '{print $2}' | sed 's/sha256:/sha256-/' || true)"
fi

if [ -z "$CORRECT_HASH" ]; then
echo "Failed to determine correct node_modules hash for ${SYSTEM}."
cat "$BUILD_LOG"
exit 1
fi

echo " ${SYSTEM}: ${CORRECT_HASH}"
jq --arg sys "$SYSTEM" --arg h "$CORRECT_HASH" \
'.nodeModules[$sys] = $h' "$HASH_FILE" > "${HASH_FILE}.tmp"
mv "${HASH_FILE}.tmp" "$HASH_FILE"
done

echo "All hashes computed:"
cat "$HASH_FILE"

- name: Commit ${{ env.TITLE }} changes
env:
TARGET_BRANCH: ${{ github.head_ref || github.ref_name }}
run: |
set -euo pipefail

HASH_FILE="nix/hashes.json"
echo "Checking for changes..."

summarize() {
local status="$1"
{
echo "### Nix $TITLE"
echo ""
echo "- ref: ${GITHUB_REF_NAME}"
echo "- status: ${status}"
} >> "$GITHUB_STEP_SUMMARY"
if [ -n "${GITHUB_SERVER_URL:-}" ] && [ -n "${GITHUB_REPOSITORY:-}" ] && [ -n "${GITHUB_RUN_ID:-}" ]; then
echo "- run: ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" >> "$GITHUB_STEP_SUMMARY"
fi
echo "" >> "$GITHUB_STEP_SUMMARY"
}

FILES=("$HASH_FILE")
STATUS="$(git status --short -- "${FILES[@]}" || true)"
if [ -z "$STATUS" ]; then
echo "No changes detected."
summarize "no changes"
exit 0
fi

echo "Changes detected:"
echo "$STATUS"
git add "${FILES[@]}"
git commit -m "chore: update nix node_modules hashes"

BRANCH="${TARGET_BRANCH:-${GITHUB_REF_NAME}}"
git pull --rebase --autostash origin "$BRANCH"
git push origin HEAD:"$BRANCH"
echo "Changes pushed successfully"

summarize "committed $(git rev-parse --short HEAD)"
39 changes: 39 additions & 0 deletions .opencode/skill/bun-file-io/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
name: bun-file-io
description: Use this when you are working on file operations like reading, writing, scanning, or deleting files. It summarizes the preferred file APIs and patterns used in this repo. It also notes when to use filesystem helpers for directories.
---

## Use this when

- Editing file I/O or scans in `packages/opencode`
- Handling directory operations or external tools

## Bun file APIs (from Bun docs)

- `Bun.file(path)` is lazy; call `text`, `json`, `stream`, `arrayBuffer`, `bytes`, `exists` to read.
- Metadata: `file.size`, `file.type`, `file.name`.
- `Bun.write(dest, input)` writes strings, buffers, Blobs, Responses, or files.
- `Bun.file(...).delete()` deletes a file.
- `file.writer()` returns a FileSink for incremental writes.
- `Bun.Glob` + `Array.fromAsync(glob.scan({ cwd, absolute, onlyFiles, dot }))` for scans.
- Use `Bun.which` to find a binary, then `Bun.spawn` to run it.
- `Bun.readableStreamToText/Bytes/JSON` for stream output.

## When to use node:fs

- Use `node:fs/promises` for directories (`mkdir`, `readdir`, recursive operations).

## Repo patterns

- Prefer Bun APIs over Node `fs` for file access.
- Check `Bun.file(...).exists()` before reading.
- For binary/large files use `arrayBuffer()` and MIME checks via `file.type`.
- Use `Bun.Glob` + `Array.fromAsync` for scans.
- Decode tool stderr with `Bun.readableStreamToText`.
- For large writes, use `Bun.write(Bun.file(path), text)`.

## Quick checklist

- Use Bun APIs first.
- Use `path.join`/`path.resolve` for paths.
- Prefer promise `.catch(...)` over `try/catch` when possible.
6 changes: 0 additions & 6 deletions .opencode/skill/test-skill/SKILL.md

This file was deleted.

1 change: 1 addition & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ Server mode is opt-in only. When enabled, set `OPENCODE_SERVER_PASSWORD` to requ
| **Sandbox escapes** | The permission system is not a sandbox (see above) |
| **LLM provider data handling** | Data sent to your configured LLM provider is governed by their policies |
| **MCP server behavior** | External MCP servers you configure are outside our trust boundary |
| **Malicious config files** | Users control their own config; modifying it is not an attack vector |

---

Expand Down
Loading
Loading