Repository navigation
fix(diffr): faulty detection of claude on PATH - #1071
Merged
Merged
Conversation
`config init` counted Claude Code as installed when ~/.claude existed, then ran `claude`. With the folder there but `claude` off PATH (the desktop app alone, or a fresh install in an old shell), setup failed with "could not run claude plugin marketplace list --json: No such file or directory". Claude Code is now found only when `claude` is on PATH, and choosing it anyway says how to fix it. Claude-Session: https://claude.ai/code/session_01HTHD79i4QdthzVCkDZ26gd Agent-Session: cac10624-9b5a-46ba-b261-1e0359c62796
Claude Code is offered only when `claude` is on PATH. Without it, `config init` says it skipped the plugin and why, leaves out the agents question, and finishes. A plugin recorded as installed is left alone when `claude` is gone, since there is nothing to remove it with. Claude-Session: https://claude.ai/code/session_01HTHD79i4QdthzVCkDZ26gd Agent-Session: cac10624-9b5a-46ba-b261-1e0359c62796 Agent-Session: 8881e3f3-a916-4405-9706-bb6e3a2f193d
- install.sh runs `config init` on every run, not only the first, so running it again repairs or changes the setup. `diffr upgrade` sets DIFFR_SKIP_SETUP, since it upgrades the plugins itself. - install.sh no longer stops at an unset SHELL (dash under `set -u`), and prints the line to add to PATH for a shell it does not know. - `config init` sets the Claude Code plugin's `diffr` option to this diffr's path for a script install, so /diffr works when Claude Code's PATH lacks ~/.local/bin. - A failed setup ends saying to run `diffr config init` again, and the plugin's could-not-run error names `diffr config init` as well as installing. Claude-Session: https://claude.ai/code/session_01HTHD79i4QdthzVCkDZ26gd Agent-Session: cac10624-9b5a-46ba-b261-1e0359c62796 Agent-Session: 8881e3f3-a916-4405-9706-bb6e3a2f193d Agent-Session: 5fddfa2a-e3c2-401d-bf87-2f6650ad81d0
Claude-Session: https://claude.ai/code/session_01HTHD79i4QdthzVCkDZ26gd Agent-Session: cac10624-9b5a-46ba-b261-1e0359c62796 Agent-Session: 8881e3f3-a916-4405-9706-bb6e3a2f193d Agent-Session: 5fddfa2a-e3c2-401d-bf87-2f6650ad81d0
thesiti92
approved these changes
Oct 9, 2026
sidkmenon
added a commit
that referenced
this pull request
Oct 9, 2026
Bumps diffr to 0.1.19, the same set of files as #1069. This ships #1071's onboarding fixes to `install.sh` users. https://claude.ai/code/session_01HTHD79i4QdthzVCkDZ26gd
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes the onboarding gaps from testing
curl -fsSL https://install.dev.fast/diffr | shend to end.claudenot on PATHconfig inittreated Claude Code as installed when~/.claudeexisted, then ranclaude. Ifclaudewasn't on PATH, setup died withcould not run claude plugin marketplace list --json: No such file or directory.claudeis on PATH. Without it, setup prints one line saying it skipped the Claude Code plugin and how to add it later, then finishes successfully.claudeis now gone, the record is left alone.--jsonlists Claude Code only whenclaudeis on PATH, and thedetectedfield is gone.Re-running the install script never re-ran setup
install.shrunsconfig initevery time. Its defaults are the current state.diffr upgradesetsDIFFR_SKIP_SETUP=1, because it upgrades the plugins itself./diffrcouldn't find diffr when Claude Code's PATH didn't include~/.local/binENOENT … install diffr with: curl …, and following that advice changed nothing.install.shchanged PATH, or when the PATH prompt was declined.config initnow sets the plugin'sdiffroption to the absolute path, viaclaude plugin configure diffr@devfast --values-stdin. Homebrew, Cargo and Whiteboard copies keepdiffr, since their real paths change with each version and they're on PATH anyway.diffr config init.Smaller fixes
install.shdied on${SHELL##*/}underset -uwhenSHELLwas unset (dash, as in Docker or CI). It now uses${SHELL:-}.install.shprints the exact line to add to PATH.diffr config initto try again".Testing
cargo test. The CLI tests cover the missing-claudecases and check that the absolute path reachesplugin configure.install.shlocally:SHELLand no terminal: it completes;DIFFR_SKIP_SETUP=1: setup doesn't start.config initwith noclaudeon PATH. It skips, finishes, and exits 0.CLAUDE_CONFIG_DIR,claude plugin configure --values-stdinsets the option for an installed plugin.https://claude.ai/code/session_01HTHD79i4QdthzVCkDZ26gd