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
4.7 KiB
4.7 KiB
Contributing to tele-tui
Спасибо за интерес к проекту! Мы рады любому вкладу.
Как помочь проекту
Сообщить о баге
- Проверьте, нет ли уже такого issue в Issues
- Создайте новый issue с описанием:
- Шаги для воспроизведения
- Ожидаемое поведение
- Фактическое поведение
- Версия ОС и Rust
- Логи (если есть)
Предложить новую фичу
- Проверьте ROADMAP.md — возможно, эта фича уже запланирована
- Создайте issue с меткой
enhancement - Опишите:
- Зачем нужна эта фича
- Как она должна работать
- Примеры использования
Внести код
- Fork репозитория
- Создайте feature branch:
git checkout -b feature/amazing-feature - Прочитайте DEVELOPMENT.md для понимания процесса разработки
- Внесите изменения
- Протестируйте локально
- Commit:
git commit -m 'Add amazing feature' - Push:
git push origin feature/amazing-feature - Создайте Pull Request
Правила кода
Стиль кода
- Используйте
cargo fmtперед коммитом - Следуйте Rust 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
- Maintainer проверит ваш PR
- Возможны комментарии и запросы на изменения
- После одобрения PR будет смержен
- Ваш вклад появится в следующем релизе
Архитектура проекта
Перед началом работы рекомендуем ознакомиться:
- REQUIREMENTS.md — функциональные требования
- CONTEXT.md — текущий статус и архитектурные решения
- ROADMAP.md — план развития
Структура кода
src/
├── main.rs # Event loop, инициализация
├── config.rs # Конфигурация
├── app/ # Состояние приложения
├── ui/ # Отрисовка UI
├── input/ # Обработка ввода
├── utils.rs # Утилиты
└── tdlib/ # TDLib интеграция
Ключевые принципы
- Неблокирующий UI: TDLib updates в отдельном потоке
- Оптимизация памяти: LRU кеши, лимиты на коллекции
- Vim-style навигация: консистентные хоткеи
- Graceful degradation: fallback для отсутствующих данных
Code of Conduct
- Будьте вежливы и уважительны
- Конструктивная критика приветствуется
- Фокус на технических аспектах
Вопросы?
Создайте issue с меткой question или свяжитесь с maintainers.
Лицензия
Внося код в этот проект, вы соглашаетесь с лицензией MIT.