Skip to content

Commit f297c22

Browse files
committed
v1.0.0: Complete OpenFlash release
Features: - Core library with ONFI chip database (30+ chips) - Hamming & BCH ECC algorithms - Filesystem detection (SquashFS, UBIFS, JFFS2, etc.) - Modern Tauri 2.0 desktop app with glassmorphism UI - Interactive hex viewer with search - Bitmap visualization with entropy coloring - Mock device for testing without hardware - RP2040 & STM32F1 firmware with GPIO NAND interface Documentation: - Complete wiki (Getting Started, Hardware Setup, FAQ, etc.) - Hardware guide with wiring diagrams - Contributing guidelines - Security policy Infrastructure: - GitHub Actions CI/CD - Issue & PR templates - Discussion templates - Code of Conduct
1 parent 5d1f2fb commit f297c22

67 files changed

Lines changed: 22401 additions & 753 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
env:
10+
CARGO_TERM_COLOR: always
11+
RUST_BACKTRACE: 1
12+
13+
jobs:
14+
# Core library tests
15+
test-core:
16+
name: Test Core Library
17+
runs-on: ubuntu-latest
18+
steps:
19+
- uses: actions/checkout@v4
20+
21+
- name: Install Rust
22+
uses: dtolnay/rust-action@stable
23+
24+
- name: Cache cargo
25+
uses: actions/cache@v4
26+
with:
27+
path: |
28+
~/.cargo/bin/
29+
~/.cargo/registry/index/
30+
~/.cargo/registry/cache/
31+
~/.cargo/git/db/
32+
openflash/target/
33+
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
34+
35+
- name: Run tests
36+
working-directory: openflash
37+
run: cargo test -p openflash-core --verbose
38+
39+
# Check GUI backend compiles
40+
check-gui:
41+
name: Check GUI Backend
42+
runs-on: ubuntu-latest
43+
steps:
44+
- uses: actions/checkout@v4
45+
46+
- name: Install Rust
47+
uses: dtolnay/rust-action@stable
48+
49+
- name: Install system dependencies
50+
run: |
51+
sudo apt-get update
52+
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libudev-dev
53+
54+
- name: Cache cargo
55+
uses: actions/cache@v4
56+
with:
57+
path: |
58+
~/.cargo/bin/
59+
~/.cargo/registry/index/
60+
~/.cargo/registry/cache/
61+
~/.cargo/git/db/
62+
openflash/target/
63+
key: ${{ runner.os }}-cargo-gui-${{ hashFiles('**/Cargo.lock') }}
64+
65+
- name: Check GUI backend
66+
working-directory: openflash
67+
run: cargo check -p openflash-gui
68+
69+
# Build frontend
70+
build-frontend:
71+
name: Build Frontend
72+
runs-on: ubuntu-latest
73+
steps:
74+
- uses: actions/checkout@v4
75+
76+
- name: Setup Node.js
77+
uses: actions/setup-node@v4
78+
with:
79+
node-version: '20'
80+
cache: 'npm'
81+
cache-dependency-path: openflash/gui/package-lock.json
82+
83+
- name: Install dependencies
84+
working-directory: openflash/gui
85+
run: npm ci
86+
87+
- name: Build frontend
88+
working-directory: openflash/gui
89+
run: npm run build
90+
91+
- name: TypeScript check
92+
working-directory: openflash/gui
93+
run: npx tsc --noEmit
94+
95+
# Lint
96+
lint:
97+
name: Lint
98+
runs-on: ubuntu-latest
99+
steps:
100+
- uses: actions/checkout@v4
101+
102+
- name: Install Rust
103+
uses: dtolnay/rust-action@stable
104+
with:
105+
components: clippy, rustfmt
106+
107+
- name: Check formatting
108+
working-directory: openflash
109+
run: cargo fmt -p openflash-core -- --check
110+
111+
- name: Clippy
112+
working-directory: openflash
113+
run: cargo clippy -p openflash-core -- -D warnings
114+
115+
# Security audit
116+
security:
117+
name: Security Audit
118+
runs-on: ubuntu-latest
119+
steps:
120+
- uses: actions/checkout@v4
121+
- name: Install cargo-audit
122+
run: cargo install cargo-audit
123+
- name: Run audit
124+
working-directory: openflash
125+
run: cargo audit || true # Don't fail on advisories for now

.github/workflows/release.yml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
permissions:
9+
contents: write
10+
11+
jobs:
12+
build-tauri:
13+
strategy:
14+
fail-fast: false
15+
matrix:
16+
include:
17+
- platform: macos-latest
18+
args: '--target universal-apple-darwin'
19+
- platform: ubuntu-22.04
20+
args: ''
21+
- platform: windows-latest
22+
args: ''
23+
24+
runs-on: ${{ matrix.platform }}
25+
steps:
26+
- uses: actions/checkout@v4
27+
28+
- name: Setup Node.js
29+
uses: actions/setup-node@v4
30+
with:
31+
node-version: '20'
32+
33+
- name: Install Rust
34+
uses: dtolnay/rust-action@stable
35+
with:
36+
targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
37+
38+
- name: Install dependencies (Ubuntu)
39+
if: matrix.platform == 'ubuntu-22.04'
40+
run: |
41+
sudo apt-get update
42+
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libudev-dev
43+
44+
- name: Install frontend dependencies
45+
working-directory: openflash/gui
46+
run: npm ci
47+
48+
- name: Build Tauri app
49+
uses: tauri-apps/tauri-action@v0
50+
env:
51+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
52+
with:
53+
projectPath: openflash/gui
54+
tagName: ${{ github.ref_name }}
55+
releaseName: 'OpenFlash ${{ github.ref_name }}'
56+
releaseBody: 'See the assets to download and install this version.'
57+
releaseDraft: true
58+
prerelease: false
59+
args: ${{ matrix.args }}

.gitignore

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Rust
2+
target/
3+
**/target/
4+
5+
# Node
6+
node_modules/
7+
dist/
8+
9+
# IDE
10+
.idea/
11+
.vscode/
12+
*.swp
13+
*.swo
14+
*~
15+
16+
# OS
17+
.DS_Store
18+
Thumbs.db
19+
20+
# Logs
21+
*.log
22+
23+
# Build artifacts
24+
*.exe
25+
*.dll
26+
*.so
27+
*.dylib
28+
29+
# Tauri
30+
WixTools/
31+
32+
# Kiro
33+
.kiro/
34+
35+
# Environment
36+
.env
37+
.env.local

0 commit comments

Comments
 (0)