Skip to content

Changelog

Unreleased

Added

  • #233 Added support for loading .env files via python-dotenv. A new settings.dot_env sub-section controls the behavior: dot_env.load (default true) enables loading, and dot_env.file (default .env) sets the filename, resolved relative to the config file. Both can be overridden at run time with -s dot_env.load=false or -s dot_env.file=.custom-env.

  • #247 Added a settings section to the configuration file with a timestamps sub-section. timestamps.sub_second_digits (0-6, default 0) controls how many sub-second digits appear in timestamps, and timestamps.include_date (default false) prepends the date to timestamps. Settings can also be overridden on the command line via -s/--setting using dotted paths (e.g. -s timestamps.sub_second_digits=3).

Changed

  • #244 Updated the recommended installation method from pipx to uv tool install, with alternatives for uvx and uv add --dev.
  • #246 Renamed target/targets to recipe/recipes in the configuration schema, matching the terminology used by just.

0.0.6

Added

  • #126 If no more work can be done in a flow, synth will exit. If all recipes ran and succeeded, the exit code will be 0. Otherwise, the exit code will be 1.
  • #126 Added the --once option, which replaces all "repeating" triggers (like watch or restart) with once. This allows an existing flow to be run as a "single shot", and when combined with the exit behavior change described above potentially useful for using Snyth workflows in CI or other automation.

Changed

  • #128 The separator rule is now red when any node has failed, and a status summary is printed when exiting.
  • #131 Flows can no longer have cycles in them (via the after trigger).

Fixed

  • #129 Ensured that the async tasks that trigger restarts don't get garbage-collected.

0.0.5

Released 2025-02-12

Fixed

  • #112 Fix a crash that could happen when a process outputs too much data without a newline.

0.0.4

Released 2024-10-24

Fixed

  • #79 Fix a crash that could happen when a process exits while we are trying to terminate it.

0.0.3

Released 2024-07-07

Added

  • #3 Added PyPI classifiers and other metadata.
  • #33 #40 Allow injecting arguments (via Jinja2 templates) and environment variables into recipe commands. Arguments and environment variables can be specified at either the flow, node, or recipe level, with the most specific taking precedence.
  • #43 Mermaid diagrams can be generated for a flow using the --mermaid option.

Changed

  • #30 Reorganized configuration to separate recipes, triggers (formerly "lifecycles"), and flows (graphs of recipes and triggers).
  • #41 Execution duration is printed in the completion message.
  • #49 Flow nodes can now have multiple triggers.

Fixed

  • #45 Restart triggers now allow for the node's children to run again after the node completes.

0.0.2

Released 2023-02-12

Added

  • #1 Core graph-of-recipes data model and executor, with support for once, restart, and watch lifecycles.
  • #1 Support for YAML configuration files.