mirror of
https://github.com/Heretek-AI/Heretek-Drop.git
synced 2026-11-07 10:55:57 -10:00
main
Per AI_HARNESS_PLAN.md phase 5.1 and 5.3. - new docs/generate-crate-table.sh parses each member's Cargo.toml description field and emits a markdown table. Sourceable, executable, bash -n clean. - pnpm docs:sync runs the generator for ad-hoc use. - README.md crate table updated to match generated output (syncs descriptions from the manifests, not from memory). - commitlint scope-enum gains 'docs' to allow this and future docs-only commits. The table stays in sync with member manifests. Re-run 'pnpm docs:sync' after adding a sub-crate or changing a description.
Heretek-Drop
A native, AGPL-3.0 client for Drop — an open-source game distribution platform (like a self-hosted Steam).
Stack
- Language: Rust (edition 2024, stable)
- UI: Slint (declarative UI, no webview, no Chromium)
- Distribution: Linux flatpak (v0.1)
Status
v0.1 (in development) — minimal feature set: auth, browse library, download, launch.
Architecture
┌─────────────────────────────────────────────────┐
│ heretek-drop │
│ ┌──────────┐ ┌──────────┐ ┌───────────────┐ │
│ │ Slint UI │ │ Commands │ │ EventBus │ │
│ │ .slint │◄─┤ Bridge │◄─┤ (flume 256) │ │
│ └────┬─────┘ └────┬─────┘ └───────┬───────┘ │
│ │ │ │ │
│ ┌────▼─────────────▼────────────────▼───────┐ │
│ │ Services Layer │ │
│ │ Auth │ Library │ Download │ Settings │ │
│ └────┬────────┬──────┬──────────┬───────────┘ │
│ │ │ │ │ │
│ ┌────▼────────▼──────▼──────────▼───────────┐ │
│ │ Sub-crates │ │
│ │ protocol │ auth │ database │ dl_manager │ │
│ │ │ process_manager │ │
│ └───────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘
│
HTTP (REST + JWT)
│
┌────────▼────────┐
│ Drop Server │
│ (upstream) │
└─────────────────┘
Single Rust binary. Cargo workspace at apps/desktop/ with sub-crates. The table below is auto-generated by pnpm docs:sync (see docs/generate-crate-table.sh); the root binary crate is heretek-drop.
| Crate | Purpose |
|---|---|
heretek-drop (root) |
Binary + Slint UI + glue |
heretek-drop-protocol |
Drop REST API client. HTTP + JWT auth header injection. |
heretek-drop-auth |
Drop auth flow. Login, JWT handling, credential persistence. |
heretek-drop-database |
Local SQLite-backed key-value store for caching, settings, and library snapshots. |
heretek-drop-download-manager |
Download manager for game files. Chunked downloads with progress events. |
heretek-drop-process-manager |
Game process tracker. Spawns, monitors, and signals running game processes. |
heretek-drop-shared |
Shared types and errors used across all Heretek-Drop sub-crates. |
Build
# Prerequisites
sudo apt-get install -y flatpak flatpak-builder
rustup toolchain install stable
cargo install slint-viewer
# Build
cargo build --workspace
# Run
cargo run --bin heretek-drop
# Tests
cargo test --workspace
# Format + lint
cargo fmt --all -- --check
cargo clippy --workspace --all-targets -- -D warnings
# Live UI iteration (no Rust recompile)
cargo install slint-viewer
slint-viewer apps/desktop/src/ui/app-window.slint
# Flatpak build (v0.1 release target)
cd apps/desktop
flatpak-builder build flatpak/app.heretek.drop.yml --user --install
flatpak run app.heretek.drop
Git Hooks
Pre-commit runs: cargo fmt → clippy → fallow → prettier
Commit-msg enforces: conventional commits (via commitlint)
Pre-push runs: cargo test --workspace
Packages
# Release (from GitHub Releases)
flatpak install ./app.heretek.drop-v0.1.0-x86_64.flatpak
Flatpak builds for x86_64 and aarch64 on every tag push.
Links
License
AGPL-3.0. See LICENSE and AGPL-3.0.LICENSE.
Upstream attribution in NOTICE.
Upstream
upstream/drop/is a read-only mirror of Drop-OSS/drop at commitcc3f6455. Reference only, not synced.- CI + hook patterns ported from BillyOutlast/drop#200.
Languages
Rust
79.6%
Slint
12.1%
Shell
7.5%
JavaScript
0.8%