Releases: gnacho/netgrip
Release list
v0.72.2
What's Changed
Full Changelog: v0.72.1...v0.72.2
v0.72.1
What's Changed
Full Changelog: v0.72.0...v0.72.1
v0.72.0
What's Changed / Cambios
Features
- NetPulse agent v1.1.0: NetGrip-managed routers now send WiFi channel scans (neighbor APs: bssid/ssid/channel/freq/signal) and per-client traffic (
clientBwfrom nlbwmon/hostapd). This closes the gap where NetPulse couldn't render channel analysis or per-client traffic for NetGrip routers (#280, #281). - WAN page polish: read-only config + live connection ring (#243), bigger joyful "Internet" status ring and menu rename to Internet (#276), and hidden Internet menu in AP mode (#277).
Fixes
- system: report memory used as process RSS instead of the inflated kernel-cache figure (folded into the panel) (#278, #279).
- agent: bump embedded
netpulse/agentto v1.1.0 (adds Scans + clientBw) and fix the pre-existing brokenparseMeminfotest (#284).
CI
- Bump Node to 24 (Active LTS) and pin
.nvmrc/engines (#282).
En español
- Agente NetPulse v1.1.0: los routers gestionados por NetGrip ya envían escaneos de canal WiFi (vecinos: bssid/ssid/canal/freq/señal) y tráfico por cliente (
clientBwdesde nlbwmon/hostapd). Cierra el hueco por el que NetPulse no podía mostrar el análisis de canales ni el tráfico por cliente en routers NetGrip (#280, #281). - Página WAN: config en lectura + anillo de conexión en vivo (#243), anillo "Internet" más grande y renombrado en el menú a Internet (#276), y menú Internet oculto en modo AP (#277).
- system: la memoria se reporta como RSS de procesos en vez del valor inflado por caché de kernel (#278, #279).
- CI: Node 24 (Active LTS) y
.nvmrc/engines (#282).
Full Changelog / Registro completo: v0.71.0...v0.72.0
v0.71.0
What's Changed
- feat: wizard/services polish, async install, nav badges, netpulse agent restart by @gnacho in #266
- fix: ports/DSA, packages opkg, dns override, wifi + wizard/services polish (tanda 2) by @gnacho in #268
- feat(lan,wifi): reservations autocomplete + group same-SSID radios (#252,#245) by @gnacho in #269
- feat(services): compact one-row cards for not-installed services (#260) by @gnacho in #270
- ci(packaging): add mipsle build leg and ipk (#236) by @gnacho in #271
- fix(clients): show wired clients as blocked (#262) by @gnacho in #272
- fix(executor): accept NetPulse object-form op args (#235) by @gnacho in #273
- fix(updater): never install a wrong-arch self-update binary (#237) by @gnacho in #274
Full Changelog: v0.70.0...v0.71.0
v0.70.0
Features
Public DDNS host for OpenVPN client configs (#233)
Generated client configs embedded the current WAN address, so on dynamic-IP links every previously issued .ovpn stopped connecting after an IP change, without any warning from the panel. The OpenVPN card now shows a prominent warning while no stable host is set, detects the DDNS domains this router already manages and offers them as one-click suggestions (plus free-form input for external DDNS). New configs use the configured host as their remote.
Novedades
Dominio público DDNS para las configs de cliente de OpenVPN (#233)
Las configs de cliente generadas llevaban la IP WAN actual, así que con IP dinámica cada .ovpn emitido dejaba de conectar tras un cambio de dirección, sin aviso alguno del panel. La card de OpenVPN muestra ahora un aviso bien visible mientras no haya un dominio estable configurado, detecta los dominios DDNS que este router ya gestiona y los ofrece con un clic (más entrada libre para DDNS externo). Las configs nuevas usan ese dominio como dirección de conexión.
v0.68.0
Fixes
OpenVPN toggle on GL.iNet firmware (#228)
The GL firmware already ships the OpenVPN binary, so the installer step that also installed easy-rsa was skipped, and GL feeds do not carry easy-rsa at all; enabling the toggle died with an unfriendly "easyrsa not found". The easyrsa binary is now resolved beyond PATH, each missing package is installed individually, and a still-missing easyrsa returns an actionable message.
WireGuard now sees GL.iNet-managed tunnels (#229)
GL.iNet runs WireGuard through its own firmware layer; the panel reported it as off while real tunnels were running. Those tunnels now show read-only (interface, peers, keys never exposed) with a clear "managed by GL.iNet" note, and the toggle no longer offers to create a second source of truth. No change on non-GL routers.
Correct remote endpoint and lan route in client configs (#230)
A broken ubus parser made the client .ovpn point at the wrong address on routers with several networks (for example the guest bridge instead of the WAN) and dropped the lan route from the server config. Both values are now parsed from the ubus JSON properly.
Revoking a client keeps the server up (#231)
Deleting a client could leave the OpenVPN server stopped on firmware where the procd respawn does not fire (GL.iNet). The service is now restarted explicitly after regenerating the revocation list.
Correcciones
El toggle de OpenVPN en firmware GL.iNet (#228)
El firmware GL ya incluye el binario de OpenVPN, así que se saltaba el paso que también instalaba easy-rsa, y los feeds de GL no lo traen; activar el toggle moría con un "easyrsa not found" poco amable. Ahora el binario easyrsa se busca más allá del PATH, cada paquete que falte se instala por separado y, si sigue faltando, se devuelve un mensaje accionable.
WireGuard ahora ve los túneles gestionados por GL.iNet (#229)
GL.iNet ejecuta WireGuard con su propia capa de firmware; el panel lo daba por apagado mientras había túneles reales corriendo. Esos túneles se muestran en solo lectura (interfaz, peers, claves nunca expuestas) con una nota clara de "gestionado por GL.iNet", y el toggle ya no ofrece crear una segunda fuente de verdad. Sin cambios en routers no GL.
Endpoint remoto y ruta LAN correctos en las configs de cliente (#230)
Un parser de ubus roto hacía que el .ovpn del cliente apuntara a la dirección equivocada en routers con varias redes (por ejemplo el bridge invitados en vez de la WAN) y perdiera la ruta a la LAN en el config del servidor. Ambos valores se parsean ahora del JSON de ubus correctamente.
Revocar un cliente ya no tumba el servidor (#231)
Borrar un cliente podía dejar el servidor OpenVPN parado en firmwares donde el respawn de procd no dispara (GL.iNet). Ahora el servicio se rearranca explícito tras regenerar la lista de revocación.
v0.66.0
Fixes
In-app updater no longer fails while release assets are still uploading (#224)
The update banner appeared as soon as the release tag was visible, but the apply button failed with a misleading "no update available" during the few minutes the CI takes to attach the downloadable binaries, and the failed state stayed cached until the page was reloaded. "Available" now requires the binary to exist, apply performs a fresh re-check when its cached state is unusable (also covering a backend restart while the page is open), and the pending condition returns its own message.
Release CI no longer races duplicate binary uploads (#226)
Both the apk and the ipk packaging jobs of the same architecture uploaded the bare binary asset; when they arrived together one job failed with a 422 error. Only one job per architecture uploads it now.
Correcciones
El actualizador integrado ya no falla mientras los archivos de la release se siguen subiendo (#224)
El aviso de actualización aparecía en cuanto el tag de la release era visible, pero el botón de aplicar fallaba con un engañoso "no update available" durante los minutos que tarda el CI en adjuntar los binarios, y el estado fallido quedaba en caché hasta recargar la página. Ahora "disponible" exige que el binario exista, aplicar re-chequea en fresco cuando su estado cacheado no sirve (cubre también un reinicio del backend con la página abierta) y la condición de espera devuelve su propio mensaje.
El CI de releases ya no compite subiendo el binario por duplicado (#226)
Los jobs de empaquetado apk e ipk de la misma arquitectura subían ambos el binario suelto; cuando coincidían en el tiempo, uno fallaba con un error 422. Ahora solo un job por arquitectura lo sube.
v0.64.0
Fixes
Spanish labels for the traffic page get their accents back (#222)
The Spanish sidebar item read "Trafico"; the port statistics intro and the per-app DPI title had the same missing accents ("aplicacion"). Cosmetic only.
El elemento del menú lateral en español decía "Trafico"; la introducción de estadísticas por puerto y el título de DPI por aplicación tenían las mismas tildes ausentes ("aplicacion"). Solo cosmético.
v0.62.0
New
Fleet autodiscovery works out of the box between fresh installs (#220)
Autodiscovery could never bootstrap: beacons were HMAC-signed with a secret that every install generated randomly and nothing shared, so routers silently discarded each other's announcements and the Fleet page never listed anything. Beacons are now public announcements (mDNS/SSDP style) with structural validation and timestamp anti-replay; authenticity stays at adoption, which requires and verifies the peer root password before saving the node. The per-router fleet-token file and the HMAC machinery are gone.
El autodescubrimiento de flota nunca pudo arrancar: los beacons iban firmados con un secreto que cada instalación generaba aleatoriamente y nada compartía, así que los routers descartaban en silencio los anuncios de los demás y la página Flota no listaba nunca nada. Los beacons son ahora anuncios públicos (estilo mDNS/SSDP) con validación estructural y anti-replay por timestamp; la autenticidad vive en la adopción, que exige y verifica la contraseña root del peer antes de guardar el nodo. Desaparecen el fichero fleet-token por router y toda la maquinaria HMAC.
Upgrade note
Receivers older than v0.62 still demand a valid signature: in a mixed-version fleet only newer receivers discover older emitters until every router runs v0.62+.
Los receptores anteriores a v0.62 siguen exigiendo firma válida: en una flota con versiones mixtas, solo los receptores más nuevos descubrirán a los emisores más antiguos hasta que todos los routers lleven v0.62 o superior.
Validation
- Real hardware, two routers, different original tokens, zero configuration: the upgraded router discovers the 0.58 peer over UDP broadcast.
Validado en hardware real, dos routers, tokens originales distintos y cero configuración: el router actualizado descubre al peer 0.58 por broadcast UDP.
v0.60.0
Fixes
Services and Ports pages no longer go blank on gateway routers (#218)
On the first real gateway in production both pages crashed the whole React tree: the firewall probe looked for .type='zone' keys that uci show never emits (sections print as firewall.@zone[0]=zone), so zones/rules were always null on any gateway, and five more port probes (PoE, PoE watchdog, LAG, port templates, VLANs) returned null slices that the UI mapped over. All probes now parse the real uci show shape, always answer with empty arrays instead of null, and the consuming components guard with ?? []. Saved port templates also list back correctly now (same parsing bug, latent).
En el primer router gateway real de producción ambas páginas tumbaban el árbol de React entero: el sondeo de cortafuegos buscaba claves .type='zone' que uci show nunca emite (las secciones se imprimen como firewall.@zone[0]=zone), así que zonas/reglas eran siempre null en cualquier gateway, y otros cinco sondeos de puertos (PoE, watchdog PoE, LAG, plantillas de puertos, VLANs) devolvían slices null sobre los que pintaba la UI. Todos los sondeos ahora parsean el formato real de uci show, responden siempre con arrays vacíos en vez de null, y los componentes se blindan con ?? []. Las plantillas de puertos guardadas también vuelven a listarse correctamente (mismo bug de parseo, latente).
Validation
- Real gateway (GL.iNet MT6000, OpenWrt 25.12.5): firewall lists 6 real zones and 23 rules; all six endpoints return arrays; full 11-page sweep renders with zero console errors.
Validado en gateway real (GL.iNet MT6000, OpenWrt 25.12.5): el cortafuegos lista 6 zonas reales y 23 reglas; los seis endpoints devuelven arrays; el barrido completo de 11 páginas renderiza sin un solo error de consola.