Skip to content

Latest commit

 

History

History
77 lines (57 loc) · 5.66 KB

File metadata and controls

77 lines (57 loc) · 5.66 KB

Вклад в проект

Начало работы

  1. Сделайте форк репозитория
  2. Клонируйте свой форк
  3. Установите необходимое: .NET 10 SDK, Node.js 20+
  4. Выполните dotnet build для сборки всего проекта (включая фронтенд)
  5. Выполните dotnet run для запуска

Рабочий процесс разработки

  1. Создайте feature-ветку от main
  2. Внесите изменения, следуя Стандартам кода
  3. Проверьте: dotnet build должен завершиться без ошибок
  4. Для изменений фронтенда также проверьте cd Frontend && npx tsc --noEmit
  5. Сделайте коммит с понятным сообщением
  6. Откройте Pull Request

Примечание по иконкам Linux-пакетов

  • 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.

Добавление новой функции

Чек-лист

  1. Добавьте/обновите .NET-сервис в Services/{Core|Game|User}/
  2. Зарегистрируйте в Bootstrapper.cs, если сервис новый
  3. Добавьте IPC-обработчик и аннотацию @ipc в IpcService.cs
  4. Добавьте аннотацию @type, если нужен новый TypeScript-тип
  5. Перегенерируйте: node Scripts/generate-ipc.mjs (или dotnet build)
  6. Создайте React-компонент/страницу в Frontend/src/
  7. Добавьте маршрут в App.tsx, если это новая страница
  8. Обновите документацию в Docs/
  9. Убедитесь: dotnet build проходит без ошибок

Добавление IPC-канала

Подробное руководство см. в разделе Генерация 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