@rom-weaver/cli 0.9.0 → 0.10.1

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 (3) hide show
  1. package/LICENSE +0 -7
  2. package/README.md +51 -27
  3. package/package.json +13 -11
package/LICENSE CHANGED
@@ -1,10 +1,3 @@
1
- rom-weaver
2
-
3
- SPDX-License-Identifier: AGPL-3.0-or-later
4
-
5
- This file contains the GNU Affero General Public License that applies to
6
- rom-weaver's public distribution.
7
-
8
1
  # GNU AFFERO GENERAL PUBLIC LICENSE
9
2
 
10
3
  Version 3, 19 November 2007
package/README.md CHANGED
@@ -19,7 +19,7 @@
19
19
  </p>
20
20
 
21
21
  <p align="center">
22
- <a href="https://rom-weaver.com/weave">Open the webapp</a>
22
+ <a href="https://rom-weaver.com/apply">Open the webapp</a>
23
23
  · <a href="docs/README.md">Docs index</a>
24
24
  · <a href="https://github.com/sponsors/brandonocasey">Sponsor on GitHub</a>
25
25
  · <a href="https://ko-fi.com/brandonocasey">Support on Ko-fi</a>
@@ -28,6 +28,7 @@
28
28
  <!-- START doctoc -->
29
29
 
30
30
  - [Why](#why)
31
+ - [Performance](#performance)
31
32
  - [Features](#features)
32
33
  - [Notices](#notices)
33
34
  - [Install](#install)
@@ -66,6 +67,22 @@ record the whole recipe - patch order, checksums, output names - in a bundle
66
67
  file you can hand to someone else. It runs the same on Linux, macOS, and
67
68
  Windows, and in the browser if you would rather not install anything.
68
69
 
70
+ For the current measurements and trade-offs, see the [performance brief](#performance).
71
+
72
+ ## Performance
73
+
74
+ rom-weaver uses the same Rust engine in the CLI and threaded WASM webapp. In a
75
+ representative 128 MiB GameCube ISO test, native RVZ compression completed in
76
+ about 93 ms with four threads. The browser build completed the same operation
77
+ in about 221 ms with one thread; four-thread RVZ creation is currently limited
78
+ by a browser/OPFS threaded-I/O issue, so these numbers are not apples-to-apples.
79
+
80
+ Production WASM runs `wasm-opt -O4`. In matched artifact measurements, that
81
+ reduced the raw Wasm from 7.12 MB to 6.44 MB and the Brotli transfer size from
82
+ 1.73 MB to 1.71 MB. The full browser codec matrix remains the source of truth
83
+ for runtime comparisons, so these figures are indicative rather than a
84
+ general speed claim.
85
+
69
86
  ## Features
70
87
 
71
88
  - **Apply and create patches.** Twenty-one formats, including IPS, BPS, UPS,
@@ -83,7 +100,7 @@ Windows, and in the browser if you would rather not install anything.
83
100
  - **Trim and restore.** Trimming for NDS, GBA, 3DS, XISO, and RVZ scrub. NDS,
84
101
  GBA, and 3DS can be reverted, with an opt-in footer that restores the
85
102
  original file byte-for-byte.
86
- - **Share workflows.** Distributable [`rom-weaver-bundle.json`](docs/rom-weaver-bundle-v1.schema.json)
103
+ - **Share workflows.** Distributable [`rom-weaver-bundle.json`](./docs/rom-weaver-bundle-v1.schema.json)
87
104
  bundles pin patch order, checksums, and output naming so others can replay
88
105
  the exact workflow.
89
106
  - **Local-first and private.** Everything runs on your machine. The webapp is
@@ -92,7 +109,7 @@ Windows, and in the browser if you would rather not install anything.
92
109
  and the threaded WASM webapp, with line-delimited JSON output for scripting.
93
110
 
94
111
  The complete format, codec, and checksum compatibility tables are maintained
95
- in the [CLI guide](docs/cli.md#supported-formats).
112
+ in the [CLI guide](./docs/hosting/cli.md#supported-formats).
96
113
 
97
114
  ## Notices
98
115
 
@@ -140,15 +157,19 @@ edits and corrections are welcome.
140
157
 
141
158
  ### Webapp
142
159
 
143
- Open the hosted webapp at **[rom-weaver.com/weave](https://rom-weaver.com/weave)**. You
160
+ Open the hosted webapp at **[rom-weaver.com/apply](https://rom-weaver.com/apply)**. You
144
161
  do not need to install anything or create an account. Choose **Weave**, add a
145
162
  ROM and one or more patches, review the detected formats and checksums, then run
146
163
  the workflow and save the result. Use **Create** to generate a distributable
147
164
  patch from an original and a modified file. Your files are processed locally
148
165
  and never leave the device. Install it as a PWA from the browser menu to use it
149
166
  offline.
150
- New here? [Try the sample weave](https://rom-weaver.com/weave?bundle=first-weave.zip)
151
- with tiny synthetic files.
167
+ New here? [Try the sample weave](https://rom-weaver.com/apply?bundle=first-weave.zip)
168
+ with a tiny original homebrew NES ROM and two patches that change “HELLO WORLD” to “MODIFIED ROM.”
169
+ For a guided explanation, use
170
+ [guided Apply](https://rom-weaver.com/apply?guide=apply),
171
+ [guided Create](https://rom-weaver.com/create?guide=create), or
172
+ [guided Bundle](https://rom-weaver.com/apply?guide=bundle).
152
173
 
153
174
  <a name="self-host-the-webapp"></a>
154
175
 
@@ -158,7 +179,7 @@ with tiny synthetic files.
158
179
  The Docker source build serves the full webapp: it builds the WASM module, adds
159
180
  cross-origin isolation headers, supports client-side routes, and precompresses
160
181
  assets. The
161
- [self-hosting guide](docs/self-hosting.md) covers reverse proxies, subpath
182
+ [self-hosting guide](./docs/hosting/self-hosting.md) covers reverse proxies, subpath
162
183
  routing, HTTPS certificates, service-worker scope, and the required COOP/COEP
163
184
  headers.
164
185
 
@@ -293,7 +314,7 @@ docker run --rm \
293
314
  Mount your ROM directory at `/work` and pass paths under it. `--user` matters:
294
315
  bind-mounted files keep their host ownership, so without it the container cannot
295
316
  read files it does not own and leaves anything it writes owned by an unknown uid.
296
- See [Run in Docker](docs/cli.md#run-in-docker).
317
+ See [Run in Docker](./docs/hosting/cli.md#run-in-docker).
297
318
 
298
319
  </details>
299
320
 
@@ -315,14 +336,14 @@ toolchain.
315
336
  </details>
316
337
 
317
338
  Hitting `Permission denied`? See
318
- [File permissions](docs/cli.md#file-permissions).
339
+ [File permissions](./docs/hosting/cli.md#file-permissions).
319
340
 
320
- The [development guide](docs/development.md) covers the full toolchain setup,
341
+ The [development guide](./docs/development/development.md) covers the full toolchain setup,
321
342
  webapp builds, and tests.
322
343
 
323
344
  ## Screenshots
324
345
 
325
- [View every screenshot at full size.](docs/screenshots.md)
346
+ [View every screenshot at full size.](./docs/development/screenshots.md)
326
347
 
327
348
  <table>
328
349
  <thead>
@@ -333,38 +354,38 @@ webapp builds, and tests.
333
354
  </thead>
334
355
  <tbody>
335
356
  <tr>
336
- <td>Desktop: Apply patches (Weave)</td>
357
+ <td>Desktop: ordered patch stack</td>
337
358
  <td>
338
359
  <picture>
339
- <source media="(prefers-color-scheme: dark)" srcset="packages/rom-weaver-webapp/design/weave-desktop-dark.png">
340
- <img src="packages/rom-weaver-webapp/design/weave-desktop-light.png" alt="Filled Weave patch workflow on desktop">
360
+ <source media="(prefers-color-scheme: dark)" srcset="packages/rom-weaver-webapp/design/apply-patches-desktop-dark.webp">
361
+ <img src="packages/rom-weaver-webapp/design/apply-patches-desktop-light.webp" alt="Focused Weave patch stack with two ordered sample patches on desktop">
341
362
  </picture>
342
363
  </td>
343
364
  </tr>
344
365
  <tr>
345
- <td>Desktop: Create a patch</td>
366
+ <td>Desktop: create output</td>
346
367
  <td>
347
368
  <picture>
348
- <source media="(prefers-color-scheme: dark)" srcset="packages/rom-weaver-webapp/design/create-desktop-dark.png">
349
- <img src="packages/rom-weaver-webapp/design/create-desktop-light.png" alt="Filled Create patch workflow on desktop">
369
+ <source media="(prefers-color-scheme: dark)" srcset="packages/rom-weaver-webapp/design/create-output-desktop-dark.webp">
370
+ <img src="packages/rom-weaver-webapp/design/create-output-desktop-light.webp" alt="Focused Create output card with BPS selected on desktop">
350
371
  </picture>
351
372
  </td>
352
373
  </tr>
353
374
  <tr>
354
- <td>Mobile: Apply patches (Weave)</td>
375
+ <td>Mobile: Original and Modified</td>
355
376
  <td align="center">
356
377
  <picture>
357
- <source media="(prefers-color-scheme: dark)" srcset="packages/rom-weaver-webapp/design/weave-mobile-dark.png">
358
- <img src="packages/rom-weaver-webapp/design/weave-mobile-light.png" alt="Filled Weave patch workflow on mobile" width="390">
378
+ <source media="(prefers-color-scheme: dark)" srcset="packages/rom-weaver-webapp/design/create-inputs-mobile-dark.webp">
379
+ <img src="packages/rom-weaver-webapp/design/create-inputs-mobile-light.webp" alt="Focused Create Original and Modified cards on mobile" width="390">
359
380
  </picture>
360
381
  </td>
361
382
  </tr>
362
383
  <tr>
363
- <td>Mobile: Create a patch</td>
384
+ <td>Mobile: bundle output options</td>
364
385
  <td align="center">
365
386
  <picture>
366
- <source media="(prefers-color-scheme: dark)" srcset="packages/rom-weaver-webapp/design/create-mobile-dark.png">
367
- <img src="packages/rom-weaver-webapp/design/create-mobile-light.png" alt="Filled Create patch workflow on mobile" width="390">
387
+ <source media="(prefers-color-scheme: dark)" srcset="packages/rom-weaver-webapp/design/bundle-output-mobile-dark.webp">
388
+ <img src="packages/rom-weaver-webapp/design/bundle-output-mobile-light.webp" alt="Focused patch-only bundle controls on mobile" width="390">
368
389
  </picture>
369
390
  </td>
370
391
  </tr>
@@ -373,8 +394,11 @@ webapp builds, and tests.
373
394
 
374
395
  ## Documentation
375
396
 
376
- The [documentation index](docs/README.md) routes to the CLI, deployment,
377
- integration, development, architecture, and format-reference guides.
397
+ Start with the browser-first [documentation home](https://rom-weaver.com/docs)
398
+ or the repository [documentation index](./docs/README.md). The web docs include
399
+ a task and tool picker, guided samples, focused screenshots, and a
400
+ [FAQ](./docs/usage/faq.md). CLI, deployment, integration, development,
401
+ architecture, and format references each have their own guides.
378
402
 
379
403
  ## Contributing and support
380
404
 
@@ -397,9 +421,9 @@ support continued development through
397
421
  Copyright (C) Brandon Casey and rom-weaver contributors
398
422
 
399
423
  The public distribution is licensed under
400
- [AGPL-3.0-or-later](LICENSE). [Commercial licensing](COMMERCIAL_LICENSE.md) is
424
+ [AGPL-3.0-or-later](LICENSE). [Commercial licensing](COMMERCIAL.md) is
401
425
  also available for first-party rom-weaver code. Bundled third-party components
402
426
  retain their own licenses. Release builds include a generated
403
- [attribution and license inventory](https://rom-weaver.com/NOTICE) and
427
+ [combined attribution and license inventory](https://rom-weaver.com/NOTICE) and
404
428
  corresponding license texts. Those third-party terms continue to apply under
405
429
  every rom-weaver licensing option.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rom-weaver/cli",
3
- "version": "0.9.0",
3
+ "version": "0.10.1",
4
4
  "author": "Brandon Casey",
5
5
  "license": "AGPL-3.0-or-later",
6
6
  "description": "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.",
@@ -63,17 +63,18 @@
63
63
  "node": ">=22"
64
64
  },
65
65
  "optionalDependencies": {
66
- "@rom-weaver/darwin-arm64": "0.9.0",
67
- "@rom-weaver/darwin-x64": "0.9.0",
68
- "@rom-weaver/linux-arm64-musl": "0.9.0",
69
- "@rom-weaver/linux-ia32-musl": "0.9.0",
70
- "@rom-weaver/linux-x64-gnu": "0.9.0",
71
- "@rom-weaver/linux-x64-musl": "0.9.0",
72
- "@rom-weaver/win32-arm64-msvc": "0.9.0",
73
- "@rom-weaver/win32-ia32-msvc": "0.9.0",
74
- "@rom-weaver/win32-x64-msvc": "0.9.0"
66
+ "@rom-weaver/darwin-arm64": "0.10.1",
67
+ "@rom-weaver/darwin-x64": "0.10.1",
68
+ "@rom-weaver/linux-arm64-musl": "0.10.1",
69
+ "@rom-weaver/linux-ia32-musl": "0.10.1",
70
+ "@rom-weaver/linux-x64-gnu": "0.10.1",
71
+ "@rom-weaver/linux-x64-musl": "0.10.1",
72
+ "@rom-weaver/win32-arm64-msvc": "0.10.1",
73
+ "@rom-weaver/win32-ia32-msvc": "0.10.1",
74
+ "@rom-weaver/win32-x64-msvc": "0.10.1"
75
75
  },
76
76
  "scripts": {
77
+ "docs:lint": "markdownlint-cli2",
77
78
  "docs:toc": "node scripts/update-markdown-toc.mjs",
78
79
  "dev": "mise run dev",
79
80
  "preview": "mise run preview",
@@ -92,6 +93,7 @@
92
93
  "@commitlint/config-conventional": "21.2.0",
93
94
  "cross-spawn": "7.0.6",
94
95
  "doctoc": "2.5.0",
95
- "lefthook": "2.1.10"
96
+ "lefthook": "2.1.10",
97
+ "markdownlint-cli2": "0.23.2"
96
98
  }
97
99
  }