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 Semantic Versioning.
- Various bugs related to paths on Windows have been fixed with the help of
typed-path
.
mount_paths
now works on Windows.
- Added support for
--output-dir
.
- Fixed a bug which would cause Toast to fail if
-s
/--shell
is provided and-f
/--file
is set to a path with a single component (e.g.,toast.yml
rather than./toast.yml
).
- Fixed a bug which would cause Toast to fail if the Docker image specifies a user other than
root
.
- Fixed a bug which would cause
input_paths
which correspond to files to be incorporated into the cache key even if they are denied byexcluded_input_paths
.
- Fixed a bug which could cause the cache key for a task to be computed incorrectly in rare situations.
- Added a workaround for the Docker limitation that bind mount paths must be absolute on the host. This would cause Toast to fail when using relative
mount_paths
in combination with the-f
/--file
flag.
toast --list
now only includes tasks with adescription
. You can use this to control which tasks show up in the list.
- Removed the deprecated
--repo
flag. Please use--docker-repo
instead.
- Added support for
--docker-cli
. This enables users to switch from Docker to Podman, if they so choose.
--repo
has been renamed to--docker-repo
.--repo
is still supported for now, but will be removed in a future release. Please use--docker-repo
from now on. If you are using therepo
option for the GitHub Action, please usedocker_repo
instead.
- Removed some debugging output that was mistakenly included in a previous release.
- Toast no longer wastes time committing the container when a task is interrupted (e.g., by hitting CTRL+C).
- Added support for
command_prefix
. - Added 3 top-level fields to the toastfile format, which serve as defaults for the corresponding task-level fields:
location
,user
, andcommand_prefix
.
- Added support for
extra_docker_arguments
, thanks to Xiangru Lian.
- The
mount_paths
field now supports mounting a path on the host to a different path in the container, thanks to Xiangru Lian.
- Toast now supports
input_paths
which are invalid UTF-8 on Windows.
- Added support for
--force TASK
.
- Added support for
excluded_input_paths
.
- Fixed a bug that would cause Docker images to be deleted prematurely.
- When the final task being executed is not cached, Toast no longer commits the container to a temporary image and subsequently deletes it. This results in a significant performance boost in some situations.
- The default location for the configuration file on macOS has been changed from
$HOME/Library/Preferences/toast/toast.yml
to$HOME/Library/Application Support/toast/toast.yml
. See this discussion for details.
- Windows builds are now automated.
- Thanks to Mackenzie Clark, Toast now may support Windows. No stability guarantees are made regarding Windows support, but contributions that enhance or fix Windows support are welcome.
- Introduced
output_paths_on_failure
.
- Toast now decides whether to print colored output based on whether STDERR is connected to a TTY. Previously, this decision was based on whether STDOUT is connected to a TTY, even though Toast mostly prints colored output to STDERR.
- When STDERR is not connected to a TTY, Toast now logs spinner messages. Previously, these messages were only displayed as part of a spinner animation when STDERR is connected to a TTY.
mount_paths
are now allowed to be absolute. This is to support mounting the Docker IPC socket (usually located at/var/run/docker.sock
) in the container for running Docker commands in tasks.
- The container used for the
--shell
feature now uses the mount settings and ports from the last executed task, if any.
- Fixed a bug that would cause Toast to crash if the first task had no environment variables, no input paths, and no command to run.
- Fixed the way symlinks in
output_paths
are handled.
- Fixed the way symlinks in
input_paths
are handled. - Fix a bug that prevented the standard error output from being logged if a child process failed.
- This release contains only internal improvements to the robustness of the code. Upgrading to this new version will invalidate existing cached tasks.
- Fixed a bug that would cause the
output_files
feature to fail if/tmp
on the host is on a different mounted filesystem than the destination.
- Added the
--list
option to list all the tasks in the toastfile. - Added the
description
task field to be shown to the user when--list
is used.
- Added the
mount_paths
feature.
- Removed the
watch
feature in favor ofmount_paths
.
- Toast now uses the environment, location, and user of the last task when running interactive shells for the
--shell
feature. - Toast no longer depends on
/bin/sh
existing in the containers it creates.
- Fix a bug that would cause failed tasks to be cached.
- When using
--shell
with a failing task, the shell environment is now based on the container from when the task failed rather than the last succeeding task. This makes debugging failed tasks easier.
- Fixed a bug that would cause images to be far larger than necessary.
- Every release from this point forward will include checksums of the precompiled binaries.
- Renamed the project from Bake to Toast.
- Improved the performance of tasks that have no input paths and no command.
- Revamped the filesystem watching feature.
- Toast no longer depends on
chown
andmkdir
in the container. - Toast now renders a spinner animation when reading files from the host.
- Toast now requires that caching be disabled for tasks that expose ports or use filesystem watching.
- Fixed a bug that would cause the incorrect ports to be exposed in some situations.
- Added support for filesystem watching.
- Changed the cache key format.
- Added support for port mapping.
- The
--shell
option now applies even when there is a task failure.
- Fixed an issue that caused Toast to not work with Linux distributions which aren't based on GNU.
- Optimized the spinner animation rendering.
- If the first task is a cache hit, Toast no longer pulls the base image.
- Fixed a bug in which Toast would read from cache for tasks that have
cache: false
.
- To match the way Toast runs tasks, the
--shell
feature no longer uses a login shell.
- Fixed a minor bug in the way Toast handles child processes that are killed by signals.
- Fixed a bug that would cause input paths to be read-only to non-root users in the container.
- Added helpful messages to the spinner animation.
- Changed some log formatting to improve visual appeal.
- Improved the performance of tasks which aren't cacheable.
- Toast no longer respects filter files like
.gitignore
. Input paths are taken literally and match the behavior of output paths.
- Fixed a bug where Toast would try to copy an output file to a non-existent directory.
- Fixed a bug in which Toast would incorrectly delete existing local cache entries when local cache writes are disabled.
- Added support for
output_paths
.
- Renamed
paths
toinput_paths
.
- Removed support for fancy word wrapping because it interacted poorly with ANSI color escape sequences.
- Added a spinner animation to entertain the user.
- Added more colors and improved some log messages.
- Fixed some minor issues with signal handling.
- Added this changelog.