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>
33 lines
1.0 KiB
TypeScript
33 lines
1.0 KiB
TypeScript
/** Application shell: brand, header, navigation and the active view. */
|
|
|
|
import { Inspector } from "./components/Inspector";
|
|
import { TitleBar } from "./components/TitleBar";
|
|
import { Sidebar } from "./components/Sidebar";
|
|
import { BrowseView } from "./views/BrowseView";
|
|
import { FavoritesView, RecentView } from "./views/ListView";
|
|
import { SettingsView } from "./views/SettingsView";
|
|
import { view } from "./lib/state";
|
|
|
|
export function App() {
|
|
const current = view.value;
|
|
// The saved lists render the same table as the browser, so they get the same
|
|
// inspector; only settings is full width.
|
|
const showInspector = current !== "settings";
|
|
|
|
return (
|
|
<div class="shell">
|
|
<TitleBar />
|
|
|
|
<Sidebar />
|
|
|
|
<main class={`main${showInspector ? "" : " main--full"}`}>
|
|
{current === "browse" && <BrowseView />}
|
|
{current === "favorites" && <FavoritesView />}
|
|
{current === "recent" && <RecentView />}
|
|
{current === "settings" && <SettingsView />}
|
|
{showInspector && <Inspector />}
|
|
</main>
|
|
</div>
|
|
);
|
|
}
|