Mini World Map

by Miro0o
5
4
3
2
1
Score: 51/100

Description

Visualize your obsidian vault as a hierarchy-first world map with internal links.

Reviews

No reviews yet.

Stats

4
stars
927
downloads
0
forks
88
days
15
days
15
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
1
total issues
0
open issues
1
closed issues
31
commits

Latest Version

16 days ago

Changelog

Changelog

0.5.2

  • Merge emoji-decorated folders with matching child notes in the 2D map, such as 📚 Topic/Topic.md, while preserving original display names and file paths.
  • Preserve original same-name matching priority and only use emoji-insensitive matches when a single child note matches.
  • Add regression coverage for emoji sequences, ambiguous names, folder-note links, focus, and node counts.

0.5.1

  • Address Obsidian review findings by using DOM and style helpers for theme sampling and window-scoped timers for metadata and worker tasks.
  • Explicitly mark asynchronous search calls and remove the control-character regex while preserving label width calculations.
  • Keep worker tests and the local benchmark compatible with the browser timer API.

0.5.0

  • Improve radial hierarchy spacing, branch separation, full-map framing, and label readability.
  • Add back/forward navigation with per-view pan and zoom, independent note-link and hierarchy hover controls, and clearer bilingual panels.
  • Move map computation into a worker, reuse unchanged vault snapshots and layouts, and accelerate picking and label placement.
  • Reuse node and road render buffers for unchanged maps while keeping theme, ring-guide, label, and reveal updates intact.
  • Preserve root and search framing when metadata refreshes overlap navigation, and prevent superseded failures from interrupting the current loading state.
  • Clean up cancelled pointer drags and ignore unrelated pointers and secondary-button releases.
  • Improve startup metadata handling, map statistics, and controller cleanup across 2D/3D switches.

0.2.7

  • Address Obsidian review warnings for console logging, DOM element creation, redundant type assertions, and CSS overrides.
  • Reduce duplicate vault enumeration and document the local-only metadata used to build maps.

0.2.6

  • Add semantic 2D node shapes, clearer route colors, faster label updates, and an All links hover mode.
  • Improve pinned-route grouping, panel guidance, theme controls, and full-map expansion for the current root.
  • Rebuild, validate, and attest release assets in CI while keeping the checked-in plugin bundle synchronized.

0.2.5

  • Refresh the map control panels with clearer headings, denser controls, and accessible collapse state.
  • Apply the resolved map theme before loading so daylight and custom backgrounds display immediately.
  • Keep visible 2D search results in place, open hidden results as roots, and clear stale selections during map navigation.

0.2.4

  • Move 3D node inspection details into the side panel.
  • Improve long label, pin, neighbor, and button wrapping in the map panels.
  • Type Obsidian saved plugin data as unknown before settings migration to avoid unsafe assignment warnings.

0.2.3

  • Add a 2D Complete map action that shows the vault root with expanded node, link, depth, and outside-link detail budgets.
  • Allow farther 2D zoom-out for large complete maps.
  • Improve 2D panel wrapping and alignment so long labels remain readable.
  • Soften the 2D outside-link road color and legend swatch.

0.2.2

  • Address Obsidian community plugin review findings around settings APIs, command names, deprecated slider tooltips, direct static styles, and config folder handling.
  • Raise the minimum supported Obsidian version to 1.13.0 for the current settings definitions API.
  • Remove reveal CSS that relied on partially supported browser features in older Obsidian builds.
  • Tighten 2D neighbor list typing and add regression coverage for configured vault folders.

0.2.1

  • Add default day/night map background fallbacks when the active Obsidian theme cannot provide a matching background color.
  • Refresh explicit 3D day/night backgrounds after Obsidian CSS changes.

0.2.0

  • Add the Galaxy-derived 3D map mode based on Longwind1984/galaxy-view.
  • Improve the 2D radial atlas layout, including ring placement, node spacing, search focusing, and root navigation.
  • Add richer 3D controls for visual presets, color themes, imported Obsidian graph colors, bloom, physics, cruise motion, reveal animation, and quality tiers.
  • Add unified Mini World Map search across 2D and 3D modes.
  • Improve side-panel behavior with inspect, pins, view, controls, defaults, and bilingual language switching.
  • Add Obsidian-aware theme backgrounds and expanded release documentation.
  • Expand tests for settings migration and world-map graph behavior.

0.1.3

  • Add floating vault-root and fullscreen controls to the map canvas.
  • Improve side-panel layout behavior across narrow and wide panes.
  • Expand documentation for design goals, features, usage, and settings.

0.1.2

  • Prepare the plugin for community review by removing redundant manifest wording.
  • Add GitHub artifact attestations for release assets.
  • Avoid eager vault indexing until the map view is opened.

0.1.1

  • Mark Codex as a co-author.

0.1.0

  • Initial community release.

README file from

Github

Mini World Map

Mini World Map is an Obsidian plugin for exploring a vault as both a hierarchy-first world map and a 3D galaxy of links.

The current project is based on Longwind1984/galaxy-view. Mini World Map builds on that Galaxy-style 3D graph foundation with Obsidian plugin packaging, TypeScript source, local vault indexing, a 2D radial atlas, bilingual controls, quality tiers, and release-ready assets.

It is designed for people who use folders as meaningful topic structure and links as cross-topic associations. The map helps you see both at once: where a note lives in the vault hierarchy, and which other notes or topics it connects to.

This plugin was originally built for my own knowledge base, miniWorldModel, which has grown large enough that I needed a way to present its structure to others.

Core Ideas

Mini World Map has two complementary render modes:

  • 2D radial atlas: concentric rings show the vault hierarchy. Inner rings are parent folders or topics, while outer rings contain child folders and notes.
  • 3D galaxy map: a Three.js force graph shows the vault as a spatial link network, with camera flight, glow, search, and visual presets.

The 2D atlas is the hierarchy-first view. Any folder can become the root node at the center of the map, so you can zoom from the whole vault into a smaller topic world. Parent-child relationships form the geography, while Obsidian links appear as roads between topics.

The 3D map is the link-first view. It keeps the Galaxy-style experience from the base project, then adds Mini World Map controls for Obsidian vault data, imported graph colors, performance tiers, search, reveal animation, and persistent warm-start positions.

The goal is to complement Obsidian's native Graph View and conventional mind-map tools. Graph View focuses on note-to-note links but does not foreground folder hierarchy. Mind maps usually show hierarchy but not rich note linking. Mini World Map combines both: hierarchy provides the geography, and note links provide the roads.

Features

  • Two render modes: switch between 2D radial rings and the 3D Galaxy map from the view panel or command palette.
  • Atlas view: browse folders and notes as a radial world map rooted at the whole vault or any folder.
  • Folder notes: a folder and its same-name child note share one 2D node, including emoji-decorated names such as 📚 Topic/Topic.md. Original name matches take priority; emoji-insensitive matching requires a single matching child note.
  • Focus view: center the 2D map around the active note and show ancestors, siblings, outgoing links, and backlinks.
  • 3D Galaxy view: fly through a Three.js graph with force layout, bloom, twinkle, orbit cruise, reveal animation, and search-to-fly navigation.
  • Search: open Mini World Map search from either mode and jump to notes, folders, unresolved links, or graph nodes.
  • Re-rooting: double-click a folder in 2D to use it as the current atlas root.
  • Semantic route highlighting: independently enable note links and hierarchy links when hovering a 2D node. Hierarchy scope can include parents, direct children, all descendants, or their combinations; each route type keeps its own color while unrelated routes fade.
  • Note-link highlighting: hover nodes or link roads to inspect Obsidian internal links alongside the hierarchy.
  • Link overlays: draw aggregated internal links between visible 2D nodes.
  • Cross-root links: show links that leave the current 2D root as grouped outside branches, selected outside files, or exact outside files.
  • Unresolved links: optionally represent unresolved internal links as temporary nodes.
  • Selection and inspection: click nodes or links to inspect details in the side panel, including outgoing links and backlinks.
  • Pinned paths: pin each highlighted 2D route once, toggle its visibility, or enter a dedicated grouping mode to organize routes across one or more groups.
  • Navigation: double-click a 2D note to open it; use Ctrl/Cmd while opening to use a split pane.
  • Context actions: right-click 2D nodes to open notes, focus notes, use folders as roots, open representative folder notes, or pin paths.
  • Canvas controls: pan, zoom, fit, rebuild, return to vault root, switch language, and switch render modes.
  • 3D performance handling: uses a worker layout when available, falls back to the main thread if needed, stores settled positions for warm starts, and can auto-drop to a lower quality tier.
  • Visual customization: tune 2D labels, ring guides, spin, color scheme, legend items, and link budgets; tune 3D bloom, physics, node size, link opacity, twinkle, size mode, theme, color theme, cruise, and quality.
  • Imported Obsidian graph colors: 3D mode can import color groups from .obsidian/graph.json and shuffle or apply bundled color themes.
  • Panel language: English and Chinese are available for both 2D and 3D panels.
  • Local-only indexing: builds the map from your local vault metadata without network services or telemetry.

Usage

  1. Enable Mini World Map in Settings -> Community plugins.
  2. Run Open Mini World Map from the command palette, or use the ribbon icon.
  3. Use Toggle Mini World Map render mode to switch between 2D and 3D.
  4. Use Search Mini World Map to find and jump to notes or graph nodes.
  5. Use Rebuild Mini World Map index after large vault changes if the map is already open.

Useful 2D interactions:

  • Hover a node to preview hierarchy or note-link relationships.
  • Click a node or link to pin the highlight and inspect it in the side panel.
  • Double-click a note to open it.
  • Double-click a folder to make it the atlas root.
  • Use the arrow buttons beside the language button to go back or forward through 2D map views, restoring each view's pan and zoom. Re-entering a map clears the previous node or link selection. Opening a new map after going back replaces the forward history. Up to 100 views are remembered while the 2D view stays open; panning, zooming and display adjustments update the current view without adding history entries.
  • Use Full current root to expand every hierarchy level and available note link without jumping back to the vault root.
  • Right-click a node for node actions.
  • Pan and zoom the canvas to move through large maps.

Useful 3D interactions:

  • Left drag to orbit and scroll to zoom.
  • Right drag, Cmd + left drag, or Shift + left drag to pan.
  • Use WASD to fly, Q/E to rise or fall, and Shift to move faster.
  • Click a node to select it and fly toward it.
  • Press F to fly to the selected node, R for overview, and Esc to clear selection.

Settings

Global plugin settings include:

  • Language: English or Chinese.
  • Default render mode: 2D radial rings or 3D map.
  • Default 2D atlas depth.
  • Default 2D render node limit.
  • Default 2D note-link limit.
  • 2D note-link overlay visibility.
  • 2D hover highlight mode, including All links, and hoverable items.
  • 2D label visibility.
  • 2D ring spin.
  • 2D unresolved link handling.
  • Ignored folders.

The 2D view panel also includes per-view controls for root/active-note mode, vault map, full current-root display, theme, hierarchy levels, node and note-link limits, cross-root detail, outside-note limit, depth rings, and legend visibility. Hover the panel tabs, buttons, or fields for concise explanations.

The 3D view panel includes controls for search, recentering, reveal animation, visual style presets, theme presets, color themes, imported Obsidian graph colors, node sizing, bloom, physics, cruise motion, unresolved links, orphan nodes, quality tier, and default reset.

Development

Mini World Map is built from TypeScript source.

npm install
npm test
npm run build

Useful scripts:

  • npm run dev starts the esbuild watcher.
  • npm run build validates TypeScript, writes release assets to dist/, and refreshes the checked-in main.js bundle.
  • npm test runs the Vitest suite.
  • npm run lint runs ESLint.
  • node scripts/benchmark-radial.mjs HEAD compares the current 2D computation with a commit using actual workers and identical synthetic maps. It reports cold loads, rebuilds, and switching back to 2D; vault I/O, WebGL rendering, and reveal animation are outside this benchmark.

The checked-in main.js is the generated bundle used for repository installs. Obsolete bundles under legacy/ and local test/profiling output are ignored by Git.

Manual Installation

Until the plugin is available in the community directory, download the latest release assets and place them in:

<vault>/.obsidian/plugins/mini-world-map/

Required files:

  • main.js
  • manifest.json
  • styles.css

Then reload Obsidian and enable the plugin.

Privacy

Mini World Map runs locally in Obsidian. It does not use network services or telemetry.

To build complete 2D and 3D maps, the plugin enumerates the vault's folder structure and Markdown files. It uses file paths, names, sizes, and Obsidian's cached link metadata; it does not read note contents. The optional graph-color import reads only the vault's .obsidian/graph.json configuration. This data stays inside Obsidian and is never sent over the network.

Credits

License

MIT