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.
No-op release.
- When a task fails due to
output_paths
not existing in the container, the--shell
flag is no longer ignored.
- Toast supports a new platform: Windows on AArch64.
- Toast supports a new platform: musl Linux on AArch64.
- Toast supports a new platform: GNU Linux on AArch64.
- Toast supports a new platform: macOS on Apple silicon.
- Fixed a bug in
--force-image-pull
which would cause the flag to have no effect if the first task in the schedule is available in the local or remote cache. Also, the flag has been renamed to--force-all
.
- Added support for
--force-image-pull
(thanks to @raennor).
- 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.