What's Changed
- Pin GitHub Actions to full-length commit SHAs by @danfiedler-msft in #2316
- Mitigate UnicodeDecodeError due to wrong ASCII charset guess for long files by @fcatalan92 in #2360
- fix: support extended content-disposition filenames by @cat0825 in #2045
- fix: fall back to plain text when RSS item content triggers RecursionError by @shoemoney in #2333
- fix(cli): allow Content Understanding conversion from stdin by @uczltw6 in #2318
- fix: correct \underleftarrow macro and map math italic h in equation conversion by @gdols in #2293
- feat(cli): support MARKITDOWN_CU_ENDPOINT / MARKITDOWN_DOCINTEL_ENDPOINT by @seenws in #2358
- fix(csv): strip the UTF-8 BOM and skip blank rows before building the table by @uuzzrm in #2303
- Preserve strikethrough from <strike> and CSS line-through by @gyanu2507 in #2342
- Fix percent-encoded Windows drive paths in file URIs by @tandede in #2315
- fix: escape pipes and newlines in CSV values by @asjad3 in #2266
- fix(epub): safely extract metadata text without crashing on None nodeValue or nested elements by @hsusul in #2247
- fix: handle math run with no text child in OMML->LaTeX conversion by @S1MS4 in #2189
- fix: IpynbConverter.accepts() catches UnicodeDecodeError on non-decodable content (fixes #1894) by @hanhan761 in #1929
- fix(docx): ignore malformed styles missing type by @gingerninja85 in #2190
- Preserve percent-encoded octets in href paths by @Sonai124 in #2173
- fix: remove extra closing brace from caron and ring-above accent templates by @AndrewAvery7 in #2279
- fix: preserve strikethrough semantics for <strike>, line-through CSS, and w:dstrike by @wasim-builds in #2356
- fix: buffer CLI stdin before format detection on Windows by @mohui666 in #2351
- fix(rss): preserve Atom XHTML content by @weivwang in #2297
- fix: initialize md_text in _parse_rss_type to prevent UnboundLocalError by @smedavarapu1 in #2164
- fix: ZipConverter renders '(unknown)' instead of literal 'None' when stream has no source info by @JSap0914 in #2134
- fix: truncate uppercase data image URIs by @pony-maggie in #2122
- fix(doc-intel): default api_version to None in DocumentIntelligenceConverter by @MeiSiristhebest in #2267
- fix(outlook): read .msg string properties saved in the non-Unicode format by @gdols in #2295
- fix: handle URI schemes case-insensitively by @pony-maggie in #2121
- fix: normalize data URI parameter case by @pony-maggie in #2120
- fix(xlsx): tolerate legacy showZeroes sheet views by @he-yufeng in #2064
- docs: use canonical markdown result property by @CooperSheroy in #2259
- fix(youtube): handle missing title metadata without raising AssertionError by @hsusul in #2238
- Bump actions/checkout from 5.1.0 to 7.0.1 by @dependabot[bot] in #2320
- Bump actions/setup-python from 5.6.0 to 7.0.0 by @dependabot[bot] in #2321
- fix(ipynb): preserve leading # in notebook heading titles by @Alphaxiaoteng in #2371
- fix(docx): preserve underlined text by @he-yufeng in #2017
- fix(pptx): ignore empty llm captions by @Lubrsy706 in #1886
- fix: PptxConverter tolerates None shape.text and notes text by @alvinttang in #2059
- fix(pptx): prevent crash in PptxConverter when chart title lacks a text frame by @aoright in #2194
- fix: catch OSError when exiftool binary is missing (#1960) by @doitgo in #2082
- Fix exiftool JSON decoding to use UTF-8 by @Vedant43hh in #2067
- fix: WikipediaConverter renders hash None heading when page has no title by @hanhan761 in #1990
- fix: guard against missing oMath element in DOCX math converter (#1979) by @hanhan761 in #1995
- fix: handle DOCX files with inconsistent ZIP filename casing (#1812) by @lyydsheep in #2016
- Support short YouTube URLs by @MukundaKatta in #1882
- fix: suppress pydub RuntimeWarning when ffmpeg is missing (fixes #1685) by @hanhan761 in #1985
- chore: remove unused mammoth import from PlainTextConverter (#1951) by @hanhan761 in #1953
- fix(rss): treat Atom text content and summary as plain text by @lazerg in #2374
- fix: ImageConverter gracefully handles LLM API failures (fixes #1942) by @hanhan761 in #1948
- fix(docx): handle unknown math functions in OMML converter without crashing by @MeiSiristhebest in #2268
- Update README to help scope PRs. by @afourney in #2376
- Bump versions. by @afourney in #2377
- Test markitdown-ocr in CI against the sibling markitdown by @afourney in #2378
- Be sure to run the proper Python version. by @afourney in #2379
- Remove uv lockfile that was accidentally committed. by @afourney in #2380
- fix(pptx): chart_title.text_frame is never None — use has_text_frame instead by @kapil971390 in #2385
- Updated README by @afourney in #2393
- Preserve all CSV columns by matching the widest row by @afourney in #2430
- Fix CSV parsing for CR-only line endings by @tkv00 in #2412
- chore(deps): bump actions/setup-python from 5.6.0 to 7.0.0 by @dependabot[bot] in #2431
- fix(rss): support namespace-prefixed Atom feeds by @Elysium-Seeker in #2429
- fix(rss): drop layout whitespace from feed and entry titles by @kevin9327 in #2428
- fix(pptx): do not emit a Notes heading for a slide with no notes by @kevin9327 in #2427
- fix(ipynb): strip the UTF-8 BOM so a notebook is not emitted as raw JSON by @kevin9327 in #2425
- fix(rss): preserve complete feed content and resolve relative link by @afourney in #2432
- fix(epub): forward conversion options to the HTML converter by @kevin9327 in #2426
- Update Docker images to Debian trixie (Python 3.13-slim-trixie) by @erwinkersten in #2421
- Fix Zip converter forwarding kwargs to nested conversions by @As9xm in #2409
- Do not convert an undecodable file to the word "None" by @kevin9327 in #2418
- Fix PPTX shape sorting treating top-zero as missing by @As9xm in #2408
- fix(epub): resolve percent-encoded manifest hrefs to ZIP entries by @sushantlokhande14 in #2413
- Fix --list-plugins help text to reference correct --use-plugins flag by @freetg71527152-ui in #2381
- fix: prefer data-src over placeholder data URI in img src by @macjayz in #2417
- fix(zip): preserve content of entries with duplicate filenames by @lyydsheep in #2434
- fix(pptx): do not emit a heading for a slide with an empty title by @kevin9327 in #2442
- fix(mcp): migrate to MCP SDK 2.x so 2026-07-28 clients can connect by @cagdasyurekli in #2363
- Reject UNC and Windows device paths (similar to how netlocks are alre… by @afourney in #2452
- Expand test matrix to include windows-latest by @afourney in #2453
- Workaround for ARM CI tests. by @afourney in #2460
- Fix ANSI Outlook MSG decoding for Japanese code pages and padded strings by @afourney in #2462
- Trim CSV blank runs without repeatedly shifting the row list by @ROTl24 in #2450
- Improve efficiency of escaping pipes in CSVs by @afourney in #2464
- fix: avoid splitting UTF-8 characters during charset detection by @afourney in #2466
- fix(docx): preserve namespaces when repairing stylesheets by @afourney in #2467
- fix(youtube): fall back to HTML when no video content is extracted by @afourney in #2469
- Throw an error when llm client fails with image converter. by @afourney in #2476
- Preserve whitespace underlines by @afourney in #2477
New Contributors
- @danfiedler-msft made their first contribution in #2316
- @fcatalan92 made their first contribution in #2360
- @cat0825 made their first contribution in #2045
- @shoemoney made their first contribution in #2333
- @uczltw6 made their first contribution in #2318
- @gdols made their first contribution in #2293
- @seenws made their first contribution in #2358
- @uuzzrm made their first contribution in #2303
- @gyanu2507 made their first contribution in #2342
- @tandede made their first contribution in #2315
- @asjad3 made their first contribution in #2266
- @hsusul made their first contribution in #2247
- @S1MS4 made their first contribution in #2189
- @hanhan761 made their first contribution in #1929
- @gingerninja85 made their first contribution in #2190
- @Sonai124 made their first contribution in #2173
- @AndrewAvery7 made their first contribution in #2279
- @wasim-builds made their first contribution in #2356
- @mohui666 made their first contribution in #2351
- @weivwang made their first contribution in #2297
- @smedavarapu1 made their first contribution in #2164
- @JSap0914 made their first contribution in #2134
- @pony-maggie made their first contribution in #2122
- @MeiSiristhebest made their first contribution in #2267
- @he-yufeng made their first contribution in #2064
- @CooperSheroy made their first contribution in #2259
- @Alphaxiaoteng made their first contribution in #2371
- @Lubrsy706 made their first contribution in #1886
- @alvinttang made their first contribution in #2059
- @aoright made their first contribution in #2194
- @doitgo made their first contribution in #2082
- @Vedant43hh made their first contribution in #2067
- @lyydsheep made their first contribution in #2016
- @MukundaKatta made their first contribution in #1882
- @lazerg made their first contribution in #2374
- @kapil971390 made their first contribution in #2385
- @tkv00 made their first contribution in #2412
- @Elysium-Seeker made their first contribution in #2429
- @kevin9327 made their first contribution in #2428
- @erwinkersten made their first contribution in #2421
- @As9xm made their first contribution in #2409
- @sushantlokhande14 made their first contribution in #2413
- @freetg71527152-ui made their first contribution in #2381
- @macjayz made their first contribution in #2417
- @cagdasyurekli made their first contribution in #2363
- @ROTl24 made their first contribution in #2450
Full Changelog: v0.1.7...v0.1.8b2