# 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/) - Добавляйте комментарии для сложной логики ### Структура коммитов ``` : <краткое описание> <подробное описание (опционально)> ``` Типы: - `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).