Commit Graph
362 Commits
Author SHA1 Message Date
hank 08fc578dec New translations en.po (Chinese Simplified)
[ci skip]
2026-08-17 16:46:32 -04:00
hank b189aab61b New translations en.po (Ukrainian)
[ci skip]
2026-08-17 16:46:31 -04:00
hank 5a70767bfe New translations en.po (Turkish)
[ci skip]
2026-08-17 16:46:29 -04:00
hank 6072dd6071 New translations en.po (Swedish)
[ci skip]
2026-08-17 16:46:28 -04:00
hank 001ed54d77 New translations en.po (Serbian (Cyrillic))
[ci skip]
2026-08-17 16:46:27 -04:00
hank 58c58072f7 New translations en.po (Slovenian)
[ci skip]
2026-08-17 16:46:25 -04:00
hank 1df49845ed New translations en.po (Polish)
[ci skip]
2026-08-17 16:46:24 -04:00
hank 965f313393 New translations en.po (Norwegian)
[ci skip]
2026-08-17 16:46:23 -04:00
hank 5790e00c2c New translations en.po (Dutch)
[ci skip]
2026-08-17 16:46:22 -04:00
hank 30a57fcd3f New translations en.po (Korean)
[ci skip]
2026-08-17 16:46:20 -04:00
hank b6c67a1b46 New translations en.po (Japanese)
[ci skip]
2026-08-17 16:46:19 -04:00
hank 8b0b667559 New translations en.po (Italian)
[ci skip]
2026-08-17 16:46:18 -04:00
hank 5502112054 New translations en.po (Hungarian)
[ci skip]
2026-08-17 16:46:16 -04:00
hank 43faf7c5ea New translations en.po (Hebrew)
[ci skip]
2026-08-17 16:46:15 -04:00
hank e31fd0ebe9 New translations en.po (Greek)
[ci skip]
2026-08-17 16:46:14 -04:00
hank 20a1f36ce5 New translations en.po (German)
[ci skip]
2026-08-17 16:46:12 -04:00
hank fd2b0ba897 New translations en.po (Danish)
[ci skip]
2026-08-17 16:46:11 -04:00
hank d6eddcc117 New translations en.po (Czech)
[ci skip]
2026-08-17 16:46:10 -04:00
hank 9578664bd4 New translations en.po (Bulgarian)
[ci skip]
2026-08-17 16:46:08 -04:00
hank 6f3d77fb2e New translations en.po (Arabic)
[ci skip]
2026-08-17 16:46:07 -04:00
hank a8fdc2ca34 New translations en.po (Spanish)
[ci skip]
2026-08-17 16:46:06 -04:00
hank 1ba9b46b85 New translations en.po (French)
[ci skip]
2026-08-17 16:46:04 -04:00
hank 2d30fd6ada New translations en.po (Romanian)
[ci skip]
2026-08-17 16:46:03 -04:00
hank b4ac1eef12 New translations en.po (Russian)
[ci skip]
2026-08-17 16:46:02 -04:00
hank ebde392591 New translations en.po (Portuguese)
[ci skip]
2026-08-17 16:46:00 -04:00
henrygd e07f91b920 release 0.18.8 2026-08-17 16:01:51 -04:00
henrygd 218aa8478a update translations 2026-08-17 15:38:22 -04:00
hankandGitHub 2d01d71f46 New Crowdin updates (#1930) 2026-08-17 15:33:16 -04:00
henrygd 90f1bdef1e remove language toggle from navbar 2026-08-17 12:54:55 -04:00
henrygd 5f383c0eb1 fix(tests): stop system updaters on app termination 2026-08-17 12:32:34 -04:00
Donggyu KwonandGitHub ca5497324c feat: add :slim NVIDIA agent container image (#2002, #2003) 2026-08-16 15:42:13 -04:00
Sai Asish YandGitHub adaf6f338d systems: synthesize error when getRecord returns nil record (#1968) 2026-08-16 14:44:30 -04:00
henrygd 9a54d844ba dev: remove noisy biome checks from package.json scripts 2026-08-16 14:26:59 -04:00
henrygd 87405c5f10 feat: add multi-battery monitoring
- Report battery data for individual devices
- Select a representative battery for legacy fields and alerts
- Average named battery data independently
- Display multiple batteries in system charts
- Add cross-platform coverage and transport tests
2026-08-16 13:52:29 -04:00
Miłosz KolberandGitHub bfa6a1e361 feat(agent): monitor Intel Arc (xe) GPUs via nvtop (#2223)
intel_gpu_top does not support the xe driver, so skip it for xe devices
and let the existing nvtop last-resort collector handle them. nvtop leaves
device_name unset on xe, so name the GPU from its PCI device id ("Intel GPU
(<id>)"). Adds nvtop to the Intel agent image (gputop already ships with
igt-gpu-tools).
2026-08-16 11:41:28 -04:00
eebcd56462 feat: fan RPM monitoring (#2032)
Adds fan RPM monitoring as a peer to the existing temperature collection, addressing #1918.

---------

Co-authored-by: henrygd <hank@henrygd.me>
2026-08-15 15:59:07 -04:00
eb5dd230cf fix(hub): remove stale smart_devices records when a drive is no longer reported (#2178)
* Fix duplicate /dev/sdg-style entries

* only prune devices after complete refreshes

---------

Co-authored-by: henrygd <hank@henrygd.me>
2026-08-15 13:40:30 -04:00
henrygd 3337dff64b ui: possible fix for android bitwarden autofill (#1011) 2026-08-15 12:18:26 -04:00
henrygd ffd4fc2c45 test(ghupdate): align missing checksum digest error expectation 2026-08-14 19:34:42 -04:00
henrygd 052489cada ghupdate: add checksum verification and extraction path containment guard 2026-08-14 19:23:08 -04:00
Lars LehtonenandGitHub 6d0b83f6de fix(cron): log CreateLongerRecords errors (#1926)
chore(cron): comment cron tasks with pocketbase warning
2026-08-14 10:40:28 -04:00
Sven van GinkelandGitHub 6607d4c0d6 fix(hub): check X-Real-IP header to resolve agent's real source IP (#1973) 2026-08-14 10:13:26 -04:00
henrygd bc55e249c4 ui: visually truncate public key on tokens settings page 2026-08-14 10:06:24 -04:00
Sven van GinkelandGitHub 977826e8f3 feat(hub): show public key in universal token settings (#2028) 2026-08-14 10:04:40 -04:00
henrygd 8450b40e0c fix: tests that were not compatible w/ new pocketbase version 2026-08-14 00:20:45 -04:00
Sven van GinkelandGitHub 35af36fbd2 bug: fix docker memory chart (#2027) 2026-08-13 19:21:40 -04:00
Sven van GinkelandGitHub e380ab6917 fix(ui): prevent usage bars from overflowing card border in grid view (#2064) 2026-08-13 19:18:43 -04:00
TowyTowyandGitHub c3a432101b fix(hub): re-dial SSH-pull agents when a connection silently dies (#2126)
The per-system updater reused an SSH client across ticks and ran the data
exchange with no deadline. If a connection went half-open (dead peer that
never sends RST/FIN) or an agent accepted the session but never wrote a
response, the read in fetchDataViaSSH blocked forever. Because
StartUpdater calls update() synchronously on its ticker, a blocked read
froze the whole per-system goroutine: the ticker's subsequent ticks were
dropped, no error was returned so the system stayed "up", and the agent
was never re-dialed until the hub process restarted.

Bound each SSH data exchange with sshOperationTimeout via runWithTimeout:
on timeout the connection is torn down (unwinding the blocked read) and a
retryable error is returned, so the next tick re-dials. Also enable TCP
keep-alive on dialed connections as a backstop for genuine network death.

Fixes #2041
2026-08-13 19:04:38 -04:00
98e86b4c9c fix(agent): treat a backwards container CPU counter as a new baseline (#2205)
CalculateCpuPercentLinux subtracted the stored previous counters from the
current ones without checking direction. When a stats response is processed
after a newer one for the same container, or an accounting counter resets,
the current total reads lower and the unsigned subtraction wraps to ~2^64
instead of going negative.

On the container counter that surfaces as the reported error, and the sample
is discarded along with the container's network stats:

    cpu pct greater than 100: 1.15292150348562e+13

On the system counter it is quieter and worse: the wrapped value inflates the
divisor, so the percentage collapses toward zero and is stored as a healthy
sample rather than rejected. A synthetic rollback measures 2.7e-12 percent.

Both directions are now treated as a new baseline (0% for one sample), which
matches how the function already handles the first-run case.

CalculateCpuPercentWindows had the same unguarded subtraction and is fixed
the same way.

Fixes #2149

Co-authored-by: Ryan Chou <ryanchou1994@users.noreply.github.com>
2026-08-13 18:14:30 -04:00
Sven van GinkelandGitHub 9887b662ad fix(hub): refresh system details on agent reconnect ssh (#2086) 2026-08-11 18:08:18 -04:00