Some checks are pending
CI / Check (pull_request) Waiting to run
CI / Format (pull_request) Waiting to run
CI / Clippy (pull_request) Waiting to run
CI / Build (macos-latest) (pull_request) Waiting to run
CI / Build (ubuntu-latest) (pull_request) Waiting to run
CI / Build (windows-latest) (pull_request) Waiting to run
126 lines
4.7 KiB
Markdown
126 lines
4.7 KiB
Markdown
# Contributing to tele-tui
|
||
|
||
Спасибо за интерес к проекту! Мы рады любому вкладу.
|
||
|
||
## Как помочь проекту
|
||
|
||
### Сообщить о баге
|
||
|
||
1. Проверьте, нет ли уже такого issue в [Issues](https://github.com/your-username/tele-tui/issues)
|
||
2. Создайте новый issue с описанием:
|
||
- Шаги для воспроизведения
|
||
- Ожидаемое поведение
|
||
- Фактическое поведение
|
||
- Версия ОС и Rust
|
||
- Логи (если есть)
|
||
|
||
### Предложить новую фичу
|
||
|
||
1. Проверьте [ROADMAP.md](ROADMAP.md) — возможно, эта фича уже запланирована
|
||
2. Создайте issue с меткой `enhancement`
|
||
3. Опишите:
|
||
- Зачем нужна эта фича
|
||
- Как она должна работать
|
||
- Примеры использования
|
||
|
||
### Внести код
|
||
|
||
1. **Fork** репозитория
|
||
2. Создайте **feature branch**: `git checkout -b feature/amazing-feature`
|
||
3. Прочитайте [DEVELOPMENT.md](DEVELOPMENT.md) для понимания процесса разработки
|
||
4. Внесите изменения
|
||
5. Протестируйте локально
|
||
6. Commit: `git commit -m 'Add amazing feature'`
|
||
7. Push: `git push origin feature/amazing-feature`
|
||
8. Создайте **Pull Request**
|
||
|
||
## Правила кода
|
||
|
||
### Стиль кода
|
||
|
||
- Используйте `cargo fmt` перед коммитом
|
||
- Следуйте [Rust API Guidelines](https://rust-lang.github.io/api-guidelines/)
|
||
- Добавляйте комментарии для сложной логики
|
||
|
||
### Структура коммитов
|
||
|
||
```
|
||
<type>: <краткое описание>
|
||
|
||
<подробное описание (опционально)>
|
||
```
|
||
|
||
Типы:
|
||
- `feat`: новая фича
|
||
- `fix`: исправление бага
|
||
- `refactor`: рефакторинг без изменения функциональности
|
||
- `docs`: изменения в документации
|
||
- `style`: форматирование, отступы
|
||
- `test`: добавление тестов
|
||
- `chore`: обновление зависимостей, конфигурации
|
||
|
||
Примеры:
|
||
```
|
||
feat: add emoji reactions to messages
|
||
|
||
fix: correct timezone offset calculation
|
||
|
||
docs: update installation instructions
|
||
```
|
||
|
||
### Тестирование
|
||
|
||
- Протестируйте вручную все изменения
|
||
- Опишите сценарии тестирования в PR
|
||
- Убедитесь, что `cargo build` проходит без ошибок
|
||
- Убедитесь, что `cargo fmt` и `cargo clippy` не дают предупреждений
|
||
|
||
## Процесс Review
|
||
|
||
1. Maintainer проверит ваш PR
|
||
2. Возможны комментарии и запросы на изменения
|
||
3. После одобрения PR будет смержен
|
||
4. Ваш вклад появится в следующем релизе
|
||
|
||
## Архитектура проекта
|
||
|
||
Перед началом работы рекомендуем ознакомиться:
|
||
|
||
- [REQUIREMENTS.md](REQUIREMENTS.md) — функциональные требования
|
||
- [CONTEXT.md](CONTEXT.md) — текущий статус и архитектурные решения
|
||
- [ROADMAP.md](ROADMAP.md) — план развития
|
||
|
||
### Структура кода
|
||
|
||
```
|
||
src/
|
||
├── main.rs # Event loop, инициализация
|
||
├── config.rs # Конфигурация
|
||
├── app/ # Состояние приложения
|
||
├── ui/ # Отрисовка UI
|
||
├── input/ # Обработка ввода
|
||
├── utils.rs # Утилиты
|
||
└── tdlib/ # TDLib интеграция
|
||
```
|
||
|
||
### Ключевые принципы
|
||
|
||
1. **Неблокирующий UI**: TDLib updates в отдельном потоке
|
||
2. **Оптимизация памяти**: LRU кеши, лимиты на коллекции
|
||
3. **Vim-style навигация**: консистентные хоткеи
|
||
4. **Graceful degradation**: fallback для отсутствующих данных
|
||
|
||
## Code of Conduct
|
||
|
||
- Будьте вежливы и уважительны
|
||
- Конструктивная критика приветствуется
|
||
- Фокус на технических аспектах
|
||
|
||
## Вопросы?
|
||
|
||
Создайте issue с меткой `question` или свяжитесь с maintainers.
|
||
|
||
## Лицензия
|
||
|
||
Внося код в этот проект, вы соглашаетесь с лицензией [MIT](LICENSE).
|