ajnart
c3436d43e6
feat: improve assistant interactions
2026-08-13 19:56:39 +02:00
ajnart
f88fbb5a19
Revert "fix: address mobile dashboard review findings"
...
This reverts commit 1039bb18b3 .
2026-08-13 19:55:23 +02:00
ajnart
6a2e7d0610
fix: address mobile dashboard review findings
2026-08-13 19:55:12 +02:00
ajnart
84db2f9d49
feat: refine mobile dashboard experience
2026-08-13 19:55:11 +02:00
Thomas Camlong
65a7e84bea
feat: expand advanced widget experiences
2026-08-13 19:54:55 +02:00
Thomas Camlong
1fa345edd1
feat: modernize widget experience
2026-08-13 19:54:48 +02:00
Thomas Camlong
0aa3b98675
fix: address final widget review findings
2026-08-13 19:54:35 +02:00
Thomas Camlong
f003d9ddc9
fix: complete widget review cleanup
2026-08-13 19:54:35 +02:00
Thomas Camlong
56346b2aa8
fix: address remaining widget review feedback
2026-08-13 19:54:34 +02:00
Thomas Camlong
36d7ef0562
fix: complete widget modernization review
2026-08-13 19:54:32 +02:00
Thomas Camlong
99a871344c
fix: address widget review feedback
2026-08-13 19:54:31 +02:00
Thomas Camlong
777bbd89a1
fix: refine widget modernization
2026-08-13 19:54:29 +02:00
Thomas Camlong
6f2cd7fc2b
feat: modernize dashboard widgets
2026-08-13 19:54:28 +02:00
Thomas Camlong
c2cf25b4fb
fix: repair stale custom widget options
2026-08-13 19:51:25 +02:00
Thomas
400127b45c
fix: harden v2 custom widgets and Workshop ( #6480 )
2026-08-13 19:50:46 +02:00
Thomas
3aa14e22ed
fix(custom-widgets): address v2 merge review ( #6446 )
2026-08-13 19:49:25 +02:00
Thomas
acdfcbb18e
feat(custom-widgets): complete Custom JSX v2 ( #6390 )
2026-08-13 19:48:57 +02:00
Thomas
83e3b22f9a
feat(custom-widgets): Full Mantine v9 + SubFetch support for custom JSX ( #6304 )
2026-08-13 19:45:44 +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
Matt Van Horn
06d9c07d22
feat: expose Navidrome as a media-server (now-playing) integration ( #6070 )
2026-07-31 13:30:44 +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
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
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
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
Thomas Camlong
fb348044fb
refactor widget-only integrations
2026-06-27 10:57:12 +02:00
a2bb53a8b8
feat: add VPN status widget ( #5812 )
...
Co-authored-by: Lokesh-Kumar-Dudi <lkumardudi@gmail.com >
Co-authored-by: Thomas Camlong <thomas@ajnart.fr >
2026-06-26 14:29:23 +02:00