Skip to content

Tasks unexpectedly try to use the tasks.json file (or the keymap.json file) as a **current working directory** (it's not a directory, it's a file!!) #20060

@yuzisee

Description

@yuzisee

Check for existing issues

  • Completed

Describe the bug / provide steps to reproduce it

Configure:

// /Users/joseph/.config/zed/tasks.json
[
  {
    "label": "git checkout origin/master",
    "command": "git",
    "args": ["checkout", "origin/master"],
    "use_new_terminal": false,
    "allow_concurrent_runs": false,
    "reveal": "always",
    "hide": "never"
  }
]

and

// keymap.json
[
  {
    "context": "Terminal",
    "bindings": {
      "cmd-/": "task::Spawn"
    }
  }
]
  1. cmd+shift+p
  2. task: spawn
  3. use the arrow keys to select a task
  4. press tab to autocomplete the task label
  5. opt-enter

The task runs, just as expected. No problems

  1. open the terminal pane
  2. cmd+/
  3. use the arrow keys to select a task
  4. press tab to autocomplete the task label
  5. opt-enter

The task runs, just as expected. No problems

  1. open the terminal pane
  2. cmd+/
  3. click on the task with your mouse

The task runs, just as expected. No problems

  1. cmd+shift+p
  2. task: spawn
  3. click on the task with your mouse

EXPECTED BEHAVIOR = The task runs, just as expected. No problems

ACTUAL BEHAVIOR = Sometimes this does work, but sometimes it fails. Once it fails, it will subsequently always fail. You know that it's trying because (if your cursor is currently in the editor) you can see the focus DOES move over to an existing open terminal pane (only if there is an existing terminal pane already open -- it won't open a new terminal no matter what), but in any case still no command is run. If there is no terminal pane open, basically nothing appears to happen at all.

  • Once it has failed once, even steps 1–14 won't work anymore.
  • (There does seem to be some way to accidentally break free of this bugged state, and afterward will all start working again -- but I haven't yet found a reliable way to get back into a working state.)

I am watching ~/Library/Logs/Zed/Zed.log in a separate window the entire time. Whenever it fails, it prints

Zed.log:

2024-10-31T23:38:55.158367-07:00 [ERROR] Working directory: /Users/joseph/.config/zed/tasks.json Shell command: `/bin/zsh -i -c git remote update origin --prune`, IOError: Failed to spawn command '/bin/zsh': Not a directory (os error 20)

Caused by:
    Failed to spawn command '/bin/zsh': Not a directory (os error 20)

Notice the section that says Working directory: /Users/joseph/.config/zed/tasks.json

Why is it using tasks.json (a file) as the working directory? As you can see in my tasks.json above, I did not set "cwd" so there is no reason for it to look anywhere specific.

Environment

Zed: v0.159.7 (Zed)
OS: macOS 14.5.0
Memory: 8 GiB
Architecture: aarch64

If applicable, add mockups / screenshots to help explain present your vision of the feature

No response

If applicable, attach your Zed.log file to this issue.

Zed.log
2024-10-31T23:19:53.248461-07:00 [INFO] ========== starting zed ==========
2024-10-31T23:19:53.251881-07:00 [INFO] Opening main db
2024-10-31T23:19:53.254898-07:00 [INFO] Opening main db
2024-10-31T23:19:53.272516-07:00 [INFO] Using git binary path: Some("/Applications/Zed.app/Contents/MacOS/git")
2024-10-31T23:19:53.307849-07:00 [INFO] set environment variables from shell:/bin/zsh, path:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/b
in:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/usr/local/MacGPG2/bin:/Users/joseph/.cargo/bin
2024-10-31T23:19:53.603127-07:00 [INFO] no tokio runtime found, creating one for Reqwest...
2024-10-31T23:19:53.626983-07:00 [INFO] initializing context server client
2024-10-31T23:19:53.627276-07:00 [INFO] Registering built-in prompt template: content_prompt
2024-10-31T23:19:53.627733-07:00 [INFO] Registering built-in prompt template: edit_workflow
2024-10-31T23:19:53.627892-07:00 [INFO] Registering built-in prompt template: project_slash_command
2024-10-31T23:19:53.627965-07:00 [INFO] Registering built-in prompt template: terminal_assistant_prompt
2024-10-31T23:19:53.628223-07:00 [INFO] No prompt template overrides directory found at /Users/joseph/.config/zed/prompt_overrides. Using built-in prompts.
2024-10-31T23:19:53.62984-07:00 [INFO] extensions updated. loading 2, reloading 0, unloading 0
2024-10-31T23:19:53.695742-07:00 [INFO] Opening main db
2024-10-31T23:19:53.757542-07:00 [INFO] Opening main db
2024-10-31T23:19:53.761128-07:00 [INFO] Opening main db
2024-10-31T23:19:53.763603-07:00 [INFO] building git repository, `.git` path in the worktree: ".git"
2024-10-31T23:19:53.768063-07:00 [INFO] open paths ["/Users/joseph/.config/zed/keymap.json"]
2024-10-31T23:19:53.768174-07:00 [INFO] open paths ["/Users/joseph/.config/zed/tasks.json"]
2024-10-31T23:19:53.784589-07:00 [INFO] attempting to start language server "json-language-server", path: "/Users/joseph/.config/zed/keymap.json", id: 1
2024-10-31T23:19:53.785881-07:00 [INFO] attempting to start language server "json-language-server", path: "/Users/joseph/.config/zed/tasks.json", id: 2
2024-10-31T23:19:53.786639-07:00 [INFO] fetching latest version of language server "json-language-server"
2024-10-31T23:19:53.786799-07:00 [INFO] Node runtime install_if_needed
2024-10-31T23:19:53.811181-07:00 [INFO] using project environment variables shell launched in "/Users/joseph/.config/zed/keymap.json". PATH="/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.sec
urity.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/usr/local/MacGPG2/bin:/Users/joseph
/.cargo/bin"
2024-10-31T23:19:53.989195-07:00 [WARN] no language server found matching 'solargraph'
2024-10-31T23:19:53.990447-07:00 [WARN] no language server found matching 'solargraph'
2024-10-31T23:19:53.991689-07:00 [WARN] no language server found matching 'solargraph'
2024-10-31T23:19:53.991905-07:00 [WARN] no language server found matching 'solargraph'
2024-10-31T23:19:53.991979-07:00 [WARN] no language server found matching 'solargraph'
2024-10-31T23:19:53.992071-07:00 [WARN] no language server found matching 'solargraph'
2024-10-31T23:19:53.995589-07:00 [WARN] no language server found matching 'solargraph'
2024-10-31T23:19:53.995687-07:00 [WARN] no language server found matching 'solargraph'
2024-10-31T23:19:53.995755-07:00 [WARN] no language server found matching 'solargraph'
2024-10-31T23:19:54.053902-07:00 [INFO] attempting to start language server "solargraph", path: "/Users/joseph/Documents/startx-web", id: 3
2024-10-31T23:19:54.054851-07:00 [INFO] starting language server process. binary path: "/usr/local/bin/solargraph", working directory: "/Users/joseph/Documents/startx-web", args: ["stdio"]
2024-10-31T23:19:54.7707-07:00 [INFO] downloading language server "json-language-server"
2024-10-31T23:19:54.770966-07:00 [INFO] Node runtime install_if_needed
2024-10-31T23:19:54.856882-07:00 [INFO] Node runtime install_if_needed
2024-10-31T23:19:54.942221-07:00 [INFO] using project environment for language server LanguageServerName("json-language-server")
2024-10-31T23:19:54.94234-07:00 [INFO] using project environment for language server LanguageServerName("json-language-server")
2024-10-31T23:19:54.942421-07:00 [INFO] starting language server process. binary path: "/Users/joseph/Library/Application Support/Zed/node/node-v22.5.1-darwin-arm64/bin/node", working directory: "/Users/joseph/.config/zed", args: ["/Users
/joseph/Library/Application Support/Zed/languages/json-language-server/node_modules/vscode-langservers-extracted/bin/vscode-json-language-server", "--stdio"]
2024-10-31T23:19:54.944503-07:00 [INFO] starting language server process. binary path: "/Users/joseph/Library/Application Support/Zed/node/node-v22.5.1-darwin-arm64/bin/node", working directory: "/Users/joseph/.config/zed", args: ["/Users
/joseph/Library/Application Support/Zed/languages/json-language-server/node_modules/vscode-langservers-extracted/bin/vscode-json-language-server", "--stdio"]
2024-10-31T23:20:04.485978-07:00 [ERROR] Working directory: /Users/joseph/.config/zed/tasks.json Shell command: `/bin/zsh -i -c git remote update origin --prune`, IOError: Failed to spawn command '/bin/zsh': Not a directory (os error 20)

Caused by:
Failed to spawn command '/bin/zsh': Not a directory (os error 20)
2024-10-31T23:20:17.77742-07:00 [ERROR] Working directory: /Users/joseph/.config/zed/tasks.json Shell command: /bin/zsh -i -c git checkout origin/master, IOError: Failed to spawn command '/bin/zsh': Not a directory (os error 20)

Caused by:
Failed to spawn command '/bin/zsh': Not a directory (os error 20)
2024-10-31T23:22:15.473553-07:00 [ERROR] Working directory: /Users/joseph/.config/zed/tasks.json Shell command: /bin/zsh -i -c git checkout origin/master, IOError: Failed to spawn command '/bin/zsh': Not a directory (os error 20)

Caused by:
Failed to spawn command '/bin/zsh': Not a directory (os error 20)
2024-10-31T23:26:58.634753-07:00 [ERROR] Working directory: /Users/joseph/.config/zed/tasks.json Shell command: /bin/zsh -i -c git checkout origin/master, IOError: Failed to spawn command '/bin/zsh': Not a directory (os error 20)

Caused by:
Failed to spawn command '/bin/zsh': Not a directory (os error 20)
2024-10-31T23:28:09.236917-07:00 [ERROR] Working directory: /Users/joseph/.config/zed/tasks.json Shell command: /bin/zsh -i -c git remote update origin --prune, IOError: Failed to spawn command '/bin/zsh': Not a directory (os error 20)

Caused by:
Failed to spawn command '/bin/zsh': Not a directory (os error 20)
2024-10-31T23:28:17.785998-07:00 [ERROR] Working directory: /Users/joseph/.config/zed/tasks.json Shell command: /bin/zsh -i -c git checkout origin/master, IOError: Failed to spawn command '/bin/zsh': Not a directory (os error 20)

Caused by:
Failed to spawn command '/bin/zsh': Not a directory (os error 20)
2024-10-31T23:28:31.042517-07:00 [ERROR] Working directory: /Users/joseph/.config/zed/tasks.json Shell command: /bin/zsh -i -c git checkout origin/master, IOError: Failed to spawn command '/bin/zsh': Not a directory (os error 20)

Caused by:
Failed to spawn command '/bin/zsh': Not a directory (os error 20)
2024-10-31T23:28:50.163296-07:00 [ERROR] Working directory: /Users/joseph/.config/zed/tasks.json Shell command: /bin/zsh -i -c git checkout origin/master, IOError: Failed to spawn command '/bin/zsh': Not a directory (os error 20)

Caused by:
Failed to spawn command '/bin/zsh': Not a directory (os error 20)
2024-10-31T23:28:58.643891-07:00 [ERROR] Working directory: /Users/joseph/.config/zed/tasks.json Shell command: /bin/zsh -i -c git checkout origin/master, IOError: Failed to spawn command '/bin/zsh': Not a directory (os error 20)

Caused by:
Failed to spawn command '/bin/zsh': Not a directory (os error 20)
2024-10-31T23:30:16.16267-07:00 [ERROR] Working directory: /Users/joseph/.config/zed/tasks.json Shell command: /bin/zsh -i -c git checkout origin/master, IOError: Failed to spawn command '/bin/zsh': Not a directory (os error 20)

Caused by:
Failed to spawn command '/bin/zsh': Not a directory (os error 20)
2024-10-31T23:30:19.25424-07:00 [ERROR] Working directory: /Users/joseph/.config/zed/tasks.json Shell command: /bin/zsh -i -c git checkout origin/master, IOError: Failed to spawn command '/bin/zsh': Not a directory (os error 20)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions