Version v3.3.0

This commit is contained in:
Luke Street 2025-09-23 13:09:57 -06:00
parent 56dac46280
commit 7a8efb4c88
5 changed files with 52 additions and 8 deletions

44
AGENTS.md Normal file
View File

@ -0,0 +1,44 @@
# Repository Guidelines
## Project Structure & Module Organization
- `objdiff-core`: core library with diffing logic and shared components
- `objdiff-cli`: CLI/TUI with `ratatui`
- `objdiff-gui`: GUI with `eframe`/`egui`
- `objdiff-wasm`: WebAssembly bindings
objdiff has three main frontends: GUI, CLI/TUI, and [web](https://github.com/encounter/objdiff-web) (utilizing `objdiff-wasm`).
`objdiff-gui` is the most fully-featured and is the primary target for new features.
`objdiff-cli` has an interactive TUI `diff` mode (powered by `ratatui`) and a non-interactive `report` mode to generate detailed progress reports (e.g. for <https://decomp.dev>).
`objdiff-wasm` is compiled into a [WebAssembly Component](https://component-model.bytecodealliance.org/). The [API](objdiff-wasm/wit/objdiff.wit) is defined using [WIT](https://component-model.bytecodealliance.org/design/wit.html). The web interface is separate, but mirrors the GUI in functionality.
## Build, Test, and Development Commands
Run `cargo build` for a debug build and `cargo build --release` for an optimized build.
The CLI can be exercised with `cargo run --release --bin objdiff-cli -- --help`.
The WASM build is not included in the workspace by default due to differences in toolchain and target; build it with `npm -C objdiff-wasm run build`. (nightly required)
In general, do NOT use `--workspace`, as it will include the WASM crate and likely fail. Formatting and linting commands are exempt.
Pre-commit tasks:
- `cargo test` to run the test suite
- `cargo +nightly fmt --all` to format code (nightly required)
- `cargo +nightly clippy --all-targets --all-features --workspace -- -D warnings` to lint code (nightly required)
- `cargo deny check` (`cargo install --locked cargo-deny` if needed) if dependencies change
## Testing Guidelines
Favor focused unit tests adjacent to the code, and integration scenarios in `objdiff-core/tests`.
Integration tests utilize snapshots with the `insta` crate; run `curl -LsSf https://insta.rs/install.sh | sh` if needed.
To generate updated snapshots, use `cargo insta test`, review diffs manually, then accept changes with `cargo insta accept` (or simply `mv` to accept specific snapshots).
## Configuration Tips
- `config.schema.json`: JSON schema for the user-facing project config file (`objdiff.json`)
- `objdiff-core/config-schema.json`: Internal options schema to generate `DiffObjConfig` (see `objdiff-core/config_gen.rs`)
The project configuration (`objdiff.json`) is intended to be generated by the projects' build system. It includes paths to the target (expected) and base (current) object files, along with build commands and file watch patterns. See `README.md` for a summary of key options.

8
Cargo.lock generated
View File

@ -3484,7 +3484,7 @@ dependencies = [
[[package]]
name = "objdiff-cli"
version = "3.2.1"
version = "3.3.0"
dependencies = [
"anyhow",
"argp",
@ -3507,7 +3507,7 @@ dependencies = [
[[package]]
name = "objdiff-core"
version = "3.2.1"
version = "3.3.0"
dependencies = [
"anyhow",
"arm-attr",
@ -3563,7 +3563,7 @@ dependencies = [
[[package]]
name = "objdiff-gui"
version = "3.2.1"
version = "3.3.0"
dependencies = [
"anyhow",
"argp",
@ -3601,7 +3601,7 @@ dependencies = [
[[package]]
name = "objdiff-wasm"
version = "3.2.1"
version = "3.3.0"
dependencies = [
"log",
"objdiff-core",

View File

@ -14,7 +14,7 @@ default-members = [
resolver = "3"
[workspace.package]
version = "3.2.1"
version = "3.3.0"
authors = ["Luke Street <luke@street.dev>"]
edition = "2024"
license = "MIT OR Apache-2.0"

View File

@ -1,12 +1,12 @@
{
"name": "objdiff-wasm",
"version": "3.2.1",
"version": "3.3.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "objdiff-wasm",
"version": "3.2.1",
"version": "3.3.0",
"license": "MIT OR Apache-2.0",
"devDependencies": {
"@biomejs/biome": "^1.9.3",

View File

@ -1,6 +1,6 @@
{
"name": "objdiff-wasm",
"version": "3.2.1",
"version": "3.3.0",
"description": "A local diffing tool for decompilation projects.",
"author": {
"name": "Luke Street",