Changelog

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

Latest

Live updates — captures and agent results appear instantly

When a capture lands or the AI agent finishes classifying, your open canvas now updates on its own — across windows, no manual reload.

  • Captured pages and re-classified nodes show up live on whatever garden you're viewing — including the Inbox's nested preview on your home canvas and the sidebar's red dot
  • Each Agent Task links straight to where the work happened (your Inbox), so you can jump in and review with one click
  • Smoother Agent Tasks panel — a single scroll area with a scrollbar that only appears while you're scrolling

Agent Tasks — your captures, classified by AI

A new Agent Tasks area (the check-circle icon in the sidebar) is where background AI work shows up. Capture a batch of links and the agent classifies them into the right types — using your own AI key, on your command.

  • New Agent Tasks panel collects background AI work. Log in after capturing and a red dot flags items needing attention — '12 links need processing'. Hit play and watch them get typed, with a running history of past runs below
  • The AI reads each captured page and assigns the right type, a clean title, extracted properties, and a one-line description — so a saved company homepage becomes a properly-named Org, not a bare link
  • AI classifies what a page IS, not what it's about — a startup's site is an organization even when the startup builds AI, instead of being mistyped
  • Turn on Auto-run to have new captures processed automatically without clicking play each time
  • Captured links now refresh on the canvas when you return to the tab or when a run finishes — no manual reload to see them take their new shape
  • Developers: the Ghost, Dock AI, and new Classifier prompts are now tunable from one consolidated AI prompt control panel with tabs

Universal web clipper — capture any page into Inbox or Today

The Chrome extension now works on every web page, not just Beatport. Pages are auto-typed from their structured data (recipes, articles, movies, podcasts, products, apps, code repos, more) and land in your Inbox and/or today's Day node — your choice, persisted.

  • Capture any page with one click — the server detects the type from JSON-LD or OpenGraph and fills the matching properties (recipe ingredients + instructions, movie director + runtime, podcast host, product brand + price, etc.). Pages without structured data land as a typed link with their og:description as the body
  • Recipes auto-populate full ingredient lists and step-by-step instructions in the thought body, so the capture is immediately useful even before you organize it
  • Beatport album pages now capture as rich Album nodes — title, artist + label as wikilinks, catalog number, release date, cover artwork with a corner 'open on Beatport' link. Album cards match the visual rhythm of Track cards — redundant fields (URL, artist, artwork URL) collapse behind the hidden-properties toggle since they're already represented visually
  • Two destinations toggle: Save to Inbox (a renamable singleton in your home garden) and Add to Today (places a reference inside today's Day node). Both default ON and persist across captures
  • Re-capturing the same URL is safe — the button shows 'Already captured · Open in Garden' before you click, and any new destination toggles you've enabled get added without duplicating the thought
  • Album, Movie, and Video nodes now display their cover artwork in the node card, matching how Track nodes already worked

Sharper type system — refreshed seed types, new Ethereal type, type-creation conventions

All 45 built-in types got a once-over: shorter descriptions, tighter aliases, unique icons, and a cleaner top-level hierarchy. A new style guide ensures any future type — human-authored or AI-suggested — follows the same conventions.

  • New Ethereal type for non-material entities (replaces the unused Abstract type). Adopts a misty periwinkle color so it sits visually apart from AI, Org, and Person
  • Every built-in type now has a one-line description that's easier to scan in pickers, search, and the dock — no more verbose paragraphs crowding the UI
  • Aliases pruned to drop ambiguous overlaps (item, library, class, goal, initiative) so type-matching feels more decisive when you create a new node
  • Org color shifted to a bluer indigo so it stops competing with AI's purple — easier to tell apart at a glance
  • Type definitions in the Types garden now display with their own icon and color instead of the generic Type icon — each type-def card now visually previews itself
  • When you create a property linked to a type, the name and the type pill are now two separate slots: edit the property's semantic name freely while the linked type travels alongside it. A '+ type' button gives you a direct affordance for linking without needing to know the [[ shortcut
  • New type-authoring style guide built into the app — AI features that propose types now follow the same naming, alias, description, and icon conventions a human would, so suggestions feel native instead of generic

Unified picker — consistent search across the whole app

Every place that pops a search dropdown (title field, body wikilinks, slash commands, type-property picker, Nexus command bar) now uses the same picker primitive. Same look, same keyboard, same selection behavior across all five surfaces.

  • Pickers now feel the same everywhere — type a title, search for a thought via [[wikilink]], run a / slash command, or pick a type in the schema editor and you get identical visuals, keyboard nav, and selection behavior
  • Pickers reposition automatically when they'd run off-screen — flip above the anchor if there's no room below, follow the cursor when the mobile keyboard pushes the input up
  • Mouse hover only updates the selection on actual movement — the dropdown no longer silently grabs the row the cursor happens to be sitting over when it opens
  • Tapping a row on mobile now picks it (previously the row turned grey but never applied)
  • Canvas toolbar fades out when you open the command bar so the canvas chrome doesn't bleed through behind it
  • The Nexus command bar's results panel now uses a solid dark background — no more flicker of the canvas showing through while the panel opens

Beatport tracks, Track type, and tidier property nodes

Drag a Beatport URL onto the canvas (or use the new Chrome extension) and Neural Garden builds a fully-typed Track node — artwork, player, artist + label wikilinks, all linked into a 'Music Tracks' garden.

  • New Track type with DJ-ready fields (BPM, key, mix name, genre, label, release date, ISRC, catalog number, artwork). Tracks created from Beatport auto-nest the Artist and Record Label thoughts inside the track's own sub-garden so the whole release graph is one click away
  • New Chrome extension adds the current Beatport track to your garden with one click — bypasses the bot wall that blocks server-side scraping
  • Drag-drop, paste, and the canvas context menu all recognize Beatport track URLs and run the same ingest pipeline
  • Track nodes show album artwork with an overlaid Beatport player that loads on click — the artwork stays visible behind the player, and an 'open on Beatport' button is always one tap away
  • Property schemas now support a 'Hidden' flag — noisy technical fields collapse behind a 'N hidden properties' toggle at the bottom of the node
  • Wikilink type icons stay live: when a referenced thought changes type, every wikilink that points to it updates immediately across every canvas
  • Picking an existing thought from a wikilink popup now nests that thought inside the source, matching what creating a new wikilink already did

Small fixes — nesting, mobile scroll, arrange-aware fit

  • The + button on a thought's nested list reliably creates a new child when you type a name and press Enter. It used to silently nest an unrelated fuzzy-search match — or do nothing if no match existed
  • Mobile scroll is back on non-canvas pages — help, changelog, and landing pages scroll with a single finger again
  • Auto-fit on drill-down respects the active arrange mode, so the centered node lands where you can see it instead of behind chrome

A mobile pass — bigger text, smarter dock, snappier editor

Phone-sized typography, a dock that reflects your real canvas nodes, multi-word search across types, and a swipe gesture for indent/outdent in the editor.

  • Mobile typography sized for phones. Titles, body, panels, nested children, and backlinks all step up; body sits at 16px so iOS stops auto-zooming inputs. Desktop unchanged
  • The mobile dock shows your actual nodes. Each icon is a top-connected node's type icon in its type color — tap to focus that node and open its panel
  • Multi-word Nexus search matches across title, body, alias, and type. 'event birthday' finds an Event-typed thought whose body mentions birthday. Results show type icons
  • Type '/' at the start of Nexus to filter to commands only, mirroring '>'
  • Wikilink and slash popups re-measure on update, flip above the cursor when there's no room below, and center on-screen when the keyboard would cover the anchor. Pressing [ around a selection keeps the inner text selected so you can type to filter
  • Swipe right on a line in the editor to indent (or wrap as a bullet); swipe left to outdent — or unwrap a top-level item to a paragraph
  • Timeline ↓ fits every phone width — one consistent formula for base width and max zoom from iPhone SE through Pro Max
  • Backlinks sort newest first in both node and panel

Smoother mobile canvas — pinch over nodes, momentum, timeline polish

Pinch-to-zoom works anywhere including over cards, single-finger pan works over Timeline cards too, and flicking the canvas carries momentum like native iOS scrolling.

  • Pinch-to-zoom works over nodes. Any 2-finger gesture zooms cleanly, cancels any in-progress drag, and keeps the world point under your fingers anchored
  • Single-finger pan works over cards in Timeline modes. Drag is disabled where the layout owns positions, so cards no longer create dead zones
  • Momentum scrolling on touch — flicking the canvas coasts and decelerates naturally instead of stopping the instant your finger lifts
  • Long timelines feel less choppy. The viewport-clamp loop caches its layout measurements between frames
  • Page-level pinch zoom no longer stacks on top of canvas zoom on iOS Safari, so cards stop growing past their cap

Timeline view, redesigned for daily journaling

A new vertical Timeline ↓ stacks dated thoughts like a journal, and the horizontal Timeline → gains a date rail above the cards.

  • Timeline ↓ stacks dated thoughts vertically with a date rail on the right — weekday labels colored by Sat/Sun, month dividers, sticky month/year header, and a + button between dates to fill in a missing day
  • Timeline → adds a synchronized date rail above the band of cards — markers follow the nodes when you pan instead of sticking to the top
  • Entering a Timeline view auto-fits to a comfortable reading width and centers today. Max zoom is capped per device so titles stay legible
  • Scrolling stops cleanly at the edges. Timeline → also locks the cards' top edge so vertical scroll can't push them out of view
  • Timeline ↓ defaults to newest-first, Timeline → to oldest-first. Manual sort still wins

Calmer collaboration — per-sub-garden cursors, smarter shared wikilinks

Each sub-garden remembers its own arrangement, cursors stay scoped to the canvas you're on, and wikilinks in shared gardens render correctly even when the target is out of reach.

  • Arrangement is remembered per sub-garden. Set Outline on Home and Grid in a sub-garden — they stay independent. New sub-gardens you've never visited start on Manual instead of inheriting the previous garden's layout
  • Cursors and arrange-mode toggles are scoped to the sub-garden you're in. Different sub-gardens of the same shared garden no longer share presence
  • Wikilinks in shared gardens include their title even for collaborators who can't reach the target — the reference stays readable when the click isn't
  • Inaccessible wikilinks render faded with a 'not-allowed' cursor and tooltip, instead of attempting a navigation that lands on an error

Read nested thoughts without opening them

Each nested child shows a short body preview under its title, and hovering any child opens the same rich tooltip wikilinks have. Tooltips work across gardens too.

  • Two-line body preview under each nested child. For link children, the preview is suppressed when it would duplicate the imported page summary
  • Hover any nested child for the full tooltip — title and formatted body, no need to drill in. Works for default rows, image children, and YouTube children
  • Cross-garden tooltips render fully now. Hovering a wikilink or nested child pointing to a thought in another garden loads its body from the server when missing

Drop or paste any link onto the canvas

Drag or paste a URL onto the canvas and a Link node appears with the page's title, description, and preview card already filled in.

  • Drag a URL from the address bar onto the canvas — a new Link thought lands at the drop point with title, description, and preview image fetched server-side. Falls back to the hostname if no metadata
  • ⌘V on empty canvas pastes the URL at the viewport center. Right-click → 'Paste Link' drops it at the cursor. YouTube and image URLs continue to route to their own types
  • If a Link with the same title already exists, the paste becomes a reference placement of that existing thought

Wikilinks stay live — even across sub-gardens

  • Cross-canvas wikilinks reflect renames in real time, including renames flowing in from collaborators
  • Newly-created wikilinks stop getting strike-throughs when the target hasn't quite landed in the local cache yet. They only cross out when the target is actually deleted
  • Wikilinks save smaller HTML — the live title is resolved at render time from a single source. Aliases keep their custom label

Outliner-style descriptions, typed wikilinks at a glance

Bulleted lists inside any description fold and unfold like an outliner, and wikilinks to typed thoughts show their type's icon in its color.

  • Logseq-style collapsible bullets. Any list item with children gets a chevron — click to fold. Works in view mode too. Option/Alt-click folds the whole sub-tree (Finder gesture). ⌘/Ctrl+. folds the branch under the cursor while typing. Collapse state is saved across reloads
  • Numbered lists collapse too. The chevron sits next to the number instead of replacing it, so renumbering doesn't get lost
  • Wikilinks wear their target's type — the type's icon appears in its color right before the link text. Baked in at insert time so it shows up for cross-garden links too; existing wikilinks self-heal on next view
  • New /Body Text slash command resets the current block to a plain paragraph from inside any heading, quote, code block, or list item
  • Bullet markers tone down to read as visual rhythm rather than content; the chevron column lines up whether or not a branch has children
  • Panel edit mode no longer flickers bullets in place of chevrons on first paint

Daily journaling, smarter Cmd+K, calmer edits

A Daily sub-garden with one Day node per date, slash commands to drop wikilinks to any date, and Cmd+K that picks the best match instead of always offering Ask AI.

  • Daily journaling. /today, /yesterday, /tomorrow, /date drop wikilinks to dates — Day nodes live in a dedicated Daily sub-garden sorted chronologically. Cmd+K → 'Add to today' jumps to today's description ready to write. Event.day now links to a Day with a calendar picker
  • Smarter Cmd+K. Ask AI only shows up when nothing else matches. Type 'add' and 'Add to today' is selected; type a title and that thought is selected. 'Open today' renamed to 'Go to Today' to mirror 'Go to Home Garden'
  • Edit mode keeps your cursor on the description. The pencil on an existing thought drops the cursor at the end of the body so you can keep adding lines. Brand-new thoughts still focus the title. ⌘/Ctrl+Enter and Escape both save and exit
  • F key cleans up before fitting. In auto-arrange modes pressing F re-runs the layout in the same beat as the fit-view animation
  • Auto-arrange respects pending edits. New nodes stay under your cursor while you name them; commit or discard, then they slide into place

Aliases, typed property links, and calmer chrome

Aliases for thoughts, a quieter canvas top, and typeless-by-default new thoughts. Book/Movie/Music now reference typed people instead of free-text.

  • Aliases are first-class. Add nicknames or alternative spellings; typing one into [[ search surfaces the canonical thought as an alias row (e.g. 'diary' → Daily Log) and picking it stamps the link with the alias label. Removing an alias rewrites every wikilink that used it back to the canonical title in real time
  • Book.author / Movie.director / Music.artist now reference Author / Director / Artist types. Type [[ to pick or create — the new thought lands already typed. Backlinks include the source property name as context
  • New thoughts start typeless. Cmd+N, double-click, drop-file all create thoughts with no type. Adding a child no longer copies the parent's type onto the child
  • Canvas top consolidates. The AI orb sits inline with the breadcrumb pill in a single row — ~80px of vertical space back. The sparkle button on nodes is gone (AI is moving to ambient surfaces); + buttons show only on selection
  • Mobile top bar declutters: user icon moves into the sidebar, Share is reachable from right-click and ⌘K instead of top-right
  • Smart fit-view subtracts the breadcrumb pill, toolbar, and Nexus dock before framing — drill-in/out and breadcrumb-back no longer hide the centered node behind chrome
  • Side panel and canvas card share one body component, so view ↔ edit no longer shifts content under the cursor. Quieter accordion sections with tween-based expand/collapse
  • Wikilinks render in the foreground color with a dotted underline rather than saturated link blue
  • Breadcrumb polish: chevron after the home icon when nested, ellipsis collapses long chains and stays clickable on mobile

Live renames and structured property values

Renames flow through every wikilink and backlink in real time, property values accept wikilinks, and the side panel finally mirrors the canvas card's accordion shape.

  • Wikilinks read the live title of their target. Rename 'Author' to 'Writer' and every [[Author]] updates immediately. Backlink chips and the highlighted word inside each snippet update too. Propagates across every placement of the same thought
  • Wikilinks inside property values. Type [[ in any string property; if the property is linked to a type, the created thought is auto-typed (Book.author = [[New Author]] lands typed as Author). Backlinks show the source property name
  • Link a property to a type by typing [[ in the property NAME field. Type-links travel by slug across publish, so they survive reseeds
  • Renaming a typed property migrates every existing instance's value to the new key — no more silent orphans
  • Side panel view mode mirrors edit mode's accordion sections — properties, backlinks, nested children all share open/closed state. Drilling in/out frames around an open panel
  • Admin types-garden publish flow is sturdier: consistent draft count, transactional publish, and a future-stamped publishedAt now self-heals

Smoother nesting, wikilinks that flow

Inline + and the new-wikilink flow now create thoughts directly inside the sub-garden you're in. Brackets auto-pair, selected text wraps in place, and backlinks show the surrounding sentence.

  • Inline + and the AI sparkle on a nested-children list create the new thought directly inside the parent's sub-garden — no transient root placement, no extra round-trip
  • Pasting or dropping a YouTube/image URL into a sub-garden keeps the new node consistent end-to-end so edges drawn against it survive a refresh
  • Brackets auto-pair: [ → []; second [ → [[]] and opens the popup. Backspace deletes both brackets at once
  • Press [ around a selection to wrap it; press [ again to turn it into a wikilink with the selected text in the search
  • Picking 'Create new' on a wikilink nests the new thought inside the one you're writing — no more vanishing to (0, 0)
  • Backlink chips show the surrounding sentence with the link highlighted. Backlink contexts update on save
  • Title fields treat [[ as literal text — the always-on title autocomplete still works

Sturdier delete + restore, smoother navigation

  • Deleting a parent with grandchildren no longer wipes the grandchildren — direct children and their sub-canvases move up intact
  • Restored thoughts re-appear on the canvas immediately and the viewport centers on them
  • ⌘K, wikilinks, and backlinks all drill into the target with the matched node already centered — no parent-canvas flash
  • Cross-garden link clicks change the URL once instead of routing through the root and then drilling in. Easier to bookmark and share
  • Right-click works on dot, dot-label, and compact LODs — no more falling back to the browser's native menu
  • ⌘K matches against aliases. Type 'luna' to find a Moon thought, with an 'alias: luna' label explaining why
  • Type 'home' or 'gh' in ⌘K to jump to your home garden — works from any sub-canvas
  • Breadcrumb shows the parent chain of the canvas you're on, not your navigation trail — the same node always shows the same crumbs

View ↔ edit feels like a single surface

Toggling between viewing and editing a thought no longer shifts anything under the cursor — same font, same position, same spacing across the canvas card and the side panel.

  • Title, description, and type chip stay at the same vertical position with the same font and spacing across view and edit. The pencil flips to a check while editing
  • The canvas card and side panel share the same editor fields under the hood — no more drift between the two surfaces
  • Cursor lands at the end of the existing title instead of selecting all. Suggestion dropdown only opens once you start typing
  • Edit survives zoom — switch detail levels without losing the editor
  • Fixed: clicking + and picking an existing thought from the autocomplete now draws the connection. Previously it created the reference without an edge
  • Side panel's bottom Save button is gone (use the check at the top). Esc commits and returns to view. Mobile sheet handle moves to the very top, iOS-style

Steadier canvas loads and safer rich-text display

Two reliability passes — one to keep the canvas painting through flaky background writes, one to harden how thought content renders when it comes from someone else.

  • A single failed background write — for example, a placement update interrupted by going offline mid-nest — can no longer leave the canvas stuck on a loading state; pending writes resolve independently and the canvas paints with what it has
  • Rich-text content now passes through a sanitization step before it reaches the page, so any HTML received from a collaborator or import is filtered down to the formatting Neural Garden actually supports (headings, bold/italic, lists, code, blockquotes, links, and wikilinks)

The canvas opens like a notebook now

A pass at making the canvas feel local-first end-to-end — repeat visits are instant, slow wifi shows your last-known canvas in milliseconds, and the heaviest assets (the in-browser database) only download once.

  • Re-opening a garden you visited recently now paints instantly, with no network round-trip — your last view is read from the local database in under 50ms while fresh data arrives in the background
  • Backlinks badges and multi-placement chips now flicker in a beat after the canvas paints, instead of holding up first paint waiting for the network
  • On slow wifi, every canvas load was previously a cold load because of a cache-bypass bug — fixed; repeat loads are now actually fast
  • The 5MB PostgreSQL-in-the-browser data file is now precached by the service worker so it only downloads once, ever (instead of every page load)
  • Quieter console — the local-cache layer no longer spams scary-looking errors when your browser is fully online and working fine

Tighter arrange modes and a fix for the gravity crash

Layouts now respect the gaps you set, node widths can change without the grid overlapping, and switching to Gravity mode no longer throws a canvas error.

  • Grid layout stays tight no matter how wide your nodes get — spacing is computed from measured node sizes with just a Gap X / Gap Y control
  • New, tighter defaults for the arrange modes: Grid 20/20 gaps, Tree Down/Tree Side 80 rank gap + 10 node gap, Radial 500 base radius
  • Switching into Gravity or Gravity2 mode no longer crashes the canvas with a hooks error

Wikilinks and backlinks that actually land where you expect

A trio of navigation and display fixes for thoughts that live in multiple places — inside sub-gardens, across gardens, and under old names.

  • Clicking a backlink from a sub-garden now takes you to the specific placement inside that sub-garden, not back to the root garden
  • The "here" badge in the placement picker now marks the garden you are actually looking at — if you drilled into a sub-garden, "here" tags the sub-garden entry, not the root
  • Renaming a thought now updates every wikilink pointing at it in real time, across every node on the current canvas — no more stale titles after a rename

Outline mode, refined nodes, richer previews

A Logseq-style outline that actually feels like one, node descriptions that render bullets and wikilinks even at a glance, and a canvas that settles quietly into the background.

  • Outline mode is tighter and truly indented — set your own gap as low as 0px and children indent by exactly that amount instead of an invisible 30px baseline
  • Outline edges now snap into clean right angles — no more bulges when parent and child are close together
  • Node descriptions render their real formatting everywhere — bullet lists, line breaks, and wikilinks now look the same in preview mode and on compact nodes (up to 3 lines) as they do in the editor
  • Nested children rows declutter — the drag handle moves to the right, the pop-out arrow is gone, and the footer's add-row blends into the nested list
  • Subtler node surfaces — thinner type-color stripe on the left, softer contrast against the canvas, uniform padding on all four sides, and connection handles that only appear when the node is hovered or selected
  • Compact nodes align the icon with the title rather than the geometric center, so longer descriptions don't push the icon into no-man's-land

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