Files
onenote-tools/docs/FORMAT_SUPPORT.md

4.0 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 Unsupported Metadata is recognized; extraction fails with cab-compression-unsupported
CAB Quantum Unsupported Metadata is recognized; extraction fails with cab-compression-unsupported
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). 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.