Skip to content

Prepare VesselStack 0.6.0 - #28

Merged
jclima merged 11 commits into
mainfrom
claude/stack-review-release-bfdf89
Nov 3, 2026
Merged

jclima merged 11 commits into
mainfrom
claude/stack-review-release-bfdf89

Conversation

@jclima

@jclima jclima commented Nov 3, 2026

Copy link
Copy Markdown
Owner

Summary

Final 0.6.0 preparation: installer upgrade safety (preflight before any change, atomic env writes, stale temp cleanup), Boat Chat settings protection and access-code rules, wizard/Control Panel/Boat Chat UX, accessibility and brand polish with dark mode, the docs restructure with pinned install URLs, and a 1Password release-signing guide.

Release blockers fixed

  • The latest-URL install resolving to 0.4.4 (install URLs are now pinned to the release).
  • The broken vesselstackctl update example in the docs.
  • Wizard nautical units refused by the installer.
  • The Boat Chat settings save wiping server configuration.
  • A mid-upgrade env refusal leaving a half-written install.

Test evidence

  • Python: python3 -m unittest discover -s tests -p 'test_*.py' ran 1113 tests, OK (17 skipped).
  • node tests/test_control_panel_ui.cjs: passed.
  • bash -n install.sh scripts/*.sh and shellcheck -S warning install.sh scripts/vesselstackctl: clean.
  • tests/test-distribution.sh: passed. scripts/check-public-tree.py: passed (220 files).
  • Link check: 242 local links in 30 files, 0 broken.
  • Linux shell tests in a debian:bookworm container as root: test-clean-install (including new stale-temp check), test-offline-install, test-lifecycle, test-migrations and test-update-launcher all passed.

Not covered

  • systemd tests.
  • Physical Raspberry Pi acceptance.
  • The release-status line in CHANGELOG is still RELEASE-STATUS-PENDING.

🤖 Generated with Claude Code

jclima and others added 11 commits November 2, 2026 20:12
Installer upgrade safety: every env value (including preserved and generated
secrets) is checked before anything changes, also under --dry-run; env files
are written atomically (0600 temp file, renamed into place); stale temp files
from a killed run are removed.

Boat Chat settings protection: Settings loads before it opens and saves only
changed fields; blanking required settings is rejected with a 400; settings
endpoints require the access code (GET, HEAD and POST accept
X-Boat-Chat-Access-Token); the access code cannot be cleared through the API
unless BOAT_CHAT_ALLOW_OPEN=true.

Wizard, Control Panel and Boat Chat UX updates, with accessibility and brand
polish including dark mode.

Docs restructure, pinned release install URLs, a 1Password release-signing
guide, and README/CHANGELOG coverage of all changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Release tags must be annotated and SSH-signed by the release key in
.github/allowed_signers. scripts/verify-release-tag.sh checks this, the
release workflow fetches the real tag object and runs it before building,
and tests/test-verify-release-tag.sh covers it with throwaway keys in CI.

README, DEVELOPMENT, DEPLOYMENT, CONTROL_PANEL_TESTING and the 0.6.0
CHANGELOG now state the plan: signed tag, pre-release first, Latest after
the maintainer's physical Raspberry Pi install.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…enance

Four tabs (Home, Settings, Updates, Maintenance), a persistent result banner,
in-page confirm dialogs, one Save and Apply bar with inline field errors,
read-only last backup status, token-prefix login, and a Disconnected state
with Retry now. Server validates timezone and numeric ranges.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…preservation

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jclima
jclima merged commit 5d0bfe3 into main Nov 3, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant