diff --git a/CHANGELOG.md b/CHANGELOG.md
index d3ff3ee6..d044ce29 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,6 @@
# Changelog
-## Unreleased
+## v3.45.4 - 2025-09-17
- Fixed a bug where `cache-expiry` could not be defined in `.taskrc.yml` (#2423
by @vmaerten).
diff --git a/internal/version/version.txt b/internal/version/version.txt
index 77c28ab7..ec62cbc6 100644
--- a/internal/version/version.txt
+++ b/internal/version/version.txt
@@ -1 +1 @@
-3.45.3
+3.45.4
diff --git a/website/src/docs/changelog.md b/website/src/docs/changelog.md
index e6f3a34a..b702f3b9 100644
--- a/website/src/docs/changelog.md
+++ b/website/src/docs/changelog.md
@@ -5,6 +5,15 @@ outline: deep
# Changelog
+## v3.45.4 - 2025-09-17
+
+- Fixed a bug where `cache-expiry` could not be defined in `.taskrc.yml` (#2423
+ by @vmaerten).
+- Fixed a bug where `.taskrc.yml` files in parent folders were not read
+ correctly (#2424 by @vmaerten).
+- Fixed a bug where autocomplete in subfolders did not work with zsh (#2425 by
+ @vmaerten).
+
## v3.45.3 - 2025-09-15
- Task now includes built-in core utilities to greatly improve compatibility on
@@ -145,8 +154,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
@@ -160,7 +169,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).
@@ -217,7 +226,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).
@@ -606,10 +615,9 @@ stabilize the API in the future. #121 now tracks this piece of work.
- 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 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).
@@ -715,10 +723,9 @@ it a go and let us know what you think via a
- 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).
+ (`{{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).
@@ -926,8 +933,8 @@ it a go and let us know what you think via a
- 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:
@@ -943,8 +950,8 @@ it a go and let us know what you think via a
## 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