feat: add bounded Quantum cabinet extraction

This commit is contained in:
2026-07-22 19:23:00 +02:00
parent 531612829d
commit a7b1cd7d16
20 changed files with 1099 additions and 66 deletions

View File

@@ -14,8 +14,8 @@ and is delivered to Toolbox Portal as an already-built, checksummed static ZIP.
- Desktop revision-store `.one` sections from the tested OneNote family. The
reader exposes section/page names, stable page IDs, created and updated
timestamps when present, page level, and readable plain text.
- Single-cabinet `.onepkg` files whose CAB folders are uncompressed, MSZIP, or
LZX compressed. Each contained desktop `.one` section is parsed
- Single-cabinet `.onepkg` files whose CAB folders are uncompressed, MSZIP,
Quantum, or LZX compressed. Each contained desktop `.one` section is parsed
independently, so one unsupported section does not hide sections that did
parse.
- Package entries, safe normalized paths, uncompressed sizes, compression
@@ -23,19 +23,20 @@ and is delivered to Toolbox Portal as an already-built, checksummed static ZIP.
The golden tests parse a real Joplin desktop `.one` file with three pages and a
real Joplin `.onepkg` with seven entries, five sections, and seven pages. LZX
`0x1203` and `0x1303`, uncompressed CAB, and one- and two-block MSZIP data are
covered by fixtures. The MSZIP fixtures are CAB-level evidence, not a claim
about a particular OneNote `.onepkg` producer.
`0x1203` and `0x1303`, uncompressed CAB, one- and two-block MSZIP data, and
single- and multi-frame Quantum data are covered by fixtures. The MSZIP and
Quantum fixtures are CAB-level evidence, not a claim about a particular
OneNote `.onepkg` producer.
This is a structural reader, not a full-fidelity OneNote renderer. Images,
tables, ink, embedded files, layout, formatting, links, and exports are not
rendered. FSSHTTP-packaged `.one`, Quantum CAB extraction, multi-cabinet
archives, and `.onetoc2` hierarchy/order interpretation are not supported. See
rendered. FSSHTTP-packaged `.one`, multi-cabinet archives, and `.onetoc2`
hierarchy/order interpretation are not supported. See
[format support](docs/FORMAT_SUPPORT.md) for the precise matrix.
There is no Rust/Wasm runtime, server, proxy, upload, telemetry, or notebook
storage. All parsing and CAB/LZX/MSZIP decompression is ordinary browser
JavaScript produced from the TypeScript source.
storage. All parsing and CAB/LZX/MSZIP/Quantum decompression is ordinary
browser JavaScript produced from the TypeScript source.
## Use