Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to SemVer.

Unreleased

Removed

  1. BREAKING: Remove the concept of groups. (!10)
  2. BREAKING: Remove the .task[].ignore key. It is seldom useful and can be implemented outside of Engage when it’s truly necessary. (!13)
  3. BREAKING: Remove the .interpreter key as it is no longer necessary. (!15)
  4. BREAKING: Remove support for non-Unix platforms. Non-Unix platforms may become supported in the future. (!29)
  5. BREAKING: Remove the -j/--jobs command line option. (!33)

Changed

  1. BREAKING: Replace the .task[] and .task[].name keys with the .processes and .processes.* keys respectively. “Tasks” are now called “processes”, because that’s what they ultimately are. (!11, !37)
  2. BREAKING: Rename the .processes.*.depends key to .processes.*.after. (!11)
  3. BREAKING: Replace the .processes.*.script key with the .processes.*.command key, which takes an array of strings rather than a string. (!15)
  4. BREAKING: Only permit ^[a-z0-9-]+$ in process names, and - cannot appear as the first character. (!18)
  5. BREAKING: Reject unknown keys in Engage files. (!19)
  6. Deduplicate elements in the array of the .processes.*.after key. Duplicates are not rejected, but they are ignored while constructing the dependency graph, so e.g. they will no longer show up in engage dot. (!11)
  7. Improve error messages when attempting to run processes. (!21)
  8. Improve the formatting of errors. The new format is much more likely to work well with screen readers, and can include more information than just the error message, such as suggestions for resolving the error. (!21)
  9. Spawn each process in its own process group. Primarily, this prevents them from receiving SIGINT directly from the shell when ctrl+c is pressed while running Engage, because shells typically send SIGINT to the entire process group rather than just the first process spawned. Engage already manages the forwarding and sending of signals to processes it spawns. (!33)
  10. Improve some error messages. (!33, !37)
  11. Stop canonicalizing the path to the Engage file. Paths involving symlinks will behave more predictably. (!33)
  12. Support the TOML specification version 1.1.0. (!36)
  13. Improve the “File format” chapter of the book by flattening headings, using definition lists, and adding examples. (!38)

Fixed

  1. No longer block the spawning of processes on other processes that they do not declare a direct or transitive dependency on. (#9, !24, !26)

Added

  1. Add the .processes.*.before key, which requires that the process in question exit successfully before spawning processes in the array of process names given to this key. Elements are deduplicated in the same way as the .processes.*.after key. (!12)
  2. Add the .processes.*.environment key, which allows configuring environment variables on a per-process basis. (!14, !16)
  3. Add the -l/--log-format command line option for choosing alternate log formats. (!27, !28)
  4. Add a ctrl+c/SIGINT handler which prevents new processes from spawning, signals running processes to exit, and waits for them to exit. (!29, !33)

v0.2.1 - 2025-09-08

Changed

  1. Greatly improve error messages in some cases, primarily task failures and dependency cycles. (!4)

Fixed

  1. Only load the Engage file when necessary. (2f394ad)

Added

  1. Add more thorough documentation in the form of a book. (Too many commits to link.)
  2. The long help CLI output links to a local copy of the book, if packaged to do so. (!2)

v0.2.0 - 2023-09-19

Changed

  1. BREAKING: Always exit with a status of 1 when a task fails instead of trying to exit with the same status code as the task. (c18357e)
  2. BREAKING: Exit with a status of 2 for errors other than tasks failing. (a991d12)
  3. BREAKING: Move subcommands from under self to the top level and remove the self subcommand. For example, you’d now use engage dot instead of engage self dot. (e537e9d)
  4. Remove all restrictions on group names. (0850054)

Fixed

  1. Report all failed tasks instead of just the first one. (b9fcdcd)

v0.1.3 - 2023-09-10

Removed

  1. Remove the Nix binary cache. (066e97c)

Fixed

  1. Wait for all started tasks to complete before terminating. (d98c6cc)

v0.1.2 - 2023-02-10

Changed

  1. Improve the behavior summary. (7be43e4)

Added

  1. Add a --jobs/-j option to limit parallelism. (da1cc61)

v0.1.1 - 2023-01-28

Added

  1. Add a subcommand to generate shell completions. (48c925b)

v0.1.0 - 2022-11-07

Changed

  1. BREAKING: Disallow certain group names for forward compatibility. (066b2e3)
  2. BREAKING: Make engage just <GROUP> [TASK] run all dependencies. (acda394)
  3. Allow engage self dot to take <GROUP> [TASK] arguments to show a subgraph for the given target. (acda394)
  4. Make error messages a little prettier. (257e49e)
  5. Allow engage self dot even if there are cycles. (f6ffbc2)
  6. Print out the status at the end to make it easier to see. (37a6b9f)
  7. Print out the group and name of the failing task, if any. (c3df8f6)
  8. Print errors to stderr instead of stdout. (9c5dfaf)
  9. Rework output while running the graph to be more functional and accessible. (8880003)

Fixed

  1. BREAKING: Prevent groups from depending on nonexistent groups. (69219ec)
  2. Fix a deadlock in an unusual situation. (acee5fe)
  3. Prevent a deadlock in an unusual situation. (295e3b6)
  4. Improve the graph in unusual self-loop situation. (a9f1a27)
  5. Improve UX when interpreter is given an empty list. (72e89a3)
  6. Improve UX of some error messages. (c663bb6)
  7. Greatly improve error messages for dependency cycle issues. (f6ffbc2)

Added

  1. Upload build artifacts to Computer Surgery Nix binary cache. (8773d4d)

v0.1.0-alpha.2 - 2022-10-09

Changed

  1. BREAKING: Rename task.cmd to task.script in engage.toml. (b403dbe)
  2. Change CLI UX due to a dependency update. (b0f7ac7)

Fixed

  1. Reset output style at the beginning of each line. (!1)

v0.1.0-alpha.1 - 2022-09-17

Initial release.