summaryrefslogtreecommitdiffstats
path: root/templates/base.html
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-07-29 01:03:24 +0200
committersalmonik <salmonik@tuta.io>2026-07-29 01:03:24 +0200
commit74d2ada067bd2fd9436710ab7ac260e0eddf1314 (patch)
tree1f791bb895a611d8e729a735ba098a647808a157 /templates/base.html
parentcreate example config on startup (diff)
downloadminecraft-ui-74d2ada067bd2fd9436710ab7ac260e0eddf1314.tar.gz
minecraft-ui-74d2ada067bd2fd9436710ab7ac260e0eddf1314.zip
Add per-instance mod management with client-side detection
- New mod validation engine (src/mods.rs) with constant-pool class-file scanning: detects server-side content (block, tileentity, command, worldgen) vs client-only API (gui, renderer, forge/client) - 7 client-only mods correctly detected (AppleSkin, CraftingTweaks, Durability101, EnchantmentDescriptions, InventoryHUD, MouseTweaks, TrashSlot); 51 server-capable; 1 unknown - Routes + templating for mod upload (jar/zip), listing, delete, rescan - Multipart upload with 500MB limit (bypasses axum's default 2MB) - Per-instance mod summary card on edit page - Whitelist toggle checkbox on edit page (persisted, drives ENABLE_WHITELIST) - Dynamic Java image tag (java8/java17/java21) based on MC version - Class scan is informational-only; rejection based on metadata side=CLIENT - has_modpack flag cleanup on mod delete - Remove hx-boost from <body> (was corrupting multipart uploads)
Diffstat (limited to 'templates/base.html')
-rw-r--r--templates/base.html50
1 files changed, 24 insertions, 26 deletions
diff --git a/templates/base.html b/templates/base.html
index 3a92cd0..0af5d57 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -1,37 +1,35 @@
1<!DOCTYPE html> 1<!doctype html>
2<html lang="en"> 2<html lang="en">
3<head> 3 <head>
4 <meta charset="UTF-8"> 4 <meta charset="UTF-8" />
5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6 <title>Minecraft UI</title> 6 <title>Minecraft UI</title>
7 <script src="/static/htmx.min.js"></script> 7 <script src="/static/htmx.min.js"></script>
8 <link rel="stylesheet" href="/static/style.css"> 8 <link rel="stylesheet" href="/static/style.css" />
9</head> 9 </head>
10<body hx-boost="true"> 10 <body>
11 <nav> 11 <nav hx-boost="true">
12 <span class="brand">Minecraft UI</span> 12 <span class="brand">Minecraft UI</span>
13 <div class="nav-links"> 13 <div class="nav-links">
14 <a href="/">Dashboard</a> 14 <a href="/">Dashboard</a>
15 <a href="/instances">Instances</a> 15 <a href="/instances">Instances</a>
16 <a href="/players">Players</a> 16 <a href="/players">Players</a>
17 {% if is_superuser %} 17 {% if is_superuser %}
18 <a href="/accounts">Accounts</a> 18 <a href="/accounts">Accounts</a>
19 {% endif %} 19 {% endif %}
20 <span class="nav-user">{{ username }}</span> 20 <span class="nav-user">{{ username }}</span>
21 <form action="/logout" method="post" style="display:inline"> 21 <form action="/logout" method="post" style="display: inline">
22 <button type="submit" class="btn-link">Logout</button> 22 <button type="submit" class="btn-link">Logout</button>
23 </form> 23 </form>
24 </div> 24 </div>
25 </nav> 25 </nav>
26 26
27 {% if password_change_required %} 27 {% if password_change_required %}
28 <div class="flash flash-warn"> 28 <div class="flash flash-warn">
29 You must change your password before continuing. 29 You must change your password before continuing.
30 </div> 30 </div>
31 {% endif %} 31 {% endif %}
32 32
33 <main> 33 <main>{% block content %}{% endblock %}</main>
34 {% block content %}{% endblock %} 34 </body>
35 </main>
36</body>
37</html> 35</html>