ahp
6228e66d2c
feat: production-grade video player — ambient mode, speed controls, hls.js, double-tap, settings flyout
...
- Ambient canvas (32×18, ~8fps rAF, blur(55px)) behind video; toggleable, persisted
- Speed controls 0.5×–2× via settings flyout; capRate replaces lockRate, anti-cheat
preserved
- hls.js dynamic import for .m3u8 URLs; Safari native HLS fallback; MP4 unchanged
- Double-tap left=seek back 10s, right=blocked; single-tap toggles play on touch
- Keyboard: Space/K play-pause, J/← back, L/→ blocked, ↑↓ volume, M mute, F fullscreen
- Settings flyout with speed picker + ambient toggle (animated, framer-motion)
- Theater mode toggle, fullscreen API, volume slider with localStorage persistence
- Buffer visualization behind progress bar, hover timestamp tooltip, playhead thumb
- All anti-cheat intact: maxTrustedPosRef, PiP block, visibility pause, heartbeat system
2026-10-18 11:10:11 +03:30
ahp
03610bc3d3
feat: implement 8 features across full stack
...
- Leaderboard: rank-based percentile tiers (champion/gold/silver/bronze),
deterministic tie-breaking (xp DESC, user_id ASC)
- Mentor chat: md: breakpoints, safe-area-inset-bottom padding
- Learning progress: server-side progressPct, curriculum expansion safety
- Physical orders: hard-disabled with 410 Gone
- Certificate approval: pending/issued flow, admin issue/revoke endpoints,
certificate_requires_approval setting (migration 0031)
- Draft/publish: is_published on lessons and chapters, admin publish UI
(migration 0030)
- Video panel: static thumbnails (no preload), client-side pagination
- Rich editor: TipTap + tiptap-markdown for lesson descriptions,
marked + DOMPurify for SafeMarkdown rendering
2026-10-18 10:14:22 +03:30