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 Kaurav and GitHub
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
spatiumstas and hank
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 Ginkel and GitHub
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 Ginkel and GitHub
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 Mohar and GitHub
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 Ginkel and GitHub
965518e63c
fix(site): restore latency tolerance in 1m realtime charts ( #2521 )
2026-10-05 12:48:46 -04:00
Sven van Ginkel and GitHub
ca40b5b38f
fix(charts): show isolated points and stop endless spinner on empty values ( #2514 )
2026-10-05 12:39:14 -04:00
Sven van Ginkel and GitHub
d89f844a2a
feat(monitors): add option to ignore TLS errors for HTTPS monitors ( #2500 )
2026-10-05 12:01:51 -04:00
Julio Lins and GitHub
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
hank and GitHub
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 Wilde and GitHub
2502dd9626
feat: add toggle for log timestamps ( #2471 )
2026-09-30 21:14:13 -04:00
hank and GitHub
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 Ginkel and GitHub
87f1efdfd9
fix(ui): reject IP targets for DNS monitors ( #2483 )
2026-09-30 18:12:14 -04:00
Bartu Özen and GitHub
dd3a769d18
Widen NVMe power-cycle SMART fields to uint ( #2484 )
2026-09-30 17:50:12 -04:00
Sven van Ginkel and GitHub
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 and GitHub
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
spatiumstas and GitHub
3cc19602c1
hotfix: remove unused useLingui ( #2476 )
2026-09-29 17:21:45 -04:00
spatiumstas and GitHub
6c47ca8ecc
fix(site): refresh interpolated translations on locale change ( #2405 )
2026-09-29 12:57:57 -04:00
Juankers and GitHub
3281055d95
fix(ui): prevent status ping from being clipped on desktop ( #2470 )
2026-09-29 12:24:44 -04:00
spatiumstas and GitHub
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
user01010111 and GitHub
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
user01010111 and GitHub
5df0a256c6
fix(hub): pad short monitor IDs to the schema minimum ( #2454 )
2026-09-28 19:48:57 -04:00
user01010111 and GitHub
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
user01010111 and GitHub
09a277f074
fix(hub): synchronise system status access ( #2452 )
2026-09-28 18:58:46 -04:00
user01010111 and GitHub
083b28a1fc
fix(hub): preserve custom DNS resolvers when syncing monitors ( #2448 )
2026-09-28 18:49:43 -04:00
user01010111 and GitHub
c556dc478d
test: preserve fixture errors and verify complete certificate pools ( #2462 )
2026-09-28 18:23:15 -04:00
user01010111 and GitHub
62f8a39c8a
test: make agent and systemd fixtures portable ( #2461 )
2026-09-28 18:19:02 -04:00
Sven van Ginkel and GitHub
be3dad7ed4
fix(site): confirm before deleting a single network monitor ( #2467 )
2026-09-28 18:01:10 -04:00
Sven van Ginkel and GitHub
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