Skip to content

feat(server): handle working dir change#268

Merged
sudo-tee merged 5 commits intomainfrom
feat/set-cwd
Feb 19, 2026
Merged

feat(server): handle working dir change#268
sudo-tee merged 5 commits intomainfrom
feat/set-cwd

Conversation

@sudo-tee
Copy link
Owner

This should fix #246

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds handling for Neovim working-directory changes by restarting the Opencode server and attempting to restore an appropriate session for the new workspace.

Changes:

  • Add a DirChanged autocmd that shuts down and re-starts the Opencode server, then reloads the last workspace session (or creates a new one).
  • Remove an unused log require from OpencodeServer.new().

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

File Description
lua/opencode/ui/autocmds.lua Adds DirChanged autocmd to restart server and reload/create session after cwd changes.
lua/opencode/opencode_server.lua Removes unused local log require in constructor.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@nzlov
Copy link

nzlov commented Feb 13, 2026

The first switch works fine. However, if I switch back to the initial working tree, the opencode switch fails. Another issue is that switching the working tree doesn't change the session.
origin
image
change new
image
change origin
image

@sudo-tee
Copy link
Owner Author

@nzlov

I found the issue for multiple cwd changes it should work now

For the session switch I dind't have the issue on my side but I delayed the loading of sessions to give time for the server to shutdown

Let me know if it works for you

@nzlov
Copy link

nzlov commented Feb 13, 2026

session change not work
image
cwd not work some time
image
i see session refresh, but just refresh session, not change.
Switching working trees should not stop opencode, as this will interrupt the agent's operation.

@sudo-tee
Copy link
Owner Author

Thanks for confirming

I have another idea without restarting the server.

I will let you know when it's ready

- Remove server restart logic on directory change
- Set default directory to current working directory in API client queries
- Change DirChangedPre to DirChanged autocmd for proper timing
@sudo-tee
Copy link
Owner Author

@nzlov

I removed the restart logic in favor of always sending the cwd param to the server.

Let me know if it works for you

@nzlov
Copy link

nzlov commented Feb 18, 2026

very nice. it's work. But no reload session when toggle reopen opencode.nvim

@sudo-tee
Copy link
Owner Author

@nzlov

Thanks for clarifying the session loading issue — I didn’t understand that you meant it wasn’t working when reopening the panel.

Thanks for your patience

Let me know if it works for you now :)

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 10 comments.

Comments suppressed due to low confidence (1)

lua/opencode/api_client.lua:74

  • The directory path is concatenated directly into the URL without URL encoding. Directory paths with special characters (spaces, &, =, etc.) will break the URL or create incorrect query parameters. Use vim.uri_encode() or a similar URL encoding function to properly encode the directory value before adding it to the query string.
    for k, v in pairs(query) do
      if v ~= nil then
        table.insert(params, k .. '=' .. tostring(v))

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@sudo-tee sudo-tee merged commit 3fd1bd6 into main Feb 19, 2026
10 checks passed
@nzlov
Copy link

nzlov commented Feb 19, 2026

it works. thanks.

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.

how to work with worktree

3 participants