Skip to content

fix: address all four open CLI issues (#323, #326, #328, #329) - #330

Open
devin-ai-integration[bot] wants to merge 1 commit into
mainfrom
devin/1786144602-fix-open-issues
Open

fix: address all four open CLI issues (#323, #326, #328, #329)#330
devin-ai-integration[bot] wants to merge 1 commit into
mainfrom
devin/1786144602-fix-open-issues

Conversation

@devin-ai-integration

@devin-ai-integration devin-ai-integration Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Summary

All four open issues in this repo were small, well-localized correctness bugs, each fixed with a unit test:

Note: the local toolchain had to be updated to current stable (chacha20 0.10.1 requires edition 2024) to build; cargo fmt --check, cargo clippy -- -D warnings, cargo test, and cargo xtask check all pass. cargo clippy --all-targets on current stable flags two preexisting lints untouched by this PR (src/commands/completions.rs:59 redundant closure, trailing commas in tests/integration.rs); CI only runs cargo clippy without --all-targets, so they don't gate this PR.

Closes #323, closes #326, closes #328, closes #329.

Link to Devin session: https://app.devin.ai/sessions/fb903d8badf449c69bcb0e3b20a52a30
Requested by: @sachiniyer


Open in Devin Review

Summary by cubic

Fixes four CLI correctness bugs in PR formatting, remote URL parsing, pagination, and HTTPS credential handling to improve output accuracy and repo inference. Adds unit tests for each fix.

Written for commit 936f2b0. Summary will update on new commits.

Review in cubic

- omit dangling em-dash in format_fix_pr when the fix PR URL is empty
- strip jj's '(push: ...)' annotation when parsing the origin remote
- clamp requested page to the filtered total in bugs/scans list
- split HTTPS credentials on the last '@' so passwords may contain '@'

Co-Authored-By: Sachin Iyer <siyer@detail.dev>
@sachiniyer sachiniyer self-assigned this Aug 7, 2026
@devin-ai-integration

Copy link
Copy Markdown
Contributor Author
Original prompt from Sachin

Can you fix all the open issues in the cli repo. Decide if they are worth fixing and then delegate to another agent to fix if you need to

@aviator-app

aviator-app Bot commented Aug 7, 2026

Copy link
Copy Markdown

Current Aviator status

Aviator will automatically update this comment as the status of the PR changes.
Comment /aviator refresh to force Aviator to re-examine your PR (or learn about other /aviator commands).

This PR is not ready to merge (currently in state pending): this PR has not been approved.

Pending Status Checks

  • ✅ 7 tests passing!

See the real-time status of this PR on the Aviator webapp.
Use the Aviator Chrome Extension to see the status of your PR within GitHub.

@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment, CI, and merge conflict monitoring

@devin-ai-integration
devin-ai-integration Bot deployed to integration-tests August 7, 2026 23:17 Active

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 1 additional finding.

Open in Devin Review

@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

Runtime verification (all four fixes)

Built this branch and a main baseline binary and ran them side-by-side against a local mock Detail API (no production token available in this environment) plus scratch git/jj repos.

1+2. clamp_page: out-of-range page clamps to the last real page

detail bugs list usedetail/cli --status pending,resolved --since 30d --limit 2 --page 5 (5 matches ÷ 2 = 3 pages). Old: Page: 5 of 3 with zero rows. New: Page: 3 of 3 showing the actual last-page item bug_05.

bugs table old vs new

Same in JSON — old page=5, total_pages=3, items=[] vs new page=3, total_pages=3, items=[bug_05]:

bugs json old vs new

Scans path --status failed --limit 2 --page 9 (3 failed → 2 pages): old Page: 9 of 2 empty, new Page: 2 of 2 showing wr_05. Regression: --page 1 still Page: 1 of 2 with wr_01+wr_03.

scans new

3. format_fix_pr: no dangling em-dash when fixPr.url is empty

detail bugs show <id> | grep 'Fix PR' | cat -A — old ends #42 (merged) M-bM-^@M-^T $, new ends #42 (merged)$. A bug with a real URL still renders #43 (merged) — https://github.com/usedetail/cli/pull/43.

fix pr old vs new

4. Repo inference: @ in HTTPS credentials, and jj (push: …) annotation

Scratch repo with origin = https://user:p@ss@github.com/usedetail/cli.git, no repo argument passed. Old: Error: Could not infer repository from git or jj remotes. New: resolves usedetail/cli.

git inference new

jj workspace (no .git, so the jj fallback is the only path) where jj git remote list prints origin https://github.com/usedetail/cli.git (push: https://other.example.com/mirror/cli.git). Old: Repository 'usedetail/cli.git (push: https:' not found. New: resolves usedetail/cli.

jj inference new

Gates

cargo build, cargo test, cargo clippy -- -D warnings, cargo fmt --check, cargo xtask check — all pass.

gates

Caveats: no Detail API token in the test environment, so a local mock API was used instead of production; cargo clippy --all-targets -- -D warnings fails, but identically on main (pre-existing lints in tests/integration.rs and src/commands/completions.rs).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment