# \[hyperctl\] version 0.23.0 is now available

**URL:** https://hypertexting.community/t/hyperctl-version-0-23-0-is-now-available/109
**Category:** Releases
**Tags:** cli
**Created:** [August 5, 2026, 12:37am UTC](https://hypertexting.community/t/hyperctl-version-0-23-0-is-now-available/109 "2026-08-05T00:37:37Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![calebhailey.com](https://yyz2.discourse-cdn.com/flex036/user_avatar/hypertexting.community/calebhailey.com/32/18_2.png) [@calebhailey.com](https://hypertexting.community/u/calebhailey.com)
#### Post date: [August 5, 2026, 12:37am UTC](https://hypertexting.community/t/hyperctl-version-0-23-0-is-now-available/109/1 "2026-08-05T00:37:37Z")

</div>

**NEW:** `hyperctl` v0.23.0 is a landmark release with redesigned templating directives [template variables](https://hypertemplates.net/docs/reference/core/variables/), and a `hyperctl theme migrate` command to help with migrating legacy directives.

- Added [new `ht-each` directive](https://hypertemplates.net/docs/reference/core/directives/ht-each/) with [`ht-each='item in ${ variable }'` syntax](https://hypertemplates.net/docs/reference/core/directives/ht-each/#directive-syntax).
- Added [`hyperctl theme migrate` command](https://hypertemplates.net/docs/reference/cli/commands/theme/migrate/) with idempotent migration of legacy directives.
- **BREAKING:** changed the [temlpate variable function invocation syntax](https://hypertemplates.net/docs/reference/core/variables/#template-variable-functions) to use parenthetical argument lists.
- **BREAKING:** changed the [CSS template variable syntax](https://hypertemplates.net/docs/reference/core/variables/#template-variable-syntax) from `--ht-value(...)` to `--ht-var(...)`.
- **BREAKING:** changed [`ht-pipe`](https://hypertemplates.net/docs/reference/core/directives/ht-pipe/) directive to pull-based `ht-pipe='from "selector"'` expressions.  
_NOTE: `ht-pipe` directives now deduplicate piped contents!_
- **BREAKING:** removed the `ht-template` in favor of the [`ht-each`](https://hypertemplates.net/docs/reference/core/directives/ht-each/) directive.
- **BREAKING:** removed the `ht-not` directive in favor of a [more expressive `ht-if` directive](https://hypertemplates.net/docs/reference/core/directives/ht-if/#directive-syntax).
- **BREAKING:** removed the `ht-content` directive in favor of using [`ht-apply`](https://hypertemplates.net/docs/reference/core/directives/ht-apply/) for content templating.
- **BREAKING:** removed the `ht-attr` directive in favor of using [`ht-apply`](https://hypertemplates.net/docs/reference/core/directives/ht-apply/) for attribute templating;  
_NOTE: `ht-attrs` (plural) is still supported, but only for [attribute maps](https://hypertemplates.net/docs/reference/core/directives/ht-attrs/#attribute-maps)._
- **BREAKING:** removed the `ht-query` directive in favor of using [`ht-apply`](https://hypertemplates.net/docs/reference/core/directives/ht-apply/) for URL attribute [string interpolation](https://hypertemplates.net/docs/reference/core/variables/#string-interpolation).
- **BREAKING:** removed the `ht-param` directive in favor of using [`ht-apply`](https://hypertemplates.net/docs/reference/core/directives/ht-apply/) with template variables for [string interpolation](https://hypertemplates.net/docs/reference/core/variables/#string-interpolation).

Please visit the [CHANGELOG](https://hypertemplates.net/changelog/) for a complete list of improvements.

---

<div class="post-metadata">

### Author: ![calebhailey.com](https://yyz2.discourse-cdn.com/flex036/user_avatar/hypertexting.community/calebhailey.com/32/18_2.png) [@calebhailey.com](https://hypertexting.community/u/calebhailey.com)
#### Post date: [August 5, 2026, 12:39am UTC](https://hypertexting.community/t/hyperctl-version-0-23-0-is-now-available/109/2 "2026-08-05T00:39:09Z")

</div>

Heh, it just occurred to me that I never posted the v0.21.0 and v0.22.0 releases which improved the secrets management and deployment provider implementations in `hyperctl`. But I would skip those and go straight to v0.23.0 at this point! 🚀
