mirror of
https://github.com/librekeys/picoforge.git
synced 2026-07-28 08:01:19 -07:00
chore(docs): update readme.md with new build info and credits.md with new deps
This commit is contained in:
+6
-4
@@ -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
File diff suppressed because it is too large
Load Diff
+2
-3
@@ -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.
|
||||
|
||||
@@ -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,4 +1,4 @@
|
||||
use rand::Rng;
|
||||
use rand::RngExt;
|
||||
use serde_cbor_2::{Value, to_vec};
|
||||
use std::collections::BTreeMap;
|
||||
use std::time::Duration;
|
||||
|
||||
Reference in New Issue
Block a user