-
RouterForge 0.7.1-beta.1 Pre-release
released this
2026-09-10 02:40:18 +03:00 | 79 commits to main since this releaseRouterForge 0.7.1-beta.1
🇷🇺 Русский
RouterForge 0.7.1-beta.1
Что нового
- Новый Beta train 0.7.1 переводит системный мониторинг на единый пакет routerforge-monitoring: один read-only runtime и один UI заменяют отдельные system/thermal/storage/network пакеты, сохраняя совместимые API и Unix-socket endpoints.
- Monitoring получил собственный standalone Svelte/Vite UI с разделами System, Thermal, Storage, Network и Profiling; Core теперь выступает shell/host, а не владеет страницей мониторинга.
- RouterForge Control получил standalone UI и Management v2 backend contract для root-session protected process/service mutations. Текущий UI остаётся read-only; mutation API подготовлен и аппаратно проверен отдельно от будущих управляющих кнопок.
- Dev и Beta теперь разведены: каждый push в dev публикует rolling ARM64 Dev train, а Beta выпускается только явным FULL RELEASE на проверенном exact SHA.
- Beta 0.7.1 использует prerelease-safe opkg versions вида 0.7.1~beta.1, тогда как GitHub asset/tag сохраняют читаемую форму 0.7.1-beta.1. Это гарантирует корректный порядок Beta < будущий Stable 0.7.1.
- Получена первая физическая MIPSel-проверка на Keenetic Giga KN-1010: fresh installation и базовая штатная работа RouterForge подтверждены на реальном устройстве.
Исправления
- Generic Web UI Discovery больше не выполняет произвольные TCP LISTEN probes: probing ограничен обнаруженными локальными application endpoints и сохраняет fail-closed SSRF/XFO/CSP boundary.
- DNS passive capture получил kernel BPF filtering до userspace обработки, уменьшая ненужный packet-processing overhead.
- Обычный GET /api/catalog больше не запускает дорогой active discovery; remote/discovery refresh вынесен в отдельный guarded POST /api/catalog/refresh.
- POST /api/catalog/refresh защищён same-origin проверкой, singleflight и rate limiting, поэтому повторные refresh не размножают дорогостоящую работу.
- Core frontend polling переведён на serial scheduling без async setInterval overlap; сетевые read/write helpers получили AbortController timeout policy и гарантированную очистку timer.
- Standalone Admin и Monitoring UI используют тот же serial polling contract; медленный запрос больше не порождает несколько параллельных периодических циклов.
- Standalone DNS UI получил 12-секундный timeout для GET/HEAD reads, при этом mutation requests намеренно не получают короткий UI timeout, чтобы не сообщать ложный failure после уже применённой router mutation.
- Monitoring thermal path переведён на stale-while-revalidate/singleflight: request path не запускает конкурентные refresh/smartctl операции, а last-good snapshot публикуется без блокировки UI.
- DNS info, resolver auxiliary discovery и Monitoring Keenetic network metadata получили bounded TTL caches/last-good semantics; повторный ndmc polling заметно сокращён.
- DNS background collector получил backoff после ошибок, чтобы failure loop не превращался в горячий polling.
- Monitoring storage Statfs вынесен в platform-specific implementation: Linux сохраняет прежнюю семантику, а non-Linux targets теперь безопасно cross-compile.
- App Center internal async job map получил terminal retention cap; древние завершённые jobs больше не накапливаются бесконечно в памяти Core.
- Core HTTP server получил ReadHeaderTimeout, ReadTimeout, IdleTimeout и MaxHeaderBytes; global WriteTimeout оставлен выключенным специально для долгоживущего SSE.
- Core generic module proxy ограничивает mutation request bodies до downstream contracts: DNS 64 KiB, Admin 8 KiB; oversize отклоняется до Unix-socket forwarding.
- Authentication failed-login tracking получил global stale pruning и строгий cap 1024 clients. Активные блокировки сохраняются приоритетно; lockout policy остаётся 5 ошибок / 5 минут / 30 секунд.
Совместимость
- ARM64 aarch64-3.10 остаётся основным и полностью аппаратно проверенным Beta target.
- MIPSel mipsel-3.4 теперь имеет реальную hardware evidence на Keenetic Giga KN-1010 для fresh installation и базовой штатной работы. Target остаётся experimental до проверки upgrade/rollback/uninstall, полного Module ABI/DNS сценария и resource footprint.
- MIPS mips-3.4 остаётся experimental preview без физической hardware validation; cross-build/QEMU/runtime-probe не считаются аппаратной проверкой.
- routerforge-monitoring Conflicts/Replaces/Provides старые routerforge-system/routerforge-thermal/routerforge-storage/routerforge-network и сохраняет compatibility API для миграции.
- Fresh Beta bootstrap по-прежнему устанавливает только RouterForge Core; optional DNS, Monitoring, Control и Profiling выбираются через Центр приложений.
- Stable 0.6.1 и main не изменяются этим Beta release.
Технические изменения
- Beta FULL RELEASE строит и публикует exact multi-arch package set: Core, DNS, Control, Monitoring и Profiling; rolling Beta alias после публикации получает coherent indexes/checksums/bootstrap, затем создаётся immutable routerforge-v0.7.1-beta.1 snapshot.
- Release tooling валидирует exact package order для Beta и проверяет 5 компонентов × 3 target = 15 IPK assets плюс SHA256SUMS и target-specific/universal bootstraps.
- Consolidated Monitoring package contract отдельно проверяется в CI: package metadata обязана объявлять legacy Provides/Conflicts/Replaces, payload не должен содержать старые split binaries/init scripts, а postinst должен останавливать legacy services перед запуском нового runtime.
- Для реального upgrade 4→1 добавлен read-only hardware migration gate: он проверяет package DB, отсутствие старых binaries/init scripts/processes, основной runtime и пять ожидаемых Unix sockets (primary + compatibility).
- routerforge-dev остаётся отдельным mutable ARM64-only каналом с версиями 0.7.1~dev.r. и больше не считается Beta.
- Core и module runtime общаются через root-owned Unix sockets; Core остаётся единственным RouterForge LAN listener на :2233.
- Management v2 mutation path требует POST, same-origin, live root session, exact confirmation, whitelist и Core-injected internal Unix-socket marker; arbitrary shell/path execution отсутствует.
- Core HTTP WriteTimeout=0 сохранён намеренно: SSE /api/events должен жить дольше обычных request read timeouts.
- DNS/Admin module mutation body limits применяются в Core до ReverseProxy, а downstream runtime продолжает собственную validation/JSON limit policy.
- Frontend standalone builds используют общие Core $lib helpers на этапе Vite bundling; Node.js на роутере не требуется.
- Phase 8 runtime audit закрыт на Dev r248 с hardware health evidence. Reboot persistence и destructive auth failure injection сознательно не заявляются как выполненные; MIPSel hardware evidence пока ограничена fresh install/basic operation на KN-1010.
Текущие версии компонентов
Компонент Версия RouterForge Core 0.7.1~beta.1RouterForge DNS 0.7.1~beta.1RouterForge Control 0.7.1~beta.1RouterForge Monitoring 0.7.1~beta.1Profiling 0.7.1~beta.1Установка
Свежая установка RouterForge Beta:
/opt/bin/opkg update && /opt/bin/opkg install curl && /opt/bin/curl -fsSL https://github.com/Fifth-Ace/routerforge/releases/download/routerforge-v0.7.1-beta.1/routerforge-beta-bootstrap.sh | shСборка и проверка
- Версия RouterForge:
0.7.1-beta.1 - Архивный релиз:
routerforge-v0.7.1-beta.1 - Коммит:
3b000b3 - Release index:
routerforge-beta-index.json - Bootstrap:
routerforge-beta-bootstrap.sh
🇬🇧 English
RouterForge 0.7.1-beta.1
What's new
- The 0.7.1 Beta train consolidates system monitoring into routerforge-monitoring: one read-only runtime and one UI replace the separate system/thermal/storage/network packages while preserving compatible APIs and Unix-socket endpoints.
- Monitoring now has its own standalone Svelte/Vite UI for System, Thermal, Storage, Network, and Profiling; Core acts as the shell/host instead of owning the monitoring page.
- RouterForge Control now has a standalone UI and a Management v2 backend contract for root-session-protected process/service mutations. The current UI remains read-only; mutation APIs are prepared and hardware-validated separately from future control buttons.
- Dev and Beta are now separate release channels: each dev push publishes the rolling ARM64 Dev train, while Beta is published only by an explicit FULL RELEASE on a verified exact SHA.
- Beta 0.7.1 uses prerelease-safe opkg versions such as 0.7.1~beta.1 while GitHub assets/tags keep the readable 0.7.1-beta.1 form, guaranteeing Beta sorts below future Stable 0.7.1.
- The first physical MIPSel validation is now recorded on Keenetic Giga KN-1010: fresh installation and basic normal RouterForge operation were confirmed on real hardware.
Fixes
- Generic Web UI Discovery no longer performs arbitrary TCP LISTEN probing; probing is limited to discovered local application endpoints while preserving fail-closed SSRF/XFO/CSP boundaries.
- DNS passive capture now applies kernel BPF filtering before userspace processing, reducing unnecessary packet-processing overhead.
- Normal GET /api/catalog no longer triggers expensive active discovery; remote/discovery refresh is isolated behind guarded POST /api/catalog/refresh.
- POST /api/catalog/refresh now has same-origin validation, singleflight, and rate limiting so repeated refreshes cannot multiply expensive work.
- Core frontend polling uses serial scheduling instead of overlapping async setInterval calls; shared request helpers now enforce AbortController timeout policy with reliable timer cleanup.
- Standalone Admin and Monitoring UIs use the same serial polling contract, preventing slow requests from creating multiple concurrent periodic cycles.
- Standalone DNS UI now has a 12-second timeout for GET/HEAD reads, while mutation requests intentionally keep their previous timeout semantics to avoid false failures after a router mutation may already have committed.
- Monitoring thermal collection now uses stale-while-revalidate/singleflight: request paths do not launch concurrent refresh/smartctl work and last-good snapshots can be served without blocking the UI.
- DNS info, resolver auxiliary discovery, and Monitoring Keenetic network metadata now use bounded TTL caches/last-good semantics, substantially reducing repeated ndmc polling.
- The DNS background collector backs off after failures instead of turning an error condition into a hot polling loop.
- Monitoring storage Statfs is split into platform-specific implementations: Linux keeps the existing semantics while non-Linux targets cross-compile safely.
- The App Center async job map now has terminal retention; old completed jobs can no longer accumulate indefinitely in Core memory.
- The Core HTTP server now has ReadHeaderTimeout, ReadTimeout, IdleTimeout, and MaxHeaderBytes; the global WriteTimeout intentionally remains disabled for long-lived SSE.
- The generic Core module proxy bounds mutation bodies to downstream contracts: DNS 64 KiB and Admin 8 KiB, rejecting oversized requests before Unix-socket forwarding.
- Failed-login tracking now has global stale pruning and a strict 1024-client cap. Active blocks are preferred during eviction; lockout policy remains 5 failures / 5 minutes / 30 seconds.
Compatibility
- ARM64 aarch64-3.10 remains the primary fully hardware-validated Beta target.
- MIPSel mipsel-3.4 now has real hardware evidence on Keenetic Giga KN-1010 for fresh installation and basic normal operation. It remains experimental until upgrade/rollback/uninstall, full Module ABI/DNS behavior, and resource footprint are validated.
- MIPS mips-3.4 remains an experimental preview without physical hardware validation; cross-build/QEMU/runtime probes do not count as hardware validation.
- routerforge-monitoring Conflicts/Replaces/Provides the legacy routerforge-system/routerforge-thermal/routerforge-storage/routerforge-network packages and preserves compatibility APIs for migration.
- Fresh Beta bootstrap still installs RouterForge Core only; optional DNS, Monitoring, Control, and Profiling are selected through App Center.
- Stable 0.6.1 and main are unchanged by this Beta release.
Technical changes
- Beta FULL RELEASE builds and publishes the exact multi-arch package set: Core, DNS, Control, Monitoring, and Profiling. After the rolling Beta alias is coherent, an immutable routerforge-v0.7.1-beta.1 snapshot is created.
- Release tooling validates exact Beta package order and verifies 5 components × 3 targets = 15 IPK assets together with SHA256SUMS and target-specific/universal bootstraps.
- The consolidated Monitoring package contract is checked in CI: package metadata must declare legacy Provides/Conflicts/Replaces, the payload must not contain old split binaries/init scripts, and postinst must stop legacy services before starting the new runtime.
- A read-only hardware migration gate is provided for the real 4→1 upgrade: it checks package DB state, absence of old binaries/init scripts/processes, the primary runtime, and all five expected Unix sockets (primary plus compatibility).
- routerforge-dev remains a separate mutable ARM64-only channel using 0.7.1~dev.r. versions and is no longer documented as Beta.
- Core and module runtimes communicate through root-owned Unix sockets; Core remains the only RouterForge LAN listener on :2233.
- Management v2 mutation paths require POST, same-origin, a live root session, exact confirmation, a whitelist, and a Core-injected internal Unix-socket marker; arbitrary shell/path execution is not exposed.
- Core HTTP WriteTimeout=0 is intentional so SSE /api/events can outlive normal request read timeouts.
- DNS/Admin mutation body limits are enforced in Core before ReverseProxy while downstream runtimes keep their own validation and JSON limits.
- Standalone frontend builds import shared Core $lib helpers at Vite bundle time; Node.js is not required on the router.
- The Phase 8 runtime audit is closed on Dev r248 with hardware health evidence. Reboot persistence and destructive auth-failure injection are explicitly not claimed; MIPSel hardware evidence is currently limited to fresh install/basic operation on KN-1010.
Current component versions
Component Version RouterForge Core 0.7.1~beta.1RouterForge DNS 0.7.1~beta.1RouterForge Control 0.7.1~beta.1RouterForge Monitoring 0.7.1~beta.1Profiling 0.7.1~beta.1Installation
Fresh RouterForge Beta install:
/opt/bin/opkg update && /opt/bin/opkg install curl && /opt/bin/curl -fsSL https://github.com/Fifth-Ace/routerforge/releases/download/routerforge-v0.7.1-beta.1/routerforge-beta-bootstrap.sh | shBuild and verification
- RouterForge release:
0.7.1-beta.1 - Immutable release:
routerforge-v0.7.1-beta.1 - Commit:
3b000b3 - Release index:
routerforge-beta-index.json - Bootstrap:
routerforge-beta-bootstrap.sh
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads