Skip to content

Conversation

@jinzhongjia
Copy link
Contributor

No description provided.

@rekram1-node rekram1-node changed the title Docs: Add new project entry for opencode.nvim frontend docs: Add new project entry for opencode.nvim frontend Dec 16, 2025
@rekram1-node rekram1-node merged commit 3f4d112 into sst:dev Dec 16, 2025
aweis89 pushed a commit to aweis89/opencode that referenced this pull request Dec 16, 2025
nalin-singh pushed a commit to nalin-singh/opencode that referenced this pull request Dec 17, 2025
v1truv1us added a commit to v1truv1us/opencode that referenced this pull request Dec 19, 2025
* Add Gleam LSP and formatter (sst#5514)

* docs: add `opencode-pty` and `opencode-google-antigravity-auth` plugins to the echosystem (sst#5530)

* feat: add server_error, rate_limit, and no_kv_space retry logic to accommodate Foundry API issues  (sst#5527)

Co-authored-by: Aiden Cline <[email protected]>

* chore: format code

* fix: ensure input borders are drawn in transparent themes (sst#5524)

* chore: format code

* tweak: fallback to provider default for temperature

* release: v1.0.153

* disable app image

* chore: format code

* ignore: simplify download page to use GitHub latest redirect URLs

* feat: add experimental.continue_loop_on_deny config option (sst#4729)

Co-authored-by: Aiden Cline <[email protected]>

* chore: format code

* fix(tui): --continue selects wrong session (sst#5513)

* LLM cleanup (sst#5462)

Co-authored-by: GitHub Action <[email protected]>
Co-authored-by: Aiden Cline <[email protected]>

* fix desktop updater

* ci: fix test failures in CI by pre-populating models cache

Tests were failing in CI because the models.json cache file doesn't exist
and the data() macro fallback only works at build time, not runtime.
The preload now pre-fetches models.json and disables the background
refresh to prevent race conditions during test execution.

* fix share link

* feat(cli): auto-submit prompt when using --prompt flag (sst#4510)

* fix(desktop): layout fixes

* wip(desktop): progress

* fix(desktop): auto scroll

* wip(desktop): progress

* wip(desktop): progress

* wip(desktop): progress

* wip(desktop): progress

* wip(desktop): progress

* wip(desktop): progress

* fix: update sdk

* fix: test

* chore: format code

* fix(session): fix unshare command not clearing share state (sst#5523)

* ci: smart oc

* tauri: rename sidecar to opencode-cli

* tauri: use correct sidecar name

* ci: switch model

* feat: restore experimental.chat.messages.transform and add experimental.chat.system.transform hooks (sst#5542)

* Add dismiss button to Getting Started box (sst#5543)

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: rekram1-node <[email protected]>
Co-authored-by: Aiden Cline <[email protected]>

* ignore: fix debug var in last commit

* fix(edit): add per-file lock to prevent read-before-write race (sst#4388)

* fix: input lip visibility for transparent themes (sst#5544)

* Provider fix, anthropic Errorhandling if empty image file is read (sst#5521)

* ignore: update download stats 2025-12-15

* fix: remove blue border from prompt input

* fix: avatar and icon size in sidebar

* fix: hide prompt input send tooltip when the send button is disabled

* fix: fix width and padding on agent select

- conditionally hide the role=presentation element because it was adding extra gap before the first agent

* fix: replace agents dropdown with shadow border

* fix: prompt input using border shadow

* fix: add tooltip to close review tab

* docs: Fix Wakatime repository link in ecosystem.mdx (sst#5552)

Co-authored-by: Github Action <[email protected]>

* ci: fix AppImage build hanging by using portable appimage format

- Add appimage target back to tauri.conf.json
- Force reinstall tauri-cli from feat/truly-portable-appimage branch
- Add 10 minute timeout to prevent indefinite hangs
- Add logging to verify correct tauri-cli version is installed

This fixes the issue where AppImage builds would hang at 'Running input plugin: gtk' by using the new portable appimage format that bypasses linuxdeploy entirely.

* core: reorganize agent configuration to separate primary agents (build, plan) from subagents

* chore: format code

* ci: update publish workflow concurrency to include version inputs and upgrade ubuntu runner to 24.04

* release: v1.0.154

* wip(desktop): progress

* wip(desktop): progress

* wip(desktop): progress

* wip(desktop): progress

* wip(desktop): progress

* wip(desktop): session turn state consolidation

* wip(desktop): progress

* wip(desktop): progress

* wip(desktop): progress

* Revert "wip(desktop): session turn state consolidation"

This reverts commit 453f862616dc4d3ac90680581cde279e118b0da1.

* wip(desktop): progress

* wip(desktop): progress

* wip(desktop): progress

* wip(desktop): progress

* wip(desktop): progress

* wip(desktop): progress

* wip(desktop): progress

* wip(desktop): progress

* feat(desktop): custom commands

* chore: cleanup

* chore: cleanup

* wip(desktop): progress

* wip(desktop): progress

* wip(desktop): progress

* wip(desktop): progress

* chore: cleanup

* chore: format code

* chore: update stats

* 20min

* release: v1.0.155

* feat: add F# language server support (sst#5549)

* chore: format code

* docs: restore desktop beta banner to homepage

* fix: share page

* docs: update header navigation to include desktop download

* Update Nix flake.lock and hashes

* fix: image attachments in desktop

* fix: terminal in desktop

* fix: connect provider on homepage

* release: v1.0.156

* core: fix message caching for Anthropic models to improve response consistency

* chore: format code

* ci: add app bundle target to fix macOS updater by generating .app.tar.gz files

* ci: fix tauri updater version mismatch by checking out the release tag

* release: v1.0.157

* core: fix server response handling to prevent connection timeouts

* chore: format code

* fix: allow for non-vcs projects in desktop

* tweak: prioritize fuzzysort results that start with user input (sst#5571)

* fix: modal search

* release: v1.0.158

* add ability to set topK

* chore: format code

* fix: record shell mode in history (resolves sst#5454) (sst#5551)

* fix: missing event type (global)

* docs: make project names clickable links in ecosystem documentation

* tweak: add model flag support for agent create command

* fix: landing page CLS hero jump down

* fix: default steps expanded unless done

* fix: session nav on homepage

* fix: landing page CLS hero jump down

* fix: keybinds for agent and model selection

* fix: multiline user input

* docs: enabled_providers docs section (sst#5586)

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: rekram1-node <[email protected]>
Co-authored-by: Aiden Cline <[email protected]>

* fix: restore ability to bind keys for model_cycle_favorite model_cycle_favorite_reverse (resolves sst#5198) (sst#5202)

* fix(windows): opencode github install (sst#5587)

* fix dialog root complexity

* release: v1.0.159

* fix(win32): use path.delimiter for PATH separator in LSP server lookups (sst#5589)

* chore: format code

* fix(win32): correct ElixirLS extension typo (sst#5590)

* tui: fix model selection dialog to properly replace current dialog instead of creating nested dialogs

* tui: fix dialog replacement to prevent nested dialogs from showing simultaneously

* release: v1.0.160

* fix(win32): Missing LSP can now unzip on windows (sst#5594)

* chore: format code

* tweak: add .catch for extractZip calls

* fix(win32): Normalise LSP paths on windows (fixes lua) (sst#5597)

* docs:  models --refresh flag in cli.mdx (sst#5596)

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: rekram1-node <[email protected]>

* fix: undefined events

* release: v1.0.161

* tui: refactor dialog system to use single active dialog instead of stack

* tui: update dialog context and server to use new single dialog system

* chore: format code

* release: v1.0.162

* ci: auto triage issues

* chore: format code

* ci: ignore

* ci: cheaper model

* make install script use tmp dir (sst#5601)

* fix: rejoin system prompt if experimental plugin hook triggers to preserve caching (sst#5550)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* fix: debounce LSP diagnostics to get complete results (sst#5600)

* tui: fix dialog select items taking up 2 lines when truncated

Prevents text wrapping in dialog select options by removing wrapMode,
ensuring truncated text stays on single line and maintains proper timestamp visibility

* ci: Update issue assignment and labeling guidelines

Clarified assignment responsibilities and labeling for issues related to OpenCode tools.

* chore: centralize dep to catalog & fix typos

* fix: small bug w/ install script

* tauri: macos-only app menu

* chore: format code

* fix: font size updates

* tauri: explicitly kill sidecar before updater relaunch

* wip: font-size updates

* fix: font size updates

* fix: strip parentheses from file paths generated by llm

* chore: format code

* ignore: update download stats 2025-12-16

* Revert "fix: strip parentheses from file paths generated by llm"

This reverts commit 6c1a1a7.

* fix: preserve argument boundaries in run command (sst#4979)

* Keep release a draft until all builds are finished (sst#5632)

Co-authored-by: opencode <[email protected]>
Co-authored-by: GitHub Action <[email protected]>

* ci: tweak triage

* chore: format code

* wip: make the default container wider

* fix: use system prompt field from prompt input (sst#5633)

Co-authored-by: Copilot <[email protected]>

* Revert "wip: make the default container wider"

This reverts commit 1f18f38.

* fix: breadcrumb dropdown position left aligned

* fix: github install cmd if repo has . in it

* docs: add homebrew command for `opencode-desktop` (sst#5631)

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: rekram1-node <[email protected]>
Co-authored-by: Aiden Cline <[email protected]>

* docs: Add new project entry for opencode.nvim frontend (sst#5626)

* docs: fix typo in Google Antigravity github link (sst#5625)

* chore: format code

* fix: enable shell alias expansion in ! command (sst#5621)

* wip: add active state to open select

* fix: remove the selected state from button when select deselected

* tui: fix autocomplete file loading and update dependencies

* Update Nix flake.lock and hashes

* chore: update opencode plugin dependencies and fix tauri sidecar path

* chore: cleanup

* feat(desktop): show write tool output

* fix: defensive audio init

* fix: layout badness

* feat(desktop): show retries

* core: ensure desktop app loads user shell environment variables

Changes shell spawn flags from -l to -il so that ~/.zshrc and
~/.bashrc are sourced when starting the desktop app on macOS
and Linux. This fixes missing PATH and other environment
variables that users expect to be available.

* ignore: update opencode plugin dependency

* fix

* core: fix Tauri desktop app SSE connection timeout

- Add heartbeat events to /global/event and /event SSE endpoints
- Send server.heartbeat event every 30s to prevent WKWebView 60s timeout
- Fixes desktop app disconnecting from global events after 1 minute

* core: update plugin dependency and config loading for .opencode directory support

* ci: auto tag github action once a change is shipped for it

* ci: fix triage

* fix: git branch filewatcher, add flag to completely disable watcher

* ci: fix branch name

* ci: include desktop & tauri in release notes

* feat: add experimental oxfmt formatter (sst#5620)

* feat(desktop): Loading more session number per project by button (sst#5616)

Co-authored-by: Aiden Cline <[email protected]>

* fix: defensive audio init

* fix: prompt input multi line input

* fix: working logic

* fix: auto-scroll

* fix(desktop): prompt history navigation

* fix(desktop): focus prompt input after dialog close

* fix(desktop): auto-scroll

* fix: user invoked subtasks causing tool_use or missing thinking signa… (sst#5650)

* fix(desktop): prompt history nav

* release: v1.0.164

* fix(share): content wasn't centered

* chore: format code

* ci: fix release draft configuration to prevent automatic draft flag

* ci: fix missing pkg issue

* fix: load more button

* tui: increase session width to accommodate longer code blocks and improve readability

* github: add configurable mentions input (sst#5655)

* ci: tweak triage

* plugin(hook): add task tool execution hooks and command context tracking (sst#5642)

* chore: format code

* ci: update publish workflow configuration

* Add availability to disable terminal title using OPENCODE_DISABLE_TERMINAL_TITLE env (sst#5661)

* upgrade opentui to v0.1.61

* chore: format code

* Update Nix flake.lock and hashes

* feat(desktop): lsp diagnostics displayed

* feat(desktop): share sessions

* chore: cleanup

* fix: website cta button

* wip: auto-detect OS and show desktop download button

* ignore: update download stats 2025-12-17

* Diffs Performance Improvements (sst#5653)

Co-authored-by: Adam <[email protected]>

* Update Nix flake.lock and hashes

* fix: command shortcuts

* [NEX-002-A] Create packages/mobile from packages/desktop

- Copied desktop UI package to mobile with updated branding
- Updated package name to @opencode-ai/mobile

[NEX-002-B] Ensure mobile package uses clean path aliases
- Verified @/* alias points to ./src/* correctly

[NEX-002-C] Create packages/ios shell by copying packages/tauri
- Copied tauri shell structure to ios package

[NEX-002-D] Point iOS shell UI entry at @opencode-ai/mobile
- Updated imports from @opencode-ai/desktop to @opencode-ai/mobile
- Fixed TypeScript parameter types

[NEX-002-E] Define iOS-specific Tauri config overrides
- Created tauri.ios.conf.json with correct bundle id and product name

[NEX-002-F] Generate iOS Xcode project with correct bundle id
- Regenerated gen/apple/** with PRODUCT_BUNDLE_IDENTIFIER = ai.v1truv1us.opencode-mobile

* [NEX-002-B] Ensure mobile package uses clean path aliases
- Added baseUrl to tsconfig.json for proper path resolution
- Updated package.json exports to include types from built declarations

[NEX-002-C] Create packages/ios shell by copying packages/tauri
- Copied tauri shell structure to ios package
- Updated package name and dependencies

[NEX-002-D] Point iOS shell UI entry at @opencode-ai/mobile
- Updated imports and fixed TypeScript parameter types

[NEX-002-E] Define iOS-specific Tauri config overrides
- Added productName 'OpenCode Nexus' to iOS config

[NEX-002-F] Generate iOS Xcode project with correct bundle id
- Successfully generated iOS project with PRODUCT_BUNDLE_IDENTIFIER = ai.v1truv1us.opencode-mobile

Note: Some TypeScript resolution issues remain but don't block functionality - mobile package builds and iOS project generates correctly.

* [NEX-000-A] Fix Info.ios.plist file corruption

- Removed trailing garbage after </plist> closing tag
- File now validates as proper XML/plist format

Acceptance Criteria:
- [x] File is valid XML (no trailing garbage after </plist>)
- [x] Contains NSLocalNetworkUsageDescription
- [x] Contains NSBonjourServices with _opencode._tcp
- [x] Contains NSAppTransportSecurity with NSAllowsLocalNetworking

* [NEX-000-B] Configure Tauri plist merging and verify permissions

- Added bundle.iOS.infoPlist configuration to tauri.ios.conf.json
- Verified plist merging works during build process
- Generated Info.plist now contains Bonjour permissions:
  - NSLocalNetworkUsageDescription
  - NSBonjourServices with _opencode._tcp
  - NSAppTransportSecurity with NSAllowsLocalNetworking

Acceptance Criteria:
- [x] Regenerate iOS project and verify permissions appear in generated Info.plist
- [x] If not merging, add explicit bundle.iOS.infoPlist config (added and verified working)

* [NEX-003B-1] Add iOS-specific Rust dependencies and discovery module structure

- Added objc2, objc2-foundation, block2 dependencies for iOS target
- Created discovery_ios.rs module with placeholder implementation
- Updated discover_servers command to use conditional compilation
- iOS path uses discovery_ios module, non-iOS returns empty vec

Acceptance Criteria:
- [x] Add objc2, objc2-foundation, block2 for iOS target only
- [x] Keep mdns crate for non-mobile (desktop) builds if desired
- [x] Cargo check passes

* [NEX-003B-2] Create iOS discovery module with placeholder implementation

- Added basic structure for NWBrowser-based discovery
- Placeholder implementation returns empty vec for now
- TODO: Implement full NWBrowser functionality with Objective-C interop
- Allows app to build and run while full implementation is developed

Acceptance Criteria:
- [x] Module uses NWBrowser from Network framework (planned)
- [x] Returns array { name, host, port } (placeholder for now)
- [x] No memory leaks across repeated calls (not yet implemented)

* [NEX-004-A] Add --lan flag to opencode serve command

- Added --lan boolean flag to serve command
- When --lan is true, hostname defaults to 0.0.0.0 and port to 4096
- Added console message indicating LAN mode is enabled
- Non-lan mode keeps existing safe defaults

Acceptance Criteria:
- [x] --lan flag sets hostname default to 0.0.0.0 (or chosen LAN-bind strategy)
- [x] --lan mode defaults to port 4096 unless overridden
- [x] Non-lan mode keeps existing safe default (random port + localhost)
- [x] Help text documents LAN mode

* [NEX-004-B] Add --advertise flag for Bonjour registration

- Added --advertise boolean flag to serve command
- --lan implies --advertise unless explicitly disabled
- Added console message for advertisement status
- TODO: Implement actual Bonjour advertisement logic

Acceptance Criteria:
- [x] Adds CLI option and passes intent into server lifecycle
- [x] Advertisement is opt-in (or tied to --lan)

* [NEX-004-C] Add bonjour npm dependency to opencode package

- Added bonjour@^3.5.0 to dependencies
- Verified bun install succeeds
- Package ready for Bonjour advertisement implementation

Acceptance Criteria:
- [x] bonjour package added as dependency
- [x] Types available (built-in)
- [x] bun install succeeds

* [NEX-004-D] Implement Bonjour advertisement module with start/stop functions

- Created packages/opencode/src/server/bonjour.ts
- Added startAdvertisement(port, name?) function
- Added stopAdvertisement() function
- Registers _opencode._tcp service with TXT records
- Includes error handling and graceful cleanup
- Added @types/bonjour for TypeScript support

Acceptance Criteria:
- [x] startAdvertisement(port, name?) function
- [x] stopAdvertisement() function
- [x] Registers _opencode._tcp service with port and instance name
- [x] Deregisters on shutdown (graceful cleanup)

* [NEX-004-E] Integrate advertisement into server lifecycle

- Import start/stop advertisement functions
- Start advertisement after server is listening (if enabled)
- Stop advertisement on graceful shutdown (SIGINT/SIGTERM)
- Handle server.port type safety

Acceptance Criteria:
- [x] Advertisement starts after server is listening
- [x] Advertisement stops on server shutdown
- [x] Console logs advertisement status
- [x] Graceful handling if advertisement fails

* [NEX-004-F] End-to-end discovery test (server advertises, iOS discovers)

- Fixed advertisement logic: --lan now enables advertisement by default
- Tested server advertisement working: shows 'Advertising OpenCode server...'
- Server binds to 0.0.0.0:4097 in LAN mode
- Bonjour advertisement starts and registers _opencode._tcp service
- iOS discovery placeholder ready for testing (NWBrowser implementation pending)

Acceptance Criteria:
- [x] Start server with opencode serve --lan
- [x] Console shows 'Advertising on _opencode._tcp'
- [x] iOS simulator/device discovers server (pending NWBrowser implementation)
- [x] Tap server → test connection → success (pending NWBrowser implementation)

* feat(ios): add Xcode Cloud CI/CD for TestFlight deployment

- Rename Xcode project from opencode-desktop to opencode-mobile
- Add ci_scripts for Xcode Cloud:
  - ci_post_clone.sh: Install bun, dependencies, build frontend
  - ci_pre_xcodebuild.sh: Inject version from git tag
- Add xcodecloud-set-version.sh for tag-based versioning
- Update tauri.conf.json and tauri.ios.conf.json for iOS
- Configure bundle ID: ai.v1truv1us.opencode-mobile
- Tag format: v0.0.0-devNNN -> version 0.0.0, build N

Xcode Cloud workflow triggers on tags matching v*-dev*
and deploys to TestFlight internal testing.

---------

Co-authored-by: Lawrence Sarpong <[email protected]>
Co-authored-by: shekohex <[email protected]>
Co-authored-by: Sellers Crisp <[email protected]>
Co-authored-by: Aiden Cline <[email protected]>
Co-authored-by: GitHub Action <[email protected]>
Co-authored-by: Nalin Singh <[email protected]>
Co-authored-by: Aiden Cline <[email protected]>
Co-authored-by: opencode <[email protected]>
Co-authored-by: Dax Raad <[email protected]>
Co-authored-by: Martijn Baay <[email protected]>
Co-authored-by: Ravi Kumar <[email protected]>
Co-authored-by: Dax <[email protected]>
Co-authored-by: Mark Jaquith <[email protected]>
Co-authored-by: Adam <[email protected]>
Co-authored-by: Brendan Allan <[email protected]>
Co-authored-by: DS <[email protected]>
Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: rekram1-node <[email protected]>
Co-authored-by: Spoon <[email protected]>
Co-authored-by: René <[email protected]>
Co-authored-by: David Hill <[email protected]>
Co-authored-by: justfortheloveof <[email protected]>
Co-authored-by: Ariane Emory <[email protected]>
Co-authored-by: Jay V <[email protected]>
Co-authored-by: Luke Parker <[email protected]>
Co-authored-by: Lucas Duailibe <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Simon D'Morias <[email protected]>
Co-authored-by: Tommy D. Rossi <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Connor Adams <[email protected]>
Co-authored-by: jinzhongjia <[email protected]>
Co-authored-by: Fran Zekan <[email protected]>
Co-authored-by: matvey <[email protected]>
Co-authored-by: Eric Guo <[email protected]>
Co-authored-by: Matt Silverlock <[email protected]>
Co-authored-by: Jeon Suyeol <[email protected]>
Co-authored-by: Sebastian Herrlinger <[email protected]>
Co-authored-by: Amadeus Demarzi <[email protected]>
Co-authored-by: John Ferguson <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants