[UnigramDev/Unigram/formatted-text-block-review](https://github.com/UnigramDev/Unigram/tree/formatted-text-block-review) • [18269b1](https://github.com/UnigramDev/Unigram/commit/18269b12de5ecdf47074e1e110fac4eff11ae7a9) • _3 files, +92/-55_
Say what these actually are

Spoilers build a Span and called it hyperlink, twice; UpdateSpoilers iterated
TextStyleSpoiler structs as hyperlink; RelativeDateService took a TextStyleRun
called Yolo through three signatures.

The two foreground property handlers were the same five lines under different
names - neither of which described what they do, which is recolour the links
still carrying the outgoing brush.

OnApplyTemplate drops _blocks once it has handed the XAML-declared Paragraphs to
the RichTextBlock, so re-templating cannot try to re-parent them, and skips a
non-Paragraph entry instead of adding null.

The Selectable header claimed an inline object counts as one unit in highlighter
space. It counts zero - the ZWNJ emitted next to it is the unit - which is what
WalkInlines does and what the index map assumes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

[UnigramDev/Unigram/formatted-text-block-review](https://github.com/UnigramDev/Unigram/tree/formatted-text-block-review) • [efffd55](https://github.com/UnigramDev/Unigram/commit/efffd557eeeed296562d901808b73fb810564e8c) • _2 files, +16/-2_
Offset the query highlight by the host content in inline mode

An inline-mode block renders into a Span the host owns, behind whatever it put
in front - a sender name in a chat cell - while TextHighlighter indices count
from the start of the RichTextBlock. The spoiler ranges correct for that; the
query highlight did not, so it would have landed short by the length of the
prefix.

Would have, because nothing gives an inline-mode block a query today: the only
live query is MessageBubble's, and that goes to MessageTextBlock. This is right
by symmetry with the spoiler branch rather than by observation.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

[UnigramDev/Unigram/formatted-text-block-review](https://github.com/UnigramDev/Unigram/tree/formatted-text-block-review) • [6d3a3e5](https://github.com/UnigramDev/Unigram/commit/6d3a3e5210f41d35d950497223db2cc64022715b) • _1 files, +48/-2_
Say why the five open items are open

Each of the remaining items is a decision rather than a patch, so the entry now
carries what I found while working through the rest: SetFontSize runs into the
undecided quote sizing question the TODO at :1127 already flags, the non-pooled
teardown has two fixes that each cost something real, and the last two want a
profiler and the layout cycle audit respectively.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

[#unigram](?q=%23unigram)