ajnart
6868e4b8d2
test(auth): assert complete membership set for invalid OIDC claim
...
Address CodeRabbit: query all memberships instead of findFirst so a
handler that preserves the existing row but adds a membership is caught.
2026-08-08 12:25:11 +02:00
ajnart
cc4e11fce4
Merge remote-tracking branch 'origin/dev' into fix/three-xs-fixes
...
# Conflicts:
# apps/nextjs/src/components/board/items/widget-context-menu.tsx
2026-08-08 12:07:10 +02:00
ajnart
71b986f249
fix: gate scrollbar resize guard on size, preserve parse causes
...
Address CodeRabbit review on #6510 :
- gridstack: only suppress recalculation when the width delta is
insignificant AND (non-dynamic OR height unchanged), so dynamic
sections still rebuild on height changes
- beszel: propagate the response parse failure via { cause } in both
error wrappers
- auth tests: cover invalid (non-string) OIDC groups claims
2026-08-08 11:35:42 +02:00
ajnart
e0ebdd9047
test(auth): add regression test for single-string OIDC groups claim
2026-08-08 11:16:39 +02:00
Thomas
b32ad82850
perf: cut cold route compilation and unblock preview images ( #6441 )
2026-08-07 20:24:26 +02:00
homarr-crowdin[bot]
85fcea3837
chore(lang): updated translations from crowdin ( #6500 )
2026-08-07 18:22:43 +02:00
Thomas
f76a0f240a
feat(apps): allow custom URI schemes in application links ( #6521 )
2026-08-06 21:52:56 +02: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
Thomas Camlong
b2a4dcad1c
fix: revert ineffective Uptime-Kuma paused fix; harden Unraid CPU divisor
...
The Uptime-Kuma status-page API (toPublicJSON) does not emit a status
field on monitor objects, so the added status schema field and paused
early-return were dead code and did not resolve #6002 . Paused monitors
stop producing heartbeats and the two consumed endpoints expose no
paused signal, so revert the change.
Unraid CPU: divide by cpus.length (the array actually being averaged)
instead of info.cpu.threads, which is more robust if the two ever
disagree, while keeping the SMT over-reporting fix.
2026-08-03 17:41:24 +02:00
Thomas
778533a62e
fix: revert regressions from recent integration/releases/app-href changes ( #6514 )
2026-08-03 17:37:53 +02:00
ajnart
751dd751e0
style: auto-fix lint and format
2026-08-03 15:31:09 +00:00
Thomas Camlong
7dd7d9280a
chore: remove leaked docs sitemap entry from this PR
2026-08-03 17:30:00 +02:00
Thomas Camlong
60b0f59fe7
chore: remove board hotkeys from this PR (owned by #6393 )
2026-08-03 17:16:50 +02:00
Thomas
b4fba47a23
fix(releases): add success flag to successful response for correct error detection ( #6512 )
2026-08-03 17:10:35 +02:00
Thomas Camlong
ef9ead60ba
fix: address CodeRabbit review — guard OIDC group types and CPU division
2026-08-03 17:09:05 +02:00
Thomas
76ddfceb13
fix: restore auto-refresh for docker and notifications widgets ( #6511 )
2026-08-03 17:07:46 +02:00
Thomas
2f6b96e5ba
feat: restrict integrations management to integration-full-all permission ( #6509 )
2026-08-03 17:04:35 +02:00
Thomas Camlong
ce6a637220
fix: right-click apps, board keyboard shortcuts, scrollbar oscillation, Beszel JSON errors
...
- #6416 : Skip widget context menu for app widgets (pass through native right-click)
- #6392 : Add board keyboard shortcuts (mod+shift+arrows to cycle, mod+shift+1-9 for direct)
- #6080 : Prevent GridStack scrollbar oscillation by thresholding resize events
- #6024 : Add try-catch for Beszel response.json() calls in auth and testing paths
2026-08-03 17:03:24 +02:00
ajnart
afe5f2b6b4
style: auto-fix lint and format
2026-08-03 14:52:40 +00:00
Thomas Camlong
7de2fc04ec
fix: correct Unraid CPU calculation, OIDC single-group sync, and Uptime-Kuma paused status
...
- **Unraid CPU calculation** (#6082 ): Use thread count instead of core count
when normalizing CPU utilization. Each cpus[] entry is one thread, so
dividing by physical cores (cores) over-reports on SMT systems.
- **OIDC single-group sync** (#5716 ): Normalize the groups claim to always
be an array. Some providers (e.g. Jumpcloud) send a single group as a
plain string instead of an array, which caused the Array.isArray check
to skip group synchronization entirely.
- **Uptime-Kuma paused status** (#6002 ): Add the status field to the
monitor schema and check it before falling back to heartbeat inference.
When a monitor is paused, heartbeats stop arriving, so the latest
heartbeat may still show 'up' from before pausing. The status page
returns status=2 for paused monitors, which this change now respects.
2026-08-03 16:51:21 +02:00
Thomas
f1b7a5146a
fix: allow [homarr_base] template variables in app href validation ( #6508 )
2026-08-03 16:47:40 +02:00
Thomas Camlong
05292ae1f5
fix: map legacy media server options
2026-08-03 15:24:30 +02:00
Thomas
d58a47b776
fix: restrict system health monitoring integrations ( #6505 )
2026-08-02 10:17:05 +02:00
Thomas
797bdd001f
fix: keep direct icon URLs visible ( #6504 )
2026-08-01 23:28:18 +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
edb56f3fcd
fix: accept direct icon URLs
...
Use valid direct HTTP(S) icon URLs without repository search.
2026-08-01 23:06:26 +02:00
homarr-crowdin[bot]
fcc5130068
chore(lang): update translations from crowdin ( #6457 )
2026-07-31 23:50:10 +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
2885f7a297
fix(widgets): preserve data on integration failures ( #6484 )
2026-07-28 22:18:08 +02:00
Thomas
906c9f11fa
feat(widgets): rework downloads widget with mantine-datatable ( #6430 )
2026-07-28 21:50:09 +02:00
Thomas
3419805a49
fix(beszel): restore balanced grid layout for Beszel System Grid widget ( #6389 )
2026-07-28 21:49:04 +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
e66979bab6
feat(auth): link credentials users with OIDC ( #6445 )
2026-07-28 14:49:51 +02:00
homarr-crowdin[bot]
387db030cd
chore(lang): updated translations from crowdin ( #6283 )
2026-07-23 09:14:14 +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
9cabb42edb
fix(widgets): add 350ms hover delay before opening calendar day popover ( #6431 )
2026-07-23 01:54:23 +02:00
Thomas
bfba3c9215
fix(releases): avoid unnecessary GitHub pagination for LinuxServer updates ( #6444 )
2026-07-23 00:20:54 +02:00
Bergasha
7184bc09c1
feat(clock widget): Adds animated weather and temp ( #6372 )
2026-07-23 00:04:32 +02:00
Thomas
9bb0c0f811
fix(media-requests): cache statistics responses ( #6443 )
2026-07-22 17:38:28 +02:00
Thomas
cf0e469465
feat: restrict apps management to board modifiers ( #6425 )
2026-07-21 16:56:33 +02:00
Thomas
8e7fa782b3
feat(weather): add humidity display ( #6429 )
2026-07-21 16:36:03 +02:00
Thomas
97652802f0
feat(immich): show random photos without album ( #6424 )
2026-07-21 16:10:45 +02:00
Thomas
1706289124
fix(media-server): guard against undefined playback from stale cached data ( #6433 )
2026-07-21 16:01:37 +02:00
Thomas
f1602f67d4
fix: stop auto-seeding ArchiveTeam Warrior integration and widget on default dashboards ( #6413 )
2026-07-20 17:01:07 +02:00
Thomas Camlong
1e9d3e0656
fix(db): increase mysql migration test timeout to 120s
2026-07-20 15:18:50 +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