zachary and Claude Opus 5
bfbba5782a
fix(integrations): type the Site Manager transport boundary and guard it
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-10-08 00:24:21 +02:00
zachary and Claude Opus 5
787e36d8ed
feat(integrations): add UnifiSiteManagerIntegration
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-10-08 00:24:21 +02:00
zachary and Claude Opus 5
49d4c3ae28
feat(integrations): add UniFi Site Manager cloud client
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-10-08 00:24:15 +02:00
zachary and Claude Opus 5
87056f998d
feat(integrations): add UniFi Site Manager schemas and pure mappers
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-10-08 00:24:15 +02:00
zachary and Claude Opus 5
3125bcf400
fix(integrations): keep unifi-os-types client-safe
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-10-08 00:23:44 +02:00
zachary and Claude Opus 5
277fbb841e
fix: address final review — cloud TLS, MAC guard, honest ISP metrics
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-10-08 00:23:44 +02:00
zachary and Claude Opus 5
11dd6f44ea
fix(integrations): make client/device counts nullable and test real degradation
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-10-08 00:22:04 +02:00
zachary and Claude Opus 5
0abde13101
feat(integrations): add UnifiOsIntegration with optional cloud enrichment
...
Introduces UnifiOsIntegration, orchestrating UnifiOsApi (local) and
UnifiSmApi (optional cloud) to build the UnifiOsSummary. Local endpoint
calls degrade independently via Promise.allSettled; the cloud client is
never instantiated without a configured siteManagerApiKey secret.
Registers the unifiOs kind in the integration creator, index, and types
barrels, resolving the previously-failing typecheck.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-10-08 00:22:04 +02:00
zachary and Claude Opus 5
2de3063dc1
fix(integrations): select newest ISP metric period explicitly
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-10-08 00:21:50 +02:00
zachary and Claude Opus 5
2d601279e3
fix(integrations): type unifi-os test fetch mocks for tsc
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-10-08 00:21:50 +02:00
zachary and Claude Opus 5
ca1cc54623
feat(integrations): add optional UniFi Site Manager client with 5min cache
...
Task 4 of the UniFi OS integration: an optional cloud client for
Ubiquiti's Site Manager API that enriches the local console with ISP
latency data. Instantiated only when a cloud API key is configured
(Task 5). Every failure path (bad key, non-ok status, parse error,
unmatched gateway MAC) returns null rather than throwing, since the
cloud is a pure enrichment. Metrics are cached 5 minutes, keyed by
gateway MAC, to respect the ~27 min publication lag and avoid rate
limiting; the query window is 3 hours because a 15-minute window
returns an empty array on the real API.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-10-08 00:21:50 +02:00
zachary and Claude Opus 5
c17b863e3f
feat(integrations): add UniFi OS local API client
...
Implements HTTP client for UniFi OS console integration API with support for
fetching site information, client counts, device statistics, and VPN server
configs. Includes pagination handling with filter-based fallback when client
count exceeds API limit.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-10-08 00:21:50 +02:00
zachary and Claude Opus 5
65d1266e63
fix(integrations): make unifi-os test invocation-independent with vi.hoisted()
...
Guarded environment validation with SKIP_ENV_VALIDATION and SECRET_ENCRYPTION_KEY
set in vi.hoisted() so that tests pass both with 'pnpm test' (NODE_ENV=development)
and bare 'pnpm vitest run' (no env override).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-10-08 00:21:50 +02:00
zachary and Claude Opus 5
9339e6308b
feat(integrations): add UniFi OS schemas and pure mappers
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-10-08 00:21:50 +02:00
Thomas
b7b803816c
fix: use public Pi-hole version discovery ( #7032 )
2026-10-06 19:27:33 +02:00
SmilingJoe and ajnart
df6410d56c
feat(widgets): add GPU metrics to Beszel system stats ( #6645 )
...
Co-authored-by: ajnart <thomas@ajnart.dev >
2026-10-05 14:53:23 +02:00
Thomas
177fa97b76
feat: support Unraid storage pools ( #7038 )
2026-10-05 14:51:48 +02:00
Sobe Silvertree
67196975f3
feat(sabnzbd): add archived history options to the Downloads widget ( #6515 )
2026-10-05 14:51:03 +02:00
Thomas
f50d4ed134
fix(integrations): authenticate Frigate stats and HTTP requests ( #7019 )
...
* fix(integrations): authenticate Frigate stats and HTTP requests [skip ci]
* fix(integrations): reject HTTP Frigate URLs before authentication
2026-10-03 23:33:23 +02:00
Thomas
c1dd2b3bca
fix(unifi): count active remote VPN sessions ( #7013 )
2026-10-03 23:14:37 +02:00
Thomas
6f93be1227
fix: include Jellyfin releases across mixed libraries ( #6998 )
2026-10-03 22:33:49 +02:00
Thomas
eec910aabb
fix: classify Plex music releases correctly ( #6977 )
...
* fix: classify Plex music releases correctly
* test(plex): cover music release classification
2026-10-03 22:32:45 +02:00
+12
fcd7c979df
feat!: release v2 ( #6545 )
...
Co-authored-by: Artur <145776561+arturict@users.noreply.github.com >
Co-authored-by: arturict <arturict@users.noreply.github.com >
Co-authored-by: Thomas <thomas@ajnart.fr >
Co-authored-by: Afonso Jorge Ramos <afonsojorgeramos@gmail.com >
Co-authored-by: Danura30082 <danura30082+github@gmail.com >
Co-authored-by: Kushie <122986913+kushiemoon-dev@users.noreply.github.com >
Co-authored-by: ajnart <thomas@ajnart.fr >
Co-authored-by: ajnart <thomas@ajnart.dev >
Co-authored-by: chenjun <chenjun@foxmail.com >
Co-authored-by: Wikibear <wikibear@users.noreply.github.com >
Co-authored-by: Bergasha <bergasha@gmail.com >
Co-authored-by: leafyelin <43306196+leafyelin@users.noreply.github.com >
Co-authored-by: Lucas Araujo <lucas.lra@gmail.com >
Co-authored-by: GreenMonito <86085570+GreenMonito@users.noreply.github.com >
Co-authored-by: Nerdy-Technician <roffo@nerdy-technician.social >
Co-authored-by: Jun <34545896+jcstrong@users.noreply.github.com >
Co-authored-by: Edmond Abraham <54119952+gitedmond@users.noreply.github.com >
Co-authored-by: thrawnx <tight.bulb9384@fastmail.com >
Co-authored-by: Chris <58918656+nordada@users.noreply.github.com >
Co-authored-by: yi111 <153097222+Yi-111-a@users.noreply.github.com >
Co-authored-by: Yanis <naamaneyanis@gmail.com >
Co-authored-by: Wikibear <me@sej.de >
Co-authored-by: alessiottavo <93441886+alessiottavo@users.noreply.github.com >
2026-10-02 21:00:14 +02:00
ajnart
8579fcbfc2
test(http,immich): address CodeRabbit review
...
- guarantee server teardown via try/finally in both wire-level tests
- add tuple-array HeadersInit coverage to the helper suite
2026-08-22 17:21:38 +02:00
ajnart
b6f3aba23e
test(http,immich): prove User-Agent fix at the wire level
...
Add two regression tests that fail on v1.76.0 and pass with the fix:
- wire-level test: a Headers instance (the shape @immich/sdk hands over)
must reach the remote server with all headers intact
- real-SDK e2e: getServerStatistics through fetchWithTrustedCertificatesAsync
against a live local server must deliver x-api-key
2026-08-22 17:16:31 +02:00
Thomas
aca3b5d861
fix: correct Unraid CPU, link context menus, and board resizing ( #6510 )
...
Fix Unraid logical CPU averaging, preserve native context menus for app and bookmark widgets in view mode, and prevent scrollbar-width GridStack resize oscillation.
2026-08-22 10:53:26 +02:00
Afonso Jorge Ramos
993a267e0c
fix(truenas): keep reporting pools without usable dataset space ( #6635 )
2026-08-20 15:37:10 +02:00
Thomas
df438b4cd2
Merge pull request #6571 from homarr-labs/feat/fix-home-assistant-actions
2026-08-16 00:23:14 +02:00
Thomas Camlong
5488bf4d18
fix(truenas): use lowercase in operator for dataset query
2026-08-15 01:33:20 +02:00
Thomas Camlong
e761c10f32
fix Home Assistant widget actions
2026-08-13 16:21:48 +02:00
ajnart
f6137b2dcc
fix(truenas): guard empty dataset percentage
2026-08-12 18:24:33 +02:00
ajnart
425dd90871
fix(truenas): report usable dataset space
2026-08-12 18:19:07 +02:00
Sven
742bde1d27
fix(synology): support vol_info in storage_v2 responses ( #6554 )
2026-08-11 08:59:28 +00:00
Timon and Thomas
98bb1aecf8
feat(integrations): add What's Up Docker (WUD) integration and widget ( #6523 )
...
Co-authored-by: Thomas <thomas@ajnart.fr >
2026-08-10 08:42:23 +00:00
Thomas
55214ccbc5
fix(integrations): throw on total item-info failure to preserve stale-cache fallback ( #6522 )
2026-08-06 21:42:46 +02:00
Bergasha
49314533bf
feat(Media player widget): expands on Direct Play and Transcoding badges ( #6489 )
2026-08-01 23:21:13 +02:00
Thomas
27ca058088
feat(widgets): persist Beszel and Docker table layouts ( #6490 )
2026-08-01 23:20:09 +02:00
Thomas
ade640dcea
test(navidrome): complete cleanup review ( #6494 )
...
* test(navidrome): hoist album fixture helper
* test(navidrome): address coderabbit cleanup feedback
2026-07-31 14:39:11 +02:00
Thomas
61128ddcc8
fix(navidrome): clean up audio stats integration ( #6493 )
2026-07-31 14:20:51 +02:00
Thomas
6a3cee8107
fix(navidrome): complete media server session data ( #6492 )
2026-07-31 13:53:06 +02:00
Matt Van Horn
06d9c07d22
feat: expose Navidrome as a media-server (now-playing) integration ( #6070 )
2026-07-31 13:30:44 +02:00
Thomas
906c9f11fa
feat(widgets): rework downloads widget with mantine-datatable ( #6430 )
2026-07-28 21:50:09 +02:00
Tim Moore and Tim Moore
91a6b19ba1
fix(beszel): expire stored sessions so the integration recovers from token expiry ( #6476 )
...
Co-authored-by: Tim Moore <tim.moore@ingenuity.com.au >
2026-07-28 14:55:33 +02:00
Thomas
14c3fa2e76
fix(beszel): prevent live subscription memory growth ( #6448 )
...
* fix(beszel): bound live stats subscriptions
* fix(beszel): avoid blocking subscription teardown
* fix(import): map new clock options
2026-07-23 02:03:08 +02:00
Thomas
97652802f0
feat(immich): show random photos without album ( #6424 )
2026-07-21 16:10:45 +02:00
Thomas
0015a6d88d
fix(immich): use thumbnail endpoint instead of original for album carousel ( #6396 )
...
* fix(immich): use thumbnail endpoint instead of original for album carousel
Switches from /api/assets/:id/original to /api/assets/:id/thumbnail to fix
HEIC image incompatibility (thumbnails are always JPEG), reduce bandwidth,
and improve loading speed.
Closes #6388
* working on immich
* Improve image proxy error handling
* fix(image-proxy): use trusted fetch response type
* docs(immich): require Asset View permission
2026-07-20 14:53:27 +02:00
Bergasha
5144e14da4
fix(media-server): populate playback progress, transcode status, and network location for streams ( #6315 )
2026-07-15 16:27:58 +02:00
Thomas
7887ce12c0
fix(integrations): resolve intermittent Seerr/Overseerr crashes and add query status to context menu ( #6347 )
2026-07-15 11:41:18 +02:00
Thomas
03f68a0421
fix(qbittorrent): sort torrents by progress so active items appear before limit cutoff ( #6297 )
2026-07-12 14:56:24 +02:00
Thomas
8e8c29979f
fix(system-disks): format absolute storage values with shared byte helper ( #6299 )
2026-07-12 14:50:58 +02:00