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