Спасибо за ваш интерес к развитию Mirage Desktop! Мы приветствуем вклад сообщества и ценим время, которое вы тратите на улучшение проекта.
- Кодекс поведения
- Как внести вклад
- Процесс разработки
- Стиль кода
- Структура коммитов
- Тестирование
- Сообщение об ошибках
Участвуя в этом проекте, вы соглашаетесь соблюдать профессиональную этику и уважительное отношение ко всем участникам сообщества.
- Проверьте, не была ли уже создана похожая issue
- Используйте шаблон issue для багрепортов
- Предоставьте максимально подробную информацию:
- Версию ОС и Qt
- Шаги для воспроизведения
- Ожидаемое и фактическое поведение
- Скриншоты или логи (если применимо)
- Создайте issue с описанием функции
- Обсудите реализацию с мейнтейнерами
- После одобрения можно приступать к разработке
- Форкните репозиторий
- Создайте ветку для вашей функции (
git checkout -b feature/amazing-feature) - Внесите изменения
- Закоммитьте изменения (
git commit -m 'Add amazing feature') - Запушьте в ветку (
git push origin feature/amazing-feature) - Откройте Pull Request
# Установите зависимости:
# - Visual Studio 2022/2025 с MSVC
# - Qt 6.8.3 или выше
# - OpenSSL 3.6.0 или выше
# - CMake 3.31 или выше
# - Ninja
# Клонируйте репозиторий
git clone https://github.com/yourusername/mirage-desktop.git
cd mirage-desktop
# Соберите проект
build-ninja.bat# Установите зависимости
# Для Ubuntu/Debian:
sudo apt install qt6-base-dev qt6-declarative-dev libssl-dev cmake ninja-build
# Для macOS:
brew install qt@6 openssl@3 cmake ninja
# Клонируйте и соберите
git clone https://github.com/yourusername/mirage-desktop.git
cd mirage-desktop
mkdir build && cd build
cmake -G Ninja ..
ninjaMirage Desktop/
├── src/
│ ├── admin/ # GUI приложение администратора
│ ├── client/ # Клиентская служба
│ └── common/ # Общие компоненты
│ ├── network/ # Сетевой слой
│ ├── crypto/ # Криптография
│ ├── protocol/ # Протокол связи
│ ├── capture/ # Захват экрана
│ ├── input/ # Инъекция ввода
│ └── utils/ # Утилиты
├── qml/ # QML интерфейсы
├── resources/ # Ресурсы (иконки, шрифты)
└── installers/ # Скрипты установщиков
Мы следуем Qt Coding Conventions:
- Используйте camelCase для переменных и функций
- Используйте PascalCase для классов
- Используйте UPPER_CASE для констант
- Префикс
m_для членов класса - Префикс
s_для статических членов - Всегда используйте
explicitдля конструкторов с одним параметром
class ExampleClass {
public:
explicit ExampleClass(int value);
void doSomething();
int getValue() const { return m_value; }
private:
int m_value;
static int s_instanceCount;
};// Используйте 4 пробела для отступов
Item {
id: root
width: 200
height: 100
// Группируйте свойства логически
property string title: "Example"
property int count: 0
// Сигналы
signal clicked()
// Дочерние элементы
Rectangle {
anchors.fill: parent
color: "lightblue"
}
}- Используйте
//для однострочных комментариев - Используйте
/** */для документации классов и функций - Пишите комментарии на английском языке
- Комментируйте "почему", а не "что"
/**
* @brief Encrypts data using AES-256-GCM
* @param data The data to encrypt
* @param key The encryption key (must be 32 bytes)
* @return Encrypted data with authentication tag
*/
QByteArray encrypt(const QByteArray& data, const QByteArray& key);Используйте Conventional Commits:
<type>(<scope>): <subject>
<body>
<footer>
feat: Новая функцияfix: Исправление багаdocs: Изменения в документацииstyle: Форматирование, отсутствие изменений в кодеrefactor: Рефакторинг кодаperf: Улучшение производительностиtest: Добавление тестовchore: Изменения в сборке, CI/CD
feat(admin): add dark mode support
- Add theme switcher in settings
- Implement dark color scheme
- Save theme preference
Closes #123
fix(capture): resolve memory leak in screen capture
The DirectX texture was not being properly released
after each frame capture.
Fixes #456
- Убедитесь, что проект собирается без ошибок
- Проверьте, что не добавлены предупреждения компилятора
- Протестируйте изменения вручную
- Запустите автоматические тесты (если есть)
# Сборка в режиме отладки
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug ..
ninja
# Сборка в режиме релиза
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ..
ninja- Краткое описание - одно предложение, описывающее проблему
- Шаги воспроизведения - пошаговая инструкция
- Ожидаемое поведение - что должно было произойти
- Фактическое поведение - что произошло на самом деле
- Окружение:
- ОС и версия
- Версия Qt
- Версия Mirage Desktop
- Версия компилятора
- Логи и скриншоты - если применимо
**Описание проблемы**
Краткое описание бага.
**Шаги воспроизведения**
1. Откройте приложение
2. Нажмите на '...'
3. Наблюдайте ошибку
**Ожидаемое поведение**
Описание того, что должно было произойти.
**Фактическое поведение**
Описание того, что произошло.
**Окружение**
- ОС: Windows 11 64-bit
- Qt версия: 6.8.3
- Mirage версия: 1.0.0
- Компилятор: MSVC 19.50
**Логи**[Вставьте логи здесь]
**Скриншоты**
[Приложите скриншоты, если нужно]
Внося вклад в проект, вы соглашаетесь с тем, что ваш код будет распространяться под той же лицензией, что и сам проект (см. LICENSE).
Все права на внесенный код переходят к правообладателю проекта Mirage Desktop, но авторство сохраняется за вами.
Если у вас есть вопросы о процессе разработки:
- Откройте issue с меткой
question - Используйте раздел GitHub Discussions
- Свяжитесь с мейнтейнерами
Спасибо за ваш вклад! 🎉