Commit Graph
5805 Commits
Author SHA1 Message Date
Thomas Camlong fe657fd79d ci: reuse amd64 preview image for e2e instead of rebuilding
The container (e2e) job now depends on the amd64 preview job and pulls
the pushed digest, retagging it as homarr-e2e, so the image is compiled
once. Falls back to a local build for forks and merge queues where the
preview job does not run.
2026-08-17 13:31:42 +02:00
Thomas Camlong f6d89f03b2 ci: build and publish amd64 preview independently of e2e
The amd64 digest build moves to its own job that runs right after the
fast gate, so the homarr-test image ships even while (or if) e2e is
still running or fails. The container job is now e2e-only with its own
docker cache scope.
2026-08-17 13:24:11 +02:00
Thomas Camlong b2ff7c1011 ci: publish preview image before e2e and parallelize tests
- Push the amd64 preview image digest upfront so a failing E2E can no longer block PR preview publication
- Run publish-preview with always() so the multi-platform manifest still ships when container job fails
- Enable vitest file parallelism for e2e and raise workers to 4 (drop retries to 1)
- Skip obsolete SQLite onboarding restore test
2026-08-17 13:01:49 +02:00
Thomas Camlong 510845d3b9 Merge remote-tracking branch 'origin/release/v2' into feat/pr6582-nice-changes-release
# Conflicts:
#	apps/nextjs/src/components/board/items/item-select-modal.tsx
2026-08-17 12:29:50 +02:00
Thomas Camlong 6d6815a901 fix(board): fit preview to panel, keep app selection on search, keep checklist under modals
- Scale oversized widget previews to fit the 320px panel
- Derive selected apps from all apps so search doesn't drop selections
- Drop checklist Affix z-index override so modals stay on top
- Always render preview panel (placeholder state) and add custom widget previews
- Hide preview column below lg breakpoint to avoid crushing the grid
2026-08-17 11:22:23 +02:00
Thomas Camlong f10e49fa20 feat(board): add widget preview, floating checklist and multi-select apps
- Show a live widget preview panel next to the grid in the add-widget modal,
  sizing from the widget default size and using matching integrations
- Pin the board setup checklist below the app header with Affix
- Allow selecting and adding multiple apps at once from the board
2026-08-17 09:03:07 +02:00
Thomas Camlong bd171bf73b fix(custom-widgets): reduce action menu file below architecture line limit 2026-08-17 08:39:29 +02:00
Bergasha 1ee519bb7a fix(beszel): stop small text from vanishing under board zoom (#6616) 2026-08-17 07:14:29 +02:00
Thomas Camlong c53852fdb6 refactor(ui): adopt Mantine Marquee and drop mount guards
Rebuild the integration marquee on Mantine's Marquee, SimpleGrid and
ThemeIcon instead of the hand-rolled grid, track and keyframes, and
reduce the stylesheet to the mask and reduced-motion rule.

Drop the useMounted guards from the login form and let the buttons rely
on the pending state alone, and use Group for the restore flow's file
summary.
2026-08-17 01:15:45 +02:00
Thomas Camlong 206905ea2d feat(workshop): rebuild install and publish as pages
Replace the stacked install modals (browse -> details -> import review)
with page-based flows so the primary action is always reachable:

- /manage/custom-widgets/workshop browses submissions as a card grid
  with large previews, sitting in a tab next to the installed widgets
- /manage/custom-widgets/workshop/[id] merges the listing, security
  review and source setup onto one page with a sticky install footer
- /manage/custom-widgets/publish/[id] replaces the publish modal
- /manage/workshop redirects; its navbar entry is gone
- the Custom CSS picker collapses from three modals to one

Extract useCustomWidgetImport and ImportReviewContent so the Workshop
page and the file/clipboard dialog share one import pipeline.

Votes now show the viewer's own choice filled Reddit-style, backed by a
new user-votes query, and screenshots get a zoomable lightbox.

Rework the installed list onto ManageCollectionItem: show the widget
description, replace the cryptic "JSX - 2" badge with plain request and
origin facts, and swap the toggle and bare pencil for a status badge,
a labelled Edit button and a menu entry for enable/disable.

Fixes found while reviewing:

- importing could run twice and duplicate a widget; guard on pending and
  succeeded, and return to the installed list instead of the heavy edit
  form
- a background refetch of the submission (window focus, or the
  invalidation a vote triggers) reset the source setup and silently wiped
  part-typed credentials; key the reset on the sources, not the object
- breadcrumbs raised MISSING_MESSAGE for unmapped dynamic segments; fall
  back to the raw segment via t.has
- publishing had no in-flight guard and could post duplicate listings
- tooltips on disabled vote and report controls never fired, making the
  sign-in hint unreachable
2026-08-17 01:14:38 +02:00
Thomas Camlong 50537d077c feat(custom-widgets): export legacy definitions 2026-08-16 23:33:07 +02:00
Thomas Camlong 229a559aff fix: replace Workshop detail with import review 2026-08-16 23:16:29 +02:00
Thomas Camlong 4e514ab151 fix: show Workshop voting as net score 2026-08-16 23:15:09 +02:00
Thomas Camlong 960551f573 feat: simplify Workshop widget installation 2026-08-16 23:11:52 +02:00
Thomas Camlong 304ea089a2 fix: resolve backup migrations in development 2026-08-16 22:32:05 +02:00
Thomas Camlong 199f6ffc3b fix: run custom migrations on backup restore 2026-08-16 22:25:15 +02:00
Thomas Camlong 7e569bff4c fix: skip restore confirmation during onboarding 2026-08-16 22:10:12 +02:00
Thomas Camlong 0ec5f36050 ci: publish release v2 test image 2026-08-16 21:25:08 +02:00
Thomas Camlong 8ecdd13cd5 feat: port release-v2 experience improvements from PR #6582
Brings the semantically-correct unification work from the closed
agent/release-v2-experience PR into release/v2:

- universal create surface (header, board, spotlight) with permission-aware actions
- board empty state and setup checklist with widget/connection recipes
- in-widget integration editing via inspector modal, preserving unsaved widget settings
- single-source widget-integration capability map (nativeFeatureCapabilities)
- multi-endpoint Docker singleton with per-endpoint failure isolation, DOCKER_ENDPOINTS descriptors and service reconciliation
- Kubernetes multi-context registry with availability probing and context selector
- response-contract test harness and setup analytics property boundaries

Excludes the feature-platform generator/workbench tooling (deferred).
2026-08-16 17:30:13 +02:00
Thomas e22be4dca6 Merge pull request #6607 from homarr-labs/fix/dnd-kit-widget-options-overlap
fix(board): render widget options above grid resize handles
2026-08-16 15:12:20 +02:00
ajnart 3237d5953f fix(board): render widget options above grid resize handles
The widget options ActionIcon rendered inside the widget Card, whose
containerType: size creates a stacking context, trapping its zIndex and
letting the dnd-kit resize handles paint over and block it.

Hoist BoardItemMenu out of the Card to the item root (same layer as the
title badge) and raise it to zIndex 30, above the handles (20). Error
recovery after edits is preserved via resetKeys=[item], which replaces
the resetErrorBoundary prop the in-card menu used to receive.
2026-08-16 14:15:14 +02:00
Thomas 1325418300 fix: complete location input test options (#6602)
* fix: complete location input test options

* fix: run CI for slash-named branches
2026-08-15 13:50:46 +02:00
Thomas 4505ce96c9 fix: refine dashboard interactions and widget options (#6597)
* fix: refine dashboard item interactions

* fix board interactions and widget options

* feat: improve bookmark selection

* fix: address dashboard review feedback
2026-08-15 10:44:37 +02:00
Thomas Camlong b491d45fdc feat: improve workshop publishing flow 2026-08-14 23:16:39 +02:00
Thomas Camlong 168091134d fix: bound preview query context 2026-08-14 22:46:15 +02:00
Thomas Camlong 28e58a5a5c fix: expose assistant provider errors 2026-08-14 22:37:28 +02:00
Thomas Camlong 3c533f2d96 fix: isolate downloads stats state 2026-08-14 22:07:12 +02:00
Thomas Camlong 2e3e654748 fix: improve auth form semantics 2026-08-14 21:22:14 +02:00
Thomas Camlong 409e8ed71a feat: unify authentication pages 2026-08-14 21:18:06 +02:00
Thomas Camlong 95489b692c fix: derive workshop web url 2026-08-14 21:10:34 +02:00
Thomas Camlong b8c06a8622 feat(dev): support direct environment overrides 2026-08-14 21:09:41 +02:00
Thomas Camlong f62add8ae4 Remove obsolete DeepSource config and Workshop critiques 2026-08-14 20:47:21 +02:00
Thomas Camlong 498d781e19 fix: isolate node instrumentation 2026-08-14 20:16:34 +02:00
Thomas Camlong 0afed2c3f6 fix: contain media server streams 2026-08-14 20:09:57 +02:00
ajnart efc0ee470b test: remove obsolete advanced interactions e2e 2026-08-14 15:14:42 +02:00
ajnart fe41382074 test: remove obsolete advanced focus assertion 2026-08-14 14:47:02 +02:00
Thomas Camlong c851609041 fix: stabilize media streams and edit hover 2026-08-14 14:33:02 +02:00
ajnart 03338b1755 revert: remove advanced mode from compact widgets 2026-08-14 13:30:10 +02:00
ajnart 8a44451c72 docs: simplify advanced view guidance 2026-08-14 12:11:33 +02:00
ajnart d434953478 test: skip removed universal create flow 2026-08-14 12:11:33 +02:00
ajnart 7aaa646b82 test: restore release advanced focus flows 2026-08-14 12:11:33 +02:00
ajnart c4f6d98300 fix: stabilize release e2e flows 2026-08-14 12:11:33 +02:00
ajnart 81fdc5856b test: preserve release advanced focus 2026-08-14 12:11:33 +02:00
ajnart 4e193da3a4 fix: preserve release advanced widget support 2026-08-14 12:11:33 +02:00
Thomas Camlong 29f7c35fc1 test: align widget modernization fixtures 2026-08-14 12:11:33 +02:00
Thomas Camlong 8775597d5a feat: expand advanced widget experiences 2026-08-14 12:11:33 +02:00
ajnart 339a0d8e2b docs: simplify assistant guide 2026-08-14 12:11:33 +02:00
ajnart 4ddc7266e9 fix(workshop): publish release v2 image 2026-08-14 12:11:33 +02:00
Thomas 42bf55641b docs: align v2 stack documentation (#6564) 2026-08-14 12:11:33 +02:00
ajnart c92e074a6f chore: update Next.js to 16.3.1 2026-08-14 12:11:21 +02:00