Як зробити внесок у проєкт¶
Цей гайд пояснює, як робити внески в JAAM Fusion: від простих правок документації до змін прошивки та веб‑інтерфейсу.
Якщо ви вперше в проєкті — почніть з пунктів "Перед стартом" і "Швидкий процес".
Перед стартом¶
Де відбувається розробка¶
- Репозиторій: JAAM Fusion на GitHub
- Баги/задачі: Issues
- Обговорення/питання: Чат проєкту
Ліцензія¶
Проєкт ліцензовано під CC BY‑NC‑SA 4.0.
- Для некомерційного використання — вільно (з атрибуцією та ShareAlike).
- Для комерційного використання потрібен письмовий дозвіл.
Деталі: файл LICENSE у корені репозиторію.
Типи внесків¶
Ви можете допомогти в різних напрямках:
- Документація (Wiki/MkDocs): виправлення неточностей, доповнення інструкцій, скріншоти.
- Прошивка (C++): багфікси, оптимізація, нові функції.
- Веб‑інтерфейс:
- фронтенд (
web/scripts.js,web/styles.css) - UI schema / контроли (
web/controls.json,web/ui_schema_*.json) - Якість: відтворювані багрепорти, перевірка на різних платах, логи.
Швидкий процес (PR)¶
- Створіть issue (або оберіть існуючий).
- Зробіть fork репозиторію.
- Створіть гілку:
fix/...для багфіксівdocs/...для документаціїfeature/...для нових можливостей- Внесіть зміни, перевірте збірку.
- Відкрийте Pull Request:
- опишіть що змінено і чому
- додайте посилання на issue
- додайте кроки перевірки/відтворення
Налаштування середовища¶
Збірка прошивки¶
Проєкт збирається через PlatformIO.
- Детальна інструкція для Windows/macOS/Linux: Збірка проєкту
Збірка документації¶
Документація в цьому репозиторії збирається через MkDocs.
Рекомендований швидкий чек (якщо у вас налаштований .venv):
Note
Якщо у вас інше середовище Python — використовуйте той інтерпретатор/venv, де встановлено mkdocs.
Правила для документації¶
Принцип “тільки те, що є в прошивці”¶
Документація має відповідати реальній поведінці прошивки та UI.
Якщо ви додаєте/оновлюєте сторінку:
- перевіряйте поля та назви секцій за UI schema (див. нижче)
- якщо функція “планується”, але не працює — позначайте це явно
Текст посилань¶
Для внутрішніх посилань використовуйте людяний текст (назву сторінки/розділу), а не .../file.md.
✅ Добре:
[Мережа](../web-interface/sections/network.md)[Оновлення прошивки](../web-interface/sections/firmware.md)
❌ Погано:
wiki/web-interface/sections/network.md
Де джерело істини для UI¶
UI генерується з UI schema. Якщо ви змінюєте UI або документуєте його — корисні матеріали:
Як змінювати UI (контроли/схему)¶
Найчастіший сценарій: додати новий контрол у веб‑інтерфейс.
Коротко:
- Додайте/змініть контрол у
web/controls.json. - Додайте відповідний mapping у
src/JaamWeb.cpp. - Переконайтесь, що налаштування існує в
JaamConfig.h/JaamSettings. - Перевірте, що зміна не ламає існуючі секції та сумісність.
Детальний процес: Довідник з додавання UI контролів.
Important
Веб‑ресурси стискаються перед збіркою і вбудовуються у прошивку. Про це детально: Web Assets.
Як робити багрепорт¶
Щоб issue можна було відтворити й швидко виправити, додайте:
- версію прошивки
- тип плати/чип (ESP32 / ESP32‑S3 / ESP32‑C3)
- що саме підключено (main/bg/service LED, дисплей, сенсори, звук, сирена)
- скріншот системної панелі та фрагмент логів
- кроки відтворення
Для користувацьких проблем дивіться також:
Чекліст перед Pull Request¶
- Зміна мінімальна й по суті (без зайвих рефакторингів “заодно”).
- Для прошивки:
pio run -e <env>проходить. - Для документації:
mkdocs buildпроходить. - Тексти посилань у документації — назви сторінок/розділів.
- У PR є пояснення “що/навіщо” і (за можливості) скріншоти/логи.
Потрібна допомога?¶
- Запитайте в Чаті проєкту
- Якщо це баг — відкрийте Issue