All notable changes to OneNoteXML will be documented in this file.
- Enhanced debug logging with
--debugflag- Full exception tracebacks now captured in log files
- PowerShell subprocess output logged in debug mode
- Stream reading exceptions now logged instead of silently ignored
- All errors written to both console and log files
- Windows path length limit issue - Image filenames now max ~30 chars (was 200+)
- Smart shortened naming:
{section_short}-{page_short}-{counter}.png - Example:
ctrade-ideas-001.pnginstead ofc.trade.diary_Trading ideas_alt-text_1.png - Prevents "path too long" errors during image extraction
- Includes collision detection with 4-char hash suffix
- Smart shortened naming:
- Page name matching with trailing spaces
- PowerShell now tries multiple page name variations (trimmed, case-insensitive)
- Fixes "Page not found" errors for pages with trailing/leading whitespace
- Matches section name variation logic for consistency
- Nested page hierarchy support for Obsidian vaults
- Pages now export to nested folder structure matching OneNote hierarchy
- Parent pages get subfolders containing their child pages
- Preserves OneNote's page levels (level 1, 2, 3, etc.)
- Page order preservation during export
- XML files now prefixed with index numbers (001_, 002_, etc.)
- Ensures pages process in correct hierarchical order, not alphabetically
- Leading underscores in section names now preserved (e.g.,
_pure_teststays_pure_test) - Nested pages no longer flattened into single directory
- Page hierarchy correctly inferred from
pageLevelattribute and export order
- Export script (
export_xml_notebook.ps1) now numbers pages sequentially - Pipeline sorts pages by numeric prefix instead of alphabetically
- Obsidian converter builds parent-child relationships during conversion
- Initial public release
- Direct XML extraction from OneNote via COM API
- Obsidian vault output with YAML frontmatter and wikilinks
- Logseq graph output with properties and queries
- CallbackID-based image extraction (64% success rate)
- Unified CLI entry point (
onenotexml.py) - Minimal dependencies (BeautifulSoup + pywin32)
- Production tested on 195 pages with 227 images
- Windows-only (OneNote COM API dependency)
- OneNote 2010-2013 support
- Local-only extraction (no cloud sync)
- Dual format output (Obsidian OR Logseq)
- OneNote has rich formatting, tables, columns, not all of that can be mapped nicely into Markdown format
- Hand-drawn ink not supported
- Windows-only platform support
- Requires OneNote 2010-2013 desktop version, but may work with other versions, although untested