Commit Graph
19 Commits
Author SHA1 Message Date
isaacisaacClaude Opus 4.7
81e3be1923 InstantPage list checkboxes (task-list style): parse, serialize, render
Add a first-class `checked: Bool?` to InstantPageListItem (orthogonal to the
ordered-list `num`), replacing the prior sentinel-string-in-num prototype.

- Data model: enum third associated value on .text/.blocks; Postbox + a new
  FlatBuffers `checkState` tri-state field (0=nil,1=unchecked,2=checked,
  backward-compatible); Equatable.
- Transmission: read/write the native API `checkbox`=flags.0 / `checked`=flags.1
  bits on all four PageListItem / PageListOrderedItem constructors, so checkbox
  state survives the server round-trip for sender and recipients.
- Markdown: forward parser routes detected `[ ]`/`[x]` into `checked` (keeping
  the real number for ordered items); reverse converter emits `- [ ]`/`- [x]`
  so editing a rich message round-trips.
- Display: V1 + V2 layout detect via `item.checked`; the V2 renderer draws real
  CheckNode artwork (was a placeholder); preview text shows a checkbox glyph
  instead of leaking the old sentinel.

Spec: docs/superpowers/specs/2026-05-27-instantpage-list-checkbox-design.md
Plan: docs/superpowers/plans/2026-05-27-instantpage-list-checkbox.md

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 16:44:47 +02:00
isaacisaacClaude Opus 4.7
8b9f498d53 RichText.textSpoiler: dust overlay + tap-to-reveal in rich-data bubbles
Add the RichText.textSpoiler case end-to-end: model + Postbox coding,
FlatBuffers schema/codec, and Api.RichText parsing/serialization (lossless).
Display attaches the spoiler attribute, collects per-line spoiler rects in
the V2 layout, clips obscured glyphs and draws an energy-gated dust overlay
in the V2 text view, propagates the reveal flag across the nested V2 tree
(building dust for freshly-created text views), and wires tap-to-reveal
routing in the rich-data bubble.

Also seeds the streaming reveal cursor across chunk rebuilds and refines
status date positioning.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 22:12:47 +04:00
isaacisaacClaude Opus 4.7
99e4c41b24 RichText: entity cases (mention / hashtag / cashtag / bot command / bank card / auto link)
Implement the nine message-entity RichText cases (textMention,
textMentionName, textHashtag, textCashtag, textBotCommand, textBankCard,
textAutoUrl, textAutoEmail, textAutoPhone): model + Postbox coding,
FlatBuffers schema/codec, Api.RichText parsing/serialization (lossless),
InstantPage display attaching the matching TelegramTextAttributes keys, and
tap routing in the rich-data bubble mirroring ChatMessageTextBubbleContentNode.
mentionName display resolves via EnginePeer.Id (PeerId not in scope).

Also lets rich-data text selection reach a line's trailing edge and fixes
the date/status node positioning to match TextBubble.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 22:12:47 +04:00
isaacisaacClaude Opus 4.7
b48b96ecd9 RichText.textCustomEmoji: inline animated custom emoji in rich-data bubbles
Add the RichText.textCustomEmoji(fileId:alt:) case end-to-end: model +
Postbox coding, FlatBuffers schema/codec, and Api.RichText
parsing/serialization (lossless), plus display in the InstantPage V2
renderer. The emoji renders as an InlineStickerItemLayer that participates
in the streaming reveal (pops in as the reveal cursor crosses it) and is
gated by the bubble's visibility rect, propagated recursively through the
nested V2 view tree. Also frees the CTRunDelegate extent buffers for the
image/formula/custom-emoji attachment arms and documents the feature in
CLAUDE.md.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 22:12:47 +04:00
Ilya Laktyushin d574182374 Markdown improvements 2026-04-27 18:45:30 +02:00
Ilya Laktyushin f41630083a Various improvements 2026-04-24 03:16:14 +02:00
Ilya Laktyushin 713f557e64 Update API 2026-03-09 14:32:10 +01:00
Ilya Laktyushin a0e96582dd Update API [skip ci] 2025-09-19 12:20:21 +04:00
IsaacandIsaac 1d06c3f058 Bot forums v2 2025-09-05 15:25:50 +02:00
Ilya Laktyushin a60a437206 Various improvements 2025-08-22 21:46:07 +04:00
IsaacandIsaac 709d474929 Update API 2025-08-08 13:24:44 +02:00
IsaacandIsaac 735b497a23 New address book implementation
(cherry picked from commit a16a3c3936)
2025-07-09 17:47:33 +04:00
IsaacandIsaac 3ed857bfc3 Various improvements 2025-06-29 18:15:50 +02:00
IsaacandIsaac b752a49432 Update API 2025-05-15 00:54:50 +08:00
IsaacandIsaac faa765b601 Various optimizations 2025-03-04 14:13:07 +01:00
IsaacandIsaac c37cc451ec Merge commit 'eecb2ef5c088434f55d4e29a47349681904c828d'
# Conflicts:
#	submodules/TelegramCore/Sources/SyncCore/SyncCore_TelegramUser.swift
2025-02-21 16:47:32 +01:00
IsaacandIsaac da48b145e9 Various improvements 2025-02-21 16:17:15 +01:00
IsaacandIsaac 8918f70173 [WIP] Serialization 2025-02-13 22:32:59 +04:00
IsaacandIsaac a4717b7906 [WIP] Conference 2025-01-21 11:04:37 +04:00