-
v0.3.0
Stablereleased this
2026-09-08 22:16:10 +10:00 | 44 commits to main since this releaseAdded
- [breaking] a project declares the deployment credentials it needs, and no surface ever shows one
- (ui) the console runs a command, and /admin/commands describes every one
- (ui) the console browses a projector's rows, and a row links back to the events that built it
- [breaking] an on latest arm runs once per key per batch, and its invocation records the range it folded
Fixed
- (ui) the declarations table keeps its columns, a long effect error clips, and a count reads singular at one
Other
- two private items are named rather than linked, so rustdoc denies nothing
- (projector) a completed rebuild logs how long it took
Added
- a project declares the deployment credentials it needs with
secret NAME, and hekla resolves each
from[secrets]inhekla.toml({ env = "..." }or{ file = "..." }) or from
HEKLA_SECRET_<NAME>.hekla serverefuses to start when a required one is unset, naming every
missing one at once hekla secretsreports every declared credential, where this machine reads it from, and a short
fingerprint, and exits non-zero when a required one is unset, so it works as a pre-deploy gatehekla planreports the same, always present in--json, and--replaycounts invocations it
could not replay because an effect reads a credential this machine has not set/admin/systemand/admin/schemalist the declared credentials beside the keystore: a name, a
source and a fingerprint, never a valuehekla checkwarns about a declared credential nothing reads, and about a[secrets]entry naming
no declaration. It never reads the environment, so it stays a CI gate- an
on latestarm runs once per key per dispatch batch, at the newest matching position in it,
and the surviving invocation records the range it folded /admin/effects/{name}reportslatest_collapsed, the positions folded into another invocation
since this process started
Changed
- [breaking] an effect arm declaring
on latestloads and runs, where the previous release
refused it at load rather than running it ason - an effect's in-flight cap counts units of work rather than positions, so a lane's whole backlog
collapses to one invocation however long it is - schema v9 adds
effect_invocation.collapsed_from; rows written before it read back as null, which
is the same answer as an invocation that folded nothing - a transport failure's message now names a credential rather than spelling it.
ureqwrites the url
it was given into its own error text, and hekla concatenates that onto the wedge message, so a
webhook whose whole address is the credential used to reach/status,/adminand the logs on the
first DNS failure - heklang 0.5.0
Downloads
-
Source code (ZIP)
3 downloads
-
Source code (TAR.GZ)
2 downloads