Commit Graph

1746 Commits

Author SHA1 Message Date
github-actions[bot]
1c02f04ec3 chore(helm): update app version to 0.21.0 2026-10-02 17:34:42 +00:00
henrygd
ec96c13466 release 0.21.0 v0.21.0 2026-10-02 13:13:54 -04:00
henrygd
e597dd94db wifi: add SKIP_WIFI env var to disable signal monitoring 2026-10-02 12:54:22 -04:00
henrygd
b115e2aa6a wifi(linux): skip nl80211 when no wireless devices are registered
Check /sys/class/ieee80211 before opening netlink sockets. Looking up
the
nl80211 family while cfg80211 is not loaded makes the kernel run
modprobe,
which loads the module on hosts without wireless hardware, or fails
again
on every poll when the module is unavailable.
2026-10-02 12:47:57 -04:00
henrygd
0cca9d0602 chore: update changelog 2026-10-02 12:31:52 -04:00
henrygd
49f4f652e1 i18n: update translations 2026-10-02 12:20:06 -04:00
henrygd
25132b73ff ui: paginate the package updates table 2026-10-02 11:37:18 -04:00
hank
49ad3fe533 New Crowdin updates (#2485) 2026-10-02 10:34:35 -04:00
henrygd
da742a70ab ui: bump default layout width to 1600 2026-10-02 10:25:23 -04:00
Santhi Prakash
01d91728f0 fix(agent): report LXC guest CPU usage from cgroup accounting (#2341)
Inside an LXC guest, lxcfs serves /proc/stat with the counters of the
host cores in the guest's cpuset, so an idle guest sharing a core with a
busy neighbor reported near-100% CPU.

When the agent detects it is running in an LXC guest (lxcfs mounted on
/proc/stat, container=lxc, or /run/systemd/container), derive CPU usage
from the guest's own cgroup instead: cpu.stat on cgroup v2, cpuacct on
v1, read at the cgroup mount root so it covers every process in the
guest. Usage is normalized by the usable cores (the smallest of the
affinity mask, cpuset and CPU quota).

Per-core usage is omitted in this mode, since the per-core /proc/stat
counters describe shared host cores and would contradict the total.
Iowait and steal are not available from cgroup accounting and report as
zero.

Hosts and Docker/Podman agents are unaffected and keep reading
/proc/stat, as does an LXC guest whose cgroup accounting is unreadable.

---------

Co-authored-by: hank <hank@henrygd.me>
2026-10-01 19:33:42 -04:00
Santhi Prakash
c394a6b5b1 fix(agent): resolve device symlinks so LVM volumes map to disk I/O (#2486) 2026-10-01 18:44:29 -04:00
spatiumstas
4ffd83677d fix(agent): improve WebSocket and SSH fallback handling (#2441)
Make WebSocket reconnect and SSH fallback transitions reliable across asynchronous disconnects, stale callbacks, and overlapping connections. Keep the SSH listener available while disconnected and allow a verified WebSocket connection to take precedence when it recovers.

Co-authored-by: henrygd <hank@henrygd.me>
2026-10-01 13:37:57 -04:00
henrygd
d8c2b1f310 deps(agent): upgrade gopsutil 2026-10-01 11:30:38 -04:00
Sven van Ginkel
8a173e2643 feat(hub): add DISABLE_SSH option to skip SSH fallback (#2469)
Co-authored-by: hank <hank@henrygd.me>
2026-10-01 11:20:00 -04:00
Vito Cappello
0b101cc6be fix(agent): use nvethernet MAC counters (#2090)
Co-authored-by: hank <hank@henrygd.me>
2026-10-01 10:58:21 -04:00
henrygd
5b0952ffcf ui: persist log timestamp toggle and add tooltips to log buttons 2026-09-30 21:26:28 -04:00
Jeroen De Wilde
2502dd9626 feat: add toggle for log timestamps (#2471) 2026-09-30 21:14:13 -04:00
hank
8a91a0b5ab New Crowdin updates (#2412) 2026-09-30 21:12:07 -04:00
henrygd
6ff9b4cfea feat(ui): add MB/s and GB/s unit select to bandwidth alert
Raises the bandwidth threshold max to 5 GB/s without making the MB/s
slider less precise. Values are still stored in MB/s, and the unit is
inferred from the stored value when the alert sheet opens.
2026-09-30 20:24:04 -04:00
Santhi Prakash
65e3e2e768 fix(agent): count ZFS snapshot reads in pool I/O stats (#2474) 2026-09-30 18:22:51 -04:00
Sven van Ginkel
87f1efdfd9 fix(ui): reject IP targets for DNS monitors (#2483) 2026-09-30 18:12:14 -04:00
Bartu Özen
dd3a769d18 Widen NVMe power-cycle SMART fields to uint (#2484) 2026-09-30 17:50:12 -04:00
henrygd
266f45f104 fix(agent): skip first disk I/O sample of an interval when its window is too short
Right after agent start the hub requests stats immediately, and the first
sample of the interval was measured from the baseline taken at startup, only
a second or so earlier. A burst of startup I/O was then stored as the rate
for the whole minute, causing large spikes in disk I/O charts.

The first sample of an interval now must span at least half the interval.
Otherwise it only stores the snapshot, and the next sample is measured from it.
2026-09-30 13:02:29 -04:00
henrygd
e925fafd7b refactor(agent): label windows wifi interfaces by adapter name instead of GUID 2026-09-30 12:50:17 -04:00
Sven van Ginkel
15c29fee92 feat(site): allow dismissing the active alerts banner and soften its red (#2478) 2026-09-30 12:17:02 -04:00
Sven van Ginkel
2ca5e727f9 refactor(ui): remove "Copy to system" from network monitor actions (#2480) 2026-09-30 12:13:31 -04:00
Sven van Ginkel
e01e2a20e9 feat(ui): compare network monitor targets within the same system (#2477)
Co-authored-by: henrygd <hank@henrygd.me>
2026-09-29 19:56:56 -04:00
spatiumstas
3cc19602c1 hotfix: remove unused useLingui (#2476) 2026-09-29 17:21:45 -04:00
spatiumstas
6c47ca8ecc fix(site): refresh interpolated translations on locale change (#2405) 2026-09-29 12:57:57 -04:00
Juankers
3281055d95 fix(ui): prevent status ping from being clipped on desktop (#2470) 2026-09-29 12:24:44 -04:00
henrygd
02653f8ed9 chore: update go dependencies 2026-09-29 12:12:14 -04:00
spatiumstas
67c5905b36 fix(agent): handle partial NVMe SMART data (#2340) 2026-09-29 12:09:32 -04:00
henrygd
1997984325 refactor(hub): make SSHTransport the single owner of each system's SSH connection
The updater and on-demand requests kept separate copies of the SSH client
(sys.client and the transport's client) and synced them after each request.
That allowed a closed client to be reinstalled over a newer one and leaked
connections that were replaced without being closed.

The updater now dials, opens sessions and tears down timed-out connections
through the transport. The dial keeps the TCP keepalive and handshake
deadline, and an OnConnect callback handles the per-connection resets.
The transport is created under a lock and agentVersion is now atomic.
2026-09-29 11:59:15 -04:00
user01010111
97db8bd199 fix(hub): honor SSH request cancellation (#2450)
Co-authored-by: hank <hank@henrygd.me>
2026-09-29 11:22:17 -04:00
user01010111
24881fbfdf fix(hub): prevent proxy caching of systemd details (#2456)
Co-authored-by: hank <hank@henrygd.me>
2026-09-29 10:54:17 -04:00
user01010111
4422be717c refactor(site): restore TypeScript checking in production builds (#2457) 2026-09-29 10:35:47 -04:00
user01010111
0484c54919 fix(hub): require system access for alert subscriptions and delivery (#2455)
Co-authored-by: hank <hank@henrygd.me>
2026-09-29 10:27:11 -04:00
user01010111
a77ed345d7 refactor(hub): scope monitor result writes to the reporting system (#2449)
Co-authored-by: hank <hank@henrygd.me>
2026-09-29 09:41:48 -04:00
henrygd
1ab38e57c5 chore(site): refresh bun lockfile 2026-09-29 08:52:33 -04:00
user01010111
68ca6936a7 refactor(agent): avoid deprecated CPU time total helper (#2459) 2026-09-29 08:42:01 -04:00
user01010111
5df0a256c6 fix(hub): pad short monitor IDs to the schema minimum (#2454) 2026-09-28 19:48:57 -04:00
user01010111
8b38db1ba0 test: initialise and stop hub fixture workers before cleanup (#2463) 2026-09-28 19:42:36 -04:00
user01010111
130365f5d3 fix(agent): create SSH server configuration per connection (#2451) 2026-09-28 19:22:48 -04:00
user01010111
921ded1af0 fix(hub): synchronise WebSocket connection access (#2453)
Co-authored-by: user01010111 <lapses.50.booster@icloud.com>
2026-09-28 19:12:00 -04:00
user01010111
09a277f074 fix(hub): synchronise system status access (#2452) 2026-09-28 18:58:46 -04:00
user01010111
083b28a1fc fix(hub): preserve custom DNS resolvers when syncing monitors (#2448) 2026-09-28 18:49:43 -04:00
user01010111
c556dc478d test: preserve fixture errors and verify complete certificate pools (#2462) 2026-09-28 18:23:15 -04:00
user01010111
62f8a39c8a test: make agent and systemd fixtures portable (#2461) 2026-09-28 18:19:02 -04:00
Sven van Ginkel
be3dad7ed4 fix(site): confirm before deleting a single network monitor (#2467) 2026-09-28 18:01:10 -04:00
Sven van Ginkel
666529e073 feat(site): compare network monitors across systems (#2442) 2026-09-28 17:45:54 -04:00