root 11ab8b57bf feat: PWA + Mikrofon-Aufnahme + HTTPS via selbst-signiertem Cert
Frontend-Aufnahme (MediaRecorder):
- Aufnahme-Button im Upload-Form, große Touch-Targets
- Start / Pause / Fortsetzen / Stop mit Live-Timer
- Format-Auto-Detect (Opus/WebM, Safari nimmt M4A)
- Wake Lock damit iOS nicht ins Sleep geht
- Aufnahme-Datei landet als File-Objekt im Upload-Flow
- Beim Submit: aufgenommene Datei bevorzugt vor File-Input

PWA:
- manifest.webmanifest, icon.svg + PNG-Icons (192/512)
- apple-mobile-web-app-capable + theme-color
- "Zum Home-Bildschirm" hinzufügen verwandelt Seite in App

Mobile-Layout:
- Single-Column ab 700px, größere Buttons
- Header stapelt sich vertikal
- Tabelle scrollt horizontal statt zu zerquetschen
- Safe-Area-Insets für iPhone-Notch

HTTPS (Pflicht für Mikrofon-Zugriff):
- install.sh erzeugt selbst-signiertes Cert (4096 Bit, 825 Tage, mit
  SAN aus Hostname + LAN-IP)
- Nginx: HTTP → HTTPS Redirect, Cert unter /ssl/voice-agent.crt
  ungesichert abrufbar (für bequemen iOS-Profil-Import)

Backend:
- ALLOWED_EXTS um 'webm' erweitert
2026-05-14 03:43:51 +00:00

15 lines
721 B
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<rect width="512" height="512" rx="96" fill="#0f1115"/>
<g transform="translate(256 256)">
<!-- Mikrofon -->
<rect x="-56" y="-160" width="112" height="200" rx="56" fill="#4f8cff"/>
<!-- Bügel -->
<path d="M -120 0 a 120 120 0 0 0 240 0" stroke="#4f8cff" stroke-width="20" fill="none" stroke-linecap="round"/>
<!-- Standfuß -->
<line x1="0" y1="120" x2="0" y2="170" stroke="#4f8cff" stroke-width="20" stroke-linecap="round"/>
<line x1="-50" y1="170" x2="50" y2="170" stroke="#4f8cff" stroke-width="20" stroke-linecap="round"/>
<!-- Aufnahme-Punkt -->
<circle cx="100" cy="-100" r="30" fill="#e74c3c"/>
</g>
</svg>