@rom-weaver/cli 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +39 -22
  2. package/docs/completions/_rom-weaver +1242 -644
  3. package/docs/completions/rom-weaver.bash +690 -109
  4. package/docs/completions/rom-weaver.elv +973 -576
  5. package/docs/completions/rom-weaver.fish +841 -536
  6. package/docs/completions/rom-weaver.ps1 +1006 -588
  7. package/docs/man/rom-weaver-bundle-create.1 +55 -8
  8. package/docs/man/rom-weaver-bundle-parse.1 +15 -6
  9. package/docs/man/rom-weaver-bundle-schema.1 +16 -7
  10. package/docs/man/rom-weaver-bundle.1 +15 -6
  11. package/docs/man/rom-weaver-cheat.1 +107 -0
  12. package/docs/man/rom-weaver-checksum.1 +21 -6
  13. package/docs/man/rom-weaver-completions.1 +15 -6
  14. package/docs/man/rom-weaver-compress.1 +23 -11
  15. package/docs/man/rom-weaver-extract.1 +23 -8
  16. package/docs/man/rom-weaver-formats.1 +15 -6
  17. package/docs/man/rom-weaver-identify-database-import-redump.1 +15 -6
  18. package/docs/man/rom-weaver-identify-database-install-all.1 +15 -6
  19. package/docs/man/rom-weaver-identify-database-install-group.1 +15 -6
  20. package/docs/man/rom-weaver-identify-database-install.1 +15 -6
  21. package/docs/man/rom-weaver-identify-database-list.1 +15 -6
  22. package/docs/man/rom-weaver-identify-database-path.1 +15 -6
  23. package/docs/man/rom-weaver-identify-database-remove.1 +15 -6
  24. package/docs/man/rom-weaver-identify-database-status.1 +15 -6
  25. package/docs/man/rom-weaver-identify-database-update.1 +15 -6
  26. package/docs/man/rom-weaver-identify-database.1 +15 -6
  27. package/docs/man/rom-weaver-identify.1 +27 -6
  28. package/docs/man/rom-weaver-man.1 +15 -6
  29. package/docs/man/rom-weaver-patch-apply.1 +64 -15
  30. package/docs/man/rom-weaver-patch-create.1 +33 -8
  31. package/docs/man/rom-weaver-patch-validate.1 +35 -7
  32. package/docs/man/rom-weaver-patch.1 +15 -6
  33. package/docs/man/rom-weaver-probe.1 +18 -6
  34. package/docs/man/rom-weaver-save-export-schema.1 +80 -0
  35. package/docs/man/rom-weaver-save-get.1 +83 -0
  36. package/docs/man/rom-weaver-save-identify.1 +80 -0
  37. package/docs/man/rom-weaver-save-inspect.1 +80 -0
  38. package/docs/man/rom-weaver-save-set.1 +89 -0
  39. package/docs/man/rom-weaver-save.1 +87 -0
  40. package/docs/man/rom-weaver-setup.1 +18 -6
  41. package/docs/man/rom-weaver-tools-ppf-undo.1 +16 -7
  42. package/docs/man/rom-weaver-tools.1 +15 -6
  43. package/docs/man/rom-weaver-trim.1 +24 -15
  44. package/docs/man/rom-weaver-weave.1 +64 -15
  45. package/docs/man/rom-weaver.1 +23 -8
  46. package/package.json +20 -13
package/README.md CHANGED
@@ -1,28 +1,36 @@
1
- <h1 align="center"><img src="packages/rom-weaver-webapp/src/assets/app/root/logo.svg" alt="rom-weaver logo" width="64" height="64" align="middle"> rom-weaver</h1>
2
-
3
1
  <p align="center">
4
- Local-first toolkit for ROMs and disc images: inspect, extract, compress, and apply, create, or bundle patches. Offline via a browser service-worker PWA or CLI.
2
+ <a href="https://rom-weaver.com/apply">
3
+ <picture>
4
+ <source media="(max-width: 600px) and (prefers-color-scheme: dark)" srcset="packages/rom-weaver-webapp/design/readme-banner-mobile-dark.svg">
5
+ <source media="(max-width: 600px)" srcset="packages/rom-weaver-webapp/design/readme-banner-mobile.svg">
6
+ <source media="(prefers-color-scheme: dark)" srcset="packages/rom-weaver-webapp/design/readme-banner-dark.svg">
7
+ <img src="packages/rom-weaver-webapp/design/readme-banner.svg" alt="rom-weaver — Your ROM workflow. One toolkit. Patch, Compress, Extract, Convert, Cheat, Save Edit, Identify. rom-weaver.com." width="100%">
8
+ </picture>
9
+ </a>
5
10
  </p>
6
11
 
7
- <p align="center">
12
+ Your ROM workflow. One toolkit.
13
+
14
+ Patch, compress, extract, convert, and identify ROMs and disc images. Bake in cheat codes and edit supported game saves in your browser or CLI. Play supported games in the browser with EmulatorJS.
15
+
16
+ Works offline in your browser or CLI. Your files stay on your device. No telemetry.
17
+
18
+ <p>
19
+ <a href="https://rom-weaver.com/apply-patches"><img alt="Open the webapp" src="https://img.shields.io/badge/Open_the_webapp-d9690f?logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGQ9Ik0xNCAzaDd2N00yMSAzIDEwIDE0Ii8%2BPHBhdGggZD0iTTEwIDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRhMiAyIDAgMCAwIDItMnYtNSIvPjwvc3ZnPg%3D%3D"></a>
20
+ <a href="https://github.com/sponsors/brandonocasey"><img alt="Sponsor on GitHub" src="https://img.shields.io/badge/Sponsor_on_GitHub-365d82?logo=githubsponsors&amp;logoColor=white"></a>
21
+ <a href="https://ko-fi.com/brandonocasey"><img alt="Support on Ko-fi" src="https://img.shields.io/badge/Support_on_Ko--fi-365d82?logo=kofi&amp;logoColor=white"></a>
8
22
  <a href="https://www.npmjs.com/package/rom-weaver"><img alt="npm version" src="https://img.shields.io/npm/v/rom-weaver?logo=npm&amp;logoColor=white&amp;label=npm&amp;color=d9690f"></a>
9
23
  <a href="https://crates.io/crates/rom-weaver-cli"><img alt="crates.io version" src="https://img.shields.io/crates/v/rom-weaver-cli?logo=rust&amp;logoColor=white&amp;label=crates.io&amp;color=d9690f"></a>
10
24
  <a href="https://github.com/orgs/rom-weaver/packages/container/package/rom-weaver-cli"><img alt="Container images on GitHub Container Registry" src="https://img.shields.io/badge/ghcr.io-rom--weaver-d9690f?logo=docker&amp;logoColor=white"></a>
11
25
  <a href="https://github.com/rom-weaver/homebrew-tap"><img alt="Homebrew tap" src="https://img.shields.io/badge/homebrew-rom--weaver%2Ftap-d9690f?logo=homebrew&amp;logoColor=white"></a>
26
+ <a href="https://github.com/rom-weaver/rom-weaver/actions/workflows/ci.yml"><img alt="CI status" src="https://img.shields.io/github/actions/workflow/status/rom-weaver/rom-weaver/ci.yml?branch=main&amp;logo=githubactions&amp;logoColor=white&amp;label=CI&amp;color=365d82"></a>
27
+ <a href="package.json"><img alt="Node.js 22 or newer" src="https://img.shields.io/badge/Node.js-22%2B-365d82?logo=nodedotjs&amp;logoColor=white"></a>
28
+ <a href=".config/mise.toml"><img alt="Rust 1.97.1" src="https://img.shields.io/badge/Rust-1.97.1-2c323b?logo=rust&amp;logoColor=white"></a>
29
+ <a href="LICENSE"><img alt="AGPL-3.0-or-later license" src="https://img.shields.io/badge/license-AGPL--3.0--or--later-365d82"></a>
12
30
  </p>
13
31
 
14
- <p align="center">
15
- <a href="https://github.com/rom-weaver/rom-weaver/actions/workflows/ci.yml"><img alt="CI status" src="https://img.shields.io/github/actions/workflow/status/rom-weaver/rom-weaver/ci.yml?branch=main&amp;logo=githubactions&amp;logoColor=white&amp;label=CI&amp;color=4a6d63"></a>
16
- <a href="package.json"><img alt="Node.js 22 or newer" src="https://img.shields.io/badge/Node.js-22%2B-4a6d63?logo=nodedotjs&logoColor=white"></a>
17
- <a href=".config/mise.toml"><img alt="Rust 1.97.1" src="https://img.shields.io/badge/Rust-1.97.1-2c323b?logo=rust&logoColor=white"></a>
18
- <a href="LICENSE"><img alt="AGPL-3.0-or-later license" src="https://img.shields.io/badge/license-AGPL--3.0--or--later-4a6d63"></a>
19
- </p>
20
-
21
- <p align="center">
22
- <a href="https://rom-weaver.com/apply">Open the webapp</a>
23
- · <a href="https://github.com/sponsors/brandonocasey">Sponsor on GitHub</a>
24
- · <a href="https://ko-fi.com/brandonocasey">Support on Ko-fi</a>
25
- </p>
32
+ <details>
33
+ <summary>Contents</summary>
26
34
 
27
35
  <!-- START doctoc -->
28
36
 
@@ -41,13 +49,17 @@
41
49
 
42
50
  <!-- END doctoc -->
43
51
 
52
+ </details>
53
+
44
54
  ## Install
45
55
 
46
56
  Choose the [webapp](#webapp), [self-hosting](#self-hosting), or [CLI](#cli) path below.
47
57
 
48
58
  ## Webapp
49
59
 
50
- Open [rom-weaver.com/apply](https://rom-weaver.com/apply). Add your ROM and patches, then download the result. Files are processed on your device. No install or account is needed.
60
+ Open [rom-weaver.com/apply-patches](https://rom-weaver.com/apply-patches). Add your ROM and patches, then download the result. Files are processed on your device. No install or account is needed.
61
+
62
+ For offline use, first cache the app and any needed identify packs, cheat databases, and emulator cores. Remote files still need a connection. See [offline behavior](docs/explanation/local-first.md#offline) and [privacy](docs/legal/privacy.md).
51
63
 
52
64
  Start with [your first patch](docs/tutorials/first-patch.md) to practise on supplied homebrew files. The [browser guides](docs/README.md#in-the-browser) cover applying, creating, bundling, and testing ROM patches.
53
65
 
@@ -81,6 +93,8 @@ Homebrew covers macOS arm64/Intel and Linux arm64/x86-64. The install script cov
81
93
 
82
94
  Windows, Scoop, PowerShell, cargo-binstall, mise, Docker, shell completions, and building from source are all in [Install the CLI](./docs/how-to/install-cli.md).
83
95
 
96
+ All three methods above carry the identify and cheat databases, so they need no extra step. Methods that install only the executable - `cargo install`, `cargo binstall`, and `mise` - need `rom-weaver setup` afterwards to download that data, which `identify`, `probe --identify`, and cheat baking read.
97
+
84
98
  Hitting `Permission denied`? See [File permissions](./docs/reference/cli.md#file-permissions).
85
99
 
86
100
  The [development guide](./docs/development/development.md) covers the full toolchain setup, webapp builds, and tests.
@@ -100,12 +114,15 @@ The CLI and browser share one Rust engine. Browser workers and storage add costs
100
114
  ## Features
101
115
 
102
116
  - **Apply and create patches.** Twenty-one formats, including IPS, BPS, UPS, xdelta/VCDIFF, PPF, RUP, BDF/BSDIFF40, APS, and DCP (Dreamcast), with ordered multi-patch chains, checksum validation when the format or bundle supplies expected values, and cheat-code baking. Three of them (DCP, BSP, and HDiffPatch) can only be applied, not created.
117
+ - **Play and test in the browser.** Run supported games with EmulatorJS, including patched output. Keep game saves and save states in browser storage, and import or export them. See [browser testing](docs/how-to/test-roms-in-browser.md) and [supported platforms](docs/reference/formats.md#browser-emulator-support).
118
+ - **Use cheat codes.** Select codes from the built-in database or enter your own. Bake supported ROM cheats into a game or export them as a patch. Codes that require runtime memory writes cannot be baked. See [browser cheats](docs/how-to/use-browser-cheats.md).
119
+ - **Edit supported game saves.** The beta Save Editor inspects and edits supported fields, validates checksums, and writes an edited copy. Game and layout support is specific; emulator save states are not editable game saves. See the [Save Editor reference](docs/reference/save-editor.md) and [CLI save guide](docs/how-to/cli-save.md).
103
120
  - **Inspect and extract containers.** ZIP, 7z, RAR, the tar family, CHD, RVZ, Z3DS, CSO, PBP, GCZ, WIA, WBFS, and more, including nested archives.
104
121
  - **Create format-specific compressed containers.** ZIP, 7z, CHD, RVZ, and Z3DS with codec-aware compression settings. CHD and RVZ outputs are checked for round-trip compatibility with chdman and dolphin-tool.
105
122
  - **Checksum and verify.** CRC32, MD5, SHA-1, SHA-256, BLAKE3, and friends, with copier-header detection, header repair, and header-aware checksum variants.
106
- - **Trim and restore.** Trimming for NDS, GBA, 3DS, XISO, and RVZ scrub. NDS, GBA, and 3DS can be reverted, with an opt-in footer that restores the original file byte-for-byte.
107
- - **Share workflows.** Distributable [`rom-weaver-bundle.json`](./docs/rom-weaver-bundle-v1.schema.json) bundles pin patch order, checksums, and output naming so others can replay the exact workflow.
108
- - **Local-first and private.** Everything runs on your machine. The webapp is an installable PWA that works offline and never uploads your files.
123
+ - **Trim and restore.** Trimming for NDS, GBA, 3DS, XISO, and RVZ scrub. NDS, GBA, and 3DS can be padded back out. An optional footer records the original length and one padding byte; exact restoration has [limits](docs/how-to/cli-trim.md#make-the-trim-reversible).
124
+ - **Share workflows.** Distributable [`rom-weaver-bundle.json`](./docs/rom-weaver-bundle-v2.schema.json) bundles pin patch order, checksums, and output naming so others can replay the exact workflow.
125
+ - **Local-first and private.** Everything runs on your machine. The webapp is an installable PWA that works offline with cached assets. Your files are never uploaded, and rom-weaver sends no telemetry.
109
126
  - **One engine, two frontends.** The same Rust core powers the terminal CLI and the threaded WASM webapp. CLI operation commands can emit line-delimited JSON for scripting.
110
127
 
111
128
  The complete format, codec, and checksum compatibility tables are maintained in [Supported formats](./docs/reference/formats.md).
@@ -118,7 +135,7 @@ rom-weaver is beta software and follows Semantic Versioning, but until v1.0, bre
118
135
 
119
136
  ### First complete public release
120
137
 
121
- v0.7.2 was the first complete public release. The changelog and the git history go back further, but v0.6.0 through v0.7.1 failed partway through the release pipeline or were only partially published. v0.7.1 completed most of the pipeline, but it still missed the crates.io CLI package, shipped a broken unscoped npm launcher, and built the static webapp archive with mismatched release metadata. Starting with v0.7.2, all public install methods were intended to work together. Install commands below resolve the current release unless you explicitly pin a version.
138
+ v0.7.2 was the first complete public release. The changelog and the git history go back further, but v0.6.0 through v0.7.1 failed partway through the release pipeline or were only partially published. v0.7.1 completed most of the pipeline, but it still missed the crates.io CLI package, shipped a broken unscoped npm launcher, and built the static webapp archive with mismatched release metadata. Starting with v0.7.2, all public install methods were intended to work together. Install commands above resolve the current release unless you explicitly pin a version.
122
139
 
123
140
  ### LLM-assisted development
124
141
 
@@ -185,7 +202,7 @@ Start with the browser-first [documentation home](https://rom-weaver.com/docs) o
185
202
 
186
203
  ## Contributing and support
187
204
 
188
- Bug reports and contributions are welcome. Read the [contribution guide](CONTRIBUTING.md) and [code of conduct](.github/CODE_OF_CONDUCT.md) before submitting a change. Because rom-weaver is dual-licensed, code and documentation changes need a one-time signature on the [Contributor License Agreement](CLA.md). The `CLA Signed` check asks for it on your first pull request. One signature covers every repository in the [`rom-weaver` organization](https://github.com/rom-weaver) whose contribution process references the agreement. You keep the copyright in your work. Report suspected vulnerabilities through GitHub's private reporting form in the [security policy](.github/SECURITY.md). If rom-weaver has been useful to you, you can support continued development through [GitHub Sponsors](https://github.com/sponsors/brandonocasey) or [Ko-fi](https://ko-fi.com/brandonocasey).
205
+ Bug reports and contributions are welcome. Read the [contribution guide](CONTRIBUTING.md) and [code of conduct](https://github.com/rom-weaver/rom-weaver?tab=coc-ov-file#readme) before submitting a change. Because rom-weaver is dual-licensed, code and documentation changes need a one-time signature on the [Contributor License Agreement](CLA.md). The `CLA Signed` check asks for it on your first pull request. One signature covers every repository in the [`rom-weaver` organization](https://github.com/rom-weaver) whose contribution process references the agreement. You keep the copyright in your work. Report suspected vulnerabilities through GitHub's private reporting form in the [security policy](.github/SECURITY.md). If rom-weaver has been useful to you, you can support continued development through [GitHub Sponsors](https://github.com/sponsors/brandonocasey) or [Ko-fi](https://ko-fi.com/brandonocasey).
189
206
 
190
207
  ## License
191
208