mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-05 19:28:25 +00:00
Inline media in a post now goes through playableLayout(): known audio renders as a waveform scrubber (the imeta waveform when present, else the synthetic one), known audio with an imeta image as a cover card with the same scrubber, and files that could be audio or video (HLS playlists) as a neutral card until the player's probe settles it. Known video and live streams keep the video player, and a declared-audio file whose tracks turn out to include video moves to it. Probe results are cached per URL so a post scrolled back into view keeps its shape. The cards are stateless in commonsUI (PlayableMediaCards.kt) and driven on Android by PlayableAudioView over the pooled player: no autoplay, no loop, nothing fetched before play when automatic media loading is off; tap or drag on the waveform seeks, and tapping the card shows the share, save, picture-in-picture and mute buttons the voice player uses. MediaUrlVideo now carries the imeta size and waveform, so the card shows the file size and real waveform before anything loads. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017KKAj1seHQLCcVEiMeePEE