# 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/fixtures/README.md). Tests use no private notebooks and do not treat a synthetic archive as proof of Microsoft OneNote export compatibility.