ajnart
ac7e3f2ef4
Merge remote-tracking branch 'origin/release/v2' into feat/pr-6691-hardening
...
# Conflicts:
# apps/nextjs/src/app/[locale]/layout.tsx
# packages/api/src/router/widgets/anchor-notes.ts
# packages/api/src/router/widgets/archive-team-warrior.ts
# packages/api/src/router/widgets/audio-stats.ts
# packages/api/src/router/widgets/bazarr.ts
# packages/api/src/router/widgets/coolify.ts
# packages/api/src/router/widgets/firewall.ts
# packages/api/src/router/widgets/immich.ts
# packages/api/src/router/widgets/paperless-ngx.ts
# packages/api/src/router/widgets/patchmon.ts
# packages/api/src/router/widgets/speedtest-tracker.ts
# packages/api/src/router/widgets/tracearr.ts
# packages/api/src/router/widgets/traefik.ts
# packages/api/src/router/widgets/umami.ts
# packages/api/src/router/widgets/uptime-kuma.ts
# packages/api/src/router/widgets/vpn.ts
# packages/api/src/router/widgets/wud.ts
# packages/definitions/src/widget-integration-map.ts
# packages/widgets/src/anchor-note/index.ts
# packages/widgets/src/archive-team-warrior/index.ts
# packages/widgets/src/audio-stats/index.ts
# packages/widgets/src/bazarr/index.ts
# packages/widgets/src/coolify/index.ts
# packages/widgets/src/firewall/index.ts
# packages/widgets/src/immich/album-carousel/index.ts
# packages/widgets/src/immich/server-stats/index.ts
# packages/widgets/src/paperless-ngx/index.ts
# packages/widgets/src/patchmon/index.ts
# packages/widgets/src/speedtest-tracker/index.ts
# packages/widgets/src/system-disks/index.ts
# packages/widgets/src/system-resources/index.ts
# packages/widgets/src/tracearr/index.ts
# packages/widgets/src/traefik/index.ts
# packages/widgets/src/umami/index.ts
# packages/widgets/src/uptime-kuma/index.ts
# packages/widgets/src/vpn/index.ts
# packages/widgets/src/wud/index.ts
2026-08-26 15:12:49 +02:00
ajnart
47724f44eb
fix: harden widget request caching
2026-08-26 14:57:53 +02:00
ajnart
9bf266935b
refactor: address adversarial widget architecture review
2026-08-25 10:07:32 +02:00
Thomas Camlong
0ca62f1232
fix(request-handler): prevent shared-cache stampede while a refresh lock is held
...
Waiters that lost the refresh lock polled the shared cache for only 750ms
before falling through to the upstream, but the refresh lock lives for 15s.
On a cold cache with an upstream slower than 750ms, every waiting pod gave up
and stampeded the origin (each also writing L2). Extend the poll window to
match the lock TTL so waiters return the entry the holder publishes instead.
Adds a regression test that fails without the fix.
2026-08-24 15:26:30 +02:00
ajnart
24e6e4a47d
refactor: tighten TypeScript boundaries
2026-08-24 09:38:30 +02:00
ajnart
8f9efd0074
refactor: simplify widget and integration architecture
2026-08-24 00:57:36 +02:00
ajnart
425cb653a1
refactor: streamline widget and integration architecture
2026-08-23 22:33:29 +02:00
Thomas
58a24569ce
feat: expand utility widgets ( #6638 )
2026-08-20 16:26:04 +02:00
Thomas
150d38be62
feat(docker): add endpoint filtering and streamline setup assistant ( #6625 )
...
* feat(docker): add endpoint filtering and setup assistant
* fix(docker): simplify environment setup
* test(docker): cover demo endpoint filtering
* refactor(docker): use accordion for setup suggestions
* fix(docker): use docker icon for setup assistant
* refactor(docker): simplify assisted service setup
* refactor(docker): reuse shared translations
* fix(docker): address review feedback
2026-08-19 08:45:07 +02:00
Thomas
e842177d9b
feat: port release-v2 experience improvements from #6582 (audited subset) ( #6609 )
2026-08-18 09:40:02 +02:00
ajnart
dcef36ffa7
perf: optimize widget integration requests
2026-08-14 11:32:11 +02:00
ajnart
8eb6735387
perf: reduce widget and runtime overhead
2026-08-14 11:32:11 +02:00
ajnart
1ad1439828
feat: improve assistant interactions
2026-08-14 11:32:10 +02:00
ajnart
e336059079
Revert "fix: harden automatic mobile boards"
...
This reverts commit d0b9348b86 .
2026-08-14 11:32:09 +02:00
ajnart
708105ab3f
fix: harden automatic mobile boards
2026-08-14 11:32:09 +02:00
Thomas Camlong
842e86012d
feat: refine widget interactions
2026-08-14 11:07:08 +02:00
Thomas Camlong
44b55a401c
fix: complete widget review cleanup
2026-08-14 11:07:08 +02:00
Thomas Camlong
a38e731209
fix: address widget review feedback
2026-08-14 11:07:08 +02:00
Thomas Camlong
a2763d1f6f
feat: modernize dashboard widgets
2026-08-14 11:07:07 +02: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
b32ad82850
perf: cut cold route compilation and unblock preview images ( #6441 )
2026-08-07 20:24:26 +02:00
Thomas
2885f7a297
fix(widgets): preserve data on integration failures ( #6484 )
2026-07-28 22:18:08 +02:00
Thomas
bfba3c9215
fix(releases): avoid unnecessary GitHub pagination for LinuxServer updates ( #6444 )
2026-07-23 00:20:54 +02:00
Thomas
9bb0c0f811
fix(media-requests): cache statistics responses ( #6443 )
2026-07-22 17:38:28 +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
Junker der Provinz
a0e0bf65ff
fix(releases): let LinuxServer.io version filters find older releases via GitHub ( #6376 )
2026-07-17 14:53:01 +02:00
Thomas
8528d5068b
feat(media-requests): filter requests list by status and time window ( #6320 )
2026-07-15 16:27:24 +02:00
Thomas
c6c4428f7d
Revert "fix(docker): report current CPU usage instead of the lifetime average" ( #6357 )
2026-07-15 14:55:18 +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
2d450239ac
fix(releases): add required octokit throttling rate limit handlers ( #6338 )
2026-07-15 11:27:32 +02:00
Thomas
576856d634
fix(beszel): add reliable live stats and filesystem UI ( #6289 )
2026-07-11 17:55:04 +02:00
Thomas
7a768517ef
fix(request-handler): restore media organizer build ( #6277 )
2026-07-10 18:09:05 +02:00
Thomas
4ae8d527a8
fix(releases): token not applied due to broken allowedRepoIds check ( #6276 )
2026-07-10 17:55:18 +02:00
Josh Preston and Thomas
33395ae226
feat(integrations): add PatchMon integration and widget ( #6119 )
...
Co-authored-by: Thomas <thomas@ajnart.fr >
2026-07-10 17:48:43 +02:00
Anil K Tiwari and Thomas
9fb2e37605
feat(widgets): add missing & queued media widget for Radarr and Sonarr ( #6078 )
...
Co-authored-by: Thomas <thomas@ajnart.fr >
2026-07-10 17:31:08 +02:00
Felix-Ayush and Thomas
2c5368dd4e
feat: add Bazarr integration and subtitle status widget ( #6156 )
...
Co-authored-by: Thomas <thomas@ajnart.fr >
2026-07-10 17:29:10 +02:00
Thomas
24c5d04bfa
fix(beszel): disable request handler cache for stats to make live mode work ( #6244 )
2026-07-10 17:16:23 +02:00
Thomas
2ada1aa249
fix(qbittorrent): handle v5 stopped torrent states for pause functionality ( #6211 )
2026-07-10 16:55:20 +02:00
Junker der Provinz
af89423f66
fix(docker): report current CPU usage instead of the lifetime average ( #6249 )
2026-07-10 16:54:52 +02:00
Nerdy Technician and Thomas
9864fed775
feat: Add Traefik Integration with dedicated widget and Add optional Icons for Gotify/Notifcation Widget (ONLY GOTIFY) ( #6206 )
...
Co-authored-by: Thomas <thomas@ajnart.fr >
2026-07-10 16:49:24 +02:00
Thomas
a382c75968
fix: unblock query cache mutations in demo mode and add cache buster ( #6176 )
2026-07-04 10:47:09 +02:00
Thomas
f19033e0d5
feat: simplify caching — TanStack Query as single source of truth ( #6075 )
2026-07-03 16:33:03 +02:00
Thomas
a5ec880eec
fix(immich): v3 API compatibility — use searchAssets for album assets, drop deviceAssetId ( #5977 )
2026-07-03 15:59:08 +02:00
ajnart
a56bf0f32d
style: auto-fix lint and format
2026-06-27 11:04:33 +00:00
Thomas Camlong
e687bc8c92
fix: address review - paginate GH releases, GitLab tag_name, docs, test
...
- Paginate GitHub releases via api.paginate to avoid missing tags beyond page 1
- Use tag_name instead of name for GitLab releases (name is a display label)
- Remove ArchiveTeam Warrior from widget-configured note in docs
- Fix test assertion to use objectContaining for error shape with message
2026-06-27 13:02:58 +02:00
Thomas Camlong
64c7512283
fix: compile versionRegex once and add fetch timeouts
...
- Compile regex once via compileVersionRegex, reject invalid patterns early
- Add 10s timeout to all provider fetch calls via fetchProvider wrapper
2026-06-27 12:56:48 +02:00
ajnart
398c88f2c6
style: auto-fix lint and format
2026-06-27 09:06:44 +00:00
Thomas Camlong
34d976eeea
fix: apply version filter to LinuxServer.io provider
...
LSIO was bypassing versionRegex unlike all other providers.
2026-06-27 11:01:12 +02:00
Thomas Camlong
2155f13f24
fix: verbose error messages in all release providers
...
Every error now includes a diagnostic message:
- noMatchingVersion: shows the regex used, how many tags were
checked, and sample tag names so users can see why matching failed
- noReleasesFound: distinguishes "no releases at all" from "no match"
- invalidIdentifier: shows the problematic identifier string
- unexpected: includes HTTP status codes from provider APIs
getLatestRelease returns { release } | { noMatch: reason } instead
of Release | null, carrying the diagnostic through.
2026-06-27 10:57:14 +02:00