v1.20.1
canticle v1.20.1
Highlights
This fixes a command that v1.20.0 shipped in an unusable state. canticle admin set-password, the password-rotation command introduced in v1.20.0, could not be invoked. Running it produced the legacy CLI's usage text and unknown argument --user. If you upgraded to v1.20.0 to rotate a web-UI admin password, that path did not work; it does now.
Why it broke, since the shape is worth knowing. Adding a subcommand required touching four places: the command struct, the dispatch switch, the shell-completion tables, and a hand-maintained list deciding whether input is parsed as a modern subcommand or the legacy flag-only CLI. The first three were done and the fourth was missed, so the command fell through to a parser that knows nothing about its flags. That list is now derived from the command definitions themselves rather than maintained by hand, so a newly added command is recognized the moment it is declared. A test drives every declared subcommand through the real entry point and fails if any is unreachable.
Documentation for resetting a lost admin password. The user guide previously said to rotate the password "from inside the UI". That was never possible, and following it leads to editing MXLRC_WEBAUTH_ADMIN_PASSWORD, which silently does nothing once an admin exists: the service starts healthy, logs a skip, and keeps the old password. That is how an operator ends up locked out believing a credential was rotated. There is now a Changing or resetting the admin password section covering the command, the Docker form, the locked-out case, and why the password is read from standard input rather than passed as a flag.
A third silent no-op, found while verifying the above. The environment bootstrap that creates the first admin only runs when the web UI is enabled. Setting MXLRC_WEBAUTH_ADMIN_USER and MXLRC_WEBAUTH_ADMIN_PASSWORD with web_ui_enabled left at its default produced no admin account, no error, and no explanation. It is now reported at warning level, naming both variables and the setting to change.
What's changed
Fixed
canticle admin set-passwordis reachable. In v1.20.0 it fell through to the legacy argument parser and could not be run at all (#547)- The subcommand-recognition set is derived from the command definitions instead of a hand-maintained list, so a declared command cannot be silently unreachable. A test drives every subcommand through the real entry point (#547)
- Setting the web-admin bootstrap variables while the web UI is disabled now logs a warning naming the setting to change, instead of silently creating no account (#547)
Documentation
- New "Changing or resetting the admin password" section in the user guide, including the locked-out case and the Docker form (#547)
- Removed the instruction to rotate the password from the web UI, which was never possible and sends operators to a setting that does nothing after first run (#547)
- Password examples never place the credential on a command line, where it is visible in the host process list and recorded in shell history. This matches
canticle secrets set, which already rejects a value passed as an argument (#547) - The CLI reference usage synopsis lists every top-level command;
adminandrealignwere both missing (#547)
Upgrading
No configuration changes are required. If you are on v1.20.0 and need to rotate or recover a web-UI admin password, upgrade first, then:
canticle admin set-password --user admin < newpass.txtThis works even when you are locked out, because it acts on the database rather than requiring a login. Existing sessions are revoked as part of the change.