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
144 lines
3.9 KiB
QML
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()
|
|
}
|
|
}
|
|
}
|
|
}
|