• routerforge-v0.7.1-beta.2 b79393245e

    FifthAce released this 2026-09-10 23:34:59 +03:00 | 50 commits to main since this release

    RouterForge 0.7.1-beta.2

    🇷🇺 Русский

    RouterForge 0.7.1-beta.2

    Что нового

    • Management/Admin получил полноценный Entware Terminal на WebSocket/PTY и переработанный файловый менеджер с Commander, Explorer, деревом каталогов, выбором томов, редактором, свойствами файлов и visual chmod.
    • Новый 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 подтверждены на реальном устройстве.

    Исправления

    • App Center получил корректное обновление registry после package actions, устойчивый bulk-update без ложных lifecycle errors, раздельную проверку RouterForge, Integrations и Entware, общую проверку обновлений и исправленную адаптивную панель. Статусы модулей унифицированы в ON/OFF/UPDATE.
    • 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.

    Технические изменения

    • ARM64 Dev r280 (90d925d2ad) прошёл аппаратный runtime smoke: Core, Admin, File API, tree metadata и volumes — PASS. RouterForge остаётся единственным LAN listener на :2233.
    • 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.2
    RouterForge DNS 0.7.1~beta.2
    RouterForge Control 0.7.1~beta.2
    RouterForge Monitoring 0.7.1~beta.2
    Profiling 0.7.1~beta.2

    Установка

    Свежая установка 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.2/routerforge-beta-bootstrap.sh | sh
    

    Сборка и проверка

    • Версия RouterForge: 0.7.1-beta.2
    • Архивный релиз: routerforge-v0.7.1-beta.2
    • Коммит: b793932
    • Release index: routerforge-beta-index.json
    • Bootstrap: routerforge-beta-bootstrap.sh

    🇬🇧 English

    RouterForge 0.7.1-beta.2

    What's new

    • Management/Admin now includes a full Entware Terminal over WebSocket/PTY and a rebuilt file manager with Commander, Explorer, folder tree, volume selection, editor, file properties, and visual chmod.
    • 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

    • App Center now refreshes registry state correctly after package actions, completes bulk updates without false lifecycle errors, separates RouterForge, Integrations, and Entware update checks, adds a global update check, and fixes narrow-window toolbar layout. Module states are unified as ON/OFF/UPDATE.
    • 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

    • ARM64 Dev r280 (90d925d2ad) passed hardware runtime smoke for Core, Admin, File API, tree metadata, and volumes. RouterForge remains the only LAN listener on :2233.
    • 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.2
    RouterForge DNS 0.7.1~beta.2
    RouterForge Control 0.7.1~beta.2
    RouterForge Monitoring 0.7.1~beta.2
    Profiling 0.7.1~beta.2

    Installation

    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.2/routerforge-beta-bootstrap.sh | sh
    

    Build and verification

    • RouterForge release: 0.7.1-beta.2
    • Immutable release: routerforge-v0.7.1-beta.2
    • Commit: b793932
    • Release index: routerforge-beta-index.json
    • Bootstrap: routerforge-beta-bootstrap.sh
    Downloads