Skip to content

Release v0.12.5

Choose a tag to compare

@Edwardvaneechoud Edwardvaneechoud released this 26 Jun 16:11
febbce5

Release v0.12.5

This release adds code intelligence (completion, hover, diagnostics) to catalog notebooks, makes the generated/exported Python code cleaner through pipeline fusion, and adds connection validation that the AI planner and backend share. It also fixes group-by aggregations for expression-only functions and bundles the demo flows into packaged builds.

Notebook code intelligence (#550)

Catalog notebooks now have a Jedi/LSP bridge served by the kernel.

  • Completion, hover, signature help, and diagnostics in notebook cells, exposed through new /kernels/{id}/lsp/* endpoints that forward to the kernel's Jedi engine
  • Gated by a runtime feature flag (FLOWFILE_LSP_ENABLED) with admin endpoints to toggle it live without a restart
  • When the bridge is disabled or unavailable, the endpoints return empty results and the editor falls back to client-side completions
  • Default kernel image bumped to 0.4.0 (kernel runtime API 0.3.0) to match

Cleaner generated code (#549)

The code generator now collapses linear chains of single-use nodes into piped expressions, keeping named variables only where the graph branches or merges.

  • Operation-based variable names at chain boundaries; generated names no longer collide with Python builtins or keywords
  • Transparent nodes (a select with nothing selected, UI-only explore_data nodes) are remapped to their input instead of emitting dead code
  • Join emission fixes: no unnecessary parentheses around semi/anti joins, and joins are only wrapped when post-processing follows
  • Broader codegen coverage for joins, transforms, DB/REST/catalog connectors, and user-defined custom nodes, with REST API credentials redacted in the output
  • Cleaner record_id output and node-id-based function names for custom Polars nodes

Connection validation for the AI planner (#551)

A single source of truth for source-only node types and connection rules, shared by the backend and the AI tool handlers.

  • New get_source_node_types() and a centralized validate_connection() / ConnectionValidationError
  • The AI connect handler rejects wiring into a source node or creating a cycle at stage time, returning actionable reasons (target_is_source, would_create_cycle) so the planner can self-correct
  • AI docs, prompts, and error messages reference the current source-node list (now including rest_api_reader), avoiding drift as new source nodes are added

Fixes & improvements

  • Expression-only aggregations (unique_counts, implode, explode, quantile) in group_by().agg() no longer fail with "Could not execute the function" — they fall back to the polars_code path, since these exist only as expression methods, not top-level Polars functions (#553)
  • Demo-catalog flow YAMLs are now bundled by PyInstaller, so demo seeding works in the packaged desktop app instead of failing on a missing-file lookup (#548)

Upgrade notes

  • Notebook code intelligence requires the new kernel image 0.4.0 (runtime API 0.3.0); Docker users should pull the updated image. Set FLOWFILE_LSP_ENABLED=false to disable the bridge — it degrades gracefully when off.
  • No database migrations in this release.

Full changelog: v0.12.4...v0.12.5