Skip to content

Blog

Version 0.1.22

This release introduces a new feature that improves the user experience by providing a consistent way to close any open modal using the Escape key.

New Features

  • Added a uniform Escape key handler that closes the first open modal found in a defined priority order, covering 10 different modals for consistent dismissal (0fd634) (Eric Ma)

Bug Fixes

  • None

Deprecations

  • None

Version 0.1.21

This release improves node selection behavior, enhances Matrix and PDF node interfaces, fixes navigation issues, and updates the development environment configuration.

New Features

  • Added a Summarize button to PDF nodes to enable document summarization directly from the node interface (5aa312) (Eric Ma)
  • Unified Matrix node rendering to follow the standard header/content/footer structure for consistent UI and easier maintenance (dad3c4) (Eric Ma)
  • Added navigation buttons to Matrix nodes dynamically, ensuring consistency with other node types (8aafe2) (Eric Ma)

Bug Fixes

  • Fixed node selection to use the capture phase, allowing any click inside a node to select it regardless of which child element handles the click (8c18ba) (Eric Ma)
  • Fixed duplicate parent/child entries in the navigation popover by removing redundant index updates (5aa312) (Eric Ma)

Deprecations

  • Removed the special case handling for Matrix nodes in canvas.js in favor of a unified rendering approach (dad3c4) (Eric Ma)

Version 0.1.20

This release introduces significant improvements to the multiplayer collaboration experience, including real-time synchronization of node positions, sizes, and content, enhanced user interface elements for easier sharing and leaving multiplayer sessions, and robust conflict prevention through node locking. Additionally, the update refines node sizing for consistent layout and smooth animations during remote changes, while also improving performance and fixing synchronization bugs.

New Features

  • Added a WebRTC signaling server and integrated y-webrtc for real-time multiplayer synchronization, including a new multiplayer button with peer count and UI styles (78a2db) (Eric Ma)
  • Enabled session sharing via URL parameters with automatic joining and shareable link copying, plus a toast notification system for user feedback (ade1b5) (Eric Ma)
  • Implemented real-time drag synchronization with throttled position updates during node dragging for smooth multiplayer interaction (ade1b5) (Eric Ma)
  • Added real-time resize synchronization to update node size changes continuously during drag operations (43e7ef) (Eric Ma)
  • Introduced node locking mechanisms to prevent edit conflicts in multiplayer by showing lock indicators and restricting simultaneous edits (fcde1df) (Eric Ma)
  • Improved multiplayer user experience by making the multiplayer button copy the share link on click and adding a dedicated leave button for easier session exit (3ec793) (Eric Ma)
  • Animated remote position and size changes smoothly to enhance the visual experience during multiplayer layout updates (022f01) (Eric Ma)
  • Refactored all nodes to have fixed dimensions with scrollable content to fix multiplayer sync bugs related to size detection (77e348) (Eric Ma)
  • Enhanced multiplayer sync smoothness by increasing drag sync frequency to 60fps and adding live streaming sync for matrix cell fills (357193) (Eric Ma)

Bug Fixes

  • Fixed synchronization issues where title, tags, and matrix cell content did not update correctly across multiplayer sessions (769d10) (Eric Ma)
  • Fixed CRDT bypass issues ensuring all node mutations go through proper update methods for consistent multiplayer state (ade1b5) (Eric Ma)

Deprecations

  • Removed isScrollable() overrides in favor of a unified base class implementation for consistent scrolling behavior (77e348) (Eric Ma)

Version 0.1.19

This release introduces a complete rewrite of the graph implementation using CRDTs for real-time collaboration, along with a safe feature toggle to switch between the new CRDT-based graph and the legacy graph. It also includes important bug fixes related to layout, drag behavior, and Yjs instance management to improve stability and correctness.

New Features

  • Added a fresh CRDTGraph implementation using duck typing and Y.Text for collaborative editing, fully compatible with the legacy Graph API (ca1647) (Eric Ma)
  • Integrated CRDTGraph into the app with a safe toggle feature flag that allows switching between CRDT and legacy graph modes without data loss, ensuring legacy DB remains the source of truth (403b78) (Eric Ma)

Bug Fixes

  • Fixed layout issues in CRDTGraph including topological sorting, auto layout, and force-directed layout to prevent stale position reads and duplicate nodes; also fixed drag jump after layout animation (2def88) (Eric Ma)
  • Corrected duck typing for Y.Text to prevent misidentification of Y.Array, fixing tag extraction and improving validation with warning logs (603a02) (Eric Ma)
  • Resolved Yjs instance duplication by replacing jsdelivr CDN imports with esm.sh and import maps, ensuring a single shared Yjs instance and fixing 'already imported' warnings (62e617) (Eric Ma)

Deprecations

  • None

Version 0.1.18

This release includes important bug fixes to improve the user experience and reliability of health checks for deployed applications.

New Features

  • No new features were added in this release.

Bug Fixes

  • Prevent the node from jumping when resizing after resetting to the default size (09a1b2) (Eric Ma)
  • Update health check to ping the actual deployed app URLs using the /health endpoint, accept only HTTP 200 responses, increase retry delay for cold starts, and improve deployment summaries and PR comments (baaee4) (Eric Ma)

Deprecations

  • No deprecations in this release.

Version 0.1.17

This release introduces enhanced navigation features for nodes in the graph, making it easier to move between parent and child nodes using both keyboard shortcuts and clickable buttons.

New Features

  • Added keyboard navigation for parent and child nodes, allowing users to navigate using arrow keys, with support for multiple connections via a popover menu and helpful toast messages when no connections exist (d7313a) (Eric Ma)
  • Added up/down arrow buttons to node headers for quick navigation between connected nodes, including popover menus for multiple connections and smooth animated transitions (3da94a) (Claude)

Bug Fixes

  • None

Deprecations

  • None

Version 0.1.16

This release introduces a major refactor implementing a Node Protocol Pattern to centralize node-type-specific behaviors, improving code maintainability and extensibility. It also adds comprehensive automated UI testing using jsdom, enhances CI workflows to use a new environment setup tool called pixi, and cleans up test code to use real implementations and eliminate duplication. Several bug fixes improve ES module compatibility and test reliability.

New Features

  • Implement Node Protocol Pattern to centralize type-specific node behaviors, replacing scattered type checks with protocol classes and improving extensibility (135f08) (Eric Ma)
  • Add comprehensive automated UI testing using jsdom, covering error formatting, message building, zoom classes, node creation, BM25 search algorithm, and DOM manipulation (2e2924) (Eric Ma)
  • Use pixi as the single source of truth for test commands and migrate CI workflows to use prefix-dev/setup-pixi for environment setup and test execution (f92edc, 10baff) (Eric Ma)
  • Extract and export pure utility functions for testing, eliminating ~200 lines of duplicated test code and ensuring tests use real implementations (4230f3) (Eric Ma)
  • Add documentation explaining pixi as the canonical source for test commands and update related files accordingly (13fa37) (Eric Ma)

Bug Fixes

  • Fix ES module compatibility issues in test_utils.js by converting require() to ES module imports and correcting mocks and test expectations (b7f0c5) (Eric Ma)
  • Fix duplicate test scripts and ensure tests use real implementations instead of stale copies to catch production bugs (e9dda2) (Eric Ma)
  • Reorder imports in test_utils.js to improve code organization (bc7a0d) (Eric Ma)
  • Remove unused SCROLLABLE_NODE_TYPES array from tests as it is no longer needed (7d2635) (Eric Ma)
  • Address various PR review comments including adding null checks, improving guards, caching, and removing unused variables (d1dd17) (Eric Ma)

Deprecations

  • Remove scripts/test-js.sh as test commands are now unified under pixi and pyproject.toml (390905) (Eric Ma)

Version 0.1.15

This release introduces comprehensive automated UI testing using jsdom, enhancing test coverage for UI logic without relying on external APIs or browsers. Additionally, the continuous integration workflow has been improved to install npm dependencies and run tests via npm, streamlining the testing process.

New Features

  • Added extensive automated UI tests covering error formatting, message building, zoom classes, node creation, BM25 search algorithm, and DOM manipulation using jsdom simulation. This enables reliable UI testing without external dependencies or browsers. (adf119) (Eric Ma)
  • Updated CI workflow to install npm dependencies and run tests through npm commands, improving test automation and dependency management. (8772c0) (Eric Ma)

Bug Fixes

  • None

Deprecations

  • None

Version 0.1.14

This release improves the node resizing behavior by fixing several bugs related to height and width adjustments. It also introduces a reset button to restore nodes to their default size and adds keyboard shortcut hints for better usability. Additionally, text wrapping and scrollbars now respond correctly to width changes.

New Features

  • Added a reset-to-default-size button (↺) in the node header to quickly restore node size (8a9f98) (Eric Ma)
  • Added keyboard shortcut hints (r) and (c) to the Reply and Copy buttons for easier access (8a9f98) (Eric Ma)

Bug Fixes

  • Fixed bug where dragging the bottom border upward made nodes taller instead of shorter (8a9f98) (Eric Ma)
  • Fixed bug where resizing width caused height to grow unexpectedly (8a9f98) (Eric Ma)
  • Allowed height to shrink freely with scrollable content when manually resized (8a9f98) (Eric Ma)
  • Width changes now cause text wrapping with scrollbars for overflow (8a9f98) (Eric Ma)

Deprecations

  • None

Version 0.1.13

This release improves the math rendering capabilities in markdown by switching to a more robust approach using KaTeX directly. It fixes issues with math delimiters being altered during markdown processing and enhances debugging and configuration for consistent math display across all node types. Documentation has also been updated to reflect these improvements.

New Features

  • Add LaTeX math rendering support with KaTeX, supporting multiple math delimiters and automatic rendering in all node types (7f8fc6) (Eric Ma)
  • Add documentation for math rendering support in README and PDF import docs (b357cf) (Eric Ma)
  • Add debug logging to help diagnose math rendering issues (3d822c) (Eric Ma)

Bug Fixes

  • Fix math rendering by using HTML comment placeholders instead of underscores to prevent markdown formatting issues (ecf402) (Eric Ma)
  • Fix math rendering by protecting math delimiters from markdown backslash escaping (743912) (Eric Ma)
  • Fix math rendering by configuring marked.js once at initialization to ensure KaTeX extension is properly applied (01093c) (Eric Ma)
  • Fix math rendering by replacing marked-katex-extension with direct KaTeX rendering to avoid backslash processing issues (db67b6) (Eric Ma)
  • Fix markdownlint errors by adjusting heading levels in release notes (9ea73a) (Eric Ma)

Deprecations

  • None