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 <noreply@anthropic.com>
This commit is contained in:
qcqss 2026-07-21 17:04:57 +08:00
parent 48cf0c1147
commit b9a64f42fd
2 changed files with 38 additions and 6 deletions

40
main.ts
View file

@ -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

4
package-lock.json generated
View file

@ -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",