Repository navigation
bb 0.13.4
Beebeeb CLI 0.13.4 — bb account update --email no longer sends your password
This is a one-fix release. In 0.13.3 and earlier, running bb account update --email on a normal
(OPAQUE) account sent your account password to the server, in the body of a request, even though the
email change then failed. 0.13.4 never does. Changing your email from the CLI still does not work for
these accounts; you do it in the web app. Since v0.13.3 two pull requests landed on main:
#80 (the fix) and #79 (the Scoop manifest bump for 0.13.3, which does not touch the
binary).
What's New
Nothing. There are no new commands, flags or changed defaults in this release.
Bug Fixes / Hardening
bb account update --emailno longer sends your password to the server on an OPAQUE account.
Most accounts are OPAQUE accounts: the server is built so that it never receives the password.
bb account update --emailasked for your password and proved it over OPAQUE (that part has been
correct since 0.13.3 and sends no password). It then always went on to call the old email-change
endpoint,PUT /api/v1/auth/account/email, with your plaintext password in the request body. For an
OPAQUE account that endpoint refuses the change, so you saw an error and nothing happened, but the
server had already been sent the password. This is what 0.13.3 and earlier did: the 0.13.3 release
notes saidbb account update"still sends your password to the email-change endpoint itself", and
that was true for every account, including OPAQUE ones. 0.13.4 stops after the OPAQUE check, which
happens on your computer, makes no request to the old endpoint, and prints this instead:
"Changing the email on an OPAQUE account is not yet supported from the CLI (the server does not
expose the key material the re-registration needs). Use the web app for now. Your email was not
changed." The command exits 1. (#80, task 1907)- The email change itself still has to be done in the web app. The CLI cannot do it for an OPAQUE
account yet, as before. - Accounts without an OPAQUE credential behave as before. The server tells
bbwhich kind of
account you have while it checks your password; only an account with no OPAQUE credential still uses
the old plaintext endpoint, because that is the only way it can change its email. - If you ran
bb account update --emailwith 0.13.3 or earlier, the password you typed was sent
to the Beebeeb server over TLS in a request body that the server rejected. This release fixes the
client; it cannot undo a request already made. If you want to be certain, change your password in
the web app. - This release is the client half. The server-side change that makes the old endpoint refuse an
OPAQUE account before it reads a password is a separate change and is not part of this release; the
fix here does not depend on it.
- The email change itself still has to be done in the web app. The CLI cannot do it for an OPAQUE
Verification
Code under test: a3bf683 (cli main, after #80) plus 92f7f05 (the Scoop manifest, no code). The
release commit on top of them only changes the version to 0.13.4, Cargo.lock (that one line), this
file, and the changelog.
This release is built and published from a maintainer's machine, the same way as 0.13.3, not by the
GitHub Actions release workflow. Artifacts and checksums use the same names and layout dist
produces, built with dist 0.31.0.
cargo test --locked: 532 passed, 0 failed, 2 ignored across 14 test binaries: main suite (bb)
444,account_email_change2,auth_errors8,ecdh_compat4,mount_availability3,
move_parent7,non_interactive6,onboarding_state9,pull_overwrite5,
pull_path_traversal21,share_resolves_like_pull1,step_up_opaque4,webdav_auth14,
zero_byte_files4. 0.13.3 had 530.cargo clippy --locked --all-targets -- -D warningsclean.cargo fmt -- --checkclean.- The new
account_email_changetests run the realbbbinary under a pseudo-terminal against a mock
API that records every request, with a scratchHOME. The OPAQUE test was run red against the old
behaviour first (it sawPUT /api/v1/auth/account/emailafter the OPAQUE check) and the legacy test
was mutation-checked afterwards. - Run end to end on macOS (arm64, 2026-10-15) against a local API built from server
main
(e9df0587) on a scratch database, with a scratchHOME, for an OPAQUE account signed in with
bb login --headless:bb account update --email <new address>with the correct password prints the
"Use the web app" message above and exits 1. The requests the API saw wereconfirm-opaque-start
andconfirm-opaque-finish, and nothing else: noPUT /api/v1/auth/account/email. The same run with
bb0.13.3 built from its tag showed the extraPUT /api/v1/auth/account/email(answered 400),
so the check can tell the two apart. This was done with both a debug build of this commit and the
releaseaarch64-apple-darwinarchive this release ships, with the same result. - Not verified: the legacy path (an account with no OPAQUE credential still sends its password to
the old endpoint, by necessity) is covered by a test and was not run against a live API. Windows:
thebb.exeis cross-compiled and is not executed on a Windows machine by this release process. The
Linux binaries are cross-compiled and not executed here either. This release has not been run against
production. Please report a problem if you see one.
Install / Update
curl -fsSL https://get.beebeeb.io | sh # macOS / Linux
brew upgrade beebeeb-io/tap/bb # macOS, Homebrew
scoop update bb # Windows, Scoop
macOS and Linux installs (shell installer or Homebrew) self-update on next run via the built-in OTA
updater. Windows installs do not self-update yet: run scoop update bb to get 0.13.4. The Scoop
manifest (scoop/bb.json) is bumped by a follow-up pull request; until that pull request is merged,
scoop update bb still installs 0.13.3.
Full changelog: v0.13.3...v0.13.4