- feat: Фаза 1 ребрендинг combatant → lovisual + восстановление config - refactor: Фаза 2 — выкинуть Runtime/JarReplacement, заменить на Lifecycle - refactor: Фаза 3.5 — удалить читерские модули, ESP под легит - refactor: Фаза 3 — разбить Renderer2D (3379→2150 фасад + 14 хелперов ≤200) - refactor: Фаза 3 — разбить BetterChatRenderer (2870→210 фасад + 21 хелпер ≤200) - refactor: Фаза 3 — разбить UnifiedSettingRenderer (2798→208 фасад + 24 хелпера ≤200) - refactor: Фаза 3 — разбить ClickGuiRenderer (1887→542 фасад + 15 хелперов ≤200) - refactor: Фаза 3 — разбить NameTags (1791→438 фасад + 11 хелперов ≤200) - refactor: Фаза 3 — разбить TargetHud (1655→340 фасад + 11 хелперов ≤200) - refactor: Фаза 3 — разбить ESP (1538→269 фасад + 11 хелперов ≤200)
2.6 KiB
2.6 KiB
LoVisual Backend (Rust + axum)
Правила (ОБЯЗАТЕЛЬНЫЕ, нарушение = откат)
- KISS / DRY / SOLID — простая структура, без оверинжиниринга
- Макс. 200 строк на файл — превышение = разбить на модули
- Макс. 3 файла на папку — больше = новая подпапка по смыслу
- Обязательное прохождение:
cargo fmt+cargo clippy --all-targets(ноль ошибок) +cargo test - Запрещено
#[allow(dead_code)]— мёртвый код удаляется, не прячется - Запрещено
unsafe(в собственной логике; lints:unsafe_code = "forbid") - Без пустышек — модуль создаётся только с рабочей реализацией
- Каждый этап компилируется — перед переходом к следующему
- Ошибки JSON-декода не игнорировать — всегда
.context()/? user_idиз токена, не из тела запроса
Сделано
- Каркас: main.rs + server/{mod,config} + routes/{mod,health}
GET /health+ graceful shutdown (SIGTERM/SIGINT)- Config из env (LOVISUAL_HOST/PORT/CORS_ORIGINS), валидация на старте
- CORS (настраиваемые origins) + tower TraceLayer
- Rust 2024 edition, актуальные версии пакетов
Фаза 1: DB (SQLite, sqlx)
src/db/mod.rs— подключение, миграцииsrc/db/users.rs— таблица userssrc/db/configs.rs— облачные конфигиsrc/db/profiles.rs— профили, playtime, friends
Фаза 2: Auth
src/auth/mod.rs— argon2 + JWT (jsonwebtoken)src/auth/handlers.rs— register/login/logoutsrc/auth/middleware.rs— Bearer token → 401, не panic
Фаза 3: Profile API
src/profile/mod.rs— get/update/playtime/search/friends
Фаза 4: Configs API
src/config_api/mod.rs— upload/download- 16-byte share keys (минимум)
Фаза 5: IRC
src/irc/mod.rs— WebSocket хаб (axum + tokio-tungstenite)
Фаза 6: Middleware
- RateLimit — с cleanup-задачей (без утечки)
- Request logging через tracing