Skip to content

Releases: nullhack/flowr

v1.1.0 — Quartz Vein

19 May 20:41
40c4e16

Choose a tag to compare

flowr v1.1.0 — Quartz Vein

The visual editor release. flowr now ships with an interactive D3.js visualization server.

Added

  • flowr serve — interactive D3.js visualization server for flowr state machine definitions
    • Searchable flow list sidebar with filtering
    • Zoomable, pannable state graph with subflow navigation
    • Breadcrumb navigation for drilling into subflows
    • Tooltips on hover for states and transitions
    • Keyboard accessibility (Tab/Enter/Space)
  • REST APIGET /api/flows, GET /api/flows/{id}, PUT /api/flows/{id}, POST /api/flows, DELETE /api/flows/{id}
  • --edit flag — enables in-browser flow creation, editing, and deletion with server-side validation and atomic writes
  • [viz] extrapip install flowr[viz] installs FastAPI + Uvicorn
  • Frontend assets — vendored D3.js v7 and Dagre (no CDN, works offline)

Changed

  • Version bumped to 1.1.0
  • Coverage threshold lowered from 100% to 80%
  • Default host changed to localhost (matches flowr-viz original)

What's Changed

  • feat: add flowr serve — interactive D3.js visualization for flowr state machines by @nullhack in #23
  • (prior fixes from this cycle: export pipeline, robustness, subdirectory export, dependabot — see full changelog)

Full Changelog: v1.0.0...v1.1.0

v1.0.0 — First Stone

06 May 15:44
7232f35

Choose a tag to compare

v1.0.0 — First Stone

Added

  • Specification reference page: docs/index.html — semver.org-style specification with numbered rules, RFC 2119 language, formal syntax grammar, normative D3 diagrams, and FAQ
  • Remove fuzzy match operator: ~= (APPROXIMATELY_EQUAL) removed from the specification and reference implementation; flows using ~= now produce FlowParseError with state context

Changed

  • Condition operators reduced from 7 to 6: ==, !=, >=, <=, >, <
  • flowr/domain/condition.py: removed APPROXIMATELY_EQUAL enum value, ~= from operator prefix map, and approximate comparison logic
  • flowr/domain/loader.py: added _validate_condition_operators() to reject ~= in all when-clause forms (inline dict, list-form, named references) with FlowParseError
  • Specification documents: flow_definition_spec.md, glossary.md, system.md, product_definition.md updated to list exactly 6 operators
  • ADR_20260426_fuzzy_match_algorithm.md: deprecated with removal notice
  • README.md: banner image uses absolute URL for PyPI rendering, guard conditions explicitly list 6 operators, documentation links use absolute URLs
  • pyproject.toml: version bumped to 1.0.0, Documentation URL points to spec page, added PyPI classifiers

Removed

  • ~= condition operator (APPROXIMATELY_EQUAL) — no longer a valid operator in the flowr specification
  • 6 obsolete tests referencing ~= parsing and evaluation

v0.5.0 Fine Sift

05 May 07:00
6bae6f5

Choose a tag to compare

Fine Sift — Subflow Transition Overhaul

Highlights

  • Subflow exit resolution: exit names now resolve through the parent flow's transition map instead of being used directly as state IDs
  • Subflow chaining: atomic exit + re-enter next subflow (e.g., discovery-flow → architecture-flow) without manual state manipulation
  • Recursive subflow entry: handles 3-level nesting (main-flow → feature-dev-flow → planning-flow)
  • JSON-first output: --json flag replaced with --text; JSON is now the default for all commands
  • next shows all transitions: includes blocked/guarded transitions with trigger→target mapping, status markers, and condition hints

New Features

  • states --session — list states in the current (sub)flow
  • validate --session — validate the current (sub)flow
  • check --session <trigger> — show transition conditions for a trigger (fixed argparse bug)
  • session init auto-enters subflow when first state has flow: field

Bug Fixes

  • resolve_subflows() .yaml extension fallback for flow references without extension
  • Stack frame records correct parent state (subflow wrapper, not pre-transition state)
  • check --session <target> argparse consuming target as flow_file

Full Changelog: v0.4.0...v0.5.0

v0.4.0

02 May 18:05
f7e700a

Choose a tag to compare

What's Changed

  • feat: session management extended — complete interview requirements by @nullhack in #6
  • release: v0.4.0 Refined Semolina by @nullhack in #7

New Contributors

Full Changelog: v0.3.20260427...v0.4.0

v0.3.20260427 - Coarse Grind

27 Apr 06:49

Choose a tag to compare

v0.3.20260427 - Coarse Grind

"Nothing sifted out — the whole package, included."

Changelog

Fixed

  • fix: package build missing subpackages — replaced static packages = ["flowr"] with setuptools.packages.find so flowr.cli and flowr.domain are included in the installed distribution
  • fix: license deprecation — changed project.license from TOML table to SPDX string "MIT"
  • fix: CI verification — updated package install checks to import all submodules (flowr, flowr.cli, flowr.domain)

SHA: b2504d6

v0.1

26 Apr 13:37

Choose a tag to compare