diff --git a/pkg/service/handlers/web/css/style.css b/pkg/service/handlers/web/css/style.css index 46eb479..fa00691 100644 --- a/pkg/service/handlers/web/css/style.css +++ b/pkg/service/handlers/web/css/style.css @@ -129,6 +129,20 @@ pre { background-color: #eee; padding: 10px; overflow-x: auto; font-size: 12px; background-color: #d32f2f; } +/* .btn-primary marks the one "do the thing" confirm action of a panel + (Save Settings, Apply Suggested/Custom Plan, Enable SSH, …). Everything + else stays the plain default button so color consistently signals the + same two meanings everywhere: primary = confirm, danger = destructive. */ +.btn-primary { + background-color: #2196f3; + color: white; + border: none; + padding: 5px 10px; +} +.btn-primary:hover { + background-color: #1769aa; +} + .badge { padding: 2px 6px; border-radius: 4px; diff --git a/pkg/service/handlers/web/index.html b/pkg/service/handlers/web/index.html index bbae33a..27004a7 100644 --- a/pkg/service/handlers/web/index.html +++ b/pkg/service/handlers/web/index.html @@ -533,7 +533,7 @@
- + -

- Migration Summary for - +

+ + Migration Summary for + + + + + +

Migration Status:

@@ -739,7 +757,8 @@ SSH (remote_services) - + + + + + + + Account paired @@ -775,6 +811,30 @@
+ +
+

Speaker controls

+
+ + +
+
+ @@ -819,25 +879,13 @@
@@ -879,13 +927,7 @@
@@ -1067,6 +1109,7 @@ @@ -1150,8 +1193,9 @@
@@ -1236,64 +1280,6 @@
-
- - - - - -
diff --git a/pkg/service/handlers/web/js/script.js b/pkg/service/handlers/web/js/script.js index d6886b9..ed71b8e 100644 --- a/pkg/service/handlers/web/js/script.js +++ b/pkg/service/handlers/web/js/script.js @@ -2558,18 +2558,15 @@ async function migrate(deviceId, ip, method) { }), ); - // Make reboot button available and prominent + // Make reboot button available and prominent. It lives in the + // always-visible "Speaker controls" row (see #621 — it used to + // be reachable only after expanding "Customize this migration"), + // so no need to force any collapsed container open here. const rebootBtn = document.getElementById("reboot-speaker-btn"); rebootBtn.style.display = "inline-block"; rebootBtn.disabled = false; rebootBtn.style.border = "2px solid #000"; - // The Reboot button now lives inside the "Customize this - // migration"
; expand it so the post-migration - // reboot affordance is reachable from the Plan flow too. - const customize = rebootBtn.closest("details"); - if (customize) customize.open = true; - // Re-show summary but with prominence on reboot summaryDiv.style.display = "block"; } else { @@ -3915,11 +3912,14 @@ function renderMigrationState(summary) { } // --- Preconditions --- - const remoteCell = document.getElementById("state-remote-services-cell"); - if (remoteCell) { - remoteCell.replaceChildren(); + // Like CA/TLS above, the cell also hosts the Enable/Disable SSH + // buttons as siblings of this line — only rewrite the verdict span so + // they stay put across re-renders. + const remoteLine = document.getElementById("state-remote-services-line"); + if (remoteLine) { + remoteLine.replaceChildren(); const v = remoteServicesVerdict(summary); - remoteCell.appendChild(stateLine(v.icon, v.text, v.note)); + remoteLine.appendChild(stateLine(v.icon, v.text, v.note)); } const pairedCell = document.getElementById("state-paired");