clawdie-iso/firstboot/gui/qml-installer/pages/CompletePage.qml
Sam & Claude 835074ab8d Wire live installer commit path (Sam & Codex)
Live GUI installs now write runtime handoff files under /var/run/clawdie-installer, invoke bsdinstall script through a dedicated commit helper, persist the installed handoff for first HDD boot, and point the operator at /setup after reboot.

The live autologin user is restricted to a narrow sudoers rule for the commit helper and reboot only.

Build: pass
Tests: pass — sh -n + QML build + config-format + stubbed live-commit dry-run
Real-disk / bhyve install: NOT YET TESTED
2026-06-04 20:04:22 +02:00

144 lines
3.9 KiB
QML

import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
ColumnLayout {
spacing: 30
// Success icon
Rectangle {
Layout.alignment: Qt.AlignHCenter
width: 80
height: 80
radius: 40
color: tracker.success ? "#00aa00" : "#cc0000"
Text {
anchors.centerIn: parent
text: tracker.success ? "✓" : "✕"
font.pixelSize: 48
color: "white"
font.bold: true
}
}
// Title
Text {
Layout.alignment: Qt.AlignHCenter
text: tracker.success ? "Installation Complete!" : "Installation Failed"
font.pixelSize: 28
font.bold: true
color: tracker.success ? "#00aa00" : "#cc0000"
}
// Summary
Rectangle {
Layout.fillWidth: true
Layout.preferredHeight: 150
color: "#f9f9f9"
border.color: "#eeeeee"
border.width: 1
radius: 6
ColumnLayout {
anchors.fill: parent
anchors.margins: 20
spacing: 10
Text {
text: "Summary"
font.pixelSize: 14
font.bold: true
color: "#333333"
}
Text {
text: "FreeBSD 15.0 + Clawdie-AI has been installed on your system."
font.pixelSize: 12
color: "#333333"
visible: tracker.success
}
Text {
text: "An error occurred during installation. Please review the log above for details."
font.pixelSize: 12
color: "#333333"
visible: !tracker.success
}
Text {
text: tracker.success ? "Finish machine bootstrap first. Provider keys, Telegram, and browser sign-in are configured after boot." : "You may retry the installation or seek support."
font.pixelSize: 12
color: "#666666"
wrapMode: Text.WordWrap
}
Text {
text: tracker.success ? "After reboot, open http://127.0.0.1:3100/setup on the Clawdie host or local console. Remote use of https://<agent-domain>/setup is only safe after TLS and PF/reverse-proxy or tailnet/LAN allowlisting are in place." : ""
font.pixelSize: 12
color: "#555555"
wrapMode: Text.WordWrap
visible: tracker.success
}
Text {
text: tracker.success ? "If no setup token is shown after boot, run 'npm run setup-token -- rotate' on the installed host and use that token at /setup. Do not expose /setup directly to the public internet before setup completes." : ""
font.pixelSize: 12
color: "#8a4f00"
wrapMode: Text.WordWrap
visible: tracker.success
}
Item {
Layout.fillHeight: true
}
}
}
// Spacer
Item {
Layout.fillHeight: true
}
// Footer buttons
RowLayout {
Layout.fillWidth: true
spacing: 10
Item {
Layout.fillWidth: true
}
Button {
text: "View Full Log"
Layout.preferredWidth: 140
Layout.preferredHeight: 40
visible: !tracker.success
onClicked: {
// Would open full log viewer
}
}
Button {
text: "Reboot"
Layout.preferredWidth: 120
Layout.preferredHeight: 40
enabled: tracker.finished
onClicked: {
backend.runCommand("sudo", ["-n", "/sbin/reboot"])
}
}
Button {
text: "Exit"
Layout.preferredWidth: 120
Layout.preferredHeight: 40
onClicked: {
Qt.quit()
}
}
}
}