From b9a64f42fdff8275ae2bb6e2772d2d5fa7c0a869 Mon Sep 17 00:00:00 2001 From: qcqss <212247542@qq.com> Date: Tue, 21 Jul 2026 17:04:57 +0800 Subject: [PATCH] feat: upgrade ribbon icon to dropdown menu with all conversion options Replace single-action ribbon icon with a native Menu dropdown providing: - Convert file to Markdown - Convert folder to Markdown - Convert URL to Markdown - View conversion history All existing entry points (command palette, context menu, drag-and-drop) remain unchanged. Build passes, all 30 tests pass. Co-Authored-By: Claude --- main.ts | 40 ++++++++++++++++++++++++++++++++++++---- package-lock.json | 4 ++-- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/main.ts b/main.ts index 9436c7a..7070cd0 100644 --- a/main.ts +++ b/main.ts @@ -1,4 +1,4 @@ -import { Notice, Plugin, TFile, MarkdownView, MarkdownFileInfo, Editor } from 'obsidian'; +import { Notice, Plugin, TFile, MarkdownView, MarkdownFileInfo, Editor, Menu } from 'obsidian'; import * as path from 'path'; import * as fs from 'fs'; import { @@ -63,9 +63,41 @@ export default class MarkitdownPlugin extends Plugin { this._resolvedPythonPath = depCheck.resolvedPythonPath; this.converter = new MarkitdownConverter(this.resolvedPythonPath, pluginDir); - // Ribbon icon - this.addRibbonIcon('file-text', 'Convert to Markdown', () => { - this.openConvertModal(); + // Ribbon icon with dropdown menu + this.addRibbonIcon('file-text', 'Markitdown: Convert files and URLs', (evt: MouseEvent) => { + const menu = new Menu(); + + menu.addItem((item) => + item + .setTitle('Convert file to Markdown') + .setIcon('file-text') + .onClick(() => this.openConvertModal()) + ); + + menu.addItem((item) => + item + .setTitle('Convert folder to Markdown') + .setIcon('folder') + .onClick(() => this.openFolderModal()) + ); + + menu.addItem((item) => + item + .setTitle('Convert URL to Markdown') + .setIcon('link') + .onClick(() => this.openUrlModal()) + ); + + menu.addSeparator(); + + menu.addItem((item) => + item + .setTitle('View conversion history') + .setIcon('clock') + .onClick(() => new HistoryModal(this.app, this).open()) + ); + + menu.showAtMouseEvent(evt); }); // Commands diff --git a/package-lock.json b/package-lock.json index f30b27c..e6e8167 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "obsidian-markitdown", - "version": "2.0.0", + "version": "2.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "obsidian-markitdown", - "version": "2.0.0", + "version": "2.1.0", "license": "MIT", "devDependencies": { "@types/jest": "^30.0.0",