v1.1.0
Windows (portable): download solenoid-*-windows-x64.exe below and run it — no installer.
The binary is unsigned, so Windows SmartScreen will warn: click More info → Run anyway.
What's new in 1.1
Composites & what-if
- Composite sub-graph container node
- Goal Seek, Scenarios, Data Table & Simulation run modes on composites
- Composite sub-graphs with an isolated, manual compute chain (Solve button + stale marker)
- Full drill-in editor: minimap, keyboard, right-click, Tidy, copy/paste inside a composite
Nodes & analysis
- Set Operations & Set Relations nodes
- Unified XLOOKUP node: lists, frames & cubes; approximate + as-of match
- As-Of Join (nearest-match on time keys, with tolerance)
- Data Feed node: FRED economic series (no key) & Alpha Vantage stock history; date range, frequency, quick-picks
- Expect, Reconcile & Tornado nodes
- One-click model fuzzer
- Problems panel
- Where-used highlight
- Node-anchored comments
- Cube Rollup node
- Coalesce/Fill is N-ary (extensible Else rows)
- Filter Rows with extensible AND/OR condition rows
- Input Switch: named slots + Many mode (collects into a Cube)
- Date Range picker node
- Session History node
- Write CSV / Write JSON file-sink nodes
Charts & visuals
- Chart ops: Pie, Scatter, Bubble, Radar, Radial, Funnel, Composed
- Treemap, Sankey, Histogram, KPI card & Bullet nodes
- Sparkline node (line / column / win-loss)
- Mermaid diagram node
- Chart accepts a Frame for a labeled x-axis
- Minified (collapsed) previews: Sparkline, Gauge, Slicer & charts
Reports & presentation
- Report node: markdown with live
=nameembeds (numbers, tables, charts, equations, diagrams) - Report docks to the right edge
- Export a Report as a webpage (static HTML)
- Presentation node & Presenter mode
- Image bundling: attached images save to an
images/folder beside the document
Data & engine
- Verb chains compile to one fused Polars query
- Sketch calc mode: sampled execution on huge tables
- Native CSV reader on desktop (with date inference)
- Native Parquet & Arrow source
- Error provenance: every error carries its origin; popups fly to the source
- Connection nodes auto-refresh on an interval
- Headless graph runner (
npm run run-graph)
Canvas & app
- Command Palette (Ctrl+K), with an always-on docked option
- Align & Distribute bar, plus batch collapse/expand
- Mobile design pass: three-zone chrome + touch action bar
- Custom Palette Editor (+ the Equinox palette)
- Document Properties
- Format Controller redesign: one function model, flow-state arrows, advanced tier (separators, accounting negatives, K/M/B)
- Type-default display: values render in their type's format everywhere
- Quick-wire: drop a cable on empty canvas for a filtered Add menu
- Semantic zoom
- Drag-to-scrub number fields
- Universal node body resizer
- Conduit lanes with switchable socket types
- Minimap position setting (bottom / top / hidden)
- Fullscreen: F11 on desktop, a button on mobile
Known issues
- Tidy / Cleanup around expanded groups is wonky — auto-arrange and cleanup can misplace nodes when expanded groups are involved; re-running or nudging recovers.
- Inside a composite drill-in, grouping, Isolate, Cleanup/Autofit, the Navigator and lasso-select aren't available yet (main canvas only), and the top toolbar still drives the main canvas — the keyboard and right-click menu do target the subgraph.
- Node-label edits aren't undoable (on any surface) — Ctrl+Z skips them.
- A hairline seam can show between a node's header and body at some zoom levels (cosmetic).
- Data Feed in the browser is CORS-limited — some providers only work in the desktop app, which fetches natively.
- The Problems panel and model fuzzer only see whole-value errors — a per-cell error inside a list/frame shows in the value, but isn't itemized in the panel.
- Tornado ranking mixes true sensitivity with each input's sweep width (a Slider sweeps its full range, a Number ±10%), and an input that errors at an extreme is dropped from the chart rather than marked.
- The model fuzzer's "+ Clamp" quick-fix inserts an unconfigured Clamp — set the bounds yourself after inserting.
- Set nodes compare complex numbers by identity, so equal complex values from different sources never match.
- No cable collision avoidance yet — cables can overlap each other and nodes in dense graphs.
- In private browsing during a network outage, recovering from a stale deploy can reload-loop (the web app can't persist its retry guard).
- Android: the status bar doesn't tint to the app accent in a normal tab (platform limitation).
Full Changelog: v1.0.0...v1.1.0