From 12165ba58a588e48db3a92f687e11f2d1bbc2282 Mon Sep 17 00:00:00 2001 From: Tobias Gesellchen Date: Sun, 10 May 2026 22:45:37 +0200 Subject: [PATCH] =?UTF-8?q?feat(web):=20Customize=20panel=20=E2=80=94=20th?= =?UTF-8?q?ree-axis=20form=20with=20Apply=20Custom=20Plan?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces the migration-method dropdown and its toggleMigrationMethod visibility logic with a unified three-axis form inside the Customize details: - URL flip transport: XML over SSH / Telnet (Port 17000) / Skip - DNS interception: None / /etc/resolv.conf hook - Local CA install: checkbox (SSH-only) Each radio/checkbox has a transport-availability hint next to it (e.g. "(SSH unreachable)" or "(already trusted)") so users see *why* an option is disabled before they pick. renderCustomizeForm runs on every summary load to recompute these hints and pick a valid initial selection when the previous default isn't reachable. applyCustomPlan orchestrates the chosen combination as a sequence of existing backend calls: - URL flip != none → POST /setup/migrate?method={xml,telnet} - DNS = resolv → POST /setup/migrate?method=resolv (already includes the CA install, so an explicit CA step is skipped in that case) - CA install only → POST /setup/trust-ca Steps run in order; the first failure aborts the rest. After the sequence completes, refreshSummary repopulates the state card. migrate() now takes the method as an explicit parameter instead of reading it from the dropdown; applySuggestedPlan and applyCustomPlan both pass it directly. The legacy "Confirm Migration" button is removed (Apply Custom Plan supersedes it). The reboot-method picker now reads the URL flip radio rather than the dropdown. The legacy per-method preview/test panes (xml-diff, planned-xml, planned-resolv, current-resolv, dns-redirection-test) become visibility-driven by the radio choices via onCustomizeChange instead of the dropdown's toggleMigrationMethod (now removed). The hosts- related panes are forced hidden — hosts is the deprecated method. Co-Authored-By: Claude Opus 4.7 (1M context) --- pkg/service/handlers/web/index.html | 110 ++++++---- pkg/service/handlers/web/js/script.js | 291 ++++++++++++++++---------- 2 files changed, 251 insertions(+), 150 deletions(-) diff --git a/pkg/service/handlers/web/index.html b/pkg/service/handlers/web/index.html index 275b9cc..97520bc 100644 --- a/pkg/service/handlers/web/index.html +++ b/pkg/service/handlers/web/index.html @@ -897,42 +897,75 @@ Customize this migration
- - +

+ Pick any combination of the three axes — the wizard runs + the matching backend operations in order. Disabled options + require a transport this speaker doesn't expose. +

+ +
+ URL flip transport + + + +
+ +
+ DNS interception + + +
+ +
+ Local CA install + +
+
+ +
+ + +
-