Commit Graph
495 Commits
Author SHA1 Message Date
henrygd f8d3fe1817 fix: use omitzero for scalar JSON fields under json v2
PocketBase now marshals record JSON fields with encoding/json/v2, where
omitempty no longer omits zero numbers or false. This roughly doubled the
size of stored system_stats rows with zero-value keys. Switch scalar
fields to omitzero to restore the v1 output shape, and add a test that
compares v1 and v2 output for zero-heavy values.
2026-10-11 09:47:30 -04:00
Bharat KauravandGitHub 383e9c7072 fix(agent): widen NVMe unsafe_shutdowns to uint (#2583)
unsafe_shutdowns was uint16, so drives reporting more than 65535 unsafe
shutdowns made json.Unmarshal fail and the entire NVMe SMART record was
discarded with only "no valid SMART data found" in the logs. Widen it
to uint, matching power_cycles (#2484), and log the unmarshal error at
debug level so similar failures are diagnosable.

Fixes #2582
2026-10-11 09:17:17 -04:00
spatiumstasandhank 13bdd05934 fix: handle cached NVMe failures and empty SMART responses 2026-10-09 14:40:55 -04:00
017ebb091a feat: surface zpool status messages in pool health (#2509)
Co-authored-by: henrygd <hank@henrygd.me>
2026-10-09 13:57:40 -04:00
Sven van GinkelandGitHub 5714643ff9 fix(site): keep last known update count in systems table when host is down (#2559) 2026-10-09 12:10:46 -04:00
henrygd e30e980854 deps: update npm / bun lockfiles 2026-10-09 11:19:45 -04:00
Sven van GinkelandGitHub 195afc10b8 deps(site): bump npm packages with security alerts (#2575) 2026-10-09 11:17:25 -04:00
henrygd d91f06f3c5 fix(hub): stop keepalive pings after prolonged agent silence
The keepalive ping on a failed fetch re-arms the read deadline without needing
a reply, so a dead peer (power loss, partition) kept its connection until TCP
gave up. Track when the agent last sent a message and only ping while that is
under maxAgentSilence (3m). A live agent always answers within interval + its
own 120s deadline, so slow agents are unaffected; a dead one is now released
by the read deadline and falls back through the normal down/SSH path.
2026-10-09 11:09:43 -04:00
Mario MoharandGitHub 7305eda972 fix(hub): ping a slow agent so its connection survives between polls (#2435) 2026-10-09 10:51:42 -04:00
bc2278e7e9 feat(agent): Handle update package check for xbps package manager (#2522)
Co-authored-by: hank <hank@henrygd.me>
2026-10-06 12:10:12 -04:00
Sven van GinkelandGitHub 965518e63c fix(site): restore latency tolerance in 1m realtime charts (#2521) 2026-10-05 12:48:46 -04:00
Sven van GinkelandGitHub ca40b5b38f fix(charts): show isolated points and stop endless spinner on empty values (#2514) 2026-10-05 12:39:14 -04:00
Sven van GinkelandGitHub d89f844a2a feat(monitors): add option to ignore TLS errors for HTTPS monitors (#2500) 2026-10-05 12:01:51 -04:00
Julio LinsandGitHub dcae7682cd fix(hub): add missing testing build tag to hub tests (#2525) 2026-10-05 10:54:21 -04:00
henrygd ec96c13466 release 0.21.0 2026-10-02 13:13:54 -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
hankandGitHub 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
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
henrygd 5b0952ffcf ui: persist log timestamp toggle and add tooltips to log buttons 2026-09-30 21:26:28 -04:00
Jeroen De WildeandGitHub 2502dd9626 feat: add toggle for log timestamps (#2471) 2026-09-30 21:14:13 -04:00
hankandGitHub 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
Sven van GinkelandGitHub 87f1efdfd9 fix(ui): reject IP targets for DNS monitors (#2483) 2026-09-30 18:12:14 -04:00
Bartu ÖzenandGitHub dd3a769d18 Widen NVMe power-cycle SMART fields to uint (#2484) 2026-09-30 17:50:12 -04:00
Sven van GinkelandGitHub 15c29fee92 feat(site): allow dismissing the active alerts banner and soften its red (#2478) 2026-09-30 12:17:02 -04:00
Sven van GinkelandGitHub 2ca5e727f9 refactor(ui): remove "Copy to system" from network monitor actions (#2480) 2026-09-30 12:13:31 -04:00
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
spatiumstasandGitHub 3cc19602c1 hotfix: remove unused useLingui (#2476) 2026-09-29 17:21:45 -04:00
spatiumstasandGitHub 6c47ca8ecc fix(site): refresh interpolated translations on locale change (#2405) 2026-09-29 12:57:57 -04:00
JuankersandGitHub 3281055d95 fix(ui): prevent status ping from being clipped on desktop (#2470) 2026-09-29 12:24:44 -04:00
spatiumstasandGitHub 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
97db8bd199 fix(hub): honor SSH request cancellation (#2450)
Co-authored-by: hank <hank@henrygd.me>
2026-09-29 11:22:17 -04:00
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
user01010111andGitHub 4422be717c refactor(site): restore TypeScript checking in production builds (#2457) 2026-09-29 10:35:47 -04:00
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
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
user01010111andGitHub 5df0a256c6 fix(hub): pad short monitor IDs to the schema minimum (#2454) 2026-09-28 19:48:57 -04:00
user01010111andGitHub 8b38db1ba0 test: initialise and stop hub fixture workers before cleanup (#2463) 2026-09-28 19:42:36 -04:00
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
user01010111andGitHub 09a277f074 fix(hub): synchronise system status access (#2452) 2026-09-28 18:58:46 -04:00
user01010111andGitHub 083b28a1fc fix(hub): preserve custom DNS resolvers when syncing monitors (#2448) 2026-09-28 18:49:43 -04:00
user01010111andGitHub c556dc478d test: preserve fixture errors and verify complete certificate pools (#2462) 2026-09-28 18:23:15 -04:00
user01010111andGitHub 62f8a39c8a test: make agent and systemd fixtures portable (#2461) 2026-09-28 18:19:02 -04:00
Sven van GinkelandGitHub be3dad7ed4 fix(site): confirm before deleting a single network monitor (#2467) 2026-09-28 18:01:10 -04:00
Sven van GinkelandGitHub 666529e073 feat(site): compare network monitors across systems (#2442) 2026-09-28 17:45:54 -04:00
7626e5e3c8 feat: show systemd service logs in service details (#2440)
Co-authored-by: hank <hank@henrygd.me>
2026-09-28 13:57:36 -04:00