From 03b8098b3c0325647975d79500af2fd829f348d2 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 8 Sep 2026 02:49:17 +0800 Subject: [PATCH] feat(web): voice messages (record, send, playback) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Click-to-record (README §3.3's explicit 取消/发送 buttons), not the old app's press-and-hold-with-swipe-to-cancel gesture -- the new design replaces that touch gesture with plain buttons, a reasonable desktop-first adaptation; the underlying MediaRecorder mechanics (audio/webm or audio/mp4 depending on browser support, 24kbps, 2s minimum/10min maximum duration) are ported as-is from the old app's audio-recorder.jsx. - VoiceRecorder.tsx: recording UI + MediaRecorder lifecycle. Silently discards (no send) recordings under MIN_DURATION, matching the old app. Deliberately skips the `webm-duration-fix` package the old app pulled in for Chrome's well-known missing-webm-duration-metadata bug -- this app's own displayed duration comes from its own recording timer, not the file's embedded metadata, so only a browser's native