- Сделайте форк репозитория
- Клонируйте свой форк
- Установите необходимое: .NET 10 SDK, Node.js 20+
- Выполните
dotnet buildдля сборки всего проекта (включая фронтенд) - Выполните
dotnet runдля запуска
- Создайте feature-ветку от
main - Внесите изменения, следуя Стандартам кода
- Проверьте:
dotnet buildдолжен завершиться без ошибок - Для изменений фронтенда также проверьте
cd Frontend && npx tsc --noEmit - Сделайте коммит с понятным сообщением
- Откройте Pull Request
Build/теперь генерируется во время упаковки; исходная иконка —Frontend/public/icon.png.- Для Linux-пакетов (включая Flatpak)
Scripts/publish.shгенерируетBuild/icons/в hicolor-формате с app-id иконками (io.github.HyPrismTeam.HyPrism), чтобы иконка корректно экспортировалась после установки. - Linux package app ID:
io.github.HyPrismTeam.HyPrism. - AppStream-метаданные для Linux-пакетов берутся из
Properties/linux/io.github.HyPrismTeam.HyPrism.metainfo.xml. - На этапе repack для RPM намеренно удаляется payload
/usr/lib/.build-id, а системные директории (/,/usr,/usr/lib) не добавляются как владельцы пакета — это предотвращает конфликты установки на Fedora. - Для Flatpak используется runtime/base
25.08; в CI remotes Flathub добавляются на system и user уровнях, чтобы flatpak-builder мог ставить зависимости, после чегоorg.freedesktop.Platform,org.freedesktop.Sdkиorg.electronjs.Electron2.BaseAppустанавливаются на system-уровень. - Linux CI выводит диагностику remotes/runtimes Flatpak, чтобы быстрее разбирать сбои flatpak-bundler.
- Добавьте/обновите .NET-сервис в
Services/{Core|Game|User}/ - Зарегистрируйте в
Bootstrapper.cs, если сервис новый - Добавьте IPC-обработчик и аннотацию
@ipcвIpcService.cs - Добавьте аннотацию
@type, если нужен новый TypeScript-тип - Перегенерируйте:
node Scripts/generate-ipc.mjs(илиdotnet build) - Создайте React-компонент/страницу в
Frontend/src/ - Добавьте маршрут в
App.tsx, если это новая страница - Обновите документацию в
Docs/ - Убедитесь:
dotnet buildпроходит без ошибок
Подробное руководство см. в разделе Генерация IPC-кода.
Подробное руководство см. в разделе Добавление зеркала.
| Файл | Влияние | Правило |
|---|---|---|
ClientPatcher.cs |
Целостность игры | Никогда не изменяйте без явных инструкций |
Program.cs |
Точка входа приложения | Изменения влияют на весь процесс запуска |
Bootstrapper.cs |
Настройка DI | Критические изменения влияют на все сервисы |
IpcService.cs |
IPC-мост | Должен быть синхронизирован с фронтендом |
preload.js |
Граница безопасности | Только минимальные изменения |
Каждое изменение должно включать обновление документации:
- Пользовательская документация — при изменении UI или поведения функций
- Документация для разработчиков — при изменении процесса сборки/CI/рабочих процессов
- Документация API — при добавлении, переименовании или удалении IPC-каналов
Документация на английском и русском языках должна быть обновлена.
- Соответствует стандартам кода (именование, фигурные скобки, суффикс Async)
- Нет захардкоженных значений — используйте конфигурацию, токены темы, ключи локализации
- Изменения IPC обновляют C#-аннотации и проверяют сгенерированный результат
- Нет ссылок на устаревшую директорию
UI/ - Нет ручных правок в
Frontend/src/lib/ipc.ts