Commit Graph
2560 Commits
Author SHA1 Message Date
Thomas Camlong 777fdb6f9c fix: remove unused ModalFormFooter import after merge 2026-06-02 22:24:15 +02:00
Thomas Camlong c110e10e22 Merge remote-tracking branch 'origin/fix/bookmark-with-border-option' into insiders/ui-ux 2026-06-02 22:22:14 +02:00
Thomas Camlong d7848390d1 Merge origin/feat/inline-app-edit-modal into insiders/ui-ux 2026-06-02 22:22:10 +02:00
Thomas Camlong 0722abcf39 Merge origin/feat/media-request-search into insiders/ui-ux 2026-06-02 22:21:29 +02:00
Thomas Camlong afb1cfa2bf Merge remote-tracking branch 'origin/feat/cnmdk-preferences' into insiders/ui-ux 2026-06-02 22:19:59 +02:00
Thomas Camlong 6a91af1f6f Merge origin/feat/add-integration-from-dashboard into insiders/ui-ux 2026-06-02 22:19:55 +02:00
Thomas Camlong c822fc5a99 Merge origin/feat/app-tour into insiders/ui-ux 2026-06-02 22:19:23 +02:00
Thomas Camlong 1169fb3b8d Merge remote-tracking branch 'origin/fix/credentials-login-session' into insiders/ui-ux 2026-06-02 22:18:03 +02:00
Thomas Camlong c29e2ed0e3 Merge origin/feat/docker-logs into insiders/ui-ux 2026-06-02 22:17:59 +02:00
Thomas Camlong 82c4622b28 Merge origin/feat/global-refresh-indicator into insiders/ui-ux 2026-06-02 22:17:31 +02:00
ajnart 144a55b34e style: auto-fix lint and format 2026-06-02 20:08:53 +00:00
Thomas Camlong 46ccc6c245 fix: add bookmark widget option to toggle card borders
Replace hardcoded borderless cards with a withBorder switch defaulting to false so existing bookmarks stay borderless while users can opt in to borders.
2026-06-02 22:07:40 +02:00
homarr-crowdin[bot] d86fe3ddf0 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-06-02 02:23:34 +00:00
ajnart 3a1adab3e5 style: auto-fix lint and format 2026-06-01 08:31:53 +00:00
Thomas Camlong e67d603570 fix(spotlight): remove all non-null assertions to pass oxlint
- Refactor groupDispatchers to accept userId as a parameter instead of closing over nullable userId
- Replace mutationGroup! with a guard clause
- Use optional chaining for preferenceChildrenOptionsByKey lookup with fallback
2026-06-01 10:30:41 +02:00
Thomas Camlong 0449716805 fix(spotlight): address PR review feedback
- Clear optimistic store on user/session change to prevent stale values leaking across logins
- Move dispatcher lookup before setOptimistic to avoid permanent ghost entries when no dispatcher exists
- Inline dayjs.weekdays() calls to reflect runtime locale changes instead of caching at module load
- Remove unused UserPreferenceKey import
2026-06-01 10:26:08 +02:00
copilot-swe-agent[bot] 2bfe2caffc fix: use i18n for availability badge labels and make requestedSeasons optional 2026-06-01 07:28:36 +00:00
homarr-crowdin[bot] 07d991a0a1 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-05-30 05:27:45 +00:00
Thomas e98487d2aa Merge branch 'dev' into feat/add-integration-from-dashboard 2026-05-30 01:10:17 +02:00
ajnart 6bf3c75f9f style: auto-fix lint and format 2026-05-29 22:58:49 +00:00
Thomas afa36bffa9 fix: media request search bugs and availability indicators (#5824) 2026-05-30 00:58:10 +02:00
ajnart 6230db53e0 style: auto-fix lint and format 2026-05-29 21:43:47 +00:00
Thomas Camlong d4279a938d wip on fixing seerr media request 2026-05-29 23:42:39 +02:00
Thomas ef27d739bb remove green dot (#5822) 2026-05-29 23:41:40 +02:00
Thomas 60ae487842 Merge branch 'dev' into feat/global-refresh-indicator 2026-05-29 22:35:05 +02:00
Thomas e0a77948e2 Merge branch 'dev' into feat/cnmdk-preferences 2026-05-29 22:01:10 +02:00
Thomas 5c0fd755cc Merge branch 'dev' into fix/credentials-login-session 2026-05-29 21:28:41 +02:00
ThomasandMeier Lukas 2991777b0a feat(users): rework general settings (#4915)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-05-29 21:22:55 +02:00
ThomasandMeier Lukas 6cc2ac56a9 fix: prevent GitHub releases check from blocking app on API failure (#5807)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-05-29 21:14:51 +02:00
Thomas Camlong 75a45c2b71 Merge remote-tracking branch 'origin/dev' into feat/app-tour
# Conflicts:
#	apps/nextjs/src/app/[locale]/_client-providers/mantine.tsx
#	apps/nextjs/src/app/[locale]/boards/(content)/_client.tsx
#	apps/nextjs/src/app/[locale]/boards/(content)/_header-actions.tsx
#	apps/nextjs/src/app/[locale]/manage/apps/page.tsx
#	apps/nextjs/src/app/[locale]/manage/boards/page.tsx
#	apps/nextjs/src/app/[locale]/manage/integrations/page.tsx
#	apps/nextjs/src/app/[locale]/manage/users/_components/user-list.tsx
#	apps/nextjs/src/components/layout/navigation-link.tsx
#	packages/ui/src/theme.ts
#	pnpm-lock.yaml
#	pnpm-workspace.yaml
2026-05-29 21:02:18 +02:00
Thomas 77f5d9bf9a Merge branch 'dev' into feat/add-integration-from-dashboard 2026-05-29 20:52:15 +02:00
ajnart 4bfde12b65 style: auto-fix lint and format 2026-05-29 17:55:03 +00:00
ajnart a2c4b29bfd style: auto-fix lint and format 2026-05-29 17:52:12 +00:00
Thomas Camlong 5501ee6a7d refactor(spotlight): registry-driven preferences with data-driven hook
Replace 5 per-preference children files with a single
preference-registry.tsx that auto-generates CMDK children via factory
functions. Rewrite useUserPreferences from ~347 lines to ~160 lines by
deriving mutation dispatch, pending state, and optimistic values from
preference definitions.

Simplify settings-children.tsx and groups.tsx to iterate over
visiblePreferenceDefinitions instead of maintaining manual mappings.

Deleted: board.tsx, color-scheme.tsx, first-day-of-week.tsx,
search-engine.tsx, registry.ts

Net reduction: ~261 lines across 9 files.
2026-05-29 17:26:27 +02:00
Thomas Camlong 682f6bd3ea fix(widgets): fix downloads widget and add SSR prefetch
Remove WidgetEmptyState guard from downloads (widget renders fine with
empty data). Fix columnsSort filter logic from .some() to .every() so
non-sortable columns are correctly excluded. Add server-side prefetch
via tRPC caller so download data is available immediately on page load.
2026-05-29 17:26:15 +02:00
Thomas Camlong f49ae79c99 refactor(widgets): stabilize widget components after useQuery migration
Add WidgetEmptyState component for widgets that need a loading fallback.
Disable refetch-on-mount/focus/reconnect and retry for integration widgets
so cached data is preserved. Ensure hooks are never called conditionally.
2026-05-29 17:26:05 +02:00
Thomas Camlong f6592b27a1 refactor(settings): add mutationGroup to preference definitions
Enrich userPreferenceDefinitions with mutationGroup field to express
which tRPC mutation handles each preference key. Move
visiblePreferenceDefinitions helper from spotlight registry to the
shared settings package.

This enables data-driven mutation dispatch in the CMDK hook and
eliminates manual key-to-group mappings.
2026-05-29 17:26:02 +02:00
Thomas Camlong f7f6d1e382 feat(boards): wire board cache scope for query persistence
Call setActiveQueryCacheBoardId when board context initializes so the
client-side persister knows which board to scope cache reads/writes to.
2026-05-29 17:25:53 +02:00
Thomas Camlong 6c623a3a2d feat(redis): migrate query cache to Hash storage for bulk SSR reads
Replace individual Redis keys (queryCache:sha256(...)) with a Hash per
user+board (qc:{userId}:{boardId}). This enables HGETALL to read all
cached entries in a single call for server-side hydration. Remove unused
SHA256 hashKey function and createHash import.
2026-05-29 17:25:46 +02:00
Thomas Camlong b65eef08ea feat(api): add Redis-backed query cache persistence layer
Add tRPC router (queryCache.getItem/setItem/removeItem) for persisting
TanStack Query cache entries to Redis, scoped per user and board.
Includes isPersistableWidgetQueryKey filter that excludes widget.app.ping,
and comprehensive tests covering access control, TTL expiry, and size limits.
2026-05-29 17:25:38 +02:00
Thomas Camlong 970b92cd95 Merge remote-tracking branch 'origin/feat/rework-perferences' into feat/cnmdk-preferences 2026-05-29 17:05:49 +02:00
Thomas Camlong e182d28605 continue working on user prefernces in command palette 2026-05-29 16:23:29 +02:00
Thomas Camlong 19d86daa87 wip: user preferences in command palette 2026-05-29 15:37:00 +02:00
Thomas Camlong 1c9a63d9ef fix: address CodeQL and code quality review comments
Replace polynomial trailing-slash regex with removeTrailingSlash helper
and remove unused ModalFormFooter import in quick-add-app modal.
2026-05-29 14:54:39 +02:00
Thomas Camlong 46f19c120d fix(widgets): refresh app data after embedded app edit
Invalidate app queries on update so board widgets reflect changes.
Sync AppForm with refetched initialValues and reset after submit.
2026-05-29 12:06:46 +02:00
ajnart b125a6159a style: auto-fix lint and format 2026-05-29 09:46:55 +00:00
Thomas Camlong ecbed76a65 refactor(forms): update form submission methods 2026-05-29 11:46:03 +02:00
Thomas Camlong fec0eb51a3 fix(widgets): remove non-null assertion in widget edit modal
Satisfies oxlint no-non-null-assertion by narrowing appId before render.
2026-05-29 11:36:33 +02:00
Thomas 67b8084bc3 Merge branch 'dev' into feat/inline-app-edit-modal 2026-05-29 11:28:53 +02:00
Thomas 9bf6d9851c Merge branch 'dev' into fix/credentials-login-session 2026-05-29 11:17:53 +02:00