The Mind Map

by 冬季蚊子
5
4
3
2
1
Score: 30/100

Description

在 Obsidian 中创建和编辑专业思维导图,六种布局、附件拖入导入、内部链接、Markdown 导入导出。

Reviews

No reviews yet.

Stats

2
stars
165
downloads
0
forks
22
days
15
days
15
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
2
total issues
2
open issues
0
closed issues
67
commits

Latest Version

15 days ago

Changelog

中文

本版本聚焦性能优化:性能模式默认开启,大导图自动启用虚拟渲染;保存、代码块渲染、图片加载等高频路径均有明显提速。无破坏性变更;两点默认行为调整——「性能模式」默认值改为开启(已保存的自定义设置不受影响),≥2000 节点的大导图撤销历史上限调整为 100 步。

  • perf: 性能模式默认开启,节点数达到阈值时自动仅渲染可视区域(可在设置中关闭)
  • perf: 适应画布在性能模式下先加载全部节点再适配,大图不再适配错位
  • perf: 代码块不再加载导出/搜索插件,并按节点数自动虚拟渲染
  • perf: 自动保存不再读回文件重新解析,附件索引改为保存时内存更新
  • perf: ≥2000 节点的大导图撤销历史上限降至 100 步,内存占用最多降低约 5 倍
  • perf: 图片尺寸探测结果缓存,重复打开导图不再重复解码
  • perf: 备注悬浮浮层内容未变时不再重复渲染

English

This release focuses on performance: performance mode is now on by default with virtual rendering for large maps, and hot paths such as saving, code block rendering, and image loading got measurable speedups. No breaking changes; note two default behavior adjustments — the "Performance mode" setting now defaults to on (saved custom settings are preserved), and maps with ≥2000 nodes have an undo history cap of 100 steps.

  • perf: enable performance mode by default — maps above the threshold render only visible nodes (can be disabled in settings)
  • perf: fit to canvas now loads all nodes first under performance mode, so large maps no longer fit incorrectly
  • perf: code blocks no longer load export/search plugins and virtualize rendering above the node threshold
  • perf: autosave no longer re-reads and re-parses the file; the attachment index is updated in memory on save
  • perf: cap undo history at 100 steps for maps with ≥2000 nodes, cutting memory usage by up to ~5×
  • perf: cache image size probes so reopening a map skips redundant decoding
  • perf: note tooltips reuse the rendered result when the content is unchanged

README file from

Github

English | 中文

🧠 MindMap Studio

Mind map rendering for Markdown inside Obsidian. Open .mindmap.md — a normal Markdown file — and edit it as a mind map; the Markdown outline round-trips losslessly. Powered by the simple-mind-map engine, developed by WinterMosquito.

🚀 Quick start

  1. Create: run Create new mind map (command palette or ribbon) — a MindMap2026-09-06.mindmap.md file is created and opens as a mind map.
  2. Edit: the file is ordinary Markdown, so its outline becomes the map — add/edit/delete nodes, drag to rearrange, attach images or links.
  3. Back & save: use Switch to Markdown to return anytime; edits are written back to the file (layout & viewport live in the plugin's data.json).

A .mindmap.md note shown as a mind map in Obsidian

✨ Why MindMap Studio

The plugin is a rendering layer, not a file-format converter. .mindmap.md files are 100% standard Markdown — your notes, links, backlinks, search and Git all work as usual. A Markdown outline is parsed into a mind map; when you edit the map, the changes are written back as Markdown.

🚀 Features

  • Markdown-native: .mindmap.md is ordinary Markdown (headings + lists). No proprietary format.
  • Round-trip fidelity: unedited lines are written back verbatim (frontmatter preserved); headings ####### map to node levels 1–6, nested lists to deeper levels.
  • Obsidian-native wikilinks: [[note]] shows as its link text, with hover preview and Ctrl+click (Windows/Linux) or Command+click (macOS) to open; the add-link dialog searches notes and linkable attachments. New links are always written as [[wikilinks]], regardless of Obsidian's link-format settings, so document links keep their dedicated icon. A node shows only the alias (the note name when there is none); editing the text of a pure wikilink node edits that alias and writes back [[note|new alias]]. Attaching a wikilink — dropping a vault note or attachment onto the node, or picking one in the add-link dialog — overwrites the node's text with the link's display name, turning the node into a pure wikilink; URL links stay icon-only.
  • Images: vault image suggestions, uniform sizing, ![[path]] round-trip; drag the corner handle to resize a node image — the size is written back as Obsidian's official embed syntax (![[img.png|300]] width-only, |300x150 explicit, ![alt|300](https://raw.githubusercontent.com/wintermosquito/the-mind-map/HEAD/url) for external images); clear a node's text and the node becomes image-exclusive — an image-exclusive node has no text, so node search never matches it. Inline images also render in text/paragraph nodes (its first line; links inside a paragraph stay plain text).
  • Opens at 100% with the whole map centred; Fit to canvas zooms out for an overview and Reset zoom returns to 100% while keeping the visible content in place (auto-arrange ends with fit-to-canvas); six layouts (switching a layout auto-arranges and fits the map) with per-file connector styles (Auto follows the layout; curve / direct / elbow — switchable for Logical structure / Mind map / Organization chart; the other three are fixed-straight and show Auto), node search, auto-arrange, performance mode for large maps, PNG export; assisted drag reparenting — drop near a node's center to nest as its child, or between two siblings to insert in between (with live highlight).
  • Persistence: layout, viewport and "open as" preference are kept per file (in plugin data), surviving reopen, rename, and view switching.
  • Central node ↔ filename: editing the central node renames the .mindmap.md file (Obsidian updates links/backlinks).

📖 Usage

1) Create & open a mind map

  • Run Create new mind map (command palette or ribbon) → a file like MindMap2026-09-06.mindmap.md is created and opens in the mind-map view.
  • Any .mindmap.md file opens from its context menu → Open as mind map (or the same command). The view you chose is remembered.

2) How Markdown becomes a map

Every .mindmap.md is 100% standard Markdown — the plugin renders it as a mind map and writes your edits back:

# Project plan              ← central node (= file name)
## Goals                    ← first-level child node (#)
- Milestone 1               ← child node (list)
- Milestone 2
###### Details              ← level-6 heading
- Seventh-level item        ← list nested under a heading → level 7

####### → node levels 1–6 · nested lists go deeper · [[note]] / [[note|alias]] → clickable link (the node shows only the alias) · ![[img]] → image (|300 sets the size) · paragraphs & fenced code stay as text.

Non-image embeds such as ![[report.pdf]] are shown as an attachment icon: click the icon, or Ctrl/Command+click the node, to open it (PDF, audio, video); hovering the node triggers Obsidian's native preview as well. They are not rendered inline — a mind-map node cannot host Obsidian's inline media view.

3) Everyday actions (in the mind-map view)

Want to Do
Edit a node's text Double-click the node (or press F2; text inputs keep F2). For a pure wikilink node you are editing its alias — saving writes [[note|new alias]] and the node still shows only the alias
Add a child / sibling Right-click the node → Add child node / Add sibling node (siblings also via Enter)
Delete a node Right-click → Delete node
Add a link Select a node → toolbar/menu Add link (pick a vault note or paste a URL). A wikilink overwrites the node's text with its display name (pure wikilink node); URLs stay icon-only
Add an image Select a node → Add image (from vault, clipboard, or a file)
Attach by drag & drop Drag a vault note or attachment from the file explorer onto a selected node — it becomes the node's wikilink and the node's text becomes the display name (dragging an image sets the node image); with nothing selected, a linked node is created under the root (images need a selected node)
Rearrange Drag near another node's center to nest as its child; drag between two siblings to insert in between (the drop target highlights)
Resize a node image Hover the image, drag its bottom-right handle (aspect ratio preserved)
Make a node image-only Clear the node's text: double-click → empty, or right-click → Remove text
Clean the layout Toolbar: Auto arrange, Reset zoom (100%), Fit to canvas, zoom in/out
Find a node Toolbar search box
Split a node's links Select a node → command Split links into child nodes: document/attachment links mixed with text move into child nodes (the node keeps its text; images and external URLs stay). Editing such a node also triggers it — turn it off in settings. Command Split all mixed links in document batch-processes the whole file, including untouched notes
Export Toolbar Export PNG
Back to Markdown Switch to Markdown (restores source/preview mode)

4) Saving & persistence

  • Unedited lines are written back verbatim (frontmatter preserved); editing a pure wikilink node (the whole line is one wikilink) edits its alias, written back as [[note|new alias]] (clearing the text drops the alias and keeps the link; nodes that mix text and a link still round-trip as "text + link").
  • Layout, viewport and "open as" are kept per file in the plugin data.json; node image sizes go into the note itself as official embed syntax (![[img|300]]).
  • Editing the central node renames the .mindmap.md (Obsidian updates links/backlinks).
  • Config is local; no telemetry.

The full Markdown ↔ mind-map mapping rules live in docs/markdown-mindmap-standard.md.

📦 Install

  • Community plugins (once listed): Settings → Community plugins → search MindMap Studio.
  • From GitHub releases (recommended): download the latest release assets (main.js, manifest.json, styles.css) from the repo Releases page, copy them into <vault>/.obsidian/plugins/mindmap-studio/, reload Obsidian, then enable the plugin in Settings → Community plugins.
  • Build from source: npm install && npm run build produces main.js; copy it together with manifest.json and styles.css into the plugin folder.

Requires Obsidian 1.13.0 or later. Desktop only (Windows, macOS, Linux). Config is stored locally (plugin data.json); no telemetry. main.js is built in CI and attached to each GitHub Release (it is not committed to the repo).

🛠 Development

npm install
npm run dev      # watch mode
npm run build    # type-check + production bundle (main.js)
npm test         # regression suite (vitest)
npm run lint

The engine (vendor/simple-mind-map.cjs) is vendored and must not be hand-edited; rebuild from upstream source when upgrading. Bundled third-party licences are listed in vendor/THIRD-PARTY-NOTICES.md.

⚖️ License

MIT — see the LICENSE file in the repository root.