Release 26.1

Fix:
- Freezed Screen
- Python versio Readme
update-fix-2.6.1
Samuel Zielke 1 month ago
parent 68d8f474ae
commit 722eacbee7

@ -95,13 +95,16 @@ piomint/
## Lokale Entwicklung ## Lokale Entwicklung
Voraussetzung: Python 3.12+ Voraussetzung: **Python 3.10+** (Django 5.2 erfordert das; auf macOS zeigt `python3`
je nach System noch auf eine ältere Version – im Zweifel `python3 --version` prüfen und
notfalls `python3.12`/`python3.13` explizit installieren, z. B. via
`brew install python@3.12`).
```bash ```bash
git clone https://git.samuelzielke.de/samuelzielke/piomint.git git clone https://git.samuelzielke.de/samuelzielke/piomint.git
cd piomint cd piomint
python3 -m venv venv python3.12 -m venv venv # ggf. durch die passende 3.10+-Version ersetzen
source venv/bin/activate # Windows: venv\Scripts\activate source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt pip install -r requirements.txt
@ -143,6 +146,12 @@ bisherigen Versions-URLs auf die aktuellste weiter.
4. `versionnumber` in `app/templates/app/updateinfo.html` hochzählen 4. `versionnumber` in `app/templates/app/updateinfo.html` hochzählen
5. Changelog-Text in `updateinfo.html` schreiben (erscheint als Update-Hinweis beim 5. Changelog-Text in `updateinfo.html` schreiben (erscheint als Update-Hinweis beim
ersten Öffnen der neuen Version) ersten Öffnen der neuen Version)
6. **`STATIC_VERSION` in `piomint/settings.py` hochzählen** – hängt als `?v=...` an
allen CSS/JS-`{% static %}`-Links (siehe `piomint/context_processors.py`) und sorgt
dafür, dass bereits installierte Geräte garantiert die neuen Dateien laden statt eine
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!**
## Roadmap / offene Punkte ## Roadmap / offene Punkte

@ -6,10 +6,10 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="{% static 'app/css/bootstrap.css' %}"> <link rel="stylesheet" href="{% static 'app/css/bootstrap.css' %}?v={{ STATIC_VERSION }}">
<link rel="stylesheet" href="{% static 'app/css/custom.css' %}"> <link rel="stylesheet" href="{% static 'app/css/custom.css' %}?v={{ STATIC_VERSION }}">
<script src="{% static 'app/js/dbcontrol.js' %}"></script> <script src="{% static 'app/js/dbcontrol.js' %}?v={{ STATIC_VERSION }}"></script>
<script src="{% static 'app/js/exportDB.js' %}"></script> <script src="{% static 'app/js/exportDB.js' %}?v={{ STATIC_VERSION }}"></script>
{% progressive_web_app_meta %} {% progressive_web_app_meta %}
@ -85,6 +85,6 @@
{% endblock %} {% endblock %}
</div> </div>
<script src="{% static 'app/js/importDB.js' %}"></script> <script src="{% static 'app/js/importDB.js' %}?v={{ STATIC_VERSION }}"></script>
</body> </body>
</html> </html>

@ -334,8 +334,8 @@
}) })
</script> </script>
<script src="{% static 'app/js/home01.js' %}"></script> <script src="{% static 'app/js/home01.js' %}?v={{ STATIC_VERSION }}"></script>
<script src="{% static 'app/js/timer.js' %}"></script> <script src="{% static 'app/js/timer.js' %}?v={{ STATIC_VERSION }}"></script>
<script src="{% static 'app/js/welcomeControl.js' %}"></script> <script src="{% static 'app/js/welcomeControl.js' %}?v={{ STATIC_VERSION }}"></script>
<script src="{% static 'app/js/UpdateInfoControl.js' %}"></script> <script src="{% static 'app/js/UpdateInfoControl.js' %}?v={{ STATIC_VERSION }}"></script>
{% endblock %} {% endblock %}

@ -1,36 +1,22 @@
<br> <br>
<div class="text-center"> <div class="text-center">
<span class="wow-emoji" style="font-size: 3rem;">🎉</span> <h1 style="margin-bottom: 0;">Kurzer Hotfix <span style="color: rgb(120,170,86);">26.1</span></h1>
<h1 style="margin-bottom: 0;">Großes Update <span style="color: rgb(120,170,86);">26.0</span></h1>
<h5 class="text-muted">ist da!</h5>
</div> </div>
<br> <br>
<p> <p>
Hey! 👋 Hey! 👋
<br>Dieses Update ist eines der größten bisher – ich habe richtig viel Zeit reingesteckt, <br>Kurz hinterher: Bei manchen bereits installierten Geräten konnte diese
damit sich PioMint für dich noch besser anfühlt. Ich hoffe, es macht dir genauso viel Update-Ansicht hängen bleiben – kein Scrollen möglich, "Alles klar"-Button nicht
Freude wie mir beim Bauen. 💚 erreichbar.
<br>Das ist jetzt behoben.
</p> </p>
<p><b>✨ Was ist neu?</b></p>
<ul style="padding-left: 1.25rem;">
<li>📅 <b>Dienstjahr-Navigation komplett überarbeitet</b> – blättere jetzt beliebig weit vor
&amp; zurück, auch über den September hinweg. Kein Ärger mehr im Herbst!</li>
<li>⏱️ <b>Neu: 55h-Regel</b> (optional in den Einstellungen aktivierbar) – deine
Jahresübersicht rechnet jetzt automatisch korrekt, sobald LDC/Sonstiges dazukommt.</li>
<li>🔍 <b>Sortierung &amp; Filter</b> für deine Aktivitäten-Tabelle – nach Datum, Dauer oder
Typ, auf- oder absteigend. Deine Wahl wird gemerkt.</li>
<li>📈 <b>Tabelle maximieren</b> – mit einem Klick mehr Einträge auf einen Blick.</li>
<li>✏️ <b>Schnellwahl-Titel frei benennbar</b> – "LDC" heißt jetzt so, wie du möchtest.</li>
<li>📤 <b>Neu: Teilen-Button!</b> Ein Klick, und dein Monatsbericht steht fertig formatiert
für WhatsApp in deiner Zwischenablage – perfekt für den nächsten Bericht.</li>
<li>🐛 Dazu jede Menge kleiner Verbesserungen &amp; Bugfixes unter der Haube.</li>
</ul>
<p> <p>
Danke, dass du PioMint nutzt und mir dein Feedback gibst – genau das macht die App War dein Bildschirm gerade eingefroren? Einmal die App schließen, kurz warten und
besser! 🙏 neu öffnen – jetzt sollte wieder alles normal laufen.
</p>
<p>
Danke für die Geduld und fürs Melden! 🙏
<br><b>Gruß Samuel</b> <br><b>Gruß Samuel</b>
</p> </p>
<br> <br>
<input type="text" name="versionnumber" id="versionnumber" class="d-none" value="26.0"> <input type="text" name="versionnumber" id="versionnumber" class="d-none" value="26.1">

@ -19,4 +19,5 @@ urlpatterns = [
path("v1335/", views.v1335), path("v1335/", views.v1335),
path("v1340/", views.v1340), path("v1340/", views.v1340),
path("v260/", views.v260), path("v260/", views.v260),
path("v261/", views.v261),
] ]

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

@ -0,0 +1,7 @@
from django.conf import settings
def static_version(request):
"""Stellt STATIC_VERSION allen Templates zur Verfügung, um CSS/JS-URLs mit
?v=<version> zu versehen (Cache-Busting bei Bestandsnutzern, siehe settings.py)."""
return {'STATIC_VERSION': getattr(settings, 'STATIC_VERSION', '')}

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

@ -72,6 +72,7 @@ TEMPLATES = [
'django.template.context_processors.request', 'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth', 'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages', 'django.contrib.messages.context_processors.messages',
'piomint.context_processors.static_version',
], ],
}, },
}, },
@ -140,6 +141,14 @@ USE_TZ = True
STATIC_URL = 'static/' STATIC_URL = 'static/'
STATIC_ROOT = '/var/www/piomint/static/' # Directory to collect static files. STATIC_ROOT = '/var/www/piomint/static/' # Directory to collect static files.
# Cache-Busting für CSS/JS: wird als ?v=<STATIC_VERSION> an alle {% static %}-Links in
# base.html/home.html angehängt (siehe piomint/context_processors.py). Ohne das können
# bereits installierte PWAs auf einer alten, gecachten CSS/JS-Version hängen bleiben,
# 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'
# Default primary key field type # Default primary key field type
# https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field # https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field

Loading…
Cancel
Save

Powered by TurnKey Linux.