Skip to content
This repository was archived by the owner on Jun 15, 2026. It is now read-only.

release: Bump version to v1.1.0 #12

release: Bump version to v1.1.0

release: Bump version to v1.1.0 #12

Workflow file for this run

name: Release
on:
push:
tags:
- 'v*'
workflow_dispatch:
permissions:
contents: write
env:
APP_NAME: SolidityGuard
APP_VERSION: ${{ github.ref_name }}
jobs:
# ── CLI Package ───────────────────────────────────────────────────────
build-cli:
name: CLI (pip package)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install build tools
run: pip install build
- name: Build CLI package
run: |
cd apps/cli
python -m build
- name: Upload CLI dist
uses: actions/upload-artifact@v4
with:
name: solidityguard-cli
path: apps/cli/dist/*
# ── OpenClaw Skill ──────────────────────────────────────────────────
build-skill:
name: OpenClaw Skill
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Package OpenClaw skill
run: |
cd apps/openclaw-skill
# Ensure scripts are bundled
cp ../../.claude/skills/solidity-guard/scripts/solidity_guard.py scripts/
cp ../../.claude/skills/solidity-guard/scripts/report_generator.py scripts/
chmod +x scripts/*.sh
cd ..
tar czf solidityguard-openclaw-skill.tar.gz openclaw-skill/
zip -r solidityguard-openclaw-skill.zip openclaw-skill/
- name: Upload skill tarball
uses: actions/upload-artifact@v4
with:
name: solidityguard-openclaw-skill
path: |
apps/solidityguard-openclaw-skill.tar.gz
apps/solidityguard-openclaw-skill.zip
# ── Desktop: Linux ─────────────────────────────────────────────────
build-linux:
name: Linux (deb + AppImage)
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
- name: Rust cache
uses: swatinem/rust-cache@v2
with:
workspaces: apps/desktop/src-tauri
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
libwebkit2gtk-4.1-dev \
libgtk-3-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
libfuse2
- name: Build web frontend
run: |
cd apps/web/frontend
npm ci
npm run build
- name: Build desktop app
run: |
cd apps/desktop
npm ci
npm run tauri:build
- name: Upload deb
uses: actions/upload-artifact@v4
with:
name: solidityguard-linux-deb
path: apps/desktop/src-tauri/target/release/bundle/deb/*.deb
- name: Upload AppImage
uses: actions/upload-artifact@v4
with:
name: solidityguard-linux-appimage
path: apps/desktop/src-tauri/target/release/bundle/appimage/*.AppImage
# ── Desktop: macOS (signed + notarized) ────────────────────────────
build-macos:
name: macOS (dmg, signed)
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
- name: Rust cache
uses: swatinem/rust-cache@v2
with:
workspaces: apps/desktop/src-tauri
- name: Import Apple certificate
if: env.APPLE_CERTIFICATE != ''
env:
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
run: |
# Create temporary keychain
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
KEYCHAIN_PASSWORD=$(openssl rand -hex 32)
security create-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH"
security set-keychain-settings -lut 21600 "$KEYCHAIN_PATH"
security unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH"
# Import certificate
CERT_PATH=$RUNNER_TEMP/certificate.p12
echo "$APPLE_CERTIFICATE" | base64 --decode > "$CERT_PATH"
security import "$CERT_PATH" -P "$APPLE_CERTIFICATE_PASSWORD" \
-A -t cert -f pkcs12 -k "$KEYCHAIN_PATH"
security set-key-partition-list -S apple-tool:,apple: \
-k "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH"
security list-keychain -d user -s "$KEYCHAIN_PATH"
# Clean up certificate file
rm -f "$CERT_PATH"
- name: Build web frontend
run: |
cd apps/web/frontend
npm ci
npm run build
- name: Build desktop app (with signing)
env:
# Apple code signing — Tauri reads these automatically
APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }}
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
# Apple notarization
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
run: |
cd apps/desktop
npm ci
npm run tauri:build
- name: Clean up keychain
if: always()
run: |
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
if [ -f "$KEYCHAIN_PATH" ]; then
security delete-keychain "$KEYCHAIN_PATH" 2>/dev/null || true
fi
- name: Upload dmg
uses: actions/upload-artifact@v4
with:
name: solidityguard-macos-dmg
path: apps/desktop/src-tauri/target/release/bundle/dmg/*.dmg
# ── Desktop: Windows (signed) ──────────────────────────────────────
build-windows:
name: Windows (msi + exe, signed)
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
- name: Rust cache
uses: swatinem/rust-cache@v2
with:
workspaces: apps/desktop/src-tauri
- name: Build web frontend
run: |
cd apps/web/frontend
npm ci
npm run build
- name: Build desktop app
env:
# Windows code signing — Tauri reads these automatically
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
run: |
cd apps/desktop
npm ci
npm run tauri:build
- name: Sign Windows binaries
if: env.WINDOWS_CERTIFICATE != ''
env:
WINDOWS_CERTIFICATE: ${{ secrets.WINDOWS_CERTIFICATE }}
WINDOWS_CERTIFICATE_PASSWORD: ${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }}
shell: pwsh
run: |
$cert = [System.Convert]::FromBase64String($env:WINDOWS_CERTIFICATE)
$certPath = Join-Path $env:RUNNER_TEMP "certificate.pfx"
[System.IO.File]::WriteAllBytes($certPath, $cert)
# Sign MSI
Get-ChildItem "apps/desktop/src-tauri/target/release/bundle/msi/*.msi" | ForEach-Object {
& signtool sign /f $certPath /p $env:WINDOWS_CERTIFICATE_PASSWORD `
/t http://timestamp.digicert.com /fd SHA256 $_.FullName
}
# Sign EXE
Get-ChildItem "apps/desktop/src-tauri/target/release/bundle/nsis/*.exe" | ForEach-Object {
& signtool sign /f $certPath /p $env:WINDOWS_CERTIFICATE_PASSWORD `
/t http://timestamp.digicert.com /fd SHA256 $_.FullName
}
Remove-Item $certPath -Force
- name: Upload msi
uses: actions/upload-artifact@v4
with:
name: solidityguard-windows-msi
path: apps/desktop/src-tauri/target/release/bundle/msi/*.msi
- name: Upload nsis
uses: actions/upload-artifact@v4
with:
name: solidityguard-windows-nsis
path: apps/desktop/src-tauri/target/release/bundle/nsis/*.exe
# ── Create Release ─────────────────────────────────────────────────
release:
name: Create Release
needs: [build-cli, build-skill, build-linux, build-macos, build-windows]
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
- uses: actions/checkout@v4
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: List artifacts
run: find artifacts -type f | sort
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
name: "${{ env.APP_NAME }} ${{ github.ref_name }}"
draft: false
prerelease: ${{ contains(github.ref_name, 'beta') || contains(github.ref_name, 'alpha') || contains(github.ref_name, 'rc') }}
body: |
## SolidityGuard ${{ github.ref_name }}
Smart contract security audit tool with **104 vulnerability patterns**, **8 analysis tools**, **multi-agent team architecture**, and **100% detection rate** on 85/85 CTF benchmark challenges (DeFiVulnLabs + Paradigm CTF + R3CTF 2025 + HTB Cyber Apocalypse 2025).
---
### Components
| Component | Description |
|-----------|-------------|
| **Desktop App** | Native desktop application (Tauri v2) for Windows, macOS, and Linux |
| **Web App** | React frontend + FastAPI backend — deployed at [solidityguard.org](https://solidityguard.org) |
| **CLI** | Python CLI tool (`pip install solidityguard`) for terminal-based auditing |
| **OpenClaw Skill** | AI agent skill for [OpenClaw](https://openclaw.ai) — install via ClawHub |
---
### Desktop Downloads
| Platform | File | Description |
|----------|------|-------------|
| **Linux** | `.deb` | Debian / Ubuntu package (apt install) |
| **Linux** | `.AppImage` | Portable — no installation needed, just run |
| **macOS** | `.dmg` | Drag-and-drop disk image installer |
| **Windows** | `.msi` | Windows Installer (MSI) |
| **Windows** | `.exe` | NSIS installer with auto-updater |
### CLI Install
```bash
pip install solidityguard
solidityguard audit ./contracts
```
Or download the `.tar.gz` / `.whl` from this release.
### OpenClaw Skill Install
```bash
# Via ClawHub
npx clawhub@latest install solidityguard
# Manual — download and extract to skills directory
tar xzf solidityguard-openclaw-skill.tar.gz -C ~/.openclaw/skills/
```
---
### What's Included
- **104 vulnerability patterns** (ETH-001 to ETH-104) covering reentrancy, access control, DeFi, proxy, oracle, transient storage, EIP-7702, ERC-4337, and more
- **50+ pattern detectors** with 100% benchmark detection rate
- **8-tool integration** — Slither, Aderyn, Mythril, Foundry, Echidna, Medusa, Halmos, Certora
- **7-phase deep audit** — scan, verify, parallel agents, exploit PoC, dynamic verification, fuzz, report
- **Multi-agent team architecture** — 9 specialized sub-agents working in parallel
- **Professional reports** — OpenZeppelin / Trail of Bits style (Markdown + PDF)
- **Real-time progress** — WebSocket streaming for live audit updates
- **OWASP 2025 aligned** — covers all Smart Contract Top 10 categories
### Benchmarks
| Benchmark | Result |
|-----------|--------|
| DeFiVulnLabs | 56/56 contracts (100%) |
| Paradigm CTF 2021 | 10/10 static challenges (100%) |
| Paradigm CTF 2022 | 7/7 static challenges (100%) |
| Paradigm CTF 2023 | 7/7 static challenges (100%) |
| R3CTF 2025 | 2/2 challenges (100%) |
| HTB Cyber Apocalypse 2025 | 3/3 challenges (100%) |
| **Combined** | **85/85 (100%)** |
### System Requirements
- **Desktop**: Windows 10+, macOS 12+, Ubuntu 22.04+ / Debian 12+
- **CLI**: Python 3.10+
- **Optional tools**: Slither, Aderyn, Mythril, Foundry (for full multi-tool scanning)
### Quick Start
**Desktop:**
1. Download the installer for your platform
2. Install and launch SolidityGuard
3. Sign in with Google
4. Upload `.sol` / `.vy` files or select a local contracts directory
5. Configure scan mode and tools, then start the audit
**CLI:**
```bash
pip install solidityguard
solidityguard audit ./contracts --mode full
solidityguard report --input findings.json --output report.md
```
**OpenClaw:**
Just ask your AI agent: "Audit my contracts for security vulnerabilities"
---
*Built with [Tauri v2](https://v2.tauri.app) + React + TypeScript + FastAPI + Python*
files: |
artifacts/**/*.deb
artifacts/**/*.AppImage
artifacts/**/*.dmg
artifacts/**/*.msi
artifacts/**/*.exe
artifacts/**/*.tar.gz
artifacts/**/*.zip
artifacts/**/*.whl