4.9 KiB
Format support
Version 0.1.0 support matrix
| Input or feature | Status | Tested evidence and boundary |
|---|---|---|
Desktop revision-store .one |
Supported subset | Real 34,904-byte Joplin golden; three pages |
FSSHTTP-packaged .one |
Unsupported | Header is detected and rejected with a controlled diagnostic |
Unknown/legacy .one variants |
Unsupported | File type and format GUIDs are validated before traversal |
.onepkg, single CAB, LZX |
Supported subset | Real Joplin package: LZX 0x1203, three CFDATA blocks, seven entries, five sections, seven pages |
CAB LZX 0x1303 |
Supported extraction | Byte-for-byte rust-cab MIT unit fixture, two text entries |
| CAB without compression | Supported extraction | Byte-for-byte rust-cab MIT unit fixture |
| CAB MSZIP | Supported extraction | rust-cab single-block fixture plus a generated two-block dictionary-chain fixture |
| CAB Quantum | Supported extraction | Pinned compcol qtm.txt payload, generated one-folder CAB, and two-frame state/sentinel tests |
| Multi-cabinet CAB / spanning files | Unsupported | Header flags and spanning folder indexes are rejected |
.onetoc2 package entries |
Listed only | Files are identified, but notebook hierarchy and section order are not interpreted |
Standalone .onetoc2 |
Unsupported in the app | The picker accepts only .one and .onepkg |
“Supported subset” is intentionally narrower than “all files with this extension.” A successful open requires the tested desktop OneStore structures and content graph nodes. Malformed offsets, counts, references, CAB checksums, paths, compressed data, and unsupported variants produce bounded diagnostics or a controlled failure.
The default LZX limit accepts CAB window sizes through 8 MiB, but compatibility
claims are fixture-backed only for window bits 18 (0x1203) and 19 (0x1303).
MSZIP validates the CK prefix, limits each compressed block to 32 KiB + 12,
decodes into a fixed-size output buffer, requires the declared output length,
and carries at most 32 KiB of history between blocks in one folder. The MSZIP
tests establish CAB extraction behavior; no redistributable MSZIP-compressed
OneNote export is currently present, so they do not establish producer-specific
.onepkg compatibility.
Quantum validates level/window metadata, bounds its window to 2 MiB by default,
requires full 32 KiB intermediate frames, preserves its arithmetic models and
LZ window across frames, and injects exactly one 0xFF CAB block sentinel.
Trailer padding is limited to the documented 0..4 zero bytes; match, frame,
output, operation, and cancellation bounds are enforced. Its tests likewise
establish CAB extraction behavior only: no redistributable Quantum-compressed
OneNote export is currently present.
Trailing CAB data is ignored with a warning. Reserved CAB areas are bounded and skipped. CAB names are decoded as strict UTF-8; unmarked valid UTF-8 receives a warning, while invalid non-ASCII legacy-code-page names are rejected rather than guessed.
Extracted OneNote data
The desktop section path currently returns:
- section display name;
- page ID, title, created/updated timestamp when available, and page level;
- visible Unicode/extended-ASCII rich text as plain text and a text preview;
- diagnostics tied to an offset, structure, or page where available.
It does not preserve visual position, rich-text formatting, list formatting, tables, images, ink, equations, embedded files, audio/video, active links, page versions/conflicts, or exports. Unsupported content objects remain visible as diagnostics instead of being silently presented as parsed.
Within a supported .onepkg, each .one entry is parsed independently.
Malformed or unsupported sections are marked failed/unsupported while other
sections remain available. Package navigation is temporary normalized-path
order until .onetoc2 interpretation is implemented.
Test fixtures
The exact hashes, source revisions, licences, expected page names, and CAB
structures are recorded in
tests/fixtures/README.md. Tests use no private
notebooks and do not treat a synthetic archive as proof of Microsoft OneNote
export compatibility.