noteconnection
v1.8.0
Published
Hierarchical Knowledge Graph Visualization System
Maintainers
Readme
2026-04-07 v1.7.0
NoteConnection Knowledge Graph
Legacy Navigation Row (from shared bilingual table)
| English | Key Features | Hardware | Architecture | Quick Start | CLI | Changelog | | :---------: | :------------------------------: | :----------------------: | :------------------------------: | :----------------------------: | :------------: | :------------------------: | | 中文 | 核心特性 | 硬件配置 | 系统架构 | 快速开始 | CLI | 更新日志 |
NoteConnection: Hierarchical Knowledge Graph Visualization System
Unlock the Structure of Your Knowledge.
NoteConnection is a high-performance, standalone visualization system engineered to transform unstructured Markdown knowledge bases into Directed Acyclic Graphs (DAGs).
Unlike traditional "network" views that show a messy web of links, NoteConnection reveals the hierarchy, learning paths, and dependency structures hidden within your notes. It is built for scalability, capable of handling tens of thousands of nodes with ease, and operates completely independently of any specific note-taking app.
Current Mainline Architecture Status (2026-07-03)
English
- The Mermaid fallback failure class reported through the Node-side renderer is now closed at the correct owners:
src/notemd/MermaidProcessor.tsandsrc/reader_renderer.tsboth normalize malformed quoted bracketed-node labels per line before parse/render.PathBridgeremains transport-only. - Guided Learning no longer pays repeated full hosted
Graph/PathEnginereconstruction for the same graph snapshot.src/frontend/workspace_panes.jsnow reuses the hosted Future Path runtime by source-graph signature while keeping the pending-pane behavior insrc/frontend/agent_workspace.js. - Hosted Future Path runtime reuse now has a narrower owner:
src/frontend/hosted_future_path_runtime.jsholds signature-based cache identity plus cold/hot-path diagnostics, andworkspace_panes.jsnow consumes that owner instead of holding the cache logic inline. - Guided Learning first-open behavior is now two-stage: when local graph state is already available, the pending pane can render an immediate hosted Future Path projection before
/api/knowledge/pathreturns, and identical in-flight Learning Path requests are deduped by normalized payload. - Knowledge Workspace public answers now consume bounded DAG context on the main answer path instead of collapsing to only the first top-hit sentence.
src/learning/graphContextAssembler.tsnow emitsanchorGraphProfile, andconversationComposer.tsplusanswerReleaseReview.tsuse bounded path and degree context while keeping the public answer contracted. - The local design references under
ref/enterprise_agent_platformandref/codexnow reinforce the current owner split: runtime/retrieval/memory/release-review stay local, and model-visible context stays bounded and additive. - Compared with the 2026-05-25 through 2026-06-18 plan chain, the missing gap is no longer whether DAG context reaches the public answer path. The remaining gap is calibration and architecture concentration inside a few oversized owners.
- Current architecture pressure is still concentrated in
src/server.ts(~15850 lines),src/learning/KnowledgeLearningPlatform.ts(~11200),src/frontend/workspace_panes.js(~9289),src/frontend/agent_workspace.js(~4882), andsrc/learning/answerReleaseReview.ts(~4261). The next step is narrower extraction around real invariants, not another framework import pass. - Current code-vs-plan details are tracked in Agent Knowledge Workspace Graph Preview and Review Closure (2026-06-20) and the Development Progress Dashboard.
中文
- 通过 Node 侧 renderer 暴露出来的 Mermaid 回退失败类现在已经在正确 owner 处关闭:
src/notemd/MermaidProcessor.ts与src/reader_renderer.ts现在都会在解析/渲染前按行归一化畸形带引号 bracketed-node label;PathBridge继续只做 transport。 - Guided Learning 对同一图快照不再重复支付完整托管
Graph/PathEngine重建成本。src/frontend/workspace_panes.js现在会按 source-graph signature 复用 hosted Future Path runtime,同时保留src/frontend/agent_workspace.js中已有的 pending-pane 行为。 - Hosted Future Path runtime 复用现在也有了更窄的 owner:
src/frontend/hosted_future_path_runtime.js持有按签名复用的 cache identity 与冷/热路径诊断,workspace_panes.js不再内联持有整套 cache 逻辑。 - Guided Learning 首开现在也变成了两阶段行为:只要本地图状态已可用,pending pane 就能在
/api/knowledge/path返回前先渲染 hosted Future Path 投影,而且相同的在途 Learning Path 请求会按归一化 payload 去重。 - Knowledge Workspace 的公开回答现在已经在主回答路径消费有界 DAG context,而不再只退化成首条 top-hit 句子。
src/learning/graphContextAssembler.ts现在会发射anchorGraphProfile,conversationComposer.ts与answerReleaseReview.ts会在保持回答收缩的前提下使用 bounded path / degree context。 - 本地
ref/enterprise_agent_platform与ref/codex设计参考现在进一步支撑当前 owner 切分:runtime / retrieval / memory / release-review 继续留在本地运行时,model-visible context 继续保持 bounded + additive。 - 相对 2026-05-25 到 2026-06-18 的方案链,当前缺口已经不再是“DAG context 有没有真正进入公开回答路径”。剩余缺口主要是回答校准,以及少数大 owner 内的架构集中度。
- 当前架构压力仍集中在
src/server.ts(约15850行)、src/learning/KnowledgeLearningPlatform.ts(约11200行)、src/frontend/workspace_panes.js(约9289行)、src/frontend/agent_workspace.js(约4882行)与src/learning/answerReleaseReview.ts(约4261行)。下一步应该围绕真实不变量做窄提取,而不是再做一轮框架导入。 - 当前代码 / 方案对齐详情见 Agent 知识工作区图预览与回答审核收口(2026-06-20) 与 开发进度看板。
Current Mainline Architecture Status (2026-06-24)
English
- The Agent Knowledge Workspace closure now combines three mainline owners: bounded DAG context assembly, deterministic final-answer release review, and right-pane graph/source projections.
- Public answers remain contracted to the reviewed answer path; citations, graph context, reviewer details, provenance diagnostics, and developer traces belong to secondary panes, artifacts, traces, or exports.
- Matched-file discoverability is now intentionally compact: users get a question-mark help affordance for "left-click opens source and highlights the basis" instead of permanent instructional text in the workspace.
- The matched-file/source-focus path is now right-pane-first: source clicks resolve candidate paths, render Markdown, highlight matched evidence, and expose close controls for the affected right-pane surfaces.
Related Focusis implemented as a side-pane Focus-mode host backed by the main graph projection contract and the shared double-click decision contract; it switches anchors and opens Markdown inside the pane without moving the main graph DOM or calling the global reader, and the hosted view intentionally omits the main toolbar frame, visible edge layer, and dense background context dots.Learning Pathhosts the Godot Future Pathdiffusion/core/treeLayoutcontract, inherits matching Path-mode expansion/collapse/completion state when the live target matches, and routes DOM input through TreeRenderer-style spine-only signals, including right-click prerequisite collapse for the selected node.- The hosted
Related Focusviewport now has pane-local wheel zoom, icon reset, and icon focus-history controls; these controls are intentionally scoped to the right-side Knowledge Focus pane and do not mutate the Tauri main graph runtime. - The hosted
Learning PathFuture Path surface now routes node double-click to the same pane-local Markdown reader used by Knowledge Focus, so opening concrete node text stays inside the Guided Learning pane instead of delegating to the global reader. - The current implementation uses resolved graph labels such as
water glass, not internal atom IDs, for the knowledge graph preview surface. This behavior is pinned by strict browser verification. - Current code-vs-plan details are tracked in Agent Knowledge Workspace Graph Preview and Review Closure (2026-06-20) and the Development Progress Dashboard.
中文
- Agent Knowledge Workspace 本轮收口现在合并了三类主线 owner:有界 DAG context assembly、确定性最终回答 release review,以及右侧 graph/source projection。
- 公开回答继续收缩到经过审核的回答路径;citation、graph context、reviewer detail、provenance diagnostics 与 developer trace 进入次级 pane、artifact、trace 或 export。
- 命中文件可发现性现在刻意保持克制:用户通过问号帮助入口了解“左键打开源文档并高亮依据”,而不是在 workspace 中常驻说明文案。
- 命中文件 / source-focus 路径现在以右侧 pane 为权威阅读面:单击后解析候选路径、渲染 Markdown、高亮命中依据,并在受影响的右侧 pane surface 上提供关闭控件。
关联聚焦已实现为右侧 pane 内托管的 Focus-mode:复用主图投影契约与共享双击决策契约,在 pane 内切换 anchor 或打开 Markdown,不移动主图 DOM,也不调用全局 reader;托管视图刻意不显示主界面的工具框、可见边线与密集灰色背景 context 点。学习路径托管 Godot Future Path 的diffusion/core/treeLayout契约;当主 Path mode 当前 target 匹配时,会继承其 expansion/collapse/completion 状态包,并将 DOM 输入路由为 TreeRenderer 风格的 spine-only 信号,包括对选中主干节点的右键 prerequisite 收起。- 托管
关联聚焦viewport 现在具备 pane-local 滚轮缩放、图标式 reset 与图标式 focus history 控件;这些控制只作用于右侧知识聚焦 pane,不会修改 Tauri 主图运行时。 - 托管
学习路径Future Path surface 现在把节点双击路由到与知识聚焦相同的 pane-local Markdown reader,因此打开具体节点文本会留在引导式学习 pane 内,而不是委托给全局 reader。 - 当前实现使用
water glass这类解析后的图标签,而不是内部 atom ID,作为知识图预览展示名称;该行为已由 strict browser verification 固定。 - 当前代码 / 方案对齐详情见 Agent 知识工作区图预览与回答审核收口(2026-06-20) 与 开发进度看板。
Current Mainline Architecture Status (2026-06-17)
English
- The current DAG clarification is now explicit: "graph structure" means this project's existing DAG-shaped
KnowledgeAtom/RelationEdge/TemporalEdgesubstrate, not a generic graph database integration target. - The 2026-06-17 agent-knowledge slice now includes a first-class graph-conditioned context assembly step:
src/learning/graphContextAssembler.tsselects the anchor, reorders support nodes, attaches explicit store-backedconnectionPaths, builds bounded predecessor/successor windows, records evidence refs/diagnostics, and still preserves legacyassistantMessagecompatibility. - Persistence is guarded for this slice: before auto-saving a rebuilt learning snapshot,
KnowledgeLearningPlatformmerges still-valid store-side relation/temporal edges into the new snapshot so read-side query/conversation flows do not erase externally enriched DAG edges before path enrichment can inspect them. - The next architecture move is no longer extracting the assembler itself; it is expanding graph-aware ranking features beyond relation-degree bonuses, hardening right-pane diagnostics, and adding graph-specific quality gates on top of the new bounded context pack.
- The public answer contract is now enforced in the current composer path:
answer/directAnswerstays to the targeted response, while citations, connection paths, temporal details, durable artifacts, and developer traces belong in the evidence pane or export payload unless the user explicitly asks to inspect them. - The prior DSPy / Guidance / Semantic Kernel / LangChain Core / LiteLLM review is retained as design input only. The main runtime should stay TypeScript-native and use local graph store operations instead of importing Python prompt frameworks into the Tauri/Node path.
- Current code-vs-plan details are tracked in Agent Knowledge DAG Answer Contract Plan (2026-06-17), Knowledge Workspace and DAG Alignment Plan (2026-06-10), and the Development Progress Dashboard.
中文
- 当前已明确:这里的“图结构”指本项目现有 DAG 形态的
KnowledgeAtom/RelationEdge/TemporalEdge底座,不是泛化的图数据库接入目标。 - 2026-06-17 agent knowledge 切片现在已经包含一等 graph-conditioned context assembly 步骤:
src/learning/graphContextAssembler.ts会在回答合成前选择 anchor、重排 support node、挂接 store 支撑的显式connectionPaths、构建有界 predecessor/successor window,并记录 evidence ref / diagnostics,同时保持 legacyassistantMessage兼容。 - 当前切片也补了持久化保护:
KnowledgeLearningPlatform在自动保存重建后的 learning snapshot 前,会把仍然有效的 store 侧 relation/temporal edges 合并回新快照,避免 read-side query/conversation 流程在路径增强读取前抹掉外部增强的 DAG 边。 - 下一步正确的架构动作已经不再是“把 assembler 抽出来”,而是基于新的 bounded context pack 继续扩展 graph-aware ranking feature、右侧原文诊断以及图专项质量门禁。
- 公开回答契约已在当前 composer 路径中强制收缩:
answer/directAnswer只保留 targeted response;citation、connection path、temporal detail、durable artifact 与 developer trace 默认进入 evidence pane 或 export payload,除非用户显式要求查看。 - 先前对 DSPy / Guidance / Semantic Kernel / LangChain Core / LiteLLM 的研究继续作为设计输入,不作为运行时依赖引入。主运行时应保持 TypeScript-native,并优先使用本地图 store operations。
- 当前代码 / 方案对齐详情见 Agent Knowledge DAG Answer Contract Plan (2026-06-17)、Knowledge Workspace and DAG Alignment Plan (2026-06-10) 与 Development Progress Dashboard。
Current Mainline Architecture Status (2026-06-10)
- The current
mainbranch has code-backed scoped retrieval, grounded conversation, durable resource/index/workspace/session/memory/export substrate, explicit export profiles, and PNG-first Godot/mobile render materialization. - The Knowledge Workspace now includes an in-pane scope switcher, a compact
/api/knowledge/conversationstatus strip, grouped file-first knowledge hits, source-markdown rendering with matched-span highlighting in the focus pane, and durable workflow artifacts forflashcard_batchandknowledge_run. - Agent conversation runtime is no longer limited to one flat string:
answer,assistantBlocks,knowledgeRun, grouped knowledge points, citations, memory actions, and trace are all present while legacyassistantMessageremains valid. - The current DAG-backed learning substrate is real:
KnowledgeAtom,RelationEdge,TemporalEdge, path queries, mastery-path/session logic, andKnowledgeQueryItem.relationPathalready exist. The remaining gap is not “having a graph,” but letting answer planning consume it through a dedicated graph-conditioned context layer. - graphdb/sqlite and ANN/external connector paths remain operational baselines, not production-closed claims. Release closure still depends on repeated soak evidence, workload thresholds, recall/latency calibration, strict rollout proof, and multi-host evidence.
npm run verify:foundation:release-evidenceaudits the latest sqlite soak and ANN release-gate reports for freshness and passing gates before host evidence is used as release context;npm run verify:foundation:release-evidence:strictrequires repeated fresh valid history and is exposed in foundation readiness asfoundation_release_evidence_history;npm run verify:foundation:release-evidence:multi-hostis available for release windows that require host diversity.- The current architecture pressure remains ownership reduction:
src/server.ts,src/learning/KnowledgeLearningPlatform.ts,src/frontend/agent_workspace.js, andsrc/frontend/workspace_panes.jsremain the main simplification targets. - Current code-vs-plan details are tracked in Knowledge Workspace and DAG Alignment Plan (2026-06-10), Architecture Progress Alignment and Mainline Plan (2026-06-06), and the Development Progress Dashboard.
🚀 Key Features
1. Visualization & Layout
- Structure Over Chaos: Switch between Force-Directed (Physics) and DAG (Hierarchical) layouts. The DAG layout automatically identifies "Prerequisites" and "Next Steps" to arrange concepts in logical layers.
- Dual Rendering Engine (v0.8.7): Seamlessly toggle between SVG (for interactivity) and Canvas (for high-performance rendering of 10,000+ nodes).
- Interactive Focus Mode: Click any node to isolate it and its context. Features Freeze on Select (v0.8.9) to prevent drift, adjustable Vertical/Horizontal Spacing (v0.8.8), and absolute visual consistency upon exit. Use the Random Focus (dice icon) to discover new connections (v1.0.0).
- Absolute Offline Support (v1.0.0): All library dependencies (D3, KaTeX, Marked, Mermaid, JSZip) are migrated to local assets, ensuring 100% functionality without internet.
2. Intelligence & Inference
- Hybrid Inference Engine: Combines Statistical Probability ($P(A|B)$) and Vector Similarity (TF-IDF) to infer hidden dependencies (e.g., "Fluorescence" implies "Photon") without external AI APIs.
- Scalable Clustering: Aggregates thousands of nodes into high-level "Concept Bubbles" based on folder structure or tags for a cleaner overview.
3. Path Mode: Structured Learning (v1.2.0)
- Curriculum Generation: Instantly transforms your graph into linear learning paths.
- Domain Learning: Master an entire concept cluster (Topological Sort).
- Diffusion Learning: Find the most efficient path to a specific goal (Shortest Path + Prerequisites).
- Hybrid Architecture: Connects to a high-fidelity Godot 4.3 Desktop Renderer via WebSocket (
ws://localhost:9876) for AAA-quality visualization, while maintaining full web compatibility. - Smart Strategies: Choose "Foundational" (Base-first) or "Core" (Importance-first) sorting to suit your learning style.
4. Performance & Control
- High-Capacity Parallel Processing: Utilizes Node.js
worker_threads(up to 12 cores) to distribute computationally intensive keyword matching. - Simulation Controls (v0.9.0): Fine-tune the physics with a Speed/Damping Slider or use the Freeze Layout switch to stop the simulation for stable manual arrangement.
- Hover Lock: Hovering over a node temporarily locks its position, allowing for stable inspection of connections.
💻 Hardware & Driver Requirements
Supported AMDGPU Architectures
NoteConnection utilizes gpu.js for WebGL-based acceleration and plans to support local AI inference via ROCm.
- RDNA 3 (Recommended): Radeon RX 7000 Series (e.g., RX 7900 XT/XTX).
- Status: Best performance for both WebGL and Compute.
- RDNA 2: Radeon RX 6000 Series.
- Status: Stable and mature support.
Driver Configuration
Windows (Development Environment)
- Driver: AMD Software: Adrenalin Edition (23.12.1+).
- Required for DirectX 12/Vulkan/OpenGL support which underpins WebGL.
- Build Tools: To compile
headless-glfor Node.js:- Python 3.x installed and in PATH.
- Visual Studio Build Tools (C++ workload).
Linux (Recommended for AI)
- Mesa (RADV/Radeonsi): Default open-source driver. Best for general WebGL and
gpu.js. - ROCm (Radeon Open Compute): Install only if planning to develop the AI inference features (future roadmap). NoteConnection's core visualization runs fine on standard Mesa drivers.
🏢 System Architecture
NoteConnection is built on a modular architecture designed for performance and extensibility.
Backend (src/backend)
- GraphBuilder: The core orchestrator. It manages the pipeline from file reading to graph construction.
- Worker Threads: Heavy lifting (keyword matching, text analysis) is offloaded to a pool of worker threads (
src/backend/workers), ensuring the main thread remains responsive. - Inference Engines:
StatisticalAnalyzer: Calculates co-occurrence matrices.VectorSpace: Handles TF-IDF embedding and cosine similarity.HybridEngine: Combines signals to suggest directed edges.
Frontend (src/frontend)
- Dual-Engine Renderer:
- D3.js (SVG): Used for high-fidelity, interactive graphs with detailed tooltips and CSS styling.
- HTML5 Canvas: Optimized for rendering massive datasets where DOM manipulation overhead is too high.
- State Management:
SettingsManagerpersists user preferences (Physics, Visuals) tolocalStorage. - Layout Logic: Custom algorithms for Sugiyama-style layering and Force-directed physics.
Desktop Bridge (src/core)
- PathBridge: standard WebSocket server (Port 9876) that exposes the internal graph state to external applications (e.g., Godot Engine), enabling hybrid web/native visualization pipelines.
📦 Quick Start
Desktop System Dependencies
| Platform | Required Dependencies |
|---|---|
| Linux | libwebkit2gtk-4.1-dev, libgtk-3-dev, libsoup3.0, libjavascriptcoregtk-4.1-0 (Ubuntu/Debian: sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev libsoup-3.0-dev patchelf) |
| macOS | No additional dependencies (system WebKit included) |
| Windows | Edge WebView2 Runtime (pre-installed on Windows 11; Windows 10 may need manual install) |
Linux Wayland users: Godot Path Mode requires
GDK_BACKEND=x11on pure Wayland compositors. The launcher sets this automatically whenXDG_SESSION_TYPE=waylandis detected.
Option 1: Windows Installer (Recommended)
- Download
NoteConnection.Setup.exefrom the Latest Releases. - Run the installer.
- Launch NoteConnection from your desktop or start menu.
Option 2: Run with npx
No installation required.
npx noteconnectionOption 3: Global Installation
npm install -g noteconnection
noteconnectionOption 4: Local Development
git clone https://github.com/Jacobinwwey/NoteConnection.git
cd NoteConnection
npm install
npm start- Server runs at:
http://localhost:3000
Option 5: Mobile Support (Android)
NoteConnection supports Android via Tauri Android (native shell pipeline). The Capacitor APK path is deprecated and retained for historical reference only.
Prerequisites
- Node.js (LTS)
- Java JDK (21 or higher)
- Android SDK (Configured in
ANDROID_HOMEor via Android Studio)
Recommended: Tauri Android Build (Native Shell)
# First-time setup
npm run tauri:android:init
# Development build
npm run tauri:android:dev
# Release APK/AAB
npm run tauri:android:buildFor universal APK (armeabi-v7a + arm64-v8a + x86_64):
npm run tauri:android:build:universalDeprecated: Capacitor Build
The Capacitor APK path (build_apk.bat, npm run mobile:build:capacitor) is deprecated as of 2026-05. The android/ Capacitor project directory is retained for historical reference. All active Android development targets the Tauri Android pipeline.
First-time setup on the machine
npm run tauri:android:init
Build APK/AAB through Tauri Android pipeline
npm run tauri:android:build
#### Method C: Capacitor Manual Build Steps
1. **Build Web Assets**:
```bash
npm run build
```
2. **Sync to Android Platform**:
```bash
npx cap sync
```
3. **Build APK**:
Open the `android` directory in Android Studio and build, or use the command line:
```bash
cd android
./gradlew assembleDebug
```
APK will be located at: `android/app/build/outputs/apk/debug/app-debug.apk`
#### Mobile Capability Boundary
- Capacitor packaging path does not embed the desktop Node sidecar workflow, but native Capacitor runtime can still build graph payloads locally when Filesystem APIs are available and the dataset stays within mobile limits.
- Tauri Android path provides the native-shell runtime route and uses Android-native `build_graph_runtime` when mobile-side parity with the Tauri architecture is required.
### 3. Usage Guide
1. **Select Source**: Use the dropdown in the top-left to choose a folder from `Knowledge_Base`.
2. **Load**: Click "Load". For large datasets (>200 files), parallel processing engages automatically.
3. **Explore**:
- **Layout**: Toggle **DAG** for hierarchy or **Force** for clusters.
- **Renderer**: Switch to **Canvas** if the graph feels sluggish.
- **Focus**: Click a node to enter Focus Mode. Use the sliders to adjust spacing.
- **Control**: Use the **Simulation** panel to freeze the layout or adjust speed.
<a id="cli-en"></a>
## 🖥️ CLI Usage (v0.9.71)
You can load a knowledge base and build the graph directly from the command line without using the UI. This is useful for automated builds or headless environments.
### Usage
```bash
npm start -- --path "<path_to_knowledge_base>" [options]Options
| Option | Description | Default |
| ----------- | -------------------------------------------------------------------- | ------------------------------ |
| --path | Absolute path to the folder containing your Markdown files. | Knowledge_Base |
| --gpu | Enable AMDGPU/WebGL acceleration for layout and vector calculations. | true (if hardware supported) |
| --no-gpu | Disable GPU acceleration (Force CPU). | false |
| --static | Enable Static Mode (Backend calculation only, frozen frontend). | false |
| --workers | Number of worker threads to use. | numCPUs - 1 |
Example
# Basic Load
npm start -- --path "C:/Users/MyName/Documents/MyNotes"
# GPU Accelerated Build
npm start -- --path "E:/Knowledge/ObsidianVault" --gpu
# Force CPU (if GPU has issues)
npm start -- --path "E:/Knowledge/ObsidianVault" --no-gpuNote: CLI runs generate unique data files (data_cli_{kb_name}_{time}.js) to preserve the original data.js. When the server starts, it will automatically serve these specific files to the frontend.
📂 User-Defined Knowledge Base (v1.0.0)
Managing your knowledge base source is now easier than ever.
- First Run Setup: On first launch, you will be prompted to select your
Knowledge_Basefolder. - Persistent Config (
app_config.toml): Your KB path, language, and multi-window preferences are saved in%LOCALAPPDATA%/NoteConnection/app_config.toml(Windows default) and remembered across restarts. - Legacy Auto-Migration: If a legacy
kb_config.jsonexists in the same config directory, NoteConnection automatically migrates it toapp_config.toml. - Change Anytime: Use the File > Change Knowledge Base... menu option to switch folders instantly.
- Reset: Use File > Reset to Default to return to the bundled demo notes.
- Config Path Overrides: Set
NOTE_CONNECTION_CONFIG_PATH(full file path) orNOTE_CONNECTION_CONFIG_DIR(directory) to customize whereapp_config.tomlis stored. - Window Behavior Tuning: Edit
[multi_window]inapp_config.toml(single_window_mode,hide_tauri_when_pathmode_opens,restore_tauri_when_pathmode_exits,confirm_before_full_shutdown_from_godot,sync_language). - Reader Protocol Tuning: Edit
[frontend_settings.reading]to control markdown rendering runtime (markdown_engine,chunk_block_size,prefetch_blocks,index_cache_ttl_sec,max_doc_bytes). - Detailed Config Guide: See
docs/en/app_config.toml_guide.mdand templatedocs/examples/app_config.template.toml.
# Minimal recommended app_config.toml
knowledge_base_path = "E:/Knowledge_project/NoteConnection_app/Knowledge_Base"
user_language = "en"
[multi_window]
single_window_mode = true
hide_tauri_when_pathmode_opens = true
restore_tauri_when_pathmode_exits = true
confirm_before_full_shutdown_from_godot = true
sync_language = true
[frontend_settings.reading]
mode = "window"
markdown_engine = "auto" # "legacy" | "pulldown" | "auto"
chunk_block_size = 36
prefetch_blocks = 8
index_cache_ttl_sec = 1800
max_doc_bytes = 100663296Markdown Reader Protocol (v1.6.8)
- Dual-engine gray release:
markdown_engine = "auto": preferpulldown-cmark, fallback to legacy on failure.markdown_engine = "pulldown": keep automatic fallback to legacy to avoid blank readers.markdown_engine = "legacy": force original parser path.
- Unified cross-window behavior: Tauri reader and Godot reader now both consume the same sidecar markdown protocol (
index/chunk/resolve-node/resolve-wiki). - Large file stability: reader no longer requires single-shot full markdown payloads and supports block-based incremental loading.
- Mermaid reliability hardening:
- Godot reader Mermaid rendering now uses
renderer = "auto"so it can prefer frontend bridge and automatically fallback to localresvgwhen bridge render is unavailable. - Mermaid fences must start on a new line; inline
$$```mermaidpatterns can break block classification. - Use
npm run verify:markdown:mermaid:fence -- Knowledge_Base/testconceptto catch malformed inline Mermaid fences before release.
- Godot reader Mermaid rendering now uses
- Local MCP web-debug baseline (Runbrowser):
- Build locally from source:
pnpm --filter @jiweiyuan/runbrowser-server build,pnpm --filter @jiweiyuan/runbrowser-core build,pnpm --filter @jiweiyuan/runbrowser-mcp build. - Run local MCP entrypoint:
node E:\Knowledge_project\tools\runbrowser\packages\mcp\bin.js.
- Build locally from source:
🏗️ Build & Deployment
For developers building from source, NoteConnection now defaults to the runtime-first path:
Electron desktop pipeline was removed on 2026-03-01 (deprecated and decommissioned).
Tauri Build (
npm run tauri:build): Default desktop package path. Uses runtime-first assets and excludes pre-generated graph payloads.Tauri Mini Build (
npm run tauri:build:mini): Legacy-compatible alias of the same runtime-first packaging path.Tauri Full Graph Build (
npm run tauri:build:full): Explicit opt-in path for including generated graph assets when real files are present locally.Build (
npm run build): Default runtime-first frontend build.Build Full Graph Assets (
npm run build:full): Explicit opt-in frontend build for local/demo scenarios that need pre-generated graph assets.Godot Bootstrap (
npm run prepare:godot:bin): materializes the host Godot sidecar from local overrides/search paths, cache, or a pinned download URL.Desktop Release Godot Mirror: release CI now seeds a project-controlled GitHub Releases mirror tag for Godot archives, then downloads mirror-first with upstream fallback.
LFS Policy Guard (
npm run verify:lfs:policy): blocks new Git LFS drift undersrc/frontend/andsrc-tauri/bin/while migration still carries legacy exemptions. Future strict mode is available vianpm run verify:lfs:policy:strict.Sidecar Supply Readiness (
npm run verify:sidecar:supply): reports whether the current desktop host is offline-ready or still network-dependent before shrinking the remaining sidecar LFS bridge.GPU Dev Start (
npm run tauri:dev:mini:gpu): Recommended GPU-enabled Tauri development command.Do not use
npm run tauri:dev:mini --gpubecause npm treats--gpuas config and prints warnings.
📚 Documentation Architecture (Diataxis + MkDocs)
- Canonical long-form docs remain under
docs/en/*anddocs/zh/*. - Diataxis navigation pages are maintained under
docs/diataxis/<lang>/*. - Mapping governance is versioned in
docs/diataxis-map.json. - Run mapping validation:
npm run docs:diataxis:check. - Run local docs site preview:
npm run docs:site:serve. - Build static docs site:
npm run docs:site:build. - GitHub Pages Docs Portal (project site):
https://jacobinwwey.github.io/NoteConnection/. - Host root (for routing baseline):
https://jacobinwwey.github.io/. - Recommended lookup entry points:
- Users:
/diataxis/zh/tutorials/first-run/or/diataxis/en/tutorials/first-run/ - Developers:
/diataxis/en/reference/interfaces-and-runtime/and/diataxis/en/reference/release-and-governance/ - Maintainers assessing LFS / desktop bootstrap risk:
/en/sidecar_supply_strategy/or/zh/sidecar_supply_strategy/ - Maintainers comparing mirror cost / user friction / maintenance burden:
/diataxis/en/explanation/sidecar-supply-feasibility/or/diataxis/zh/explanation/sidecar-supply-feasibility/
- Users:
- CI auto publish workflow (GitHub Pages):
.github/workflows/docs-github-pages-publish.yml. - Manual rollback entry: run workflow dispatch and set
git_refto a stable tag/commit. - MkDocs base/path can be overridden by environment variables:
MKDOCS_SITE_URL,MKDOCS_BASE_PATH. - CI policy gate for docs mapping and site build:
.github/workflows/docs-diataxis-site.yml. - Docs release + rollback runbook:
🛠️ Hardware & Driver Requirements (AMDGPU)
For optimal performance with "GPU Optimised Rendering", especially on AMD RDNA cards (like RX 7900XT):
- Drivers: Ensure you have the latest AMD Adrenalin Edition drivers installed.
- Node.js: The project uses
gpu.jswhich relies onheadless-glfor Node.js context.- On Windows, this usually works out of the box with standard build tools (
windows-build-tools). - If you encounter
glerrors, ensure Python and C++ compilers are available.
- On Windows, this usually works out of the box with standard build tools (
📅 Changelog
v1.7.0 - Startup Acceleration Closure, Multi-Platform Validation, and Learning Roadmap Foundation (2026-03-31)
- Tag Compare Snapshot (
v1.6.0..v1.7.0):47commits,160files changed,+20,224 / -1,444churn.- Engineering footprint concentrated in:
src/frontend/,scripts/,docs/,src-tauri/,package*.json.
- Startup Runtime Optimization Closure (Phase 2/3/4 + v1.1 Hardening):
- Added startup delta tick transport (
tickMode: full|delta) with low-alpha adaptive controls (lowAlphaDeltaEpsilonMultiplier,lowAlphaFullSyncEveryTicks). - Added frame-coalesced startup tick application on main thread to reduce redundant repaint pressure near stable phase.
- Hardened warm-start recovery with strict snapshot validation (fingerprint, age, node/edge consistency, position coverage threshold).
- Expanded startup telemetry at
T5 stable_layoutwithtickSummary(fullTicks,deltaTicks,deltaRatio, payload and frame metrics).
- Added startup delta tick transport (
- Cross-Platform Startup Validation Toolchain:
- Added/extended compare + matrix + watch + simulate + cohorts + signoff automation scripts for startup KPI governance.
- Introduced no-hardware engineering signoff flow (Windows real logs + simulated cohorts) while preserving release-grade requirement for real multi-device cohorts.
- Runtime Contract and Documentation Alignment:
- Synced Diataxis EN/ZH runtime references with the new startup profile fields and telemetry semantics.
- Extended startup acceleration plan docs with v1.1 optimization and risk-guardrail closure details.
- Added bilingual knowledge-mastery evolution roadmap docs and integrated them into Diataxis navigation and mapping.
- Version Metadata Alignment:
- Unified release metadata to
1.7.0inpackage.json,package-lock.json, andsrc-tauri/tauri.conf.json.
- Unified release metadata to
v1.6.7 - Docs Governance Cleanup & GitHub Pages Stabilization (2026-03-29)
- Removed unrelated external community UI documentation references from the repository documentation system.
- Replaced legacy external runbooks with project-owned docs operations runbooks:
docs/en/docs_release_and_rollback.mddocs/zh/docs_release_and_rollback.md
- Updated Diataxis governance mapping and cross-links to use the new canonical runbook paths.
- Added GitHub Pages preflight verification in docs publish workflow to surface clear warnings when Pages is not enabled.
- Resolved docs portal 404 condition by enabling repository Pages with
gh-pagesbranch as publish source. - Prepared formal release metadata and version alignment to
1.6.7(npm + Tauri).
v1.6.6 - Unified Provider Runtime & TOML Settings Consolidation (2026-03-26)
- Upgraded NoteMD API calling flow to a definition-driven provider architecture inspired by recent obsidian-NotEMD and cline patterns.
- Added transport-based dispatch (openai-compatible, anthropic, google, azure-openai, ollama) and provider metadata (apiKeyMode, apiTestMode, category).
- Expanded built-in provider presets: Qwen, Doubao, Moonshot, GLM, MiniMax, Groq, Together, Fireworks, Requesty, OpenAI Compatible.
- Unified runtime settings persistence in app_config.toml across Tauri + Godot + NoteMD:
- full NoteMD settings in [notemd] + [[notemd.providers]] (with legacy [notemd.api] compatibility mirror)
- Godot Path Mode settings in [path_mode] with runtime API endpoint /api/path-mode/settings
- Godot settings panel migrated to runtime TOML sync path.
- Hardened Rust-side TOML writes to preserve unknown sections, preventing accidental loss of [notemd] / [path_mode] when Tauri updates KB path or language.
- Updated bilingual documentation and templates for v1.6.6 schema and operations.
v1.6.5 - Documentation Portal Update (2026-03-26)
- Published MkDocs documentation to GitHub Pages project site.
- Added bilingual README guidance for docs lookup paths (user/tutorial and developer/reference entry points).
- Standardized docs publish flow for maintainers:
npm run docs:site:build.github/workflows/docs-github-pages-publish.yml(workflow_dispatchsupportsgit_refrollback)
v1.6.0 - Unified Runtime, NoteMD Integration & Release Hardening (2026-03-23)
Tag Compare Snapshot (
v1.3.0..v1.6.0):107commits,301files changed,+125,957 / -10,083churn.- File-level status:
241added,56modified,3deleted,1renamed. - Largest engineering footprint:
src/,docs/,scripts/,path_mode/,src-tauri/.
Single-Window Runtime Orchestration:
- Implemented Tauri <-> Godot visibility handoff so only one primary window is shown at a time.
- Added Godot close-confirm flow ("Return to main interface" vs "Close all windows") to prevent accidental full shutdown.
- Stabilized Godot window visibility control and removed deprecated foreground APIs.
NoteMD Embedded Experience:
- Kept NoteMD as an embedded experience (not a standalone desktop window) aligned with both Tauri and Godot flows.
- Fixed non-responsive
Browseactions in Tauri NoteMD (file/folder/save pickers now complete the IPC flow). - Defaulted embedded NoteMD to a single
One-Click Extractworkflow that chains concept extraction, batch generation from titles, and batch Mermaid repair into a source-file-named KB folder. - Moved embedded NoteMD API configuration into
app_config.tomlunder[notemd]and[notemd.api], with matching fields in the embedded NoteMD window. - Added
noteconnection notemd ...CLI entrypoints for shared NoteMD actions. - Added user guidance that PDF files must be converted to Markdown via Mineru before import.
Platform & Toolchain Release Readiness:
- Standardized Java policy to JDK 21+ and verified support for JDK 23.0.1 in Android prerequisites/build tooling.
- Added Android/Tauri patching and verification scripts for prerequisite checks, sidecar validation, and strict evidence gates.
Reliability & Security Gates:
- Expanded CI/workflow coverage for FixRisk operational readiness, mobile e2e contracts, wasm parity, SBOM, attestation, and signature/privacy checks.
- Added broad contract-level regression coverage across mobile/runtime/pathbridge/storage layers.
- Included pre-release CI compatibility fixes for runtime bridge invoke-contract assertions and unsigned SBOM transparency policy handling.
Build Performance & Developer Experience:
- Added low-memory Tauri build wrappers and release-profile safeguards for constrained environments.
- Added sidecar readiness preflight to skip redundant rebuilds during dev startup, reducing warm
tauri:dev:mini:gpustartup latency.
v1.5.58 - Godot Path UI Enhancements (2026-03-19)
- Visuals: Added Vertical/Horizontal main spine layout toggle and premium aesthetic color schemes (Nord, Tokyo Night, etc).
- Interactions: Upgraded hover info box with deep node interactivity (Left/Double/Right click).
v1.5.x Migration Runtime Logs (Canonical Archive)
- Full bilingual logs are centrally archived in
export.md. - This README keeps summary pointers in the changelog for readability.
2026-03-03 v1.5.10: Option A P0 Status Update (Tauri Android Native Folder/Build/Content Flow)2026-03-03 v1.5.5: Migration Status Revalidation2026-03-03 v1.5.3: Migration Gate Closure Update2026-03-02 v1.5.1: Tauri Migration Progress Update (Desktop + Android)
v1.4.5 - Physically-Based Bubbles & Interactive Physics (2026-03-01)
- Godot Renderer Upgrade:
- Spectral Bubble Shader: Introduced an advanced 81-wavelength Thin-Film Interference shader (
sp_spectral_filter) combined with 3D noise for hyper-realistic iridescent soap bubbles. - Interactive Physics: Converted all static bubbles into physically simulated
RigidBody3Dentities. Bubbles now gently float, bump into each other, and orbit their targets naturally. - Environment Cleared: Removed the floor to allow 360-degree floating visualization without ground clipping.
- Spectral Bubble Shader: Introduced an advanced 81-wavelength Thin-Film Interference shader (
- UI Enhancements:
- Cancel Completion: The "Mark Complete" button dynamically turns into "Cancel Completion" for already learned nodes, making curriculum management much more forgiving and interactive.
v1.4.4 - Tauri Bridge Stabilization & Cache Workflow Hardening (2026-03-01)
- Electron -> Tauri Runtime Alignment:
- Path Consistency: Unified runtime path resolution so sidecar graph artifacts are read from bundled frontend assets and written to a writable runtime data directory.
- Knowledge Base Discovery: Standardized folder listing and loading flow for
Knowledge_Basesource roots in Bridge-first mode.
- Build/Load Safety:
- Cache Decision Flow: Restored pre-build decision behavior (
Load ExistingvsRegenerate) when target cache already exists. - Duplicate Request Suppression: Added frontend + backend de-dup guards to prevent repeated restore/build execution on a single load action.
- Cache Decision Flow: Restored pre-build decision behavior (
- PathBridge / WebSocket Stability:
- Client Diagnostics: Added tagged client connect/close logging (id, tag, code, reason) for precise bridge RCA.
- Godot URL Compatibility: Fixed Godot websocket URL parsing by switching to
ws://127.0.0.1:9876/?client=godot. - Idle Reconnect Elimination (Tauri): Disabled
frontend-earlyauto-connect in Tauri mode to stop background1001reconnect churn.
- Language/Menu Sync Robustness:
- Idempotent Sync: Added language sync guards in both frontend i18n and Tauri Rust command handlers to avoid repeated no-op menu updates.
v1.4.3 - 9-Rule Tree Layout Engine (2026-02-26)
- Layout Engine Upgrade:
- Spine & Tributaries Logic: Replaced basic geometric node placement with a robust 9-Rule Topological Layout engine (Expansion Order, Preceding Immunity, Following Migration, Single Appearance, Cross-Tributary Isolation, Spine Always Visible, Sticky Claim, Unit Migration, Tributary Hierarchy Immunity).
- Node Ownership: Implemented a recursive claiming system where expanding nodes naturally claim their prerequisites (tributaries), arranging them in a visually structured hierarchy.
- Frontend Enhancements:
- Expansion Tracking: The system now seamlessly tracks node expansion orders, ensuring precise deterministic rendering as complex prerequisite chains are unspooled.
- Sticky Claims (Configurable): Node ownership persists across view updates, avoiding jarring layout reorganizations during consecutive clicks.
- Godot Renderer Adaptations:
- Expansion Badges: Added intuitive
[+]/[-]badges in the Godot desktop renderer to indicate combinable prerequisite branches visually. - Spine Highlighting: Core critical-path nodes ("Spine") receive an elegant glowing border to distinguish the primary learning flow from peripheral branches.
- Expansion Badges: Added intuitive
v1.4.1 - Tree View Interaction Fixes (2026-02-01)
- Interaction Polish:
- Long Press Navigation: Fixed an issue where Long Press (0.6s) on a node would trigger the Context Menu instead of navigating to the node. Now correctly switches the Central Node.
- Collapse All: Added a dedicated
[-]button to the Learning Path header and enabled Middle Click to instantly collapse all expanded nodes. - Right-Click Toggle: Fixed a regression where Right-Click would not correctly toggle node expansion states.
- Lazy Loading UI: Replaced separate
(+)/(-)buttons with a unified, state-aware[Count]indicator that toggles visibility of prerequisite chains.
v1.4.0 - Path Mode Learning UX & Tree View (2026-01-30)
- Path Mode Bug Fixes:
- Unmark Sync Fix: Added
unmarkCompleteandcompletionSynchandlers toPathBridge.ts. - UI Sync on Unmark: Tree panel refresh + central bubble progress update after unmarking.
- Shader Syntax Fix: Corrected
depth_draw_alpha_prepasstodepth_prepass_alpha.
- Unmark Sync Fix: Added
- Path Mode Learning UI:
- Navigation History: Return button with dropdown for learning history.
- Edit Mode: Toggle to enable/disable unmarking nodes on PC.
- Tree Panel: Collapsible dependency tree with visual states.
- Progress Display: "X of N" progress indicator on central bubble.
- Planned: Enhanced Graphical Tree View:
- SubViewport overlay with bezier curves (mind-map style).
- 4 visual themes: Colorful (default), Dark, Glass, Minimal.
v1.3.0 - Path Mode Polish & UI Refinements (2026-01-24)
- Reader Integration:
- Seamless Access: Double-clicking the central node in "Orbital Layout" now instantly opens the
Reader, displaying full node content. - Data Fetching: Fixed a critical issue where the reader would open empty; now correctly retrieves full metadata from the global graph state.
- Seamless Access: Double-clicking the central node in "Orbital Layout" now instantly opens the
- Visual Polish:
- Orbital Layout: Significantly improved node dispersion (Radius 350-950px) to reduce label overlap.
- Edge Clarity: In Orbital mode, strictly hides edges not connected to the central node, reducing visual clutter by 90%.
- Label Visibility: Peripheral nodes now always display labels, sized proportionally to their distance (max 16px).
- Depth of Field: Adjusted opacity falloff to ensure distant nodes remain visible (min 0.4 opacity).
- UX Improvements:
- Target Selection: Increased the "Target Node" search limit from 20 to 300, ensuring users can find any node in the graph.
- Interactive Layers: Fixed
z-indexlayering issues where the Reader window was previously hidden behind the Path visualization.
v1.2.0 - Path Mode & Desktop Renderer (2026-01-23)
- Path Mode: Introduced a major new feature set for converting graphs into linear learning paths.
- Learning Modes: 'Domain Learning' (Topological) and 'Diffusion Learning' (Goal-oriented).
- Visualization: New Radial and Tree layouts powered by D3/Canvas.
- Strategies: 'Foundational' and 'Core' sorting algorithms.
- Hybrid Architecture:
- Godot Bridge: Implemented
PathBridge.tsto sync graph state with external renderers via WebSocket (Port 9876). - Native Rendering: Added support for Godot 4.3 to render the graph with high-fidelity Vulkan graphics (Source in
path_mode/).
- Godot Bridge: Implemented
- DevOps:
- NPM Scripts: Added
pathmode:devandpathmode:testworkflows. - UI Stability: Fixed critical bugs in Radial Layout visibility (
centerView) and Exit Mode logic.
- NPM Scripts: Added
v1.1.2 - Path Resolution & UI Stability (2026-01-23)
- Backend Protocol Fix:
- Improved
src/server.tsto correctly handle URL query parameters (e.g.,?v=timestamp) for static files. - Resolves issues where cache-busting URLs would return 404 on Windows.
- Improved
- UI Interaction Fix:
- Welcome Modal: Fixed a bug in
welcome.jswhere skipping the tutorial would cause the folder selection menu to become unresponsive due toz-indexclobbering. - Guaranteed
z-index: 1000preservation for#source-controlacross all modal dismissal paths.
- Welcome Modal: Fixed a bug in
v1.1.1 - Mobile Build Automation (2026-01-22)
- Mobile DevOps:
- Introduced
build_apk.batfor one-click Android APK generation on Windows. - Automated environment checks (Node, JDK, Android SDK) and project scaffolding.
- Introduced
- Documentation: Added comprehensive guides for mobile building in README and User Manual.
v1.1.0 - CI/CD Automation (2026-01-22)
- GitHub Actions Integration:
- Added automated npm publishing workflow triggered on releases and version tags.
- Added version consistency check to prevent mismatched releases.
- DevOps: Streamlined release process with
git tag v1.1.0 && git push --tags.
v1.0.1 - Maintenance & UX Refinement (2026-01-21)
- Multilingual Consolidation:
- Removed redundant hardcoded translation logic in
app.js. - Centralized all UI strings into
I18nManagerfor consistent language switching. - Fixed "Mixed Language" issue in Welcome Modal where some labels remained in English.
- Removed redundant hardcoded translation logic in
- Onboarding UX Fixes:
- Tutorial Stability: Fixed a crash in Focus Mode tutorial by exposing
enterFocusModecorrectly. - Welcome Modal Timing: Resolved race conditions in
source_manager.jsto ensure the modal displays accurately after data is loaded.
- Tutorial Stability: Fixed a crash in Focus Mode tutorial by exposing
- Protocol & Caching:
- Cache-Busting Handler: Implemented a dynamic script loader in
source_manager.jsusing timestamps to prevent browsers from serving staledata.jsorapp.js. - Refined Protocol Handler: Optimized
app://protocol inmain.tsusingnet.fetchfor more robust local file serving in production.
- Cache-Busting Handler: Implemented a dynamic script loader in
v1.0.0 - Production Release (2026-01-14)
- Stability & Mini Build Reliability: Major fixes for the "Mini" build mode.
- First-Run Fix: Resolved critical crashes when no data is present on first launch (Added
typeofsafety checks). - Artifact Cleanup: Build process now automatically cleans up previous data artifacts to ensure minimum installer size (~70MB).
- Worker Path Fix: Corrected path resolution for backend workers in production builds (Resolved double-dist folder issue).
- First-Run Fix: Resolved critical crashes when no data is present on first launch (Added
- Absolute Offline Strategy: All external CDN dependencies migrated to local assets. The system is now 100% functional without an internet connection.
- Focus Mode Refinement:
- Visual Restoration: Fixed a bug where nodes retained Focus Mode sizes after exit. Now perfectly restores pre-focus radius and font-size.
- Stability: Fixed D3 sibling selection (
getAttribute) errors during Focus entry.
- Physics & Spacing Overhaul:
- New Defaults: Standard link distance increased to 250px and collision radius to 25px.
- Expanded Customization: Slider ranges increased significantly (up to 600px distance / 100px collision).
- Quality of Life: Knowledge Base "All Folders" is now automatically selected in Electron mode for a smoother start.
- Performance & Focus Overhaul:
- O(1) Neighbor Lookup: Adjacency caching reduces transition time from O(N*M) to O(1).
- Batched Rendering: UI updates synchronized via
requestAnimationFrame.
- User-Defined Knowledge Base: New First-Run Setup, persistent configuration, and menu controls.
- Security & CSP: Enhanced CSP for extreme offline security and removed deprecated flags.
v0.9.83 (2026-01-13)
- GPU Worker Integration: Fully enabled GPU acceleration in the frontend Simulation Worker. The worker now dynamically imports
gpu-browser.min.jsandlayout_gpu.jsand respects thegpuRenderingsetting. - Performance Fix: Resolved an issue where "GPU Optimised Rendering" was ignored during the initialization phase, forcing CPU calculation. Large graphs now load significantly faster.
- Robustness: Fixed a critical bug in
updateParamswhere existing GPU force instances were accidentally overwritten by CPU forces when changing physics settings.
v0.9.82 (2026-01-12)
- Worker Sync & Stability: Introduced the Worker Handshake Protocol (
isLayoutSwitching) to eliminate layout "bounce" and race conditions during transitions. - Focus Mode Interaction: Decoupled manual dragging from physics in Focus Mode, ensuring nodes stay exactly where positioned without simulation interference.
- Layout Persistence: Added a 50% restoration safety threshold to the layout cache; automatically falls back to simulation relaxation if data is inconsistent.
- Analysis Stability: Optimized layout logic to prevent redundant resets during panel resizing while "Freeze Layout" is active.
v0.9.74 (2026-01-12)
- GPU Link Force: Implemented high-performance GPU-accelerated spring forces using
gpu.js. Supports "Gather" algorithm for efficient neighbor processing. - Physics Robustness: Introduced velocity clamping (MAX_VELOCITY=100) and NaN/Infinity safety guards in GPU kernels to prevent node "explosions" and disappearing nodes.
- Layout Switching Fix: Implemented robust state preservation (
layoutCache) for Force and DAG layouts, ensuring node positions are saved and restored without "teleportation". Fixed a critical crash inupdateLayoutand added Focus Mode support for GPU forces. - GPU Resource Management: Refactored
layout_gpu.jsto use a Singleton pattern for the GPU context, preventing WebGL context leaks (limit 16) when toggling settings.
v0.9.71 (2026-01-10)
- Backend Parallel Layout: Accelerated front-end loading by pre-calculating node positions on the backend using worker threads or GPU.
- GPU Optimised Rendering: In the backend layout, added support for AMDGPU acceleration.
- Static Mode: Implemented strict simulation freezing for massive graphs (>5000 nodes) to save resources.
- CLI Support: Added full CLI argument support for automated building and loading.
- Extreme Scale Optimization: Disabled edge rendering entirely for graphs with >10,000 nodes to prevent browser crashes.
v0.9.70 - Frontend Initialization Fix (2026-01-09)
- [x] Critical Fix: Fixed a race condition where the rendering loop started before UI controls were fully initialized, causing blank screens and unresponsive buttons on large datasets.
v0.9.69 - Frontend Crash Fix (2026-01-09)
- [x] Critical Fix: Resolved a "Maximum call stack size exceeded" crash in the frontend when loading graphs with over 100,000 edges. This fixes the "Nodes: 0" issue for massive datasets.
v0.9.67 - Compact Mode & Canvas Fix (2026-01-08)
- [x] Compact Mode: Added a new mode that hides edges by default to improve performance for massive graphs (>5k nodes). This mode is automatically enabled for large datasets but can be toggled in settings.
- [x] Canvas Fix: Resolved an issue where large graphs would display a blank screen on load by forcing an initial canvas render frame.
- [x] Optimization: Rendering loop now completely skips edge iteration in Compact Mode, significantly reducing CPU usage during idle or pan/zoom.
v0.9.61 - Frontend Memory Optimization (2026-01-07)
- [x] Smart Rendering: Automatically switches to Canvas mode by default when the graph contains more than 3000 nodes.
- [x] Performance: Reduces browser memory footprint and improves frame rates for large datasets on initial load.
v0.9.60 - Parallel Graph Metrics (2026-01-07)
- [x] Performance: Parallelized the "Graph Metrics" calculation (Betweenness Centrality) using worker threads.
- [x] Scalability: Distributed heavy Brandes Algorithm computations across multiple CPU cores, ensuring faster graph construction for large datasets.
2026-01-07 v0.9.59 - Vector Space Memory Fix (Sparse Matrix)
Goal: Resolve the "Heap out of memory" crash on Windows 10/11 (128GB RAM) when processing 13k+ files by replacing the dense TF-IDF matrix with a Sparse Vector implementation.
- [x] Memory Optimization
- [x] Sparse Vectors: Refactored
VectorSpaceto useUint32Array(indices) andFloat32Array(values) instead of standard Javascript Arrays. - [x] Efficiency: Reduced memory footprint for 13k files from ~10GB+ (dense) to <500MB (sparse).
- [x] Algorithm: Optimized Cosine Similarity calculation to use sparse dot product ($O(min(N, M))$).
- [x] Config: Increased default Node.js heap limit to 12GB (
--max-old-space-size=12288) inpackage.jsonto utilize available system RAM.
- [x] Sparse Vectors: Refactored
2026-01-07 v0.9.58 - Hybrid Inference Resource Reuse (Optimization)
- [x] Memory Optimization: Implemented resource reuse logic for "Statistical Matrix" and "Vector Space" in
GraphBuilder. - [x] Efficiency: Prevents redundant recalculation of heavy data structures during Hybrid Inference, eliminating memory spikes and resolving OOM crashes on large datasets.
- [x] Cleanup: Added strict memory cleanup steps after inference tasks complete.
v0.9.57 - Worker Memory Optimization (2026-01-07)
- [x] Stability Fix: Resolved "Heap out of memory" crashes when processing large datasets (>13k files) by optimizing the data transfer strategy for Worker Threads.
- [x] Efficiency: Workers now receive file paths and read content on-demand, eliminating the memory overhead of cloning large file content strings across threads.
v0.9.56 - Hybrid Inference Memory Optimization (2026-01-05)
- [x] Memory Analysis: Added granular performance logging to the Hybrid Inference engine, tracking heap usage every 1000 nodes to identify memory spikes on Windows.
- [x] Optimization: Implemented aggressive memory cleanup (clearing matrices and nullifying vector space) immediately after inference completion to prevent Heap OOM.
v0.9.55 - Heap OOM Fix & Iterative DFS (2026-01-05)
- [x] Stability Fix: Resolved "Heap out of memory" crashes on Windows 10/11 by implementing explicit memory clearing for file content before the algorithmic phase.
- [x] Robustness: Refactored
CycleDetectorto use an Iterative DFS (stack-based) approach, eliminating stack overflow risks on deep graphs. - [x] Observability: Split performance logging for "Algorithmic Core" into distinct "Cycle Detection" and "Topological Sort" phases for precise debugging.
v0.9.54 - Welcome Experience (2026-01-05)
- [x] Onboarding: Added a "Welcome" modal that appears when the graph is empty, guiding new users to select a source and load data.
- [x] UX: Highlights the "Source Select" controls during the welcome state.
v0.9.53 - Core API Decoupling (2026-01-05)
- [x] Architecture Refactor: Extracted the core graph building logic into a standalone
NoteConnectionclass (src/core/NoteConnection.ts). - [x] Plugin Prep: Decoupled the core API from CLI/Server-specific file operations, enabling direct integration with future Joplin/Obsidian plugins.
- [x] Documentation: Updated User Manual with missing "Max Workers" performance setting.
v0.9.52 - Cycle Detection Memory Optimization (2026-01-05)
- [x] Stability Fix: Resolved a critical "Heap out of memory" crash on Windows 10/11 when building large graphs with many cycles.
- [x] Algorithm Optimization: Updated
CycleDetectorto limit the number of detected cycles, preventing excessive memory consumption during recursion.
v0.9.51 - Performance Logging & Crash Reporting (2026-01-03)
- [x] System Monitoring: Implemented comprehensive performance logging for backend processes (CPU, Memory, Time).
- [x] GPU Diagnostics: Added execution timing and memory tracking for GPU acceleration steps.
- [x] Crash Reporting: Implemented
CrashLoggerto automatically record unhandled exceptions and worker failures tocrash.logfor debugging stability issues on Windows 11. - [x] Optimization: Integrated
PerformanceLoggeracross the entire Graph Construction pipeline (Node Init, Edge Matching, Inference).
v0.9.50 - GPU Acceleration (2026-01-02)
- [x] Verification: Confirmed feasibility of using AMD Radeon 7900XT for graph construction acceleration via
gpu.js. - [x] Strategy: Validated that Mathematical Inference (Vector Similarity) can be offloaded to GPU, while Text Processing remains optimized on CPU.
- [x] Implementation: Added
amdgpumodule withVectorSpaceGPUclass. Integrated intoGraphBuilderto automatically use GPU for Cosine Similarity matrix calculations when enabled.
v0.9.49 - Statistical Analysis Memory Optimization (2026-01-02)
- [x] Performance: Fixed a critical "Heap out of memory" crash when processing large datasets (>10,000 files) by optimizing the Statistical Analyzer algorithm.
- [x] Efficiency: Reduced the complexity of co-occurrence matrix calculation by ~30x using a sparse, file-centric approach.
v0.9.49 - UI Controls for Parallel Processing (2026-01-02)
- [x] Settings UI: In the Settings Modal, added a "Performance" section with a slider and number input to control "Max Workers".
- [x] API Integration: The "Load" button now sends the user-defined worker limit to the backend build process.
- [x] Persistence: The worker setting is saved in
localStoragealongside other preferences.
v0.9.48 - Parallel Processing Optimization (2026-01-02)
- [x] Configurable Workers: Added 'maxWorkers' configuration to allow utilizing more CPU cores for graph building and statistical inference. Removed the hardcoded limit of 12 workers.
v0.9.47 - Focus Mode Interaction & Layout Fixes (2026-01-02)
- [x] Interaction Logic: Fixed an issue where double-clicking a node to enter Focus Mode would accidentally trigger a zoom-in event. Added event propagation control to prevent this (SVG & Canvas).
- [x] Vertical Layout Spacing: Increased the horizontal offset of node labels in Vertical Focus Mode to prevent text from overlapping with nodes, improving readability (SVG & Canvas).
v0.9.46 - Focus Mode UI Cleanup & Canvas Edge Fix (2025-12-26)
- [x] Immersive Focus: The main control panel and source selection bar are now completely hidden during Focus Mode for a distraction-free experience.
- [x] Canvas Polish: Removed edge rendering in Canvas Focus Mode to reduce visual noise.
v0.9.45 - Canvas Interactivity & Cleanup (2025-12-26)
- [x] Canvas Interactive: Canvas mode now supports Hover (Highlight), Single Click (Stats), and Double Click (Focus Mode) interactions, bringing it to feature parity with SVG.
- [x] Visual Fixes: Fixed an issue where nodes in Canvas mode were rendered too large; they now respect "Size By" settings.
- [x] Cleanup: Removed the deprecated "View Mode" (Clusters) feature.
v0.9.44 - Independent Focus Mode Spacing (2025-12-26)
- [x] Smart Spacing: "Layer-Space" and "Node-Space" settings are now saved independently for "Horizontal" and "Vertical" focus layouts.
- [x] Optimized Defaults: Reduced default Horizontal Layer-Space by 50% and Vertical Node-Space by 75% for tighter, more readable layouts.
v0.9.43 - Context-Aware Settings UI (2025-12-26)
- [x] Dynamic Labels: The "Repulsion Strength" label in the settings now dynamically changes between "Repulsion (Force)" and "Repulsion (DAG)" to clearly indicate which layout configuration is being modified.
v0.9.42 - Distinct Repulsion Settings (2025-12-26)
- [x] Mode-Specific Physics: "Repulsion Strength" is now configured independently for "Force" and "DAG" modes.
- [x] Smart Defaults: Set default repulsion to -550 for Force layout (clusters) and -850 for DAG layout (hierarchy) to optimize initial visual separation.
- [x] Context-Aware Settings: The Settings Modal automatically shows the repulsion value for the current layout.
v0.9.41 - Settings Modal Simulation Freeze (2025-12-26)
- [x] Resource Saving: The simulation now automatically pauses w
