Commit Graph
343 Commits
Author SHA1 Message Date
Suyog Tandel 58b3a480f7 feat: update flathub metainfo and increment app ver to 0.7.1 v0.7.1 2026-07-19 23:56:47 +05:30
Suyog TandelandGitHub d8c012d536 Merge pull request #104 from librekeys/spec-sync/0.7.0-2
chore: sync spec to 0.7.0-2
2026-07-19 23:30:10 +05:30
Suyog Tandel a683307991 Automatic commit of package [picoforge] release [0.7.0-2].
Created by command:

/usr/bin/tito tag --offline --accept-auto-changelog --keep-version
picoforge-0.7.0-2
2026-07-19 17:51:24 +00:00
Suyog Tandel 22feb92bdd chore: sync spec to 0.7.0-2 [skip ci] 2026-07-19 17:51:24 +00:00
Suyog Tandel afb316e41b feat: add wiki button in about screen and update application description v0.7.0 2026-07-19 22:36:24 +05:30
Suyog Tandel dfc11b5770 merge:PR 103 that adds RS-Key firmware support and fixes bugs 2026-07-19 22:14:10 +05:30
Maxim Muravev 6cc2a64645 fmt: Run cargo fmt 2026-07-19 18:52:39 +03:00
Maxim Muravev a8ab4b7c09 feat(ui): auto-detect device hot-plug and refresh live
A ~1s background watcher on DeviceRepo samples a cheap FIDO HID presence
fingerprint (vid:pid:serial, by enumeration only — it never opens the
device, so it can't contend with an in-flight read or write) and triggers
a refresh whenever the key is plugged, unplugged or swapped. Every screen
then reflects the current device without the manual Refresh button. The
watcher skips a tick while a refresh/write is in flight and stops cleanly
when the repo is dropped.
2026-07-19 18:35:58 +03:00
Maxim Muravev 1f7a6b0d92 fix: correctly read and write RS-Key device configuration
Several Configuration-screen fields were blank, wrong, or silently
overwrote a working device on save when talking to RS-Key firmware:

- CONFIG_READ over CTAPHID 0x41 answers with a CBOR `{1: blob}` map, but
  the client fed the raw CBOR bytes downstream. The PHY read only worked
  by accident for records under 24 bytes and broke once a product name
  pushed it over; the LED read never worked. Decode the map and return
  the inner record.
- Parse the LED status block at the correct stride ((len-1)/4) in one
  shared helper, fixing the CCID path that read a 17-byte block as a
  legacy 9-byte one (colour shown as the effect id).
- Read hardware LED (GPIO/brightness/driver) and touch-timeout as
  optionals: an absent phy tag now means "firmware default" (blank
  field) and is not written back, so a virgin phy is no longer clobbered
  with GPIO=0 / driver=Pico / brightness=0 on the next Apply. A value is
  written only when the user sets one.
- Hide the "Supported Curves" card for RS-Key: its firmware ignores the
  phy ENABLED_CURVES tag (curve support is compile-time), so the toggles
  were a no-op that also wrote a meaningless tag on save.
- Preserve each status' LED effect/speed on a colour write (read-modify-
  write), reject over-long product names, read the enabled USB apps over
  the 0xC2 vendor command, and fall back to the USB product string when
  the phy record carries no product override.
2026-07-19 18:35:57 +03:00
Maxim Muravev e5b2219679 fix(hal): open the FIDO HID non-exclusively on macOS
macOS holds FIDO-usage-page (0xF1D0) HID devices exclusively, so hidapi's
default open fails with 0xE00002C5 ("exclusive access and device already
open") and the entire FIDO transport is unreachable. GetInfo, the VID/PID
seed and hardware-config-over-FIDO then silently fall back to rescue-only,
leaving the Configuration screen blank on an otherwise healthy key.

Enable hidapi's `macos-shared-device` feature so opens go through
hid_darwin_set_open_exclusive(0). No-op on Linux/Windows; hidapi 2.6
explicitly allows several concurrent HidApi contexts.
2026-07-19 18:33:39 +03:00
Suyog Tandel fd0752b152 chore: make UI more responsive and more wide 2026-07-19 16:44:43 +05:30
Suyog TandelandGitHub ef51114758 Merge pull request #101 from librekeys/build/update-nix-package
build(package.nix): update
2026-07-12 16:16:12 +05:30
github-actions[bot] 6faa63f00b picoforge: 0.5.0+1 -> 0.6.0
Diff: https://github.com/librekeys/picoforge/compare/v0.5.0+1...v0.6.0

Changelog: https://github.com/librekeys/picoforge/releases/tag/v0.6.0
2026-07-12 03:20:34 +00:00
Suyog Tandel 0e9ca1a8c3 chore: automate spec sync via PRs and update release workflow 2026-07-10 19:47:15 +05:30
Suyog Tandel f72c5fc45d fix(ci): security audit issues 2026-07-09 23:18:45 +05:30
Suyog Tandel e8f379a248 fix(ci): add write perms to code CI workflow for security audit step 2026-07-09 22:51:24 +05:30
Suyog Tandel 86dfa606aa chore: rename local variables across UI module for readability
- dialog.rs: pin entity/text bindings (current/new/confirm)
- config/view_model.rs: entity→weak_self, parsed_gpio/driver_value, new_* form fields
- config/view.rs: fido_no_rskey→is_fido_no_rskey
- passkeys/view_model.rs: entity→weak_self, new→new_pin_value, s→submit_clone/status_content
- passkeys/view.rs: ep_set→enterprise_attestation_set
- home/view.rs: rk→resident_keys_supported, ep_set→enterprise_attestation_set
- sidebar.rs: t→padding_anim_t
- ci.yml: fix audit-check short SHA→full SHA
2026-07-09 22:42:53 +05:30
Suyog Tandel c24999d3a4 refactor(hal): rename variables for clarity and extract format_firmware_version helper
- fido/mod.rs: extract format_firmware_version, rename v→entry, s→error_text,
  val→field_data in TLV parsers
- fido/ops.rs: rename auth_x/y→auth_point_x/y, rng→system_rng, err_str→error_string
- rescue/ops.rs: rename rx_*→*_response, rdr→cursor, i→offset, val→field_data,
  opts_val→options_raw, curves_val→raw_curves_value
- rescue/constants.rs: rename val→tag_value/color_value in from_u8 methods
- transport/fido.rs: rename drain_buf→stale_packet_buffer, buf→packet_buf,
  start_time→deadline_start, status→keepalive_status/ctap_status_byte
- firmwares/mod.rs: rename fw_type→firmware_variant, ver→firmware_version
2026-07-09 21:48:12 +05:30
Suyog Tandel a43f840a1a fix(ci): codeql build failure and securiy audit node 20 deprecation 2026-07-09 20:56:28 +05:30
Suyog Tandel fa96a849f6 fix(ci): docs workflow deps step missing 2026-07-09 20:45:31 +05:30
Suyog Tandel 2707ff6602 fix: codebase formatting 2026-07-09 20:34:13 +05:30
Suyog Tandel c272e148da fix: replace manual and_then/filter pattern with Option::filter
Fixes clippy::manual_filter lint on Rust 1.97 (CI), while
keeping compatibility with 1.96 (local).
2026-07-09 20:29:12 +05:30
Suyog Tandel 8a769bc169 ci: replace Nix with rust-toolchain, add audit-check and CodeQL jobs
- Switch `checks` and docs jobs from Nix to dtolnay/rust-toolchain +
  Swatinem/rust-cache + apt system deps for faster setup
- Add dependency vulnerability scanning via rustsec/audit-check@v2.0.0
- Add CodeQL static analysis via github/codeql-action@v4 (manual build)
2026-07-09 20:22:32 +05:30
Suyog Tandel 5121bb011d feat: RS-Key curve selection card, transport priority fix, RescueCurves re-export
- Reversed transport priority: PCSC/Rescue preferred over FIDO
- Added `RescueCurves` bitflags re-export to `hal/types.rs`
- Replaced single secp256k1 toggle with full "Supported Curves" card
  (11 curves) gated on RS-Key, with mask-building in apply_changes
- Updated FIDO/Rescue write status messages to match transport behavior
- Cleaned up device status display (green "Online" for RS-Key)

Changes: src/ui/screens/config/view.rs, view_model.rs, hal/io.rs, hal/transport/mod.rs, hal/types.rs.
2026-07-09 00:04:38 +05:30
Suyog TandelandGitHub 8ad80adbc3 Merge pull request #100 from librekeys/feat/rskey-0.3.1-support
feat: RSKey v0.3.x support and refactor hal module
2026-07-08 23:07:53 +05:30