Files
amethyst/commons
Claude 7c4aa18b34 feat(audio): render audio in posts as waveform or cover cards
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
2026-10-01 14:25:06 +00:00
..