Files
onenote-tools/docs/FORMAT_SUPPORT.md

5.5 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
FSSHTTPB-packaged .one Supported subset Licensed 17,197-byte Joplin golden; one page; unfragmented data elements
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 or FSSHTTPB 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.

FSSHTTPB support covers the OneStore packaging envelope, Storage Index and Storage Manifest, header/data-root cells, bounded revision chains, Object Group partitions, resolved object/page-space references, and available Object Data BLOB references. Data Element Fragment records are recognized and bounded by the low-level parser, but fragmented-element reconstruction is not implemented; the store adapter rejects packages containing fragment records with a controlled UNSUPPORTED_FORMAT error. Excluded object data cannot be reconstructed from a standalone file and is likewise unsupported.

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 supported section paths currently return:

  • 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.