ci: update release workflow to handle tito version update

This commit is contained in:
Suyog Tandel
2026-01-17 13:34:01 +05:30
parent e7313ef30b
commit 949625cdf8
6 changed files with 168 additions and 65 deletions
+68 -10
View File
@@ -31,12 +31,14 @@ jobs:
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: setup node
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: lts/*
node-version: latest
- name: install Rust stable
uses: dtolnay/rust-toolchain@stable
@@ -49,7 +51,7 @@ jobs:
if: matrix.platform == 'ubuntu-22.04' || matrix.platform == 'ubuntu-24.04-arm'
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libpcsclite-dev libudev-dev libusb-1.0-0-dev
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libpcsclite-dev libudev-dev libusb-1.0-0-dev podman
- name: install dependencies (ubuntu-arm64 only)
if: matrix.platform == 'ubuntu-24.04-arm'
@@ -90,12 +92,6 @@ jobs:
> [!CAUTION]
> This is an alpha release and thus can have some bugs, report them using github issues.
### Changelog:
- Now manage stored passkeys on your pico-key from picoforge app itself.
- Add Linux arm builds of the app in releases.
- Fix AppImages not detecting the key.
releaseDraft: true
prerelease: false
args: ${{ matrix.args }}
@@ -135,3 +131,65 @@ jobs:
gh release upload "v${{ env.version }}" "$APPIMAGE_PATH" --clobber
echo "Success! The Draft Release now has the fixed AppImage."
- name: Sync Spec Version & Tag (Podman Container)
if: matrix.platform == 'ubuntu-22.04'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
cat << 'EOF' > ./update_spec_in_container.sh
#!/bin/sh
set -e
dnf install -y tito git
git config --global --add safe.directory /workspace
git config --global user.email 'git@suyogtandel.in'
git config --global user.name 'Suyog Tandel'
git remote set-url origin https://x-access-token:$GITHUB_TOKEN@github.com/$GITHUB_REPOSITORY.git
CARGO_FILE="src-tauri/Cargo.toml"
NEW_VERSION=$(grep -m 1 '^version' "$CARGO_FILE" | sed -E 's/.*"([0-9]+\.[0-9]+\.[0-9]+)".*/\1/')
CURRENT_SPEC_VERSION=$(grep -m 1 '^Version:' picoforge.spec | awk '{print $2}')
CURRENT_SPEC_RELEASE=$(grep -m 1 '^Release:' picoforge.spec | awk '{print $2}' | sed 's/%{?dist}//')
echo "Cargo Version: $NEW_VERSION"
echo "Spec Version: $CURRENT_SPEC_VERSION"
echo "Spec Release: $CURRENT_SPEC_RELEASE"
if [ "$NEW_VERSION" != "$CURRENT_SPEC_VERSION" ]; then
echo "New version detected. Resetting Release to 1."
sed -i "s/^Version:.*/Version: $NEW_VERSION/" picoforge.spec
sed -i "s/^Release:.*/Release: 1%{?dist}/" picoforge.spec
else
echo "Version match. Incrementing Release number."
NEW_RELEASE=$((CURRENT_SPEC_RELEASE + 1))
sed -i "s/^Release:.*/Release: $NEW_RELEASE%{?dist}/" picoforge.spec
fi
if git diff --quiet picoforge.spec; then
echo "No changes to spec file."
else
git add picoforge.spec
git commit -m "chore: sync spec to $NEW_VERSION [skip ci]"
fi
tito tag --offline --accept-auto-changelog --keep-version
git pull --rebase origin main
git push --follow-tags origin HEAD:main HEAD:release
EOF
chmod +x ./update_spec_in_container.sh
podman run --rm \
--security-opt label=disable \
-v "$PWD":/workspace \
-w /workspace \
-e GITHUB_TOKEN=$GITHUB_TOKEN \
-e GITHUB_REPOSITORY=$GITHUB_REPOSITORY \
fedora:latest \
/workspace/update_spec_in_container.sh
rm ./update_spec_in_container.sh
+21
View File
@@ -0,0 +1,21 @@
<!--You can add your name and the work you have done here if you have contributed to the project.-->
**List of people who have contributed to the PicoForge project.**
- [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.
**Third-party Libraries**
- [Pico FIDO](https://github.com/polhenarejos/pico-fido) - The firmware this tool configures
- [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**
This document is a way to publicly appreciate the contributions of those who have helped make this project what it is today. Thank you!
+79 -55
View File
@@ -9,6 +9,8 @@
[![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL%203.0-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
[![GitHub issues](https://img.shields.io/github/issues/librekeys/picoforge)](https://github.com/librekeys/picoforge/issues)
[![GitHub stars](https://img.shields.io/github/stars/librekeys/picoforge)](https://github.com/librekeys/picoforge/stargazers)
![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/librekeys/picoforge/release.yml)
[![Copr build status](https://copr.fedorainfracloud.org/coprs/lockedmutex/picoforge/package/picoforge/status_image/last_build.png)](https://copr.fedorainfracloud.org/coprs/lockedmutex/picoforge/package/picoforge/)
</div>
@@ -16,7 +18,7 @@
> PicoForge is an independent, community-developed tool and is not affiliated with or endorsed by the official [pico-fido](https://github.com/polhenarejos/pico-fido) project.
> This software does not share any code with the official closed-source pico-fido application.
>
> For some reason, when running the app on windows, it needs to be ran as administrator or it cannot detect the device, this will be fixed in future. Till then run the app as admin.
> Check application [Installation Wiki](https://github.com/librekeys/picoforge/wiki/Installation) for installation guide of the PicoForge app on your system.
## About
@@ -36,15 +38,15 @@ PicoForge is a modern desktop application for configuring and managing Pico FIDO
<div align="center">
### Main Interface
![PicoForge Main Interface](assets/screenshot-1.webp)
![PicoForge Main Interface](data/screenshots/screenshot-1.webp)
### Configuration Panel
#### Pin config
![Configuration Options](assets/screenshot-2.webp)
![Configuration Options](data/screenshots/screenshot-2.webp)
#### Other Config
![Device Management](assets/screenshot-3.webp)
![Device Management](data/screenshots/screenshot-3.webp)
</div>
@@ -54,9 +56,26 @@ PicoForge is a modern desktop application for configuring and managing Pico FIDO
- **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
- **Multi-Vendor Support** - Preset configurations for YubiKey, Nitrokey, SoloKeys, and more
- **Multi-Vendor Support** - Compatible with multiple hardware variants
- **Cross-Platform** - Works on Windows, macOS, and Linux
### Installation
Check the official [PicoForge Wiki](https://github.com/librekeys/picoforge/wiki/Installation) for installation info of the application.
## Usage
1. Connect your smart card reader
2. Insert your Pico FIDO device
3. Launch PicoForge
4. Click **Refresh** button at top right corner to detect your key
5. Navigate through the sidebar to configure settings:
- **Home** - Device overview and quick actions
- **Configuration** - USB settings, LED options
- **Security** - Secure boot management (experimental)
- **Logs** - Real-time event monitoring
- **About** - Application information
## Requirements
### Development Requirements
@@ -82,91 +101,108 @@ cd picoforge
### 2. Install Dependencies
#### Using Deno (Recommended)
```bash
deno install
```
#### Using npm
```bash
npm install
```
### 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/`
### Installation
Check the official [PicoForge Wiki](https://github.com/librekeys/picoforge/wiki/Installation) for installation info of the application.
## Usage
1. Connect your smart card reader
2. Insert your Pico FIDO device
3. Launch PicoForge
4. Click **Refresh** button at top right corner to detect your key
5. Navigate through the sidebar to configure settings:
- **Home** - Device overview and quick actions
- **Configuration** - USB settings, LED options
- **Security** - Secure boot management (experimental)
- **Logs** - Real-time event monitoring
- **About** - Application information
### Configuration Options
#### USB Identity
- **VID/PID** - Vendor and Product IDs (hex format)
- **Product Name** - Device name shown to host system
- **Vendor Presets** - Quick selection for common manufacturers
#### LED Settings
- **GPIO Pin** - Hardware pin for LED control
- **Brightness** - Intensity level (0-15)
- **Driver Type** - Hardware-specific LED drivers
- **Options** - Dimmable, steady mode, power cycle behavior
#### Advanced
- **Touch Timeout** - User presence button timeout (seconds)
- **Secp256k1** - Enable secp256k1 curve support
- **Secure Boot** - Firmware signature verification (⚠️ experimental and WIP)
## 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
│ │ ── lib.rs # Tauri commands & PC/SC logic
│ │ ── 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
── build.rs # Build script
│ └── rustfmt.toml # Rust formatting config
├── static/ # Static assets
│ ├── build-configure-symbolic.svg
── favicon.png
── favicon.png
│ ├── in.suyogtandel.picoforge.svg
│ ├── svelte.svg
│ ├── tauri.svg
│ └── vite.svg
├── 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
├── CREDITS.md # Credits
└── LICENSE # AGPL-3.0 license
```
@@ -198,18 +234,6 @@ See [LICENSE](LICENSE) for full details.
- **Suyog Tandel** ([@lockedmutex](https://github.com/lockedmutex))
## Contributers
- **Vaishakh Nair** ([@vaishakhsnair](https://github.com/vaishakhsnair))
## Acknowledgments
- [Pico FIDO](https://github.com/polhenarejos/pico-fido) - The firmware this tool configures
- [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
## Support
- **Discord**: [Join our Discord server](https://discord.gg/6wYBpSHJY2) for community support and interaction
Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 29 KiB