Added
- CAPsMAN wireless client support (
src/collectors/wireless.js,public/app.js) —wireless.jsnow probes/caps-man/registration-table/printon start/reconnect to detect whether the router is acting as a CAPsMAN controller; if available, CAPsMAN registration rows are merged into the wireless client list each poll tick. Local wireless clients take priority — any CAPsMAN row whose MAC is already seen from local wireless is skipped. Band is inferred from the AP interface name suffix (-2g,-5g,-6g) when the CAPsMAN row carries nobandfield. CAPsMAN-sourced clients are taggedsource: 'capsman'; the AP group header in the Wireless page shows aCAPbadge when any client in the group comes from CAPsMAN. Closes issue #43 - linux/arm/v7 Docker image —
node:20-alpineships a native arm/v7 manifest layer; addinglinux/arm/v7to the QEMU and build-push platform lists in the GitHub Actions workflow is all that was needed. The published GHCR image now coverslinux/amd64,linux/arm64, andlinux/arm/v7. Useful for deploying MikroDash in a RouterOS container on ARMv7 hardware. Closes issue #44 - GitHub Releases from CHANGELOG — a new
create-releasejob in the workflow fires on everyv*.*.*tag push, extracts the current version's section fromCHANGELOG.mdusing awk, and creates a GitHub Release with the curated notes as the body. The release title is derived from the CHANGELOG section header
Changed
- Container log format (
src/index.js,src/alertSessions.js, all 16src/collectors/*.js) — all console output now uses the format[RouterLabel][collector] message.ros.routerLabel(set from the router's configured label or host inbuildSession()andalertSessions._buildSession()) is read by each collector's constructor intothis._lbl. Collectors fall back to[tag]whenrouterLabelis unset (test mocks), so no test changes were required. Session lifecycle events── session startedand── session torn downprovide clear boundary markers in multi-router log streams - Ping error context (
src/collectors/ping.js) — stream error lines now includetarget=IPso the failing ping target is immediately visible without cross-referencing config
Tests
- 5 new wireless/CAPsMAN tests across
test/collector-data-transforms.test.js(merge, band inference, MAC deduplication) andtest/collector-lifecycle.test.js(_probeCAPsMANavailable / unknown-command) - Test count raised from 237 to 242 (all passing)