Josh Preston
65ba866239
feat: add Synology integration support for health/system monitoring ( #6121 )
2026-07-09 18:23:21 +02:00
Thomas
885be1b9a1
fix(widget-secrets): add missing widget_secret migration and add error notifications ( #6192 )
...
* fix(widget-secrets): add missing widget_secret migration and add error notifications
The widget_secret table was defined in all three Drizzle schema files but
no SQL migration was ever generated to create it, causing setSecret to
fail with 'no such table: widget_secret' in production (drizzle-kit push
in development hid the problem).
- Add migration SQL for sqlite (0040), mysql (0042), postgresql (0008)
- Update journal entries for all three dialects
- Add onError handlers to setSecret/deleteSecret mutations so errors
are shown as red notifications instead of silently swallowed
Fixes #6186
* fix(widget-secrets): add missing drizzle snapshots for merge-url and widget_secret migrations
The merge_custom_widget_url migration (0039/0041/0007) was committed
without a corresponding snapshot, breaking drizzle-kit generate for
all future migrations. This adds:
- 0039/0041/0007 snapshots reflecting the merge-url changes
(base_url+endpoint -> url, add enabled column)
- 0040/0042/0008 snapshots reflecting the widget_secret table
All snapshot chains now match journal entries (41/43/9 entries each).
2026-07-04 17:57:40 +02:00
Thomas
f19033e0d5
feat: simplify caching — TanStack Query as single source of truth ( #6075 )
2026-07-03 16:33:03 +02: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
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
fb348044fb
refactor widget-only integrations
2026-06-27 10:57:12 +02:00
Thomas Camlong
45dfe3b9ab
fix: address PR review findings
...
- Remove ternary operators from new code (widget-integration-select,
TabsContainer, mock data, members page)
- Remove stale /docs/management/tools/backup from sitemap type
- Add value prop to error-state Select in beszel-system-stats
2026-06-16 18:29:28 +02:00
Thomas Camlong
5078c300f8
fix(widgets): race conditions in useLiveStats and stale value in integration select
...
- Add generation guard to prevent late SSE events from writing stale
data after systemId/integration changes
- Sort integrationIds for stable key (avoids unnecessary resubscribes)
- Include integrationKey and systemId in flush interval deps
- Preserve current form value in WidgetIntegrationSelectInput when it's
missing from loaded options (matches WidgetDynamicSelectInput pattern)
2026-06-16 17:59:41 +02:00
ajnart
c751feedf7
style: auto-fix lint and format
2026-06-16 12:39:26 +00:00
Thomas Camlong
cbb5e301dc
refactor(widgets): replace beszelSystem option with generic integrationSelect
2026-06-16 14:38:25 +02:00
ajnart
3d93ae1246
style: auto-fix lint and format
2026-06-15 15:25:49 +00:00
Thomas Camlong
df66cf25c7
refactor(beszel): remove ternary operators and fix dead code
...
Replace all ternary operators with if/else, &&/||, or early returns.
Remove unused noAnimation constant that caused lint error.
Fix variable shadowing in tooltip deduplication loop.
2026-06-15 17:24:18 +02:00
ajnart
2316f6e79d
style: auto-fix lint and format
2026-06-15 13:57:09 +00:00
Thomas Camlong
16094876fa
fix(beszel): restore timePeriod cast and improve error visibility
...
- Restore timePeriod union cast to fix typecheck (TS2769)
- Clear live data on subscription error so error UI always shows
- Emit error when no integration is configured for live subscription
- Add error state to system select input when query fails
2026-06-15 15:55:41 +02:00
Thomas Camlong
ed333e1cbb
feat(beszel): add searchable system select input for widget options
...
Replace plain text systemId option with a dedicated beszelSystem factory
type backed by a searchable Select that fetches available systems from
the integration. Shows proper states for no integration, loading, and
no systems found.
2026-06-15 15:16:59 +02:00
Thomas
aecbca2b81
feat: custom widgets ( #5889 )
2026-06-10 18:58:14 +02:00
Thomas
4454e3fb7a
fix: matine ui fixes for concistency ( #5733 )
2026-05-28 10:59:03 +02:00
homarr-renovate[bot] and Thomas Camlong
f7ea1b33a0
chore(deps): update mantine monorepo to v9 ( #5411 )
...
Co-authored-by: Thomas Camlong <thomas@ajnart.fr >
2026-05-27 17:29:52 +02:00
Meier Lukas
3183914a15
fix(apps): creation on the fly broken ( #5605 )
2026-05-07 20:59:12 +02:00
43cc68bdd4
feat: add Umami Analytics integration and widget ( #5362 )
...
Co-authored-by: Josh G <febrile42@users.noreply.github.com >
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com >
Co-authored-by: Thomas <thomas@ajnart.fr >
2026-05-07 17:50:58 +02:00
7879b31630
feat: Anchor integration and Anchor Note widget ( #5040 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com >
2026-04-10 20:43:43 +02:00
Meier Lukas
abb2dfc92a
feat(integrations): add search.ch integration with timetable widget ( #5180 )
2026-04-03 20:23:15 +02:00
homarr-renovate[bot] and Meier Lukas
d88c6027fe
fix(deps): update dependency typescript-eslint to ^8.48.1 ( #4438 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com >
2025-12-08 16:52:25 +01:00
homarr-renovate[bot] and Meier Lukas
6ce23a6e97
fix(deps): update nextjs monorepo to v16 (major) ( #4363 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com >
2025-11-04 21:26:44 +01:00
Meier Lukas
172db0e3f9
feat(integrations): add app linking ( #4338 )
2025-10-24 20:21:27 +02:00
Meier Lukas
acd09c8c02
feat(app-widget): add layout option ( #3875 )
2025-08-17 17:49:05 +02:00
Andre Silva and Meier Lukas
c92bbd2da0
feat(releases-widget): add new providers, Github Packages, linuxserver.io and Quay ( #3607 )
...
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com >
2025-08-01 11:13:20 +02:00
Andre Silva
949c7a40d9
feat(releases-widget): add Select/Deselect All to import from docker screen ( #3674 )
2025-08-01 11:12:56 +02:00
Andre Silva
36b0f576e5
fix: improved import from docker parsing ( #3642 )
2025-07-19 21:22:11 +02:00
Andre Silva
5ecc4db5da
fix(releases-widget): fixed bug with changing a missing provider ( #3605 )
2025-07-12 10:48:45 +02:00
Andre Silva and Meier Lukas
5d8126d71e
feat(releases-widget): define providers as integrations ( #3253 )
...
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com >
2025-07-11 18:54:17 +00:00
Andre Silva
7071d76c52
feat(releases-widget): add import from docker functionality ( #3130 )
2025-06-06 19:59:46 +02:00
Andre Silva
94134303d7
feat(releases-widget): added auto icon search when editing a repository ( #3087 )
2025-05-16 16:33:23 +02:00
Andre Silva
18fe8ecd39
fix(releases-widget): validation preventing removal of a previously added icon ( #3086 )
...
* fix(releases-widget): validation preventing removal of a previously added icon
* fix(releases-widget): bug with input controlled/uncontrolled state
2025-05-12 10:50:16 +00:00
Andre Silva
72862efae2
fix(releases-widget): delete the empty repository when canceling Add Reposotory ( #3082 )
2025-05-11 20:11:55 +00:00
Andre Silva
59cae02623
fix(releases-widget): removed version regex in options overview ( #3081 )
2025-05-11 15:30:31 +00:00
8c1b365733
feat(releases-widget): limit number of displayed releases and custom name for repositories ( #2974 )
...
Co-authored-by: Andre Silva <asilva01@acuitysso.com >
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com >
2025-05-10 22:06:14 +02:00
347c6d1519
fix(releases-widget): error display, decouple database repository object from responses and batch widget queries ( #2891 )
...
Co-authored-by: Manuel <30572287+manuel-rw@users.noreply.github.com >
Co-authored-by: Andre Silva <asilva01@acuitysso.com >
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com >
2025-05-09 13:24:37 +02:00
3dcee8cb86
feat: add releases widget ( #2497 )
...
Co-authored-by: Andre Silva <asilva01@acuitysso.com >
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com >
Co-authored-by: Manuel <30572287+manuel-rw@users.noreply.github.com >
2025-04-25 18:49:32 +00:00
Manuel
8bf893b392
feat: app dropdown add infinity scroll ( #2696 )
2025-03-27 20:27:39 +00:00
homarr-renovate[bot] and Meier Lukas
f55d8a9c2e
fix(deps): update dependency next-intl to v4 ( #2580 )
...
* fix(deps): update dependency next-intl to v4
* fix: typecheck issue
* refactor: implement improvements for next-intl v4
* fix: typecheck issues
* fix: typecheck issue
---------
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com >
2025-03-12 18:37:43 +01:00
Manuel
6420feee72
feat: quick add app modal ( #2248 )
2025-02-18 22:53:44 +01:00
Meier Lukas
dd2ca13004
fix: multi-text-input not saving on blur ( #2128 )
2025-01-26 21:26:08 +01:00
homarr-renovate[bot] and Meier Lukas
982ab4393e
chore(deps): update dependency typescript to ^5.7.2 ( #1523 )
...
* chore(deps): update dependency typescript to ^5.7.2
* chore(deps): update dependency typescript to ^5.7.2
* fix: typecheck issue
* fix: typecheck issue
---------
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com >
2024-11-23 19:39:20 +01:00
Manuel and Meier Lukas
49c0ebea6d
feat: add bookmark widget ( #964 )
...
* feat: add bookmark widget
* fix: item component type issue, widget-ordered-object-list-input item component issue
* feat: add button in items list
* wip
* wip: bookmark options dnd
* wip: improve widget sortable item list
* feat: add sortable item list input to widget edit modal
* feat: implement bookmark widget
* chore: address pull request feedback
* fix: format issues
* fix: lockfile not up to date
* fix: import configuration missing and apps not imported
* fix: bookmark items not sorted
* feat: add flex layouts to bookmark widget
* fix: deepsource issue
* fix: add missing layout bookmarks old-import options mapping
---------
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com >
2024-11-02 18:44:36 +01:00
Meier Lukas
4502569223
refactor: move from next-international to next-intl ( #1368 )
...
* refactor: move from next-international to next-intl
* refactor: restructure translation package,
* chore: change i18n-allay framework to next-intl
* fix: add missing bold html tag to translation
* fix: format issue
* fix: address deepsource issues
* fix: remove international-types dependency
* fix: lint and typecheck issues
* fix: typecheck issue
* fix: typecheck issue
* fix: issue with translations
2024-10-26 22:46:14 +02:00
Meier Lukas
e99fd64882
feat: add notes for creation of apps and integrations in widget edit modal ( #1297 )
...
* feat: add notes for creation of apps and integrations in widget edit modal
* fix: unit test failing when with-description flag missing
2024-10-16 21:44:28 +02:00
homarr-renovate[bot] and Meier Lukas
a87c937b69
fix(deps): update dependency eslint-plugin-react-hooks to v5 ( #1280 )
...
* fix(deps): update dependency eslint-plugin-react-hooks to v5
* fix: lint issues after reenabling hook rules
* fix: format issues
---------
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com >
2024-10-16 21:43:51 +02:00