Commit Graph
815 Commits
Author SHA1 Message Date
Thomas Camlong e5d15353fe fix(timetable): isolate URL SSRF validation into a tested module
Extract timetable base-URL validation (private/loopback/metadata/NAT64
block lists + DNS-rebinding address pinning) out of the widget router into a
dedicated timetable-options-validation module, and separate the IPv4 and
IPv6 block lists so each family is matched against its own rules.

Board and options routers load the validator lazily at the call site. Carved
out of #6691 so this security-relevant change can land independently of the
larger widget/integration refactor. All 27 existing SSRF unit tests pass.
2026-08-24 15:16:49 +02:00
Thomas fcca57ddf7 feat(custom-widgets): improve authoring workbench (#6689)
* feat(custom-widgets): improve authoring workbench

* fix(custom-widgets): address review and CI

* refactor(custom-widgets): satisfy architecture checks

* fix(custom-widgets): isolate workbench typing updates

* fix(custom-widgets): harden workbench state
2026-08-24 08:55:00 +02:00
Thomas Camlong 240397e7ac refactor: drop server-seeded widget clock
The WidgetTimeProvider plumbed a server timestamp and the container's
timezone down to useWidgetNow so clock widgets would paint a real time in
the SSR HTML instead of "--:--". That traded a cosmetic first-paint win for
a wrong clock: the seeded timezone is the server's, so anyone whose timezone
differs from the container's saw an incorrect time for the whole hydration
window. Fixing that properly needs a client-set timezone cookie read during
RSC render, which is far more plumbing than the problem warrants.

Revert the clock to release/v2 behaviour ("--:--" until hydration) and drop
the provider, the @homarr/widgets/time export and their tests. The e2e clock
assertions now wait on hydration explicitly instead of the seeded paint.

Also restore the widget.beszel.getSystemStats persistence exclusion. #6289
added it deliberately to keep those large time-series payloads out of the
persisted cache, and this branch had removed it with no stated rationale.

Query-cache persistence and the background-refresh indicator are unchanged.
2026-08-23 09:00:34 +02:00
Thomas Camlong a2a408410a Persist widget data across reloads 2026-08-23 09:00:33 +02:00
Thomas 1b843817a4 feat: polish board switcher (#6670) 2026-08-22 17:21:10 +02:00
Bergasha 7591f7e313 feat(v2 Containers): scrollable containers (#6629) 2026-08-22 09:24:52 +02:00
Thomas 9e14a07e64 refactor: consolidate English translations (#6640) 2026-08-21 19:00:27 +02:00
Thomas 58a24569ce feat: expand utility widgets (#6638) 2026-08-20 16:26:04 +02:00
Thomas 53b518960c feat: retain application log history (#6633)
* feat: retain application log history

* fix: harden retained log streaming

* fix: harden contextual log focus

* fix: retain multiline log output
2026-08-20 12:57:30 +02:00
Thomas ff14613f95 feat: recalculate permission scope & permission matrix UI (#6612) 2026-08-19 17:22:31 +02:00
Thomas 150d38be62 feat(docker): add endpoint filtering and streamline setup assistant (#6625)
* feat(docker): add endpoint filtering and setup assistant

* fix(docker): simplify environment setup

* test(docker): cover demo endpoint filtering

* refactor(docker): use accordion for setup suggestions

* fix(docker): use docker icon for setup assistant

* refactor(docker): simplify assisted service setup

* refactor(docker): reuse shared translations

* fix(docker): address review feedback
2026-08-19 08:45:07 +02:00
Thomas e842177d9b feat: port release-v2 experience improvements from #6582 (audited subset) (#6609) 2026-08-18 09:40:02 +02:00
Thomas Camlong 50537d077c feat(custom-widgets): export legacy definitions 2026-08-16 23:33:07 +02:00
Thomas Camlong b491d45fdc feat: improve workshop publishing flow 2026-08-14 23:16:39 +02:00
ajnart 0070538857 style: format board preview query 2026-08-14 11:32:13 +02:00
Thomas Camlong a11c53ebf7 fix(boards): preview container contents 2026-08-14 11:32:13 +02:00
Thomas Camlong 517dcfa64e fix(onboarding): guard detected app type 2026-08-14 11:32:13 +02:00
Thomas Camlong cca6de2b86 fix(onboarding): align detected app setup 2026-08-14 11:32:12 +02:00
Thomas Camlong 7b1a801ab8 feat: consolidate onboarding 2026-08-14 11:32:12 +02:00
Thomas Camlong 775ae0147c feat: enhance onboarding 2026-08-14 11:32:12 +02:00
Thomas Camlong ece6757979 test(onboarding): cover integration checks 2026-08-14 11:32:12 +02:00
Thomas Camlong dd707bed7e feat(onboarding): test integration connections 2026-08-14 11:32:12 +02:00
Thomas Camlong c25c1dbac7 feat(onboarding): polish setup experience 2026-08-14 11:32:12 +02:00
Thomas Camlong 2566be2838 fix: address onboarding review feedback 2026-08-14 11:32:12 +02:00
Thomas Camlong dc71084323 fix: harden onboarding completion 2026-08-14 11:32:12 +02:00
Thomas Camlong e41605640b feat: rebuild onboarding experience 2026-08-14 11:32:11 +02:00
ajnart 87f264a286 chore: reconcile assistant layer after stack rebase 2026-08-14 11:32:11 +02:00
ajnart 384dc46f26 feat: improve assistant panel context 2026-08-14 11:32:11 +02:00
ajnart 48abdb52af fix: default Homarr provider URL in CI 2026-08-14 11:32:11 +02:00
Thomas 45d8bc9443 feat: add the community-funded Homarr assistant provider (#6563)
* Add Homarr provider proxy foundation

* Complete Homarr provider integration

* Harden Homarr provider integration

* Address Homarr provider review feedback

* Address CodeRabbit provider feedback

* Localize provider errors

* Handle provider activity load failures

* docs: improve workshop and homepage

* Harden Homarr provider limits

* fix: harden the Homarr provider

* fix: address provider review feedback

* fix: clarify provider request accounting

* feat: complete the Homarr provider endpoint

* fix: terminate invalid provider streams
2026-08-14 11:32:11 +02:00
ajnart ceed0979a1 fix assistant custom widget creation 2026-08-14 11:32:11 +02:00
ajnart ce48cabb36 chore upgrade assistant to AI SDK v7 2026-08-14 11:32:11 +02:00
ajnart 443fbe0c36 fix assistant exports and tool calls 2026-08-14 11:32:11 +02:00
ajnart c0596d1b5e fix assistant dashboard placement 2026-08-14 11:32:11 +02:00
ajnart d80e883479 fix: harden assistant authoring and UI 2026-08-14 11:32:10 +02:00
ajnart e4bf2aa13d feat: migrate MCP server to v2 2026-08-14 11:32:10 +02:00
Thomas Camlong 66043eb78d fix(assistant): preserve lazy board boundaries 2026-08-14 11:32:10 +02:00
Thomas a9b0c2ae47 fix(assistant): mysql message storage, migration metadata and per-page bundle cost (#6530) 2026-08-14 11:32:10 +02:00
Thomas 5501eb555e fix: handle missing message in assistant generation telemetry (#6528) 2026-08-14 11:32:10 +02:00
ajnart 28a65d61f9 style: auto-fix lint and format 2026-08-14 11:32:10 +02:00
Thomas 7bf22639ba feat: mock Homarr Assistant in demo mode and fix board page crash (#6524) 2026-08-14 11:32:10 +02:00
ajnart f991dc6334 feat: polish assistant conversations 2026-08-14 11:32:10 +02:00
ajnart 1ad1439828 feat: improve assistant interactions 2026-08-14 11:32:10 +02:00
ajnart 97a399d0fa stabilize integration router tests 2026-08-14 11:32:10 +02:00
ajnart d6a259bdbe fix integration permission checks 2026-08-14 11:32:10 +02:00
ajnart 9588c3860d fix assistant provider icon contrast 2026-08-14 11:32:10 +02:00
ajnart c0cdedc039 add OpenRouter web search option 2026-08-14 11:32:10 +02:00
ajnart 1f60b4b4be fix assistant widget configuration 2026-08-14 11:32:10 +02:00
ajnart 8d06201b41 enhance assistant batch responses 2026-08-14 11:32:10 +02:00
ajnart 87a42f09be integrate assistant custom widget workflow 2026-08-14 11:32:10 +02:00