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
- BREAKING: Remove the concept of groups. (!10)
- BREAKING: Remove the
.task[].ignorekey. It is seldom useful and can be implemented outside of Engage when it’s truly necessary. (!13) - BREAKING: Remove the
.interpreterkey as it is no longer necessary. (!15) - BREAKING: Remove support for non-Unix platforms. Non-Unix platforms may become supported in the future. (!29)
- BREAKING: Remove the
-j/--jobscommand line option. (!33)
Changed
- BREAKING: Replace the
.task[]and.task[].namekeys with the.processesand.processes.*keys respectively. “Tasks” are now called “processes”, because that’s what they ultimately are. (!11, !37) - BREAKING: Rename the
.processes.*.dependskey to.processes.*.after. (!11) - BREAKING: Replace the
.processes.*.scriptkey with the.processes.*.commandkey, which takes an array of strings rather than a string. (!15) - BREAKING: Only permit
^[a-z0-9-]+$in process names, and-cannot appear as the first character. (!18) - BREAKING: Reject unknown keys in Engage files. (!19)
- Deduplicate elements in the array of the
.processes.*.afterkey. Duplicates are not rejected, but they are ignored while constructing the dependency graph, so e.g. they will no longer show up inengage dot. (!11) - Improve error messages when attempting to run processes. (!21)
- 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)
- Spawn each process in its own process group. Primarily, this prevents them
from receiving
SIGINTdirectly from the shell whenctrl+cis pressed while running Engage, because shells typically sendSIGINTto 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) - Improve some error messages. (!33, !37)
- Stop canonicalizing the path to the Engage file. Paths involving symlinks will behave more predictably. (!33)
- Support the TOML specification version 1.1.0. (!36)
- Improve the “File format” chapter of the book by flattening headings, using definition lists, and adding examples. (!38)
Fixed
- 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
- Add the
.processes.*.beforekey, 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.*.afterkey. (!12) - Add the
.processes.*.environmentkey, which allows configuring environment variables on a per-process basis. (!14, !16) - Add the
-l/--log-formatcommand line option for choosing alternate log formats. (!27, !28) - Add a
ctrl+c/SIGINThandler 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
- Greatly improve error messages in some cases, primarily task failures and dependency cycles. (!4)
Fixed
- Only load the Engage file when necessary. (2f394ad)
Added
- Add more thorough documentation in the form of a book. (Too many commits to link.)
- 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
- BREAKING: Always exit with a status of
1when a task fails instead of trying to exit with the same status code as the task. (c18357e) - BREAKING: Exit with a status of
2for errors other than tasks failing. (a991d12) - BREAKING: Move subcommands from under
selfto the top level and remove theselfsubcommand. For example, you’d now useengage dotinstead ofengage self dot. (e537e9d) - Remove all restrictions on group names. (0850054)
Fixed
- Report all failed tasks instead of just the first one. (b9fcdcd)
v0.1.3 - 2023-09-10
Removed
- Remove the Nix binary cache. (066e97c)
Fixed
- Wait for all started tasks to complete before terminating. (d98c6cc)
v0.1.2 - 2023-02-10
Changed
- Improve the behavior summary. (7be43e4)
Added
- Add a
--jobs/-joption to limit parallelism. (da1cc61)
v0.1.1 - 2023-01-28
Added
- Add a subcommand to generate shell completions. (48c925b)
v0.1.0 - 2022-11-07
Changed
- BREAKING: Disallow certain group names for forward compatibility. (066b2e3)
- BREAKING: Make
engage just <GROUP> [TASK]run all dependencies. (acda394) - Allow
engage self dotto take<GROUP> [TASK]arguments to show a subgraph for the given target. (acda394) - Make error messages a little prettier. (257e49e)
- Allow
engage self doteven if there are cycles. (f6ffbc2) - Print out the status at the end to make it easier to see. (37a6b9f)
- Print out the group and name of the failing task, if any. (c3df8f6)
- Print errors to
stderrinstead ofstdout. (9c5dfaf) - Rework output while running the graph to be more functional and accessible. (8880003)
Fixed
- BREAKING: Prevent groups from depending on nonexistent groups. (69219ec)
- Fix a deadlock in an unusual situation. (acee5fe)
- Prevent a deadlock in an unusual situation. (295e3b6)
- Improve the graph in unusual self-loop situation. (a9f1a27)
- Improve UX when
interpreteris given an empty list. (72e89a3) - Improve UX of some error messages. (c663bb6)
- Greatly improve error messages for dependency cycle issues. (f6ffbc2)
Added
- Upload build artifacts to Computer Surgery Nix binary cache. (8773d4d)
v0.1.0-alpha.2 - 2022-10-09
Changed
- BREAKING: Rename
task.cmdtotask.scriptinengage.toml. (b403dbe) - Change CLI UX due to a dependency update. (b0f7ac7)
Fixed
- Reset output style at the beginning of each line. (!1)
v0.1.0-alpha.1 - 2022-09-17
Initial release.