Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
626fa14
fix: make home/end keys work in menu list modal windows (resolves #71…
ariane-emory Jan 16, 2026
578239e
chore: cleanup transform code a tad
rekram1-node Jan 16, 2026
8cddc9e
chore: generate
actions-user Jan 16, 2026
08b94a6
fix: keep primary model after subagent runs (#8951)
sethcarlton Jan 16, 2026
c251555
fix: open help dialog with tui/open-help route (#8596)
AksharP5 Jan 16, 2026
cbe1c81
wip: black
fwang Jan 16, 2026
f96c4ba
wip: black
fwang Jan 16, 2026
632f205
chore: generate
actions-user Jan 16, 2026
3d095e7
fix: centralize OSC 52 clipboard support for SSH sessions (#8974)
b3nw Jan 16, 2026
aca1eb6
fix(nix): add desktop application entry (#8972)
gigamonster256 Jan 16, 2026
6e020ef
chore: cleanup nix (#8964)
gigamonster256 Jan 16, 2026
c325aa1
fix(desktop): Stream bash output + strip-asni (#8961)
dbpolito Jan 16, 2026
55224d6
Update flake.lock
actions-user Jan 16, 2026
43a9c50
Update node_modules hash (x86_64-linux)
actions-user Jan 16, 2026
5c13b20
Update node_modules hash (x86_64-darwin)
actions-user Jan 16, 2026
1aedb26
Update node_modules hash (aarch64-darwin)
actions-user Jan 16, 2026
08ef97b
fix(opencode): add oauth polling safety margin in copilot device auth…
hamir-suspect Jan 16, 2026
80020ad
chore: generate
actions-user Jan 16, 2026
e8746dd
zen: fix opus unicode characters
fwang Jan 16, 2026
cad4158
fix: recent sessions gutter
iamdavidhill Jan 16, 2026
d645e8b
fix: (desktop) command palette width
iamdavidhill Jan 16, 2026
1250486
feat: add Keybind component for displaying keyboard shortcuts
iamdavidhill Jan 16, 2026
b18fb16
refactor: use Keybind component in titlebar search button
iamdavidhill Jan 16, 2026
54e5289
refactor: use Keybind component in search modal list
iamdavidhill Jan 16, 2026
69215d4
fix: display arrow keys as symbols in keybind formatting
iamdavidhill Jan 16, 2026
d1b9361
fix: increase keybind border-radius in search modal
iamdavidhill Jan 16, 2026
ab705da
fix: add left padding to command items in search modal
iamdavidhill Jan 16, 2026
f8f1f46
fix: adjust command item left padding in search modal
iamdavidhill Jan 16, 2026
6f78a71
feat: add hideIcon and class options to List search, customize search…
iamdavidhill Jan 16, 2026
dfa2a9f
fix: reduce command item left padding in search modal
iamdavidhill Jan 17, 2026
d23c210
fix: refine search modal styling and list component
iamdavidhill Jan 17, 2026
ef7ef65
fix: limit search modal max-height to 480px
iamdavidhill Jan 17, 2026
80b278d
fix: remove the secondary text from commands
iamdavidhill Jan 17, 2026
e0c6459
fix: remove smooth scroll behavior from list component
iamdavidhill Jan 17, 2026
38847e1
fix: truncate long search queries in empty state
iamdavidhill Jan 17, 2026
759ce8f
fix: prevent text clipping on search button descenders
iamdavidhill Jan 17, 2026
06c543e
fix(nix): resolve hash race condition in parallel matrix jobs (#8995)
jerome-benoit Jan 17, 2026
e8357a8
Update node_modules hashes
actions-user Jan 17, 2026
7c3eeeb
fix: gpt id stuff fr fr this time :/ (#9006)
rekram1-node Jan 17, 2026
db78a59
docs: Add OpenWork to ecosystem (#8741)
benjaminshafii Jan 17, 2026
5d613a0
chore: generate
actions-user Jan 17, 2026
33290c5
Revert "feat(mcp): add OAuth redirect URI configuration for MCP serve…
rekram1-node Jan 17, 2026
85ab979
chore: generate
actions-user Jan 17, 2026
ea13b6e
test: add azure test case
rekram1-node Jan 17, 2026
2729705
fix(app): archive session sometimes flaky
adamdotdevin Jan 17, 2026
c4e4f2a
fix(desktop): Added a Windows-only guard that makes window.getCompute…
Eric-Guo Jan 17, 2026
7030f49
fix: mdns discover hostname (#9039)
j0nl1 Jan 17, 2026
d377246
chore: generate
actions-user Jan 17, 2026
07dc8d8
fix: escape CSS selector keys to handle special characters (#9030)
Slone123c Jan 17, 2026
a58d1be
ignore: update download stats 2026-01-17
actions-user Jan 17, 2026
a813fcb
docs: add firmware provider to providers docs (#8993)
cgilly2fast Jan 17, 2026
eb968a6
docs(config): explain that `autoupdate` doesn't work when installed w…
berenar Jan 17, 2026
5a199b0
fix: don't try to open command palette if a dialog is already open (#…
BlankParticle Jan 17, 2026
58f7da6
docs: document the plural forms
rekram1-node Jan 17, 2026
3aff88c
docs: add use_github_token to example (#9120)
opencode-agent[bot] Jan 17, 2026
f3513ba
tui: fix model state persistence when model store is not ready
rekram1-node Jan 17, 2026
c3d3356
fix: align project avatar notification dot
iamdavidhill Jan 17, 2026
0384e6b
fix: update desktop initializing splash logo
iamdavidhill Jan 17, 2026
d3baaf7
fix: shrink project notification dot and mask
iamdavidhill Jan 17, 2026
53227bf
fix: command pallete file list item spacing
iamdavidhill Jan 17, 2026
b4075cd
fix: remove loading text after splash
iamdavidhill Jan 17, 2026
0cc9a22
fix: show project name in avatar hover
iamdavidhill Jan 17, 2026
c19d031
fix: reduce prompt dock bottom spacing
iamdavidhill Jan 17, 2026
2a4e8bc
fix: adjust recent sessions popover padding
iamdavidhill Jan 17, 2026
c890853
fix: keep project avatar hover styles while popover open
iamdavidhill Jan 17, 2026
ded9bd2
fix: adjust session list tooltip trigger and delay
iamdavidhill Jan 18, 2026
e36b343
fix: remove max width on sidebar new buttons
iamdavidhill Jan 18, 2026
389d97e
fix: adjust project path tooltip placement
iamdavidhill Jan 18, 2026
c3ab76c
fix: increase max-width of session name tooltip
iamdavidhill Jan 18, 2026
260739a
Revert "fix: increase max-width of session name tooltip"
iamdavidhill Jan 18, 2026
53c77e2
fix: remove max-width of session name tooltip
iamdavidhill Jan 18, 2026
93e43d8
Hide variants hint when list empty (#9179)
opencode-agent[bot] Jan 18, 2026
759e686
refactor(tui): unify command registry and derive slash commands (#9115)
kitlangton Jan 18, 2026
052f887
core: prevent env variables in config from being replaced with actual…
rekram1-node Jan 18, 2026
bfb8c53
feat: bind vim-style line-by-line scrolling (#8980)
NathanFlurry Jan 18, 2026
073f9d9
chore: generate
actions-user Jan 18, 2026
10433cb
fix(windows): fix jdtls download on Windows (#9195)
pschiel Jan 18, 2026
b7ad6bd
feat: apply_patch tool for openai models (#9127)
rekram1-node Jan 18, 2026
90f848f
chore: generate
actions-user Jan 18, 2026
3591372
feat(tool): increase question header and label limits (#9201)
bdwelle Jan 18, 2026
d13c0ea
chore: generate
actions-user Jan 18, 2026
bef1f66
fix(acp): use single global event subscription and route by sessionID…
noamzbr Jan 18, 2026
ee4ea65
fix: restore persisted model/agent when loading ACP session (#7809)
noamzbr Jan 18, 2026
0ccf9bd
feat(cli): uninstall opencode installed via windows package managers …
itsrainingmani Jan 18, 2026
06bc4dc
feat(desktop): implement session unshare button (#8660)
itsrainingmani Jan 18, 2026
5c9cc9c
ignore: update download stats 2026-01-18
actions-user Jan 18, 2026
6c0991d
fix(app): remove redundant toast for thinking effort changes (#9181)
kitlangton Jan 18, 2026
ad2e032
refactor(desktop): improve layout and styling of session search butto…
OpeOginni Jan 18, 2026
2dcca47
fix: import issue in patch module
rekram1-node Jan 18, 2026
f7fef99
refactor(installation): update scoop installation method (#9243)
chawyehsu Jan 18, 2026
095a642
fix(acp): preserve file attachment metadata during session replay (#6…
liorshk Jan 18, 2026
5009f10
chore: generate
actions-user Jan 18, 2026
dac099a
feat(nix): overhaul nix flake and packages (#9032)
gigamonster256 Jan 18, 2026
bfd2f91
feat(hook): command execute before hook (#9267)
spoons-and-mirrors Jan 18, 2026
501ef2d
fix: update gitlab-ai-provider to 1.3.2 (#9279)
vglafirov Jan 18, 2026
38c641a
fix(tool): treat .fbs files as text instead of images (#9276)
zerone0x Jan 18, 2026
c29d44f
docs: note untracked files in review
rekram1-node Jan 18, 2026
19cf934
Update node_modules hashes
actions-user Jan 18, 2026
d841e70
fix: bad variants for grok models
rekram1-node Jan 18, 2026
0d8e706
test: fix transfomr test
rekram1-node Jan 18, 2026
b4d4a1e
docs: clarify agent tool access and explore vs general distinction (#…
alanpog Jan 18, 2026
e81bb86
fix: Windows evaluating text on copy (#9293)
Hona Jan 18, 2026
bee2f65
zen: fix checkout link for black users
fwang Jan 19, 2026
b0d33eb
fix: coalesce fragmented paste events over SSH
b3nw Jan 19, 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
4 changes: 3 additions & 1 deletion .github/workflows/nix-desktop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,15 @@ on:
- "nix/**"
- "packages/app/**"
- "packages/desktop/**"
- ".github/workflows/nix-desktop.yml"
pull_request:
paths:
- "flake.nix"
- "flake.lock"
- "nix/**"
- "packages/app/**"
- "packages/desktop/**"
- ".github/workflows/nix-desktop.yml"
workflow_dispatch:

jobs:
Expand All @@ -26,7 +28,7 @@ jobs:
os:
- blacksmith-4vcpu-ubuntu-2404
- blacksmith-4vcpu-ubuntu-2404-arm
- macos-15
- macos-15-intel
- macos-latest
runs-on: ${{ matrix.os }}
timeout-minutes: 60
Expand Down
237 changes: 149 additions & 88 deletions .github/workflows/update-nix-hashes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,36 @@ on:
- "bun.lock"
- "package.json"
- "packages/*/package.json"
- ".github/workflows/update-nix-hashes.yml"
pull_request:
paths:
- "bun.lock"
- "package.json"
- "packages/*/package.json"
- ".github/workflows/update-nix-hashes.yml"

jobs:
update-flake:
compute-node-modules-hash:
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
runs-on: blacksmith-4vcpu-ubuntu-2404
strategy:
fail-fast: false
matrix:
include:
- system: x86_64-linux
host: blacksmith-4vcpu-ubuntu-2404
- system: aarch64-linux
host: blacksmith-4vcpu-ubuntu-2404-arm
- system: x86_64-darwin
host: macos-15-intel
- system: aarch64-darwin
host: macos-latest
runs-on: ${{ matrix.host }}
env:
TITLE: flake.lock
SYSTEM: ${{ matrix.system }}

steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0
Expand All @@ -35,96 +49,104 @@ jobs:
- name: Setup Nix
uses: nixbuild/nix-quick-install-action@v34

- name: Configure git
run: |
git config --global user.email "[email protected]"
git config --global user.name "Github Action"

- name: Update ${{ env.TITLE }}
- name: Compute node_modules hash
run: |
set -euo pipefail
echo "📦 Updating $TITLE..."
nix flake update
echo "✅ $TITLE updated successfully"

- name: Commit ${{ env.TITLE }} changes
env:
TARGET_BRANCH: ${{ github.head_ref || github.ref_name }}
run: |
set -euo pipefail
DUMMY="sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
HASH_FILE="nix/hashes.json"
OUTPUT_FILE="hash-${SYSTEM}.txt"

echo "🔍 Checking for changes in tracked files..."
export NIX_KEEP_OUTPUTS=1
export NIX_KEEP_DERIVATIONS=1

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"
BUILD_LOG=$(mktemp)
TMP_JSON=$(mktemp)
trap 'rm -f "$BUILD_LOG" "$TMP_JSON"' EXIT

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

# Set dummy hash to force nix to rebuild and reveal correct hash
jq --arg system "$SYSTEM" --arg value "$DUMMY" \
'.nodeModules = (.nodeModules // {}) | .nodeModules[$system] = $value' "$HASH_FILE" > "$TMP_JSON"
mv "$TMP_JSON" "$HASH_FILE"

MODULES_ATTR=".#packages.${SYSTEM}.default.node_modules"
DRV_PATH="$(nix eval --raw "${MODULES_ATTR}.drvPath")"

echo "Building node_modules for ${SYSTEM} to discover correct hash..."
echo "Attempting to realize derivation: ${DRV_PATH}"
REALISE_OUT=$(nix-store --realise "$DRV_PATH" --keep-failed 2>&1 | tee "$BUILD_LOG" || true)

BUILD_PATH=$(echo "$REALISE_OUT" | grep "^/nix/store/" | head -n1 || true)
CORRECT_HASH=""

if [ -n "$BUILD_PATH" ] && [ -d "$BUILD_PATH" ]; then
echo "Realized node_modules output: $BUILD_PATH"
CORRECT_HASH=$(nix hash path --sri "$BUILD_PATH" 2>/dev/null || true)
fi

# Try to extract hash from build log
if [ -z "$CORRECT_HASH" ]; then
CORRECT_HASH="$(grep -E 'got:\s+sha256-[A-Za-z0-9+/=]+' "$BUILD_LOG" | awk '{print $2}' | head -n1 || true)"
fi

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

# Try to hash from kept failed build directory
if [ -z "$CORRECT_HASH" ]; then
KEPT_DIR=$(grep -oE "build directory.*'[^']+'" "$BUILD_LOG" | grep -oE "'/[^']+'" | tr -d "'" | head -n1 || true)
if [ -z "$KEPT_DIR" ]; then
KEPT_DIR=$(grep -oE '/nix/var/nix/builds/[^ ]+' "$BUILD_LOG" | head -n1 || true)
fi

if [ -n "$KEPT_DIR" ] && [ -d "$KEPT_DIR" ]; then
HASH_PATH="$KEPT_DIR"
[ -d "$KEPT_DIR/build" ] && HASH_PATH="$KEPT_DIR/build"

if [ -d "$HASH_PATH/node_modules" ]; then
CORRECT_HASH=$(nix hash path --sri "$HASH_PATH" 2>/dev/null || true)
fi
fi
echo "" >> "$GITHUB_STEP_SUMMARY"
}
FILES=(flake.lock flake.nix)
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"
echo "🔗 Staging files..."
git add "${FILES[@]}"
echo "💾 Committing changes..."
git commit -m "Update $TITLE"
echo "✅ Changes committed"
if [ -z "$CORRECT_HASH" ]; then
echo "Failed to determine correct node_modules hash for ${SYSTEM}."
cat "$BUILD_LOG"
exit 1
fi

BRANCH="${TARGET_BRANCH:-${GITHUB_REF_NAME}}"
echo "🌳 Pulling latest from branch: $BRANCH"
git pull --rebase origin "$BRANCH"
echo "🚀 Pushing changes to branch: $BRANCH"
git push origin HEAD:"$BRANCH"
echo "✅ Changes pushed successfully"
echo "$CORRECT_HASH" > "$OUTPUT_FILE"
echo "Hash for ${SYSTEM}: $CORRECT_HASH"

summarize "committed $(git rev-parse --short HEAD)"
- name: Upload hash artifact
uses: actions/upload-artifact@v6
with:
name: hash-${{ matrix.system }}
path: hash-${{ matrix.system }}.txt
retention-days: 1

update-node-modules-hash:
needs: update-flake
commit-node-modules-hashes:
needs: compute-node-modules-hash
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
strategy:
fail-fast: false
matrix:
include:
- system: x86_64-linux
host: blacksmith-4vcpu-ubuntu-2404
- system: aarch64-linux
host: blacksmith-4vcpu-ubuntu-2404-arm
- system: x86_64-darwin
host: macos-15-intel
- system: aarch64-darwin
host: macos-latest
runs-on: ${{ matrix.host }}
runs-on: blacksmith-4vcpu-ubuntu-2404
env:
SYSTEM: ${{ matrix.system }}
TITLE: node_modules hash (${{ matrix.system }})
TITLE: node_modules hashes

steps:
- name: Checkout repository
uses: actions/checkout@v4
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 "[email protected]"
Expand All @@ -135,22 +157,66 @@ jobs:
TARGET_BRANCH: ${{ github.head_ref || github.ref_name }}
run: |
BRANCH="${TARGET_BRANCH:-${GITHUB_REF_NAME}}"
git pull origin "$BRANCH"
git pull --rebase --autostash origin "$BRANCH"

- name: Download all hash artifacts
uses: actions/download-artifact@v7
with:
pattern: hash-*
merge-multiple: true

- name: Update ${{ env.TITLE }}
- name: Merge hashes into hashes.json
run: |
set -euo pipefail
echo "🔄 Updating $TITLE..."
nix/scripts/update-hashes.sh
echo "✅ $TITLE updated successfully"

HASH_FILE="nix/hashes.json"

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

echo "Merging hashes into ${HASH_FILE}..."

shopt -s nullglob
files=(hash-*.txt)
if [ ${#files[@]} -eq 0 ]; then
echo "No hash files found, nothing to update"
exit 0
fi

EXPECTED_SYSTEMS="x86_64-linux aarch64-linux x86_64-darwin aarch64-darwin"
for sys in $EXPECTED_SYSTEMS; do
if [ ! -f "hash-${sys}.txt" ]; then
echo "WARNING: Missing hash file for $sys"
fi
done

for f in "${files[@]}"; do
system="${f#hash-}"
system="${system%.txt}"
hash=$(cat "$f")
if [ -z "$hash" ]; then
echo "WARNING: Empty hash for $system, skipping"
continue
fi
echo " $system: $hash"
jq --arg sys "$system" --arg h "$hash" \
'.nodeModules = (.nodeModules // {}) | .nodeModules[$sys] = $h' "$HASH_FILE" > "${HASH_FILE}.tmp"
mv "${HASH_FILE}.tmp" "$HASH_FILE"
done

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

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

echo "🔍 Checking for changes in tracked files..."
HASH_FILE="nix/hashes.json"
echo "Checking for changes..."

summarize() {
local status="$1"
Expand All @@ -166,27 +232,22 @@ jobs:
echo "" >> "$GITHUB_STEP_SUMMARY"
}

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

echo "📝 Changes detected:"
echo "Changes detected:"
echo "$STATUS"
echo "🔗 Staging files..."
git add "${FILES[@]}"
echo "💾 Committing changes..."
git commit -m "Update $TITLE"
echo "✅ Changes committed"

BRANCH="${TARGET_BRANCH:-${GITHUB_REF_NAME}}"
echo "🌳 Pulling latest from branch: $BRANCH"
git pull --rebase origin "$BRANCH"
echo "🚀 Pushing changes to branch: $BRANCH"
git pull --rebase --autostash origin "$BRANCH"
git push origin HEAD:"$BRANCH"
echo "Changes pushed successfully"
echo "Changes pushed successfully"

summarize "committed $(git rev-parse --short HEAD)"
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ opencode.json
a.out
target
.scripts
.direnv/

# Local dev files
opencode-dev
Expand Down
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ curl -fsSL https://opencode.ai/install | bash

# Package managers
npm i -g opencode-ai@latest # or bun/pnpm/yarn
scoop bucket add extras; scoop install extras/opencode # Windows
scoop install opencode # Windows
choco install opencode # Windows
brew install anomalyco/tap/opencode # macOS and Linux (recommended, always up to date)
brew install opencode # macOS and Linux (official brew formula, updated less)
Expand All @@ -52,6 +52,8 @@ OpenCode is also available as a desktop application. Download directly from the
```bash
# macOS (Homebrew)
brew install --cask opencode-desktop
# Windows (Scoop)
scoop bucket add extras; scoop install extras/opencode-desktop
```

#### Installation Directory
Expand Down
4 changes: 3 additions & 1 deletion README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ curl -fsSL https://opencode.ai/install | bash

# 软件包管理器
npm i -g opencode-ai@latest # 也可使用 bun/pnpm/yarn
scoop bucket add extras; scoop install extras/opencode # Windows
scoop install opencode # Windows
choco install opencode # Windows
brew install anomalyco/tap/opencode # macOS 和 Linux(推荐,始终保持最新)
brew install opencode # macOS 和 Linux(官方 brew formula,更新频率较低)
Expand All @@ -52,6 +52,8 @@ OpenCode 也提供桌面版应用。可直接从 [发布页 (releases page)](htt
```bash
# macOS (Homebrew Cask)
brew install --cask opencode-desktop
# Windows (Scoop)
scoop bucket add extras; scoop install extras/opencode-desktop
```

#### 安装目录
Expand Down
Loading