BatchArgs was missing --project and --program fields, so batch commands
couldn't specify which project to use. Also fixed argument ordering in
all test files to place --project/--program after the subcommand name,
matching clap's per-subcommand argument parsing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The test harness used dirs::data_local_dir() (~/.local/share) to compute
the project path, but the CLI defaults to dirs::cache_dir() (~/.cache).
This caused different MD5 hashes for port file lookup, so the test harness
could never find the port file written by the bridge.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tests that use DaemonTestHarness or ensure_test_project were missing the
require_ghidra!() macro, causing them to attempt bridge startup in CI
where Ghidra is not installed, resulting in 120s timeouts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace redundant closure with function reference (clippy::redundant_closure)
- Use is_some_and instead of map_or(false, ...) (clippy::unnecessary_map_or)
- Run cargo fmt across all files
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Make --quiet flag functional by threading it through execute_via_bridge()
- Fix --sort hyphen ambiguity with allow_hyphen_values in clap
- Replace deprecated atty crate with std::io::IsTerminal
- Use config.default_limit as fallback when user doesn't specify --limit
- Respect per-command --json flag in QueryOptions format detection
- Remove dead src/daemon/ module and src/ipc/transport.rs
- Deduplicate headless_script lookup (GhidraClient delegates to bridge)
- Fix stop_bridge() SIGTERM race with graceful shutdown wait loop
- Extend config set to support all config keys
- Clean up dead code warnings and remove blanket #![allow(dead_code)]
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add Troubleshooting section to main README with:
- Missing X11 libraries fix for Linux/WSL (libXtst)
- Java version requirements (JDK 17+ not JRE)
- WSL-specific notes
- How to view daemon logs
- Doctor command usage
- Document startup logging in daemon README
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Capture and log both stdout and stderr from Ghidra/pyghidra at info level
- Log the full command being executed for debugging
- Spawn separate thread to capture stderr while reading stdout
- Include stderr output in error messages when bridge fails to start
- Change default log level from debug to info so logs are visible without RUST_LOG
This helps diagnose issues like missing system libraries (e.g., libXtst.so.6
on WSL/Linux) which previously caused cryptic failures.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>