- error state gets a 'Try again' button (settings are kept) plus links back to the disk / settings pages; the page reloads into it instead of only recolouring the bar - names are lowercased instead of rejected; system account names (root, caddy, docker, …) are refused with a clear message - plain wording: 'Server name' with a live http://<name>.local preview, 'Pick a disk' with an explicit erase warning, a readable confirm table (language label, disk size/type) and a Back button - the password hint says it is also the SSH / console password; the language hint says the wizard itself is English - wizard pages redirect to the progress page while an install is running - progress page: aria-live phase, aria-valuenow updates, 'lost connection' note, 'fine to close this page' - .local fallback on the reboot page: router device list, IP may change - live console banner says a network cable with internet is required - target gets a systemd-networkd-wait-online --any drop-in: boards with a second unplugged NIC (or Ethernet + Wi-Fi) waited up to 2 min at boot Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wq1hzUp4ZmCKHDuLKCnu73
31 lines
1.4 KiB
HTML
31 lines
1.4 KiB
HTML
{% extends "base.html" %}
|
|
|
|
{% block title %}Confirm · Furtka Installer{% endblock %}
|
|
{% block step_indicator %}<span class="step-indicator">Step 3 of 3</span>{% endblock %}
|
|
|
|
{% block content %}
|
|
<h1>Confirm install</h1>
|
|
<p class="lede">Check the settings below. Continuing will <strong>erase <code>{{ settings.boot_drive }}</code></strong> and install Furtka on it.</p>
|
|
|
|
<div class="alert alert-warn" role="alert">
|
|
Everything currently on this disk will be deleted and can't be recovered.
|
|
</div>
|
|
|
|
<div class="summary">
|
|
<table>
|
|
<tr><td>Server name</td><td>{{ settings.hostname }} <span class="hint">(http://{{ settings.hostname }}.local)</span></td></tr>
|
|
<tr><td>Username</td><td>{{ settings.username }}</td></tr>
|
|
<tr><td>Password</td><td>{{ settings.password }}</td></tr>
|
|
<tr><td>Language</td><td>{{ language_label }}</td></tr>
|
|
<tr><td>Disk</td><td>{{ settings.boot_drive }}{% if drive %} — {{ drive.size }} {{ drive.type_label }}{% endif %}</td></tr>
|
|
</table>
|
|
</div>
|
|
|
|
<form method="post" action="{{ url_for('install_run') }}"
|
|
onsubmit="this.querySelector('button').disabled = true; this.querySelector('button').textContent = 'Starting…';">
|
|
<div class="actions">
|
|
<button type="submit" class="btn btn-danger">Erase disk and install</button>
|
|
<a href="{{ url_for('install_step_2') }}" class="btn btn-link">← Back</a>
|
|
</div>
|
|
</form>
|
|
{% endblock %}
|