diff --git a/backend/main.py b/backend/main.py
index 6c17b53..ab1ba08 100644
--- a/backend/main.py
+++ b/backend/main.py
@@ -406,7 +406,7 @@ async def serve_media(path: str, request: _Request):
raise _HE(404, "Nicht gefunden.")
return _media_response(filepath)
-APP_VER = "946" # muss mit APP_VER in app.js übereinstimmen
+APP_VER = "947" # muss mit APP_VER in app.js übereinstimmen
@app.get("/.well-known/assetlinks.json")
async def assetlinks():
diff --git a/backend/static/js/app.js b/backend/static/js/app.js
index 20c119a..2948711 100644
--- a/backend/static/js/app.js
+++ b/backend/static/js/app.js
@@ -3,7 +3,7 @@
Router, State-Management, Navigation, Initialisierung.
============================================================ */
-const APP_VER = '946'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
+const APP_VER = '947'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
const APP_VERSION = '1.5.1'; // ← semantische Version, wird bei make release gesetzt
const IS_STAGING = location.hostname === 'staging.banyaro.app';
// Cache-Bust-Parameter nach Update-Reload sofort entfernen
diff --git a/backend/static/js/pages/routes.js b/backend/static/js/pages/routes.js
index 32186f9..9b6c37b 100644
--- a/backend/static/js/pages/routes.js
+++ b/backend/static/js/pages/routes.js
@@ -668,13 +668,25 @@ window.Page_routes = (() => {
·
0.00 km
-
-
2 Sek. halten
+
`;
document.body.appendChild(ovl);
@@ -789,16 +801,18 @@ window.Page_routes = (() => {
_recOvl.addEventListener('touchstart', _onRecOvlTouch, { passive: true });
_recOvl.addEventListener('pointerdown', _onRecOvlTouch);
- // Long-Press auf dem Schwarzbildschirm → nach 4s zurück zur Aufzeichnung
- const dim = document.getElementById('rk-rec-dim');
+ // Long-Press auf Fingerabdruck-Button → nach 2s zurück zur Aufzeichnung
+ const dim = document.getElementById('rk-rec-dim');
+ const unlockBtn = document.getElementById('rk-dim-unlock-btn');
let _lpTimer = null;
const cancelLp = () => {
clearTimeout(_lpTimer);
const prog = document.getElementById('rk-dim-prog');
if (prog) { prog.style.transition = 'none'; prog.style.strokeDashoffset = '150.8'; }
};
- dim.addEventListener('pointerdown', e => {
+ unlockBtn.addEventListener('pointerdown', e => {
e.stopPropagation();
+ unlockBtn.setPointerCapture(e.pointerId);
const prog = document.getElementById('rk-dim-prog');
if (prog) { prog.style.transition = 'stroke-dashoffset 2s linear'; prog.style.strokeDashoffset = '0'; }
_lpTimer = setTimeout(() => {
@@ -807,9 +821,9 @@ window.Page_routes = (() => {
_resetRecInactTimer();
}, 2000);
});
- dim.addEventListener('pointerup', cancelLp);
- dim.addEventListener('pointercancel', cancelLp);
- dim.addEventListener('pointerleave', cancelLp);
+ unlockBtn.addEventListener('pointerup', cancelLp);
+ unlockBtn.addEventListener('pointercancel', cancelLp);
+ unlockBtn.addEventListener('pointerleave', cancelLp);
}
function _onRecOvlTouch(e) {
diff --git a/backend/static/sw.js b/backend/static/sw.js
index c90276e..c808da1 100644
--- a/backend/static/sw.js
+++ b/backend/static/sw.js
@@ -3,7 +3,7 @@
Offline-Cache + Push Notifications + Tile-Cache
============================================================ */
-const CACHE_VERSION = 'by-v946';
+const CACHE_VERSION = 'by-v947';
const CACHE_STATIC = `${CACHE_VERSION}-static`;
const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten
const CACHE_API = 'ban-yaro-api-v1'; // API-Response-Cache