diff --git a/backend/main.py b/backend/main.py
index d145e80..3ce196a 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 = "942" # muss mit APP_VER in app.js übereinstimmen
+APP_VER = "941" # 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 b2802bd..d585465 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 = '942'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
+const APP_VER = '941'; // ← 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/admin.js b/backend/static/js/pages/admin.js
index 34b7ccd..00a19e8 100644
--- a/backend/static/js/pages/admin.js
+++ b/backend/static/js/pages/admin.js
@@ -3519,65 +3519,55 @@ window.Page_admin = (() => {
const pending = rows.filter(r => !r.fulfilled_at);
const done = rows.filter(r => r.fulfilled_at);
- // Offene Anfragen als Cards (mobile-freundlich, Button immer sichtbar)
- const _pendingCard = r => `
-
-
-
-
${_esc(r.name)}
-
${_esc(r.email)}
-
- ${tierBadge(r.tier)}
- ${r.created_at?.slice(0,10) || ''}
-
- ${r.message ? `
- ${_esc(r.message)}
-
` : ''}
-
-
-
-
`;
-
- // Erledigte als kompakte Tabellenzeilen
- const _doneRow = r => `
+ const _row = (r, showBtn) => `
- ${_esc(r.name)}
+ | ${_esc(r.name)}
${_esc(r.email)} |
${tierBadge(r.tier)} |
-
- ✓ ${r.fulfilled_at?.slice(0,10) || ''} |
+
+ ${r.message ? _esc(r.message) : '—'} |
+
+ ${r.created_at?.slice(0,10) || ''} |
+
+ ${showBtn
+ ? ``
+ : `✓ ${r.fulfilled_at?.slice(0,10)}`}
+ |
`;
+ const thead = `
+ ${['Nutzer','Tarif','Nachricht','Datum','Aktion'].map(h =>
+ `| ${h} | `
+ ).join('')}
`;
+
el.innerHTML = `
-
-