@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.
- package/LICENSE +0 -7
- package/README.md +51 -27
- package/package.json +13 -11
package/LICENSE
CHANGED
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/
|
|
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/
|
|
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/
|
|
151
|
-
with tiny
|
|
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:
|
|
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/
|
|
340
|
-
<img src="packages/rom-weaver-webapp/design/
|
|
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:
|
|
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.
|
|
349
|
-
<img src="packages/rom-weaver-webapp/design/create-desktop-light.
|
|
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:
|
|
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/
|
|
358
|
-
<img src="packages/rom-weaver-webapp/design/
|
|
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:
|
|
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/
|
|
367
|
-
<img src="packages/rom-weaver-webapp/design/
|
|
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
|
-
|
|
377
|
-
|
|
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](
|
|
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.
|
|
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.
|
|
67
|
-
"@rom-weaver/darwin-x64": "0.
|
|
68
|
-
"@rom-weaver/linux-arm64-musl": "0.
|
|
69
|
-
"@rom-weaver/linux-ia32-musl": "0.
|
|
70
|
-
"@rom-weaver/linux-x64-gnu": "0.
|
|
71
|
-
"@rom-weaver/linux-x64-musl": "0.
|
|
72
|
-
"@rom-weaver/win32-arm64-msvc": "0.
|
|
73
|
-
"@rom-weaver/win32-ia32-msvc": "0.
|
|
74
|
-
"@rom-weaver/win32-x64-msvc": "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
|
}
|