132 Commits

Author SHA1 Message Date
Alexander Kiselev d1e044ce5e skill update 2026-02-23 16:01:22 -08:00
Alexander Kiselev af315c20cc docs updates 2026-02-23 16:01:11 -08:00
Alexander Kiselev 2541550b0e feat: add support for FUN-style targets in decompile and diff functions tests 2026-02-23 15:40:20 -08:00
Alexander Kiselev cbfdd60873 refactor: replace Command::cargo_bin with assert_cmd::cargo_bin_cmd for consistency in tests 2026-02-23 09:56:49 -08:00
Alexander Kiselev 23c2b697dc fix: bump version to 0.1.7 and update command filters in Ghidra CLI v0.1.7 2026-02-22 18:37:41 -08:00
Alexander Kiselev 1614c24f76 fix: split release workflow integration tests to match test.yml structure
Running all tests with `cargo test --test '*'` causes cross-contamination:
OnceLock-based test binaries (comment_tests etc.) leave the bridge running,
and daemon_tests reuses then stops that bridge, leaving subsequent daemon
tests unable to start a fresh bridge ("Could not find project").

Split into separate cargo test invocations matching test.yml groups, with
explicit bridge stops between groups to ensure clean state.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 16:50:39 -08:00
Alexander Kiselev 6c552b9daa fix: bump version to 0.1.6 in Cargo.toml and Cargo.lock v0.1.6 2026-02-22 16:33:19 -08:00
Alexander Kiselev 096bd2df04 fix: resolve fmt check and drop-of-reference warnings
- Fix rustfmt issue in tests/common/mod.rs (single-line .context() chain)
- Remove stale drop(harness) calls that now drop &'static references
- Use _harness for unused bindings that only ensure bridge initialization

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 15:59:47 -08:00
Alexander Kiselev ad01eaf930 fix: share bridge across mutation tests via OnceLock to prevent macOS data loss
On macOS, Ghidra stores project data in mmap pages that aren't flushed
to disk while the bridge runs. Per-test DaemonTestHarness stop/restart
cycles cause data loss. Use OnceLock<DaemonTestHarness> to share a
single bridge per test binary, matching the readonly_tests pattern.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 15:57:50 -08:00
Alexander Kiselev 6c2149c861 fix: don't stop bridge after setup to prevent macOS project corruption
Root cause: on macOS, `ghidra stop` triggers Ghidra's project close
which truncates .gpr to 0 bytes and leaves .rep with only metadata
stubs (~index.dat, project.prp) but no actual program data. This
causes all subsequent bridge starts to fail with "program file(s)
not found".

Changes:
- Remove `ghidra stop` from CI setup (corrupts macOS projects)
- Remove Step 3 bridge stop from ensure_test_project (same issue)
- Validate .gpr is non-empty AND idata/ has program data beyond
  just ~index.dat stubs
- Clean up stale project files before re-import
- Bump cache keys v3→v4 to invalidate broken caches
- Remove diagnostic output from test.yml

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 15:42:46 -08:00
Alexander Kiselev 876cdbd3cc ci: add diagnostic output for project directory contents after setup
Lists all files in the projects directory after import+analyze+stop
to debug why macOS cache is only 919 bytes while Ubuntu saves 5.6MB.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 15:30:52 -08:00
Alexander Kiselev d9ee02902d fix: stop bridge before caching and validate .rep directory content
The ghidra-setup job left the bridge running after import+analyze,
so the Ghidra JVM hadn't flushed the project database to the .rep
directory when the post-job cache save ran. This resulted in caches
containing only the ~1KB .gpr file without any analysis data.

- Stop bridge after import+analyze in ghidra-setup (both workflows)
- Bump cache keys v2→v3 to invalidate broken empty caches
- Validate .rep has actual files, not just an empty directory

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 15:13:59 -08:00
Alexander Kiselev d5f9a96df9 refactor: update cache key format for project directories in workflows and tests 2026-02-22 14:55:27 -08:00
Alexander Kiselev 253c384676 another attempt at fixing the CI/CD issues 2026-02-22 13:19:37 -08:00
Alexander Kiselev 38d84cbad9 rolled back the bad idea and implemented proper wait 2026-02-22 12:05:52 -08:00
Alexander Kiselev aefdd1cfab this seems like a bad idea 2026-02-22 11:16:42 -08:00
Alexander Kiselev a820f28eeb update test commands to include additional test cases 2026-02-22 10:24:12 -08:00
Alexander Kiselev 86b4f1446c ugh. 2026-02-22 10:08:56 -08:00
Alexander Kiselev 8b8caada4e documentation update v0.1.5 2026-02-22 10:07:29 -08:00
Alexander Kiselev 6c50e84593 version bump 2026-02-22 10:05:46 -08:00
Alexander Kiselev 0d1d7fb603 CI/CD fixes 2026-02-22 10:01:47 -08:00
Alexander Kiselev 5d0392c741 trying to fix github rate limiting 2026-02-22 08:32:26 -08:00
Alexander Kiselev 51fab96633 fix release workflow 2026-02-22 08:14:29 -08:00
Alexander Kiselev 89fed76cbe fix workflow v0.1.4 2026-02-22 07:57:18 -08:00
Alexander Kiselev 9eb040885f Refactor ilspy-cli for enhanced .NET decompilation and project support
- Introduced `decompile_project` function in IlSpyBridge to handle project-style decompilation, generating per-type .cs files.
- Updated FFI layer to support new decompile_project functionality.
- Enhanced CLI to accept output directory for project decompilation, ensuring compatibility with existing type and method flags.
- Improved error handling and output formatting for decompilation results.
- Added comprehensive command reference for ilspy-cli, detailing usage for detecting .NET vs native binaries, listing types and methods, and searching decompiled source.
- Integrated memory reading capabilities in GhidraCliBridge for enhanced analysis workflows.
- Updated main.rs to robustly check for existing bridge instances, improving reliability in project mode.
2026-02-22 07:56:46 -08:00