Thomas Camlong
67fcd69eb8
fix: inverted tag expiration in Redis handler + saveItemOptions board name
...
- Fix critical bug: tag expiration comparison was inverted (< should be >)
in Redis cache handler, which would prevent revalidateTag from clearing
stale entries
- Pass board name to invalidateBoardCache in saveItemOptions
- Add clarifying comment about two-tier invalidation helpers
2026-08-07 19:30:58 +02:00
Thomas Camlong
aeabfd3521
fix: requestMedia dual-layer cache invalidation
...
Mirror answerRequest pattern: invalidate both module-level integration
data cache and request-handler caches for media request list/stats.
2026-08-07 19:27:41 +02:00
Thomas Camlong
37930e44cc
perf: clean integration barrel — remove 46 concrete class re-exports
...
- Remove all concrete integration class re-exports from barrel
- Replace instanceof check with kind check in health-monitoring
- Document cache invalidation as preparatory (cacheTag follow-up)
2026-08-07 19:22:32 +02:00
Thomas Camlong
451dc3ce39
fix: address review #4 — board name invalidation, SVG tests, test gaps
...
- Pass board.name to all invalidateBoardCache calls (permission mutations)
- Align integration create invalidation with update/delete
- Add initial-fetch-failure test for integration-data-cache
- Expand SVG XSS test corpus (javascript:, xlink:href, @import, onbegin)
- Forbid <style> tags in SVG sanitizer to prevent CSS injection
- Fix duplicate export in packages/common/src/index.ts
2026-08-07 19:18:18 +02:00
Thomas Camlong
4361c8dbe2
fix: address Bugbot review #3 — mutation invalidation gaps
...
- Dual-layer cache invalidation on interact mutations
(dns-hole, media-requests, smart-home, indexer-manager, anchor-notes)
- importOldmarrConfig: invalidate created boards
- createBoard: invalidateUserCache when auto-setting homeBoardId
- group.savePositions: invalidate user caches for affected members
- integration.requestMedia: invalidate integration data cache
- user.delete: invalidate user cache
2026-08-07 19:14:02 +02:00
Thomas Camlong
0f8362c3da
fix: address Bugbot review #2 findings
...
- Invalidate integration data cache from widget interact mutations
(downloads, dns-hole, media-requests, indexer-manager, smart-home, anchor-notes)
- Redis handler getExpiration: fetch missing tags from Redis (multi-instance coherence)
- saveItemOptions: invalidate board cache after saving
- Remove unused cacheTags.app
- Fix integration data cache comment accuracy
2026-08-07 19:08:57 +02:00
Thomas Camlong
6b45aca5d5
fix: address Bugbot review findings
...
- Skip module-level integration cache for multi-instance (REDIS_IS_EXTERNAL)
- Add invalidateBoardCache to permission mutations (prevents future leak)
- Remove unused cacheTags.integrationData
- Replace KEYS with SCAN in Redis cache handler refreshTags()
- Document REDIS_CACHE_DB env var
2026-08-07 19:04:53 +02:00
Thomas Camlong
018f98e318
perf: implement Phase 1 homepage diet via Next.js Cache Components
...
P1-0: V8 heap cap (HOMARR_MAX_OLD_SPACE_SIZE, default 512MB)
P1-1: Module graph cuts
- Dynamic integration imports (55 static → lazy loaders)
- Conditional DB driver loading (only configured driver loaded)
- Replace jsdom with linkedom for SVG sanitization
- Delete eager widget barrel (55 import * as → 0)
- Extract createRetryableLoader to @homarr/common
P1-2: Enable cacheComponents + restructure root layout
- Suspense boundaries around session-dependent providers
- ColorSchemeScript replaces server-side cookie reads
- Board/manage/auth layouts wrapped in Suspense
P1-3: Cache read paths
- Cache tag registry + invalidation helpers
- Cache invalidation wired into all mutation routers
- Translation deep-merge memoized per locale
P1-4: Prerendered shells + loading.tsx files
P1-5: Shared integration data cache (60s TTL, stale-while-revalidate)
P1-6: Redis-backed Next.js cache handler (@homarr/next-cache-handler)
P1-7: Redis optional (memory channel fallback), TTL on pubSub:last:*,
Redis clients consolidated from 6 to 2
2026-08-07 18:59:47 +02:00
Thomas Camlong
366ec6bdbc
fix custom widget e2e login race
2026-08-03 15:52:08 +02:00
Thomas Camlong
9f4b147f0e
fix legacy media server option mapping
2026-08-03 15:29:27 +02:00
Thomas Camlong
08af704c8a
Merge origin/dev into feat/build-performance
2026-08-03 15:21:23 +02:00
homarr-renovate[bot]
48fc8db2b4
chore(deps): update semantic-release monorepo (major) ( #6486 )
2026-08-03 14:39:28 +02:00
Thomas
018f84f80d
feat(dev): add Docker development CLI ( #6495 )
2026-08-03 14:38:56 +02:00
Thomas Camlong
3f9fb215c6
fix: avoid ambiguous benchmark regex
2026-08-03 14:27:21 +02:00
Thomas Camlong
de801f3f00
perf: optimize dashboard loading and builds
2026-08-02 15:58:16 +02:00
Thomas
d58a47b776
fix: restrict system health monitoring integrations ( #6505 )
2026-08-02 10:17:05 +02:00
Thomas
797bdd001f
fix: keep direct icon URLs visible ( #6504 )
2026-08-01 23:28:18 +02:00
Bergasha
49314533bf
feat(Media player widget): expands on Direct Play and Transcoding badges ( #6489 )
2026-08-01 23:21:13 +02:00
Thomas
27ca058088
feat(widgets): persist Beszel and Docker table layouts ( #6490 )
2026-08-01 23:20:09 +02:00
homarr-releases[bot]
f4449f9581
chore: update bug report template ( #6498 )
2026-08-01 23:08:14 +02:00
Thomas
b52bc03c8d
Merge pull request #6499 from homarr-labs/docs/update-helm-docs
...
docs(helm): update chart installation page
2026-08-01 23:07:58 +02:00
Thomas
edb56f3fcd
fix: accept direct icon URLs
...
Use valid direct HTTP(S) icon URLs without repository search.
2026-08-01 23:06:26 +02:00
homarr-crowdin[bot]
fcc5130068
chore(lang): update translations from crowdin ( #6457 )
2026-07-31 23:50:10 +02:00
homarr-update-contributors[bot]
c7751e293d
chore: update contributors ( #6496 )
2026-07-31 23:49:37 +02:00
github-actions[bot]
bd669a1a8f
docs(helm): update chart installation page
2026-07-31 19:35:37 +00:00
Releases Homarr
9b5b79525f
chore(release): 1.73.0 [skip ci]
v1.73.0
2026-07-31 18:16:44 +00:00
homarr-releases[bot]
426929556f
chore(release): automatic release v1.73.0
2026-07-31 18:15:13 +00:00
Thomas
ade640dcea
test(navidrome): complete cleanup review ( #6494 )
...
* test(navidrome): hoist album fixture helper
* test(navidrome): address coderabbit cleanup feedback
2026-07-31 14:39:11 +02:00
Thomas
61128ddcc8
fix(navidrome): clean up audio stats integration ( #6493 )
2026-07-31 14:20:51 +02:00
Thomas
6a3cee8107
fix(navidrome): complete media server session data ( #6492 )
2026-07-31 13:53:06 +02:00
ajnart
d90e762e4b
fix: align Navidrome media sessions
2026-07-31 13:52:39 +02:00
ajnart
81a13d3b52
Merge remote-tracking branch 'origin/dev' into feat/build-performance
2026-07-31 13:38:16 +02:00
ajnart
388a74086e
fix: address Copilot cache review
2026-07-31 13:32:48 +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
cd6c83a7b0
test: guard LDAP user lookup
2026-07-30 00:50:02 +02:00
ajnart
9963ba0274
fix: harden runtime isolation and regression tests
2026-07-30 00:38:34 +02:00
Thomas
49d0f1a141
docs: explain Podman socket setup ( #6487 )
...
* docs: explain Podman socket setup
* docs: clarify Podman runtime requirements
* docs: complete Podman compose examples
2026-07-29 16:53:29 +02:00
ajnart
5d9f05e083
test(e2e): open spotlight with hotkey
2026-07-29 07:53:35 +02:00
ajnart
d48f299585
test(e2e): wait for authenticated board
2026-07-29 07:42:57 +02:00
ajnart
c80e9878de
fix: handle lazy startup failures
2026-07-29 07:23:09 +02:00
ajnart
84f87ce24e
fix(ci): bound affected task concurrency
2026-07-29 07:11:26 +02:00
ajnart
fbb57c8f40
fix(docker): build runtime workspaces only
2026-07-29 06:57:06 +02:00
ajnart
0b9c4d6375
fix: address performance review feedback
2026-07-29 06:50:13 +02:00
ajnart
7266e15356
style: auto-fix lint and format
2026-07-29 06:47:07 +02:00
ajnart
c22c733463
build(docker): simplify manifest copy layers
2026-07-29 06:47:07 +02:00
ajnart
440626ba00
test(performance): add authenticated local benchmarks
2026-07-29 06:47:07 +02:00
ajnart
f8d8a09c56
perf(proxy): isolate settings database reads
2026-07-29 06:47:07 +02:00
ajnart
add6ee56ba
fix(updates): enforce a persisted daily check
2026-07-29 06:47:07 +02:00
ajnart
6b74078766
perf(widgets): lazy load the application graph
2026-07-29 06:47:07 +02:00
ajnart
4ca0b747bb
chore(next): upgrade preview and isolate dev services
2026-07-29 06:47:07 +02:00