Changelog

Everything new in Neural Garden — features, fixes, and improvements as they ship.

Latest

Quieter, calmer canvas

A pass of visual polish on the core interactions you make hundreds of times a day — connections, hovering, expanding, and switching layouts.

  • Smoother expand animation — layout shifts first, then new nodes fade into the space that opened for them, instead of popping in and jumping
  • Smaller, subtler connection handles that blend into the node — visible when you need them, out of the way when you don't
  • Outline mode draws clean vertical lines — parent-to-child edges now anchor to a left gutter so the whole tree reads as a single column
  • New "Zoom to 100%" option in the canvas right-click menu — one click to get back to actual size

Types you can edit — safely and collaboratively

Admins can now shape the default type system directly on the canvas. Changes stay local as a draft until you Publish, and users get improvements without losing their own edits.

  • Admins edit the "Admin: Seed Types" garden in the normal UI — no more code deploys to change colors, icons, or properties
  • Draft banner shows "N unpublished changes since last publish" with Publish and Revert buttons — review before pushing to everyone
  • Revert discards unpublished changes and restores the admin garden to the last published state
  • When admins publish, every user's Types garden syncs on next load via 3-way merge — user edits are preserved, untouched fields take the new values
  • Any admin can edit the shared admin garden; multiple admins see each other's edits in real time via the existing collaboration layer
  • Calmer canvas — the node action pill (edit, duplicate, delete) no longer appears on hover. It now shows only when a single node is selected, so brushing past nodes doesn't flash menus at you

Groups, connections, and auto-arrange stay in sync

Moving and connecting nodes now does what you'd expect — groups travel with their children, edges follow them into sub-gardens, and auto-arrange reshapes the canvas the moment something changes.

  • Drag a collapsed parent onto another node and all of its hidden descendants come along — no more orphaned subtrees
  • Internal edges are preserved when you nest a group of nodes — drill in and the connections are still there
  • Drawing a connection in any auto-arrange mode (Outline, Tree, Radial, Grid, Cluster, Timeline) instantly re-runs the layout with the new hierarchy
  • Switching back to Manual from an auto-arrange mode no longer spams 404s in the console when restoring positions
  • Wider, more readable nodes (360px) with tighter padding — longer text is easier to scan, and Outline mode is more compact

Reliable AI actions everywhere you work

Command-K and the sparkle button now work correctly in sub-gardens, keep their context across reloads, and stop crying wolf when AI calls take longer than a few seconds.

  • Nodes you create with AI inside a sub-garden now stay in that sub-garden on reload — no more losing your work back to the root
  • Command-K AI edits and aliases actually land on the right thought — fixes the phantom 'not found' errors that caused 5-second timeouts
  • AI actions now have a realistic 30-second budget — slow networks and longer chains no longer time out mid-operation
  • Sparkle button only opens the suggestion popover on click — hovering near a node's border no longer spams AI suggestions
  • Quieter console during normal use — stale sub-garden cache warnings no longer flood DevTools after opening a shared or typed garden

Sub-gardens, wikilinks, and smarter node creation

Every thought is now its own garden. Drill into any node to see its nested children on their own canvas, and link thoughts together with persistent wikilinks.

  • Drill into any node to open it as a sub-garden — nested children appear on their own canvas with full editing, connections, and AI features
  • Wikilinks ([[links]]) are now tracked persistently — backlinks update in real-time for collaborators and survive page reloads
  • Title autocomplete appears everywhere you create a node — including the nested children '+' button and edge insert — so you can link to existing thoughts instead of creating duplicates
  • Merging nodes: rename a node to match an existing title and you'll be offered to merge them, combining content and children into one thought
  • Soft-delete with trash: deleted thoughts go to trash first, can be restored to their original garden, and are searchable from the title input

Type badges now show on all nodes

Node types are fully visible at every zoom level, and the type system is resilient to database reseeds.

  • Type chips and colored borders now appear correctly on full-size nodes — previously only compact and dot nodes showed type colors
  • Existing notes, ideas, tasks, and questions are automatically mapped to their matching type definitions — no manual re-assignment needed
  • Type assignments survive garden reseeds: slugs are now stored alongside UUIDs as a stable fallback, so a reseed never silently orphans your typed nodes
  • The Types garden loads correctly for all users, including admins who also have an admin seed types garden

Smarter Command-K & AI actions

The command bar now doubles as an AI assistant — create, connect, and nest nodes with natural language, and everything auto-arranges.

  • Ask AI directly from Command-K — create nodes, connect them, or nest them inside other nodes just by typing what you want
  • Canvas auto-rearranges when nodes are added, removed, or resized — works in all layout modes including collision resolution in manual mode
  • Settings, keyboard shortcuts, and all toolbar actions are now searchable and executable from Command-K
  • Settings moved from a separate page to a quick-access modal — open from the sidebar or type 'settings' in Command-K
  • 'Open as garden' button moved to the hover pill toolbar, making it accessible at every zoom level

Viewport refit & mobile polish

  • Opening or closing the sidebar, properties panel, or mobile bottom sheet smoothly adjusts zoom and position to keep what you're looking at centered — no jarring jumps or lost context
  • Tapping a node on mobile immediately adjusts the viewport for the incoming bottom sheet instead of waiting for the animation to finish — feels snappier
  • The hover pill on small (compact, dot-label, dot) nodes now includes Select children and Properties buttons, matching the full-size node menu
  • The AI orb is smaller and tucked into the top-left on mobile, giving more room for the canvas and breadcrumb navigation

Gravity mode & per-garden settings

  • Gravity v1 shows full hierarchy when focusing a node — parents, grandparents, siblings, children, and grandchildren fade in at appropriate sizes based on relationship distance
  • Focused gravity nodes now display both title and description text with distinct heading and body fonts, matching the Gravity2 visual treatment
  • Arrange mode, sorting, grouping, and type filter settings are now saved automatically per garden and restored when you return — no more losing your layout when switching between gardens
  • New Gravity2 simulation mode wired into the canvas with focus navigation, pin/unpin support, and tap-blank-canvas-to-overview behavior

Nested nodes & panel improvements

  • Type-aware nested list — image nodes render as full-width image cards with title overlaid, and link nodes show favicon + domain preview cards instead of plain text rows
  • Inline child creation — a + button at the bottom of every nested list lets you type a title and instantly create a new nested child without leaving the node
  • AI suggestions for nesting — the sparkle button generates AI suggestions for new nested children, with a setup prompt when no AI provider is configured
  • Cleaner property panel — desktop side panel shows a read-only view of nested children with edge-to-edge link previews and left-aligned content

Import type reconciliation

  • Garden exports now include full type definitions (schema, colors, icons, properties) so imported nodes keep their types when shared with another user
  • On import, types are matched by slug and name against your existing type registry — matched types link up automatically with zero manual work
  • Unmatched types appear in the import preview with Create and Skip buttons — Create adds the type to your registry, Skip strips it from imported nodes
  • Older exports without type definitions now infer types from node slugs, so previously exported gardens regain their type assignments on re-import

iOS-style properties panel

  • Spring-animated bottom sheet with three snap points (25%, 50%, 90%) and velocity-based snapping — drag fast to skip detents, just like iOS Maps
  • Pull-down to resize — when content is scrolled to the top, pulling down shrinks the sheet instead of rubber-banding the content
  • Flick the sheet down quickly to dismiss, or tap the backdrop — both animate out with spring physics instead of abrupt CSS keyframes
  • On mobile, only the chevron arrow toggles accordion sections — tapping the section title no longer accidentally opens or closes panels while scrolling

Canvas layout polish

  • Switching between layout modes now smoothly animates nodes to their new positions instead of snapping instantly
  • Dragging a node in any auto-layout mode and releasing it animates all nodes back to their correct positions with a satisfying easeOutCubic curve
  • All layout modes now use actual measured node dimensions for spacing, so nodes of different sizes no longer overlap
  • Dragging a node on top of others in manual mode automatically pushes overlapping nodes apart with a smooth animation
  • Edge click targets are tighter and navigation arrow pills now consistently hug the node boundary at all zoom levels

Types system polish

  • Type nodes now have a working inline color picker that opens directly from the color chip — no more broken gradients or disappearing popups
  • Color, icon, and schema properties are unified under a single TYPE accordion section, eliminating the duplicate display that cluttered type nodes
  • The AI alias suggestions sparkle button now appears for all nodes, not just type definitions — with a clear disabled state when no AI provider is configured
  • Type icons can be selected from a searchable, categorized dropdown with 200+ Lucide icons grouped by theme, replacing the old free-text input

HeroUI component migration

  • All context menus, sidebar panels, and toolbar dropdowns now use HeroUI's native Dropdown and Popover components with consistent glassmorphic styling
  • Sidebar panels open as Popovers anchored to their toolbar icons instead of rendering through portal slots, making open/close behavior more predictable
  • Switched from shadcn/ui primitives to HeroUI across the entire app — buttons, inputs, cards, dropdowns, modals, and tooltips all share consistent styling
  • Menus and panels animate with a subtle scale effect so the frosted-glass backdrop stays visible throughout transitions

Per-garden AI intelligence

  • Each garden and sub-garden now has its own AI-generated summary and tags — drill into a nested canvas and its intelligence reflects that specific context, not the parent
  • Intelligence auto-generates when you first visit a garden — no manual setup needed, just open a canvas with nodes and AI creates a summary and tags within seconds
  • Summary and tags stay fresh automatically — 30 seconds after you add, edit, or remove nodes, intelligence updates itself using only the changes (not a full rescan), saving API tokens on large boards
  • The AI orb pulses when intelligence is regenerating so you can see the system thinking

Per-garden canvas memory

  • Each garden now remembers its own arrange mode — switching between gardens no longer resets your layout to manual
  • Sort, group-by, and manual node positions are preserved per garden — your preferred canvas setup stays exactly how you left it
  • Active saved view selection resets when switching gardens so stale highlights don't carry over

Gravity layout & outline arrangement

  • New Gravity arrangement mode — nodes orbit in a physics-driven hierarchy where the focused node sits at the center, children float above, and grandchildren cluster around their parents
  • Tap any node to refocus the gravity layout — the hierarchy smoothly reorganizes around the new focus with direction-aware animation
  • Children sort left-to-right by your active sort field (title, type, connections) — grandchildren group under their parent instead of scattering randomly
  • Drag a node sideways to override its sort position — it stays where you put it until you change sort settings
  • New Outline arrangement mode — arranges the entire canvas as an indented outline, matching the Tidy Up algorithm
  • Gravity Playground panel for power users — 27 tunable physics sliders with copy-values and reset buttons for rapid experimentation

Reliable node types everywhere

  • Duplicated nodes now keep their type — the type badge no longer vanishes when you copy a node from the hover menu
  • New child nodes stay in the current canvas — using the + button inside a sub-garden no longer sends the new node to the Home canvas
  • Duplicated gardens preserve the original's type — the copy no longer appears as an untyped 'note'
  • Undo/redo on child nodes preserves type assignments — redoing an 'add child' no longer strips the type
  • Collaboration guests see the garden owner's node types — types now persist through page refresh instead of disappearing

Import & export your garden

  • Export your garden as JSON, Markdown, OPML, or CSV — one-click JSON export with other formats in a dropdown
  • Import data from JSON, Markdown, OPML, or CSV files — supports Obsidian, Miro, XMind, and other tools
  • Choose how imported hierarchy maps to your canvas — 'Nested nodes' preserves sub-canvases, 'Connected edges' flattens into linked nodes
  • Imports land on the canvas you're currently viewing, not always the home canvas
  • OPML round-trip preserves connections, types, and metadata — export from Neural Garden, edit in an outliner, re-import without losing structure

True offline mode for server gardens

  • Server gardens now work fully offline — create, edit, delete, nest, unnest, and rearrange nodes without a connection. Changes sync automatically when you reconnect
  • Node arrangement works offline — grid, hierarchy, force, radial, cluster, and timeline layouts all run locally with positions saved to the browser database
  • Type visuals stay intact during collaboration — deleting a parent or unnesting a child no longer strips the type color and label from the guest's view
  • Dark mode no longer flashes white on load — the theme is applied before the first paint
  • Offline indicator shows sync status with pending change count, so you always know what's waiting to sync

Collaboration stability & sharing scope

  • Type definitions no longer vanish during live collaboration — Yjs sync now correctly ignores type definitions that belong on the Types sub-canvas
  • Zombie type nodes on the home canvas are gone for good — three layers of guards prevent type definitions from ever getting root-canvas placements
  • Type changes sync to collaborators in real time — creating, editing, or deleting a type definition now notifies all connected users to refresh their type registry
  • Shared garden guests stay within their garden — no more navigating to the owner's parent gardens via breadcrumbs or drill-up

Admin tools & user management

  • Admin panel in the sidebar — manage users and admin gardens from the same navigation as Search, Bookmarks, and Saved Views
  • User management with role control — promote or demote admins, and super admins can delete accounts for a clean reset
  • First user to log in is automatically promoted as super admin with full control over the instance
  • Admin-only shared gardens — system-owned gardens (like Seed Types) with no dependency on any individual user, shared via standard garden membership
  • LOD playground toggle in Developer settings — show or hide the zoom-level tuning panel without restarting

Type system self-repair & versioned updates

  • Type definitions now auto-update — when we ship improvements to built-in types (colors, icons, new categories), your garden receives them automatically on next load
  • Four new built-in type categories — Abstract, Emotion, Place, and Thing — organized under the Type parent for a richer starting taxonomy
  • Fixed duplicate types appearing in the type picker — caused by connection duplicates accumulating on each reseed, now cleaned up automatically
  • Fixed a critical bug where type nodes could multiply on every page load, flooding the home canvas with duplicates — existing duplicates are cleaned up automatically
  • Local garden canvas is now fully reliable — fixed an issue where returning users couldn't create or interact with nodes

Adaptive zoom & mobile property sheet

  • Nodes now adapt their appearance as you zoom — full cards shrink to compact strips, then labeled icons, then colored dots for a clear overview at any scale
  • Property panel no longer blocks canvas zoom — scroll and pinch to zoom freely even with the panel open
  • Resizable mobile property sheet — drag the handle to resize between 80% and 20% of your screen, or pull below 20% to close
  • Tapping a node in overview mode (dot or dot-label zoom) automatically opens its properties so you can inspect without zooming in
  • iOS-style frosted glass handle on the mobile sheet — content flows smoothly behind a blurred gradient as you scroll

Dynamic type system & canvas polish

  • Assign types directly on canvas nodes — tap the + button on any node to search, pick, or create types without opening the editor panel
  • Type hierarchy with subtree menus — types like Media → Book / Film / Song show as expandable submenus, matching the context menu pattern
  • Type properties flow down the hierarchy — define 'author' on Media and it appears on every Book, Film, and Song node automatically
  • Smarter node appearance — nodes show colored type chips, minimap dots match type colors, and hover borders highlight by type
  • Improved canvas layouts — consistent spacing between parent and child nodes, side handles pinned at fixed positions, and all arrangement algorithms use actual node sizes

Edge management & canvas layout tools

  • Directional handles — connections now flow naturally from right/bottom (source) to left/top (target), with handles persisted across reloads
  • Right-click any edge to flip its direction, edit its label, or delete it — with full undo support
  • Drag-select a region and all edges between selected nodes highlight too
  • Select Children button now selects the entire subtree — grandchildren, great-grandchildren, and all edges between them
  • New Tidy Up layout arranges nodes in an indented outline shape — parents and first children align on the same row, siblings flow downward
  • Tree and grid layouts now use actual node sizes for spacing instead of assuming a fixed card width
  • Keyboard shortcuts (F for fit-to-screen, Delete, Ctrl+Z, etc.) now work even when focus is on the sidebar or breadcrumb nav

Editing reliability & context menu shortcuts

  • Rapid Enter/Escape presses while editing a node no longer risk losing your changes — saves are now properly guarded against double-submission
  • Context menu shows keyboard shortcuts (⌘Z, ⌘A, ⌘+/−, etc.) so you can discover faster workflows at a glance
  • Save and delete errors in the editor panel now show a toast instead of failing silently
  • Handle pill menus are less flickery when moving your cursor between the node edge and the action buttons
  • Add-child buttons ignore rapid double-clicks so you don't accidentally create duplicate nodes

Apple Pencil support on iPad

  • Pen drag on canvas draws a selection rectangle and selects nodes — feels native
  • Pen tap deselects, double-tap creates a new node, and long-press opens the context menu
  • Seamless finger/pen switching — finger for panning, pencil for selecting, no ghost selection boxes between transitions
  • Double-tap a node with Apple Pencil to start editing inline

Canvas interaction & nesting improvements

  • Hover pills (+, sparkle, toolbar) no longer steal clicks from the node body — they appear only when hovering outside the card edge
  • Drag-and-drop into parent nodes is more reliable — tall cards with many children now register drops across their full height
  • New children land in the right order — dropping nodes into a parent places them at the bottom of the list (or exactly where the insert line shows)
  • Children list inside parent nodes is now a drop zone — drag a canvas node over the list to see an insert indicator and place it precisely
  • Layout commands (radial, cluster, hierarchy) now respect actual node sizes instead of assuming a fixed card shape

Code review hardening & bug fixes

  • Layout and clustering computations moved to Web Workers — canvas stays responsive during heavy operations
  • Content Security Policy headers, rate limiting on all API endpoints, and SQL injection fix in search
  • Error boundaries on every route and panel — one crash no longer takes down the whole app
  • Canvas provider and thought node split into focused sub-hooks and sub-components for maintainability
  • ARIA labels and keyboard navigation for canvas toolbar, context menus, and node actions
  • Pen input refined — jitter tolerance, stale finger detection, and blocked pen-during-finger conflicts
  • Fixed duplicate node creation on rapid clicks, missing children on unnest, and undo/redo orphaned nodes
  • Guests can no longer delete nodes with nested children — owner-only permission enforced
  • Structured logging, environment validation, typed event system, and virtual list hook

Touch & Apple Pencil support

  • Full touch support on iPad and iPhone — tap to select, long-press for context menus, and drag-to-select multiple nodes in pan mode
  • Apple Pencil works naturally — tap nodes to select, draw selection rectangles, with jitter-tolerant detection so tiny hand movements don't interfere
  • Drag-select groups now use native React Flow selection, so you can grab and move multiple nodes together as a group
  • Smarter overlay handling — tapping the canvas background consistently dismisses hover pills, context menus, and selection state
  • Safe area support for notched devices — sidebar, toolbar, and panels respect iPhone and iPad screen cutouts

Canvas interaction polish

  • Smoother AI suggestions — slide out from pill menus, switch directions cleanly, and dismiss naturally
  • Better edge creation — larger handle targets, cleaner canvas while dragging, and visual pulse feedback
  • Edge navigation — hover an edge to see where it leads, click nav arrows to pan there smoothly
  • Consistent edge rendering — thin lines at any zoom level with less visual clutter on node selection

Nesting stability & unified delete

  • Fixed ghost nodes: nested thoughts no longer reappear on the root canvas after nesting
  • Root cause fix in Hocuspocus — onLoadDocument now only hydrates root-canvas thoughts, not nested ones
  • onStoreDocument guards against creating duplicate root placements for nested thoughts
  • Removed expensive 30-second periodic reconciliation and 500ms initial sync (replaced by correct Yjs/DB architecture)
  • Unified delete path — My Gardens menu delete now uses the same handler as canvas node delete
  • Children of deleted nodes reposition neatly at 80px vertical step below the parent's position
  • Delete confirmation pill when removing a parent with more than 5 children
  • Group select nesting — drag multiple selected nodes onto another to nest all at once
  • Batched Yjs nesting — all removals happen in a single transaction to prevent observer race conditions
  • Double-click guard — prevents accidental node creation from panning, slow re-clicks, or cursor movement
  • Idempotent thought delete — returns success if thought was already deleted
  • Ghost suggestion fix — no more console errors when AI provider is not configured
  • Sub-garden cascade cleanup — deleting a parent canvas now removes child sub-garden records
  • Removed fixOrphans call on initial canvas load (no longer needed with correct architecture)
  • Hide duplicate button on the default Home garden in the gardens panel

Frosted glass UI & dark theme refinements

  • Frosted glass (backdrop-blur) across all UI chrome — sidebar, panels, toolbar, menus, breadcrumbs
  • Dark mode is now the default theme; light mode is opt-in and saved to localStorage
  • Sidebar panels use React portals — panels auto-align with their sidebar icons
  • Panel overlay separated from sidebar stacking context for independent blur compositing
  • Canvas controls shifted right to clear the absolutely-positioned sidebar
  • Increased backdrop blur from 12px to 24px for a richer frosted effect
  • Softer borders at 50% contrast and 80% text opacity for a muted, modern look
  • Dark mode canvas lightened to #141414 with tuned glass tint
  • Garden switcher always visible with login redirect for unauthenticated users
  • Removed sidebar collapse/expand button — sidebar is always open
  • Landing page and changelog nav updated to use glass design token
  • Fixed double-click to edit bug caused by nodesSelectionActive
  • Cleaned up dead code: removed unused rfStore and nodesSelectionActive references

Canvas interactions & deployment fixes

  • Smooth animated zoom on toolbar, context menu, and React Flow controls (+/- buttons)
  • Fixed double-zoom stutter by replacing built-in React Flow control buttons with custom ones
  • Long-press (tap-and-hold) opens context menu on mobile browsers
  • Blue selection overlay on node click with Shift/Cmd multi-select support
  • Floating selection pill with align, distribute, tidy, duplicate, and delete actions
  • Saved Views panel for storing and restoring canvas layouts and arrangements
  • Shared panel components (PanelListItem, PanelSortRow) for bookmarks and saved views
  • Layout utilities: alignment, distribution, radial, cluster, and timeline layouts
  • Auto-position algorithm with spiral search for non-overlapping node placement
  • Canvas toolbar and minimap hidden on mobile for cleaner touch experience
  • Garden switcher uses Neural Garden logo instead of Sprout icon
  • PGlite migration fix: uses ADD COLUMN IF NOT EXISTS instead of DO blocks
  • Docker entrypoint runs migration 0003 data backfill for garden hierarchy fields
  • Sort and group-by controls for canvas settings store
  • Clustering UI in settings page with k-means on embeddings

Gardens panel redesign & navigation polish

  • Pinned Home garden at the top of the gardens panel with a divider
  • Moved sort controls and create button below the Home garden
  • Sort arrow toggles direction; clicking the label cycles through Edited, Created, and Name
  • Smooth zoom effects when drilling into and out of sub-canvases
  • Viewport position and zoom now persist in the URL for shareable views
  • Improved favicon visibility with white icon on black circle

Multi-canvas navigation & branding

  • Full multi-canvas drill-down navigation with data swapping between canvases
  • Home garden protection — cannot be deleted, shows distinct visual treatment
  • Added branded favicon, apple touch icon, and Open Graph image
  • Single-pass nesting state with improved tRPC cache invalidation

Grouping, nesting & landing page

  • Grouping and nesting system — drag nodes onto each other to create groups
  • Drill-down navigation into nested thought groups
  • Multi-dimensional nesting with thought placements table
  • Un-nest via drag-out with improved drop zone indicators
  • Landing page polish — brand colors, spotlight cards, hero glow effects
  • Theme toggle moved to fixed bottom-right position

Landing page launch

  • Designed and built the landing page with Hex Bloom logo
  • Sora + DM Sans typography system with design tokens
  • Interactive demo canvas embedded in the hero section
  • Mobile safe-area insets for notched devices
  • Warm neutral color theme for dark mode

AI Ghost Suggestions & Intelligence

  • AI ghost node suggestions appear on handle hover — see what AI thinks connects
  • Garden Intelligence overlay with per-garden context and DB persistence
  • Editable ghost prompts with template variables and debug mode
  • Dynamic board intelligence with parameterized prompts
  • Animated AI orb waveform mesh replaces the old trigger button
  • Auto-detect available Ollama models for local AI suggestions
  • Bookmark CRUD persistence and inline edit improvements
  • Undo support for thought text edits
  • Smart redirect to most recently updated garden

Canvas UX overhaul & collaboration

  • Major canvas interaction improvements — edge handling, settings panel, and UX polish
  • Sync arrange mode across collaborators via Yjs Awareness protocol
  • Hide edit UI in view-only and canvas-locked modes
  • Developer toggle to hide/show canvas control menu
  • Default garden named after user with random name fallback
  • Presence bar repositioned to avoid share button overlap

Real-time collaboration & multi-user

  • Server-side Postgres with auth-aware tRPC and gardens model
  • Real-time collaboration with live cursors via Yjs + Hocuspocus
  • Garden sharing UI with invite system and role-based access
  • Invite notification dots with polling for new shared gardens
  • User icon in sidebar with login/logout menu
  • Frontend wired to server database via tRPC with garden routing
  • Docker deployment split into two processes (Next.js + WebSocket server)
  • Runtime WebSocket URL resolution via collab-token API

Initial release

The first version of Neural Garden goes live.

  • AI-powered second brain on an infinite canvas
  • React Flow canvas with real React components as nodes
  • Left and right handles on canvas nodes for flexible connections
  • Local-first architecture with PGlite browser-side database
  • Docker deployment config for Coolify
  • GitHub Actions CI/CD pipeline for Docker image builds