mirror of
https://github.com/ethanolivertroy/obsidian-markitdown.git
synced 2026-07-22 05:41:54 +00:00
Release v2.1.0: 11 new features + Python detection fix
New: drag-and-drop, URL/YouTube conversion, preview modal, post-conversion hooks, custom filename templates, recursive folders, conversion history, resolved path hint, troubleshooting UI, unit tests, BRAT beta channel. Fixed: Python detection on macOS/Windows GUI apps, settings focus loss, empty path crash, stale metadata detection.
This commit is contained in:
parent
061ea6e058
commit
badef8ac29
7 changed files with 99 additions and 16 deletions
31
CHANGELOG.md
31
CHANGELOG.md
|
|
@ -1,5 +1,36 @@
|
|||
# Changelog
|
||||
|
||||
## 2.1.0
|
||||
|
||||
Feature release with 11 new capabilities and a critical Python detection fix.
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Python detection on macOS/Windows** (#13) — GUI apps (Obsidian/Electron) don't inherit shell PATH, so the plugin now searches well-known Python paths: Homebrew, Python.org Framework installs, Windows AppData, and Microsoft Store locations
|
||||
- **Settings field focus loss** — Python path input no longer triggers dependency checks on every keystroke (debounced to 1.5s)
|
||||
- **Empty path crash** — clearing the Python path field no longer crashes `spawn()` with an empty string
|
||||
- **Stale metadata detection** — `check_install.py` now verifies `from markitdown import MarkItDown` actually works, not just that package metadata exists
|
||||
|
||||
### Added
|
||||
|
||||
- **Drag-and-drop conversion** — drop supported files directly into the editor to auto-convert and insert a wiki-link
|
||||
- **URL/YouTube conversion** — new "Convert URL to Markdown" command for YouTube transcripts and web pages
|
||||
- **Conversion preview** — preview converted markdown in a modal before saving (Save/Cancel)
|
||||
- **Post-conversion hooks** — auto-add YAML frontmatter (source, date, converter) and custom tags
|
||||
- **Custom filename template** — configure output names with `{filename}`, `{ext}`, `{date}`, `{datetime}` variables
|
||||
- **Recursive folder conversion** — "Include subfolders" toggle preserves directory structure in output
|
||||
- **Conversion history** — "View conversion history" command shows past conversions with success/fail badges
|
||||
- **Resolved path hint** — settings now show which Python path is actually being used
|
||||
- **Troubleshooting UI** — when Python/markitdown isn't found, shows tried paths, download links, and pip install commands with a copy button
|
||||
- **Unit tests** — 30 Jest tests covering Python discovery, path utilities, and edge cases
|
||||
- **BRAT beta channel** — GitHub Actions release workflow with `manifest-beta.json` for early access
|
||||
|
||||
### Changed
|
||||
|
||||
- Python discovery prefers the first Python where markitdown actually imports over one where it's absent
|
||||
- Settings UI reorganized with new "Post-conversion" section
|
||||
- `check_install.py` validates against an allowlist of package names
|
||||
|
||||
## 2.0.0
|
||||
|
||||
Ground-up rewrite addressing security, architecture, and feature gaps.
|
||||
|
|
|
|||
53
README.md
53
README.md
|
|
@ -17,8 +17,15 @@ Integrate Microsoft's [Markitdown](https://github.com/microsoft/markitdown) tool
|
|||
- Youtube URLs
|
||||
- And more!
|
||||
|
||||
- Convert individual files or entire folders at once
|
||||
- Convert individual files or entire folders (with recursive subfolder support)
|
||||
- **Drag-and-drop** — drop files into the editor to auto-convert
|
||||
- **URL/YouTube conversion** — convert web pages and YouTube transcripts to Markdown
|
||||
- **Conversion preview** — preview output before saving
|
||||
- **Post-conversion hooks** — auto-add YAML frontmatter and tags
|
||||
- **Custom filename templates** — use `{filename}`, `{date}`, `{ext}`, `{datetime}` variables
|
||||
- **Conversion history** — browse past conversions with success/fail tracking
|
||||
- Easy installation of the Markitdown Python package directly from the plugin
|
||||
- Smart Python detection across macOS, Windows, and Linux (Homebrew, Framework, AppData paths)
|
||||
- Optional use of Azure Document Intelligence for improved conversion quality
|
||||
- Support for third-party Markitdown plugins
|
||||
|
||||
|
|
@ -55,20 +62,41 @@ You can get early access to new features by installing beta releases via [BRAT](
|
|||
|
||||
### Converting multiple files in a folder
|
||||
|
||||
1. Use the command palette to run "Convert folder contents to Markdown with Markitdown"
|
||||
1. Use the command palette to run "Convert folder to Markdown"
|
||||
2. Select the folder containing the files you want to convert
|
||||
3. Check the file types you want to include in the conversion
|
||||
4. Click the "Convert" button
|
||||
5. The converted Markdown files will be saved in your specified output folder
|
||||
3. Toggle "Include subfolders" for recursive conversion
|
||||
4. Check the file types you want to include
|
||||
5. Click "Convert" — folder structure is preserved in the output
|
||||
|
||||
### Converting a URL or YouTube video
|
||||
|
||||
1. Use the command palette to run "Convert URL to Markdown"
|
||||
2. Paste any URL (YouTube, web pages, etc.)
|
||||
3. Click "Convert" — the transcript or page content is saved as Markdown
|
||||
|
||||
### Drag-and-drop
|
||||
|
||||
Simply drag a supported file from Finder/Explorer directly into an open note. The plugin will convert it and insert a link at the drop position.
|
||||
|
||||
### Viewing conversion history
|
||||
|
||||
Use the command palette to run "View conversion history" to see all past conversions with timestamps, success/fail status, and processing times.
|
||||
|
||||
## Configuration
|
||||
|
||||
The plugin settings can be found in the Obsidian settings panel under "Markitdown":
|
||||
|
||||
- **Python Path**: Specify the path to your Python executable (default: "python")
|
||||
- **Enable Markitdown Plugins**: Toggle to enable third-party Markitdown plugins
|
||||
- **Azure Document Intelligence Endpoint**: Optionally add an Azure Document Intelligence endpoint for improved conversion quality
|
||||
- **Output Folder**: Specify where the converted Markdown files should be saved (relative to vault root, default: "markitdown-output")
|
||||
- **Python Path**: Path to your Python executable — the plugin auto-detects common locations if left as "python"
|
||||
- **Output Folder**: Where converted files are saved (relative to vault root, default: "markitdown-output")
|
||||
- **Output Filename Template**: Customize output names with `{filename}`, `{ext}`, `{date}`, `{datetime}`
|
||||
- **Extract Images**: Extract embedded images from PDFs to separate files
|
||||
- **Recursive Folder Conversion**: Include subfolders when converting folders
|
||||
- **Drag and Drop**: Auto-convert supported files dropped into the editor
|
||||
- **Context Menu**: Right-click "Convert to Markdown" in the file explorer
|
||||
- **Auto Frontmatter**: Automatically add YAML frontmatter with source file, date, and converter
|
||||
- **Auto Tags**: Comma-separated tags added to converted files' frontmatter
|
||||
- **Enable Markitdown Plugins**: Toggle third-party Markitdown plugins with key-value argument editor
|
||||
- **Azure Document Intelligence Endpoint**: Optional Azure endpoint for enhanced PDF conversion
|
||||
|
||||
## How it works
|
||||
|
||||
|
|
@ -81,9 +109,10 @@ This plugin acts as a bridge between Obsidian and Microsoft's Markitdown Python
|
|||
|
||||
## Troubleshooting
|
||||
|
||||
- **Python not found**: Make sure Python is installed on your system and the path is correctly set in the plugin settings
|
||||
- **Conversion errors**: Check the console for error messages by pressing Ctrl+Shift+I (or Cmd+Opt+I on Mac)
|
||||
- **Missing dependencies**: Some file formats may require additional Python dependencies. The plugin will try to install these automatically, but you may need to install them manually
|
||||
- **Python not found**: The plugin searches common paths automatically. If it still can't find Python, set the full path in settings (e.g., `C:\Users\You\AppData\Local\Programs\Python\Python313\python.exe` on Windows or `/Library/Frameworks/Python.framework/Versions/3.11/bin/python3` on macOS). Check the Troubleshooting section in settings for details on which paths were tried.
|
||||
- **Markitdown not installed**: Run `pip install markitdown[all]` in your terminal using the same Python shown in settings. Or click the "Install Markitdown" button in the settings panel.
|
||||
- **Conversion errors**: Check the console (Ctrl+Shift+I / Cmd+Opt+I) or the conversion history (command palette → "View conversion history")
|
||||
- **Missing dependencies**: Some file formats may require additional Python packages. The plugin will try to install these automatically.
|
||||
|
||||
## Development
|
||||
|
||||
|
|
|
|||
22
main.js
Normal file
22
main.js
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"id": "markitdown",
|
||||
"name": "Markitdown File Converter",
|
||||
"version": "2.1.0-beta.1",
|
||||
"version": "2.2.0-beta.1",
|
||||
"minAppVersion": "0.15.0",
|
||||
"description": "Convert PDFs, Office documents, images, and other file formats to Markdown using Microsoft's Markitdown tool",
|
||||
"author": "Ethan Troy",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"id": "markitdown",
|
||||
"name": "Markitdown File Converter",
|
||||
"version": "2.0.0",
|
||||
"version": "2.1.0",
|
||||
"minAppVersion": "0.15.0",
|
||||
"description": "Convert PDFs, Office documents, images, and other file formats to Markdown using Microsoft's Markitdown tool",
|
||||
"author": "Ethan Troy",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "obsidian-markitdown",
|
||||
"version": "2.0.0",
|
||||
"version": "2.1.0",
|
||||
"description": "Convert various file formats to Markdown using Microsoft's Markitdown library",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
"1.0.0": "0.15.0",
|
||||
"1.0.1": "0.15.0",
|
||||
"2.0.0": "0.15.0"
|
||||
"2.0.0": "0.15.0",
|
||||
"2.1.0": "0.15.0"
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue