---
date: 2026-01-19 20:12:20
categories:
  - Releases
---

# Version v0.1.67

This release introduces significant improvements to plugin architecture, user experience enhancements like auto-zoom on node creation, and better modularization of features and endpoints. It also includes numerous bug fixes, enhanced testing coverage, and documentation updates to support these changes.

## New Features

- Plugins now automatically trigger auto-zoom when adding nodes by wrapping graph.addNode, simplifying plugin development and improving UX (3d4c0a) (Eric Ma)
- Added addUserNode() helper and _userNodeCreation flag to track user-initiated node creation and trigger auto-zoom in various node creation flows (6feab6) (Eric Ma)
- CodeFeature is now fully self-contained, registering its modal and event handlers internally with support for Shift+A shortcut for AI code generation (e31c67) (Eric Ma)
- CSV nodes implement an analyze() method to create linked Code nodes directly, moving CSV→Code coupling into the node protocol (dad055) (Eric Ma)
- Feature plugins (Matrix, Committee, Factcheck, Flashcard) now register their modal event handlers internally, removing tight coupling with App.js (97de39) (Eric Ma)
- ModalManager adds setupCanvasEventListeners() to handle modal-related canvas events, further modularizing event handling (944f85) (Eric Ma)
- FeatureRegistry gains getAllFeatures() method to return all registered features for bulk operations (7311fc) (Eric Ma)
- Extracted model utilities (getApiKeyForModel, getBaseUrlForModel) into model-utils.js for better plugin reusability and separation of concerns (48191a) (Eric Ma)
- Added Clear All button to matrix evaluation UI to reset all cells, with guards to prevent double-generation bugs (cd861a) (Eric Ma)
- Extracted /api/generate-code and /api/parse-two-lists endpoints into dedicated Python plugins for cleaner app.py and better modularity (3fcf74, 1158ba) (Eric Ma)
- Added regression and unit tests for auto-zoom, canvas event handler registration, and SSE stream parsing to improve test coverage and prevent regressions (405f78, 36bdc6, e75678, 89fd63) (Eric Ma)

## Bug Fixes

- Fixed Generate button and Enter key event handlers in Code node AI modal to correctly trigger code generation (d99078, 7b4b86, 7b4b86, 7b4b86) (Eric Ma)
- Fixed duplicate canvas event handler registrations causing duplicate flashcard generation and double matrix fills by removing redundant calls (b9546d, 8b5708) (Eric Ma)
- Fixed handleSend to generate AI responses when sending messages in chat, matching reply behavior (25c0e6) (Eric Ma)
- Fixed lazy initialization of graph.addNode wrapper to avoid errors when app.graph is not yet initialized (02c860) (Eric Ma)
- Fixed chat.sendMessage() to properly call onChunk, onDone, and onError callbacks to unblock callers (05a31e) (Eric Ma)
- Fixed missing /api/matrix/fill endpoint registration with SSE streaming support and removed duplicate MatrixFillRequest class (c135b0) (Eric Ma)
- Fixed normalizeText bug in SSE parsing that mishandled spaces after apostrophes (e.g., "don ' t" → "don't") (89fd63) (Eric Ma)
- Fixed import aliasing and NodeType references, restored missing onLoad method in SimpleTestPlugin, and added JSDoc @returns annotations to improve code quality (1d3ac7) (Eric Ma)
- Fixed factcheck.js to use chat.sendMessage() instead of non-existent sendMessageNonStreaming (732e8a) (Eric Ma)
- Fixed committee persona suggestions to add cancel button with AbortController and proper spinner UI (cdea19) (Eric Ma)

## Deprecations

- Removed typed feature getters from App class in favor of accessing features via FeatureRegistry to ensure single-instance usage and eliminate dual-instance bugs (a2111d) (Eric Ma)
- Removed registerFeatureCanvasHandlers() method and its calls to prevent redundant event handler registrations (b9546d, 8b5708) (Eric Ma)
