Skip to content

chore(release): 0.5.1 - #47

Merged
NiKrause merged 1 commit into
mainfrom
release/0.5.1
Aug 16, 2026
Merged

chore(release): 0.5.1#47
NiKrause merged 1 commit into
mainfrom
release/0.5.1

Conversation

@NiKrause

Copy link
Copy Markdown
Contributor

A patch release: nothing here breaks. Credentials registered under 0.5.0 keep working, the derived did:key is unchanged, and no peer has to move in step with another — unlike 0.4.0 and 0.5.0, both of which did.

What is in it

For consumers

One behavioural difference worth naming in your own UI: re-registering under a name used before now adds a passkey instead of replacing one. That is the point — a replaced passkey is data loss, a second entry is a choice — but a picker can now show several, so labels want to be distinguishable.

Three consumer PRs are already open as drafts waiting on this release: simple-todo#198, simple-todo#199, yogasuci#85.

Version choice

0.5.1, not 0.6.0. In this repo's 0.x history the minor slot has been the breaking one — 0.4.0 and 0.5.0 both changed bytes that peers had to agree on, while 0.4.1 and 0.4.2 carried features and fixes as patches. Nothing in this release forces a coordinated upgrade.

Verification

67 node tests pass against the bumped version; prettier clean.

After merge, publishing is a tag push: git tag v0.5.1 && git push origin v0.5.1 runs the full suite in release.yml and publishes via OIDC.

A patch release: nothing here breaks. Credentials registered under 0.5.0 keep
working, the derived did:key is unchanged, and no peer has to move in step
with another.

The headline is the WebAuthn user handle (#45/#46). It was the UTF-8 of
whatever the caller passed as `userId`, so an authenticator — which keeps one
credential per (rp.id, user.id) and replaces it when both match — silently
destroyed the first passkey when a second person on the same device used the
same name, and the DID with it. It is 64 random bytes now; the typed value
stays as `user.name`, the label the picker shows.

Consumers get one behavioural difference worth naming in their own UI:
re-registering under a name used before adds a passkey instead of replacing
one. That is the point, but it means a picker can now show several, so the
labels want to be distinguishable.

Also in this release: the largeBlob keystore actually persists its secret key
(#43), the credential carries the authenticator's own answer on extension
support rather than the browser's guess (#43), and extension detection asks
`getClientCapabilities()` instead of probing a prototype that never had the
properties (#9/#42) — that last one had the encrypted-keystore demo disabling
its headline feature in every browser ever shipped.

67 node tests pass against the bumped version.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@NiKrause
NiKrause merged commit 05712f8 into main Aug 16, 2026
6 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