hank
9731a74185
New translations en.po (Vietnamese)
...
[ci skip]
2026-08-17 16:46:34 -04:00
hank
b1d3d6c7c4
New translations en.po (Chinese Traditional)
...
[ci skip]
2026-08-17 16:46:33 -04:00
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
hank
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 Kwon
ca5497324c
feat: add :slim NVIDIA agent container image ( #2002 , #2003 )
2026-08-16 15:42:13 -04:00
Sai Asish Y
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 Kolber
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
Maxim Lepekha
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
Sven van Ginkel
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 Lehtonen
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 Ginkel
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 Ginkel
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 Ginkel
35af36fbd2
bug: fix docker memory chart ( #2027 )
2026-08-13 19:21:40 -04:00
Sven van Ginkel
e380ab6917
fix(ui): prevent usage bars from overflowing card border in grid view ( #2064 )
2026-08-13 19:18:43 -04:00
TowyTowy
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