Repository navigation
[TICK 14-001] Add fava-trails install-jj subcommand - #7
Merged
Merged
Conversation
Closes the adoption cliff between `pip install fava-trails` and a working system by adding a CLI subcommand that downloads the JJ binary from GitHub releases. Updates all error messages to reference the new command. Reviewed by Gemini 3 Pro — incorporated version-aware upgrades, Windows winget detection, and post-install PATH verification. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
codev/ was wiped in Spec 16 Phase 2 (git history rewrite for OSS launch). Reinstalled via `codev update` to enable TICK builder spawning. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Member
Author
Architect ReviewRisk: Low — ~275 LOC of implementation across 4 source files (cli.py, jj_backend.py, conftest.py, test_cli.py). Remaining 90+ files are codev protocol templates from Assessment: Clean implementation that follows existing cli.py patterns. Security:
Code quality: Good error handling with actionable messages, proper platform detection, version-aware skip. Tests mock correctly with no network calls. Follow-up suggestion: Add SHA256 checksum verification for downloaded tarballs in a future TICK. APPROVE — builder may merge. Architect review |
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.
Summary
fava-trails install-jjCLI subcommand that downloads and installs the JJ binary (Linux x86_64/aarch64, macOS x86_64/arm64), eliminating the adoption cliff betweenpip install fava-trailsand a working systemcli.py,jj_backend.py, andconftest.pyto referencefava-trails install-jjinstead of the non-packagedscripts/install-jj.shImplementation Details
winget install Jujutsu.Jujutsuand exits--versionflag to pin a specific JJ releaseextractfile()+ manual write (notf.extract()path traversal risk)urlopen(timeout=30)— no hanging on poor networks~/.local/binis not in PATHTest plan
test_install_jj_skips_if_version_matches— already-installed short-circuittest_install_jj_unsupported_platform— Windows winget guidancetest_install_jj_unsupported_arch— unsupported Linux arch exits 1test_install_jj_downloads_and_installs— full download+extract+install flowtest_install_jj_custom_version—--versionflag changes download URLtest_install_jj_in_help— subcommand appears in--helpoutputtest_doctor_missing_jjupdated for new error text🤖 Generated with Claude Code