Commit Graph
324 Commits
Author SHA1 Message Date
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
Suyog Tandel 20c56d947d docs: add module/item docs across all 43 source files and enable #![deny(missing_docs)]
- Add //! module-level headers and /// item-level docs to every source file
- Fix unresolved doc links in hal/mod.rs, ui/mod.rs, transport/pcsc.rs, transport/fido.rs
- Add #![deny(missing_docs)] at crate root to enforce doc completeness in CI
2026-07-08 22:57:20 +05:30
Suyog Tandel 423b5ae470 refactor(hal): extract transport layer and split rescue/fido ops
- Move HidTransport from hal/fido/hid.rs to hal/transport/fido.rs
- Add PcscTransport in hal/transport/pcsc.rs for CCID communication
- Refactor DeviceHandle::Rescue to hold PcscTransport instead of bare FirmwareType
- Split monolithic rescue/mod.rs into high-level interface and ops.rs with APDU logic
- Rename hal/fido/hid.rs → hal/fido/ops.rs (FidoOperations), depend on transport::fido
- Update FIDO config-write capability checks with more specific trait methods
- Fix all import paths in hal/io.rs and ui/models/device.rs
2026-07-08 22:20:35 +05:30
Suyog Tandel c76b059ae6 feat(hal): introduce RS-Key(0.3.x) support and FirmwareTrait architecture
This commit significantly refactors the HAL layer to introduce proper support for the RS-Key firmware and abstraction across different hardware profiles
  (PicoFido, RSKey, LkOne).

    Key changes include:
    - **Firmware Abstraction**: Added `FirmwareTrait` and `AnyFirmware` in `src/hal/firmwares/mod.rs` with specific implementations for `PicoFidoFirmware` and
  `RSKeyFirmware` to decouple hardware-specific logic from the high-level `io.rs` layer.
    - **RS-Key FIDO Support**: Implemented RS-Key payload logic in `src/hal/fido/mod.rs` to support reading/writing LED configuration and DEV_CONF directly over
  the CTAPHID FIDO transport using TLV and custom command targets.
    - **Constants Cleanup**: Stripped out and consolidated 200+ lines of raw CTAP2 constants and vendor opcodes from `src/hal/fido/constants.rs` to clean up the
  module.
    - **UI & PIN Dialogs**: Updated `src/ui/screens/config/view_model.rs` to route `DeviceMethod` correctly when applying configurations. Added
  `StatusDialogHandle` integration to prompt the user for their FIDO PIN and instruct them to "Please touch your device if it flashes" when performing hardware
  config writes over FIDO.
    - **LkOne Type**: Added the `LkOne` AAGUID and firmware types to the hardware definition tree.
    - **Home View Check**: Fixed a UI issue in `home/view.rs` to conditionally display the LED config card based on whether the `FirmwareType` actually supports
  FIDO config modifications (like RS-Key).

    This lays the architectural foundation needed to handle FIDO configurations dynamically based on the discovered firmware type.
2026-07-08 21:14:55 +05:30
Suyog Tandel b293e294f5 feat: refactor hal module architecture and add tests in fido module 2026-07-07 01:23:26 +05:30
Suyog Tandel f8fc40c6cc fix(ci/cd): test build for macos-x64 2026-07-06 23:16:45 +05:30
Suyog Tandel ae8a12946e chore: Remove firmware type label from sidebar online status
- Drop firmware variant display (RS-Key/pico-fido) in sidebar status footer
- Rename workflow job to verify-build
2026-07-06 22:11:29 +05:30
Suyog Tandel 8f32c7c217 ci: add build matrix and cancel-in-progress concurrency 2026-07-06 19:53:37 +05:30
Suyog Tandel f05f42eb39 chore: update contributing.md with new mirror sources for picoforge 2026-07-05 20:54:17 +05:30
Suyog Tandel 2f1a9b97f2 feat(ci/cd): new workflow to keep mirror repos synced 2026-07-05 20:41:13 +05:30
Suyog TandelandGitHub 0f2b6dfdff Merge pull request #99 from librekeys/chore/clean-frontend-codebase
chore: refactor the UI rendering logic
2026-07-05 20:08:16 +05:30
Suyog Tandel c61f905dbb refactor: establish DeviceRepo as sole HAL gateway; fix passkeys lifecycle regressions
Break the UI→HAL dependency: Views and ViewModels no longer import
`crate::hal` directly. DeviceRepo is the single bridge — it re-exports
all needed types, provides 16 blocking static methods for background
tasks, and owns all state mutations + event emissions.

- device.rs: Add FreshDeviceState, apply_fresh_state(), update_fido_info(),
  read_device_serial_blocking(), 16 *_blocking() wrappers, full re-exports
- app.rs: Remove unconditional passkeys nilling on sidebar navigation;
  only invalidate on device_changed (replug). Remove stale
  refresh_device_status method.
- config/view_model.rs: Replace all io::* / fido::* calls with
  DeviceRepo::*_blocking(). Use apply_fresh_state() instead of refresh()
  for RS-Key LED/management writes.
- passkeys/view_model.rs: Replace all io::* calls with
  DeviceRepo::*_blocking(). Fix sync_fido_state to use
  repo.update_fido_info() instead of manual field mutation.
  Restore refresh_if_unlocked via DeviceEvent subscriber.
- Update all view imports: hal::types → ui::models::device,
  hal::rescue::constants → ui::models::device
- Update docs in main.rs, app.rs, ui/mod.rs to reflect the new architecture
2026-07-05 20:06:30 +05:30
Suyog Tandel de338512ba chore(docs): refactor and update the docs to point to correct dir locations and explain the new UI architecture.
- updated mod doc in main.rs
- added mod doc in ui/mod.rs
- added few documentation to symbols in app.rs
2026-07-05 16:36:29 +05:30
Suyog Tandel 5fede906b0 refactor: extract screens into view/view_model dirs, add AppModels DI, switch to Entity<DeviceRepo>
- Decompose flat about.rs/home.rs/security.rs/config.rs/passkeys.rs into
  per-screen directories with mod.rs, view.rs, view_model.rs
- Extract ApplicationRoot, LayoutState, ActiveView, ViewModelStore into new app.rs
- Replace DeviceConnectionState (snapshot-based) with reactive Entity<DeviceRepo>
- Replace ViewCache with ViewModelStore using uniform get_or_insert_with lazy init
- Add AppModels DI bag shared across all view constructors
- Move side types (UsbIdentityPreset, LedDriverType, etc.) into local view_model files
- Delete src/ui/types.rs
2026-07-05 16:02:14 +05:30
Suyog Tandel 7688cc3b13 chore: rename device dir to hal and create models module for repo storage 2026-07-05 02:14:33 +05:30
Suyog TandelandGitHub f4c4e0b145 Merge pull request #98 from kralonur/fix/sync-fido-state-after-mutations
fix(ui): sync cached FIDO state after mutations
2026-06-30 00:08:51 +05:30
Suyog Tandel e6f9c4df6d fix: pr98 review, lock the storage before performing a sync to get new status after device reset 2026-06-30 00:04:31 +05:30
kralonur b720285c1a fix(ui): sync cached FIDO state after mutations 2026-06-25 02:54:58 +03:00
Suyog Tandel 7762dccdc5 chore: remove verbose internal-dialogue comments and minor code cleanup
- Strip thinking-out-loud and notes-to-self comments from
  device/fido/hid.rs, device/rescue/mod.rs, error.rs, ui/views/passkeys.rs
- Replace redundant let c_i = i binding with direct i usage (Copy type)
- Replace magic number 8 with LedColor::all().len() in config.rs
2026-06-24 13:50:14 +05:30
Suyog Tandel 8df78c753d feat: add project info in project documentation 2026-06-24 10:40:40 +05:30