# RazorConsole — Контрибьюция ## Начало работы - **Для крупных PR, рефакторингов, новых фич** — сначала создай Issue для обсуждения - **Discord:** https://discord.gg/DphHAnJxCM — мейнтейнеры активны там ## Настройка окружения разработки ### Требования - .NET 8.0 или 9.0 SDK - Git LFS (для крупных медиафайлов) ### Клонирование ```bash git lfs install git clone https://github.com/RazorConsole/RazorConsole.git cd RazorConsole dotnet build RazorConsole.slnx dotnet test RazorConsole.slnx ``` ## Стандарты кода - Следовать правилам `.editorconfig` (4 пробела, file-scoped namespaces, System usings первые) - Предпочитать `async/await` с `ConfigureAwait(false)` в библиотечном коде - Public API: nullable-enabled, документировать исключения и edge cases - Spectre.Console renderables — immutable вне rendering loops ## Перед отправкой PR ```bash dotnet format RazorConsole.slnx # форматирование dotnet test RazorConsole.slnx # тесты (должны пройти на Linux и Windows) ``` При изменениях в focus/keyboard handling — добавить/обновить тесты в `FocusManagerTests` или `KeyboardEventManagerTests`. ## Процесс PR 1. Создать Issue для крупных изменений 2. Форкнуть репозиторий, создать ветку от `main` 3. Сделать изменения, соблюдая стандарты кода 4. Написать/обновить тесты 5. Запустить `dotnet format` и `dotnet test` 6. Отправить PR с описанием изменений ## Структура тестов - Тесты находятся в `src/RazorConsole.Tests` - CI требует чистого прохождения на Linux и Windows - Покрытие: Codecov (Cobertura format) ## Документация - `README.md` — обновлять при user-facing изменениях - XML doc-комментарии для public API - `examples/` — добавлять примеры для новых фич - `design-doc/` — архитектурные заметки ## Git LFS Отслеживаемые типы файлов: `*.gif`, `*.png`, `*.jpg`, `*.jpeg`, `*.mp4`, `*.mov`, `*.avi`, `*.zip`, `*.tar.gz`, `*.pdf`. ## Релизный процесс Создание GitHub Release запускает `.github/workflows/release.yml` — сборка, тесты, паковка и публикация. Версии следуют семантическому версионированию.