diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f652072..6b83110f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Unreleased +## v3.45.0 - 2025-09-15 - Task now includes built-in core utilities to greatly improve compatibility on Windows. This means that your commands that uses `cp`, `mv`, `mkdir` or any diff --git a/internal/version/version.txt b/internal/version/version.txt index 01e4ec9b..ff3ff28f 100644 --- a/internal/version/version.txt +++ b/internal/version/version.txt @@ -1 +1 @@ -3.44.1 +3.45.0 diff --git a/website/src/docs/changelog.md b/website/src/docs/changelog.md index 6bbd2137..e02e3ca0 100644 --- a/website/src/docs/changelog.md +++ b/website/src/docs/changelog.md @@ -5,6 +5,55 @@ outline: deep # Changelog +## v3.45.0 - 2025-09-15 + +- Task now includes built-in core utilities to greatly improve compatibility on + Windows. This means that your commands that uses `cp`, `mv`, `mkdir` or any + other common core utility will now work by default on Windows, without extra + setup. This is something we wanted to address for many many years, and it's + finally being shipped! + [Read our blog post this the topic](https://taskfile.dev/blog/windows-core-utils). + (#197, #2360 by @andreynering). +- :sparkles: Built and deployed a [brand new website](https://taskfile.dev) + using [VitePress](https://vitepress.dev) (#2359, #2369, #2371, #2375, #2378 by + @vmaerten, @andreynering, @pd93). +- Began releasing + [nightly builds](https://github.com/go-task/task/releases/tag/nightly). This + will allow people to test our changes before they are fully released and + without having to install Go to build them (#2358 by @vmaerten). +- Added support for global config files in `$XDG_CONFIG_HOME/task/taskrc.yml` or + `$HOME/.taskrc.yml`. Check out our new + [configuration guide](https://taskfile.dev/docs/reference/config) for more + details (#2247, #2380, #2390, #2391 by @vmaerten, @pd93). +- Added experiments to the taskrc schema to clarify the expected keys and values + (#2235 by @vmaerten). +- Added support for new properties in `.taskrc.yml`: insecure, verbose, + concurrency, remote offline, remote timeout, and remote expiry. :warning: + Note: setting offline via environment variable is no longer supported. (#2389 + by @vmaerten) +- Added a `--nested` flag when outputting tasks using `--list --json`. This will + output tasks in a nested structure when tasks are namespaced (#2415 by @pd93). +- Enhanced support for tasks with wildcards: they are now logged correctly, and + wildcard parameters are fully considered during fingerprinting (#1808, #1795 + by @vmaerten). +- Fixed panic when a variable was declared as an empty hash (`{}`) (#2416, + #2417 by @trulede). + +#### Package API + +- Bumped the minimum version of Go to 1.24 (#2358 by @vmaerten). + +#### Other news + +We recently released our +[official GitHub Action](https://github.com/go-task/setup-task). This is based +on the fantastic work by the Arduino team who created and maintained the +community version. Now that this is officially adopted, fixes/updates should be +more timely. We have already merged a couple of longstanding PRs in our +[first release](https://github.com/go-task/setup-task/releases/tag/v1.0.0) (by +@pd93, @shrink, @trim21 and all the previous contributors to +[arduino/setup-task](https://github.com/arduino/setup-task/)). + ## v3.44.1 - 2025-07-23 - Internal tasks will no longer be shown as suggestions since they cannot be @@ -92,8 +141,8 @@ Reverted the changes made in #2113 and #2186 that affected the - The default taskfile (output when using the `--init` flag) is now an embedded file in the binary instead of being stored in the code (#2112 by @pd93). - Improved the way we report the Task version when using the `--version` flag or - `{{.TASK_VERSION}}` variable. This should now be more - consistent and easier for package maintainers to use (#2131 by @pd93). + `{{.TASK_VERSION}}` variable. This should now be more consistent and easier + for package maintainers to use (#2131 by @pd93). - Fixed a bug where globstar (`**`) matching in `sources` only resolved the first result (#2073, #2075 by @pd93). - Fixed a bug where sorting tasks by "none" would use the default sorting @@ -107,7 +156,7 @@ Reverted the changes made in #2113 and #2186 that affected the - Fix Fish completions when `--global` (`-g`) is given (#2134 by @atusy). - Fixed variables not available when using `defer:` (#1909, #2173 by @vmaerten). -### Package API +#### Package API - The [`Executor`](https://pkg.go.dev/github.com/go-task/task/v3#Executor) now uses the functional options pattern (#2085, #2147, #2148 by @pd93). @@ -164,7 +213,7 @@ Reverted the changes made in #2113 and #2186 that affected the used, all other variables become unavailable in the templating system within the include (#2092 by @vmaerten). -### Package API +#### Package API Unlike our CLI tool, [Task's package API is not currently stable](https://taskfile.dev/reference/package). @@ -500,7 +549,360 @@ stabilize the API in the future. #121 now tracks this piece of work. - The [Remote Taskfiles experiment](https://taskfile.dev/experiments/remote-taskfiles) now prefers remote files over cached ones by default (#1317, #1345 by @pd93). - variable prefix and `^` command prefix (#642, #644, #645). +- Added `--timeout` flag to the + [Remote Taskfiles experiment](https://taskfile.dev/experiments/remote-taskfiles) + (#1317, #1345 by @pd93). +- Fix bug where dynamic `vars:` and `env:` were being executed when they should + actually be skipped by `platforms:` (#1273, #1377 by @andreynering). +- Fix `schema.json` to make `silent` valid in `cmds` that use `for` (#1385, + #1386 by @iainvm). +- Add new `--no-status` flag to skip expensive status checks when running + `task --list --json` (#1348, #1368 by @amancevice). + +## v3.31.0 - 2023-10-07 + +- Enabled the `--yes` flag for the + [Remote Taskfiles experiment](https://taskfile.dev/experiments/remote-taskfiles) + (#1317, #1344 by @pd93). +- Add ability to set `watch: true` in a task to automatically run it in watch + mode (#231, #1361 by @andreynering). +- Fixed a bug on the watch mode where paths that contained `.git` (like + `.github`), for example, were also being ignored (#1356 by @butuzov). +- Fixed a nil pointer error when running a Taskfile with no contents (#1341, + #1342 by @pd93). +- Added a new [exit code](https://taskfile.dev/api/#exit-codes) (107) for when a + Taskfile does not contain a schema version (#1342 by @pd93). +- Increased limit of maximum task calls from 100 to 1000 for now, as some people + have been reaching this limit organically now that we have loops. This check + exists to detect recursive calls, but will be removed in favor of a better + algorithm soon (#1321, #1332). +- Fixed templating on descriptions on `task --list` (#1343 by @blackjid). +- Fixed a bug where precondition errors were incorrectly being printed when task + execution was aborted (#1337, #1338 by @sylv-io). + +## v3.30.1 - 2023-09-14 + +- Fixed a regression where some special variables weren't being set correctly + (#1331, #1334 by @pd93). + +## v3.30.0 - 2023-09-13 + +- Prep work for Remote Taskfiles (#1316 by @pd93). +- Added the + [Remote Taskfiles experiment](https://taskfile.dev/experiments/remote-taskfiles) + as a draft (#1152, #1317 by @pd93). +- Improve performance of content checksumming on `sources:` by replacing md5 + with [XXH3](https://xxhash.com/) which is much faster. This is a soft breaking + change because checksums will be invalidated when upgrading to this release + (#1325 by @ReillyBrogan). + +## v3.29.1 - 2023-08-26 + +- Update to Go 1.21 (bump minimum version to 1.20) (#1302 by @pd93) +- Fix a missing a line break on log when using `--watch` mode (#1285, #1297 by + @FilipSolich). +- Fix `defer` on JSON Schema (#1288 by @calvinmclean and @andreynering). +- Fix bug in usage of special variables like `{{.USER_WORKING_DIR}}` in + combination with `includes` (#1046, #1205, #1250, #1293, #1312, #1274 by + @andarto, #1309 by @andreynering). +- Fix bug on `--status` flag. Running this flag should not have side-effects: it + should not update the checksum on `.task`, only report its status (#1305, + #1307 by @visciang, #1313 by @andreynering). + +## v3.28.0 - 2023-07-24 + +- Added the ability to + [loop over commands and tasks](https://taskfile.dev/usage/#looping-over-values) + using `for` (#82, #1220 by @pd93). +- Fixed variable propagation in multi-level includes (#778, #996, #1256 by + @hudclark). +- Fixed a bug where the `--exit-code` code flag was not returning the correct + exit code when calling commands indirectly (#1266, #1270 by @pd93). +- Fixed a `nil` panic when a dependency was commented out or left empty (#1263 + by @neomantra). + +## v3.27.1 - 2023-06-30 + +- Fix panic when a `.env` directory (not file) is present on current directory + (#1244, #1245 by @pd93). + +## v3.27.0 - 2023-06-29 + +- Allow Taskfiles starting with lowercase characters (#947, #1221 by @pd93). + - e.g. `taskfile.yml`, `taskfile.yaml`, `taskfile.dist.yml` & + `taskfile.dist.yaml` +- Bug fixes were made to the + [npm installation method](https://taskfile.dev/installation/#npm). (#1190, by + @sounisi5011). +- Added the + [gentle force experiment](https://taskfile.dev/experiments/gentle-force) as a + draft (#1200, #1216 by @pd93). +- Added an `--experiments` flag to allow you to see which experiments are + enabled (#1242 by @pd93). +- Added ability to specify which variables are required in a task (#1203, #1204 + by @benc-uk). + +## v3.26.0 - 2023-06-10 + +- Only rewrite checksum files in `.task` if the checksum has changed (#1185, + #1194 by @deviantintegral). +- Added [experiments documentation](https://taskfile.dev/experiments) to the + website (#1198 by @pd93). +- Deprecated `version: 2` schema. This will be removed in the next major release + (#1197, #1198, #1199 by @pd93). +- Added a new `prompt:` prop to set a warning prompt to be shown before running + a potential dangerous task (#100, #1163 by @MaxCheetham, + [Documentation](https://taskfile.dev/usage/#warning-prompts)). +- Added support for single command task syntax. With this change, it's now + possible to declare just `cmd:` in a task, avoiding the more complex + `cmds: []` when you have only a single command for that task (#1130, #1131 by + @timdp). + +## v3.25.0 - 2023-05-22 + +- Support `silent:` when calling another tasks (#680, #1142 by @danquah). +- Improve PowerShell completion script (#1168 by @trim21). +- Add more languages to the website menu and show translation progress + percentage (#1173 by @misitebao). +- Starting on this release, official binaries for FreeBSD will be available to + download (#1068 by @andreynering). +- Fix some errors being unintendedly suppressed (#1134 by @clintmod). +- Fix a nil pointer error when `version` is omitted from a Taskfile (#1148, + #1149 by @pd93). +- Fix duplicate error message when a task does not exists (#1141, #1144 by + @pd93). + +## v3.24.0 - 2023-04-15 + +- Fix Fish shell completion for tasks with aliases (#1113 by @patricksjackson). +- The default branch was renamed from `master` to `main` (#1049, #1048 by + @pd93). +- Fix bug where "up-to-date" logs were not being omitted for silent tasks (#546, + #1107 by @danquah). +- Add `.hg` (Mercurial) to the list of ignored directories when using `--watch` + (#1098 by @misery). +- More improvements to the release tool (#1096 by @pd93). +- Enforce [gofumpt](https://github.com/mvdan/gofumpt) linter (#1099 by @pd93) +- Add `--sort` flag for use with `--list` and `--list-all` (#946, #1105 by + @pd93). +- Task now has [custom exit codes](https://taskfile.dev/api/#exit-codes) + depending on the error (#1114 by @pd93). + +## v3.23.0 - 2023-03-26 + +Task now has an +[official extension for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=task.vscode-task) +contributed by @pd93! :tada: The extension is maintained in a +[new repository](https://github.com/go-task/vscode-task) under the `go-task` +organization. We're looking to gather feedback from the community so please give +it a go and let us know what you think via a +[discussion](https://github.com/go-task/vscode-task/discussions), +[issue](https://github.com/go-task/vscode-task/issues) or on our +[Discord](https://discord.gg/6TY36E39UK)! + +> **NOTE:** The extension _requires_ v3.23.0 to be installed in order to work. + +- The website was integrated with + [Crowdin](https://crowdin.com/project/taskfile) to allow the community to + contribute with translations! [Chinese](https://taskfile.dev/zh-Hans/) is the + first language available (#1057, #1058 by @misitebao). +- Added task location data to the `--json` flag output (#1056 by @pd93) +- Change the name of the file generated by `task --init` from `Taskfile.yaml` to + `Taskfile.yml` (#1062 by @misitebao). +- Added new `splitArgs` template function + (`{{splitArgs "foo bar 'foo bar baz'"}}`) to ensure string is split as + arguments (#1040, #1059 by @dhanusaputra). +- Fix the value of `{{.CHECKSUM}}` variable in status (#1076, #1080 by @pd93). +- Fixed deep copy implementation (#1072 by @pd93) +- Created a tool to assist with releases (#1086 by @pd93). + +## v3.22.0 - 2023-03-10 + +- Add a brand new `--global` (`-g`) flag that will run a Taskfile from your + `$HOME` directory. This is useful to have automation that you can run from + anywhere in your system! + ([Documentation](https://taskfile.dev/usage/#running-a-global-taskfile), #1029 + by @andreynering). +- Add ability to set `error_only: true` on the `group` output mode. This will + instruct Task to only print a command output if it returned with a non-zero + exit code (#664, #1022 by @jaedle). +- Fixed bug where `.task/checksum` file was sometimes not being created when + task also declares a `status:` (#840, #1035 by @harelwa, #1037 by @pd93). +- Refactored and decoupled fingerprinting from the main Task executor (#1039 by + @pd93). +- Fixed deadlock issue when using `run: once` (#715, #1025 by + @theunrepentantgeek). + +## v3.21.0 - 2023-02-22 + +- Added new `TASK_VERSION` special variable (#990, #1014 by @ja1code). +- Fixed a bug where tasks were sometimes incorrectly marked as internal (#1007 + by @pd93). +- Update to Go 1.20 (bump minimum version to 1.19) (#1010 by @pd93) +- Added environment variable `FORCE_COLOR` support to force color output. Useful + for environments without TTY (#1003 by @automation-stack) + +## v3.20.0 - 2023-01-14 + +- Improve behavior and performance of status checking when using the `timestamp` + mode (#976, #977 by @aminya). +- Performance optimizations were made for large Taskfiles (#982 by @pd93). +- Add ability to configure options for the + [`set`](https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html) + and + [`shopt`](https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html) + builtins (#908, #929 by @pd93, + [Documentation](http://taskfile.dev/usage/#set-and-shopt)). +- Add new `platforms:` attribute to `task` and `cmd`, so it's now possible to + choose in which platforms that given task or command will be run on. Possible + values are operating system (GOOS), architecture (GOARCH) or a combination of + the two. Example: `platforms: [linux]`, `platforms: [amd64]` or + `platforms: [linux/amd64]`. Other platforms will be skipped (#978, #980 by + @leaanthony). + +## v3.19.1 - 2022-12-31 + +- Small bug fix: closing `Taskfile.yml` once we're done reading it (#963, #964 + by @HeCorr). +- Fixes a bug in v2 that caused a panic when using a `Taskfile_{{OS}}.yml` file + (#961, #971 by @pd93). +- Fixed a bug where watch intervals set in the Taskfile were not being respected + (#969, #970 by @pd93) +- Add `--json` flag (alias `-j`) with the intent to improve support for code + editors and add room to other possible integrations. This is basic for now, + but we plan to add more info in the near future (#936 by @davidalpert, #764). + +## v3.19.0 - 2022-12-05 + +- Installation via npm now supports [pnpm](https://pnpm.io/) as well + ([go-task/go-npm#2](https://github.com/go-task/go-npm/issues/2), + [go-task/go-npm#3](https://github.com/go-task/go-npm/pull/3)). +- It's now possible to run Taskfiles from subdirectories! A new + `USER_WORKING_DIR` special variable was added to add even more flexibility for + monorepos (#289, #920). +- Add task-level `dotenv` support (#389, #904). +- It's now possible to use global level variables on `includes` (#942, #943). +- The website got a brand new + [translation to Chinese](https://task-zh.readthedocs.io/zh_CN/latest/) by + [@DeronW](https://github.com/DeronW). Thanks! + +## v3.18.0 - 2022-11-12 + +- Show aliases on `task --list --silent` (`task --ls`). This means that aliases + will be completed by the completion scripts (#919). +- Tasks in the root Taskfile will now be displayed first in + `--list`/`--list-all` output (#806, #890). +- It's now possible to call a `default` task in an included Taskfile by using + just the namespace. For example: `docs:default` is now automatically aliased + to `docs` (#661, #815). + +## v3.17.0 - 2022-10-14 + +- Add a "Did you mean ...?" suggestion when a task does not exits another one + with a similar name is found (#867, #880). +- Now YAML parse errors will print which Taskfile failed to parse (#885, #887). +- Add ability to set `aliases` for tasks and namespaces (#268, #340, #879). +- Improvements to Fish shell completion (#897). +- Added ability to set a different watch interval by setting `interval: '500ms'` + or using the `--interval=500ms` flag (#813, #865). +- Add colored output to `--list`, `--list-all` and `--summary` flags (#845, + #874). +- Fix unexpected behavior where `label:` was being shown instead of the task + name on `--list` (#603, #877). + +## v3.16.0 - 2022-09-29 + +- Add `npm` as new installation method: `npm i -g @go-task/cli` (#870, #871, + [npm package](https://www.npmjs.com/package/@go-task/cli)). +- Add support to marking tasks and includes as internal, which will hide them + from `--list` and `--list-all` (#818). + +## v3.15.2 - 2022-09-08 + +- Fix error when using variable in `env:` introduced in the previous release + (#858, #866). +- Fix handling of `CLI_ARGS` (`--`) in Bash completion (#863). +- On zsh completion, add ability to replace `--list-all` with `--list` as + already possible on the Bash completion (#861). + +## v3.15.0 - 2022-09-03 + +- Add new special variables `ROOT_DIR` and `TASKFILE_DIR`. This was a highly + requested feature (#215, #857, + [Documentation](https://taskfile.dev/api/#special-variables)). +- Follow symlinks on `sources` (#826, #831). +- Improvements and fixes to Bash completion (#835, #844). + +## v3.14.1 - 2022-08-03 + +- Always resolve relative include paths relative to the including Taskfile + (#822, #823). +- Fix ZSH and PowerShell completions to consider all tasks instead of just the + public ones (those with descriptions) (#803). + +## v3.14.0 - 2022-07-08 + +- Add ability to override the `.task` directory location with the + `TASK_TEMP_DIR` environment variable. +- Allow to override Task colors using environment variables: `TASK_COLOR_RESET`, + `TASK_COLOR_BLUE`, `TASK_COLOR_GREEN`, `TASK_COLOR_CYAN`, `TASK_COLOR_YELLOW`, + `TASK_COLOR_MAGENTA` and `TASK_COLOR_RED` (#568, #792). +- Fixed bug when using the `output: group` mode where STDOUT and STDERR were + being print in separated blocks instead of in the right order (#779). +- Starting on this release, ARM architecture binaries are been released to Snap + as well (#795). +- i386 binaries won't be available anymore on Snap because Ubuntu removed the + support for this architecture. +- Upgrade mvdan.cc/sh, which fixes a bug with associative arrays (#785, + [mvdan/sh#884](https://github.com/mvdan/sh/issues/884), + [mvdan/sh#893](https://github.com/mvdan/sh/pull/893)). + +## v3.13.0 - 2022-06-13 + +- Added `-n` as an alias to `--dry` (#776, #777). +- Fix behavior of interrupt (SIGINT, SIGTERM) signals. Task will now give time + for the processes running to do cleanup work (#458, #479, #728, #769). +- Add new `--exit-code` (`-x`) flag that will pass-through the exit form the + command being ran (#755). + +## v3.12.1 - 2022-05-10 + +- Fixed bug where, on Windows, variables were ending with `\r` because we were + only removing the final `\n` but not `\r\n` (#717). + +## v3.12.0 - 2022-03-31 + +- The `--list` and `--list-all` flags can now be combined with the `--silent` + flag to print the task names only, without their description (#691). +- Added support for multi-level inclusion of Taskfiles. This means that included + Taskfiles can also include other Taskfiles. Before this was limited to one + level (#390, #623, #656). +- Add ability to specify vars when including a Taskfile. + [Check out the documentation](https://taskfile.dev/#/usage?id=vars-of-included-taskfiles) + for more information (#677). + +## v3.11.0 - 2022-02-19 + +- Task now supports printing begin and end messages when using the `group` + output mode, useful for grouping tasks in CI systems. + [Check out the documentation](http://taskfile.dev/#/usage?id=output-syntax) + for more information (#647, #651). +- Add `Taskfile.dist.yml` and `Taskfile.dist.yaml` to the supported file name + list. + [Check out the documentation](https://taskfile.dev/#/usage?id=supported-file-names) + for more information (#498, #666). + +## v3.10.0 - 2022-01-04 + +- A new `--list-all` (alias `-a`) flag is now available. It's similar to the + exiting `--list` (`-l`) but prints all tasks, even those without a description + (#383, #401). +- It's now possible to schedule cleanup commands to run once a task finishes + with the `defer:` keyword + ([Documentation](https://taskfile.dev/#/usage?id=doing-task-cleanup-with-defer), + #475, #626). +- Remove long deprecated and undocumented `$` variable prefix and `^` command + prefix (#642, #644, #645). - Add support for `.yaml` extension (as an alternative to `.yml`). This was requested multiple times throughout the years. Enjoy! (#183, #184, #369, #584, #621). @@ -518,8 +920,8 @@ stabilize the API in the future. #121 now tracks this piece of work. - Add logging in verbose mode for when a task starts and finishes (#533, #588). - Fix an issue with preconditions and context errors (#597, #598). -- Quote each `{{.CLI_ARGS}}` argument to prevent one with - spaces to become many (#613). +- Quote each `{{.CLI_ARGS}}` argument to prevent one with spaces to become many + (#613). - Fix nil pointer when `cmd:` was left empty (#612, #614). - Upgrade [mvdan/sh](https://github.com/mvdan/sh) which contains two relevant fixes: @@ -535,8 +937,8 @@ stabilize the API in the future. #121 now tracks this piece of work. ## v3.9.0 - 2021-10-02 - A new `shellQuote` function was added to the template system - (`{{shellQuote "a string"}}`) to ensure a string is safe - for use in shell ([mvdan/sh#727](https://github.com/mvdan/sh/pull/727), + (`{{shellQuote "a string"}}`) to ensure a string is safe for use in shell + ([mvdan/sh#727](https://github.com/mvdan/sh/pull/727), [mvdan/sh#737](https://github.com/mvdan/sh/pull/737), [Documentation](https://pkg.go.dev/mvdan.cc/sh/v3@v3.4.0/syntax#Quote)) - In this version [mvdan.cc/sh](https://github.com/mvdan/sh) was upgraded with