Thomas
36ac1b40ff
Merge branch 'dev' into feat/auto-mobile-boards
2026-08-03 14:38:45 +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
ajnart
b5ffefe707
fix: keep mobile board widgets unchanged
2026-07-29 20:21:59 +02:00
ajnart
5c4cc81b05
Revert "feat: refine mobile dashboard experience"
...
This reverts commit 315520beca .
2026-07-29 20:07:17 +02:00
ajnart
bbc560706a
Revert "style: auto-fix lint and format"
...
This reverts commit 4bd0d8e8dd .
2026-07-29 20:06:59 +02:00
ajnart
38a710efe3
Revert "fix: address mobile dashboard review findings"
...
This reverts commit 1039bb18b3 .
2026-07-29 20:06:59 +02:00
ajnart
b612fb9a89
Revert "feat: complete automatic mobile board UX"
...
This reverts commit 7959c20d88 .
2026-07-29 20:06:47 +02:00
ajnart
dba9a250ff
Revert "fix: harden automatic mobile boards"
...
This reverts commit d0b9348b86 .
2026-07-29 20:06:32 +02:00
ajnart
92a2be2b65
merge: sync dev changes
2026-07-28 23:45:19 +02:00
Thomas
2885f7a297
fix(widgets): preserve data on integration failures ( #6484 )
2026-07-28 22:18:08 +02:00
ajnart
d0b9348b86
fix: harden automatic mobile boards
2026-07-28 21:28:53 +02:00
ajnart
7959c20d88
feat: complete automatic mobile board UX
2026-07-28 19:39:13 +02:00
ajnart
1039bb18b3
fix: address mobile dashboard review findings
2026-07-28 19:39:12 +02:00
ajnart
4bd0d8e8dd
style: auto-fix lint and format
2026-07-28 19:39:12 +02:00
ajnart
315520beca
feat: refine mobile dashboard experience
2026-07-28 19:39:12 +02:00
ajnart
e2f9fa871a
fix: address board review and CI feedback
2026-07-28 19:39:12 +02:00
ajnart
f133e09dc6
feat: add automatic mobile board layout
2026-07-28 19:39:12 +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
cf0e469465
feat: restrict apps management to board modifiers ( #6425 )
2026-07-21 16:56:33 +02:00
Thomas
97652802f0
feat(immich): show random photos without album ( #6424 )
2026-07-21 16:10:45 +02:00
Junker der Provinz
6ac4c6a7b9
fix(search): let public dashboards use generic custom search engines ( #6375 )
2026-07-17 14:53:52 +02:00
Thomas
5e39c8813a
feat(preferences): add enableRightClickOnWidgets user preference ( #6298 )
2026-07-17 14:42:19 +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
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
13c9e5e181
fix(release): repair v1.70.0 quality failures ( #6279 )
...
* fix(release): repair v1.70.0 quality failures
* style: auto-fix lint and format
2026-07-10 21:59:57 +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
7c152cf4fe
feat(api): expose board automation endpoints ( #6213 )
...
* feat(api): expose board automation endpoints
* style: auto-fix lint and format
* test(api): cover board settings updates
* Delete .opencode/changelog/2026-07-06.md
2026-07-10 17:27:42 +02:00
Thomas
718f095cb7
fix: prevent stale persisted query cache from blocking widget data ( #6273 )
2026-07-10 17:19:24 +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
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
Josh Preston
65ba866239
feat: add Synology integration support for health/system monitoring ( #6121 )
2026-07-09 18:23:21 +02:00
Thomas
fc2c251557
feat(demo): allow mutations in demo mode via DEMO_READ_ONLY flag ( #6224 )
2026-07-07 10:01:36 +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
Thomas Camlong
8747d5f93e
fix: add id to repository schema and handle missing ids gracefully
2026-06-28 13:55:17 +02:00
Thomas Camlong
af35a50fa0
fix: handle missing widgetSecrets table and add default releases repo
...
- getConfiguredKinds now returns [] if table doesn't exist yet
- Add homarr-labs/homarr as default releases repository (v#.#.#)
2026-06-28 08:47:09 +02:00
ajnart
398c88f2c6
style: auto-fix lint and format
2026-06-27 09:06:44 +00:00
Thomas Camlong
757d59854e
fix: address PR review - atomic upsert, MCP metadata, stale tokens, save UX
...
- Wrap setSecret delete+insert in a cross-DB transaction
- Add MCP metadata to all widget secret procedures and register in mcp.ts
- Show configured tokens even when no repos use that provider
- Only clear token input after mutation succeeds, with loading state
2026-06-27 10:58:35 +02:00
Thomas Camlong
d893515b93
fix: catch individual repo fetch failures to prevent batch crashes
...
Wrap each repository fetch in try/catch so one failure (Redis,
network, etc.) doesn't crash the entire query batch. Failed repos
now return a proper error response instead of causing all repos
to show "No response from provider".
2026-06-27 10:57:14 +02:00
Thomas Camlong
30107e4e76
fix: gracefully degrade when widget_secret table is missing or access denied
...
The releases widget was crashing because throwIfActionForbiddenAsync
or the widgetSecrets query would throw before DB migrations are run.
Wrap in try/catch so the widget works without tokens in that case.
2026-06-27 10:57:14 +02:00
ajnart
8c51a3769e
style: auto-fix lint and format
2026-06-27 10:57:14 +02:00
Thomas Camlong
77884a3179
feat: add per-widget secret storage for release provider authentication
...
Adds encrypted token storage per release widget so users can authenticate
with GitHub, GitLab, Docker Hub, etc. without needing full integration setup.
- New `widget_secret` table (all 3 DB drivers) keyed by (itemId, kind)
- tRPC router with setSecret/deleteSecret/getConfiguredKinds (board modify access required)
- Releases router injects decrypted tokens into provider requests (board view access required)
- Tokens only used for repos matching widget's stored configuration (prevents proxy abuse)
- Provider auth: GitHub (Octokit auth), GitLab (PRIVATE-TOKEN), Docker Hub (Bearer),
GHCR (registry token), npm (Bearer), Codeberg (token header)
- UI: "Provider Tokens" section in widget editor with PasswordInput per provider
2026-06-27 10:57:13 +02:00
Thomas Camlong
c892731479
fix: address PR review findings for widget-only integration refactor
...
- Fix npm scoped package support (filter time metadata keys, make
description optional, exclude falsy releases from version selection)
- Fix timetable date formatting (use Intl.DateTimeFormat for stable
MM/DD/YYYY output) and named zod import
- Guard migration 0000 against unknown provider keys
- Fix migration 0003 to delete integration links by integrationId
- Reset immich album carousel index when photo list changes
- Add bounded limit to timetable router input
- Remove stale misspelled noProviderSeleceted translation key
- Fix provider name visibility in release widget settings
- Update docs: add ArchiveTeam Warrior note, fix typos, correct
showPhotoInfo default
2026-06-27 10:57:13 +02:00
Thomas Camlong
8a5ad5861b
fix: restore ArchiveTeam Warrior as a proper integration
...
The widget-only integrations refactor incorrectly removed the
ArchiveTeam Warrior integration entirely. It only needed to be
excluded from auto-seeding (by removing defaultUrl), not deleted.
This restores the integration class, reverts the widget/router/handler
to use integration middleware, and removes archiveTeamWarrior from the
widget-only-integrations migration.
2026-06-27 10:57:13 +02:00