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
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)