Restyle to a clean, flat look and rename brand to SCOPENET

- Brand is now SCOPENET everywhere (defaults, UI, installer, docs)
- Launcher: solid backgrounds (no animated orbs/grain), flat Play button
  without gradient/shine/glow, quieter rail with a simple active
  indicator, smaller type scale, Inter as default font, glass off by
  default, restyled sliders
- Panel: same flat treatment; live preview mirrors the new launcher
- New flat scope-reticle logo and app icons
- Calmer default palette
- Fix: lock the shared cargo cache in the Docker build (amd64/arm64 raced)
- Fix: Windows-only clippy lint in sys.rs

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011ARcGWxLx21FwXJ3yfGriS
This commit is contained in:
Claude committed 2026-09-28 05:30:19 +00:00
1 parent 214aa6ad19
commit 1b1bb984bc
69 files changed
+378 -426

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "scopenet-shared"
description = "Types shared between the ScopeNet launcher and admin panel"
description = "Types shared between the SCOPENET launcher and admin panel"
version.workspace = true
edition.workspace = true
+17 -17
View File
@@ -1,4 +1,4 @@
//! Wire types shared by the ScopeNet launcher and the admin panel.
//! Wire types shared by the SCOPENET launcher and the admin panel.
//!
//! Everything the panel sends to the launcher is described here, so both
//! sides always agree on the JSON shape.
@@ -39,19 +39,19 @@ pub struct Branding {
impl Default for Branding {
fn default() -> Self {
Self {
name: "ScopeNet".into(),
name: "SCOPENET".into(),
tagline: "Your worlds, one click away.".into(),
logo_url: None,
icon_url: None,
background: Background::default(),
colors: Palette::default(),
font: "Outfit".into(),
radius: 14,
glass: true,
version_label: "ScopeNet".into(),
font: "Inter".into(),
radius: 10,
glass: false,
version_label: "SCOPENET".into(),
news: vec![NewsItem {
id: "welcome".into(),
title: "Welcome to ScopeNet".into(),
title: "Welcome to SCOPENET".into(),
body: "Your admin can customise this launcher from the panel: colours, news, instances and more.".into(),
image_url: None,
link: None,
@@ -80,7 +80,7 @@ pub struct Background {
impl Default for Background {
fn default() -> Self {
Self { kind: "gradient".into(), url: None, blur: 0, dim: 45 }
Self { kind: "gradient".into(), url: None, blur: 0, dim: 55 }
}
}
@@ -100,14 +100,14 @@ pub struct Palette {
impl Default for Palette {
fn default() -> Self {
Self {
accent: "#7c5cff".into(),
accent_2: "#22d3ee".into(),
background: "#0b0d17".into(),
surface: "#141828".into(),
text: "#eef0ff".into(),
muted: "#8b90b3".into(),
success: "#34d399".into(),
danger: "#f43f5e".into(),
accent: "#6d6af5".into(),
accent_2: "#8b88f8".into(),
background: "#0d0e12".into(),
surface: "#16181e".into(),
text: "#ecedf1".into(),
muted: "#8b8f9a".into(),
success: "#3fb97c".into(),
danger: "#e5484d".into(),
}
}
}
@@ -396,7 +396,7 @@ mod tests {
#[test]
fn manifest_roundtrip_with_defaults() {
let m: LauncherManifest = serde_json::from_str("{}").unwrap();
assert_eq!(m.branding.name, "ScopeNet");
assert_eq!(m.branding.name, "SCOPENET");
let loader: Loader = serde_json::from_str("\"neoforge\"").unwrap();
assert_eq!(loader, Loader::NeoForge);
}