<feed xmlns='http://www.w3.org/2005/Atom'>
<title>minecraft-ui/templates/instances, branch master</title>
<subtitle>Everyone-is-equal self-hosted UI for minecraft server hosting.
</subtitle>
<id>https://git.2137697.xyz/minecraft-ui/atom?h=master</id>
<link rel='self' href='https://git.2137697.xyz/minecraft-ui/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/minecraft-ui/'/>
<updated>2026-07-29T10:21:32Z</updated>
<entry>
<title>Config editor, host networking, whitelist RCON</title>
<updated>2026-07-29T10:21:32Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-07-29T10:21:32Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/minecraft-ui/commit/?id=bc0d3d2f324ee613424ee31103207222b4b19640'/>
<id>urn:sha1:bc0d3d2f324ee613424ee31103207222b4b19640</id>
<content type='text'>
- Config file editor at /instances/{id}/config (browse &amp; edit config/ files)
- Host networking for Docker container (fixes WireGuard MTU DNS issues)
- Whitelist changes applied live via RCON instead of stopping the server
- Config edit handler detects which fields changed: whitelist → RCON,
  other settings → restart container
- walk_dir simplified (removed unused root param)
- import_world uses if-let instead of never-looping while-let
- docker-compose.yml updated as reference template
</content>
</entry>
<entry>
<title>Security audit fixes: patch 16 vulnerabilities across 7 source files</title>
<updated>2026-07-29T00:24:41Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-07-29T00:24:41Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/minecraft-ui/commit/?id=c654a6d17eb58adbb15b9c47ab32bcc3a1666307'/>
<id>urn:sha1:c654a6d17eb58adbb15b9c47ab32bcc3a1666307</id>
<content type='text'>
CRITICAL:
- Instance name path traversal (AP-001): sanitize::sanitize_instance_name()
  strips .., /, \, \0, spaces, special chars at all 12 join call sites
- Zip-slip protection in world import: starts_with() guard after enclosed_name()

HIGH:
- RCON command injection: validate_username() rejects non-MC usernames
  across all 6 player action macros (whitelist, op, ban)
- Level-seed properties injection: sanitize_seed() strips \n \r = : \0
- CSRF protection: SameSite=Lax -&gt; SameSite=Strict on session cookie

MEDIUM:
- Session TTL: server-side 24h expiry via strftime check in require_auth
- Rate limiting: in-memory 10-ip/5min sliding window on login
- Background task stale is_active: all queries use concrete WHERE id=?1
- Mod validation DoS: 500MB cap, 10k class scan limit, 10k CP entry cap

LOW:
- Logout auth guard: moved into protected route group + CurrentUser param
- Mod orphan race: DB insert before file write
- Backup orphan race: DB insert before ZIP creation
- Template fix: broken Askama == comparisons in edit.html

All fixes compile clean with zero warnings. 10 unit tests pass.
</content>
</entry>
<entry>
<title>Add per-instance mod management with client-side detection</title>
<updated>2026-07-28T23:03:24Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-07-28T23:03:24Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/minecraft-ui/commit/?id=74d2ada067bd2fd9436710ab7ac260e0eddf1314'/>
<id>urn:sha1:74d2ada067bd2fd9436710ab7ac260e0eddf1314</id>
<content type='text'>
- 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 &lt;body&gt; (was corrupting multipart uploads)
</content>
</entry>
<entry>
<title>remove unused code, also, third stable</title>
<updated>2026-07-12T20:06:54Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-07-12T20:06:54Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/minecraft-ui/commit/?id=ce30a8732c21a1c936ac560b5c94576df2e26b22'/>
<id>urn:sha1:ce30a8732c21a1c936ac560b5c94576df2e26b22</id>
<content type='text'>
</content>
</entry>
<entry>
<title>second stable</title>
<updated>2026-07-12T19:35:25Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-07-12T19:35:25Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/minecraft-ui/commit/?id=9ad52d0151086252e6d8a3e60dc5b8cd4bfd5465'/>
<id>urn:sha1:9ad52d0151086252e6d8a3e60dc5b8cd4bfd5465</id>
<content type='text'>
</content>
</entry>
<entry>
<title>first stable</title>
<updated>2026-07-12T17:38:03Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-07-12T17:38:03Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/minecraft-ui/commit/?id=ae7ef10b67737f08a86743f687bca30a12e9e17a'/>
<id>urn:sha1:ae7ef10b67737f08a86743f687bca30a12e9e17a</id>
<content type='text'>
</content>
</entry>
</feed>
