Skip to content

Blog

Version v0.1.68

This release introduces a new feature flag to control GitHub Copilot integration in the chat, enhancing security and configurability. It also improves environment variable management by using secrets, adds documentation to prevent direct deployment to Modal, and fixes a test related to model loading.

New Features

  • Add a feature flag CANVAS_CHAT_ENABLE_GITHUB_COPILOT to enable or disable GitHub Copilot in the chat, including backend checks, frontend UI updates, and API support for feature flags (7e573f) (Eric Ma)
  • Use modal.Secret for managing the CANVAS_CHAT_ENABLE_GITHUB_COPILOT environment variable to improve security and manageability over .env() usage (d59e45) (Eric Ma)
  • Add a rule in documentation to never deploy directly to Modal, improving deployment safety (e83b9c) (Eric Ma)

Bug Fixes

  • Fix test setup by correctly setting copilotEnabled to ensure the loadModels test passes (40d1b7) (Eric Ma)

Deprecations

  • None

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)

Version v0.1.66

This release focuses on improving the plugin architecture by refactoring model-related utilities into a dedicated module. This change enhances code modularity and separation of concerns, making it easier for plugins to reuse model utilities without depending on the chat module. Additionally, some cleanup was performed by removing an obsolete test file.

New Features

  • Extracted model utility functions (getApiKeyForModel and getBaseUrlForModel) into a new module model-utils.js to improve plugin reusability and separation of concerns (5945cd) (Eric Ma)

Bug Fixes

  • Removed leftover test file test-expire-auth.js that was no longer needed after debugging (5945cd) (Eric Ma)

Deprecations

  • None

Version v0.1.64

This version introduces a new AI-powered image generation feature accessible via the /image command, enhancing the user experience with creative visual content generation.

New Features

  • Added AI image generation capability using the /image command (b9eee3) (Eric Ma)

Bug Fixes

  • None

Deprecations

  • None

Version v0.1.65

This release introduces a new feature that improves user experience by prompting for reauthentication when Copilot sessions expire.

New Features

  • Prompt users to reauthenticate when their Copilot sessions have expired (b766d0) (Eric Ma)

Bug Fixes

  • No bug fixes in this release.

Deprecations

  • No deprecations in this release.

Version v0.1.63

This release focuses on improving request routing for Copilot and fixing an issue with duplicate summarize nodes to enhance stability and performance.

New Features

  • Route Copilot requests through an OpenAI-compatible API to improve integration and compatibility (e8a5a0) (Eric Ma)

Bug Fixes

  • Prevent duplicate summarize nodes to avoid redundant processing and potential errors (09a12c) (Eric Ma)

Deprecations

  • None

Version v0.1.62

This release introduces a new authentication flow for Copilot along with comprehensive tests to ensure reliability. Additionally, the plugin development documentation has been extensively rewritten and expanded to provide a complete guide with examples, covering all plugin levels, configuration formats, and file loading mechanisms.

New Features

  • Added a Copilot authentication flow with accompanying tests to improve security and user experience (0c2157) (Eric Ma)
  • Published a comprehensive plugin development guide, including architecture overview, detailed explanations of plugin types, configuration formats, and practical examples with AI prompts (171b22) (Eric Ma)

Bug Fixes

  • None

Deprecations

  • None

Version v0.1.61

This release introduces significant improvements to plugin architecture, including the addition of standalone YouTube and GitRepo plugins with dedicated slash commands. YouTube video embedding and transcript handling have been enhanced for better user experience. The CRDT graph now supports generic recursive conversion for nested plugin data, improving data persistence. URL fetching has been refactored for unified backend routing and clearer separation of concerns. Several bug fixes improve metadata handling, output panel rendering, and file selection UX. Documentation and tests have been updated to reflect these changes.

New Features

  • Added YouTube and GitRepo as standalone plugins with /youtube and /git slash commands, including new node types and simplified URL fetching (1dc43b) (Eric Ma)
  • Added generic recursive conversion for plugin-specific nested objects in CRDT graph to support deeply nested data structures (534f55) (Eric Ma)
  • Added YouTube video embedding to fetch result nodes with responsive iframe and flip button for transcript viewing (40643e) (Eric Ma)
  • Created new /fetch command for URL fetching, separating it from /note command to clarify plugin responsibilities (9d0969) (Eric Ma)
  • Improved YouTube node rendering and UX by embedding video in main content and showing transcript in output panel (4290a9) (Eric Ma)

Bug Fixes

  • Fixed metadata passing and storage to ensure YouTube video embedding works correctly, including storing metadata as Y.Map in CRDT graph (51933a, 4965f8) (Eric Ma)
  • Restored smooth drawer animation and preserved scroll position when selecting files in GitRepo plugin (e5fdac) (Eric Ma)
  • Removed file size limits and improved file selection UX in GitRepo plugin with clear visual distinctions (8f20bb) (Eric Ma)
  • Fixed GitRepoProtocol to properly handle YouTube videos and delegate non-git repo content to parent protocol (9b0d7f, fb4a77) (Eric Ma)
  • Prevented arxiv.org and similar URLs from being incorrectly detected as git repositories by refining URL patterns and adding exclusions (a77c01) (Eric Ma)
  • Fixed YouTube transcript API usage to be compatible with version 1.2.3 and updated dependencies accordingly (e5bcad, 72f665) (Eric Ma)
  • Fixed output panel rendering for YouTube videos by ensuring node updates before re-render and deferring rendering until graph update completes (a5fea7, 71bc36, c95143) (Eric Ma)
  • Fixed backend URL fetch endpoint to pass metadata dict instead of old video_id format (51933a) (Eric Ma)
  • Fixed handlers to accept additional parameters via **kwargs to avoid TypeErrors in GitRepo handler (caeb87) (Eric Ma)

Deprecations

  • Renamed RESUMMARIZE action to SUMMARIZE throughout the codebase for clarity and consistency (8c7f3d) (Eric Ma)

Version v0.1.60

This release introduces a fully self-contained Git repository plugin with private repository support and credential management, significantly enhancing how git repo nodes are handled. The plugin architecture continues to mature with comprehensive plugin-ification of node types and features, improved keyboard shortcut handling, and expanded plugin-scoped event handling. Additionally, the release includes numerous bug fixes, UI improvements, and extensive documentation and testing enhancements.

New Features

  • Added a self-contained Git repository plugin with interactive file selection, file tree rendering, and support for private repositories via credential management, including UI integration and backend API updates (30babc) (Eric Ma)
  • Plugin-ified keyboard shortcuts and action buttons with protocol-based dispatch and customizable node actions, improving extensibility and user interaction (a5f63c) (Eric Ma)
  • Made the Edit button on git repo nodes open a file selection modal that pre-selects fetched files and updates nodes on save, streamlining editing workflows (4318bc) (Eric Ma)
  • Added plugin-scoped canvas event handlers and implemented a comprehensive poll feature plugin demonstrating plugin-scoped event handling, streaming LLM generation, and slash command integration (aa54ea) (Eric Ma)
  • Converted numerous node types (AINode, HumanNode, OpinionNode, ResearchNode, PdfNode, FlashcardNode, FactcheckNode, HighlightNode, FetchResultNode, SummaryNode, NoteNode, ReferenceNode, SearchNode, CsvNode, ImageNode, SynthesisNode, ReviewNode) into fully self-contained plugins with protocol methods and comprehensive test suites, enhancing modularity and maintainability (multiple commits from 42af52 to e8e8aa) (Eric Ma)
  • Added FileUploadRegistry and FileUploadHandlerPlugin base class to enable plugin-based backend file type handlers, laying the foundation for extensible file upload support (a29d52) (Eric Ma)
  • Added private git repository support with credential management UI, backend API support, and secure storage scoped to the git-repo plugin (49683a) (Eric Ma)
  • Added comprehensive documentation updates including plugin system changes, plugin building tutorials with prompt templates, and a detailed documentation map to assist developers and users (multiple commits from 55f84f to b661fc) (Eric Ma)

Bug Fixes

  • Fixed keyboard shortcut 'e' to work correctly for git repo nodes by emitting the proper event and adding error handling and debug logging (cd9368, b173bd, 7b84bc) (Eric Ma)
  • Corrected repository name extraction from git URLs to properly remove the ".git" suffix (22dd5d) (Eric Ma)
  • Improved git repo file tree hover and expand/collapse behavior for better UI clarity and interaction (a87139) (Eric Ma)
  • Fixed highlight node matching to constrain fuzzy matching region and prevent over-matching (30d1f0) (Eric Ma)
  • Fixed reply behavior and node selection focus to prevent unwanted auto-focus and improve shortcut usability (f547dc) (Eric Ma)
  • Fixed factcheck claim extraction and error handling to improve robustness and logging (6935ba) (Eric Ma)
  • Fixed event listener registration and emission for nodeEditContent events on canvas instead of graph (7b84bc) (Eric Ma)
  • Fixed array field extraction in CRDT graph to handle nested arrays correctly, resolving issues with poll options and other array fields (aa54ea) (Eric Ma)
  • Updated all test imports to use plugins/ directory and enhanced test coverage and edge case handling across multiple plugins (f34330, 629a24) (Eric Ma)
  • Fixed critical documentation inaccuracies and improved documentation coverage for APIs and plugin system (commit 08b11f, 0b4dd6) (Eric Ma)

Deprecations

  • Removed git credentials methods and UI from core storage and index.html, moving all git credential management fully into the git-repo plugin for better encapsulation (05a6dd, 0e5deb) (Eric Ma)
  • Removed hardcoded modal HTML from index.html and moved all plugin modals to plugin-scoped registration system for better modularity (0002732) (Eric Ma)
  • Removed backwards compatibility wrappers and consolidated all plugins into a single plugins/ directory, removing legacy import paths and hardcoded type checks (72e8b8, 5e3f19) (Eric Ma)
  • Removed SummaryNode, NoteNode, and PollFeature from built-in features and converted them to external or consolidated plugins (a0c613, 9a3ba8, 1f534e) (Eric Ma)

Version v0.1.59

This release improves the project structure by reorganizing example plugins into a dedicated directory, enhancing maintainability and clarity. It also fixes import path issues in example plugins to ensure tests run correctly.

New Features

  • Organize all example plugins into a new example-plugins/ directory, consolidating multiple plugins and updating references across config files, tests, documentation, and the codebase map for better project organization (37e9f0) (Eric Ma)

Bug Fixes

  • Fix import paths in example plugins after moving them to the new directory, correcting relative imports to prevent test failures (8093c9) (Eric Ma)

Deprecations

  • None