- App is now called "wohnungsdidi" everywhere user-facing (page title,
nav brand, login header, notification subjects, report filename,
FastAPI titles, log messages)
- Brand dot replaced with an image of Didi (web/static/didi.webp),
rendered as a round 2.25rem avatar in _layout + login
- "Programmiert für Annika ♥" footer now shows for every logged-in user,
not only Annika
- Count-up shows only seconds ("vor 73 s") regardless of age — no
rollover to minutes/hours
- Data continuity: DB file stays /data/lazyflat.sqlite and the Docker
volume stays lazyflat_data so the rename doesn't strand existing data
- Session cookie renamed to wohnungsdidi_session (one-time logout on
rollout)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
30 lines
1.3 KiB
HTML
30 lines
1.3 KiB
HTML
{% extends "base.html" %}
|
|
{% block body %}
|
|
<main class="flex min-h-screen items-center justify-center p-4">
|
|
<div class="card w-full max-w-sm p-8">
|
|
<div class="flex items-center gap-3 mb-6">
|
|
<img src="/static/didi.webp" alt="" class="brand-dot">
|
|
<div>
|
|
<h1 class="text-2xl font-semibold leading-tight">wohnungsdidi</h1>
|
|
<p class="text-sm text-slate-500">Anmeldung erforderlich</p>
|
|
</div>
|
|
</div>
|
|
|
|
{% if error %}
|
|
<div class="chip chip-bad mb-4">{{ error }}</div>
|
|
{% endif %}
|
|
|
|
<form method="post" action="/login" class="space-y-4">
|
|
<div>
|
|
<label class="block text-xs uppercase tracking-wide text-slate-500 mb-1">Benutzer</label>
|
|
<input class="input" type="text" name="username" autocomplete="username" required>
|
|
</div>
|
|
<div>
|
|
<label class="block text-xs uppercase tracking-wide text-slate-500 mb-1">Passwort</label>
|
|
<input class="input" type="password" name="password" autocomplete="current-password" required>
|
|
</div>
|
|
<button type="submit" class="btn btn-primary w-full">Anmelden</button>
|
|
</form>
|
|
</div>
|
|
</main>
|
|
{% endblock %}
|