Release 26.2: Partner-Feld, Feedback-Mail, Nutzungs-Dashboard

Bündelt die letzten drei Commits zu einem Release:
- Anonymes Nutzungs-Dashboard für Admins
- Feedback-E-Mail in den Einstellungen
- Optionales Partner-Feld bei Diensteinträgen

- Neue Versions-URL /app/v262/, alle bisherigen Versionen leiten dorthin um
- PWA_APP_START_URL aktualisiert
- STATIC_VERSION auf 26.2 (Cache-Busting für CSS/JS)
- Update-Info-Text für Nutzer geschrieben (Partner-Feld, Feedback-Mail)
- README-Release-Checkliste um Deployment-Schritt ergänzt (Migration/
  collectstatic/Gunicorn-Neustart), da jetzt zum ersten Mal ein echtes
  Datenmodell existiert

Lokal getestet: kompletter Redirect-Kette (alte Versionen -> v262), v262 lädt,
Cache-Buster in den Asset-URLs, versionnumber im Markup, Track-Endpoint nach
Migration funktionsfähig.

Deployment auf den Server steht noch aus (SSH-Zugriff wird gerade
eingerichtet) - siehe Hinweis im Chat.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
main
Samuel Zielke 3 weeks ago
parent a8c798fbe0
commit 710220ff71

@ -152,6 +152,10 @@ bisherigen Versions-URLs auf die aktuellste weiter.
alte, gecachte Version zu behalten. Ohne diesen Schritt können CSS/JS und HTML
auseinanderlaufen (führte schon zu eingefrorenen Screens bei Bestandsnutzern) –
**nicht vergessen!**
7. Auf dem Server deployen: neuen Code holen (`git pull`), **falls sich Models geändert
haben** `python manage.py makemigrations app && python manage.py migrate` ausführen
(Migrationen sind nicht im Repo, siehe `.gitignore`), Static Files einsammeln
(`python manage.py collectstatic`), Gunicorn neu starten
## Roadmap / offene Punkte

@ -1,22 +1,22 @@
<br>
<div class="text-center">
<h1 style="margin-bottom: 0;">Kurzer Hotfix <span style="color: rgb(120,170,86);">26.1</span></h1>
<h1 style="margin-bottom: 0;">Update <span style="color: rgb(120,170,86);">26.2</span></h1>
</div>
<br>
<p>
Hey! 👋
<br>Kurz hinterher: Bei manchen bereits installierten Geräten konnte diese
Update-Ansicht hängen bleiben – kein Scrollen möglich, "Alles klar"-Button nicht
erreichbar.
<br>Das ist jetzt behoben.
<br>Zwei Kleinigkeiten aus euren Rückmeldungen sind jetzt mit drin:
</p>
<ul style="padding-left: 1.25rem;">
<li>🤝 <b>Neu: Partner-Feld</b> – beim Eintragen (und Bearbeiten) kannst du jetzt
optional festhalten, mit wem du im Dienst warst.</li>
<li>✉️ <b>Feedback direkt per E-Mail</b> – unter Einstellungen → Kontakt findest du
jetzt neben der WhatsApp-Community auch eine E-Mail-Adresse für Feedback und
Fehler.</li>
</ul>
<p>
War dein Bildschirm gerade eingefroren? Einmal die App schließen, kurz warten und
neu öffnen – jetzt sollte wieder alles normal laufen.
</p>
<p>
Danke für die Geduld und fürs Melden! 🙏
Wie immer: Danke fürs Mitdenken und Melden! 🙏
<br><b>Gruß Samuel</b>
</p>
<br>
<input type="text" name="versionnumber" id="versionnumber" class="d-none" value="26.1">
<input type="text" name="versionnumber" id="versionnumber" class="d-none" value="26.2">

@ -20,6 +20,7 @@ urlpatterns = [
path("v1340/", views.v1340),
path("v260/", views.v260),
path("v261/", views.v261),
path("v262/", views.v262),
path("track/", views.track_usage),
path("dashboard/", views.usage_dashboard),
]

@ -21,39 +21,42 @@ def install(request):
return render(request, "app/install.html")
def home(request):
return redirect("/app/v261")
return redirect("/app/v262")
def login(request):
return render(request, "app/login.html")
def v1321(request):
return redirect("/app/v261")
return redirect("/app/v262")
def v1322(request):
return redirect("/app/v261")
return redirect("/app/v262")
def v133(request):
return redirect("/app/v261")
return redirect("/app/v262")
def v1332(request):
return redirect("/app/v261")
return redirect("/app/v262")
def v1333(request):
return redirect("/app/v261")
return redirect("/app/v262")
def v1334(request):
return redirect("/app/v261")
return redirect("/app/v262")
def v1335(request):
return redirect("/app/v261")
return redirect("/app/v262")
def v1340(request):
return redirect("/app/v261")
return redirect("/app/v262")
def v260(request):
return redirect("/app/v261")
return redirect("/app/v262")
def v261(request):
return redirect("/app/v262")
def v262(request):
return render(request, "app/home.html")

@ -9,7 +9,7 @@ PWA_APP_BACKGROUND_COLOR = '#9FEDD7'
PWA_APP_DISPLAY = 'standalone'
PWA_APP_SCOPE = '/'
PWA_APP_ORIENTATION = 'portrait'
PWA_APP_START_URL = '/app/v261/'
PWA_APP_START_URL = '/app/v262/'
PWA_APP_STATUS_BAR_COLOR = 'black-translucent'
PWA_SERVICE_WORKER_PATH = os.path.join(BASE_DIR, 'app/static/app/js', 'serviceworker.js')
PWA_APP_ICONS = [

@ -147,7 +147,7 @@ STATIC_ROOT = '/var/www/piomint/static/' # Directory to collect static files.
# während schon neues HTML ausgeliefert wird - das führte u.a. zu eingefrorenen Screens
# (kein Scroll, kein Button erreichbar) bei Bestandsnutzern. Bei jedem Release erhöhen,
# zusammen mit der Versions-URL in app/urls.py / app/views.py.
STATIC_VERSION = '26.1'
STATIC_VERSION = '26.2'
# Default primary key field type
# https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field

Loading…
Cancel
Save

Powered by TurnKey Linux.