Skip to content
CAI
Software that uses CAICheck a score

wanglin2/mind-map

27.1

Weak · 1 October 2026

46.8k

lines of production code

JavaScript

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a web-based mind mapping application built on the simple-mind-map library, providing a comprehensive editor for creating, visualizing, and exporting hierarchical diagrams. It supports multiple layout structures, rich text and formula editing, and real-time collaboration via WebRTC. The application features AI-assisted generation, extensive export options (PDF, XMind, Markdown), and a customizable UI with dark mode and internationalization.

How it got here

2021 — Initial release and core feature expansion

20 changes.

This period marked the initial release of the simple-mind-map library and the establishment of the web application's foundational structure, including Docker support and legacy code removal. It focused on implementing core mind mapping capabilities such as diverse layout algorithms, SVG assets, and essential utilities like LRU caching and XMind parsing. The work also introduced advanced features like AI integration, dark mode, and a comprehensive UI component suite to support the demo application.

2022–2025 — core engine and plugin expansion

16 changes.

This period focused on building the foundational rendering engine and refactoring core modules for performance and flexibility, while significantly expanding functionality through new plugins for collaboration, presentation, and formulas. It also introduced extensive configuration options for user interactions, layout structures, and theming, alongside infrastructure improvements like build scripts and asset generation.

Features

Add Vietnamese language support and update i18n configuration

The application now supports Vietnamese (vi\_vn) in addition to Simplified Chinese, Traditional Chinese, and English. This change introduces the new Vietnamese translation file and updates the language index to include it, allowing users to switch their interface language to Vietnamese.

web/src/lang · high confidence

Add support for importing and exporting Mind Map data as Markdown and TXT

Users can now import mind maps from Markdown files and export them to both Markdown and plain text (TXT) formats. The Markdown import leverages the \mdast-util-from-markdown\ library to parse headings and lists into the mind map structure, while the export functions convert the node hierarchy back into Markdown syntax (using headers and indentation) or simple indented text, preserving node text, generalizations, and notes.

simple-mind-map/src/parse · high confidence

Added example data files for mind map structure and export format

The example directory now includes \exampleData.js\ and \exportFullData.json\, providing sample data structures for the mind map application. The JavaScript file defines a helper function and a nested node structure with various properties like images, tags, and hyperlinks, while the JSON file illustrates the complete export format including layout, theme, and view transformation states.

simple-mind-map/example · high confidence

Added icon font asset for UI icons

The web application now includes a new icon font asset (iconfont.css) containing definitions for various UI icons, such as those for AI generation, printing, file types (Excel, TXT, JSON, PDF, etc.), and interface controls. This addition supports the visual elements used in the demo and documentation features.

web/src/assets/icon-font · high confidence

Added plugin type generation script and WebSocket signaling server

The \simple-mind-map/bin\ directory now includes two new scripts: \createPluginsTypeFiles.js\ generates TypeScript declaration files for plugins in \src/plugins/\, and \wsServer.mjs\ provides a WebSocket signaling server for collaborative features, listening on port 4444 by default.

simple-mind-map/bin · high confidence

Initial release of simple-mind-map v0.14.0-fix.3

This entry introduces the simple-mind-map library, a web-based mind mapping tool. The package includes the core MindMap class (index.js) and a full distribution bundle (full.js) that pre-registers a comprehensive set of plugins, including MiniMap, Watermark, Drag, KeyboardNavigation, Export (XMind, PDF, standard), Select, AssociativeLine, RichText, TouchEvent, NodeImgAdjust, Search, Painter, Scrollbar, Formula, RainbowLines, Demonstrate, OuterFrame, MindMapLayoutPro, and NodeBase64ImageStorage. The library supports markdown and xmind parsing, exposes constants and default themes, and is configured with ESLint and Prettier for code quality.

simple-mind-map · high confidence

Initial release of the mind map rendering engine

This change introduces the core rendering logic for the mind map application, establishing the \Render\ class to manage the visualization of nodes, connections, and various layout structures (such as Mind Map, Logical Structure, Timeline, and Fishbone). It includes the \TextEdit\ component for handling node text input, event binding for canvas interactions (clicks, zooming, context menus), and the integration of layout algorithms. This foundational code enables the basic display and interaction capabilities of the mind map.

simple-mind-map/src/core/render · high confidence

Initial repository setup with Docker support and documentation

The repository is initialized with core documentation files (README, LICENSE) and a Dockerfile to enable containerized deployment of the web application using Nginx. The setup includes an entry-point index.html configured for the Simple Mind Map application, a copy script for build artifacts, and a .gitignore file to exclude build outputs and local configurations.

(repo-wide) · high confidence

New AI-powered features and comprehensive UI component suite

This update introduces a new AI assistant capability, including an AI chat sidebar (AiChat.vue) for conversational interaction, an AI creation dialog (AiCreate.vue) for generating mind maps from text, and a configuration dialog (AiConfigDialog.vue) for managing API settings. Alongside these AI features, the edit interface is significantly expanded with new UI components: a context menu (Contextmenu.vue) with node and canvas actions, a demonstration mode (Demonstrate.vue) for presentations, a word and node counter (Count.vue), and a dedicated sidebar for mathematical formulas (FormulaSidebar.vue). The base styling options (BaseStyle.vue) now include built-in background images, and associative line styling (AssociativeLineStyle.vue) allows for custom line and text appearance. The main editor (Edit.vue) integrates these components and registers core plugins such as MiniMap, Watermark, Drag, KeyboardNavigation, ExportPDF, ExportXMind, Select, AssociativeLine, RichText, Search, Painter, Formula, RainbowLines, Demonstrate, OuterFrame, MindMapLayoutPro, and NodeBase64ImageStorage.

web/src/pages/Edit/components · high confidence

New SVG icon assets for mind map controls and node decorations

The \simple-mind-map/src/svg\ directory now includes dedicated asset files for UI controls and node visual elements. \btns.js\ provides SVG strings for interface buttons, including expand/collapse, remove, image resizing, and a new quick-create child node button. \icons.js\ introduces a comprehensive library of icons for node content, featuring hyperlink and note indicators, attachment symbols, and extensive sets for priority levels, progress tracking, and expressive emojis.

simple-mind-map/src/svg · high confidence

New build scripts and AI proxy service for the web demo

This change introduces three new scripts in the web/scripts directory. The ai.js script adds a local Express server on port 3456 that proxies AI chat requests via Server-Sent Events (SSE) to an external API, including a check to prevent startup if the port is already in use. The createNodeImageList.js script automates the generation of a JavaScript configuration file from SVG assets in the src/assets/svg directory. The updateVersion.js script automatically updates the version string in the simple-mind-map/full.js bundle to match the package.json version during the build process.

web/scripts · high confidence

New business-themed SVG icons added to the asset library

The web application now includes a new set of vector icons in the \web/src/assets/svg/business/\ directory. These assets, named with numeric suffixes (e.g., \-1.svg\ through \-18.svg\), feature a consistent design language using a specific color palette (teal, orange, red, and dark gray) and depict various business-related concepts such as charts, documents, and abstract data visualizations. These icons are available for use in the UI to represent business features.

web/src/assets/svg · high confidence

New configuration constants for layout styles and visual options

The application now includes dedicated configuration files that define available layout structure images, supported line styles (straight, curve, direct), and visual customization options such as rainbow line color palettes, mathematical formula templates, and icon sets. These constants provide the underlying data for the demo interface's style settings, allowing users to select specific diagram structures, apply curved or direct connections, and customize the appearance of nodes and connectors.

web/src/config · high confidence

New demo page with application takeover mode and configurable static asset paths

A new public index.html entry point has been added for the demo application, introducing an 'application takeover' mode that allows external integration with custom storage services. This mode exposes a global \window.takeOverAppMethods\ object containing specific methods to get and save mind map data, mind map configuration, language settings, and local configuration separately. Additionally, the page supports runtime configuration of static asset paths via \window.externalPublicPath\ and includes a placeholder implementation for fetching initial data from a backend.

web/public · high confidence

New image upload component with drag-and-drop support

A new ImgUpload component has been added to the web interface, allowing users to select images via file input or by dragging and dropping them onto the upload area. The component displays a preview of the selected image and provides a delete button to clear the selection, emitting the image data URL via a 'change' event. The associated styles have been reorganized and moved to the web directory to support this new UI.

web/src/components · high confidence

New layout structures and enhanced node rendering logic

The library introduces several new mind map layout types: Timeline (horizontal), VerticalTimeline (with vertical, left, and right variants), Fishbone (including a variant with fish head and tail shapes), CatalogOrganization, and LogicalStructure (with left-growing support). Additionally, the core layout base class now uses an LRU cache to reuse node instances by UID, significantly improving performance by avoiding unnecessary re-creation of nodes during updates. The node creation process also now supports ancestor list callbacks and integrates with prefix/postfix node content plugins.

simple-mind-map/src/layouts · high confidence

New plugins for collaborative editing, presentation mode, and mathematical formulas

This update introduces several new capabilities to the mind map editor. The Cooperate plugin enables real-time multi-user collaboration using Yjs and WebRTC, synchronizing node changes and cursor states across clients. A new Demonstrate plugin provides a presentation mode that highlights nodes sequentially, supports fullscreen, and includes a 'fill-in-the-blank' feature for interactive quizzes. Additionally, the Formula plugin integrates KaTeX to render mathematical equations within rich-text nodes, with support for direct LaTeX editing. The AssociativeLine plugin has been added to support creating and styling custom connection lines between nodes, while the MindMapLayoutPro plugin improves layout logic for standard mind map structures.

simple-mind-map/src/plugins · high confidence

New utility modules for AI, clipboard, fullscreen, and loading states

Added four new utility files to support new product capabilities: \ai.js\ provides a streaming client for AI chat interactions via the Volcano Engine API; \handleClipboardText.js\ enables parsing and importing mind map data from the Zhixi format, including image conversion; \index.js\ introduces helper functions for fullscreen mode, printing the outline, and copying text/images to the clipboard; and \loading.js\ manages a global loading indicator using Element UI.

web/src/utils · high confidence

New utility modules for canvas navigation, task batching, and LRU caching

The \simple-mind-map/src/utils\ directory now includes several new utility classes that enhance core library capabilities. \AutoMove.js\ implements automatic canvas panning when dragging elements near the viewport edges, using configurable step and limit settings. \BatchExecution.js\ provides a mechanism to queue and flush tasks asynchronously, ensuring that duplicate-named tasks are replaced rather than duplicated. \Lru.js\ introduces a Least Recently Used cache implementation to manage node reuse and optimize performance. Additionally, \mersenneTwister.js\ adds a deterministic pseudo-random number generator for consistent random outputs based on a seed, and \xmind.js\ contains logic for parsing and exporting XMind file formats, including handling images and summaries.

simple-mind-map/src/utils · high confidence

Removals

Removal of legacy frontend assets and configuration

The application no longer includes the legacy \public/index.html\ entry point, the Alibaba Cloud OSS SDK polyfill, and the \src/assets/icon-font\ directory containing the icon font definitions, demo pages, and JavaScript loader. Additionally, the \src/components/ImgUpload\ component for uploading images to Alibaba Cloud OSS and the \src/config\ module defining font families, colors, and border styles have been removed, indicating a shift away from the previous icon and image handling implementation.

(repo-wide) · high confidence

Removal of the legacy Vue-based mind map component

The legacy mind map component, previously bootstrapped via \src/main.js\ using Vue, ElementUI, and Vuex, has been completely removed. This deletion eliminates the \src/package/mind-map\ directory and all its internal modules (including the \MindMap\ class, rendering logic, layout algorithms, themes, and event handling), effectively stripping the application of this specific visualization feature.

src, src/package, src/pages · high confidence

Architecture

Node rendering logic restructured into modular classes

The node rendering logic in \simple-mind-map/src/core/render/node\ has been refactored from a monolithic structure into distinct, modular classes (\MindMapNode\, \Shape\, \Style\) and feature-specific method modules (e.g., \nodeCooperate\, \nodeModifyWidth\, \nodeGeneralization\). This change introduces a dedicated \Shape\ class for rendering node geometries (rectangles, diamonds, etc.) using SVG paths, a \Style\ class for managing theme-based and custom node styles (including gradients and borders), and a \MindMapNode\ class that aggregates these capabilities. The refactoring also adds specific modules for collaborative editing avatars, node width dragging, and generalization (summary) node management, improving code organization and maintainability without altering the external API.

simple-mind-map/src/core/render/node · high confidence

Behavioural changes

14 commits (0 fixes) modifying web/src/assets

A change to existing behaviour in web/src/assets — 14 commits, 1 file.

web/src/assets · medium confidence · unverified

Added dark mode styling for the outline tree component

A new LESS stylesheet for the outline tree component has been introduced, defining visual styles for both light and dark themes. In dark mode, the tree background and text colors are adjusted for contrast, and the currently highlighted node is styled with a subtle highlight. The component also features custom styling for expand icons, including a specific design for leaf nodes that replaces the default icon with a small circular indicator.

web/src/style · high confidence

Application structure reorganized with internationalization and takeover support

The web application source has been restructured to support multi-language display via a new i18n configuration and VueI18n integration, allowing users to switch interface languages. The app now supports a 'takeover mode' where external applications can initialize the instance and access internal state via the global window object. Additionally, the default route now loads the mind map editor directly, the documentation page has been moved to a separate route with a redirect notice, and the UI has been updated with custom scrollbar styles and rounded dialog corners.

web/src · high confidence

Associative line plugin refactored with new control points and text editing

The associative line plugin has been restructured into dedicated modules (controls, text, utils) to support enhanced interactivity. Users can now drag control points to adjust the curve of associative lines, with the system handling backward compatibility for older map versions. Additionally, double-clicking an associative line opens an inline text editor for labels, which respects custom font styles and correctly handles default text states.

simple-mind-map/src/plugins/associativeLine · high confidence

Automatic dark mode styling for the editor interface

The Edit page now automatically applies a dark theme to the entire application body when the user enables dark mode. This is achieved by adding an 'isDark' class to the document body, which triggers a comprehensive set of LESS styles that override Element UI components (such as buttons, inputs, selects, dialogs, and tabs) with dark background and text colors, ensuring consistent visual appearance without requiring manual theme toggling.

web/src/pages/Edit · high confidence

Centralized API for mind map data, configuration, and language persistence

A new API module at web/src/api/index.js consolidates how the application handles storage and retrieval of mind map data, configuration, language settings, and local preferences. It introduces a 'takeover mode' that allows external applications to manage storage via window.takeOverAppMethods, while the default behavior persists data to localStorage. The module also distinguishes between mind map data and configuration storage, and handles edge cases such as exceeding browser storage limits or operating in local file mode.

web/src/api · high confidence

Configurable mouse wheel and touchpad interaction behaviors

The canvas view now supports extensive configuration of mouse wheel and touchpad gestures. Users can choose whether the scroll wheel zooms or pans the canvas, enable zooming centered on the cursor position, reverse the zoom direction, and disable zooming entirely. Touchpad sensitivity is adjustable via step size and translation ratio settings, and horizontal scroll direction issues are resolved. Additionally, holding Ctrl or Command allows zooming when the wheel is set to pan, and multi-selection of nodes is supported via these modifier keys.

simple-mind-map/src/core/view · high confidence

Default theme configuration for mind map nodes and associations

The default theme for the mind map is now defined in a dedicated configuration file, establishing visual defaults for node shapes, colors, fonts, and borders across root, secondary, and deeper levels. It sets specific constraints for embedded images (maximum width of 200px and height of 100px) and defines the appearance of association lines, including their default stroke, color, and dash patterns. Additionally, it configures the layout positioning for node images and tags relative to the text content.

simple-mind-map/src/theme · high confidence

New build configuration and code formatting setup for the web module

The web module now includes a dedicated Vue CLI configuration (vue.config.js) that enables runtime public path setting via a dynamic plugin, disables filename hashing for library builds, and configures a proxy for local API development. Additionally, Prettier formatting rules and ignore patterns have been introduced to standardize code style, while the Babel configuration has been relocated into the web directory.

web · high confidence

New constants and default configuration options for mind map initialization

The library now exposes a centralized \CONSTANTS\ object and a \defaultOpt\ configuration object in the \simple-mind-map/src/constants\ module. This introduces explicit support for new layout structures including vertical timelines (3 variants) and right-facing fishbone diagrams (2 variants), as well as new node shapes like octagonal and triangular rectangles. Default initialization behavior has changed: mouse wheel action defaults to panning (move) instead of zooming, double-click to reset view is disabled by default, and the maximum history count is set to 500. Additional configuration options allow users to control root node positioning, tag placement, image placement, custom clipboard handling, and specific interaction behaviors like disabling mouse wheel zoom or restricting canvas dragging.

simple-mind-map/src/constants · high confidence

Refactored command history and shortcut handling for better performance and control

The core command module has been restructured to improve performance and flexibility. History data is now stored as strings rather than objects, reducing memory usage, and the system supports pausing history collection to avoid unnecessary intermediate states. Shortcut key handling has been decoupled from hardcoded logic, allowing plugins to control responses, with new options to pause shortcut checks when the mouse is outside the canvas and to intercept shortcut execution via a \beforeShortcutRun\ callback.

simple-mind-map/src/core/command · high confidence

Refactored event handling to support touchpad gestures and configurable mouse interactions

The core event module has been rewritten to improve input device support and user interaction flexibility. It now captures multi-directional scroll data (up, down, left, right) from wheel events, enabling better handling of touchpad gestures. A new configuration option allows users to define a custom function to detect whether a wheel event originates from a touchpad, addressing sensitivity issues on certain devices. Additionally, the system now supports a mode where the left mouse button selects multiple nodes while the right mouse button pans the canvas, replacing the previous default behavior.

simple-mind-map/src/core/event · high confidence

Updated distribution assets with new icon set and editor styles

The \dist\ directory has been updated with new compiled CSS files. \app.css\ now includes a comprehensive set of custom icon font definitions (e.g., \iconAIshengcheng\, \iconxmind\) and basic layout styles. A new chunk file (\chunk-ef5c9f42.css\) bundles styles for image upload dialogs, node dialogs, and the \@toast-ui/editor\ (v3.2.2) interface, including markdown preview and toolbar UI. These changes reflect the latest build of the application's frontend assets.

dist · high confidence

Dependencies

Initial dependency manifests for simple-mind-map and web demo

The project now includes \package.json\ and \package-lock.json\ files for the core \simple-mind-map\ library and the \web\ demo application. The core library depends on \@svgdotjs/svg.js\ (3.2.0), \quill\ (2.0.3), \pdf-lib\ (1.17.1), \katex\ (0.16.8), and \yjs\/\y-webrtc\ for collaboration features. The web demo integrates \simple-mind-map\ (0.14.0-fix.3), \element-ui\, \vue\ (2.6.11), and adds dependencies for AI services (\axios\), file handling (\xlsx\), and code editing (\codemirror\).

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 26 → 27 (+1.0)
  • Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 32 → 32 (+0.0)
  • Architecture 80 → 79 (-0.6)
  • Maturity 48 → 48 (+0.0)
  • Readiness 12 → 12 (+0.3)
  • Security 67 → 67 (+0.0)
  • Accessibility 30 → 30 (+0.0)
  • Performance 100 (new)

Resolved (6)

  • Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (no pnpm-resolved versions to grade)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • High CVE: [GHSA redacted] (web/package-lock.json)
  • High CVE: [GHSA redacted] (web/package-lock.json)
  • Medium CVE: [GHSA redacted] (web/package-lock.json)

New (24)

  • High CVE: [GHSA redacted] (web/package-lock.json)
  • Low cohesion: Base (LCOM4 6) (simple-mind-map/src/layouts/Base.js)
  • Low cohesion: RichText (LCOM4 7) (simple-mind-map/src/plugins/RichText.js)
  • Medium vulnerability: [GHSA redacted] (web/package-lock.json)
  • Outdated (npm): @svgdotjs/svg.js
  • Outdated (npm): axios
  • Outdated (npm): codemirror
  • Outdated (npm): core-js
  • Outdated (npm): deepmerge
  • Outdated (npm): eventemitter3
  • Outdated (npm): highlight.js
  • Outdated (npm): jszip
  • Outdated (npm): katex
  • Outdated (npm): mdast-util-from-markdown
  • Outdated (npm): simple-mind-map-plugin-themes
  • Outdated (npm): uuid
  • Outdated (npm): v-viewer
  • Outdated (npm): vue
  • Outdated (npm): vue-i18n
  • Outdated (npm): vue-router
  • …and 4 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

wanglin2/mind-map was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit e8e5ef9c41bc13ca7b13084e078123adff002242 — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.