syncing#21715
Conversation
Implements Feature 1 from ROADMAP.md - Native Desktop Control. - Install @nut-tree-fork/nut-js for desktop automation - Create new desktop.ts tool with support for screenshots, mouse movement, clicking, and typing - Add tool description in desktop.txt - Register DesktopTool in the tool registry
Feature 1: Native Desktop Control (Computer Use Tool)
Feature 2: Headless Browser Automation (WebBrowserTool)
- Add SQLite tables for user preferences, project architecture rules, and API keys - Create MemoryRepo service with CRUD operations for all three data types - Add proper indexes for efficient querying - Generate Drizzle migration for session_memory feature - Add comprehensive tests for memory functionality This implements Feature 4 from ROADMAP.md for persisting user preferences, project architecture rules, and API keys across different terminal sessions.
- Add SQLite tables for user preferences, project architecture rules, and API keys - Create MemoryRepo service with CRUD operations for all three data types - Add proper indexes for efficient querying - Generate Drizzle migration for session_memory feature - Add comprehensive tests for memory functionality This implements Feature 4 from ROADMAP.md for persisting user preferences, project architecture rules, and API keys across different terminal sessions.
Feature 3: Dynamic Agent Swarms (SpawnMultiAgentTool)
Feature 4: Long-Term Semantic Memory (SessionMemory)
Feature 5: Strict Zod-Based Permission Gates (PermissionRouter)
docs: Add Claude Code parity roadmap
fix: restore Bun CLI builds with chromium-bidi
Add transitive @nut-tree-fork dependencies (libnut, libnut-darwin, shared) to package.json so native .node bindings resolve correctly at runtime. Improve error handling in desktop.ts to surface the actual underlying error instead of a generic message, making debugging easier.
fix: resolve native addon dependencies for Desktop tool
The Desktop tool failed to load @nut-tree-fork/nut-js when running from a compiled Bun binary because the bindings package couldn't resolve the native addon from the virtual /$bunfs path. Changes: - Add desktop.runtime.ts helper that imports nut-js from real filesystem - Update desktop.ts to delegate to helper when running from /$bunfs - Update build.ts to emit desktop.runtime.mjs next to the binary - Add regression test for compiled vs source runtime resolution Fixes module resolution for native dependencies in compiled binaries.
The screen.capture() and captureRegion() methods don't write to the path we expect - they return the actual saved path. The code was trying to read from a temp file path that never had the screenshot data. Fix: Use grab()/grabRegion() which return Image objects, then call toPNG() to get the buffer directly. This eliminates temp file issues. Also removes unused imports (os, fs/promises) and tempFile() function.
fix: use grab/grabRegion for screenshots
…erride_skill_and_remove_chromium-bidi_dependency docs: Add local opencode override skill and remove chromium-bidi dependency
…tools feat: add worktree sandbox tools
### Issue for this PR Closes # ### Type of change - [ ] Bug fix - [ ] New feature - [ ] Refactor / code improvement - [ ] Documentation ### What does this PR do? Please provide a description of the issue, the changes you made to fix it, and why they work. It is expected that you understand why your changes work and if you do not understand why at least say as much so a maintainer knows how much to value the PR. **If you paste a large clearly AI generated description here your PR may be IGNORED or CLOSED!** ### How did you verify your code works? ### Screenshots / recordings _If this is a UI change, please include a screenshot or recording._ ### Checklist - [ ] I have tested my changes locally - [ ] I have not included unrelated changes in this PR _If you do not follow this template your PR will be automatically rejected._
### Issue for this PR Closes # ### Type of change - [ ] Bug fix - [ ] New feature - [ ] Refactor / code improvement - [ ] Documentation ### What does this PR do? Please provide a description of the issue, the changes you made to fix it, and why they work. It is expected that you understand why your changes work and if you do not understand why at least say as much so a maintainer knows how much to value the PR. **If you paste a large clearly AI generated description here your PR may be IGNORED or CLOSED!** ### How did you verify your code works? ### Screenshots / recordings _If this is a UI change, please include a screenshot or recording._ ### Checklist - [ ] I have tested my changes locally - [ ] I have not included unrelated changes in this PR _If you do not follow this template your PR will be automatically rejected._
### Issue for this PR Closes # ### Type of change - [ ] Bug fix - [ ] New feature - [ ] Refactor / code improvement - [ ] Documentation ### What does this PR do? Please provide a description of the issue, the changes you made to fix it, and why they work. It is expected that you understand why your changes work and if you do not understand why at least say as much so a maintainer knows how much to value the PR. **If you paste a large clearly AI generated description here your PR may be IGNORED or CLOSED!** ### How did you verify your code works? ### Screenshots / recordings _If this is a UI change, please include a screenshot or recording._ ### Checklist - [ ] I have tested my changes locally - [ ] I have not included unrelated changes in this PR _If you do not follow this template your PR will be automatically rejected._
### Issue for this PR Closes # ### Type of change - [ ] Bug fix - [ ] New feature - [ ] Refactor / code improvement - [ ] Documentation ### What does this PR do? Please provide a description of the issue, the changes you made to fix it, and why they work. It is expected that you understand why your changes work and if you do not understand why at least say as much so a maintainer knows how much to value the PR. **If you paste a large clearly AI generated description here your PR may be IGNORED or CLOSED!** ### How did you verify your code works? ### Screenshots / recordings _If this is a UI change, please include a screenshot or recording._ ### Checklist - [ ] I have tested my changes locally - [ ] I have not included unrelated changes in this PR _If you do not follow this template your PR will be automatically rejected._
…schedules feat: add one-shot trigger schedules
…s_from_tui feat: browse remote sessions from tui
…kill_and_global_session_listing feat: add opencode-memory skill and global session listing
…ort_and_webhook_triggers feat: add workspace ID support and webhook triggers
…emote_control_and_trigger_management feat: add mobile-friendly remote control and trigger management
…ner_with_custom_implementation feat: replace external spinner with custom implementation
# Conflicts: # bun.lock # packages/app/src/pages/layout/sidebar-items.tsx # packages/app/src/pages/session.tsx # packages/opencode/package.json # packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx # packages/opencode/src/tool/registry.ts
* refactor(init): tighten AGENTS guidance (anomalyco#20422) * refactor(shell): use Effect ChildProcess for shell command execution (anomalyco#20494) * refactor: use Effect services instead of async facades in provider, auth, and file (anomalyco#20480) * chore: generate * chore: update nix node_modules hashes * Update VOUCHED list anomalyco#20482 (comment) * test(app): migrate more e2e suites to isolated backend (anomalyco#20505) * fix(account): coalesce concurrent console token refreshes (anomalyco#20503) * test(app): fix isolated backend follow-ups (anomalyco#20513) * wip: zen * refactor: replace BunProc with Npm module using @npmcli/arborist (anomalyco#18308) Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> Co-authored-by: Brendan Allan <git@brendonovich.dev> Co-authored-by: Aiden Cline <aidenpcline@gmail.com> * zen: sync * fix: normalize filepath in FileTime to prevent Windows path mismatch (anomalyco#20367) Co-authored-by: JosXa <info@josxa.dev> Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com> * resolve subpath only packages for plugins (anomalyco#20555) * Fix selection expansion by retaining focused input selections during global key events (anomalyco#20205) * feat: add new provider plugin hook for resolving models and sync models from github models endpoint (falls back to models.dev) (anomalyco#20533) * fix(tui): apply scroll configuration uniformly across all scrollboxes (anomalyco#14735) * chore(tui): clean up scroll config follow-up (anomalyco#20561) * fix(opencode): batch snapshot revert without reordering (anomalyco#20564) * fix(test): auto-acknowledge tool-result follow-ups in mock LLM server (anomalyco#20528) * chore: generate * refactor: add Effect-returning versions of MessageV2 functions (anomalyco#20374) * refactor(bash): use Effect ChildProcess for bash tool execution (anomalyco#20496) * chore: generate * Refactor plugin/config loading, add theme-only plugin package support (anomalyco#20556) * fix(test): use effect helper in snapshot race test (anomalyco#20567) * refactor(revert): yield SessionSummary.Service directly (anomalyco#20541) * fix: show model display name in message footer and transcript (anomalyco#20539) * flock npm.add (anomalyco#20557) * fix(account): refresh console tokens before expiry (anomalyco#20558) * chore: add User-Agent headers for Cloudflare providers (anomalyco#20538) Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> * fix(build): replace require() with dynamic import() in cross-spawn-spawner (anomalyco#20580) * chore: generate * tui: add consent dialog when sharing for the first time (anomalyco#20525) * test(app): block real llm calls in e2e prompts (anomalyco#20579) * refactor(instruction): migrate to Effect service pattern (anomalyco#20542) * fix(cli): use simple logo in CLI (anomalyco#20585) * fix(core): prevent agent loop from stopping after tool calls with OpenAI-compatible providers (anomalyco#14973) Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Co-authored-by: Aiden Cline <aidenpcline@gmail.com> * fix(session): compaction agent responds in same language as conversation (anomalyco#20581) Co-authored-by: Aaron Zhu <aaron@Aarons-MacBook-Air.local> * refactor(account): share token freshness helper (anomalyco#20591) * fix(cli): restore colored help logo (anomalyco#20592) * feat(opencode): Add Venice AI package as dependency (anomalyco#20570) * chore: generate * cli: update usage exceeded error * chore: update nix node_modules hashes * fix(node): set OPENCODE_CHANNEL during build (anomalyco#20616) * zen: friendly trial ended message * refactor: simplify solid reactivity across app and web (anomalyco#20497) * use solid-primitives/resize-observer across web code (anomalyco#20613) * cleanup event listeners with solid-primitives/event-listener (anomalyco#20619) * chore: update nix node_modules hashes * refactor: split up models.dev and config model definitions to prevent coupling (anomalyco#20605) * chore: generate * feat: add optional messageID to ShellInput (anomalyco#20657) * chore: generate * ignore: fix typecheck in dev (anomalyco#20702) * fix(format): use biome format instead of check to prevent import removal (anomalyco#20545) Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> * tweak: add abort signal timeout to the github copilot model fetch to prevent infinite blocking (anomalyco#20705) * Add MiMo-V2 models to Go UI and docs (anomalyco#20709) * refactor(format): update formatter interface to return command from enabled() (anomalyco#20703) * app: unify auto scroll ref handling (anomalyco#20716) * go: add mimo * electron: add basic context menu for inspect element (anomalyco#20723) * feat: add macOS managed preferences support for enterprise MDM deployments (anomalyco#19178) Co-authored-by: Lenny Vaknine <lvaknine@gitlab.com> Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> * chore: generate * feat(acp): Add messageID and emit user_message_chunk on prompt/command (anomalyco#18625) Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> * chore: generate * test(app): add a golden path for mocked e2e prompts (anomalyco#20593) * chore: update nix node_modules hashes * docs(effect): refresh migration status (anomalyco#20665) * test(opencode): remove temporary e2e url repro (anomalyco#20729) * refactor(app): unexport internal e2e helpers (anomalyco#20730) * test(app): emit junit artifacts for playwright (anomalyco#20732) * refactor(todo): effectify session todo (anomalyco#20595) * Adds TUI prompt traits, refs, and plugin slots (anomalyco#20741) * chore: update nix node_modules hashes * dialog aware prompt cursor (anomalyco#20753) * fix(opencode): honor model limit.input overrides (anomalyco#16306) Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> * refactor(effect): prune unused facades (anomalyco#20748) * fix: rm dynamic part from bash tool description again to restore cache hits across projects (anomalyco#20771) * refactor(share): effectify share next (anomalyco#20596) * fix: call models.dev once instead of twice on start (anomalyco#20765) * fix: prevent Tool.define() wrapper accumulation on object-defined tools (anomalyco#16952) Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * chore: generate * add automatic heap snapshots for high-memory cli processes (anomalyco#20788) * feat: Send x-session-affinity and x-parent-session-id headers (anomalyco#20744) * fix(sdk): handle Windows opencode spawn and shutdown (anomalyco#20772) * chore: update nix node_modules hashes * electron: better menus (anomalyco#20878) * fix(core): fix restoring earlier messages in a reverted chain (anomalyco#20780) * fix(session): delay jump-to-bottom button (anomalyco#20853) * fix(prompt): unmount model controls in shell mode (anomalyco#20886) * fix(session): disable todo dock auto-scroll (anomalyco#20840) * feat(ui): redesign modified files section in session turn (anomalyco#20348) Co-authored-by: David Hill <iamdavidhill@gmail.com> * fix(app): hide default session timestamps (anomalyco#20892) * refactor(effect): resolve built tools through the registry (anomalyco#20787) * fix: restore prompt focus after footer selection (anomalyco#20841) * feat: restore git-backed review modes (anomalyco#20845) * chore: generate * fix(app): show correct submit icon when typing follow up * chore(app): remove queued follow-ups for now * refactor(effect): build todowrite tool from Todo service (anomalyco#20789) Co-authored-by: Juan Pablo Carranza Hurtado <52012198+jpcarranza94@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * test(ci): publish unit reports in actions (anomalyco#20547) * chore: rm models snapshot (anomalyco#20929) * notes on v2 (anomalyco#20941) * chore: generate * refactor(provider): stop custom loaders using facades (anomalyco#20776) Co-authored-by: luanweslley77 <213105503+luanweslley77@users.noreply.github.com> * perf(opencode): batch snapshot diffFull blob reads (anomalyco#20752) Co-authored-by: Nate Williams <50088025+natewill@users.noreply.github.com> * fix(ci): create JUnit output dirs before tests (anomalyco#20959) * release: v1.3.14 * refactor: remove redundant Kimi skill section (anomalyco#20393) Co-authored-by: dongyuxin <dongyuxin@dev.dongyuxin.msh-dev.svc.cluster.local> Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> * fix(npm): Arborist reify fails on compiled binary — Bun pre-resolves node-gyp path at build time (anomalyco#21040) * release: v1.3.15 * fix: ensure reasoning tokens arent double counted when calculating usage (anomalyco#21047) * feat(tui): show console-managed providers (anomalyco#20956) * refactor(effect): move read tool onto defineEffect (anomalyco#21016) * chore: generate * fix(tui): only show org switch affordances when useful (anomalyco#21054) * chore: generate * test: add regression test for double counting bug (anomalyco#21053) * doc: udpate doc * tweak: add newline between <content> and first line of read tool output to prevent confusion (anomalyco#21070) * fix(plugin): parse package specifiers with npm-package-arg and sanitize win32 cache paths (anomalyco#21135) * chore: update nix node_modules hashes * feat(tui): make the mouse disablable (anomalyco#6824, anomalyco#7926) (anomalyco#13748) * fix(core): implement proper configOptions for acp (anomalyco#21134) * fix: pass both 'openai' and 'azure' providerOptions keys for @ai-sdk/azure (anomalyco#20272) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> * fix(tui): default Ctrl+Z to undo on Windows (anomalyco#21138) * release: v1.3.16 * zen: remove header check * zen: normalize ipv6 * fix: show clear error when Cloudflare provider env vars are missing (anomalyco#20399) Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Co-authored-by: Aiden Cline <aidenpcline@gmail.com> * fix(tui): revert kitty keyboard events workaround on windows (anomalyco#20180) * release: v1.3.17 * fix(lsp): MEMORY LEAK: ensure typescript server uses native project config (anomalyco#19953) * chore: generate * docs: update Cloudflare provider setup to reflect /connect prompt flow (anomalyco#20589) * refactor: replace Bun.serve with Node http.createServer in OAuth handlers (anomalyco#18327) Co-authored-by: LukeParkerDev <10430890+Hona@users.noreply.github.com> * upgrade opentui to 0.1.97 (anomalyco#21137) * refactor(server): replace Bun serve with Hono node adapters (anomalyco#18335) Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com> Co-authored-by: Adam <2363879+adamdotdevin@users.noreply.github.com> Co-authored-by: Brendan Allan <git@brendonovich.dev> * chore: update nix node_modules hashes * tweak: ensure copilot anthropic models have same reasoning effort model as copilot cli, also fix qwen incorrectly having variants (anomalyco#21212) * tweak: adjust chat.params hook to allow altering of the maxOutputTokens (anomalyco#21220) * tweak: move the max token exclusions to plugins @rekram1-node (anomalyco#21225) * fix: bump openrouter ai sdk pkg to fix openrouter issues (anomalyco#21242) --------- Co-authored-by: Shoubhit Dash <shoubhit2005@gmail.com> Co-authored-by: Kit Langton <kit.langton@gmail.com> Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Frank <frank@anoma.ly> Co-authored-by: Dax <mail@thdxr.com> Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> Co-authored-by: Brendan Allan <git@brendonovich.dev> Co-authored-by: Aiden Cline <aidenpcline@gmail.com> Co-authored-by: Joscha Götzer <joscha.goetzer@gmail.com> Co-authored-by: JosXa <info@josxa.dev> Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com> Co-authored-by: Sebastian <hasta84@gmail.com> Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Co-authored-by: MC <mchen@cloudflare.com> Co-authored-by: Valentin Vivaldi <valentin.vivaldi@etendo.software> Co-authored-by: Aaron Zhu <139607425+aaron-he-zhu@users.noreply.github.com> Co-authored-by: Aaron Zhu <aaron@Aarons-MacBook-Air.local> Co-authored-by: dpuyosa <dpuyosa@users.noreply.github.com> Co-authored-by: Brendan Allan <brendonovich@outlook.com> Co-authored-by: Noam Bressler <noamzbr@gmail.com> Co-authored-by: Burak Yigit Kaya <byk@sentry.io> Co-authored-by: Jack <jack@anoma.ly> Co-authored-by: Lenny Vaknine <lenny.vaknine@gmail.com> Co-authored-by: Lenny Vaknine <lvaknine@gitlab.com> Co-authored-by: ykswang <ykswang@users.noreply.github.com> Co-authored-by: Juan Pablo Carranza Hurtado <52012198+jpcarranza94@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Kevin Flansburg <kevin.flansburg@gmail.com> Co-authored-by: Nate Williams <50088025+natewill@users.noreply.github.com> Co-authored-by: David Hill <iamdavidhill@gmail.com> Co-authored-by: Adam <2363879+adamdotdevin@users.noreply.github.com> Co-authored-by: luanweslley77 <213105503+luanweslley77@users.noreply.github.com> Co-authored-by: opencode <opencode@sst.dev> Co-authored-by: Yuxin Dong <yxdong9805@gmail.com> Co-authored-by: dongyuxin <dongyuxin@dev.dongyuxin.msh-dev.svc.cluster.local> Co-authored-by: Gautier DI FOLCO <gautier.difolco@gmail.com> Co-authored-by: George Harker <george@georgeharker.com> Co-authored-by: Corné Steenhuis <cornesteenhuis@hotmail.com> Co-authored-by: Derek Barrera <derekbarrera@gmail.com>
|
Hey! Your PR title Please update it to start with one of:
Where See CONTRIBUTING.md for details. |
|
This PR doesn't fully meet our contributing guidelines and PR template. What needs to be fixed:
Please edit this PR description to address the above within 2 hours, or it will be automatically closed. If you believe this was flagged incorrectly, please let a maintainer know. |
|
The following comment was made by an LLM, it may be inaccurate: I found one potentially related PR: feat(app): sync web project sidebar across devices (PR #18938)
However, the current PR #21715 has a very minimal title ("syncing") and an empty description (just the template), so it's difficult to determine if it's truly a duplicate or what specific syncing functionality it addresses. The PR may need more details to properly assess duplication. If you can provide more information about what this PR specifically implements, I can do a more targeted search for duplicates. |
Issue for this PR
Closes #
Type of change
What does this PR do?
Please provide a description of the issue, the changes you made to fix it, and why they work. It is expected that you understand why your changes work and if you do not understand why at least say as much so a maintainer knows how much to value the PR.
If you paste a large clearly AI generated description here your PR may be IGNORED or CLOSED!
How did you verify your code works?
Screenshots / recordings
If this is a UI change, please include a screenshot or recording.
Checklist
If you do not follow this template your PR will be automatically rejected.