* chore(main): release rea-agents 6.5.0 * docs(release): finalize contributor-aware 6.5.0 notes * docs(release): retain verifier maintenance only in provenance * style(release): format the contribution inventory * docs(release): credit Windows fixes * fix(comparison): recheck historical calls-only changes (#2223) * fix(comparison): preserve incomplete function call evidence Keep missing, unknown, partial and unresolved call relationships unknown in function comparisons and reconstruction claims. Aggregate IDA caller and callee coverage without overwriting uncertainty. Validate with 144 focused tests, typecheck/lint, docs checks and test discovery. Real providers were not verified; the full headless IDA session suite requires unavailable Windows native controls. * fix(comparison): recheck historical calls-only changes --------- Co-authored-by: morluto <76467478+morluto@users.noreply.github.com> * fix(ci): isolate Linux Hopper process fixture inventory * docs(release): credit selected-null and client setup changes * fix(release): refresh 6.5.0 notes and align installation examples * docs(release): clarify 6.5.0 migrations and recent fixes * docs(release): cover omitted capabilities and refresh 6.5.0 provenance * docs(release): pin final CI corrections in 6.5.0 inventory * docs(release): include mutation scheduling in 6.5.0 provenance * docs(release): include cache policy correction in 6.5.0 provenance --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: morluto <76467478+morluto@users.noreply.github.com> Co-authored-by: Codex <codex@users.noreply.github.com> Co-authored-by: Lucien <164857476+dakjdakd@users.noreply.github.com>
358 KiB
Changelog
6.5.0 (2026-10-13)
Provider prerequisites and recorded verification scope are listed in the testing guide.
Highlights
- Analyze selected JavaScript files and recover cross-bundle relationships without expanding the selected source scope.
- Read compact summaries and page retained Evidence across binary, managed, Android, Dart, WASM and network workflows.
- Inspect SQLite snapshots, packet and signal recordings, WebAssembly, Rust dependency metadata and Electron fuses offline.
- Keep completed Evidence and partial observations available when analysis or cleanup fails.
Changes
-
JavaScript source selection: analyze exact application paths without expanding imports into the selected scope. Unselected files retain identity and explicit unknown coverage; summary delivery remains separate from source selection. (#1944, issue morluto/rea#1848). Thanks @kaoru0822-kitauji, @N0zoM1z0.
-
Code-split recovery: recover related bundles from multiple selected inputs, retaining per-file provenance and downstream cross-chunk imports. Recorded CLI/MCP coverage is Linux x64 with Wakaru 1.14.0 and source-owned esbuild/webpack fixtures; other hosts, releases and arbitrary application equivalence remain unverified. (#1686, issue morluto/rea#1605). Thanks @JingHao-Leon, @pionxzh.
-
Package imports: resolve exact package import aliases using the selected loader and package ancestry, rather than guessing sibling files. (#1862, issue morluto/rea#1838). Thanks @AWUQAQ, @mvanhorn.
-
Retained analysis views: opt into compact inventory/WASM, managed metadata, Android manifest, Dart AOT, Mach-O and EVM summaries, then page retained Evidence without rerunning analysis. Summary delivery preserves the complete recorded result and its original coverage. (#2122, #2193, #2413, #2438, #2455, #2634, #2308, 9a18251). Thanks @kaoru0822-kitauji, @N0zoM1z0.
-
Managed assemblies: Select declaring types when inspecting members, decode inspected
ldstrliterals with independent coverage, and page retained member summaries. Call and field targets exposetarget_declaring_typeandfield_declaring_type, including supported generic method targets; unresolved metadata remains unknown. (#1706, #2125, issue morluto/rea#2121, #2162, issue morluto/rea#2158, #3061, issue morluto/rea#3010, #2163, issue morluto/rea#2160). Thanks @kaoru0822-kitauji, @N0zoM1z0, @Nelglor, @skoodster. -
Packet captures: inspect saved packets with bounded TShark output, compact capture summaries and retained pages; discover installed protocol/field definitions. Recorded real-engine coverage uses Linux and Wireshark 4.6.6; native Windows/macOS and Bun behavior remain unverified. (#2318, #2340, #2496). Thanks @3QL, @N0zoM1z0, @Olorinm.
-
Recorded signals: decode existing recordings and discover installed decoders/options through caller-supplied sigrok-cli 0.7.2. This is Linux-only and requires util-linux
prlimit; it acquires no hardware samples. (#2339, #2487). Thanks @N0zoM1z0, @Olorinm. -
Web captures: derive an inferred method/origin/path-template API surface from retained HAR data including observed query-parameter names while retaining unknowns; query values, headers and bodies remain excluded. (#1891, #2982, issue morluto/rea#2913). Thanks @mvanhorn, @wunianze666-netizen, @zhangguiping-xydt.
-
QUIC captures: inspect retained aioquic 1.5.0 JSON qlog 0.3 objects and page traces/streams/observations. Other qlog layouts remain unsupported; overlap and loss declarations do not prove retransmission or network loss. (#2277). Thanks @LuisTaffelli, @N0zoM1z0.
-
Fiddler captures: inspect native SAZ archives with retained HTTP provenance and bounded decoding. Recorded producer coverage is the pinned public encoding corpus; current Fiddler Everywhere variants and Bun-native execution remain unverified. (#2409). Thanks @N0zoM1z0, @zahhak.
-
SQLite snapshots: inspect an explicitly selected offline database with table/column selection and bounded Evidence. This operation requires Node 24.x >=24.15 or 26+ with
DatabaseSync.limits; supported Node 22 and earlier 24 runtimes cannot use it. A live database/WAL copy does not establish an atomic snapshot. (#2271). Thanks @N0zoM1z0, @Y0UW1SH. -
WASM artifacts: Inspect local modules with bring-your-own WABT 1.0.42 without executing them. Compare imports/exports from two complete core-module inspection Evidence records without requiring an active WABT installation; unsupported signatures and duplicate identities remain unknown, and comparisons do not establish runtime compatibility. Recorded real-tool inspection coverage is macOS arm64. (#1533, issue morluto/rea#884, #2464, issue morluto/rea#2356). Thanks @matbrgz, @N0zoM1z0, @thangldw.
-
Go binaries: inspect embedded build metadata, including file-backed unmapped Mach-O debug segments. (#1363, 7fb097d). Thanks @Y0UW1SH.
-
Flutter APKs: identify snapshot/engine builds and inspect AOT structure without an external engine. Recorded real APK coverage uses the documented Flutter Gallery fixture; macOS/Windows and complete pool semantics remain unverified, and pool coverage stays partial. (#1582). Thanks @3QL.
-
HarmonyOS packages: inventory HAP/HSP/App Pack structures without executing code. The recorded real workflow covers one pinned HAP through repository-built CLI/MCP; installed-package and real HSP/App Pack coverage remain unverified. (#1447). Thanks @BaaRai.
-
Ghidra raw inputs and references: compatible Linux/macOS Ghidra profiles accept caller-selected raw architecture/entry information and expose typed incoming references at exact addresses. Windows Ghidra P0 admits the raw NMOS 6502 profile described below; other raw targets and the incoming-reference facet remain outside Windows P0. (#1868, issue morluto/rea#1836, #1715, issue morluto/rea#1245). Thanks @bugstan, @casesolved-co-uk, @mvanhorn, @N0zoM1z0.
-
Ghidra MIPS: Add bounded MIPS32r2/o32 relocatable objects, soft-float integer-register storage, admitted MIPS16 shared ELF, and a narrowly admitted recordless legacy MIPS32 executable profile. The latter pins an endian-matched 32-bit language and records inferred o32 as an analysis assumption. Admission follows each documented ABI/flag/relocation boundary. (#1949, issue morluto/rea#1937, #1950, issue morluto/rea#1938, #1991, issue morluto/rea#1851, #1898, issue morluto/rea#1620). Thanks @AurelioB, @BaaRai, @bqw371, @kaoru0822-kitauji, @N0zoM1z0.
-
Ghidra RISC-V: admit little-endian RV32/RV64
ET_EXECELF declaring the supported double-float ABI. Relocatable/shared, big-endian and other ABI profiles remain refused; see the profile and recorded lane. (#2151). Thanks @NIU-123370. -
PSP static ELF profile: the Ghidra profile is Linux x64, bounded little-endian ELF32
ET_EXECwith the documented PSP/ABI declarations and a compatible caller-installed Allegrex extension. PRX, shared/relocatable images, PBP/ISO/CSO and runtime emulation are outside scope. Historical extension experiments are separate from public-provider verification; real public Ghidra PSP coverage remains unverified. (#1599). Thanks @jaelliot. -
Ghidra analysis settings: apply validated analyzer overrides before analysis while retaining the selected analysis profile. (#1913). Thanks @akushonkamen, @kaoru0822-kitauji, @N0zoM1z0.
-
Attached native IDA MCP: add an optional native bridge alongside existing legacy/headless profiles. Recorded native runs use Linux IDA Free 9.4 with a navigation correction and Windows IDA Pro 9.3 with a loopback-listener change; stock native switching, native macOS and Windows IDA Free remain unverified. Attached databases remain read-only and are never saved or closed. (#1544). Thanks @imissapixel, @N0zoM1z0.
-
Frida instrumentation: add explicit local/remote target selection, caller-supplied scripts and retained messages, with script-read/input diagnostics and bounded message eviction. Recorded real coverage is the Linux local Node marker workflow; macOS, Windows and remote devices/servers remain unverified. Instrumentation executes foreign code and is destructive, not read-only. (#1359, #2211, issue morluto/rea#2209, #2217, issue morluto/rea#2213, #2628). Thanks @dandgabr, @kaoru0822-kitauji, @N0zoM1z0.
-
Client setup: register Qoder, Trae, ZCode, DeepSeek Harness, Kimi Code, Factory Droid and WorkBuddy through the existing scoped setup flow. DeepSeek is included from 6.5.0; the historical npm 6.4 check did not cover it. Live Trae and DeepSeek API integration remain unverified. (#1564, #1572, #1573, #1929, issue morluto/rea#1839, #2744, #2309, #3041, issue morluto/rea#3040). Thanks @0xRafie, @BaaRai, @cainiao1992, @IvenKooLab, @whoishaha, @ysntony.
-
Website: Add maintained language editions, persistent/system-aware themes, keyboard styling and nested Evidence indentation, plus the reverse-engineering models essay. A simpler home page and beginner journey connect platform prerequisites, client/provider setup and a supplied first investigation. (#1779, issue morluto/rea#1022, #1699, #1714, #1894, #2250, #2432, #2732, #3274). Thanks @CassieFox23, @kaoru0822-kitauji, @N0zoM1z0.
-
Rust dependency metadata: Inspect embedded cargo-auditable package/dependency records in ELF, PE and thin Mach-O without executing the file. Missing metadata and inferred compiler hashes retain explicit limitations; universal Mach-O requires a selected thin slice. (#2456). Thanks @mvanhorn.
-
Electron fuses: Read packaged fuse bytes and per-slice runtime implications without launching or modifying the app. Missing, truncated and unknown wires remain explicit; fuse observations do not prove other Inspector-enablement paths. (#2399). Thanks @kaoru0822-kitauji, @mvanhorn, @N0zoM1z0.
-
Ghidra PowerPC: Admit bounded ELF32 big-endian
ET_EXECPowerPC with an explicit language profile on supported Linux/macOS hosts. PPC64, DOL and other variants remain outside this lane; see the profile and verification prerequisites. (#1747). Thanks @arielfikru. -
Reference-source summaries: Use CLI
import-reference-source --detail summaryfor compact manifest, count, state and path-outline output. The complete graph remains available and is still the default; hidden outline entries retain separate coverage counts. (#2768, issue morluto/rea#2442). Thanks @matbrgz, @To3akaRin. -
Recorded AArch64 crashes: Decode 34 ABI register values per thread from supported Linux ELF64 little-endian core notes using the documented caller-provided Python dependencies. These are recorded facts, not proof of current process or library identity. (#2505, issue morluto/rea#2353). Thanks @matbrgz, @NIU-123370.
-
Ghidra byte search: Search initialized analyzed memory using wildcards, bit masks, address bounds and paged results. Unloaded, overlay and uninitialized blocks retain skipped coverage; this is not a raw-file search. (#2341). Thanks @mvanhorn.
-
Raw NMOS 6502 images: Analyze explicitly selected headerless images with Ghidra, including Windows P0, using a caller-selected entry and source mapping within the 16-bit address space. Cartridge parsing, reset-vector inference and 65C02/65816 are outside this profile. (#2079). Thanks @Zhong-fan.
-
Swift String observations: Ghidra function dossiers derive supported AArch64 Swift String literals from constant-register pairs at recognized use sites, retaining instruction/register provenance and explicit omissions. This is a bounded derivation, not a complete string inventory. (#2049, issue morluto/rea#2030). Thanks @thefolahan.
-
Headless IDA procedure lookup: Resolve addresses to canonical containing-procedure entries and identify the session’s admitted program document in the modern headless profile. Incomplete surveys remain errors; attached profiles do not advertise this containment capability. (#2374, issue morluto/rea#2335). Thanks @nikolay-dementiev.
-
Passive browser attachment: Six existing passive browser tools accept an explicit-port loopback browser WebSocket endpoint when HTTP target discovery is unavailable. Existing consent and target/origin checks remain required; this does not launch a browser or enable runtime instrumentation. (#2346). Thanks @all-black-493.
-
Android DEX references: Retain exact method descriptors and individual direct-invoke observations with source method, DEX entry, opcode and code-unit offset. These are static references; unavailable instruction facts remain separate from method-level usage totals. (#2439). Thanks @LcokHcak.
-
Offline EVM metadata: Retain bounded, lossless facts from plausible terminal Solidity CBOR root-map candidates. Candidates do not prove Solidity origin or source/compiler identity, and linked metadata is not fetched. (#2790). Thanks @matbrgz.
Fixes
-
JavaScript loader and export identity: Respect import/require conditions and unavailable package metadata, keep export links separate from writes, and resolve default identifier exports to the value captured at the export statement. (7e5cffa, 322506d, 81f7638, dae1e55). Thanks @paoValle, @VarunGore36, @xu91102.
-
JavaScript traces: Retain nested bridge calls and surviving early-return predicates. Honor node-ID match options, match route seeds against source values, and keep ambiguous runtime candidates unknown. (0351328, 5031099, 44c9d29, 5e79d46). Thanks @jpdefo.
-
Browser comparison coverage: Compare only known redirect response fields and retain network-selection recovery guidance alongside independent event changes. Missing response facts do not prove equality or a change. (2b60e09).
-
Evidence comparison and ledger input: Report display-only bundle differences as unchanged while retaining digests, and classify noncanonical bundle records as invalid caller input. (030c477, 3a34ad3).
-
Capture and admission cleanup: Keep deleted-file observations and original bytes when a parent becomes a file, preserve unrelated I/O failures during cancellation, and require explicit pre-launch proof before releasing an unknown LLDB target owner. LLDB failure controls used simulated boundaries. (e67c364, 2daeff4, 45b6a7f). Thanks @SII-YDD, @xu91102.
-
Client configuration: Validate MCP output-schema profiles before setup writes, ignore untrusted Gemini workspace settings before parsing them, and identify installed skills independently of marker-only client roots. (0930e94, aade9bb, ba33c70). Thanks @CmsChase, @paoValle, @sx4im.
-
Host tool discovery: Share macOS Hopper launcher discovery across setup and runtime, preserve explicit paths, and report validated ADB and Apktool availability. (7582f0d, e5deb83). Thanks @Chessing234, @kaoru0822-kitauji, @viniciusdsandrade.
-
SAZ encoding validation: Reject invalid XML bytes, unsupported encodings and declarations that contradict the archive bytes, including records outside the selected request. (1250aae).
-
Managed member matching: Keep malformed TypeDef list ownership unknown, distinguish constants during structural method matching, and accept legacy small exception-section sizes. (3f6b575, ee5cfbe).
-
Bounded diagnostics: Bound SDK validation messages and terminal normalization before allocation while retaining diagnostics and explicit unknown final output sizes. (7fb0a0c, 1d826f3). Thanks @CRYPTONIKAV.
-
Windows artifact classification: identify
.exe,.com,.batand.cmdartifacts as launchable host executables. (#1823, #1824, issue morluto/rea#1819). Thanks @dollarsmoney, @JasonBuildAI, @kaoru0822-kitauji. -
CLI/MCP delivery: defer command-specific startup work, bundle runtime entries, retain field/input correction details across output formats and preserve shared optional-provider lifetime. MCP selectors, paging continuation and retained partial-error references remain explicit; session liveness/provider-attribution corrections retain their controlled-provider verification limits. (#1691, issue morluto/rea#1685, #1705, issue morluto/rea#1695, #1755, issue morluto/rea#1746, #1773, issue morluto/rea#1771, #1780, #1814, #1910, issue morluto/rea#1849, #1996, #2140, issue morluto/rea#2135, #2205, issue morluto/rea#2195, #2230, issue morluto/rea#2180, #2294, #2482, a82d14e, a4dd4e8, 48c352b, 07b36c1, 570c40c, 8fc2043, 7fc0b5e). Thanks @369Apps, @chqcjq, @cold-atom, @coygeek, @JackOdegard, @kaoru0822-kitauji, @N0zoM1z0, @sx4im.
-
Evidence import/replay: import bundles across session transitions while authenticating selected target and file identities, preserve literal keys, metadata/mutation intent and relationship coverage, and honor cancellation before session mutation. Reuse authenticated snapshots and comparisons within their owned lifetime; reject malformed/non-object snapshots and unsupported metadata without disguising uncertainty. (#1694, #1716, issue morluto/rea#1680, #1721, issue morluto/rea#1718, #1733, issue morluto/rea#1723, issue morluto/rea#1724, #1776, #1873, #2001, #2013, issue morluto/rea#2009, #2083, #2303, #2685, issue morluto/rea#2675, c002b89, 9c85114, aada0ca, 4a4d36f, 1c64fe3, 6fb3a34, 3bcc68c, 6bae774, e997085, d1dcebc, b123b2e, 049132a, 042dcaa, acf75e6, 1f7f808, 26bffb9). Thanks @coygeek, @DeryFerd, @jiangjiang248, @kaoru0822-kitauji, @khanukov, @N0zoM1z0, @NIU-123370, @rohitg00, @sx4im.
-
Ghidra setup and analysis: preserve launcher/JVM diagnostics, Java-property and extension identity, stale-client recovery, UTF-8 bridge output and pending-startup progress. File-offset decompilation is Ghidra-specific; recorded coverage is Linux x64 with Ghidra 12.1.4. Startup/progress/compiler failure paths that use simulations remain unverified with a real engine. (#1698, #1877, #1931, #2011, issue morluto/rea#1992, #2014, #2101, issue morluto/rea#2078, #2206, issue morluto/rea#2204, 2187e16, b953f96). Thanks @EDMND-SRC, @Ha1baraA11, @kaoru0822-kitauji, @lovecontroing, @lyly-bonbon, @N0zoM1z0, @nosmile99, @Petru101, @sx4im, @Zhong-fan.
-
Process and cleanup ownership: retain private runtime/file owners and detailed incomplete-cleanup observations, bound trace cycles/order state, preserve caller paths, and use monotonic time for budgets while retaining wall dates. Windows affinity/admission (#2202, issue morluto/rea#2181) and Bun memory-enforcement paths retain their recorded native-versus-controlled-fixture limits; these fixes are not a general process-ownership guarantee. (#1700, issue morluto/rea#1697, #1730, #1756, issue morluto/rea#1753, #1760, issue morluto/rea#1757, #1826, #1907, issue morluto/rea#1856, #1999, issue morluto/rea#1993, #2232, issue morluto/rea#2170, #2252, issue morluto/rea#2218, #2467, issue morluto/rea#2257, #2468, #2488, 09b6828, 7285e15, b5ededd, d8c76b6, 98d8470, c22111e, cecc6ec, 10935b7, 63e796d, d9e9fb2, 9049dba, ed881c6). Thanks @Ashen00001, @charan-rathore, @coygeek, @EDMND-SRC, @JasonBuildAI, @jimpablo, @kaoru0822-kitauji, @N0zoM1z0, @NIU-123370, @Rinkia, @rudycelekli, @sx4im, @xeropresence, @XiaoBinGan, @xthunder0, @hzh666kevin-hue.
-
Native image identity: preserve universal Mach-O containers and selected slice/subtype identity, chained fixup locations and library ordinals, exact signing text, PE resource capacity and ELF/header framing. Mach-O summary selection and independent slice commands avoid unnecessary delivery/work. Controlled routing/parser fixtures do not establish every installed-provider path. (#1703, issue morluto/rea#1702, #1708, #1709, #1713, #1772, issue morluto/rea#1765, #1784, issue morluto/rea#1775, #1982, #1995, issue morluto/rea#1990, #2040, #2107, #2161, issue morluto/rea#2105, #2248, issue morluto/rea#2176, #2281, issue morluto/rea#2274, #2292, #2466, #2506, #2733, issue morluto/rea#2661, f598bab, 108b5f9, f1924cf, 8bd5ba2, b38429c, 8d4d631, ac57c88, dc038d1, 34a4bb6, ebc22d9, c02fb0e). Thanks @1NormalGuy, @Aliciawque, @baron, @coygeek, @dhl84, @hemanthrayuduu, @JasonBuildAI, @kaoru0822-kitauji, @N0zoM1z0, @thangldw, @viniciusdsandrade, @XiaoBinGan, @Zburgers.
-
Archive and artifact provenance: keep physical ZIP occurrence identity, exact signatures/names and partial inventory coverage; bound decompression and reject malformed keys/integers. Directory/ASAR/DMG reads retain ownership through cleanup and publication cancellation. Duplicate ZIP names remain explicitly ambiguous where the public projection cannot represent them; synthetic archive/cleanup cases do not prove every real Unblob or DMG failure path. (#1726, issue morluto/rea#1725, #1854, issue morluto/rea#1844, #1865, issue morluto/rea#1860, #2069, #2106, #2144, #2365, #2493, 918713a, eb97da3, 2260887, 74d7da6, ed485a3, 921bb95, d8ceb3f, 9435c7a, bb54082, a73a55f, 3c57e1a, ec0b081, e7882b3, b955b82). Thanks @1052326311, @1NormalGuy, @baron, @Bortlesboat, @Chaoqi31, @DeryFerd, @kaoru0822-kitauji, @N0zoM1z0, @XiaoBinGan.
-
Setup/uninstall recovery: preserve unrelated YAML text, caller-selected roots, symlinked data and existing recovery snapshots; explain malformed configuration shapes and retain failed rollback/cleanup owners. Show terminal dry-run plans and each selected skill location. Bunx registration and fault-injected recovery cases remain simulated rather than live-client verification. (#1731, #1754, #1821, issue morluto/rea#1816, #1983, #2118, issue morluto/rea#2111, #2154, issue morluto/rea#2152, #2157, #2182, issue morluto/rea#2159, #2481, bb50813, c240768, dcfc5d4, 21eff3b, 94153f1, 2397137, c339f9e, f6775a3). Thanks @BeqaKs, @Jax367, @kaoru0822-kitauji, @NIU-123370, @shoyann, @viniciusdsandrade, @xeropresence, @zaydiscold.
-
Bun updates: locate global installations before changing directories and reuse parsed client activation during maintenance. The update flow is covered with package-manager/filesystem simulations; a real Bun global installation update remains unverified. (#1735, e90acae, b045df1). Thanks @xeropresence.
-
JavaScript relationships: preserve loader-specific package/TypeScript/CommonJS boundaries, exact file-URL and source-map identity, Electron intrinsic receivers/IPC guards and chunk metadata. Index repeated lookups and retain completed facts through resource limits and cancellation. Real Electron integration, Bun worker integration and failure-path cleanup remain unverified where the recorded lanes use fixtures. (#1740, #1759, issue morluto/rea#1748, #1762, issue morluto/rea#1761, #1767, #1788, issue morluto/rea#1781, issue morluto/rea#1782, #1789, #1799, issue morluto/rea#1793, #1827, issue morluto/rea#1802, #1833, issue morluto/rea#1831, #1857, issue morluto/rea#1842, #1871, #1874, #1905, #1912, issue morluto/rea#1909, #1915, issue morluto/rea#1911, #1916, #1921, #1934, #1939, issue morluto/rea#1881, issue morluto/rea#1882, issue morluto/rea#1883, #1941, #2062, issue morluto/rea#2058, #2104, #2422, #2475, #2737, issue morluto/rea#2663, d3088c3, 1dfb933, f8513a4, b8fab74, 42b0ed1, c0904b4, 9f67e44, e4532b5, 1c37914, 5ab0cbb, b7169c8, f43fc02, 3ae826c, 1b95302, eaa9616, c923fb0, c7a890d). Thanks @Aurantium-47, @baron, @chqcjq, @coygeek, @cyanseek, @fengdwx, @flitzrrr, @immanuwell, @kaoru0822-kitauji, @N0zoM1z0, @Nelglor, @ranmori, @rudycelekli, @shoyann, @xu91102.
-
Browser observations: preserve effective source-map URLs, empty query/fragment identity, response-body provenance, service-worker policies and explicit uncertainty for malformed events. Bound discovery lifetimes and retain cleanup ownership. Interrupt/retry/failure cases validated with controlled CDP/session fixtures do not establish those paths in real Chromium. (#1742, issue morluto/rea#1729, #1829, #2074, #2099, #2239, issue morluto/rea#2169, #2477, 486b567, a82e37c, a8d4984, 966f7cc, 221c856, 951b095, f09bb8a, 6bd2b28). Thanks @1052326311, @chAng-L19, @chqcjq, @coygeek, @evenafterallisaid, @fisforfaheem, @itsF4LCON, @N0zoM1z0, @shayanxcyber.
-
Managed metadata/CIL: preserve ExportedType and pointer-table ownership, generic/array/function-pointer/modifier signatures, ReadyToRun host identity, metadata ExtraData and signed zero. Charge retained facts and decoded instruction counts instead of broad decoding bounds; malformed layouts remain caller input errors. (#1743, issue morluto/rea#1736, #1768, #1822, issue morluto/rea#1801, #1828, issue morluto/rea#1812, #1835, issue morluto/rea#1832, #1886, #1893, #1897, issue morluto/rea#1878, #1943, issue morluto/rea#1940, #1985, #2194, issue morluto/rea#2191, #2437, 52e76c5). Thanks @ac1982, @chqcjq, @fisHarly0, @flitzrrr, @JasonBuildAI, @JayOfTheKeyboard, @jhuang-tw, @kaoru0822-kitauji, @N0zoM1z0, @Nelglor.
-
Hopper failure ownership: preserve startup/process outcomes, retain cleanup leases across one-shot failures, wait for late bridges, and stop owned Linux demo children when their REA owner exits. Denied/crashed/late-bridge/queued-request failure paths use simulated process or bridge fixtures; they are not fresh installed-Hopper verification. (#1763, issue morluto/rea#1751, #1817, #1866, #1927, #2474, #2499, issue morluto/rea#2459). Thanks @coygeek, @Joshwong1908, @kaoru0822-kitauji, @N0zoM1z0, @rudycelekli.
-
IDA session boundaries: retain non-x86 call coverage and unresolved-procedure uncertainty, and bound private universal-Mach-O inputs to the exact selected slice. Transient headless busy recovery was exercised on macOS arm64 IDA Pro 9.1; Linux headless, attached GUI navigation and worker-reaped cleanup paths retain their documented verification gaps. (#1764, issue morluto/rea#1712, #1778, issue morluto/rea#1766, #1785, issue morluto/rea#1769, #1906, issue morluto/rea#1794, #2201, issue morluto/rea#2139, #2291, issue morluto/rea#2285, #2324, 12fa8fd). Thanks @akushonkamen, @coygeek, @kaoru0822-kitauji, @N0zoM1z0, @nikolay-dementiev, @zecaro.
-
Input and capability diagnostics: identify invalid paths, format refusals, missing host tools and non-retryable errors without losing caller selections or retryable capability facts. Foreign execution/device mutation annotations remain destructive, analysis-target text is untrusted, and output ordering follows code points rather than host locale. (#1770, #1867, #1869, issue morluto/rea#1855, #1872, #1879, issue morluto/rea#1853, #1899, #1902, #1904, #1908, #1925, #1987, issue morluto/rea#1979, #2004, issue morluto/rea#2002, #2026, #2091, #2133, issue morluto/rea#2129, #2145, issue morluto/rea#2143, #2472, #2478, issue morluto/rea#2454, #2494, #2507, #2509, #2708, 3d83135, c9fed50, 8b18171, 7a2cd1e). Thanks @astralyx0129, @CassieFox23, @DeryFerd, @dollarsmoney, @fisforfaheem, @flitzrrr, @Ha1baraA11, @jimpablo, @kaoru0822-kitauji, @larinyo, @N0zoM1z0, @rudycelekli, @SII-YDD, @viniciusdsandrade, @XiaoBinGan.
-
Android analysis: retain decoded values, duplicate-class inventories and executable static initializers, reject malformed JADX UTF-8, and keep inline search provenance. Apktool accepts
--no-stringsand explains host requirements. Windows batch-launcher selection also resolves PATH/PATHEXT before choosing its launch mode. Recorded Apktool coverage is Linux/OpenJDK, and changed JADX/batch failure paths do not establish native Windows behavior. (#1777, issue morluto/rea#1774, #1876, issue morluto/rea#1846, #1890, issue morluto/rea#1850, #1946, issue morluto/rea#1945, #2707, issue morluto/rea#2672, 0677468, fe8d0bd, #2802). Thanks @akushonkamen, @coygeek, @HeadmasterEggy, @kaoru0822-kitauji, @N0zoM1z0, @psipher. -
ADB acquisition: preserve device paths and directory identity, prevent host destination collisions/overwrites, count UTF-8 logcat bytes and restricted permissions, and evaluate the complete Activity Manager start report. Launch attempts, status, activity and raw failure output remain observations; real-device timeout/mixed-report and Android 8 directory-read paths remain unverified beyond the documented fixtures. (#1962, #2212, issue morluto/rea#2175, #2221, issue morluto/rea#2220, #2359, c42232f, 55b6148, 3bdc873, c89972c, e1cd292). Thanks @coygeek, @dakjdakd, @DeryFerd, @huiq777, @sx4im.
-
WASM names and diagnostics: preserve debug/custom-section names including NUL and leading BOM, accept unpadded WABT section rows, and avoid irrelevant tool-remediation advice on unrelated runtime-root failures. (#1963, issue morluto/rea#1956, #1967, #1981, #2084, #2102). Thanks @1052326311, @bugstan, @N0zoM1z0, @sathariels, @STiFLeR7, @viniciusdsandrade.
-
Source-map and path handling: retain source-map entries when embedded-content counts differ or an optional
sourceMappingURLis used, and keepfile:URLs out of operator-relative path resolution. (#2873, #2886, #2882, issue morluto/rea#2821, issue morluto/rea#2883, issue morluto/rea#2577). Thanks @JFSAS, @rileygramlich, @shoyann, @shubhamahuja9999, @coygeek. -
Native metadata: accept declared facts in native dispatch inventories and share native verification input diagnostics. (#2906, #2901, issue morluto/rea#2564, issue morluto/rea#2621). Thanks @ShitK, @coygeek.
⚠ BREAKING CHANGES
-
Runtime attachment state:
attachedmay benullin JavaScript, browser and Electron discovery/inspection results. Treat null as unknown; do not coerce it to false. (e55ef72). -
Source maps: original-source and mapping rows preserve a null source name when unavailable. Handle null explicitly instead of expecting an invented unknown-source string; new index fields remain optional when reading older Evidence. (ee50ed1).
-
Streamed filtered JSON:
--filter-outputnow emits JSONnullinstead of{}when the selected value is null; consumers must distinguish a present null from a missing selection. Use--full-outputwhen an object envelope is required. (#2333). Thanks @Jackmeson1. -
Call graphs:
get_call_graph.normalized_resultis now{ graph, limitations }; read traversal-depth groups undergraphand retain relationship-specific caveats. Contract/fixture validation does not establish new Ghidra or IDA engine coverage. (5dfb9d0). -
MCP discovery:
binary_sessionno longer repeatsserver_identity.catalog.tools. Use the connected server tool list, groupedtool_availabilityand provider capabilities; see MCP contracts. Origin: 6395e8d. (#1988). Thanks @kaoru0822-kitauji, @N0zoM1z0. -
Provider admission: MIPS targets with unresolved GNU ABI attributes are refused. Supply supported ABI declarations. Saved Hopper databases on macOS are unavailable because the launcher cannot run the analysis bridge when opening a database; select an executable target instead. Database support requires a script-capable database launch route. (d4bd65c).
-
Segment extents:
binary_overviewsegment length may be null when Hopper coordinates cannot establish a finite extent in one address space. Preserve unknown rather than converting it to zero or a saturated value. (36db19c). -
Invocation identity:
server.command_pathmay be null, and registration/setup statuses or doctor classifications may be unknown. Preserve these states and establish the actual invocation before treating a registration as aligned. (187f113). Thanks @hemv-857, @qorvr. -
ADB installation: the optional
replaceinput is unchanged. Results now requirereplace_requestedto record the requestedadb install -rmode;replacedis nullable because prior device package state was not observed. Update result readers to accept null instead of treating reinstall intent as proof of replacement. (864314a). -
Managed/native verification: unresolved P/Invoke results may retain
matched_nativeand candidate facts when module identity is unknown. Interpretstatus,basisandlimitations;module-identity-unknowndoes not verify correspondence, and unresolved no longer implies empty observations. (3f6b575).
Full contribution record: 893 commits and 529 merged PRs.
6.4.0 (2026-10-11)
Highlights
- Android: added device inspection, split-APK acquisition, logs, screenshots, file transfers and explicit app lifecycle actions through ADB, plus manifest and localized-string decoding with Apktool. (#1552, #1556) Thanks @3QL.
- JEB: browse project units and decompile selected items through a caller-started local JEB MCP server. (#1536) Thanks @3QL.
- Large analyses: discover retained Evidence without loading every payload, and inspect JavaScript graphs, binary layouts and function dossiers through summaries and selected views. (#1682, #1568, #1570, #1345, #1507, #1247) Thanks @jhuang-tw, @kaoru0822-kitauji, @N0zoM1z0.
- JavaScript: isolate source analysis in an owned process with configurable heap and timeout limits; retain completed facts and explicit unknowns when analysis runs out of resources. (#1651, #1563, #1565) Thanks @N0zoM1z0, @peter-research.
- Ghidra: configure import language/compiler specifications and seed functions, code and labels before auto-analysis. (#1667) Thanks @sqmagellan.
- RPC discovery: recognize supported tRPC calls, HTTP-link URLs and named GraphQL operations in JavaScript applications and web bundles. (#1670) Thanks @pompiliodonatoapp.
Changes
- Added Ghidra support for Windows PE DLLs and bounded MIPS ELF analysis, including carved MIPS inputs with incomplete section tables. Windows P0 remains read-only. (#1303, #1362, #1629, #1290, #718, #1619) Thanks @bqw371, @jaelliot, @kvalls, @N0zoM1z0.
- Enabled
set_address_nameandset_addresses_namesfor Ghidra sessions with mutation authority, including namespace-aware data labels and per-address batch results. (#1635, #1634) Thanks @giri256. - Recovered additional signed AArch64 relative jump-table patterns. (#1592) Thanks @RishTheFish21.
- Added PE resource inspection and read-only NativeAOT metadata parsing for supported x64 PE32+/.NET 8 RTR 9.1 inputs. The NativeAOT parser’s Windows-host Ghidra workflow remains unverified on a real Windows host. (#1482, 76d8f68, #1254) Thanks @N0zoM1z0, @thangldw.
- Added Pi, Hermes and Qwen Code setup, including Hermes active-profile support. (#1376, #1403, #1415, #1409) Thanks @rasatpetabit, @yiliang114, @zaydiscold.
- Added
REA_MCP_INPUT_SCHEMA_PROFILE=compactfor size-capped MCP clients such as Kimi/Moonshot, while retaining canonical runtime validation. (#1514, #1580, #1484, #1581) Thanks @haythemsellami, @N0zoM1z0. - Added live process-capture progress and optional
finalization_msto capture shutdown output before timeout escalation; cancellation remains immediate. (#1483, #1583, #1252, #1253, modelcontextprotocol/typescript-sdk#2997) Thanks @N0zoM1z0, @nikolay-dementiev, @sathariels. - Improved Codex onboarding and recovery from observed client, PATH and provider blockers. (#1613) Thanks @N0zoM1z0.
- Reduced redirected JSON and terminal output size, and deferred heavy imports until their commands need them. (#1413, #1450, #1439, 21dbcf7) Thanks @kaoru0822-kitauji.
Fixes
- Electron analysis: follow renamed and default-imported APIs and optional calls, ignore overwritten identities and media preload attributes, and resolve packaged
app.asarpages and unpacked companions. (#1391, #1393, #1400, #1664, #1673) Thanks @kaoru0822-kitauji, @marnixpluim, @N0zoM1z0, @suninrain086. - JavaScript data flow: preserve returned/yielded reference uncertainty, invalidate property-stored aliases correctly, and retain bundled-module runtime scope. (#1437, #1445, #1471, #1577, #1428, #1442, #1449, #1576) Thanks @CassieFox23, @dakjdakd, @N0zoM1z0.
- JavaScript packages: resolve exact exports subpaths, preserve trailing-slash directory requests and exact CommonJS keys, and respect shadowed
requirebindings. (#1424, #1615, 5485483, 8b2f851, f998fcb, 1e51c73, #1365) Thanks @akshitkhokhani, @AWUQAQ, @immanuwell, @rudycelekli. - Large JavaScript inputs: handle oversized inline source maps, deep returns and reassignment loops; avoid argument expansion limits and yield during large analysis passes. (#1386, #1368, #1390, #1539, #1525, #1542, #1545, #1557, #1380, #1401, #1538, #1462) Thanks @cold-atom, @KadirJeager, @kaoru0822-kitauji, @marnixpluim, @N0zoM1z0, @rudycelekli.
- JavaScript receivers: expand escaped methods once, index returned-object targets, and avoid replaying earlier writes or duplicating retained graph allocations. (#1517, #1537, #1444, #1601, #1495) Thanks @CassieFox23, @geekwolf, @kaoru0822-kitauji, @N0zoM1z0, @zeynelacikgoez.
- Browser captures: retain WebSocket URLs, empty connections and frame order; compare only common known payload coverage and preserve incomplete WebMCP replay coverage. (db4e360, aa257ea, e52c0a7)
- Browser scenarios: seed storage in the correct partition, normalize loopback attach identities, retain declared-secret redaction and require verified lineage before Windows Electron signals. (#1604, #1590, #1588, 8b4c3de, #1497, #1591, #1589) Thanks @Adolanium, @akushonkamen, @dakjdakd.
- Added Termux Android browser-scenario support. (#1655) Thanks @tyloryang.
- Web inputs: accept BOM-prefixed HAR, preserve the first duplicate DOM attribute and resolve SVG/XLink URLs in HTML and XHTML. (#1509, #1516, #1602, #1683, #1496, #1586) Thanks @CassieFox23, @kaoru0822-kitauji, @sathariels, @taljeri.
- Screenshot comparisons: validate PNG chunks, distinguish corruption from unsupported encodings and bound comparison memory. (4e4b15b, b3e977e) Thanks @rudycelekli.
- Archives: preserve case-distinct names, report collisions at their diverging segment, detect nested formats from bytes and reject Windows alternate-stream extraction paths. (#1480, #1505, #1553, 573598c, #1470, #1491) Thanks @CassieFox23, @kaoru0822-kitauji.
- Cleanup: retain failed readers, ASAR handles, output trees and provider workers for retry without discarding completed output or partial observations. (ffe0574, de0d341, 3f8c51e, d1235fa, 026126e)
- Providers: canonicalize IDA workspace roots before identity checks, respect IDA cancellation, serialize JEB acquisition and correct Ghidra no-return/imported-symbol recovery. (#1481, #1419, 5f30ea6, f88c990, 49e6f00) Thanks @AS9929, @JonahSimon, @Y0UW1SH.
- Binary metadata: respect PE/.NET section extents, bound binary-plist expansion, scope keyed-archive traversal and decode app
Info.plistfiles withoutplutil. (#1678, #1515, #1378, #1476, 975dff2, 76296c5) Thanks @jayhemnani9910, @kaoru0822-kitauji, @rudycelekli. - Windows runtimes: preserve drive-root paths when creating private provider directories. (ee46323)
- Compatibility: load Windows native controls under Node-API hosts with renamed executables, preserve dylib directory requirements, support Wakaru 1.x and reject directory-valued Hopper launchers. (#1531, #1623, #1540, #1426) Thanks @evenafterallisaid, @Fazmin, @pionxzh, @xeropresence.
- Reference imports: normalize internal symlink lookup consistently, preserve exact paths and exclusion provenance, report root access failures and reject FIFO replacements without blocking. (#1535, 2ca3ad2, 6636045, 3967cfa, f1c58cc) Thanks @anujsingh-cse.
- Setup: honor active configuration and skill roots, preserve configured MCP environments, validate Hermes/OMP profiles before writing, recognize Omarchy and retain recovery backups. (#1504, #1607, #1528, #1562, #1662, a011485, #1606, #1521, #1561) Thanks @Adkid-Zephyr, @CassieFox23, @LuisTaffelli, @N0zoM1z0, @peter-research.
- Process capture: retain descendant lineage after launcher exit, preserve identity uncertainty before signaling and release terminals after observation failures. (80896a1, c916850) Thanks @Y0UW1SH.
- CLI/MCP errors: accept JSON files for web comparisons, preserve native option help and union correction details, remove invalid aliases and validate doctor against its discovered output contract. (#1397, #1395, #1425, #1461, 8b4c96e, #1421, #1454) Thanks @Fazmin, @kaoru0822-kitauji, @N0zoM1z0.
⚠ BREAKING CHANGES
- WebSocket results: use
network.websocket_connectionsinstead ofnetwork.websocket_events. Connections containrequest_id,urlandevents; allowpayload_bytes: nullwhen size is unknown. No legacy alias remains. (db4e360) - Direct resource APIs: pass a caller-owned
ArtifactResourceScopeto inventory/extraction, JavaScript analysis, reference imports and web exports; retain it through cleanup/shutdown. ForreadJavaScriptArtifactFiles, scope is argument three and abort signal is argument four. Keep each root inventory source’s single cleanup owner. UseOwnedFileHandleowners, injected ASARfd/readhandles instead ofcreateReadStream, VCSResultvalues, andWebScriptExportError’s options object. CLI/MCP inputs for the scoped operations are unchanged. (ffe0574, 53e7fad, 684199b, be75ed5, be6272f, e0e49e9, 95a77b6) - Saved reference graphs: exclusions require their matching
patternand distinguishproject-ignoredfromdefault-ignored. Re-import graphs missing that provenance. (6585293) - Terminal captures: keep initial and resized buffers within 1,000,000 cells using
columns × (rows + scrollback); oversized scenarios are rejected before launch. (f9ea9a9) - Optional agent-verification reports: accept schema version 4, nullable
expectedFirstToolandtargetClarificationPassed. Production CLI/MCP contracts are unchanged. (#1613) - Capture comparisons: recapture both sides with matching
literal-replacements-v1semantics when custom normalization patterns are used. Legacy unversioned pattern captures remain readable but cannot be compared with new pattern captures; captures without patterns are unaffected. (#1456, 2b6f14f) Thanks @Madhavan006, @N0zoM1z0. - Artifact graph edges: read child artifact IDs and paths from the occurrence selected by
occurrence_id, not edge fieldschild_artifact_id/logical_path. Earlier inventory Evidence no longer validates against the new commitment. (#1493) Thanks @kaoru0822-kitauji. - Semantic graph schema: nodes and relations no longer include
identifier_strategy, and relation IDs no longer hash it. Earlier Evidence no longer validates against this schema. (#1474) Thanks @kaoru0822-kitauji. - Semantic identities: select IDs from the parent graph; read exact event names from
event_name, endpoints fromendpointand literal values fromproperties.value. New analyses use digest-based IDs for long/reserved event and endpoint names andvalue-sha256literal role keys, with shorter labels; string literal labels now readstring literal. Previously stored graphs retain their original IDs and remain valid workflow inputs. (#1427, #1423, #1407) Thanks @N0zoM1z0.
Contributors
- Thanks also to @BaaRai, @commit-regrets, @coygeek, @Franky100-pig, @inii-sayaa, @jopemachine, @JosephDemarest, @keemsisi, @Totopo27 for contributions included in this release.
Full contribution record: 336 commits and 163 merged PRs.
6.3.0 (2026-10-09)
⚠ BREAKING CHANGES
- captures: Historical captures without current producer accounting or transaction identity, and web diffs missing accessibility or storage dimensions, are rejected. Preserve original captures and recapture with the current producer; update comparison consumers to include every dimension rather than synthesizing missing observations. See the process capture guide and browser scenario contract. (3283a45)
- browser: JSON shape paths now contain typed property and array-element segments. WebMCP input_schema_shape is replaced by input_schema and input_schema_sha256, retaining declared examples and defaults.
- process: Filesystem digest omission entries now require system_code; budget and changed-file omissions use null, and unavailable-file omissions preserve the operating-system error code.
- contracts: Provider analysis outputs must explicitly supply metadata previously repaired with defaults; unsupported nullable facets must be reported as null.
- javascript: Semantic graph facts now store evidence context IDs and locations. Graph and semantic trace results require an inline evidence_contexts table.
- contracts: source-map URLs now live in target observations selected by declared_url_sha256, and doctor skill identity no longer emits installed_catalog_digest. Use the documented observation join and identity.skill.state instead.
- javascript: remove the never-incremented truncated_scopes statistic from JavaScript application analysis results and schemas.
- native: Objective-C attribute tokens now contain only name and value. Properties report nullable atomicity and readonly facts; class flags, ivar counts, and method requirement flags are nullable when unobserved.
Features
- setup: register OMP during setup (#1301) (8b4c359)
- javascript: record Electron integrity mismatches (7915ee5)
Bug Fixes
- inspector: retain observations after capture failures (dea3498)
- artifacts: bind ASAR interpretation to owned snapshots (d79317c)
- artifacts: infer legacy Mach-O simulator platforms (5aa2002)
- artifacts: preserve archive facts and Unicode path identity (5751f5c)
- artifacts: reject incomplete inventoried extraction (5e8fb53)
- artifacts: retain DMG ownership through uncertain attachment (a27794c)
- artifacts: validate only active extraction entries (cfb12e4)
- browser: follow only HTTP redirect statuses for source maps (82bbe74)
- browser: preserve payload shapes and WebMCP declarations (4951a89)
- browser: release attached viewport overrides without resizing the external page (f6cfbfc)
- browser: retain attached scenario emulation until cleanup (a0523b3)
- browser: retain malformed redirect diagnostics (617cd84)
- browser: serialize attached scenarios through cleanup settlement (cfce91d)
- ci: scope verification and reuse native runners (#1344) (d5cb8ae)
- cli: avoid duplicate primary cleanup diagnostics (37fcea7)
- cli: classify JSON input permission denials (08daf05)
- cli: classify oversized JSON inputs (f7cf4c8)
- cli: stream JSON inputs beyond the whole-document string limit (#1360) (6ce3288), closes #1331
- cli: stream JSON results at the shared command boundary (810107a)
- contracts: advertise NUL with a portable hex escape (3f59a84), closes #1329
- contracts: require observed provider output metadata (a4ba8ae)
- electron: preserve unrepresentable numeric option evidence (41a228c)
- evidence: order canonical projections independently of locale (614fb76)
- files: reject nonregular capture and JSON inputs (5f16124)
- filesystem: reject unstable artifact targets (7829b1a)
- ghidra: reject a native decompiler built for another host (#1280) (3728c82), closes #1192
- ghidra: retain process ownership after failed launch rollback (07675f7)
- ghidra: verify dense jump tables on an optimized fixture (#1374) (73a664b)
- hopper: allow restart after verified owned-provider shutdown (1c12349)
- hopper: probe interior navigation from multi-byte instructions (#1285) (bf934d5)
- ida: compare admitted document paths consistently (890bb66)
- javascript: avoid positive-zero evidence for signed zero (9055bd6)
- javascript: decline source-map UNC references with an unusable host (#1372) (f504c2a)
- javascript: distinguish prefix-only builtins from packages (2b4abbf)
- javascript: honor module-sync package exports (#1361) (d0e6069)
- javascript: parse declaration artifacts in ambient mode (4896adc)
- javascript: preserve agreeing module provenance (db171be)
- javascript: preserve capture-time guards and ordering (001851f)
- javascript: preserve semantic evidence through satisfies (e995b19)
- javascript: preserve uncertainty after references escape to calls (#1292) (355a292)
- javascript: reject invalid package exports configurations (7a4f268)
- javascript: resolve exported callables through lexical bindings (#1351) (a9f5dad)
- javascript: resolve query-only HTML references to their document (55a46f7)
- javascript: retain array identity after length mutations (4bcea1a)
- javascript: retain conditional mutation ordering uncertainty (b8a8190)
- javascript: retain distinct module provenance path components (2bd7de6)
- javascript: retain unresolved value frontiers in provenance queries (3e19875)
- javascript: store source map URLs once (ed8fcae)
- json: preserve runtime limits across JSON file readers (#1350) (9c4a68b)
- managed: bind graph facts to their source Evidence (cc7b5af)
- mcp: admit composed analysis through result bookkeeping (e11f4d3)
- mcp: advertise object roots for union input schemas (#1373) (39dabd0)
- mcp: advertise primitive semantic literal seeds (f62b449)
- mcp: preserve JavaScript workflow identity validation (#1366) (53ed942), closes #1364 #1065
- mcp: retry failed shutdown resources and retain failure reasons (e64678e)
- native: distinguish symbol definitions from metadata (70bad53)
- native: preserve unknown Objective-C metadata (b112d44)
- native: refuse to list architectures of non-Mach-O targets (#1325) (1b73b5a)
- native: retain LLDB cleanup ownership through client close (7ad353f)
- process: keep unobserved file contents unknown (#1358) (f91f279)
- process: retain per-file digest open failures (415145d)
- reference: report malformed UTF-8 before import parsing (f166a2a)
- report malformed application evidence as input errors (218c131)
- retain completed observations when later analysis steps fail (35f121f)
- setup: install the skill for Claude Code (b4a1919)
- setup: recognize supported Nobara hosts (f0dc233)
- skill: pin packaged commands to the shipping package version (2793672)
- skill: pin packaged commands to the shipping package version (#1346) (f39e71c)
- snapshot: preserve complete investigation revision histories (#1354) (1c0cc8a)
- targets: cancel resolution before provider admission (f3c4a33)
- update: preserve disabled client registrations (abf5e24)
Performance Improvements
- javascript: index version relationships once per comparison (#1347) (b1e85ad)
- javascript: validate the version change graph once (#1370) (037709a)
- json: encode streamed JSON iteratively (#1322) (56598be)
Code Refactoring
- use canonical implementations and types directly (765e809)
- artifacts: remove unused root classifier (5291bca)
- artifacts: test inventory changes at materialization boundary (750fb65)
- browser: open scenario sessions without a factory wrapper (d1983a4)
- catalog: import CLI metadata from its owner (8c96baa)
- consolidate boundary semantics and prune redundant tests (392f1f3)
- javascript: normalize erased expression syntax once (b628bba)
- javascript: parse runtime evidence into one verified owner (006b295)
- javascript: remove obsolete scope truncation statistic (449d570)
- javascript: share Babel child traversal (0f10499)
- javascript: share semantic evidence at fact construction (e3bbb9a)
- process: remove duplicate observation and trace entry points (070339a)
- providers: use canonical artifact and managed identities (87f0051)
- reference: simplify malformed UTF-8 handling (377df71)
- remove obsolete source exclusions and identity wrapper (44c92f8)
- remove single-use forwarding helpers (4144e45)
Documentation
- keep license sections text-only (e10f1f0)
- align translated README artwork and layout (ccfbe87)
- add README artwork and refine closing sections (4b8e744)
- add repository-local REA tool design skill (7738c1f)
- celebrate 40,000 GitHub stars 🎉 (3edb217)
- celebrate 40,000 GitHub stars 🎉 (5ecc98a)
- consolidate agent guidance around ownership and boundaries (ba44222)
- contracts: explain canonical URL and skill metadata ownership (e36afa1)
- correct MCP error and capture import guidance (077d6c4)
- correct README setup and runtime guidance (5b3715e)
- explain CI scope and native runner reuse (#1348) (6c9161d)
- prune repeated contributor and tool design instructions (5d79387)
- remove retired architecture and migration artifacts (7a0c800)
Tests
- share the client registration command to restore the jscpd gate (#1317) (5d16be2)
- mcp: remove arbitrary schema inventory thresholds (24673aa)
- android: allow provider readiness under load (961c3c3)
- artifacts: verify extraction races with real filesystem changes (1ac8389)
- browser: avoid duplicating source-map listener setup (9367dc1)
- browser: report redirect status cases independently (5a61562)
- cli: remove duplicate malformed JSON assertion (5d32e42)
- exercise source test selection through Git and Vitest (25711ad)
- filesystem: bound FIFO regressions at consumers (0bfb6e0)
- ghidra: allow rollback tests to reach spawned process (d761d73)
- javascript: share primitive expansion producer fixtures (c867bcd)
- javascript: share semantic graph test facts (ac356c4)
- javascript: verify distinct module origins through reconstruction (96b2b24)
- json: remove assertions covered by CLI output consumers (a959a83)
- managed: include shared dossier fixture in artifact inputs (66a20a2)
- native: retain trace diagnostics when observed hits differ (048b798)
- package: share validated native dossier fixtures (ca90109)
- process: publish capture readiness atomically (74be526)
- process: report cleanup details on cancellation failures (79d5b9a)
- process: use owned CLI and workspace fixtures (4940a86)
- share snapshot replay and managed graph fixtures (d83cbd2)
Continuous Integration
- enforce architecture guards with portable checkout paths (ecc67ca)
6.2.0 (2026-10-09)
⚠ BREAKING CHANGES
Read the 6.1 to 6.2 migration guide before upgrading. REA's always-bump-minor policy includes breaking changes; 6.2 is not a backward-compatibility promise. Preserve original saved files and regenerate missing observations rather than fabricating identities or facts.
- MCP / Evidence / snapshots / artifacts: Success results are direct canonical Evidence; read
normalized_resultrather than the oldresult/evidencewrapper. Evidence requires nullableanalysis_profile, session provider aliases are removed, snapshots require complete profile-bound query records, and artifact roles/permissions belong to occurrences. Recreate incompatible saved data; adding fields without recomputing their semantic identity is invalid. (63bf914) - Process captures: Legacy v3 conversion is removed. Explicit executable identity and
event_journalare required; retain old captures and recapture when current comparisons are needed instead of inventing launch identity or event order. (2a77469) - Cleanup and evaluation: A one-shot analysis reports cleanup failure while preserving the completed observation or primary diagnostic. Handle
cleanup_incompleteand retained observations/resources. Configured agent-evaluation fixtures require Evidence-backed correctness, not routing or answer wording alone. (#1211, 27a9cea) - JavaScript: Return-field projections require explicit presence; export-shape changes carry both sides' presence and property inventory coverage. Semantic object operations retain complete
property_pathsegments. Regenerate old analysis and distinguish unknown values from unknown presence. (475a0f8) - Function comparisons: Remove the unreachable
truncateddimension state andsummary.truncatedcounter; update enum and display consumers while retaining explicitunknownfacts. (5510b27) - Historical sources: Unreadable/unknown symlink targets require
target: null; external targets retain the observed absolute target. Reimport graphs containing display placeholders such as<outside-root>and handle nullable targets. (b7b4333)
Features
- javascript: report observed export property presence (#1160) (45e3edc)
- mcp: select views of retained analysis results (#1180) (db675f1)
- website: add an Aegis APK code-generation showcase (0270dd5)
- website: add an Android showcase and clearer project prompts (6cc817e)
- website: add beginner examples and synchronized publishing (0fec65d)
- website: add beginner examples and synchronized publishing (#1203) (0fec65d)
- website: add Discord link beside GitHub badge (cc39fc5)
- website: add homepage navigation and faster reading paths (863674b)
- website: add homepage navigation and faster reading paths (c94f06d)
- website: add homepage navigation and faster reading paths (#1213) (863674b)
- website: add search metadata and automatic sitemap (99f257b)
- website: add search metadata and automatic sitemap (b8851cb), closes #1283
- website: clarify reverse engineering and showcase goals (e750c26)
- website: explain REA through a first investigation (5160d9b)
- website: explain REA with Calculator and a playable dinosaur lab (11b9f03)
- website: lead with the playable dinosaur example (19c52f5)
- website: show manual analysis beside a one-prompt workflow (291bc6f)
Bug Fixes
-
dev: accept formatter-ignored staged documentation without failing the commit hook; malformed JSON remains rejected. (bd2db2f)
-
release: publish reviewed release-PR merges from their exact reviewed source. (c12bad7)
-
android: support owned JADX stdio on Windows (#1276) (636b245), closes #1262
-
android: validate engine archive prerequisites (#1145) (e9ebfb9)
-
apple: report unusable dylib-resolution roots as invalid input (6a1e558)
-
apple: report unusable dylib-resolution roots as invalid input (24a30fd)
-
artifacts: keep cancellation and the caller path in extraction refusals (37025cc)
-
artifacts: keep cancellation and the caller path in extraction refusals (eacf846)
-
artifacts: match lipo arm64e variant names to their FAT slices (de5bfec)
-
artifacts: match lipo arm64e variant names to their FAT slices (0b32577), closes #1168
-
artifacts: name only host-available workflows for non-archive plists (f4c99ab)
-
artifacts: name only host-available workflows for non-archive plists (2295855)
-
artifacts: recheck failed DMG detaches before reporting cleanup failure (#1155) (58a91f0)
-
artifacts: refuse unsupported extraction formats before scanning (8e74c9c)
-
artifacts: report encrypted archive entries as unsupported extraction (de43da7)
-
artifacts: report non-archive keyed-archive selections as unsupported targets (fef38e4)
-
artifacts: report non-archive keyed-archive selections as unsupported targets (8c5088c)
-
artifacts: report wrong target kinds as unsupported targets (b34bdcd)
-
artifacts: report wrong target kinds as unsupported targets (637bcb5)
-
browser: classify export-web-scripts capture selection failures by cause (ddaa183)
-
browser: classify export-web-scripts capture selection failures by cause (8c5e34c)
-
browser: report Windows HAR heap exhaustion (#1147) (1393507)
-
browser: retain scenario observations across failures (614e0c2)
-
browser: retain scenario resources until cleanup succeeds (88640f6)
-
ci: pass selected environment to Windows Ghidra fixture (#1281) (f085589)
-
cli: advertise defaulted inputs as optional in --schema and help (#1175) (b4927a0), closes #1169
-
cli: cancel routed JavaScript analysis in rea analyze (#1156) (089bbf5)
-
cli: complete cleanup after relayed interrupts (#1202) (911152a)
-
cli: list the read failure cause for an unreadable JSON input file (db0afce)
-
cli: list the read failure cause for an unreadable JSON input file (6020df5)
-
cli: resolve xrefs symbol selectors after address validation (#1209) (7e9c911)
-
config: name the rejected setting and its constraint in configuration errors (c3acc34)
-
config: name the rejected setting and its constraint in configuration errors (0a0244d), closes #1184
-
doctor: find the Homebrew Hopper cask without writing Homebrew caches (98b07d0)
-
doctor: find the Homebrew Hopper cask without writing Homebrew caches (a503376), closes #1165
-
domain: report target read-permission denials as access_denied (f36c10f)
-
domain: report target read-permission denials as access_denied (d0ff57a), closes #1188
-
electron: resolve effective preload after option overrides (#1286) (411498d)
-
emit v-mode-compatible patterns for tool schemas (#1220) (f0da05f)
-
errors: report caller-selected evidence path failures as invalid input (d4a598e)
-
errors: report caller-selected evidence path failures as invalid input (db177c9)
-
evidence: cancel exports before atomic publication (16624f1)
-
ghidra: classify modern Swift manglings in swift type analysis (#1208) (6935dc7)
-
ghidra: do not run Java from a relative JAVA_HOME in doctor and setup (04a516b)
-
ghidra: do not run Java from a relative JAVA_HOME in doctor and setup (c3f1698)
-
ghidra: keep and name a runtime directory that close could not remove (5b769d3)
-
ghidra: keep and name a runtime directory that close could not remove (b79d379), closes #1190
-
ghidra: keep the NativeAOT target refusal's own recovery advice (f198993)
-
ghidra: preserve decoded return flow evidence (b189c3c)
-
ghidra: preserve decoded return flow evidence (bcc8a77)
-
ghidra: reject relative installation and Java paths in doctor and setup (8998438)
-
ghidra: reject relative installation and Java paths in doctor and setup (5356856), closes #1183
-
ghidra: report NativeAOT host and target refusals as unsupported, not failures (cfb49eb)
-
ghidra: report NativeAOT host and target refusals as unsupported, not failures (42c276a), closes #1185
-
ghidra: resolve secondary symbols at function entries (#1195) (6fbdbd6)
-
ghidra: stop dereferencing the removed error payload in address verification (b80bd2d)
-
ghidra: stop dereferencing the removed error payload in address verification (59fbaa2)
-
ghidra: use dot-free private session paths (c3fc6c3)
-
hopper: keep the OS error when the FAT64 source cannot be reopened (9f5dc52)
-
hopper: reserve Linux demo application before launch (#1158) (33d5ae0)
-
javascript: allow cancellation during semantic graph commitment (#1218) (9405bd6)
-
javascript: classify application input selection failures by cause (fe5291e)
-
javascript: classify application input selection failures by cause (0a14bbb)
-
javascript: keep Wakaru version stderr out of the refusal message (6489d58)
-
javascript: match source-map originals that name parent directories (#1215) (889fb37)
-
javascript: omit self-referential static references with disclosure (#1157) (b620e2a)
-
javascript: preserve alias and container uncertainty (73e98b2)
-
javascript: preserve graphs with async chunk self-references (#1152) (7220166)
-
javascript: preserve property paths and uncertain slot presence (475a0f8)
-
javascript: reject encoded separators joined by HTML URL whitespace (2ddd945)
-
javascript: reject encoded separators joined by HTML URL whitespace (fb57c86)
-
javascript: report located sources with differing digests as modified (#1216) (01174c4)
-
javascript: resolve HTML script URLs after URL whitespace and percent decoding (d601b80)
-
javascript: resolve HTML script URLs after URL whitespace and percent decoding (502528c), closes #1236
-
javascript: resolve package exports targets only to the exact file (#1181) (2a620c0), closes #1174
-
keep the Ghidra session root free of dot-prefixed path elements (a8b8288)
-
managed: preserve literal library names during native matching (81b70bc)
-
managed: separate metadata and signature completeness (2f02eff)
-
mcp: advertise input patterns without look-around (1f099a6)
-
mcp: advertise input patterns without look-around (a8701ea), closes #1282
-
mcp: deliver tool errors within advertised schema contracts (da606ff), closes #1261
-
mcp: deliver typed errors without invalid structured output (#1277) (7e96f25)
-
mcp: measure tool errors against their text-only delivery (fe34ec2)
-
mcp: measure tool errors against their text-only delivery (7b51121)
-
mcp: only recommend exporting retained evidence (5f749c2)
-
name host and tool requirements in optional adapter refusals (68cb02f)
-
name host and tool requirements in optional adapter refusals (170d0bf)
-
native: distinguish batch selectors from resolved entries (13c3b68)
-
native: distinguish batch selectors from resolved entries (bfaa5a6)
-
native: name the CLI flag that selects another plist (9b69503)
-
native: name the plist selection that works when Info.plist is missing (5612496)
-
native: name the plist selection that works when Info.plist is missing (a6fdf42)
-
native: refuse truncated executable headers at target admission (d39a450)
-
native: refuse truncated executable headers at target admission (0b04d38), closes #1189
-
process: apply one timeout rule to both execFileOutput modes (3d32819)
-
process: await cleanup on CLI and MCP cancellation (f6fe575)
-
process: keep ports before a chunk-final period (184ed97)
-
process: localize capture truncation diagnostics (#1284) (33bf585)
-
process: normalize ports that end a sentence (098d769)
-
process: normalize ports that end a sentence (db98a51)
-
process: preserve numeric output and original PTY evidence (c5c75c3)
-
process: preserve numeric output and original PTY evidence (00d8e44)
-
process: preserve unknown filesystem absence in partial captures (c8544b1)
-
process: refuse malformed timeouts for stoppable commands (136d4aa)
-
process: refuse malformed timeouts for stoppable commands (59c91c8)
-
process: require current captures and preserve cleanup failures (2a77469)
-
process: retain known events from incomplete captures (5eb0049)
-
process: stop cancelled Swift helper builds before removing their files (cf41561)
-
process: stop cancelled Swift helper builds before removing their files (c717204), closes #1173
-
process: stop timed-out commands with the caller's stop signal (4b38d18)
-
process: stop timed-out commands with the caller's stop signal (063de50)
-
process: treat non-ASCII letters as port continuations (ad813e4)
-
process: validate terminal byte totals against retained frames (69833fb)
-
process: validate terminal byte totals against retained frames (39eb058)
-
providers: preserve observations and primary cleanup failures (0696bde)
-
reference: represent unreadable symlink targets explicitly (b7b4333)
-
restore caching, preserve failures, and verify fixture claims (#1211) (27a9cea)
-
server: report 2025-era client identity and features in binary_session (e6abaef)
-
server: report 2025-era client identity and features in binary_session (b8312fa), closes #1167
-
session: require an open target for session-bound native and artifact tools (d8e314c)
-
session: require an open target for session-bound native and artifact tools (cf77d07), closes #1166
-
session: retain failed provider cleanup for lifecycle retries (#1260) (24a3aa0)
-
setup: keep Codex TOML comments when adding or removing REA (f5539cf)
-
setup: keep Codex TOML comments when adding or removing REA (e9c48a6), closes #1163
-
setup: preserve initial backups and Codex comments (#1204) (6051cb2)
-
setup: stop remaining uninstall removals after a client fails (fd975c7)
-
setup: stop uninstall before removals when a client config is unsafe (4fb2f3e)
-
setup: stop uninstall before removals when a client config is unsafe (5cc841d), closes #1164
-
snapshot: report query workflow and Evidence counts separately (04aef6d)
-
snapshot: report query workflow and Evidence counts separately (0e77953)
-
website: clarify Android host and JDK requirements (5691606)
-
website: identify publication verifier requests (e6905c1)
-
windows: retain runtime authority after cleanup failure (af7a439)
-
windows: retain unsettled jobs for cleanup retry (76b214e)
Performance Improvements
-
mcp: share repeated output schema definitions. (441813c)
-
hopper: resolve string search records once per query (#1229) (9426c3f)
-
mcp: reuse input schemas without losing caller guidance (#1162) (e1afbc1)
-
snapshot: avoid redundant result copies and serialization (552634d)
-
snapshot: avoid redundant result copies and serialization (569d2bc)
Code Refactoring
- domain: remove obsolete comparison representations (5510b27)
- enforce canonical evidence and provider boundaries (63bf914)
- remove forwarding exports and redundant aliases (ad59531)
- schemas: share portable identifier and base64 patterns (#1227) (954badb)
Documentation
- add French README translation (84094af)
- add French README translation (9664b2b)
- celebrate 30,000 GitHub stars 🎉 (6987cb0)
- celebrate 30,000 GitHub stars 🎉 (beca997)
- clarify REA has no affiliated cryptocurrency or token (#1214) (c2d8146)
- explain 6.2 contract and saved-data migration (#1304) (c267e99)
- ghidra: explain supported heap and CPU controls (#1278) (0c6852b), closes #1255
- keep the 30k milestone in Star History (#1217) (c399670)
- require focused brittleness cleanup and executable examples (d6832c3)
- thank feature request contributors (9db1fd0)
- website: continue the Calculator example with reconstruction (4578647)
- website: continue the Calculator example with reconstruction (18a1e8c)
- website: explain SEO maintenance and indexing follow-up (bb8ff2c)
- website: introduce the worked homepage examples (f6f5c16)
- website: invite deeper projects and reader feedback (3fb9ffa)
Tests
- apple: verify compiled Mach-O root occurrence facts (#1300) (4bb4c6f)
- artifacts: assert asset-catalog target refusal only on macOS (44d5b4b)
- artifacts: pin per-occurrence roles for direct Mach-O roots and shared bytes (701d90a)
- artifacts: pin per-occurrence roles for direct Mach-O roots and shared bytes (b9e29c5), closes #1234 #1235
- artifacts: read /bin/ls slice layout from its FAT table (#1223) (c89b3a0)
- artifacts: verify compiled Mach-O roles and permissions (4bb4c6f)
- consolidate redundant assertions into boundary workflows (b71a591)
- ghidra: preserve selected verification resource limits (1c3766a)
- ghidra: size oversized annotations for canonical delivery (1e34197)
- ghidra: use host-native absolute session root fixtures (1e83d27)
- javascript: expect the invalid input_path code in the streamed CLI failure test (d186ca7)
- mcp: read bundle failures from public error content (69c3b32)
- mcp: read typed errors in canonical Evidence regressions (fd46cff)
- mcp: validate public error diagnostics in acceptance workflows (09058eb)
- native: assert batch identity in production registration (933fcb3)
- native: build the .app fixture executable with a complete Mach-O header (facaae8)
- process: check malformed capture choices concurrently (6020a0b)
- process: check malformed capture choices concurrently (48de11c)
- remove duplicate workflow examples and self assertions (d6d1cd2)
Continuous Integration
- website: allow explicitly requested Pages-only publication (796b65e)
- website: allow explicitly requested Pages-only publication (864160d)
- website: allow explicitly requested Pages-only publication (#1205) (796b65e)
- website: publish Cloudflare and Pages from one artifact (761881c)
6.1.0 (2026-10-09)
⚠ BREAKING CHANGES
- hopper: Hopper regex mode uses ECMAScript Unicode syntax instead of Python re. Matching runs in a cancellable worker with a five-second deadline; literal mode keeps Unicode casefold matching.
- hopper: remove set_current_document. Use open_binary to switch targets; document arguments are scoped to the active target.
Features
- clients: register Grok Build and Grok Bot during setup (#1134) (08561e0)
- ghidra: make the startup deadline configurable (#974) (d84bc8f)
- website: add GitHub link with live star count (2f59287)
Bug Fixes
- analysis: bind overview document identity to the active target (#1094) (81b5104)
- analysis: resolve procedure identities and preserve literal queries (d830cb7)
- android: report actual provider readiness (c715af8)
- android: report startup and selector failure causes (6c13fc8)
- apple: account for repeated archive projections (e1df5e8)
- apple: budget Interface Builder decoding and projection (dbcf8c3)
- apple: classify empty dyld settings by consumer semantics (#1110) (fe297e5)
- apple: decode bundle plist bytes before executable lookup (d575a73)
- apple: decode Interface Builder XML byte encodings (#1095) (f8e143a)
- apple: derive dispatch coverage from located decode facts (488f448)
- apple: keep skipped catalog entries from reading as absence (a079af2)
- apple: report apps without asset catalogs as empty inventories (e2f0378)
- apple: report apps without asset catalogs as empty inventories (79e5a39)
- apple: report missing keyed archive hierarchy references (#1104) (3b2ec69)
- apple: validate dylib candidates and preserve search uncertainty (#1100) (7914e36)
- apple: validate physical slices and dylib platform compatibility (15f92f2)
- application: budget bridge candidate projection by bytes (3d450a2)
- artifacts: preserve keyed archive integer precision (4034883)
- artifacts: report keyed-archive selection mistakes as invalid input (5a55d5b)
- artifacts: report keyed-archive selection mistakes as invalid input (25fb6d3)
- artifacts: retain failed DMG cleanup state and diagnostics (#1103) (4bb056b)
- browser: advertise zero-based units for runtime source coordinates (#1085) (6218d28)
- browser: bind correlated replies to their selected session (96d3caf)
- browser: bound aggregate source-map decoding before expansion (f983c71)
- browser: bound script metadata and preserve omissions (faf209e)
- browser: bound source-map fetches and retain predecessor requests (eaf5734)
- browser: compose nested source-map column offsets (#1109) (8b08ec0)
- browser: keep initiator callsites out of script coordinate guidance (#1096) (3c157b4)
- browser: normalize selected script manifest roots on Windows (#1078) (b49beb4)
- browser: preserve captures when response bodies are unavailable (96af2fa)
- browser: preserve command failures and reject malformed replies (6b92002)
- browser: treat module-import initiator positions as script positions (ae0630a)
- browser: treat module-import initiator positions as script positions (99d31ee)
- browser: validate and bound source-map evidence (0a0174b)
- build: exclude the test-only generated catalog from packages (#1116) (d1c904b)
- build: make catalogs and packaged skills generated outputs (#1086) (e613405)
- capture: retain Electron observations and HAR resource failures (44fd183)
- ci: align diagnostic regressions and format merged changes (67756da)
- ci: restore generated shard inputs and cleanup assertions (5f93b4b)
- cli: accept exact native names through explicit selectors (c313606)
- cli: drive mcp doctor help from a single option schema (b7d803d)
- cli: preserve blank JSON paths for input validation (#1068) (3dcb732)
- cli: preserve web cancellation exit status (1d9b96a)
- cli: support MCP doctor help (a69b833)
- contracts: preserve local inputs and comparison uncertainty (70e8a8f)
- docs: validate translated links to canonical product facts (34f7c4f)
- domain: order canonical paths by code point, not UTF-16 unit (#1034) (b5c2954)
- domain: preserve prototype-named JSON members through Evidence boundaries (#1049) (40e18b2)
- domain: reject excessive JSON depth with actionable diagnostics (#1029) (bfbfc73)
- electron: bound hook retention and report dropped coverage (02d0702)
- evidence: name the failed constraint when a bundle is rejected (82a1a52)
- evidence: name the failed constraint when a bundle is rejected (cf96ceb)
- evidence: report missing evidence files instead of permission advice (e8b92a4)
- evidence: report missing evidence files instead of permission advice (89252f1)
- evidence: require a complete record before the single-record hint (38bbb65)
- firmware: reject malformed UTF-8 producer reports (4a45c14)
- ghidra: admit Linux arm64 with matching native tools (3e598b2)
- ghidra: harden location resolution and provider lifecycle (1f5be75)
- ghidra: make qualified function renames idempotent (4458128)
- ghidra: parse long procedure selectors without recursion (480b16b)
- ghidra: preserve function references and snapshot boundaries (84a17d5)
- ghidra: preserve POSIX runtime paths with spaces (80c3d36)
- ghidra: preserve source failures and snapshot ownership (704fa76)
- ghidra: preserve Unicode boundaries without breaking sessions (bef234d)
- ghidra: recover regex stack exhaustion without losing annotations (bc4aa46)
- ghidra: reject address truncation before reads and edits (dcae3c6)
- ghidra: resolve exact external function entries (549effa)
- hopper: bind analysis to the active target and correct boundary contracts (2f71375)
- hopper: bind file mappings to verified source bytes (82626c4)
- hopper: diagnose MCP provider failures with stage, state, and request context (#1044) (5a67c7f)
- hopper: enforce caller-supplied request deadlines (#1119) (e8939ca)
- hopper: isolate regex matching from the native API thread (f201b04)
- hopper: load verified FAT64 slices with native Mach-O semantics (0a49d5b)
- hopper: normalize native block endpoints and retain terminal evidence (2847311)
- hopper: preserve launcher evidence on readiness timeout (458771c)
- hopper: preserve native navigation and annotation semantics (f2e22e1)
- hopper: preserve owned basic-block endpoint instructions (#1118) (329cf20)
- hopper: preserve partial native call and string evidence (2461702)
- hopper: preserve typed string values and verify real searches (7d7b3f9)
- hopper: report launcher failures before bridge timeout (#1105) (cd756b0)
- hopper: resolve FAT loaders and original file coordinates (35f1ddd)
- hopper: validate annotation destinations and symbol extents (b2d5bc1)
- hopper: verify lease cleanup and repair the macOS test lane (#1111) (b743bd2)
- inspector: bound retained metadata and preserve cancellation (e714fb0)
- install: guard empty prefix_args expansion on macOS Bash 3.2 under set -u (#1061) (68b9fa4)
- javascript: bound primitive string growth and repeated evaluation (4a1837d)
- javascript: bound semantic expansion and resolve lexical receivers (16f4609)
- javascript: classify direct defaults and argv elements (6495171)
- javascript: honor cancellation before evidence publication (#1098) (cc0ee2e)
- javascript: omit self-referential import edges with disclosure (#1130) (1d7115b)
- javascript: parse plain TypeScript artifact dialects (#1102) (3db4681)
- javascript: preserve HTML carriage return source ranges (#1092) (23862af)
- javascript: preserve lexical open and exact template semantics (d6cc9ca)
- javascript: preserve original BOM source coordinates (#1093) (83defc0)
- javascript: retain NodeNext artifact source facts (#1087) (c1b370c)
- javascript: use Node legacy package entry fields (1706005)
- managed: bind inspection evidence to artifact identity (73b09f4)
- managed: match exact method bytes without decoded signatures (17809ca)
- mcp: flatten root union input schemas (#1062) (6a7650e)
- mcp: preserve retained evidence on oversized delivery (0639a54)
- mcp: retain complete application results across response limits (a1ed423)
- mcp: retain oversized errors before transport delivery (b3f1b4e)
- metadata: stop schema changes churning generated skill evidence (#1075) (d52f66d)
- native: bind signature observations to registered target versions (#1099) (c789af0)
- native: bound retained observations and preserve failure evidence (7c32387)
- native: preserve bridge failure types during cleanup (1d0baa3)
- native: resample tool identity for each invocation (14b19a0)
- native: share command supervision and retain failure output (f2e9c49)
- native: supervise LLDB and preserve bounded capture uncertainty (915855e)
- process: avoid cold ownership helper deadline exhaustion (#1139) (65a809a)
- process: derive executable names from the capture host (#1108) (34cc925)
- process: identify unknown live processes in cleanup diagnostics (eb89a16)
- process: name the reason two captures cannot be compared (#1080) (eb69763)
- process: preserve observations after successful cleanup (2af12a1)
- process: retain ownership after incomplete cleanup (e2fc249)
- process: stabilize native capture and ownership prerequisites (2b27515)
- process: stop failing captures on tokens macOS cannot expose (#1057) (5547c1e)
- providers: validate ELF versions and preserve probe cancellation (8b01e0c)
- release: always bump minor for releases (be783ef)
- release: publish prereleases under the next npm tag (bfb7776)
- release: publish reviewed release PR merges (cdddfdd)
- release: recognize conventional titles in GitHub merge commits (f5009ed)
- release: restore automatic release proposals on main (acb3e0f)
- release: validate frozen checkpoint versions and breaking notes (8a31508)
- release: validate frozen checkpoint versions and breaking notes (60825fb), closes #1063
- select Node legacy package entry fields for import and require (#1035) (1706005)
- session: serialize snapshot lifecycle with admitted requests (e44cb45)
- setup: launch Windows npx registrations through cmd.exe (#1072) (ef30343)
- setup: treat empty client config files as new documents (#1117) (9fd65ce)
- snapshot: retain MCP workflow replay bindings (5e1afe4)
- target: preserve app bundle filesystem failure reasons (d4c2c3c)
- update: accept npm 12 release metadata (#1138) (567a82f)
- verify: close both sides of the browser proxy (f7366a5)
- verify: isolate package archives and published canary caches (3eb7dbd)
- verify: remove stale mocked bridge package probe (826583d)
- verify: report final success only after resource cleanup (ee043e2)
- workflows: keep caller-input details in workflow input errors (#1089) (289aef6)
- workflows: retain residual unknowns through CLI and MCP (0136ee8)
Performance Improvements
- mcp: advertise each tool JSON Schema once per target (#1059) (5ccb924)
- build: avoid duplicate documentation generation (c701376)
- javascript: index configuration and module lookups (67252b2)
- javascript: reuse validated immutable graphs (#1112) (ec6db0f)
Code Refactoring
- artifacts: centralize stable inventory identities (135d102)
- browser: charge source-map records before retention (e762e32)
- config: prune unused format wrappers and launcher export (81ae838)
- input: share schema issue error construction (65a6288)
- setup: validate formats through canonical configuration (4b10665)
Documentation
- add Persian README translation with full language navigation (7a7460f)
- add ten README translations and expand language navigation (a61491a)
- align translated READMEs and website links with English (d83f098)
- celebrate 20,000 GitHub stars 🎉 (#1079) (9455e7c)
- check surrounding cases when changing boundaries (46d195e)
- clarify contribution scope and cosmetic suggestions (1f79002)
- clarify evidence ownership and verification guidance (a9e00b8)
- move Portuguese toward the end of language navigation (2a4979b)
- move star milestone into history sections across readmes (6e6ff7b)
- require partial native facts at provider boundaries (2b86ea9)
- require surrounding boundary checks for review fixes (9833c94)
- testing: prioritize real workflows and distinct regressions (9588482)
- website: add a CTF showcase and FAQ (#1077) (a4d77f0)
Tests
- acceptance: add application workflow MCP parity harness and scenarios (5ac3dc9)
- artifacts: retire simulated mounts after detach failures (f591e37)
- artifacts: verify native directory identity on supported Windows runtimes (#1069) (e94be95)
- browser: pin DOM and source-map URL policy classifications (#1120) (c1d0002)
- browser: reject unmodeled CDP commands in protocol fixtures (017297c)
- classify application scenarios by their actual boundaries (0e0b386)
- cli: verify self-import parity and cleanup (55c9ce2)
- consolidate failure guards and trim unused fixture APIs (ffd9611)
- hopper: cover real boundary failures and CLI parity (64717ad)
- hopper: verify real boundaries and prune redundant happy paths (7005166)
- mcp: serialize real process capture and report unavailable authority (8f9da25)
- process: cover argv rewrites in native ownership inspection (09d7b9b)
- process: distinguish native startup from producer verification (9a70fb4)
- process: expose unavailable capture and unexpected teardown failures (90b06db)
- process: report the cause of terminal capture failures (8a4c4b6)
- process: retain cancellation checks under unverified host cleanup (9a5b077)
- process: retire native caches at worker teardown (a0784c0)
- process: serialize real CLI capture boundaries (82560eb)
- prune redundant cases and promote configuration lifecycle coverage (5945915)
- prune resource-recovery wording assertions (ae06dcf)
- remove duplicate result assertions before throwing guards (a1b7d40)
- session: preserve live binding after cancelled switches (1136ea8)
- setup: scope removal regression to its fixture client (fe48e77)
- workflows: verify residual questions in CLI snapshots (770d2f6)
Continuous Integration
6.0.0 (2026-10-08)
⚠ BREAKING CHANGES
- contracts: MCP filesystem inputs now require absolute host paths, including target/snapshot paths, evidence bundle paths, managed and firmware inputs, browser/Electron launch paths and expected server paths. Calls such as
open_binary({"path":"./app"})must send an absolute path such as/home/analyst/apporC:\analysis\app. Optional paths remain optional. CLI operator-relative paths continue to work. See #948 and #1004.
Features
- artifacts: trace Mach-O dylib resolution in bundles (78d594c)
- browser: inspect historical web network captures (#992) (2bf3663)
- evm: inspect offline bytecode interfaces through EVMole (#1051) (7af7bc8)
- ghidra: support native x86 PE applications on Windows (#1030) (c6dad93)
- native: inspect offline ELF layout through pwntools (#1037) (4fc6565)
- native: inspect recorded crashes through pwntools and pwndbg (#1054) (163ee09)
- native: observe function and Objective-C method calls under LLDB (1d13cef)
Bug Fixes
-
dotnet: validate managed metadata and CIL boundaries (#938) (bda4ada)
-
build: clarify generated-file check hint and drop redundant catalog step (#998) (6f0ef16)
-
release: extend npm propagation window and improve diagnostics (#943) (06b047a)
-
contracts: require absolute local paths for session filesystem inputs (#948) (5b172b1)
-
ci: generate source catalog before shard tests (#1002) (eb8f649)
-
contracts: require absolute local paths for remaining caller-supplied file inputs (#1004) (cbc0dd1)
-
release: publish from explicit source checkpoints (#1003) (64c7188)
-
release: publish from explicit source checkpoints (#1006) (b4fc0ec)
-
javascript: bound semantic node projection for resource safety (#966) (96a46ad)
-
ci: avoid slow Azure archive for the native cross compiler (#1016) (51956c1)
-
ci: decouple stdio smoke tests from Linux display probes (#1014) (93731e1)
-
javascript: complete large-ASAR analysis with file-local projection (#1055) (b9fb438)
-
javascript: recognize digits in artifact URI schemes (#1045) (03424ae)
-
javascript: reconstruct HTML script loads accurately (#1042) (1154f2f)
-
javascript: report application analysis progress on the CLI (#1008) (7b18c58)
-
javascript: resolve module URLs and reject invalid exports targets (#1031) (8d5c88f)
-
javascript: resolve root package exports arrays (#1046) (53409ab)
-
mcp: advertise JSON values without recursive schemas (#995) (7425f70), closes #919
-
mcp: bound capture comparison input schema depth (#1005) (6b55de0)
-
process: preserve partial evidence and verify detached cleanup (#1011) (63cf28f)
-
release: support built-in credentials and refresh release boundary (6a278a6)
-
release: support default credentials and record 5.0.0 boundary (#1012) (6a278a6)
-
release: sync 5.0.0 checkpoint back to main (966cca8)
-
snapshot: replay validated workflow evidence (#984) (1d62e54)
-
windows: allow Java to read retained target snapshots (#1027) (28d5c39)
Performance Improvements
- artifacts: replace quadratic ZIP overlap checks (#1013) (76e7e51)
- javascript: cache canonical export comparison sort keys (#1028) (63ba742)
Code Refactoring
-
build: generate MCP tool catalog at build time instead of committing it (#997) (35a4e18)
-
process: separate capture implementation from analyst workflows (#988) (6aa9afb)
-
artifacts: move inventory and extraction into provider owners (#1032) (6e4535c)
-
remove abandoned test-only analysis scaffolding (c93422a)
Documentation
- improve Korean wording and particles (#1047) (c5d165b)
- simplify the English README and organize guides (#1043) (28f10cf)
Tests
-
process: wait for observable snapshot ctime changes (#999) (161ed91)
-
browser: consolidate CDP workflows and colocate parser coverage (2682904)
-
ci: stabilize browser source identity fixture delivery (#1023) (ed725da)
-
cli: reduce repeated startup and filesystem setup (d88d6c1)
-
consolidate service and process fixtures (f8a53a8)
-
javascript: consolidate source analysis and export regressions (f517a5a)
-
javascript: cover plain long-line loader identities (#1025) (984fc27)
-
mcp: consolidate SDK schema checks and scenario ports (9c3479e)
-
providers: verify framing through client socket boundaries (1fd1989)
-
prune redundant conformance checks and document test priorities (aafdf8a)
5.0.0 (2026-10-07)
⚠ BREAKING CHANGES
- native: preserve incomplete native UI captures (#991)
- android: Android analysis now requires a full JDK 17 or newer with its compiler module for the packaged Java source bridge.
Features
- apple: project macOS bundle anatomy in application graphs (88c940b)
- apple: project macOS bundle anatomy in application graphs (dd3e7ae)
- application: wire Android and Apple inventory graph tools (#852) (e0fd820)
- browser: attribute native execution and listener sources (#917) (b5afa5f)
- browser: capture correlated network content and lifecycle evidence (#797) (f9eaf05)
- browser: trace captured website module imports (#879) (01be082)
- browser: trace captured website source-map locations (#897) (f430c41)
- javascript: recover readable modules with Wakaru (#848) (166dcd2)
- native: decode chained fixups, binds, ObjC categories and properties (a657557)
- native: decode chained fixups, binds, ObjC categories and properties (3e24a72)
- native: open iOS-style and iOS-on-Mac wrapper app bundles (2ed89e6)
- native: open iOS-style and iOS-on-Mac wrapper app bundles (aeebba3)
- web: export captured scripts for JavaScript application analysis (#801) (472b72a)
- website: add a shared back-to-top link (5047373)
- website: introduce REA and the DX-Ball reconstruction (#906) (4e3953c)
Bug Fixes
- address review nits from batch integration follow-ups (#818) (5a0e0ba)
- android: align runtime suffix inference (#977) (fb3749a)
- android: bound fragmented JADX MCP frame memory (#937) (9e39795)
- android: preserve JVM settings and reuse metadata sessions (#908) (eab34a9)
- apple: attribute only application-root components in macOS inventories (5524970)
- apple: count only real framework version directories (2e81e86)
- apple: pair bridge hypotheses within one application root (7acf4e7)
- apple: pair bridge hypotheses within one application root (9226ade)
- apple: traverse keyed archive hierarchy collections (#976) (71ac83f)
- artifacts: accept APFS image disks ejected with their container (d93ebec)
- artifacts: accept APFS image disks ejected with their container (b72c079)
- artifacts: accept the bundle subject when extracting an app bundle (#891) (37d2eba)
- artifacts: decode flat keyed-archive NIBs with data and shared references (b3f013f)
- artifacts: decode flat keyed-archive NIBs with data and shared references (2a4667b)
- artifacts: harden reader lifecycle boundaries (#951) (2366bda)
- artifacts: keep the post-snapshot detach check out of provenance (62634e4)
- artifacts: preserve reader failure diagnostics (#987) (fc4a9a0)
- artifacts: project compiled AppKit actions from the control to its target (b08228d)
- artifacts: project compiled AppKit actions from the control to its target (#905) (900d7c8)
- artifacts: project UIKit runtime outlet and event connections (aa8082e)
- artifacts: project UIKit runtime outlet and event connections (8b24387)
- artifacts: read AppKit connectors from flat keyed-archive NIBs (#900) (27c272b)
- artifacts: read keyed archive dictionaries keyed UID as dictionaries (cfd2b0c)
- artifacts: read keyed archive dictionaries keyed UID as dictionaries (35c82b9)
- artifacts: report which path constraint failed (#847) (3f1a77f)
- browser: distinguish computed call keys from identifiers (#808) (02beb74)
- browser: distinguish WebMCP registration frame owners (#813) (b3b44d8)
- browser: fingerprint cookies at the selected page URL (#763) (78014e3)
- browser: identify NodeNext TypeScript original source artifacts (#811) (e84ad86)
- browser: preserve evidence through deep AST analysis (#924) (f826aa8)
- browser: preserve form destinations and satisfies mutation uncertainty (#825) (6dd719e), closes #820
- browser: preserve Link header value delimiters (#805) (dd36405)
- build: validate installed dependencies before cache hits (#982) (a45fe86)
- capture IndexedDB object-store record fingerprints (#809) (21a8bd0)
- cli: align structured output guard with native flags (#777) (e9fac56)
- cli: emit empty structured filter projections (#914) (2db668f)
- cli: honor the selected native plist path (#773) (0374865)
- cli: preserve output and comparison input validation (#981) (d5c43d6)
- cli: preserve unsupported historical-source imports (#795) (911d580)
- contracts: align CLI/MCP boundary contracts (#946) (4a60738)
- deps: remediate smol-toml advisories (93091ab)
- deps: remediate smol-toml advisories (c55ae3b)
- dotnet: compare members with undecoded signatures by exact identity (28fd49f)
- dotnet: compare members with undecoded signatures by exact identity (d52af3b)
- dotnet: inspect native boundaries of non-managed and malformed PEs (d5f28fb)
- dotnet: inspect native boundaries of non-managed and malformed PEs (d98dcfa)
- dotnet: keep a decoded member unknown beside an undecoded counterpart (76b7020)
- dotnet: keep admitted CLI header facts when metadata is unreadable (e5ba693)
- dotnet: name the shared key in exact-signature ambiguities (7714e76)
- dotnet: treat ambiguous undecoded members as possible counterparts (73370e1)
- errors: report union input issues at the union's path (bddeb63)
- evaluation: canonicalize Unicode argument keys (#980) (0a4caf4)
- firmware: accept the verified Binwalk and Unblob release lines (#844) (bef4321)
- firmware: retain multi-file extraction failures (#978) (8aaf9a1)
- ghidra: admit the 12.1 line and the install's JDK range (#840) (5cbf06c)
- ghidra: select exact packaged bridge scripts (#800) (894c30e)
- ida: share concurrent session cleanup (#950) (f14b6a8)
- installer: validate exact semantic versions (#954) (248972f)
- integrate 24 reviewed browser/native/semantics corrections (#815) (3af3811)
- javascript: advertise the exact empty seed rule and match empty API keys (35e5508)
- javascript: analyze source maps with empty source names (58ef8ac)
- javascript: analyze sources containing empty string literals (e7cbfe0)
- javascript: analyze sources containing empty string literals (11fc3b9)
- javascript: filter keyed-collection receivers only for get/delete (00f707b)
- javascript: handle deep AST traversal and addition without stack overflow (#915) (62b3711)
- javascript: handle deep static member paths (#939) (348c65c)
- javascript: keep bare relative URLs for computed-method XHR (e32028d)
- javascript: keep computed-method XHR request URLs (602d002)
- javascript: keep exact empty env keys and method names (522c2d0)
- javascript: keep exact empty env keys and method names (f7954a8), closes #783
- javascript: keep exact empty require paths and request fields (ad1f6b5), closes #783
- javascript: keep exact empty values in graph identities (f608127)
- javascript: keep exact empty values in graph identities (63012ee)
- javascript: keep keyed-collection reads out of endpoints (9075ce7)
- javascript: keep keyed-collection reads out of endpoints (eb68761)
- javascript: keep literal HTTP methods on storage-named receivers (9f48a76)
- javascript: keep literal-method and URL-literal requests on aliased receivers (e3e7664)
- javascript: keep mutated object initializer values unknown (#752) (6caa38a)
- javascript: keep storage open versions out of XHR endpoints (4f51103)
- javascript: keep storage open versions out of XHR endpoints (898b0f6)
- javascript: keep XHR and client endpoints that receiver spellings hid (05f43ed)
- javascript: leave empty application values unlabeled (527b76e)
- javascript: match exact empty literal channels and seeds (e20da1f)
- javascript: never read window or document open as XHR (ae849a7)
- javascript: preserve computed Electron member uncertainty (3a4a63f)
- javascript: preserve computed Electron member uncertainty (1260cac)
- javascript: project decoded file URL paths (#810) (2572e1e)
- javascript: read open() endpoints only from XHR method/URL pairs (63e0822)
- javascript: read open() endpoints only from XHR method/URL pairs (1be3705)
- javascript: read substitution-free templates as exact strings (c371d6e)
- javascript: read substitution-free templates as exact strings (77cf757)
- javascript: resolve bare source-map and worker URLs next to the script (#890) (45fcd28)
- javascript: retain recovered call argument positions (#929) (e6ba9c3)
- linux: improve Hopper reliability and CachyOS support (#963) (98b2b02)
- mcp: advertise reserved process environment key (#949) (e0d76ae)
- mcp: isolate optional observation adapter failures (#838) (be3cfbf)
- mcp: preserve exact guided prompt context (#761) (66c26f2)
- native-ui: handle incomplete accessibility child collections (#944) (ac3bae3)
- native: inspect plists containing data, dates, and non-finite reals (bc2cd8b)
- native: inspect plists containing data, dates, and non-finite reals (5ead2cf)
- native: keep echoed codesign paths out of signature fields (#865) (4aa2b60)
- native: keep echoed Mach-O paths out of load commands and symbols (ab985c6)
- native: keep echoed Mach-O paths out of load commands and symbols (37fe105)
- native: keep integral plist reals beyond the JSON range as reals (#860) (3b92a2b)
- native: keep plist XML element types for large numbers (f85056d)
- native: keep the resolved bundle plist and permission failures (418a556)
- native: pass Swift symbols to swift-demangle as operands (dd90965)
- native: pass Swift symbols to swift-demangle as operands (6c88094)
- native: preserve incomplete native UI captures (#991) (9f496ef)
- native: report exact plist integers beyond the JSON number range (c9f49db)
- native: report exact plist integers beyond the JSON number range (430c297)
- native: report plist permission denials as access failures (5738a0c)
- native: report why a selected plist cannot be inspected (14f9b3d)
- native: report why a selected plist cannot be inspected (0674fac)
- plist: keep character references beyond Unicode literal (5afd8a8)
- plist: read XML plists containing a proto key (faaee69)
- plist: read XML plists containing a proto key (a08be51)
- plist: report omitted proto entries in signatures and Interface Builder (15ab5db)
- plist: report omitted proto entries in signatures and Interface Builder (6729ee7)
- preserve native UI failure reasons and dedupe version literals (#854) (2d4a910)
- process: clarify Windows capture support and recovery (#798) (50787b2)
- process: harden filesystem snapshot identity and cancellation (#956) (93aa9eb)
- process: retain provider output until streams close (#928) (b929251)
- reference: retain partial imports for unreadable directories (#766) (cffc548)
- release: drive checkpoint releases from frozen branches (fc58fa1)
- release: publish from explicit source checkpoints (49887f0)
- semantics: isolate named function expression bindings (#776) (ae81f64)
- semantics: preserve direct promise ownership boundaries (#758) (e1ca412)
- semantics: preserve empty string property keys (#764) (630bdaf)
- semantics: recognize Node builtin default namespaces (#769) (24a0bf9)
- semantics: retain trailing rest argument flows (#756) (4bfd803)
- setup: accept the pinned Hopper RPM launcher (#933) (dda8e6a)
- setup: read an OpenCode V2 server named type as a table entry (#866) (4e17be5)
- setup: register OpenCode V2 configurations in mcp.servers (957069d)
- setup: register OpenCode V2 configurations in mcp.servers (69d8afe)
- target: decode app Info.plist executables with an XML parser (c57f1b7)
- target: decode app Info.plist executables with an XML parser (c182f72)
- test: disconnect Hopper fixture IPC on SIGTERM (b912b11)
- windows: accept ordinary drive path separators (#791) (b62931f)
- windows: remove cancelled snapshot outputs (#957) (d76f7d1)
Performance Improvements
- artifacts: stream ASAR members without full buffering (#962) (abd7a5e)
- call-path: prune dead ends and enumerate without recursion (#909) (e52fe97)
- cli: defer catalog digests and use canonical cache scope (9a15525)
- cli: defer unused catalog work during command startup (#920) (9a15525)
- comparison: reuse canonical sort keys (#990) (ebb065e)
- dotnet: index declaring-type ranges once per metadata table (#918) (7a9f587)
- dotnet: index ordered declaring-type ranges once per table (7a9f587)
- evidence: scale imports and dependency graphs (#941) (7dc40d3)
- inspector: bound runtime script location authorization (#945) (58381ee)
- javascript: analyze member chains without recursive copying (#932) (dcde958)
- javascript: index Promise return-site ownership (#971) (2cedde9)
- javascript: index semantic fingerprint relations (#942) (c92a344)
- javascript: reduce analysis and source-map work (#955) (c7530f9)
- providers: assemble fragmented responses once per line (#911) (df7151b)
- reconstruction: index coverage evaluation (#983) (f26c8b5)
- setup: reuse initial diagnostics during planning (#940) (118d43e)
Code Refactoring
- add incremental capability migration safeguards (#819) (75f50d8)
- android: group layered source and verification (#873) (8e8921d)
- apple: group artifact producers and verification (#952) (ef1a0cc)
- artifacts: isolate JavaScript file acquisition (#916) (f0a68dc)
- binary: group session selection and snapshot ownership (#886) (dd114d3)
- binary: move production composition outside application workflows (#965) (33d4761)
- browser: align inspector exclusions with canonical vocabulary (#834) (de9593a)
- cli: split core analysis command registrar (#858) (8b9940a)
- colocate investigation record implementation (#867) (bb19c94)
- compose investigation record ownership (#845) (ce73c3f)
- declare auxiliary capabilities from source (#853) (4a6c17c)
- domain: consolidate property-key extraction behind semanticStaticPropertyKey (#823) (764ff05)
- domain: converge comparison mechanics on shared vocabulary (#824) (c13c9d4)
- domain: extract artifact path syntax helpers (#830) (ef535b8)
- domain: extract source-map envelope walk and disambiguate stringValue (#828) (64ebdf4)
- domain: map validation taxonomies and add inventory Result seam (#833) (78f4848)
- domain: split Interface Builder keyed-archive parse from graph builder (#859) (da09706)
- firmware: group layered source and verification (#878) (507e8b3)
- ghidra: extract createClient and load-image attestation (#856) (b7df5b7)
- give Inspector its own capability directory (#869) (021ba69)
- javascript: group application workflows and verification (#896) (0804722)
- javascript: group domain semantics and contracts (#907) (f6a58f1)
- managed: group capability workflows and verification (#926) (28713f9)
- native: group analyst semantics workflows and contracts (#973) (ea4db4c)
- native: split Apple dispatch metadata decode facets (#855) (676959e)
- provider: declare deep capabilities from source (#892) (b808e2d)
- share Android and firmware provider factories (#826) (3ed59b2)
Documentation
- add concise lawful-use disclaimer (#888) (4037c65)
- add DX-Ball reconstruction showcase (#876) (895079d)
- add prominent website and showcase links to READMEs (2ccc86c)
- add README star history chart (#850) (11f27de)
- add website and showcase links to READMEs (#930) (2ccc86c)
- apple: describe directory-based framework plist ambiguity (6d74992)
- audit and improve localized readmes translations and wording (00a6ac3)
- clarify NativeAOT scope and regenerate conformance ledger (c945931)
- fix stale IDA roadmap item, mermaid paths, toolchain wording (d2aed17)
- move quick start up and mark skill install optional (554e9b1)
- note Cloud Agent Node.js toolchain (#837) (6aa6350)
- publish VitePress documentation on GitHub Pages (c78fe69)
- separate ambiguous and unavailable provider recovery (c3f2b8e)
- show task-scoped readiness and provider preference in the quick start (880cca1)
- show task-scoped readiness and provider preference in the quick start (5fd0db3), closes #726
- update release boundary to npm 4.1.0 with Windows native bundle (69be514)
- website: add Notion case study and improve onboarding (a6ba772)
- website: add TH04 bullet-ring case study (f8d84da)
- website: add worked guides and keep Pages publishing manual (#925) (4f25ee3)
- website: clarify guides and case studies (5065fcd)
Tests
- artifacts: report compiled connector records when a storyboard route is missing (d421d3f)
- artifacts: report observed action routes when a compiled route is missing (c60b737)
- artifacts: write the storyboard fixture's action in Cocoa syntax (53bfa7e)
- eliminate fixture races and prune redundant scaffolding (#849) (f72931d)
Continuous Integration
- consolidate macOS native baseline checks (#935) (810fe53)
- verify native arm64 and Intel macOS workflows (#898) (4801a24)
4.1.0 (2026-10-06)
Features
- android: integrate static APK analysis with headless JADX (#738) (904d03e)
- evidence: accept exact retained application references (#734) (d0f3480)
- firmware: integrate Binwalk and Unblob analysis (5a7c769)
- ghidra: add atomic function annotation edits (#709) (9bab553)
- ghidra: admit explicit DOS COM analysis (#702) (5bcb664)
- ghidra: enable Windows x64 read-only analysis (#699) (26881da)
- ghidra: integrate optional NativeAOT metadata recovery (#748) (fb679b6)
- ghidra: verify DOS load images and expose memory evidence (#697) (a6a8f67)
- ida: add read-only GUI and headless MCP providers (#754) (8238232)
- setup: support Command Code MCP registration (#645) (7f1ae42)
Bug Fixes
- android: validate explicit Java runtime (#742) (7390390)
- artifacts: make extraction output tree work on Windows (#753) (c8e66c7)
- browser: classify CSP host sources by their own origin (#707) (1d15bcb)
- browser: keep bare module locations unresolved (#676) (8189081)
- ci: upload Vitest blob reports from current path (77799e6)
- cli: disable unmanaged skill synchronization (433ebda)
- cli: disable unmanaged skill synchronization (2c1bf92)
- cli: fail when JSON input files cannot be parsed (18c1829)
- cli: fail when JSON input files cannot be parsed (3201f05)
- cli: include build step in missing-runtime recovery (6a37346)
- cli: include build step in missing-runtime recovery (ae72abd)
- cli: report reference-source import failures (00eb03d)
- cli: report reference-source import failures (431e8eb)
- comparison: break function collection collation ties (c3d013b)
- comparison: break function collection collation ties (3aaf7e2)
- comparison: break JSON shape collation ties (217e8cf)
- comparison: break JSON shape collation ties (805c338)
- comparison: retain container-only export shape paths (a55b5bb)
- comparison: retain container-only export shape paths (7864d66)
- dotnet: preserve leading Unicode content in metadata strings (#667) (ddea063)
- electron: respect computed option keys and overrides (af48fe8)
- electron: respect computed option keys and overrides (98de338)
- evidence: admit current process provider identity (ab5a1c6)
- evidence: admit current process provider identity (d311940)
- firmware: validate configured executables (#751) (9a4e6da)
- ghidra: preserve request and shutdown failure diagnostics (#647) (19f8cdd)
- ghidra: refuse ambiguous universal Mach-O imports (b1b687f)
- ghidra: refuse ambiguous universal Mach-O imports (6582b24)
- hopper: retain shutdown request diagnostics (8d7071d)
- hopper: retain shutdown request diagnostics (7254871)
- integrate 14 approved fix PRs (668,671,673,675,678-681,685-690) (#705) (cf06115)
- javascript: count all source line terminators (e60aa11)
- javascript: count all source line terminators (03bc6d3)
- javascript: expose result schema failures (6d1f39b)
- javascript: expose result schema failures (99263a7)
- javascript: hash graph and evidence JSON incrementally (#646) (9f42495)
- javascript: preserve path.resolve reset semantics (863ed47)
- javascript: preserve path.resolve reset semantics (4177377)
- javascript: preserve primitive addition coercion (#666) (94cc847)
- javascript: preserve unknown branches in primitive unions (75a75cb)
- javascript: preserve unknown branches in primitive unions (9a2f395)
- javascript: read source-map directives only from comments (#672) (7f1fa64)
- javascript: scope candidate ambiguity to query traversal (6ad62ce)
- javascript: scope candidate ambiguity to query traversal (f94fc79)
- mcp: retain shutdown failure diagnostics (09c249d)
- mcp: retain shutdown failure diagnostics (fd008cd)
- native: inspect mixed-signature Mach-O slices (1dccd0d)
- native: inspect mixed-signature Mach-O slices (66f3cfa)
- native: retain spaced symbols in dyld inventory (#669) (fa02df9)
- native: select concrete arm64e Mach-O slices (f04445c)
- native: select concrete arm64e Mach-O slices (fd3282a)
- process: honor disabled PID normalization in samples (44b3627)
- process: honor disabled PID normalization in samples (a4e5736)
- process: scope comparison unknowns to their evidence (#732) (9dd6cef)
- reconstruction: accept function comparison source parameters (c3bc38b)
- reconstruction: accept function comparison source parameters (7a96391)
- reference: bound Dockerfile language detection (132a3a4)
- reference: bound Dockerfile language detection (53fa559)
- reference: classify test suffixes before extensions (e828acc)
- reference: classify test suffixes before extensions (8b228ae)
- reference: distinguish computed require member names (ba35b55)
- reference: distinguish computed require member names (df6e476)
- reference: preserve unresolved absolute module specifiers (#670) (c8aed47)
- reference: read linked worktree commit provenance (#677) (d565ecd)
- reference: recognize CMake build manifests (#665) (1a24be5)
- reference: retain dynamic import relationships (a5d2986)
- reference: retain dynamic import relationships (b89de8f)
- reference: retain recovered parser diagnostics (11d0ef2)
- reference: retain recovered parser diagnostics (ed3a7f0)
- setup: accept leading BOM in JSON client configs (a5b970c)
- setup: accept leading BOM in JSON client configs (fe843ec)
- setup: align Node runtime checks with package engines (5802ef8)
- setup: align Node runtime checks with package engines (ea0b733)
- target: explain the JavaScript directory analysis route (#733) (8d44b3e)
- trace: match typed seeds against member arrays (65c8797)
- trace: match typed seeds against member arrays (38ebd54)
Code Refactoring
- app: split Setup and ProcessOwnership modules (#628) (3c84080)
- cli: collapse duplicate CLI layer into src/cli (#630) (494d4db)
- contracts: split tool contracts by family (#634) (5295d56)
- domain: consolidate canonical ordering and digest helpers (#624) (ba3869c)
- domain: split error taxonomy into thematic modules (#636) (735c100)
- native: extract FAT header format switch in Mach-O slice selection (#632) (38b2933)
- runtime: centralize safe JSON parsing and preserve error causes (#629) (e7f54b3)
- runtime: name all silent catch causes without changing diagnostics (#637) (5f27e02)
Documentation
- add the official Trendshift badge to README headers (b6c21b1)
- add the official Trendshift badge to README headers (7d4ed59)
- align MCP discovery and skill guidance with the stable catalog (#664) (39db9fe)
- browser: add an interaction example that captures the visible result (#750) (91daaa6)
- clarify onboarding and align provider guidance (#745) (5af1699)
- correct CLI examples and documentation checks (#655) (fc80ea8)
- fix architecture diagram and pretty-print tool catalog (#626) (5e7f35c)
- ghidra: explain first-query deadlines and recovery (#736) (e2c23f3)
- hopper: document HopperTargetLease realpath fallback (#711) (d3f498c)
- installation: pin manual MCP registration to the release version (#658) (8dd1d84)
- update Trendshift repository badge (3f6d6dc)
Tests
- extract shared fixtures, drop knip carve-outs (#627) (55e5eb0)
- hopper: synchronize startup cancellation with launcher readiness (#662) (88a3c3f)
4.0.1 (2026-10-05)
Bug Fixes
- release: allow npm propagation time (2ef02ce)
4.0.0 (2026-10-05)
⚠ BREAKING CHANGES
- Managed comparison metadata adds exact-signature matching and its count, and name_matching now reports exact-signature-fallback.
- setup: unscoped setup refreshes only existing REA-owned registrations. Use --all-detected to configure every detected client. Setup JSON contains a compact doctor summary; use rea doctor for full diagnostics. Cancellation and successful dry runs now exit successfully.
- Remove controlled replay, Node characterization, finite replay-machine, managed runtime planning, and redundant string-tracing tools. Retire process replay, shims, reactive scenarios, custom checkpoints, and active browser replay and origin-scope inputs.
- tools: Removed permission configuration and policy commands, approval fields, filesystem scope inputs, and fixed confirmation options. Process capture inherits the host environment and accepts command names; callers must refresh tool schemas and migrate removed fields.
Features
- ghidra: add DOS MZ analysis and complete function extents (#556) (4f099a1)
- native: add inspection primitives, dispatch traces and approved UI observation (#500) (4fbc501)
- setup: expand agent integrations and verify updates (#577) (6256b68)
Bug Fixes
- artifacts: break directory child collation ties (#587) (b37e47c)
- artifacts: exclude removed paths from unchanged counts (#569) (52bf709)
- artifacts: expand nested ASARs on Windows (#582) (ebb4c45)
- artifacts: interrupt ZIP extraction under backpressure (#594) (50f7e81)
- artifacts: preserve archive entry types and host paths (#581) (28e0f4e)
- artifacts: refresh cached ASAR headers for each inventory (#574) (f5013c5)
- artifacts: resolve parents after archive enumeration (#578) (8eac290)
- artifacts: respect XML plist byte-order marks (#514) (23c4eba)
- artifacts: retain expanded ASAR container parents (#583) (00fa974)
- artifacts: retain relative paths in directory identities (#580) (348323d)
- browser: capture popup network and report early event gaps (#614) (f557207)
- browser: capture selected events in popup pages (#600) (a3bf4a0)
- browser: derive source-map imports from syntax nodes (#588) (bae87b4)
- browser: distinguish duplicate screenshot frame events (#612) (1bd641d)
- browser: ignore duplicate frame navigations and read block-form source map directives (#546) (828395d)
- browser: keep subresource redirects out of page navigation scope (#524) (9c28f3c)
- browser: preserve RGB PNG transparent samples (#595) (9997152)
- browser: release cancelled CDP cleanup without waiting for responses (#517) (488fd5f)
- browser: release discarded source-map response bodies (#611) (8642055)
- browser: resolve redirected source map paths from final URL (#518) (056c123)
- cli: fail commands returning projected analysis errors (#506) (2fd1196)
- cli: reject invalid UTF-8 JSON file bytes (#613) (22acb0d)
- comparison: account for unpaired records after explicit bundle pairing (#603) (12a2e37)
- comparison: match generated names without swallowing symbol prefixes (#596) (5f3ba3e)
- comparison: normalize CFG identity by numeric addresses (#593) (d1e5c0e)
- comparison: require decoded signatures for structural method matches (#604) (4a98c3e)
- conformance: preserve own JSON keys during comparison (#573) (3460eda)
- correct native inventories and bridge error classification (#503) (405732a)
- docs: allow README installation wording to vary (92617f9)
- ghidra: avoid nested quotes in Windows Java options (a574b74)
- ghidra: recover evidenced switch cases and default targets (#579) (b225b0f)
- inspector: preserve lossy Node discovery locations (#542) (84e4361), closes #530
- javascript: avoid invented computed destructuring properties (#507) (80777d9)
- javascript: bind named class expressions in their class scope (#510) (55f0267)
- javascript: classify assignment targets and retain compound-assignment reads (#537) (333d118)
- javascript: correct lexical and dynamic scope analysis (#538) (6fa6f1f)
- javascript: honor computed keys when naming callables, exports, requests and options (#536) (4c8dc39)
- javascript: honor package exports condition order (#591) (8289595)
- javascript: isolate lexical loop bindings (#511) (c30878f)
- javascript: prefer package entrypoints over directory indexes (#575) (bb91abd)
- javascript: preserve literal CommonJS path punctuation (#576) (063cd25)
- javascript: preserve Node exports fallback stop reasons (#606) (adc07f5)
- javascript: respect HTML base URL components (#589) (ffbde92)
- javascript: respect lexical shadowing of require (#509) (6a431d8)
- javascript: retain property reads during updates (#508) (6b7923c)
- managed: classify truncated signatures as malformed (#598) (1b6f054)
- managed: distinguish metadata handles from member accesses (#607) (c73742f)
- managed: recognize PE Thumb and ARMNT machines (#605) (0ce529a)
- mcp: emit valid schemas for empty arrays (#535) (4007b20), closes #528
- mcp: return complete inline Evidence records (#585) (ea9c3da), closes #551
- native: capture Mach-O header metadata alongside load commands (#525) (a8195ba)
- native: decode little-endian fat headers (bede3e3), closes #592
- native: decode Mach protection bits in their proper positions (#586) (6aba6ae)
- native: inspect Apple dispatch metadata in FAT64 binaries (#590) (f3e6582)
- native: inspect the selected universal Mach-O architecture (#601) (2b7bb3b)
- native: match compound otool keys exactly and badge unknown thread entrypoints (#534) (d40502a)
- native: normalize otool line endings and strip plist JSON BOM (#533) (3e4d4d9)
- native: preserve text-valued load command metadata (#520) (bcfb407)
- native: reject signal-terminated command captures (#608) (b81d18e)
- native: reject trailing text in lipo integers and keep multi-word otool keys (#531) (9e30d93)
- native: retain lazy dylibs, normalize version-min builds, limit thread entrypoints (#532) (0f77ada)
- native: retain re-exported Mach-O library dependencies (#516) (4a5673e)
- package: separate agent and Hopper setup support (#584) (205a977)
- platform: accept absolute paths for any host and stop blaming the ceiling for a missing grant (#552) (e793e12)
- process: align provider detach with configured platform (3fff74f)
- repair boundary contracts across CLI and MCP (#597) (9c25dc4)
- replay: keep proto own properties and reject symbol-keyed results (#540) (05bb630)
- replay: link the complete ESM graph before evaluating (#515) (4200a42)
- replay: preserve CommonJS object as ESM default export (#519) (2df6b51)
- replay: preserve Date call and explicit constructor semantics (#512) (9975bd2)
- replay: preserve sparse array positions in result projection (#522) (9d1c363)
- replay: share one seeded generator and present builtins with real identity (#539) (5b51fa0)
- repo: keep dependency links out of version control (#617) (b3223e3)
- skill: remove obsolete grants and audit tool effects (2919def)
- test: improve capture reliability and runner cleanup (#609) (d19686a)
- tools: simplify direct invocation and harden boundary contracts (#555) (b5e9891)
- web: retain uncertainty for incomplete capture inventories (#513) (d8c18f6)
- win32: probe .cmd/.bat runtime shims via cmd.exe to avoid spawn EINVAL (#505) (31ed005)
- workflows: preserve punctuation in filesystem source paths (#521) (5b28a8b)
- workflows: retain container presence in export shape comparisons (#523) (3854458)
Code Refactoring
- config: take the environment as an input at every configuration read (#554) (53fe7d6)
- domain: consolidate duplicated semantic member and literal helpers (#550) (09830da)
- domain: own digest and prefixed identifier shapes in one module (#547) (ea58834)
- host: inject platform and environment instead of reading them ambiently (#549) (5b59b87)
- simplify runtime tools and remove replay engines (#572) (e07b816)
Documentation
- add boundary contract guidance (42e6a8a)
- add Discord community links to README (79bf26f)
- align roadmap with direct tool use (eba709e)
- align translated READMEs and clarify support guides (5b383b2)
- clarify README wording and analysis tool support (97822f2)
- move README image above Discord community (ad86d39)
- place community invitation below README navigation (69a45e0)
- place Discord community below setup command (778e464)
- place setup command above README image (c6d3bdf)
Tests
- setup: isolate client fixtures across host platforms (f73bb0f)
3.2.1 (2026-10-03)
Bug Fixes
- release: tolerate npm registry propagation delay (726b730)
Tests
- release: accept guarded npm publishing (b7bc855)
3.2.0 (2026-10-03)
Features
Bug Fixes
- artifacts: stabilize extraction approval (7eb1a95)
- browser: reject unknown Electron input fields (1860d4f)
- ci: retain artifacts for delayed reruns (07888ec)
- cli: remove ignored result limits (f3645aa)
- consolidate boundary ownership and cleanup failure paths (#477) (2160d4f)
- contracts: align byte read schema with provider (f580d9d)
- ghidra: return complete native analysis results (a66e43a)
- managed: retain every source location (33b2099)
- process: capture complete host probe output (6c68ff5)
- runtime: make observed target role optional (593a8e1)
- runtime: retain complete reconciled graph content (bedd55a)
Code Refactoring
- analysis: remove caller-selected result caps (a8c58c6)
- analysis: remove fixed result quotas (20152a9)
- artifacts: consolidate inventory into inspection (0fe96d9)
- artifact: simplify extraction and inventory results (07ff8b3)
- artifacts: remove duplicate inventory wrapper (aa6eee1)
- artifacts: remove selectors and traversal quotas (8c24272)
- artifacts: select extraction by logical path (7ba3580)
- browser: remove arbitrary capture ceilings (5dd3b46)
- browser: return complete observation evidence (0e2738f)
- browser: return complete scenario observations (e80fe41)
- browser: share authorized main-frame polling (eec75ce)
- browser: share canonical identity digest (a6d9e49)
- contracts: remove duplicate schema aliases (4593c29)
- contracts: simplify workflows and drop readiness tool (7acac61)
- coverage: evaluate inline without workspaces (9e76054)
- domain: encode comparison and lifecycle states exactly (#473) (d65730c)
- domain: share AST property name reader (4f4cc59)
- electron: retain complete active observations (e8c56e0)
- errors: remove stale workspace failures (f570d40)
- evidence: remove obsolete ID resolvers (a3920e2)
- evidence: remove session ledger quotas (dca293a)
- files: use caller paths for local evidence files (c34efca)
- ghidra: remove redundant schema markers (c2a6f4b)
- javascript: remove analysis ceilings (9aec690)
- managed: derive inspection from PE CLI extents (dfad09e)
- mcp: simplify evidence and workflows (6740ed5)
- mcp: simplify tool inputs and inline results (f55c2b9)
- mcp: simplify workflow and observation scope (34d00fd)
- observation: internalize capture budgets (7b3c797)
- observation: retain complete tool results (fa2b6c5)
- observation: return complete inventories (c523c38)
- permission: remove unused authorization helpers (1b0ab75)
- process: remove fixed scenario ceilings (abf7c11)
- process: remove redundant schema version markers (b3aca52)
- process: remove request count ceilings (f2dc749)
- process: remove unused paired experiment (e1d755f)
- prompts: make tool workflows optional (3fd9650)
- reference: share graph index projections (6ee87fb)
- remove cross-version investigation workflow (81996df)
- replay: share sandbox probe arguments (9fca6c0)
- replay: simplify runtime value checks (60cb68a)
- return complete analysis results inline (a2a3243)
- return complete tool results inline (0d96275)
- runtime: retain complete reconciliation outputs (79ea571)
- schema: remove data-only version markers (5457f4a)
- server: remove registration alias (8097ec4)
- server: use canonical elicitation type (bb6a58c)
- test: colocate pure-domain tests and reduce test debt (#471) (e91c8c3)
- test: keep coverage at behavioral boundaries (#474) (d4dc940)
- tools: remove arbitrary workflow ceilings (5f73cb0)
- tools: remove artificial analysis ceilings (2f08c7c)
- tools: remove redundant limits and acknowledgements (bd0e341)
- tools: remove remaining arbitrary workflow caps (ecf3ed8)
- tools: return complete analysis results inline (2a6eb41)
- workflows: simplify evidence reference inputs (24e1fa9)
Documentation
- add REA tool design guidance (#485) (36aeec9)
- clarify aggregate context tools (c7e207c)
- clarify MCP tool design guidance (36aeec9)
- correct inline evidence and Hopper behavior (bf9cce1)
- describe complete application analysis outputs (271b162)
- generalize reverse-engineering workflow (#488) (4ecc7a7)
- improve GitHub issue and pull request templates (c490d85)
- prioritize reusable analysis primitives (#493) (9dd72c4)
- refresh managed conformance manifest (23e56c5)
- refresh tool catalog and cleanup audit fixtures (53db3a4)
- regenerate tool and evidence catalogs (2f604a3)
- regenerate tool and evidence catalogs (f2bbd59)
- tools: clarify complete inline results (3b64c81)
- tools: clarify complete inline workflows (4168174)
- tools: describe uncapped tool behavior accurately (4cea84d)
- tools: update inline workflow guidance (4ad937c)
Tests
- artifacts: exercise argument-free extraction preflight (a6d5b3e)
- browser: assert strict inputs without legacy fields (9ddf22e)
- browser: cover complete screenshot output (3f547ea)
- browser: remove stale input field assertion (60c110d)
- cli: consolidate duplicate setup journey (9bd7e2c)
- cli: remove duplicate browser discovery case (dcb0362)
- conformance: remove fixture generator test option (ea853ce)
- contracts: remove duplicate tool inventories (0ae3c08)
- hopper: name regex search assertion accurately (9240bd8)
- hopper: remove dossier identity assertion (b5c0b5b)
- mcp: align workflow assertions with current guidance (f8bb113)
- mcp: consolidate catalog inventory checks (3afcd64)
- mcp: validate defaults at tool boundary (21241d2)
- remove duplicate export schema acceptance (b783e7f)
- remove obsolete schema version assertions (fe342fa)
- remove stale limits and handoff expectations (acf33d6)
- remove vacuous and duplicate assertions (56e2bf7)
- remove Vitest config test exports (d6e545c)
- replace brittle workflow and readme checks (b3529aa)
- replace implementation lock-in with behavioural assertions (#498) (7ee3f23)
- replay: remove duplicate schema coverage (4ec2343)
3.1.0 (2026-08-09)
Features
Bug Fixes
- ci: guard Release Please PR branch parsing (84cc819)
- ci: guard release PR branch parsing (6838b6b)
- harden evidence lifecycle and MCP contracts (5155924)
- harden structured configuration comparisons (#467) (6901edc)
- npm: preserve explicit setup versions (#465) (1783bf6)
Code Refactoring
Documentation
- clarify agent reverse-engineering promise (ed4a628)
- clarify the agent reverse-engineering promise (#466) (ed4a628)
- npm: simplify current setup command (#469) (8b62b1a)
3.0.0 (2026-08-01)
⚠ BREAKING CHANGES
- export_evidence_bundle now requires a filesystem path and no longer returns an inline bundle.
Features
- make evidence bundles canonical MCP resources (1712e6d)
Bug Fixes
- address MCP resource review feedback (f3b3fb0)
- align aggregate tools with session capabilities (ede91ff)
- ci: align Vitest project worker budgets (f47ee1a)
- ci: allow documented public type aliases (97f6a0f)
- ci: make coverage report merging composable (788f405)
- ci: stabilize Vitest project routing and shards (f07acde)
- errors: preserve actionable analysis diagnostics (0f96bf3)
- mcp: clarify routing and advertise input examples (969519c)
- mcp: clarify target routing and caller diagnostics (3e1e8cd)
- test: bound boundary worker pressure (935721d)
- test: honor boundary ownership and public aliases (92a1c33)
- test: retain subprocess coverage and cleanup (7f46bb1)
- test: retain subprocess coverage and cleanup (dae2b9c)
- test: stabilize boundary timing (f0d8cda)
- verify: follow dynamic Hopper tool availability (281e41f)
Code Refactoring
- preserve provider-neutral runtime seams (a8161f0)
Documentation
- document resource snapshot workflow (2a45d8d)
- refresh generated SDK metadata (c824db1)
- refresh managed completion manifest (59d4659)
Tests
- contracts: cover validation branches (8ccdb33)
- derive MCP SDK identity expectations (ab4193c)
- eval: cover navigation and address tool routing (ba098f2)
- overhaul deterministic suite architecture (48053d1)
- overhaul deterministic suite architecture (513d9b1)
- package: verify npx upgrade on published releases (7b6f7be)
- package: verify npx upgrade on published releases (1f8ad7b)
Continuous Integration
- document deterministic suite ownership (3c42403)
2.7.0 (2026-07-28)
Features
- bytecode: add JVM and Python bytecode providers (1a75f8d)
- bytecode: add JVM and Python bytecode providers (4e0127d), closes #367
- conformance: add portable conformance export package format (91fb87d)
- conformance: add portable conformance export package format (4ee30e4)
- metadata: add deeper ObjC/Swift metadata and database save/licensing (4602efd)
- metadata: add deeper ObjC/Swift metadata and database save/licensing (d7a0753), closes #353
- mobile: add Android APK/AAB/DEX and iOS IPA static investigation providers (18624df)
- mobile: add Android APK/AAB/DEX and iOS IPA static investigation providers (fdeeb27), closes #366
- package: add MSIX/MSI/AppX package, resource, and signature analysis (0ef1b91)
- package: add MSIX/MSI/AppX package, resource, and signature analysis (6c03f83), closes #363
- pe: add broader PE/COFF/PDB static inspection (f942558)
- pe: add broader PE/COFF/PDB static inspection (94e6600), closes #362
- process: replace procfs sampling with event-backed process-tree capture (a5e355a)
- process: replace procfs sampling with event-backed process-tree capture (d5d2e56), closes #332
- protocol: add custom TCP/UDP/IPC/XPC and auth-flow capture (1fb22b4)
- protocol: add custom TCP/UDP/IPC/XPC and auth-flow capture (6fa6f9b), closes #365
- protocol: add gRPC/Protobuf and JSON-RPC/MessagePack capture (54153ed)
- protocol: add gRPC/Protobuf and JSON-RPC/MessagePack capture (3f336fe), closes #364
Bug Fixes
2.6.0 (2026-07-26)
Features
- complete evidence-backed roadmap workflows (1a0931b)
- hopper: report bridge progress diagnostics (7a43420)
- native: inspect API boundaries with evidence (521139d)
Bug Fixes
- setup: refresh stale local npx bootstrap (6d37efe)
- setup: refresh stale local npx bootstrap (90bb161)
Performance Improvements
Tests
- add critical provider workflow coverage (4716fa2)
- hopper: remove brittle diagnostic source assertion (40bf55b)
- investigation: prove multi-version fixture closure (5184816)
- mcp: stabilize lazy-loading verification (7157ab0)
- package: prove artifact cleanup and identity (9522adf)
2.5.1 (2026-07-25)
Bug Fixes
- ci: normalize generated release metadata (d43a461)
- ci: normalize release pull request metadata (119954c)
Performance Improvements
- browser: lazy-load Playwright sessions (305e729)
- dotnet: reuse authenticated artifact snapshots (c5e8871)
- eliminate repeated work in analysis hot paths (fbe442b)
- evidence: validate ledger mutations incrementally (809dfbf)
- javascript: reuse parsed source across analyses (adc4852)
- server: cache advertised JSON schemas (6743644)
2.5.0 (2026-07-24)
Features
- add runtime reconstruction roadmap workflows (1dbb157)
- analysis: add bounded memory and call tracing (8e7709d)
- artifacts: add provider-neutral inspection (d997728)
- browser: capture controlled Playwright scenarios (1ac3118)
- browser: compare scenario and storage evidence (f27dd74)
- javascript: compare source with shipped bundles (697be94)
- javascript: recover runtime semantic effects (38c883b)
- process: support explicit stdin closure (205bf15)
- reconstruction: add obligation ledgers (9d48ca7)
- reconstruction: evaluate end-to-end readiness (38ff741)
- runtime: add passive V8 Inspector observation (8271650)
- server: advertise available tools dynamically (035e114)
Bug Fixes
- analysis: report call-edge truncation (6039b92)
- browser: close scenario containment gaps (1bd65f6)
- browser: contain scenario pages and preserve inputs (24b3dc4)
- browser: require storage fingerprint approval (f0069cb)
- ci: allow slower real browser startup (095c75d)
- ci: propagate readiness verifier failures (9f9f9c3)
- ci: repair cross-platform package verification (1c9e508)
- comparison: preserve uncertainty and v1 inputs (b9217dc)
- hopper: add bounded analysis recovery (e0bc7fd)
- javascript: keep digestless bundle matches unknown (5a76aaf)
- process: expose launcher identity mismatch (62ac73c)
- process: normalize macOS launcher identity (9c3aec8)
- process: tolerate exit during ownership revalidation (a0f8b72)
- reconstruction: authenticate obligation proof boundaries (7b1e3bd)
- reconstruction: bind proof evidence to claims (83b3368)
- runtime: preserve deterministic context identity (9bd2ac5)
- test: use direct Node launcher on macOS (13f3372)
Performance Improvements
Code Refactoring
- application: reuse graph evidence resolution (4e8aa98)
- browser: centralize scenario metadata budgeting (e79e367)
- browser: clarify inspector capture identifiers (ca035a7)
- browser: reuse CDP endpoint parsing (00abf45)
- javascript: centralize source range comparison (c9500d3)
- javascript: share semantic call-site lookup (94a2c60)
- reconstruction: isolate ledger coverage (4f62695)
- server: reuse availability policy type (eeb4349)
Documentation
Tests
- browser: use neutral scenario fixture identifiers (fd25a7e)
- package: stabilize fake Hopper ownership (0b70131)
Continuous Integration
- verify runtime observation and readiness (9349ff5)
2.4.0 (2026-07-23)
Features
- artifacts: support MSIX and AppX packages (6e6cce1)
- expand reactive capture and package analysis (9da1794)
- process: add reactive capture scenarios (69761e9)
Bug Fixes
- capabilities: expose typed availability codes (b906def)
2.3.0 (2026-07-23)
Features
- complete REA remediation program (d25e98c)
- evidence: generate verifier completion ledgers (c02d33f)
- evidence: generate verifier completion ledgers (f5b3e22)
- javascript: add bounded semantic relation graph (b3939ea)
- javascript: add bounded semantic tracing (56c1a66)
- javascript: add local semantic call flow (a26a1c7)
- javascript: expose bounded semantic tracing (508a9cc)
- process: add bounded reactive scenario domain (42f3b9c)
- process: add bounded reactive scenario domain (d34463c)
- process: add direct replay machine runner (3df9a07)
- process: compare declared concurrent traces (d81745c)
- process: coordinate reactive capture effects (b874efd)
- process: coordinate reactive capture effects (db9a831)
- process: record global capture event order (8bcdb98)
- process: record provider and verifier run lineage (02b01d4)
- process: record provider and verifier run lineage (513fa29)
- process: run finite-state replay during capture (820af60)
- process: run finite-state replay during capture (34c583a)
Bug Fixes
- browser: redact transitional target titles (f6095cb)
- cli: retain bundled skill and bias setup wizard toward apply (5692b3f)
- cli: retain bundled skill and bias setup wizard toward apply (fec5c3c)
- cli: route JavaScript applications from analyze (737940c)
- cli: route JavaScript applications from analyze (74965d9)
- javascript: preserve candidate trace ambiguity (8678b57)
- knip: ignore ps binary and in-file schema exports (9960982)
- mcp: preserve investigation input policy (5a908a0)
- mcp: preserve investigation input policy (f4156d9)
- process: bound trace comparison semantics (b4df565)
- process: normalize resize frame timestamps (74d1c7b)
- process: normalize resize frame timestamps (77696df)
- process: preserve nonconforming differences (f1cc485)
- process: preserve replay event causality (d895e49)
- process: protect unrelated Hopper during cleanup (81539c4)
- process: protect unrelated Hopper during cleanup (e4ee4c9)
Code Refactoring
- process: extract capture journal recorder (a32b988)
- process: split trace comparison domain logic (75d5a87)
- process: split trace comparison helpers (6d8ecd2)
Documentation
Tests
- browser: stabilize real shape capture (bb2e243)
Continuous Integration
- remove redundant typecheck, lint, and format compatibility jobs (eb27f01)
- remove redundant typecheck, lint, and format compatibility jobs (aeb5cb3)
- shard coverage tests and skip docs-only suites (c736317)
- shard coverage tests and skip docs-only suites (fa58082)
2.2.0 (2026-07-20)
Features
- artifacts: project mobile application inventories (c6a1a93)
- artifacts: project mobile application inventories (d36b385)
- process: add bounded replay state machines (fea965b)
- process: add bounded replay state machines (dc0c2e5)
- process: compare repeatable paired experiments (e9899c0)
- process: compare repeatable paired experiments (9ab7aa3)
- streamline agent integration and MCP routing (02cb20b)
- streamline agent integration and MCP routing (3e3d458)
Bug Fixes
- align session filters and Hopper verification (d7d6bdf)
- artifacts: align projection provider targets (560dbda)
- artifacts: bound mobile projection candidates (0cc9d46)
- ci: keep tool kind type internal (b9bead2)
- ci: retry published package verification (0810486)
- ci: retry published package verification (c379455)
Documentation
- refresh generated API links (a2089a4)
- update application projection API (b0cb28a)
- update paired process experiment API (a222327)
- update replay machine API (d74f897)
Tests
- budget CLI output variant subprocesses (8d3587b)
- cap workers across all hosts (bc80359)
- inherit root options in Vitest projects (168100e)
- isolate slow filesystem and CLI suites (c2e134b)
- stabilize subprocess-heavy integration suites (a556e94)
2.1.0 (2026-07-18)
Features
- add managed characterization and coverage closure (1943496)
- add managed characterization and reconstruction coverage (02c913b)
- cli: add explicit package-runner setup wizard (891a11f)
- cli: improve setup onboarding (4851449)
- cli: improve setup onboarding (16002ff)
- cli: support package-name setup wizard (1b90e7f)
- doctor: admit the Windows x64 Ghidra boundary (32dda0c)
- dotnet: add BYO ILSpy oracle diagnostics (aa200ce)
- ghidra: add authenticated Windows loopback transport (629ffc3)
- ghidra: bind imports to admitted target bytes (be19c3f)
- ghidra: define the Windows P0 admission boundary (6b1fd16)
- ghidra: inspect Windows headless installations (86e44be)
- ghidra: launch bounded Windows headless sessions (bc0fb45)
- harden authority and runtime conformance boundaries (b537ebf)
- javascript: add binding and constant-value semantic IR (3ea8523)
- javascript: add binding and constant-value semantic IR (3d71bb5)
- javascript: add webpack and rspack runtime adapters (7bccb7c)
- javascript: add webpack and rspack runtime adapters (44c7017)
- javascript: recover commonjs and esm module relationships (9766fc0)
- javascript: recover commonjs and esm module relationships (6c41791)
- permissions: add scoped process capture elicitation (e6cfce3)
- skill: rename skill to reverse-engineer-anything (9356634)
- target: classify Windows PE admission metadata (24274fe)
- windows: define native authority boundary (a1a6b42)
Bug Fixes
- build: preserve native generated-file line endings (00a3078)
- ci: remove retired native rebuild steps (2d22731)
- ci: validate packaged Windows CLI commands exactly (43418ee)
- cli: require explicit setup selections (992ec50)
- contracts: make agent-facing schemas self-describing (0df11dd)
- dotnet: admit real CLI GUID and fat CIL bodies (735973b)
- dotnet: correct CLI pointer and byref signatures (1387be0)
- dotnet: correct CLI pointer and byref signatures (fb9ff56)
- dotnet: downgrade truncated CIL identity and coverage (736a4e1)
- dotnet: downgrade truncated CIL identity and coverage (dae6807)
- electron: keep missing unpacked ASAR entries unavailable (fb6964a)
- electron: resolve package and dirname entrypoints by context (4847fc4)
- electron: resolve package and dirname entrypoints by context (1ac9a09)
- ghidra: preserve native endpoint diagnostics (5970a71)
- ghidra: preserve Windows batch invocation semantics (0ac418d)
- ghidra: validate Windows control characters explicitly (4dccbec)
- managed: emit valid x64 conformance PE (dcd94f1)
- managed: emit valid x64 conformance PE (c52a822)
- managed: preserve page incompleteness in graph and comparison (a6f02a0)
- managed: preserve page incompleteness in graph and comparison (8ee0f04)
- mcp: clarify advertised schema fields (1581e40)
- npm: use latest entry points without install scripts (34252f5)
- npm: use latest entry points, remove install scripts, and rename skill (bf85ee6)
- preserve optional unknown filters (db1efef)
- remove unused boundary exports (49f1ec1)
- satisfy dead-code and generated-doc checks (b15a9ec)
- setup: preserve onboarding after refactor (da48033)
- skill: disclose retired skill cleanup (4c69e61)
Code Refactoring
- adapters: split oversized provider workflows (1a99a60)
- app: split session and CLI workflows (c6ee004)
- domain: split analysis boundaries (e2c868c)
- finish lint cleanup (2bea405)
- managed: split metadata analysis (20c88dd)
- setup: keep planner helpers private (2d1f961)
- simplify authorization boundaries (2e5b443)
- simplify doctor and error projections (37f4ac6)
- skill: keep only the canonical skill identity (a7c1e87)
- skill: remove legacy skill compatibility (8cf0dd2)
- split oversized analysis workflows (af2399e)
- split oversized analysis workflows (3e61a63)
- windows: keep capability outcomes module-private (585f523)
Documentation
- cli: describe every command input (d4be3e7)
- ghidra: define the experimental Windows P0 (8b5ae41)
- managed: align normalized CIL claims with shipped v1 semantics (9a92a79)
- managed: align normalized CIL claims with shipped v1 semantics (3f788e9)
- normalize inherited source paths (d33213a)
- preserve generated source links (2ea375f)
- prioritize agent usability in tool design (ad17fe7)
- refresh Electron path resolution API (734a4ef)
- refresh generated API reference (f5f653b)
- regenerate managed coverage API with Node 24 (e47c00e)
Tests
- add limit monotonicity and partial-evidence regressions (2cce98c)
- add limit monotonicity and partial-evidence regressions (4afd970)
- ci: guard Windows Ghidra workflow isolation (81ed68f)
- ci: guard Windows Ghidra workflow isolation (98540c8)
- cli: cover package-name binary alias (40e2f94)
- hopper: add semantic runtime conformance (da1da3b)
- package: align setup preflight contract (b33ebb1)
Continuous Integration
- ghidra: add Windows P0 acceptance and real-engine lanes (0b35510)
2.0.0 (2026-07-16)
⚠ BREAKING CHANGES
- mcp: require Evidence for managed reconstruction
- mcp: comparison tools now require session-owned Evidence IDs or approved bundle paths, and structured Evidence results use compact references.
Features
- application: add cross-layer graph workflows (778b995)
- application: add isolated JavaScript replay (d86231a)
- dotnet: add managed artifact triage (c251c38)
- dotnet: add managed member comparison (55794d6)
- dotnet: add managed member inspection (98cad37)
- dotnet: add managed native boundary inspection (466b1bb)
- dotnet: add managed runtime correlation planning (5f66cfd)
- dotnet: import managed reconstructions (c506664)
- dotnet: verify managed native boundaries (8cbc125)
- electron: map static process and IPC boundaries (3fa2304)
- electron: reconcile static artifacts with passive runtime (8c67dbd)
- managed: project static evidence into application graph (6194c1a)
- managed: project static evidence into application graph (77178bb)
- mcp: harden contracts and evidence references (ee1cd40)
- mcp: require Evidence for managed reconstruction (d36af5d)
- setup: verify installed skill catalog identity (b2d1f2a)
Bug Fixes
- deps: run freshness check from escaped paths (8a1c128)
- mcp: align runtime unknown argument validation (d1e7220)
- mcp: hide managed workflows without a session (412bbaf)
- mcp: integrate managed contracts after rebase (9c4a93d)
- mcp: normalize inferred field descriptions (a807471)
- mcp: parse adapter inputs exactly once (37c0f39)
- mcp: remove arbitrary schema byte gate (fd08025)
- mcp: remove schema byte compaction (f728295)
- package: accept expected doctor diagnostics (0f2d013)
- test: make host fixtures portable (f23f529)
Code Refactoring
- mcp: remove obsolete managed evidence parser (f7aa191)
Documentation
- analysis: define managed-code evidence boundary (80faff3)
- api: refresh managed reconstruction contracts (2b06433)
- dotnet: refresh managed reconstruction api (cc1e47c)
- refresh application workflow API links (4a30820)
- refresh managed native verification api (849c052)
- refresh managed runtime api docs (798631a)
- refresh runtime reconciliation API (87b2348)
- security: define controlled replay authority (461990d)
- stabilize replay API source links (a8c1057)
Tests
- dotnet: add managed conformance verifier (2b75fcf)
- dotnet: verify managed app graph manifests (5be4051)
- dotnet: verify managed app graph manifests (a5e5c68)
- dotnet: verify managed app manifests (793a948)
- hopper: avoid scheduler-sensitive exit timing (6e6827c)
- mcp: cover strict compact wire contracts (8de25d0)
- mcp: derive sessionless managed inventory (cab7c4a)
- replay: use portable seam executables (3183f47)
1.7.0 (2026-07-15)
Features
- artifact: reconstruct JavaScript application structure (aa46abf)
- domain: add versioned JavaScript Application Graph (2ca5672)
- ghidra: add function analysis and conformance (d8321de)
- ghidra: add private headless provider session (f0e625d)
- ghidra: implement read-only inventory operations (b1c07dd)
- session: add explicit provider registry and target binding (941d710)
Bug Fixes
- address setup, upgrade, and process test regressions (960d759)
- address setup, upgrade, and process test regressions (02f12b9)
- cli: make clean source checkouts start reliably (ed17e76)
- cli: make clean source checkouts start reliably (6ba9765)
- setup: replace managed Hopper on reinstall (0ca93f9)
Code Refactoring
- domain: remove provider-specific target and snapshot state (21da71e)
- process: extract reusable provider lifecycle primitives (70e1a0f)
Documentation
- api: refresh profile source anchors (bd3cf96)
- api: refresh provider source anchors (a7621c2)
- architecture: define provider selection and analysis profiles (75f8696)
- architecture: define provider selection and analysis profiles (f9f2fbe)
- reconcile product documentation with shipped behavior (addc208)
- reconcile product documentation with shipped behavior (54056a9)
- refresh Ghidra inventory API links (a45de27)
- regenerate JavaScript graph API with Node 24 (da4817a)
Tests
- keep package setup verification read-only (acaf030)
1.6.0 (2026-07-14)
Features
- add web and Electron reverse-engineering workflows (be76f80)
Bug Fixes
- application: add explicit investigation replay (7112e1e)
- application: add explicit investigation replay (a6b5ca4)
- browser: keep page endpoint type internal (3743962)
- browser: observe direct target disconnects (9be24f8)
- browser: preserve operation-aware cancellation errors (0aac8aa)
- browser: support page-scoped CDP transports (c4930f4)
- browser: support page-scoped CDP transports (bf96192)
- browser: support relative source map URLs (5231e95)
- cli: confirm project grant revocation (6397e54)
- cli: confirm project grant revocation (7a4cfb4)
- cli: restrict production MCP dispatch (8bd0e5f)
- cli: restrict production MCP dispatch (190e5d3)
- doctor: honor explicit Hopper launcher (c69fe2c)
- doctor: honor explicit Hopper launcher (9208592)
- evidence: enforce the combined record limit (c791802)
- evidence: enforce the combined record limit (834c70c)
- hopper: cancel startup before closing (f471a63)
- hopper: cancel startup before closing (6cc2fdf)
- hopper: select verified Linux demo mode explicitly (46e4052)
- hopper: select verified Linux demo mode explicitly (04c5fd6)
- native: harden command capture edge cases (c2e64a4)
- native: harden command capture edge cases (d39f98d)
- preserve setup diagnostics and clean Knip config (2d1e021)
- preserve setup diagnostics and clean Knip config (5a7ccef)
- process: gate sampling on initialized PTY root (57938a8)
- process: gate sampling on initialized PTY roots (e831a41)
- process: keep validation detail internal (614a119)
- process: restrict cleanup to captured group leaders (40c6f60)
- process: settle exited zombie groups (072ce5a)
- process: settle exited zombie groups (4828326)
- process: stabilize and speed up the test suite (a3b7de9)
- reference: preserve distinct parse failures (e02cb2f)
- reference: preserve distinct parse failures (543510f)
- rollup batch of fixes (b348b2c)
- runtime: apply permission reloads atomically (49e843e)
- runtime: apply permission reloads atomically (3ae7109)
- runtime: serialize permission reloads (7e53dd6)
- runtime: unregister shutdown handlers (71072d8)
- runtime: unregister shutdown handlers (f9e3c23)
- session: isolate availability observers (43766fd)
- session: isolate availability observers (e5a80d4)
- session: reopen replaced targets (e98413c)
- session: reopen replaced targets (5c55999)
- setup: configure every detected client (69744a4)
- setup: configure every detected client (24f9a1f)
- setup: omit aligned client configurations from plan (a86da4f)
- setup: omit aligned skill from plan (d81687f)
- setup: omit aligned skill from plan (2984fa7)
- setup: preserve client config symlinks (85285f1)
- setup: preserve client config symlinks (df87544)
- test: adapt mainReload shutdown seam to registerShutdown signature (0a430c1)
- tooling: isolate concurrent repository checks (fb17156)
- tooling: isolate concurrent repository checks (ab8c5c1)
- upgrade: prevent version downgrades (a204840)
- upgrade: prevent version downgrades (1d1d234)
- verify: reconcile PR-212/215/228 package E2E expectations (cfa110c)
Performance Improvements
- application: scan version artifacts in parallel (528c05e)
- application: scan version artifacts in parallel (c00739b)
Tests
- application: verify packaged MCP replay (6601e0c)
- browser: harden Chrome startup on CI (74c5121)
- browser: route discovery sockets through proxy (e363f0e)
- browser: verify page-scoped Chrome transport (c252536)
- cli: verify packaged policy revocation (3d71737)
- hopper: cover verified Linux rejection (db202c2)
- hopper: retry after cancelled startup (6de726f)
- hopper: verify alternate Linux launcher path (d93257b)
- package: cover aligned setup plan (a597639)
- package: cover config symlink lifecycle (d1ef7a5)
- package: preserve unrelated symlink config (c50e51e)
- reduce test suite runtime (2223da1)
- reference: cover failure normalization (3d5041f)
- runtime: cover idempotent handler cleanup (1bdb59e)
- serialize subprocess-heavy integrations (f46fc7f)
- session: reopen replaced target through MCP (1c32880)
- setup: cover later clients after failure (8f73112)
1.5.0 (2026-07-14)
Features
Bug Fixes
- browser: drop disallowed redirect evidence (8481be9)
- browser: scope CDP events and fail closed (5279d77)
- browser: scope workers and binary frame sizes (dfc06cf)
- harden PTY events and configured roots (ae8b1c5)
- harden PTY events and configured roots (31b40f3)
- permission: defer cache write grants (6a3fd5b)
- permission: defer cache write grants (f840e70)
- resolve triaged correctness issues (2575b30)
- resolve triaged correctness issues (e8ed307)
- resolve validation and artifact edge cases (2468682)
- resolve validation and artifact edge cases (ef7f2f9)
Documentation
Tests
- cli: allow cold-start integration timing (7d5621d)
1.4.0 (2026-07-14)
Features
- core: add typed policy and integrity contracts (190efca)
- identity: derive MCP surface metadata (2722722)
- mcp: expose progress resources and availability (da59299)
- mcp: land policy, resources, and typed contracts (8f79ee7)
Bug Fixes
- ci: keep generated error docs with their owner (3e60e38)
- ci: preserve stacked integration changes (cf8e5cf)
- cli: return nonzero status for operation failures (#121) (00c187e)
- cli: return nonzero status for operation failures (#122) (964620a)
- hopper: complete owned Linux shutdown (#116) (fb51874)
- mcp: preserve migrated revisions and valid links (4149472)
- preserve actionable artifact diagnostics (#119) (7385220)
- workspace: migrate legacy integrity identities (d092d4c)
Tests
- identity: defer live MCP integration proof (74db3fc)
1.3.0 (2026-07-13)
Features
- add guided MCP workflow prompts (08d5b91)
- add guided MCP workflow prompts (24c3adb)
- add persistent cross-version investigation workspaces (c52eb46)
- add persistent cross-version investigation workspaces (41366ed)
- analysis: add provider-neutral persistent snapshots (c439b9e)
- analysis: persist snapshots and close Hopper reliably (c6407ef)
- errors: add caller-safe typed error projections (3be439c)
- mcp: return structured typed tool results (eb38e4c)
Bug Fixes
- bridge: bound regex search work (733a382)
- bridge: bound regex search work (65682ee)
- ci: remove unused setup type export (c5728af)
- cli: render actionable analysis errors (af8c4ef)
- copy: use agent terminology (12060f6)
- errors: improve recovery guidance (77454dc)
- errors: return actionable caller-safe failures (fb0da03)
- hopper: cancel analysis and close documents reliably (179870e)
- hopper: return addresses for procedure relationships (2c707ab)
- linux: start Hopper demo sessions headlessly (32c5080)
- linux: start Hopper demo sessions headlessly (75818d1)
- security: restrict investigation artifact inputs (a2076b4)
Tests
- linux: verify setup through CLI and MCP (67504d2)
- package: preserve unsupported host verification (977119f)
- strengthen MCP prompt acceptance coverage (05fb9b1)
1.2.0 (2026-07-13)
Features
- artifacts: add approved native DMG traversal (24d000a)
- process: add deterministic capture v3 (d0e21f9)
- process: add deterministic capture v3 (5a361a6)
- process: introduce evidence-safe capture v4 (ee4d284)
Bug Fixes
- artifacts: diagnose unpacked ASAR integrity failures (a504342)
- ci: remove redundant process exports (19bb231)
- process: harden capture validation and cleanup (ac78de0)
Code Refactoring
Documentation
- document capture v4 and native mounts (aca518b)
- document process capture v3 (50f4a29)
- process: preserve capture invariants (841990b)
- skill: document capture v4 and DMG mounts (f0a9a3c)
Tests
- process: use deterministic hang fixture (ba15d16)
1.1.0 (2026-07-13)
Features
- setup: make installation explicit and safe (29d92ca)
- setup: make installation explicit and safe (3793889)
Bug Fixes
- preserve requested evidence paths on macOS (0c0e2b8)
- preserve requested evidence paths on macOS (3d0ad79)
Documentation
- api: regenerate TypeDoc reference (0a66cae)
- define REA contributor priorities (5df4ef6)
- explain the installation workflow (1c83263)
1.0.0 (2026-07-13)
⚠ BREAKING CHANGES
- contracts: batch_decompile, get_call_graph, and find_xrefs_to_name now return structured discriminated output shapes.
Features
Bug Fixes
- contracts: keep error schema internal (ac8cc66)
- contracts: return structured workflow failures (4c54ff6)
- native: classify pre-aborted analysis first (dfd598f)
Documentation
- list upgrade in CLI reference (8a24088)
0.5.0 (2026-07-13)
Features
- analysis: harden agent workflows and evidence boundaries (883db91)
- cli: align terminal workflows with MCP (b1912b1)
Bug Fixes
- analysis: accept valid final dossier pages (7c36f36)
- bridge: harden bounded Hopper boundaries (f8e8ea3)
- cli: preserve function provider provenance (c630f41)
- lifecycle: validate owned Hopper process identity (898d6b0)
- process: default capture networking to loopback (bce3398)
- process: keep network approval fail-closed (9526389)
Code Refactoring
- cli: share direct analysis tool types (329fdf6)
Documentation
Tests
- docs: keep localized claims and tool counts aligned (a7b84a9)
- verification: strengthen conformance and real-Hopper checks (0d36976)
0.4.0 (2026-07-12)
Features
- add cross-platform installation lifecycle (cc6a955)
- add cross-platform installation lifecycle (e651cb6)
Documentation
- document installation and Linux support (034563a)
- simplify REA onboarding (e1dfe86)
- simplify REA onboarding (d85b661)
Tests
- add package installation end-to-end coverage (993356b)
- stabilize artifact pagination coverage (f56bdde)
Continuous Integration
- enforce conventional pull request titles (07a0b98)
- enforce conventional pull request titles (3a21f16)
- verify installed package with Linux Hopper (4f97f69)
0.3.0 (2026-07-12)
Features
- add evidence-backed process investigations (cc8681a)
- cli: add guided local onboarding (8ca3db8)
- evolve REA analysis platform (4f18e26)
- identity: rename package and CLI to REA (3d70812)
- mcp: add typed bounded analysis tools (893d2e2)
- session: add dynamic binary lifecycle (f32e718)
Bug Fixes
- boundaries: reject unsafe local inputs (15e8cf3)
- doctor: require an executable Hopper launcher (aee9cb8)
- hopper: launch analysis without stealing focus (ff321dc)
- hopper: make loader selection non-interactive (2b7ef86)
- keep execution options internal (167a824)
- setup: persist detected Hopper launcher (b2866e4)
- setup: preserve consent and startup target kind (a67054f)
- setup: preserve invalid MCP configuration (88f5edc)
- targets: cancel startup and probe PE offsets (66b8d6e)
- verify: tolerate exited Hopper helpers (b167bd7)
Code Refactoring
- cli: share runtime between CLI and MCP (97541d8)
Documentation
- document frictionless binary workflow (ee6d539)
- document the 43-tool workflow (1f235cb)
- record runtime and release constraints (62ede51)
- redesign and localize README (051b6db)
- redesign and localize README (910eda6)
Tests
- add source-built Hopper conformance fixtures (d648bcd)
0.2.1 (2026-07-12)
Documentation
0.2.0 (2026-07-12)
Features
- cli: add guided local onboarding (8ca3db8)
- identity: rename package and CLI to REA (3d70812)
- session: add dynamic binary lifecycle (f32e718)
Bug Fixes
- boundaries: reject unsafe local inputs (15e8cf3)
- doctor: require an executable Hopper launcher (aee9cb8)
- hopper: launch analysis without stealing focus (ff321dc)
- hopper: make loader selection non-interactive (2b7ef86)
- setup: persist detected Hopper launcher (b2866e4)
- setup: preserve consent and startup target kind (a67054f)
- setup: preserve invalid MCP configuration (88f5edc)
- targets: cancel startup and probe PE offsets (66b8d6e)
- verify: tolerate exited Hopper helpers (b167bd7)
Code Refactoring
- cli: share runtime between CLI and MCP (97541d8)