70 lines
2.8 KiB
Markdown
70 lines
2.8 KiB
Markdown
# 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` — сборка, тесты, паковка и публикация. Версии следуют семантическому версионированию.
|