Skip to content

VesselStack 0.6.1: accept legacy nautical units on upgrade - #29

Merged
jclima merged 6 commits into
mainfrom
claude/legacy-units-0.6.1
Nov 3, 2026
Merged

jclima merged 6 commits into
mainfrom
claude/legacy-units-0.6.1

Conversation

@jclima

@jclima jclima commented Nov 3, 2026

Copy link
Copy Markdown
Owner

Summary

  • The installer, setup wizard, Control Panel and Boat Chat now read the legacy BOAT_UNITS=nautical as metric (knots and nautical miles are kept in both systems). A real install rewrites vesselstack.env with metric; a dry run only prints a note.
  • Any other unsupported BOAT_UNITS value still fails before any change, now with a message naming the file and the fix. Case and surrounding spaces are tolerated for us_customary and metric.
  • Version bumped to 0.6.1 (VERSION, get-vesselstack.sh, pinned URLs in README and docs); CHANGELOG and README Upgrading section updated.

Root cause

Older web wizards offered "nautical" and installers before 0.5.7 did not validate BOAT_UNITS. The check arrived in 1ecd0a6 (#18), so sudo vesselstackctl update /opt/vesselstack-release/0.6.0 on a 0.5.x boat with BOAT_UNITS=nautical stopped with only BOAT_UNITS must be us_customary or metric. It was safe (nothing mutated) but left the owner stuck.

Test evidence

  • Python unittest discover: 1128 tests OK (17 skipped); new wizard, Control Panel and display_units cases.
  • node tests/test_control_panel_ui.cjs, test-distribution.sh, test-verify-release-tag.sh, check-public-tree.py: pass.
  • ShellCheck 0.9.0 and local: clean on install.sh and tests/test-clean-install.sh.
  • debian:bookworm as root: test-clean-install (new nautical dry-run/real-run and imperial failure-before-mutation cases), test-get-vesselstack, test-lifecycle, test-migrations, test-update-launcher: all pass.
  • Link check: 279 local links, 0 broken.

Owner workaround on 0.6.0

sudo sed -i 's/^BOAT_UNITS=.*/BOAT_UNITS=metric/' /opt/vesselstack/config/vesselstack.env

then re-run the update.

🤖 Generated with Claude Code

jclima and others added 6 commits November 2, 2026 21:59
Older setup wizards offered "nautical" and installers before 0.5.7 did not
validate BOAT_UNITS, so such configs exist. 0.6.0 refused them with an
unhelpful message. Read nautical as metric in the installer, the setup wizard,
the Control Panel and Boat Chat, give other unsupported values a message that
names the file and the fix, and bump the version to 0.6.1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
When the backup folder is under /media or /mnt and the drive is not mounted,
vesselstackctl update/backup and the bootstrap installer now ask, before
anything is stopped, whether to mount the drive from fstab, pick a connected
ext4 or exFAT USB drive, check again, or back up to the system disk once.
Unattended runs still stop with a Refusing line and a To fix line.

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

- Drive list fields are joined with 0x1f so an empty LABEL keeps its column
  (mount -t now gets the right filesystem and device).
- vs_prompt_choice accepts exactly one listed token; "1 2" and "1 b" are
  asked again, and fix_boat_units has no default branch that writes.
- Fresh installs under --yes, --defaults or scripted answers pass
  VESSELSTACK_NONINTERACTIVE=true to install.sh, as updates already did.
- Also: drive list excludes devices fstab assigns elsewhere, an empty list
  prints an unmount hint, the prompt-answers hook needs a private file,
  and the bootstrap cancel message says the update was not started.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- vesselstackctl: the prompt library and every parent folder must be root-controlled;
  a drive mounted from the menu is checked (root-owned top folder, no symlinks or
  foreign-owned folders to the backup folder) before anything is written; uninstall
  removes remediate.sh.
- install.sh: config fixes need a root-controlled folder chain; the answers descriptor
  is owned and closed after a restart; config-derived text is printed through vs_printable.
- remediate.sh: fstab-assigned drives are not offered, empty lists print an unmount hint,
  VESSELSTACK_PROMPT_ANSWERS must be a private file owned by the user.
- README, UPDATING and CHANGELOG updated; 0.6.1 dated 2026-11-02.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jclima
jclima merged commit 8c7c188 into main Nov 3, 2026
7 of 8 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