chore(docs): update readme.md with new build info and credits.md with new deps

This commit is contained in:
Suyog Tandel
2026-02-12 21:49:43 +05:30
parent 8b427e0f0d
commit 51ef7bf134
5 changed files with 365 additions and 223 deletions
+6 -4
View File
@@ -4,17 +4,19 @@
- [lockedmutex](https://github.com/lockedmutex): Worked on the frontend and backend of the entire project and also maintains the COPR repository of the application.
- [vaishakhsnair](https://github.com/vaishakhsnair): Wrote fixes for ESP32 S3.
- [oshenyang](https://github.com/oshenyang): Fixed application freezing issue on macos.
- [Lab-8916100448256](https://github.com/Lab-8916100448256): Contributed `shell.nix` file for dev env setup using nix package manager and on nix os.
- [jetcookies](https://github.com/jetcookies): Contributed `package.nix` file for nix packaging of the application.
- [Lab-8916100448256](https://github.com/Lab-8916100448256): Contributed `shell.nix` file for dev env setup using nix package manager/nixos and worked on the backend of the application.
- [jetcookies](https://github.com/jetcookies): Contributed `package.nix` file for nix packaging of the application and maintains the nix flake of the application.
**Third-party Libraries**
- [Pico FIDO](https://github.com/polhenarejos/pico-fido) - The firmware this tool configures
- [GPUI](https://www.gpui.rs/) - UI framework written in rust
- [gpui-component](https://longbridge.github.io/gpui-component/) - UI components for GPUI framework
- [pcsc-rust](https://github.com/bluetech/pcsc-rust) - Smart card interface
- [ctap-hid-fido2](https://github.com/gebogebogebo/ctap-hid-fido2) - fido2 interface
- [Tauri](https://tauri.app/) - Desktop application framework
- [Svelte](https://svelte.dev/) - Reactive UI framework
- [shadcn-svelte](https://www.shadcn-svelte.com/) - UI component library
- [pcsc-rust](https://github.com/bluetech/pcsc-rust) - Smart card interface
- [ctap-hid-fido2](https://github.com/gebogebogebo/ctap-hid-fido2) - fido2 interface
**Closing**
Generated
+306 -118
View File
File diff suppressed because it is too large Load Diff
+2 -3
View File
@@ -23,7 +23,7 @@ anyhow = "1" # For easy error propagation
ctap-hid-fido2 = "3.5" # For fido2 interface operations
hidapi = "2.6" # For fido2 interface operations but non-standard commands
serde_cbor_2 = "0.13"
rand = "0.9"
rand = "0.10"
bitflags = "2.10"
ring = "0.17" # For signing fido2 messages with pin token
@@ -35,11 +35,10 @@ rust-embed = "8.11.0"
[profile.dev]
incremental = true # Compile your binary in smaller steps.
codegen-units = 256
opt-level = 1
[profile.release]
codegen-units = 1 # Allows LLVM to perform better optimization.
lto = true # Enables link-time-optimizations however is not stable.
opt-level = 3 # Prioritizes speed. Use `z` if you prefer small binary size.
panic = "abort" # Higher performance by disabling panic handlers.
# panic = "abort" # Higher performance by disabling panic handlers.
strip = true # Ensures debug symbols are removed.
+50 -97
View File
@@ -22,7 +22,7 @@
## About
PicoForge is a modern desktop application for configuring and managing Pico FIDO security keys. Built with Rust, Tauri, and Svelte, it provides an intuitive interface for:
PicoForge is a modern desktop application for configuring and managing Pico FIDO security keys. Built with Rust and GPUI, it provides an intuitive interface for:
- Reading device information and firmware details
- Configuring USB VID/PID and product names
@@ -55,7 +55,7 @@ PicoForge is a modern desktop application for configuring and managing Pico FIDO
- **Device Configuration** - Customize USB identifiers, LED behavior, and hardware settings
- **Security Management** - Enable secure boot and firmware verification (experimental and WIP)
- **Real-time Monitoring** - View flash usage, connection status, and system logs
- **Modern UI** - Clean, responsive interface built with Svelte and shadcn-svelte
- **Modern UI** - Clean, responsive interface built with Rust and GPUI
- **Multi-Vendor Support** - Compatible with multiple hardware variants
- **Cross-Platform** - Works on Windows, macOS, and Linux
@@ -82,8 +82,6 @@ Check the official [PicoForge Wiki](https://github.com/librekeys/picoforge/wiki/
To contribute to PicoForge, you'll need:
- **[Node.js](https://nodejs.org/)** - JavaScript/TypeScript runtime
- **[Deno](https://deno.land/)** - JavaScript/TypeScript runtime
- **[Rust](https://www.rust-lang.org/)** - System programming language (1.80+)
- **PC/SC Middleware**:
- Linux: `pcscd` (usually pre-installed)
@@ -99,50 +97,21 @@ git clone https://github.com/librekeys/picoforge.git
cd picoforge
```
### 2. Install Dependencies
### 2. Build and Run
#### Using Deno (Recommended)
To run the application in development mode:
```bash
deno install
cargo run
```
#### Using npm
To build for production:
```bash
npm install
cargo build --release
```
### 3. Build the Application
#### Development Build
**With Deno:**
```bash
deno task tauri dev
```
**With npm:**
```bash
npm run tauri dev
```
#### Production Build
**With Deno:**
```bash
deno task tauri build
```
**With npm:**
```bash
npm run tauri build
```
The compiled binaries will be available in:
- **Linux**: `src-tauri/target/release/bundle/`
- **macOS**: `src-tauri/target/release/bundle/dmg/`
- **Windows**: `src-tauri/target/release/bundle/`
The compiled binary will be available in `target/release/picoforge` (Linux/macOS) or `target/release/picoforge.exe` (Windows).
## Building and Development with Nix
@@ -210,74 +179,52 @@ nix-shell
Then you can build from source and run the application with:
```bash
deno task tauri dev
cargo run
```
## Project Structure
```
picoforge/
├── src/ # Svelte frontend
│ ├── lib/ # Reusable components & utilities
│ │ ├── components/ # UI components
│ ├── device/ # Device-related logic
│ ├── hooks/ # Custom Svelte hooks
│ ├── layout/ # Layout components
│ │ ├── services/ # Service layer
│ │ ├── state/ # State management
│ │ ├── utils.ts # Utility functions
│ │ ── views/ # View components
│ ├── routes/ # SvelteKit pages
│ │ ── +layout.svelte # Root layout
│ ├── +layout.ts # Layout configuration
── +page.svelte # Home page
├── app.css # Global styles
└── app.html # HTML template
├── src-tauri/ # Rust backend
├── src/ # Rust source code
├── fido/ # FIDO device logic
── rescue/ # Rescue mode functionality
│ │ ├── error.rs # Error handling
│ │ ├── io.rs # I/O operations
│ │ ├── lib.rs # Tauri commands & PC/SC logic
│ │ ├── logging.rs # Logging utilities
│ │ ├── main.rs # Entry point
│ │ └── types.rs # Type definitions
│ ├── icons/ # Application icons
│ ├── capabilities/ # Tauri permissions
│ │ └── default.json # Default capabilities
│ ├── Cargo.toml # Rust dependencies
│ ├── Cargo.lock # Rust lock file
│ ├── tauri.conf.json # Tauri configuration
│ ├── build.rs # Build script
│ └── rustfmt.toml # Rust formatting config
├── static/ # Static assets
│ ├── build-configure-symbolic.svg
│ ├── favicon.png
│ ├── in.suyogtandel.picoforge.svg
│ ├── svelte.svg
│ ├── tauri.svg
│ └── vite.svg
├── Cargo.toml # Rust dependencies and project metadata
├── Cargo.lock # Rust dependency lock file
├── src/ # Source code
│ ├── main.rs # Application entry point
│ ├── logging.rs # Logging infrastructure
│ ├── device/ # Device communication logic
│ │ ├── fido/ # FIDO implementation
│ │ ├── rescue/ # Rescue mode handling
│ │ ├── io.rs # IO Utilities
│ │ ── error.rs # Device error types
│ ├── mod.rs
│ │ ── types.rs # Device data types
└── ui/ # GPUI Frontend
── components/ # Reusable UI components
├── views/ # View definitions
├── assets.rs # Asset loader
│ ├── colors.rs # Color definitions
├── rootview.rs # Root view container
├── ui_types.rs # UI-specific types
── mod.rs
├── data/ # Application data
│ ├── in.suyogtandel.picoforge.desktop
│ └── screenshots/ # Screenshots
├── node_modules/ # Deno node compatibility modules
├── components.json # shadcn-svelte config
├── package.json # Node package manifest
├── package-lock.json # npm lock file
├── deno.json # Deno configuration
├── deno.lock # Deno lock file
├── svelte.config.js # SvelteKit configuration
├── vite.config.js # Vite bundler config
├── tsconfig.json # TypeScript configuration
├── biome.json # Biome configuration
├── docs/ # Documentation
├── static/ # Static assets (icons)
├── flake.nix # Nix flake configuration
├── default.nix # Nix development shell
├── shell.nix # Nix development shell
├── picoforge.spec # RPM Spec file
├── package.nix # Nix package definition
├── ci.nix # CI configuration for cachix
├── rustfmt.toml # Rust formatting configuration
├── CREDITS.md # Credits
└── LICENSE # AGPL-3.0 license
└── LICENSE # License
```
## Contributing
Contributions are welcome (REALLY NEEDED, PLEASE HELP ME)! Please follow these steps:
Contributions are welcome (REALLY NEEDED, PLEASE HELP ME)! follow these steps:
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
@@ -287,8 +234,8 @@ Contributions are welcome (REALLY NEEDED, PLEASE HELP ME)! Please follow these s
### Development Guidelines
- Follow Rust and TypeScript best practices
- Use `deno fmt` to format the frontend code
- Follow Rust best practices
- Use `cargo fmt` to format the code
- Write clear commit messages
- Update documentation for new features
- Test on multiple platforms when possible
@@ -299,13 +246,19 @@ This project is licensed under the **GNU Affero General Public License v3.0 (AGP
See [LICENSE](LICENSE) for full details.
## Maintainers
## Repository Maintainers
- **Suyog Tandel** ([@lockedmutex](https://github.com/lockedmutex))
## Package Maintainers
- **JetCookies** ([@jetcookies](https://github.com/jetcookies)): Maintainer of the [Nix](https://nixos.org/) package.
- **Suyog Tandel** ([@lockedmutex](https://github.com/lockedmutex)): Maintainer of the [RPM](https://rpm.org/) package and Fedora Copr repository.
## Support
- **Discord**: [Join our Discord server](https://discord.gg/6wYBpSHJY2) for community support and interaction
- **Matrix**: [Join our Matrix room](https://matrix.to/#/%23librekeys:matrix.org)
- **Discord**: [Join our Discord server](https://discord.gg/6wYBpSHJY2)
- **Issues**: [GitHub Issues](https://github.com/librekeys/picoforge/issues)
- **Discussions**: [GitHub Discussions](https://github.com/librekeys/picoforge/discussions)
+1 -1
View File
@@ -1,4 +1,4 @@
use rand::Rng;
use rand::RngExt;
use serde_cbor_2::{Value, to_vec};
use std::collections::BTreeMap;
use std::time::Duration;