Skip to main content

Changelog

All notable changes to Noodles.gl are documented here.

January 2026

Added

  • Dim unconnectable nodes during connection drag (#250)

Changed

  • ForLoop now returns array of all iteration results (#240)
  • ForLoop field renamed from 'd' to 'item' for clarity (#240)

Fixed

  • Theatre.js cold prism warning (#258)
  • "Project not found" dialog after File > Import then Save (#188)
  • Parent group node included when copying ForLoop nodes (#222)
  • Syntax error messaging for ExpressionOp and CodeOp (#244)
  • Connection constraint violation error messages (#255)

December 2025

Added

  • Tools shelf with PointOp wizard and CSV importer (#192)
  • Collapsible sidebar with node renaming (#193)
  • OrthographicView operator (#179)
  • TopMenuBar with hamburger menu (#163)
  • "I" key navigation for drilling into containers (#159)
  • Keyboard shortcuts centralized in KeyboardManager (#169)
  • SDF font settings for TextLayer (#202)
  • Text rendering properties on GeoJsonLayer (#200)
  • API Keys UI in Settings menu (#190)
  • ChromePicker for color fields (#177)
  • External AI control for automated pipeline creation (#211)
  • AI skills for generating projects and refactoring (#150)
  • GraphExecutor architecture for scope-based control flow (#214)
  • softMin/softMax properties on NumberField (#215)
  • Text and binary format options in FileOp (#210)
  • Allow incompatible operator connections with error surfacing (#224)
  • Node insertion on edge drop (#223)
  • Error popover on execution state change (#256)
  • PostHog error tracking with React 19 hooks (#245)
  • Projection switching in MaplibreBasemapOp (#187)

Changed

  • ReactFlow upgraded from v11 to v12 (#221)
  • Migrated from Volta to Corepack (#174)

Fixed

  • Prevent "Locate Project" dialog after successful creation (#180)
  • DateField Theatre.js sync with integer milliseconds (#185)
  • Preserve operator names in production builds (#181)
  • DuckDB-WASM worker loading on Cloudflare Pages (#220)
  • Viewer operator placement and selection logic (#242)
  • False unsaved changes warnings on node dimension updates (#246)

November 2025

Added

  • Undo/Redo functionality (#4)
  • PostHog analytics with opt-in consent (#127)
  • TimeSeriesOp for time-based data interpolation (#62)
  • KmlToGeoJsonOp for KML conversion (#118)
  • DateTimeOp with second/millisecond precision (#142)
  • GeoJsonField type with lime handle color (#119)
  • Temporal blending support in SwitchOp (#141)

Changed

  • Migrated state management to Zustand (#132)
  • Examples directory restructured to /public/examples (#68)
  • Lazy-loading for examples to reduce bundle size (#154)

Fixed

  • Theatre.js naming collision with containers (#134)
  • Breadcrumb bar and container state changes (#117)

October 2025 - Initial Release

Added

  • Core node-based editor with reactive data flow
  • Claude AI chat sidebar integration (#26)
  • Block Library with search by name and descriptions (#64, #69, #99)
  • Export project as ZIP (#96)
  • MapLibreBaseMapOp auto-added to new projects (#98)
  • SwitchOp value blending (#90)
  • Temporal types for DateFields (#63)
  • Multi-statement SQL support in DuckDB (#40)
  • AGENTS.md for LLM context (#60)

Changed

  • Upgraded to React 19 and Vite 7 (#81)
  • Renamed MergeOp to ConcatOp, ObjectMergeOp to MergeOp (#75)