Email validation: - Replace @/. check with net/mail.ParseAddress on register - Add size limit check (max 254 chars, RFC 5321) CI/CD Pipeline: - Add .gitea/workflows/ci.yml (lint → test → build → docker push) - Registry: gitea.mrixs.me/Mrixs/MrixsCraft-server - Push only on main branch Database: - Add migrations/002_migration_history.sql (tracking applied migrations) - Add migrations/README.md (manual apply instructions) Web Templates: - Add base.html with Minecraft-themed layout (dark + green accent) - Add index.html, login.html, register.html with POST forms - Rewrite templates.go for data-driven rendering with pageData struct - Fallback placeholder preserved when templates dir missing
- CAS: GET /files/{hash} with immutable cache headers, launcher asset serving, hash validation, StoreFile/VerifyAndStore helpers - Middleware: CORS, request logging, per-IP token bucket rate limiter - Utils: SHA1Bytes, SHA256Bytes, SHA1File, Unzip with zip-slip protection - Templates: placeholder handler with html/template discovery - Wire CAS routes and middleware chain (Logging → CORS) in main.go