Skip to content

Release v0.19.0

Choose a tag to compare

@Edwardvaneechoud Edwardvaneechoud released this 21 Sep 06:10
· 62 commits to main since this release
22f95e0

Changes since v0.18.0.

This release is about the notebook. Cells can be reordered and undone, the shortcuts match Jupyter, outputs tell you when they no longer match the code that produced them, and the editor now completes column names. For kernel users the legacy flowfile global is finally removed. Default kernel images move to 0.6.0. No catalog schema migration required.

Notebook UX improvements

Catalog notebooks and Python Script node notebooks got a single, coordinated overhaul (#748, #749, #750) so they behave like an editor you already know. Together, the notebook now has:

  • Drag-to-reorder cells, output included, with Alt+↑/Alt+↓ from the keyboard. Structural edits are locked while a run is in progress.
  • Undo/Redo for structure: a toolbar control reverts the last 50 insert, delete, and move operations, separate from Cmd/Ctrl+Z on text.
  • A per-cell action menu (insert above/below, duplicate, collapse code, collapse output) replacing the old button row. Collapse is session-only and never touches the saved notebook.
  • Jupyter-matched shortcuts: Shift+Enter runs and advances, Cmd/Ctrl+Enter runs in place. This is reversed from before. Double-clicking run no longer executes twice.
  • Stale outputs labelled, not hidden: an edited cell keeps its output marked "Code changed — rerun", cells downstream get "Earlier cells changed — rerun", and a kernel switch or reset marks results "Previous session". Discarded runs can no longer overwrite current output.
  • "Reset session" replaces "Restart": clears this notebook's variables without stopping the kernel, and reports failures instead of silently succeeding.
image

Column-name completions

Both notebook surfaces now complete column names (#752). Open a quote where a column belongs — orders.select(", pl.col(", orders[" — and the popup lists that frame's columns with their dtype and where the names came from.

  • Known before you run: catalog tables read via flowfile_ctx.read_catalog_table, Python Script node inputs, and plain select / rename / drop / with_columns chains are inferred statically from the source, so completions work on a cold kernel.
  • Known after you run: once a cell has executed, the kernel reports the real schemas of the DataFrames in the notebook's namespace, labelled last run. Results minted by a previous session or a reset are rejected rather than shown as current.
  • No guessing: when the editor cannot tell which frame you mean, it offers nothing. LazyFrames in the namespace are reported without resolving their plan, so completion never triggers a scan.
  • Signature help no longer pops up while you're typing inside a string.

This needs kernel image 0.6.0, which adds the dataframe_schemas code-intelligence endpoint. Older kernels keep everything else working and simply fall back to the static inference.

For kernel users: the flowfile global is gone

Only code that runs on a kernel is affected — catalog notebooks and Python Script nodes. If you don't use kernels, nothing changes.

Kernel code no longer gets a flowfile global; anything still calling flowfile.read_input() raises NameError. It was deprecated in v0.10.1 (#443), so this just finishes the removal. Replace flowfile. with flowfile_ctx.. display and explore are now bare names too, so display(df) works with no prefix. Autocomplete, help panels, and code export were updated to match.

Other

  • Alteryx trademark disclaimer: added an "Alteryx is a trademark of Alteryx, Inc.; Flowfile is not affiliated" notice across the importer's surfaces (import dialog, CLI help, docs, README) and reworded the import buttons to "Import Alteryx workflow…" (#744, #746).
  • Alteryx importer: AMP-engine .yxdb files are detected and refused with a clear "how to re-export" message (#747).
  • Docs: fixed invisible mobile search in light mode (#743).
  • Deps: browserslist 4.28.2 → 4.29.0 in flowfile_wasm (#742); @codemirror/language added to the frontend for the string-aware completion context.