feat(installer): restart only the service units whose version changed - #48
Open
Developer-Simon wants to merge 15 commits into
Open
Developer-Simon wants to merge 15 commits into
Developer-Simon wants to merge 15 commits into
Conversation
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ary changed Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ce steps Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ll switch Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
find on a directory that does not exist yet (a checkout that has never built a wheel locally before) fails; under set -e and pipefail that silently kills make_bundle.sh at the cached=$(find ...) assignment with no error message, because the one message that would explain it is thrown away by 2>/dev/null. Pre-existing bug, unrelated to the restart- services work on this branch; found while building a bundle from this worktree to test that work on a Pi. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Two lines in resolve.go's repo-build path and two in package.go's upload/verify path were passed as raw German literals to the plain log channel instead of a translation key on the note channel, so they showed up untranslated during an English-language run (mixed in among otherwise correctly localized lines like "Detecting the device's processor architecture"). Give them catalog keys, following the existing package.log.* pattern (package.log.extract, .repo_build, .upload, .verify), and route them through note()/notef() instead of log()/logf(). The raw log() call that streams make_bundle.sh's own stdout is left untouched -- that is genuine subprocess output, not installer UI text, and cannot be a catalog key. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Preparing the package (fetching/building it, transferring it to the device) ran under the "connect" station in the step chain, so the operator saw "Connection" stay highlighted while a repo build or upload was actually in progress. Add "prepare" to both FLOW tables, right after "connect", and drop the special-case mapping that pointed the active station back at "connect" while on the prepare screen. It only appears when the screen will actually be visited: bootstrap.package (the installer's own package selection, shown after connect) or bootstrap.auto_prepare (the dashboard fetching its package by itself, shown as the very first screen, connect skipped). Neither existing test fixture sets either flag, so the five/three-station tests are unaffected; new tests cover both the installer and dashboard cases where prepare does show. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…g text The label text sat inside the .settings-toggle element, which is sized to fit only the switch itself (2.35rem x 1.32rem, per installer.css) -- the text wrapped inside that fixed box and overlapped the restart list above it and the "stays as is" text below. Every other .settings-toggle in this codebase (screen-configure.html's service rows) keeps the label text as a sibling span outside the switch's own <label>; do the same here, in a small flex row (.restart-all). The new rule lives outside the "Aktualisieren" Vorlage block in screens.css (draft-fidelity.test.mjs holds that block to the design draft byte for byte) -- it did not exist in the original draft. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The reference drafts (test/reference/*.body.html, the design-fidelity
spec for test/e2e/layout.spec.mjs) still had the old five/four-station
steppers, so CI's browser suite failed once the product started
rendering a real "Vorbereitung" station: Main, Vorpruefung,
Konfiguration, Ausfuehrung, Ergebnis and Aktualisieren all gain it
between Verbindung and the next station, done once past it, renumbering
every station after it. redeploy.spec.mjs's own hardcoded stepper-label
assertion needed the same update.
Per test/reference/README.md ("change a draft here first, in its own
commit, then make the product follow"); the product side already
shipped in feat(webui): give the prepare step its own stepper entry, so
this closes the gap the other way round.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This branch has not been deployed
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.
Squash-merge commit message
Summary
Checklist
(
type(scope): summary) and matches the style ingit log.CONTRIBUTING.md → Running the checks
pass locally (Python bridges, HA integration, Go dashboard, dashboard JS,
dashboard smoke test — whichever the change touches).
./scripts/deploy/check_tracked_secrets.shis clean — no realcredentials, private-range IPs, or device serials.
AI-DISCLAIMER.md.