Лёгкий конфигуратор для RNS Gate без фреймворков: TypeScript + esbuild, чистый DOM API и один bundle для браузера. Поддерживает оффлайн‑просмотр UI (file://), специализированные формы для WiFi/Ethernet и просмотр «сырых» данных для прочих разделов.
Смотрите также файл CHANGELOG.md для истории изменений.
- Разделы: RNSD, FreeDV (сырой вывод), WiFi и Ethernet (формы).
- Примечание: секция LoraSPI больше не поддерживается и удалена из кода.
- WiFi: режимы client/AP, загрузка через GET /cgi-bin/wifi/info, сохранение через POST /cgi-bin/wifi/apply, DHCP/Static, локальные подсказки и профиль (localStorage: profile_wifi).
- Ethernet: загрузка через GET /cgi-bin/ethernet/info, сохранение через POST /cgi-bin/ethernet/apply, DHCP/Static, локальные подсказки и профиль (localStorage: profile_ethernet).
- Статус‑бар сети: online, offline, busy, error, мягкие переключения цвета; центрированное сообщение в шапке.
- Оффлайн‑режим: UI доступен при открытии file:// и при отсутствии сети; формы WiFi/Ethernet рендерятся с дефолтами без запросов.
- Установка зависимостей: npm ci (или npm install).
- Сборка: npm run build.
- Копирование статических файлов: npm run copy:static.
- Открыть UI: dist/index.html (можно через file:// или отдать как статику).
- Базовый путь к CGI: /cgi-bin.
- Переопределение: задайте в окне браузера глобальную переменную window.CGI_BASE или window.CGI_BASE до подключения bundle.js.
- Эндпоинты, ожидаемые клиентом:
- GET {CGI_BASE}/wifi/info
- POST {CGI_BASE}/wifi/apply (application/x-www-form-urlencoded)
- GET {CGI_BASE}/ethernet/info
- POST {CGI_BASE}/ethernet/apply (application/x-www-form-urlencoded)
- GET {CGI_BASE}/{section}/info для RNSD/FreeDV
При ответе JSON (Content-Type: application/json) тело парсится; иначе текст показывается «как есть». Ошибки HTTP сопровождаются сообщением из JSON.message или заголовка <title>.
- src/api.ts — API‑клиент (GET/POST, таймаут, оффлайн‑проверка, разбор ошибок).
- src/index.ts — UI, формы WiFi/Ethernet, статус‑бар, навигация.
- index.html — базовая страница (копируется в dist/).
- styles.css — стили (копируются в dist/).
- dist/ — результаты сборки.
- build — сборка TypeScript в dist/bundle.js (esbuild, minify, sourcemap).
- copy:static — копирование index.html и styles.css в dist/.
GitHub Actions автоматически собирает проект при пуше тега вида v* (например, v1.0.15) и прикрепляет архив dist.zip к соответствующему релизу в разделе Releases. Чтобы запустить локально без сборки:
- скачайте dist.zip из последнего релиза;
- распакуйте архив;
- откройте файл dist/index.html напрямую в браузере (file://) или отдайте папку dist как статику на любом веб‑сервере.
- Переключатель режима автозаполнения: localStorage key autofillMode (hints|fill).
- Профили форм: profile_wifi и profile_ethernet.
ISC (см. package.json).