Implement force-directed graph view for visualizing note connections:
- Add graph data model parsing [[wiki-style links]]
- Implement Fruchterman-Reingold layout algorithm
- Create character-based canvas renderer with highlights
- Add interactive filtering by tag/folder
- Support navigation (h/j/k/l), zoom (+/-), and node selection
- New commands: :IdeaGraph, :IdeaGraphFilter
New files:
- lua/ideaDrop/ui/graph/{init,types,data,layout,renderer}.lua
Updated documentation in README.md, CHANGELOG.md, and llms.txt
4.6 KiB
4.6 KiB
Changelog
All notable changes to ideaDrop.nvim will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
🕸️ Graph Visualization (Obsidian-style)
A new force-directed graph view that visualizes connections between your notes:
-
Graph Data Model: Parses
[[Note Name]]wiki-style links from markdown files- Supports
[[link|alias]]format - Builds bidirectional edges (undirected graph)
- Extracts tags and folder metadata for filtering
- Supports
-
Force-Directed Layout: Implements Fruchterman-Reingold algorithm
- Spring forces attract connected nodes
- Repulsion forces prevent node overlap
- Gravity pulls high-degree nodes toward center
- Inverse gravity pushes orphan nodes to periphery
- Temperature-based cooling for stable convergence
- Supports both synchronous and animated layout modes
-
Visual Rendering:
- Dark background canvas for visual clarity
- Node size scales with degree (number of connections)
- Color-coded nodes: blue (default), purple (hubs), gray (orphans), red (selected)
- Semi-transparent edge lines showing connections
- Labels for selected and high-degree nodes
-
Interactive Features:
h/j/k/lnavigation between nodesEnterto open selected note in right-side buffertfilter by tag,ffilter by folder,rreset filter+/-zoom in/out,ccenter graphLtoggle labels,?toggle help overlayq/Escclose graph,Rrefresh graph data- Smooth layout reflow when nodes are filtered
-
New Commands:
:IdeaGraph- Opens the graph visualization:IdeaGraph animate- Opens with animated layout:IdeaGraph refresh- Refreshes graph data:IdeaGraph close- Closes the graph window:IdeaGraphFilter tag <name>- Filter graph by tag:IdeaGraphFilter folder <name>- Filter graph by folder
-
New Configuration Options:
graph.animate- Enable animated layout (default: false)graph.show_orphans- Show nodes without connections (default: true)graph.show_labels- Show node labels by default (default: true)graph.node_colors- Custom colors by folder/tag
-
New Files:
lua/ideaDrop/ui/graph/types.lua- Type definitionslua/ideaDrop/ui/graph/data.lua- Graph data modellua/ideaDrop/ui/graph/layout.lua- Force-directed layout algorithmlua/ideaDrop/ui/graph/renderer.lua- Character-based canvas rendererlua/ideaDrop/ui/graph/init.lua- Main graph module
Other Additions
- Added
CHANGELOG.mdto track project changes - Added
llms.txtfor AI/LLM context about the project - Added graph-related constants and settings in
constants.lua - Added graph-related notification messages
Changed
- Updated help documentation (
doc/ideaDrop.txt) to include all commands:IdeaBuffer,IdeaRight,IdeaTree, tag commands, and search commands - Improved nvim-tree integration to preserve user's existing nvim-tree configuration
- Updated
README.mdwith comprehensive graph visualization documentation - Extended configuration options to include graph settings
Fixed
- Critical: Fixed glob pattern bug where files were not being found due to missing path separator (
/) between directory and pattern inlist.lua,tags.lua, andsearch.lua - Critical: Fixed nvim-tree integration that was overriding user's nvim-tree configuration on every
:IdeaTreecall. Now uses nvim-tree API directly without callingsetup() - Fixed deprecated Neovim API usage: replaced
vim.api.nvim_buf_set_option()andvim.api.nvim_win_set_option()withvim.bo[]andvim.wo[]insidebar.lua - Fixed missing arguments in
sidebar.open()call inlist.luawhich could cause unexpected behavior - Removed unused variable in
tags.lua(filenameinshow_files_with_tagfunction)
[1.0.0] - Initial Release
Added
- Multiple view modes: floating window, current buffer, right-side buffer
- Smart tagging system with
#tagformat - Advanced fuzzy search through titles and content
- nvim-tree integration for file browsing
- Markdown support with syntax highlighting
- Auto-save functionality
- Date-based file organization
- Nested folder support
Commands
:Idea- Open idea in floating window:IdeaBuffer- Open idea in current buffer:IdeaRight- Open idea in right-side buffer:IdeaTree- Open file tree browser:IdeaTags- Browse and filter by tags:IdeaAddTag/:IdeaRemoveTag- Manage tags:IdeaSearch/:IdeaSearchContent/:IdeaSearchTitle- Search functionality