Home view — RS-Key bcdDevice → release tag lookup:
- Add rs_key_version_from_bcd() lookup table covering 21 known
bcdDevice values from v0.4.0 through v0.4.4, sourced from the
RS-Key CHANGELOG and git tags
- firmware_version_label() shows "RS-Key v0.4.4 (build 0x085B)"
on match, "RS-Key build 0x085B" on unknown value, unchanged
for non-RS-Key firmware
Button styling — convert outline buttons across all views to PFButton:
- slots, audit, backup, attestation, openpgp, piv views: all
action buttons now use PFButton with colors #222225/#2a2a2d/#333336
- action_row signatures changed from btn: Button to btn: impl IntoElement
in backup, attestation, openpgp, piv views
Sidebar — fix device status box clipping regression:
- Wrap nav_sidebar in div().flex_1().min_h(px(0.)).overflow_hidden()
to allow sidebar content to shrink below its intrinsic height now
that nav items grew from 5 to 15 (4 groups)
The GUI for everything the new HAL exposes, plus a reorganised
configuration surface:
- Applet screens: Accounts (OATH, live TOTP), Slots (OTP), PIV and OpenPGP
— ykman / Yubico-Authenticator-parity management, each gated by an
`AppletGate` (CCID off / applet disabled / not supported).
- Management screens: Audit (journal, checkpoint verify, on/off toggle),
Backup, Lock, Attestation and Offboard.
- Sidebar grouped into Device / Credentials / Protection / System sections,
with Offboard moved down to just above About.
- Configuration: an editable Manufacturer field; the effective LED pin /
driver and touch timeout shown as placeholders instead of a bare
"firmware default"; a single Apply that writes every changed domain in
one ceremony; Hardware Endpoints trimmed to the interfaces the firmware
actually builds (CCID/HID/KB); the LED-driver list without ESP32 on
RS-Key.
- Home surfaces the real firmware version, manufacturer, storage and the
effective LED / timeout values.
Host-side protocol layer for the full RS-Key applet and management
surface, each codec written against the current firmware's wire contract:
- CCID foundation: ISO-7816 APDU + BER-TLV codecs (`apdu/`), a persistent
`CcidSession` with 61xx/6Cxx assembly and CLA-chaining
(`transport/ccid.rs`), and a firmware-agnostic `AppletProfile`
(`firmwares/applets.rs`) so support gating is per-firmware, not baked in.
- Applet clients (`applets/`): OATH (YKOATH), OTP (YubiKey slots), PIV,
OpenPGP. OATH LIST / CALCULATE ALL page via SEND REMAINING (0xA5), not
ISO GET RESPONSE; PIV CHANGE REFERENCE sends the 8-byte-padded block and
supports the ykman `--protect` PIN-fetched management key (`MgmAuth`);
OTP pads the HMAC challenge to a 64-byte frame and threads a slot access
code through delete/swap.
- FIDO vendor management (`fido/{audit,backup}.rs`, `offboard.rs`): the
tamper-evident audit journal (read / verify / enable-disable via
`VENDOR_AUDIT_CONFIG`), seed backup, soft-lock, enterprise attestation
and offboard, over the CTAPHID 0x41 channel.
- Config over FIDO/rescue: the runtime manufacturer string (phy tag 0x0F),
the boot-effective LED pin/driver + touch timeout the device reports in
CONFIG_READ key 2, a single write orchestrator (`write_all_config`), and
treating an absent USB_ENABLED mask as all-enabled.
- Update nixpkgs channel from nixos-25.11 to nixos-26.05
- Bump actions/checkout from v6 to v7
- Bump cachix/cachix-action from v16 to v17
- Bump gepbird/nix-update-action from v2.1.1 to v3.1.0
- Remove schedule trigger from binary-cache workflow to avoid redundant builds (push to main already triggers the same cache)