# LoVisual Launcher (Rust + Slint) ## Правила (ОБЯЗАТЕЛЬНЫЕ, нарушение = откат) - **KISS / DRY / SOLID** — простая структура, без оверинжиниринга - **Макс. 200 строк на файл** — превышение = разбить на модули - **Макс. 3 файла на папку** — больше = новая подпапка по смыслу - **Обязательное прохождение:** `cargo fmt` + `cargo clippy --all-targets` (ноль ошибок) + `cargo test` - **Запрещено `#[allow(dead_code)]`** — мёртвый код удаляется, не прячется - **unsafe запрещён в нашем коде** (сгенерированный Slint-код — исключение, его не трогаем) - **Без пустышек** — модуль создаётся только с рабочей реализацией - **Каждый этап компилируется** — перед переходом к следующему --- ## Сделано - [x] Каркас: main.rs + api/ (health check в фоне) - [x] Окно логина (Slint): логин/пароль/статус - [x] Rust 2024 edition, актуальные версии пакетов - [x] Фоновая проверка `/health` бэкенда, статус в UI --- ## Фаза 1: API клиент (`src/api/`) - [ ] `auth.rs` — login/register (reqwest, таймауты, rename_all) - [ ] `profile.rs` — get/update/playtime/version check - [ ] Версия лаунчера читается из Cargo.toml (не хардкод) ## Фаза 2: Экраны (Slint) - [ ] login — реальный логин/регистрация через backend - [ ] dashboard — профиль, playtime, version check - [ ] settings — кастомная команда запуска (ЧИТАЕТСЯ на Play, не stale) ## Фаза 3: Launch - [ ] `src/launch/mod.rs` — запуск Minecraft (команда из настроек, защита от пустой строки) - [ ] `src/session/mod.rs` — save_session только при логине, удалять при logout ### Проверка после каждой фазы: `cargo fmt && cargo clippy --all-targets && cargo test`