Разработка
Сборка из исходников, архитектура, тесты и правила участия в проекте.
- Бэкенд: Go 1.25+, Wails 2.11, SQLite.
- Фронтенд: React 19, TypeScript (strict), Vite 8, Tailwind 4, TanStack Query v5, zustand v5, Radix UI, i18next.
- Платформы: Windows x64, Linux x64 (GTK3 + WebKitGTK 4.1).
Сборка из исходников
Заголовок раздела «Сборка из исходников»Требования: Go 1.25+, Node.js 22+, Wails 2.11, C-компилятор и платформенные зависимости Wails.
git clone https://github.com/AmadoMuerte/Waxlight-launcher.gitcd Waxlight-launchernpm ci --include=dev --prefix frontendgo install github.com/wailsapp/wails/v2/cmd/wails@v2.11.0cd cmd/waxlightwails devПродакшн-сборка из корня репозитория:
make wails-buildАрхитектура
Заголовок раздела «Архитектура»Go-код разделён на слои:
| Слой | Назначение |
|---|---|
internal/app | Composition root (wire.go, adapters.go): конструирует все зависимости, владеет startup/shutdown |
internal/<feature> | Фичи: accounts, instances, versions, launching, sessions, mods, snapshots, recovery, servers, settings, operations, updates, telemetry, statistics, gamelog, downloads, events, mutations, errs |
internal/platform/* | Адаптеры: sqlite, snapshots, process, logging, dataroot, credentials, filesystem, downloader, каталоги модов/серверов и т.д. |
internal/transport/wails | Wails-контроллеры и DTO |
cmd/waxlight/main.go запускает Wails; логика фич не зависит от Wails и React. Полная архитектура бэкенда описана в docs/backend-architecture.md. Фронтенд организован по Feature-Sliced Design (app/, pages/, features/, entities/, shared/, widgets/); обращения к бэкенду — только через frontend/src/shared/api.
Проверки и тесты
Заголовок раздела «Проверки и тесты»make test # продакшн-сборка фронтенда (i18n + tsc), затем Go и frontend-тестыmake format # gofmt + oxfmtmake lint # статический анализ Go (Linux target) + oxlintmake vet # go vet для текущей платформыmake security # проверки запрещённых паттернов и уязвимостейmake release-check VERSION=X.Y.Z # полная релизная валидацияТочечные Go-тесты: go test ./path/to/package -run TestName. Pre-commit hook запускает make format-check lint и блокирует коммит при ошибках.
Ветвление и PR
Заголовок раздела «Ветвление и PR»main— стабильная продакшн-ветка;dev— интеграционная.- Рабочие ветки создаются от
devс префиксамиfeat/,fix/,refactor/,chore/,docs/,test/,ci/. - Обычные PR целятся в
dev; вmainдопустим только PRdev → mainдля релизной промоции. - Прямые коммиты в
mainиdevзапрещены; force-push запрещён.
Правила безопасности для контрибьюторов
Заголовок раздела «Правила безопасности для контрибьюторов»- Никогда не помещайте пароли, TOTP-коды, pre-login токены, ключи сессий и подписи в DTO, биндинги, логи, ошибки, фикстуры, URL, аргументы процессов, переменные окружения и экспорты.
- Продакшн-учётные данные — только нативное хранилище ОС; plaintext- и in-memory-fallback запрещены.
- Функции копирования/экспорта/диагностики инстансов обязаны удалять четыре аутентификационных свойства из
clientsettings.json. - Логирование — только через
internal/platform/logging(slog); stdliblogи вывод в stdout запрещены.
Локализация
Заголовок раздела «Локализация»Каноническая локаль — frontend/src/shared/i18n/locales/en.json: переводятся только значения, ключи, интерполяции {{...}} и плюральные суффиксы сохраняются. Проверка: npm run check:i18n --prefix frontend. Новый язык требует регистрации в languages.ts, i18n/index.ts и бэкенд-валидации. Интерфейс уже доступен на 10 языках: English, Русский, Беларуская, Español, Français, Deutsch, Қазақша, Polski, Svenska, Português.
Как помочь
Заголовок раздела «Как помочь»Код, переводы, тестирование, документация, баг-репорты и сфокусированные предложения приветствуются. Перед PR прочитайте CONTRIBUTING.md. Об уязвимостях сообщайте приватно по политике безопасности. Вопросы и обсуждения — в Discord.