30 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### Features
- DM screen: info sheet (85% height, FormSheet) with shared media grid (3-col), partner profile link, image lightbox
- DM screen: avatar tap in header navigates to partner profile
- DM screen: info icon () in header opens info sheet
- Coach: Instagram-style voice recording bar — trash (left) + waveform + timer (center) + send (right)
- Coach: silence/speech detection via audio metering — dots when silent, animated bars when speaking
- Coach: trash button flashes red briefly on cancel (Instagram-style)
- iOS Layer 3: Screen Time Passcode setup flow — generate code, set in iOS Settings, stored on backend
### Fixes
- Android: Force Stop bypass blocked — Samsung SubSettings/FrameLayout class detection fixed in a11y tamper lock
- Android: Force Stop confirmation dialog now detected and blocked
- Android: a11y service label corrected to "ReBreak — Schutz" (HIGH_CONFIDENCE_KEYWORD match)
- Arabic STT: switched to Deepgram nova-3 (nova-2-general dropped Arabic support)
- DM: scroll-to-bottom now reliable via scrollToOffset(999999) on Android (scrollToEnd miscalculates content height)
- DM: voice recording timer uses Date.now() diff — eliminates Android setInterval jitter
- DM: voice bars fill full width via flex:1 + space-evenly
- DNS filter: own domains (rebreak.org, rebreak.app) bypass blocklist — fixes OAuth Google callback
### Backend
- Mail classifier v1.2: FS-token +20pts, extreme-percent (≥100%) +20pts, casino in sender name +30pts, block threshold lowered 50→40
- Screen Time Passcode API: POST/GET /api/protection/screentime-passcode
- mail_classification_samples row-cap cron: max 100k rows, daily pruning (prevents disk-full)
### Infrastructure
- CI/CD: race condition fixed — deploy lock prevents webhook + GH-Actions colliding
- CI/CD: health check retry loop (12×5s = 60s max) instead of single sleep 5
- Hetzner: 20GB block volume attached, Docker moved to /mnt/data (freed 14GB on root)
- Deepgram nova-2-general → nova-3 for all languages