Commit Graph
1719 Commits
Author SHA1 Message Date
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
henrygd 02653f8ed9 chore: update go dependencies 2026-09-29 12:12:14 -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 68ca6936a7 refactor(agent): avoid deprecated CPU time total helper (#2459) 2026-09-29 08:42:01 -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
user01010111andGitHub 130365f5d3 fix(agent): create SSH server configuration per connection (#2451) 2026-09-28 19:22:48 -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
Sven van GinkelandGitHub ad215788ed fix(site): even y-axis ticks on system charts (#2466) 2026-09-28 12:14:47 -04:00
henrygd b684ac9910 fix(hub): bound SSH handshake so a silent peer can't hang the updater
ssh.ClientConfig.Timeout only covers the TCP connect. A peer that accepts
the connection but never sends an SSH banner blocked ssh.NewClientConn
forever, wedging the system's updater goroutine and leaking the socket.
Set a deadline on the conn for the handshake and clear it afterward.
2026-09-28 10:18:59 -04:00
65f00ae119 feat(site): replace active alerts grid with banner and sheet (#2445)
Co-authored-by: henrygd <hank@henrygd.me>
2026-09-27 20:33:06 -04:00
henrygd 4b4ef0a2fe fix(ui): show grey agent version dot for paused systems 2026-09-27 13:25:29 -04:00
henrygd 81fd571169 refactor(site): move package updates to own tab and tweak table
- show package updates in a separate Updates tab in the tabbed layout
- sort major version changes first in the change column
- use text-sm for version numbers
2026-09-27 11:39:54 -04:00
Anand HegdeandGitHub 8613cfe548 feat: list pending package updates on the system page (#2427) 2026-09-27 11:27:13 -04:00
c1505804bd fix(site): show gaps in network monitor charts for failed probes and disconnects (#2428)
Co-authored-by: henrygd <hank@henrygd.me>
2026-09-27 11:08:50 -04:00
739649a6db Fix: Convert intel gpu top from text to JSON (#2387)
Co-authored-by: hank <hank@henrygd.me>
2026-09-27 10:17:28 -04:00
Sven van GinkelandGitHub 3f20ecae50 fix(agent): keep reconnecting after an async WebSocket handshake failure (#2329, #2326) 2026-09-26 13:30:52 -04:00
henrygd b3feff9a28 fix(site): round network monitor res_avg and loss to two decimals
plus formatting in utils.ts
2026-09-26 12:53:39 -04:00
67c3c1cb43 fix(site): avoid duplicate y-axis labels on network monitor response charts (#2426)
Co-authored-by: hank <hank@henrygd.me>
2026-09-26 12:37:11 -04:00
henrygd fb4e93f098 refactor(site): use globalThis to access BESZEL for base path 2026-09-26 12:26:39 -04:00
spatiumstasandGitHub 1ed02bb517 feat(ui): add Twemoji Country Flags font to make sure flags always render (#2363) 2026-09-26 10:41:22 -04:00
henrygd 15994474f6 hub: return 404 status for unknown frontend routes (#2414) 2026-09-26 10:17:25 -04:00
henrygd 24ec18a937 refactor(hub): decode each agent response into a new struct
The WebSocket path reused sys.data, and CBOR leaves omitted fields
untouched, so stale values carried over (e.g. Details re-saved every
poll, SystemdServicesUpdated stuck true, old map entries kept).

sys.data is now set only by the regular update for alerts. Removes the
Wi-Fi-only workaround in UnmarshalResponse.
2026-09-26 09:43:33 -04:00
henrygd c7f2177b08 wifi: hide chart without signal data, show unknown signal in table
The line chart never renders without values, leaving an endless spinner
when connected interfaces report no RSSI.
2026-09-25 20:09:34 -04:00
henrygd a042e19549 wifi(linux): query associated station directly
mdlayher/wifi only dumps stations, which some full-MAC drivers (e.g.
out-of-tree Realtek USB) answer with an empty list, leaving RSSI
unavailable. Request the associated BSSID's station directly, as
`iw link` does, and parse it with native.ParseStationInfo.
2026-09-25 19:59:18 -04:00
henrygd fe83f5b831 add signal strength indicator dot to all systems table 2026-09-25 19:24:11 -04:00
henrygd 46fa7c581e use tooltip for all systems table cell 2026-09-25 18:53:25 -04:00
henrygd 24792aa24f wifi: omit empty info snapshot and tidy up
- Info.WiFi uses json "wf" with omitempty so systems without Wi-Fi no
  longer store/broadcast "wifi":null
- move osascript exec into wifi_darwin.go; drop unused commandRunner
- share strongest-connection logic between table cell and sorting
- trim agent/wifi README
2026-09-25 18:43:05 -04:00
henrygd 16e3fbadce store compact RSSI stats and skip real-time collection
Stats.WiFi is now map[string]int8 (json "wf") holding only available
RSSI
readings; SSID and unavailable signals stay in Info.WiFi. Averages are
rounded to whole dBm.

Wi-Fi is collected only on the default 60s interval; real-time requests
reuse the last snapshot to avoid spawning osascript / dumping the BSS
cache every second.
2026-09-25 18:02:34 -04:00
Vito CappelloandGitHub 86ab0fae8b feat: monitor connected Wi-Fi signal per interface (#2367) 2026-09-25 17:43:57 -04:00
henrygd badd4c8245 fix(hub): improve GPU chart layout
- Let GPU Power Draw span full width when it's a lone card in the grid
- Split GPU charts into summary (power/engines) and per-GPU grids so
  usage and VRAM charts stay paired side by side
2026-09-25 13:55:59 -04:00
henrygd 7bea20e3b6 refactor(agent): remove unused FsStats.Time
The disk I/O seed now reads from diskBaseline, so nothing reads
FsStats.Time anymore.
2026-09-25 13:50:19 -04:00
Ludwig J. MarxandGitHub 433b83800f fix(agent): measure first disk I/O sample of an interval from the full baseline (#2420) 2026-09-25 13:38:04 -04:00
henrygd 3dfe062ee4 fix(agent): promote existing entry when root key is already registered
When the root drive is also listed in EXTRA_FILESYSTEMS, its key is
taken before addPartitionRootFs runs. Returning false there sent the
agent to addLastResortRootFs, which picks the most active device and
could register a different drive as root, overwriting that drive's
extra entry. addPartitionRootFs has already resolved the root device,
so promote the existing entry to root instead.
2026-09-25 13:24:11 -04:00