chore(release): v1.4.0 - #83
Merged
Merged
Conversation
Idle motor power-down with a re-zero wizard (#81, #82). The steppers no longer sit at holding current around the clock: after a configurable idle period, default 1 hour, the daemon de-energizes them. The half that makes it safe rather than dangerous ships with it. This machine has no limit switches and FluidNC has no encoder feedback, so freeing the gantry also loses the work origin while the controller goes on reporting the old coordinates. The daemon now marks the position untrusted the moment the motors drop, stops persisting it, writes `trusted: false` into the state file so a restart cannot reinstate it, and refuses Plot and Go to home for every connected client. A wizard walks the operator back to the paper's corner. Minor, not patch: new behaviour on a machine that previously never powered its motors down, a new shared setting, and a new field in the gateway snapshot. Nothing breaks on upgrade — a state file written by an older daemon carries no trust flag and is still restored, so no machine loses its remembered home. Hardware verification is still outstanding (see the unchecked ⚙ HARDWARE tasks in openspec/changes/idle-motor-power-down/tasks.md); the change is deliberately not archived until the operator confirms it on the UUNA TEK. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cuts v1.4.0:
CHANGELOG.md[Unreleased]→[1.4.0] - 2026-09-14, andpackage.json/package-lock.jsonbumped 1.3.0 → 1.4.0. No code changes — the lockfile diff is the two versionfields and nothing else.
What's in it
Idle motor power-down with a re-zero wizard (#81, merged as #82). The steppers no longer sit at
holding current around the clock: after a configurable idle period — default 1 hour,
0to never —the daemon sends
$MD. The timer is gated on the existingisPlotting()predicate, so it cannotfire while a plot is streaming, queued, paused, in
Run/Hold, or held at a pen change.The half that makes that safe ships with it. With no limit switches and no encoder feedback,
freeing the gantry also loses the work origin while the controller goes on reporting the old
coordinates. The daemon now marks the position untrusted the moment the motors drop, stops
persisting it, writes
trusted: falseinto the state file so a restart cannot reinstate it as theorigin, and refuses Plot and Go to home for every connected client. A wizard walks the operator
back to the paper's top-left corner.
Why minor, not patch
New behaviour on a machine that previously never powered its motors down, a new shared setting
(
motorIdleMin), and a new field in the gateway snapshot.Nothing breaks on upgrade. A state file written by an older daemon carries no trust flag and is
still restored, so no machine loses its remembered home to the upgrade.
After merge
Tagging
v1.4.0on the merge commit triggers.github/workflows/release.yml, which verifies thetag matches
package.json, builds the arm64.debunder QEMU and attaches it to the Release — theartifact the in-app updater installs.
Still outstanding
Hardware verification of the new feature. The four ⚙ HARDWARE tasks in
openspec/changes/idle-motor-power-down/tasks.mdare unchecked and the OpenSpec change isdeliberately not archived until the operator confirms on the UUNA TEK. Releasing ahead of that is
the normal route here — the Pi gets the build through the in-app updater, which is how it gets
verified at all.
🤖 Generated with Claude Code