Files
Telegram-iOS/submodules
isaacisaacClaude Opus 4.8
f6da30da70 InstantPage V2: audio/music rendering, playback, and file-bubble styling
Render and play InstantPageBlock.audio in the InstantPage V2 renderer
(rich-data message bubbles + the rich send preview), where audio was
previously an inert grey placeholder.

- New InstantPageV2AudioContentNode replicates the standard music message
  bubble (ChatMessageInteractiveFileNode's music layout): a SemanticStatusNode
  control (album art via playerAlbumArt + play/pause) with a download/progress
  overlay, title + "duration · performer" lines, exact fonts/colors from
  theme.chat.message.{incoming|outgoing}. Tap is driven by a
  UITapGestureRecognizer (ASControl .touchUpInside is cancelled by the chat
  ListView's gesture system). V1's InstantPageAudioNode is unchanged.
- Playback runs on InstantPageMediaPlaylist with a discriminated, message-scoped
  InstantPageMediaPlaylistId (.instantPage / .richMessage) so concurrent
  rich-message audio bubbles don't collide; the big control's play/pause comes
  from filteredPlaylistState, the overlay's download/progress from
  messageMediaFileStatus, and fetch goes through the fetch manager.
- Rich-message audio fetches via a MessageReference (threaded through the V2
  render context) instead of the synthesized webpage; FetchedMediaResource's
  .message revalidation arm now also searches RichTextMessageAttribute instant
  pages, so a stale instant-page audio/image reference can recover. Corrected a
  dormant inverted InstantPagePlaylistLocation.isEqual.
- New .mediaAudio laid-out item + layout/reveal-cost arms; the audio block lays
  out full-width at the file node's music normHeight.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 17:44:45 +02:00
..
2026-05-31 17:35:32 +02:00
2026-05-28 16:50:05 +02:00
2026-03-10 00:38:36 +01:00
2026-05-28 16:50:05 +02:00
2026-05-28 16:50:05 +02:00
2026-02-06 17:14:35 +04:00
2026-05-28 16:50:05 +02:00
2026-05-28 16:50:05 +02:00
2026-05-31 17:35:32 +02:00
2025-12-26 20:29:30 +08:00
2025-12-27 16:34:51 +08:00
2026-05-31 17:35:32 +02:00
2025-12-20 03:02:08 +08:00
2026-03-24 16:47:36 +08:00
2026-04-17 09:06:14 +02:00
2026-02-15 22:50:18 +04:00
2026-05-28 16:50:05 +02:00
2026-05-28 16:50:05 +02:00
2026-01-02 23:11:51 +08:00
2026-03-06 13:20:49 +01:00
2026-04-17 11:06:56 +02:00
2026-05-31 17:35:32 +02:00
2026-04-24 03:16:14 +02:00
2026-04-21 22:04:47 +04:00
2026-05-31 17:35:32 +02:00
2026-04-03 15:50:39 +08:00
2026-04-16 01:18:22 +02:00
2026-04-16 01:18:22 +02:00
2026-03-13 11:04:33 +01:00
2026-05-28 16:50:05 +02:00
2026-03-22 16:41:22 +01:00
2026-02-27 14:34:18 +04:00
2026-05-31 17:35:32 +02:00
2025-12-26 20:29:30 +08:00
2026-05-31 17:35:32 +02:00
2026-05-31 17:35:32 +02:00
2025-12-27 16:34:51 +08:00
2026-05-28 16:50:05 +02:00
2026-05-31 17:35:32 +02:00
2026-04-22 23:03:51 +02:00
2026-04-21 22:04:58 +04:00
2026-05-28 16:50:05 +02:00
2026-05-28 16:50:05 +02:00
2026-05-31 17:35:32 +02:00
2026-04-30 12:15:57 +04:00
2026-05-28 16:50:05 +02:00
2026-04-07 16:47:08 +02:00
2026-04-18 08:41:08 +02:00
2025-12-26 20:29:30 +08:00
2025-10-20 22:57:29 +04:00
2026-05-31 17:35:32 +02:00
2026-05-28 16:50:05 +02:00
2026-04-23 01:48:48 +02:00
2026-01-05 15:14:19 +04:00
Fix
2026-04-26 02:46:44 +04:00
2025-10-31 18:23:12 +04:00
2026-04-22 23:03:51 +02:00
2026-05-28 16:50:05 +02:00
2026-04-24 23:19:15 +04:00
2026-03-18 00:27:13 +01:00
2026-04-03 22:15:42 +08:00
2026-05-05 14:57:06 +02:00
2026-01-25 22:17:49 +04:00
WIP
2026-05-20 00:34:25 +08:00
2026-05-31 17:35:32 +02:00
2026-03-06 18:13:48 +01:00
Fix
2026-04-27 01:39:39 +02:00
2026-01-14 22:58:31 +04:00
2026-05-28 16:50:05 +02:00
2025-12-09 01:28:37 +04:00
2026-01-27 21:04:08 +08:00
2026-05-28 16:50:05 +02:00
2026-03-30 20:44:10 +08:00
2026-05-31 17:35:32 +02:00