Skip to content

Release v0.18.0

Choose a tag to compare

@Edwardvaneechoud Edwardvaneechoud released this 18 Sep 11:27
· 63 commits to main since this release

Changes since v0.17.6.

The Formula node holds multiple expressions in one node, the Alteryx importer jumps to 82 % tool coverage and gains a .yxdb data-file converter, the catalog database can run on PostgreSQL, and Windows kernel calls are noticeably faster. No schema migration required for existing SQLite deployments.

Multi-entry Formula node

The Formula node now holds an ordered list of formula entries instead of a single expression (#741). Each entry has its own output column, expression, and optional cast. Entries evaluate top to bottom — entry 2 can reference the column entry 1 created — identical to chaining N formula nodes, collapsed into one.

  • Add, reorder, drag-and-drop. Each row shows an inline preview; misspelled column names get "did you mean?" suggestions.
  • Backward compatible. Old single-entry flows load unchanged. A multi-entry node saved from 0.18.0 fails visibly on older versions instead of silently running only entry 1.
  • Code export & Python API. Both Polars and FlowFrame exports chain one .with_columns() per entry. FlowFrame.with_columns() with multiple flowfile_formulas= packs independent entries into one node.
  • Share links demote multi-entry formulas to placeholders (WASM does not yet support them).

Multi-entry Formula node
The new multi-entry formula layout

Alteryx importer: 82 % coverage and .yxdb conversion

A large expansion of the .yxmd importer and a new .yxdb data-file converter (#724). Measured on Alteryx's 121 One Tool Example workflows: 559 of 678 in-scope tools mapped (82 %, up from ~75 %), 409 fully converted.

  • .yxdb converter. flowfile convert yxdb <path> reads Alteryx data files and writes Parquet. Handles the full type table (Bool, Int, Float, FixedDecimal, String variants, Date/DateTime, Blob, SpatialObj).
  • Newly converted tools: TextInput, AlteryxSelect, DateTime, DateTimeNow, Rank, Imputation, Weighted Average, Create Samples, Generate Rows, Select Records, Data Cleanse Pro, API Output, plus pass-through handling for Message, Test, BlockUntilDone, Throttle, Detour/DetourEnd.
  • Expression translator gained MD5, Base64, REGEX_Match, date helpers (FirstOfMonth, LastOfMonth), and conditionals (IIF, Switch). Fail-closed: only emits when every function resolves.
  • Scope taxonomy. The conversion report now explains why a tool was not converted (Reporting, Spatial, CV, Text Mining, GenAI, etc.), not just that it wasn't.
  • CLI: flowfile convert yxdb and flowfile import alteryx (with --inspect, --format md).

Docs: Coming from Alteryx.

PostgreSQL catalog database

The catalog metadata database can now run on PostgreSQL (#738). Set FLOWFILE_DATABASE_URL=postgresql+psycopg2://user:pass@host/db; core, worker, and scheduler all use it. SQLite remains the default; existing deployments are unaffected.

  • Unified create_catalog_engine() centralises driver-specific options across all consumers.
  • Four Alembic migrations made portable (boolean defaults, dialect-aware constraints).
  • Backup UI shows "not available" for PostgreSQL instead of erroring.
  • New CI workflow runs the full catalog lifecycle on both SQLite and PostgreSQL 16.

Performance: Windows kernel calls

  • Cached SSL context eliminates ~250 ms per httpx client on Windows across ~20 kernel call sites (#739).
  • Vite dual-stack listen avoids ~300 ms dropped-SYN delays on Windows loopback.
  • Stale kernel images with a version older than the pinned default are now skipped.
  • LSP 404 on older kernel images logs a one-time warning instead of repeated errors.

Docs

  • "Telemetry & Privacy" renamed to Privacy & Telemetry and rewritten for brevity (#740).

Dependencies

polars-expr-transformer pinned to >=0.6.3; optional yxdb extra added to pyproject.toml.