initial commit: reforgermods.net launcher 0.1.0

A desktop server browser for Arma Reforger, built on the reforgermods.net v2
API. Live server list with search, sort and filters; a detail inspector with
population history and mod readiness; measured ICMP latency; favorites, recents
and settings; and direct joining through Steam.

Tauri 2 and Rust, with a Preact frontend that builds to 80 KB of JavaScript in
one chunk. Logic lives in rfm-core, which has no Tauri dependency and is tested
directly; src-tauri is the window, the command surface and the wiring.

Packaged for the public beta: a per-user NSIS installer, a portable .exe and an
Arch package, with signature-verified background updates on Windows and a
release pipeline that builds from a tag. The artifacts are not yet
Authenticode-signed — that is wired and waiting on an Azure Trusted Signing
identity, and docs/distribution.md says so plainly rather than letting anyone
discover it at the SmartScreen dialog.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
SowinskiBraedenandClaude Opus 5 committed 2026-09-24 20:29:00 -07:00
commit 377f3a31b3
91 files changed
+24994

No files matched your search

+25
View File
@@ -0,0 +1,25 @@
//! Core logic for the reforgermods.net launcher.
//!
//! This crate deliberately has no Tauri dependency. Everything that can be
//! decided without a window lives here so it can be unit-tested directly:
//! the reforgermods.net API client, Steam launch-URI construction, local
//! persistence, response caching, and local Workshop addon detection.
pub mod api;
pub mod cache;
pub mod identity;
pub mod launch;
pub mod modscan;
pub mod ping;
pub mod presence;
pub mod readiness;
pub mod store;
pub use api::{ApiClient, ApiError};
pub use launch::{reforger_join_uri, steam_join_uri, LaunchError, ServerId};
/// User-Agent the launcher identifies itself with. The launcher is a public,
/// untrusted client: it sends no credentials, only this.
pub fn user_agent() -> String {
format!("reforgermods.net-launcher/{}", env!("CARGO_PKG_VERSION"))
}