Files
Telegram-iOS/submodules
isaacisaacClaude Opus 4.8
a81d0ee944 Anchor navigation in InstantPage V2 / rich-content bubbles
Tapping an intra-message #fragment link in a rich-data bubble now scrolls
the chat so the matching anchor lands just below the content-area top,
expanding any enclosing collapsed <details> first. Anchors come from
server/AI-sent InstantPages (block .anchor or inline RichText.anchor); the
compose path is unchanged.

- InstantPageV2View.anchorFrame(name:) resolves an anchor's frame in the
  live layout (text/codeBlock/thinking/details/table), mirroring findTextItem.
- instantPageAnchorPath(in:name:) is a pure model walk returning the
  <details>-sibling-ordinal path to an anchor; its recursion set matches
  exactly the containers the V2 layout flattens through layoutBlock
  (.blockQuote/.cover/.list .blocks), keeping ordinals consistent with the
  layout's detailsIndexCounter.
- InstantPageV2View.firstCollapsedDetails(forOrdinalPath:) maps that path to
  the first not-yet-expanded details' live index (read, never reproduced).
- The rich bubble fills the two stubbed seams: getAnchorRect, and a
  fragment-link route in tapActionAtPoint that drives a resolve -> expand ->
  scroll state machine (pendingScrollAnchor + progress guard + a
  post-relayout hook). Taps are gated off while the message streams.

Verified by the full Bazel build; runtime behavior not yet exercised.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 01:11:27 +02:00
..
2026-05-31 17:35:32 +02:00
2025-09-12 10:54:22 +02:00
2026-05-28 16:50:05 +02:00
2025-09-01 18:44:03 +02:00
2025-06-28 19:48:34 +02:00
2025-06-28 19:48:34 +02:00
2026-03-10 00:38:36 +01:00
2026-05-28 16:50:05 +02:00
2026-06-02 13:31:23 +02:00
2026-02-06 17:14:35 +04:00
2026-06-02 13:31:23 +02:00
2026-05-28 16:50:05 +02:00
2026-05-31 17:35:32 +02:00
2025-09-17 11:18:26 +04:00
2025-12-26 20:29:30 +08:00
2025-12-27 16:34:51 +08:00
2026-06-02 13:31:23 +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
2025-06-28 13:14:15 +02:00
2026-03-06 13:20:49 +01:00
2025-05-29 02:05:13 +08: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
2025-06-28 19:48:34 +02: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-06-02 10:48:17 +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-06-28 19:48:34 +02:00
2025-12-27 16:34:51 +08:00
2025-09-12 10:54:22 +02:00
2025-10-16 05:30:06 +04:00
2026-05-28 16:50:05 +02:00
2025-06-28 19:48:34 +02:00
2026-05-31 17:35:32 +02:00
2026-04-22 23:03:51 +02:00
2026-06-02 13:31:23 +02:00
2025-08-18 17:33:54 +04:00
2025-09-24 02:35:23 +08:00
2025-06-28 19:48:34 +02:00
2025-07-01 14:57:33 +02:00
2025-06-28 19:48:34 +02:00
2026-05-28 16:50:05 +02:00
2026-05-28 16:50:05 +02:00
2026-06-02 10:48:17 +02:00
2026-04-30 12:15:57 +04:00
2026-05-28 16:50:05 +02:00
2025-06-21 12:17:20 +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
2025-06-10 22:11:07 +02:00
2026-06-02 10:48:17 +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
2025-06-28 19:48:34 +02: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
2025-06-28 19:48:34 +02:00
2026-05-28 16:50:05 +02:00
2025-06-28 19:48:34 +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
2025-10-11 00:56:21 +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