Telegram-iOS/submodules/InstantPageUI/Sources
isaac 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
..
InstantImageGalleryItem.swift Postbox -> TelegramEngine waves 46-93 (squashed) 2026-04-25 20:48:15 +04:00
InstantPageAnchorItem.swift Local instant view 2024-08-29 11:44:05 +04:00
InstantPageArticleItem.swift Local instant view 2024-08-29 11:44:05 +04:00
InstantPageArticleNode.swift Refactoring [skip ci] 2023-04-19 23:47:38 +04:00
InstantPageAudioItem.swift Local instant view 2024-08-29 11:44:05 +04:00
InstantPageAudioNode.swift Refactoring [skip ci] 2023-04-19 23:47:38 +04:00
InstantPageChecklistMarkerItem.swift Various improvements 2026-04-25 17:32:26 +02:00
InstantPageContentNode.swift Various improvements 2026-04-22 23:03:51 +02:00
InstantPageController.swift Postbox refactor waves 138–276: 168-commit squash 2026-05-05 00:44:27 +02:00
InstantPageControllerNode.swift InstantPage V2: media rendering (image / video / map / cover) 2026-05-20 00:33:28 +08:00
InstantPageDetailsItem.swift Local instant view 2024-08-29 11:44:05 +04:00
InstantPageDetailsNode.swift Local instant view 2024-08-29 11:44:05 +04:00
InstantPageExternalMediaResource.swift Postbox refactor waves 278-356: squash 2026-05-05 14:11:06 +02:00
InstantPageFeedbackItem.swift Local instant view 2024-08-29 11:44:05 +04:00
InstantPageFeedbackNode.swift Temp 2024-11-27 17:37:21 +04:00
InstantPageFormulaItem.swift Markdown improvements 2026-04-27 18:45:30 +02:00
InstantPageGalleryController.swift Postbox refactor waves 138–276: 168-commit squash 2026-05-05 00:44:27 +02:00
InstantPageGalleryFooterContentNode.swift Postbox -> TelegramEngine wave 6: unused import Postbox batch sweep 2026-04-19 23:46:13 +02:00
InstantPageImageItem.swift InstantPage V2: media rendering (image / video / map / cover) 2026-05-20 00:33:28 +08:00
InstantPageImageNode.swift InstantPage V2: media rendering (image / video / map / cover) 2026-05-20 00:33:28 +08:00
InstantPageItem.swift Local instant view 2024-08-29 11:44:05 +04:00
InstantPageLayout.swift InstantPage list checkboxes (task-list style): parse, serialize, render 2026-05-27 16:44:47 +02:00
InstantPageLayoutSpacings.swift Adjust layout 2026-05-26 23:22:50 +02:00
InstantPageLinkSelectionView.swift Refactor InstantPageUI and related modules 2019-08-12 21:15:45 +03:00
InstantPageMath.swift InstantPage V2: formula display 2026-05-20 00:33:18 +08:00
InstantPageMedia.swift Various improvements 2026-04-22 23:03:51 +02:00
InstantPageMediaOpen.swift InstantPage V2: media rendering (image / video / map / cover) 2026-05-20 00:33:28 +08:00
InstantPageMediaPlaylist.swift [WIP] Dynamic video streaming 2024-09-18 01:04:29 +08:00
InstantPageMultiTextAdapter.swift Rich-bubble text selection (post-V2 fix) 2026-05-20 00:33:47 +08:00
InstantPageNavigationBar.swift Accessibility improvements 2023-02-06 19:58:06 +04:00
InstantPageNode.swift Various improvements 2026-04-22 23:03:51 +02:00
InstantPagePeerReferenceItem.swift Local instant view 2024-08-29 11:44:05 +04:00
InstantPagePeerReferenceNode.swift Temp 2024-11-27 17:37:21 +04:00
InstantPagePlayableVideoItem.swift Local instant view 2024-08-29 11:44:05 +04:00
InstantPagePlayableVideoNode.swift Postbox -> TelegramEngine waves 46-93 (squashed) 2026-04-25 20:48:15 +04:00
InstantPageReferenceController.swift Various improvements 2025-02-25 14:46:07 +00:00
InstantPageReferenceControllerNode.swift Refactoring 2026-04-03 15:50:39 +08:00
InstantPageRenderer.swift InstantPage list checkboxes (task-list style): parse, serialize, render 2026-05-27 16:44:47 +02:00
InstantPageScrollableNode.swift Web app improvements 2024-07-02 21:03:22 +04:00
InstantPageSettingsBacklightItemNode.swift Various settings UI improvements 2021-10-25 19:16:03 +04:00
InstantPageSettingsButtonItemNode.swift Refactor InstantPageUI and related modules 2019-08-12 21:15:45 +03:00
InstantPageSettingsFontFamilyItemNode.swift Refactor InstantPageUI and related modules 2019-08-12 21:15:45 +03:00
InstantPageSettingsFontSizeItemNode.swift Various settings UI improvements 2021-10-25 19:16:03 +04:00
InstantPageSettingsItemNode.swift Refactor InstantPageUI and related modules 2019-08-12 21:15:45 +03:00
InstantPageSettingsItemTheme.swift Temp 2025-09-12 10:54:22 +02:00
InstantPageSettingsNode.swift Refactoring [skip ci] 2023-04-19 23:47:38 +04:00
InstantPageSettingsSwitchItemNode.swift Refactor InstantPageUI and related modules 2019-08-12 21:15:45 +03:00
InstantPageSettingsThemeItemNode.swift Temp 2025-09-12 10:54:22 +02:00
InstantPageShapeItem.swift Local instant view 2024-08-29 11:44:05 +04:00
InstantPageSlideshowItem.swift Various improvements 2026-04-22 23:03:51 +02:00
InstantPageSlideshowItemNode.swift Various improvements 2026-04-22 23:03:51 +02:00
InstantPageStoredState.swift Refactoring [skip ci] 2023-04-19 23:47:38 +04:00
InstantPageSubContentNode.swift Various improvements 2026-04-22 23:03:51 +02:00
InstantPageTableItem.swift InstantPage tables: stroke all borders in one path 2026-05-02 10:58:18 +02:00
InstantPageTextItem.swift RichText.textSpoiler: dust overlay + tap-to-reveal in rich-data bubbles 2026-05-23 22:12:47 +04:00
InstantPageTextSelectionNode.swift Context menu pagination 2023-10-24 12:59:28 +04:00
InstantPageTextStyleStack.swift Rich bubble: scrollToAnchor + getAnchorRect 2026-05-02 00:36:34 +02:00
InstantPageTheme.swift Rich bubble: scrollToAnchor + getAnchorRect 2026-05-02 00:36:34 +02:00
InstantPageTile.swift Make instant view classes public for browser ui integration 2023-03-17 23:56:15 +04:00
InstantPageTileNode.swift Various improvements 2026-04-28 19:00:04 +04:00
InstantPageV2Layout.swift InstantPage list checkboxes (task-list style): parse, serialize, render 2026-05-27 16:44:47 +02:00
InstantPageV2MediaViews.swift InstantPage V2: media rendering (image / video / map / cover) 2026-05-20 00:33:28 +08:00
InstantPageV2RevealCost.swift RichText.textCustomEmoji: inline animated custom emoji in rich-data bubbles 2026-05-23 22:12:47 +04:00
InstantPageWebEmbedItem.swift Local instant view 2024-08-29 11:44:05 +04:00
InstantPageWebEmbedNode.swift Refactor SyncCore back into TelegramCore 2021-07-21 21:43:20 +02:00