feat: new theme (computers)

This commit is contained in:
gauvainboiche
2026-10-08 13:26:08 +02:00
parent cd6d38899c
commit 1caa4d92b9
5 changed files with 130 additions and 1 deletions
+55
View File
@@ -0,0 +1,55 @@
{
"theme": {
"name": "Computers & GalliumCoin",
"title": "GalliumCoin Mining Lab",
"res": { "units": "CPU Power", "unit": "cycle", "funds": "GalliumCoin", "material": "Energy (W)" },
"fmt": { "funds": "{value} GAL" },
"action": { "make": "Run a computation", "buyMaterial": "Buy energy" },
"gen": {
"gen1": { "name": "Old Laptop", "desc": "Fans screaming, but it still crunches numbers." },
"gen2": { "name": "Gaming PC", "desc": "The RGB lighting adds at least 10% more power." },
"gen3": { "name": "GPU Mining Rig", "desc": "Six graphics cards and a prayer." },
"gen4": { "name": "Server Rack", "desc": "Forty-two units of blinking lights." },
"gen5": { "name": "Data Center", "desc": "A warehouse of racks and an industrial cooling plant." },
"gen6": { "name": "Quantum Mainframe", "desc": "Computes every possibility at once." }
},
"upg": {
"click_1": "Mechanical Keyboard",
"click_2": "Keyboard Macros",
"click_3": "Neural Interface",
"g1_a": "Thermal Paste",
"g1_b": "Fresh OS Install",
"g2_a": "Liquid Cooling",
"g2_b": "Overclocking",
"g3_a": "Custom BIOS",
"g3_b": "Memory Timing Tuning",
"g4_a": "Hot-Swap Drives",
"g4_b": "Load Balancer",
"g5_a": "Redundant Power Lines",
"g5_b": "Free Cooling (Arctic Site)",
"g6_a": "Cryogenic Coolant",
"g6_b": "Entangled Qubits",
"global_1": "Firmware Update",
"global_2": "Parallel Computing",
"global_3": "Learning Scheduler",
"global_4": "Distributed Grid",
"demand_1": "Forum Hype",
"demand_2": "Tech Influencers",
"demand_3": "Exchange Listing",
"demand_4": "Global Hype Cycle",
"value_1": "Shiny Whitepaper",
"value_2": "Celebrity Endorsement",
"value_3": "To The Moon",
"mat_eff_1": "Efficient PSU",
"mat_eff_2": "Low-Power Chips",
"mat_disc_1": "Off-Peak Contract",
"mat_disc_2": "Own Solar Farm",
"stack_1": "Bigger Batteries",
"stack_2": "Capacitor Banks",
"stack_3": "Grid Substation",
"stack_4": "Dedicated Power Line",
"stack_5": "Private Power Plant",
"auto_buy": "Smart Power Meter"
}
}
}
+55
View File
@@ -0,0 +1,55 @@
{
"theme": {
"name": "Ordinateurs et GalliumCoin",
"title": "Laboratoire de minage GalliumCoin",
"res": { "units": "Puissance CPU", "unit": "cycle", "funds": "GalliumCoin", "material": "Énergie (W)" },
"fmt": { "funds": "{value} GAL" },
"action": { "make": "Lancer un calcul", "buyMaterial": "Acheter de l'énergie" },
"gen": {
"gen1": { "name": "Vieux portable", "desc": "Les ventilateurs hurlent, mais il calcule encore." },
"gen2": { "name": "PC gamer", "desc": "Les LED RGB ajoutent au moins 10 % de puissance." },
"gen3": { "name": "Rig de minage GPU", "desc": "Six cartes graphiques et une prière." },
"gen4": { "name": "Baie de serveurs", "desc": "Quarante-deux unités de lumières clignotantes." },
"gen5": { "name": "Centre de données", "desc": "Un entrepôt de baies et une centrale de refroidissement industrielle." },
"gen6": { "name": "Mainframe quantique", "desc": "Calcule toutes les possibilités à la fois." }
},
"upg": {
"click_1": "Clavier mécanique",
"click_2": "Macros de clavier",
"click_3": "Interface neuronale",
"g1_a": "Pâte thermique",
"g1_b": "Réinstallation propre",
"g2_a": "Watercooling",
"g2_b": "Overclocking",
"g3_a": "BIOS personnalisé",
"g3_b": "Réglage des timings mémoire",
"g4_a": "Disques à chaud",
"g4_b": "Répartiteur de charge",
"g5_a": "Lignes électriques redondantes",
"g5_b": "Refroidissement naturel (site arctique)",
"g6_a": "Liquide cryogénique",
"g6_b": "Qubits intriqués",
"global_1": "Mise à jour du firmware",
"global_2": "Calcul parallèle",
"global_3": "Ordonnanceur apprenant",
"global_4": "Grille distribuée",
"demand_1": "Buzz sur les forums",
"demand_2": "Influenceurs tech",
"demand_3": "Cotation sur une plateforme",
"demand_4": "Cycle de hype mondial",
"value_1": "Livre blanc clinquant",
"value_2": "Soutien d'une célébrité",
"value_3": "Vers la Lune",
"mat_eff_1": "Alimentation efficace",
"mat_eff_2": "Puces basse consommation",
"mat_disc_1": "Contrat heures creuses",
"mat_disc_2": "Ferme solaire perso",
"stack_1": "Batteries plus grosses",
"stack_2": "Bancs de condensateurs",
"stack_3": "Poste de transformation",
"stack_4": "Ligne électrique dédiée",
"stack_5": "Centrale privée",
"auto_buy": "Compteur intelligent"
}
}
}
+15
View File
@@ -0,0 +1,15 @@
/* Computers: a dark control-room console. */
:root[data-theme='computers'] {
color-scheme: dark;
--bg: #0d1117;
--surface: #161b22;
--surface-2: #21262d;
--text: #e6edf3;
--text-muted: #9aa5b1;
--border: #30363d;
--accent: #1f6feb;
--accent-contrast: #ffffff;
--danger: #f85149;
--radius: 6px;
--font: 'Segoe UI', Inter, system-ui, -apple-system, sans-serif;
}
+4
View File
@@ -0,0 +1,4 @@
{
"order": 5,
"assets": {}
}
+1 -1
View File
@@ -19,7 +19,7 @@ test('resolveSafe stays inside the public directory', () => {
test('/api/themes lists installed themes with their languages', async () => {
const themes = await handleApi(PUBLIC_DIR, '/api/themes');
const ids = themes.map((t) => t.id);
for (const id of ['paperclip', 'witch', 'alien', 'insects']) assert.ok(ids.includes(id), id);
for (const id of ['paperclip', 'witch', 'alien', 'insects', 'computers']) assert.ok(ids.includes(id), id);
assert.deepEqual(themes.find((t) => t.id === 'paperclip').locales, ['en', 'fr']);
});