Matches the 1.0.0-38 product display rename. Touches every
infrastructure identifier:
- container_name: truenas-burnin → nas-burnin
- forge URL in /api/v1/updates/check
- security-scan: REPO_URL, REPO, DEPLOY_DIR, systemd unit description
- run-tests.sh default container name
- doc paths in README/SPEC/CLAUDE
- in-app instruction strings (login.html, settings.html, auth_cli.py)
Maple migration done in lockstep:
docker compose down (truenas-burnin)
mv ~/docker/stacks/{truenas-burnin,nas-burnin}
systemd unit ExecStart updated + daemon-reload
docker compose up -d --build → container nas-burnin
Old image truenas-burnin-app removed (~12 GB reclaimed)
Stale top-level orphans cleaned (config.py, poller.py, routes.py,
truenas.py, tests/) — all dead since pre-split refactors
Forge repo rename (git.hellocomputer.xyz/brandon/truenas-burnin →
nas-burnin) is a separate UI-only step. Forgejo redirects the old
URL after rename, so this commit can be pushed to the existing
remote first; remote URL gets updated locally once you rename.
67 lines
2.6 KiB
HTML
67 lines
2.6 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
<title>Sign in — NAS Burn-In</title>
|
|
<link rel="stylesheet" href="/static/app.css">
|
|
</head>
|
|
<body class="login-body">
|
|
|
|
<main class="login-card">
|
|
<div class="login-header">
|
|
<div class="login-title">NAS Burn-In</div>
|
|
<div class="login-sub">{% if needs_setup %}First-time setup{% else %}Sign in{% endif %}</div>
|
|
</div>
|
|
|
|
{% if error %}
|
|
<div class="login-error">{{ error }}</div>
|
|
{% endif %}
|
|
|
|
{% if needs_setup %}
|
|
<p class="login-blurb">
|
|
No users exist yet. Create the initial administrator account.
|
|
Username and password go straight into the burn-in DB — no email,
|
|
no recovery flow. Pick something memorable.
|
|
</p>
|
|
<form method="POST" action="/api/v1/auth/setup" class="login-form">
|
|
<label class="login-label" for="username">Username</label>
|
|
<input class="login-input" type="text" id="username" name="username"
|
|
autocomplete="username" required minlength="2" maxlength="64"
|
|
autofocus>
|
|
|
|
<label class="login-label" for="full_name">Full name <span class="login-optional">(optional)</span></label>
|
|
<input class="login-input" type="text" id="full_name" name="full_name"
|
|
autocomplete="name" maxlength="128">
|
|
|
|
<label class="login-label" for="password">Password</label>
|
|
<input class="login-input" type="password" id="password" name="password"
|
|
autocomplete="new-password" required minlength="8" maxlength="128">
|
|
|
|
<button class="login-submit" type="submit">Create account & sign in</button>
|
|
</form>
|
|
{% else %}
|
|
<form method="POST" action="/login" class="login-form">
|
|
<input type="hidden" name="next" value="{{ next }}">
|
|
|
|
<label class="login-label" for="username">Username</label>
|
|
<input class="login-input" type="text" id="username" name="username"
|
|
autocomplete="username" required maxlength="64" autofocus>
|
|
|
|
<label class="login-label" for="password">Password</label>
|
|
<input class="login-input" type="password" id="password" name="password"
|
|
autocomplete="current-password" required maxlength="128">
|
|
|
|
<button class="login-submit" type="submit">Sign in</button>
|
|
</form>
|
|
{% endif %}
|
|
|
|
<div class="login-footer">
|
|
Authentication is local to this dashboard. Forgot your password?
|
|
Reset it via the container DB:<br>
|
|
<code class="login-code">docker exec nas-burnin python -m app.auth_cli reset <user></code>
|
|
</div>
|
|
</main>
|
|
|
|
</body>
|
|
</html>
|