156 Commits
Author SHA1 Message Date
isaacandClaude Opus 4.8 0050cc7a08 Rich-message media in gallery/shared-media/preview pipelines via Message.effectiveMedia
Add Message/EngineMessage.effectiveMedia (= message.media when non-empty, else
richText.instantPage.allMedia()) and route the media-consuming sites through it
so a rich message's instant-page media participates in the same pipelines as
normal message.media: shared-media grids/file-rows, search media grid, gallery
open + item nodes + footer, the peer audio/voice playlist, secret-media preview,
resource-by-id resolution, recent downloads, downloaded-media store, delete-time
resource cleanup, cache-usage stats, the in-chat download manager, and the
context-menu / share actions (Save to Camera Roll, copy image, save audio/music
to files). For normal messages effectiveMedia == message.media, so each swap is
behavior-preserving; rich messages render their own bubble via
ChatMessageRichDataBubbleContentNode (not the text/file bubbles), so those paths
are deliberately untouched, as are the forward path (the attribute travels with
the forward) and the markdown-based rich-edit path. First-media scope for now.

See docs/instantpage-richtext.md for the full architecture + invariants.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 23:46:56 +02:00
isaac 13a153aff2 WIP 2026-05-20 00:33:08 +08:00
isaacandClaude Opus 4.7 e918b353ec Postbox refactor waves 278-356: squash
Squashes 79 sequential refactor waves into a single commit.

Highlights:
- Drop `import Postbox` (and matching `//submodules/Postbox` BUILD deps) from a wide swath of consumer files: ChatList, ChatMessage*BubbleContentNode subclasses, ListMessageNode/ListMessageItem, GalleryData, ChatHistorySearchContainerNode, ChatPanelInterfaceInteraction, ChatControllerInteraction, ChatMessageStickerItemNode, ChatMessageReplyInfoNode, ChatMessageInstantVideoItemNode, ChatPresentationInterfaceState, BrowserMarkdown/Readability, MediaResources, LocalMediaResources, ICloudResources, FetchManager, ShareController, OpenChatMessage, GalleryController, GroupStickerSearchContainerNode, GroupStickerPackCurrentItem, ChatPinnedMessageTitlePanelNode, OverlayAudioPlayerController, PresentationThemeSettings, StatisticsUI/StoryIconNode, TextFormat/StringWithAppliedEntities, GalleryUI/VideoAdComponent, StickerPackPreviewUI, WallpaperPreviewMedia, WallpaperResources, YoutubeEmbedImplementation, InstantPageExternalMediaResource, PlatformRestrictionMatching, TelegramUIDeclareEncodables, ChatListNode/ChatListSearchContainerNode.
- Add `TelegramEngine` facades: `Themes.wallpapers`, `Themes.themes`, `AccountData.addAppLogEvent`.
- Add `EngineMessageHistoryEntryLocation` wrapper.
- Add `EngineRaw*` escape-hatch typealiases (`EngineRawMessage`, `EngineRawPeer`, `EngineRawMedia`, `EngineRawMediaResource`, `EngineRawMediaResourceData`, `EngineRawItemCollectionItem`, `EngineRawItemCollectionInfo`) and `engineDeclareEncodable` forwarder.
- Drop unused `account:`/`postbox:`/`network:` parameters from several public functions and delete the dead overloads/types/functions left over: `automaticThemeShouldSwitchNow`, `cancelFreeMediaFileInteractiveFetch`, `legacyEnqueueVideoMessage`, `TelegramMediaFileReference`, plus assorted dead public TelegramCore/AccountContext SecureId entry points.
- Delete entire dead modules: `LegacyDataImport`, `TonBinding`, `SpotlightSupport`, `SvgRendering`, third-party `AppCenter`/`VectorPlus`/`SwiftColor`/`SwiftSVG`.
- Drop orphan `//submodules/Postbox` BUILD deps across 3 cleanup rounds.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 14:11:06 +02:00
Ilya Laktyushin 73d25e7be3 Various improvements 2026-04-28 14:31:17 +02:00
isaacandClaude Opus 4.7 d1aa0db537 Postbox -> TelegramEngine waves 46-93 (squashed)
Squash of 63 commits spanning waves 46-93 (plus interspersed docs commits)
of the gradual Postbox->TelegramEngine consumer-side migration.

Scope: 139 files changed, 2123 insertions(+), 452 deletions(-).

## Themes by wave-block

**Waves 46-58 — Peer field migrations + facade additions**
Foundational EnginePeer convenience init additions (PeerReference, RenderedPeer,
SelectivePrivacyPeer). Multiple `peer: Peer` field migrations across PeerInfo,
ChatList, and SettingsUI components.

**Waves 59-73 — peer field cascade + EnginePeer wrap drops**
Series of single- to two-file peer-field migrations; consumer-side wrap
removal (`EnginePeer(peer)` -> direct EnginePeer use); `as? TelegramUser`
cast conversion to `case let .user(...)` enum match. Wave 64: RenderedPeer
convenience init. Wave 68: SelectivePrivacyPeer convenience init.

**Waves 74-83 — controller-Node bridge cleanup + small migrations**
Wave-71 shadow-pattern cleanup at controller->Node bridges. Migrations of
ChatRecentActionsController.peer (74), PeerInfoMember (75), MentionChatInputPanelItem
(76), PassportUI SecureIdAuthController (77), AccountWithInfo + ShareController
(78), peerInputActivitiesPromise (79), InactiveChannel (80), BlockedPeers (81),
openHashtag resolveSignal (82), NotificationExceptionsList (83).

**Waves 84-90 — TelegramEngine.Resources facade migrations**
Per-method Shape-A/B sweeps converting `<ctx>.account.postbox.mediaBox.X(...)`
to `<ctx>.engine.resources.X(...)`. Wave 90 was a single-commit big sweep:
40 fetchedMediaResource sites in 25 files migrated to engine.resources.fetch
facade in one atomic pass with first-pass-clean build.

Methods covered: storeResourceData, completedResourcePath, cancelInteractiveResourceFetch,
resourceRangesStatus, resourceStatus, fetch (fetchedMediaResource).

**Waves 91-92 — additional type migrations**
Wave 91: ItemListWebsiteItem.peer + RecentSessionsController enum-case payload
+ openWebSession callback Peer? -> EnginePeer?.
Wave 92: ChatListController StateHolder.EntryContext status type
MediaResourceStatus -> EngineMediaResource.FetchStatus.

**Wave 93 — speculative `import Postbox` drop sweep**
Drop import from 7 wave-touched files where it became unused; restore in 5
files where bare PeerId/Message/MediaId/StoryId references escaped the
pre-flight regex. Includes one MediaId(...) -> EngineMedia.Id(...) swap in
InAppPurchaseManager to unlock its import drop.

## Build state

Final state at squash: clean Telegram/Telegram build at debug_sim_arm64.

## Persistent-state notes

- Pre-existing WIP unchanged across the squashed range:
  - build-system/bazel-rules/sourcekit-bazel-bsp submodule marker
  - Untracked: build-system/tulsi/, submodules/TgVoip/, third-party/libx264/

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 20:48:15 +04:00
isaacandClaude Opus 4.7 493f3103b3 Postbox -> TelegramEngine waves 37-43 + wave 44 design/plan (squashed)
Squashes 20 commits — the implementation and outcome commits of
waves 37 through 43 plus wave 44's spec and implementation-plan
docs — into a single commit. Per-wave lessons remain recorded in
docs/superpowers/postbox-refactor-log.md. The unrelated "Add swift
svg" commit is preserved separately outside this squash.

Wave 37 — peerTokenTitle: peer Peer → EnginePeer (1 file)
Wave 38 — canSendMessagesToPeer: peer Peer → EnginePeer (12 files)
Wave 39 — AccountContext.makePeerInfoController: peer Peer → EnginePeer (52 files)
Wave 40 — makeChatQrCodeScreen + makeChatRecentActionsController bundle (8 files)
Wave 41 — RenderedChannelParticipant.peer: Peer → EnginePeer (28 files)
Wave 42 — PeerInfoScreenData.peer: Peer? → EnginePeer? (17 files)
Wave 43 — PeerInfoScreen 6 helpers: peer Peer? → EnginePeer? (12 files)
Wave 44 — RenderedChannelParticipant.peers design doc + implementation plan
         (impl and outcome land in subsequent commits, not part of squash)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 23:19:43 +04:00
Ilya Laktyushin 0df319742a Update API 2026-04-16 01:18:22 +02:00
Isaac 72fbe5d7a7 Various improvements 2026-03-13 14:54:44 +01:00
Isaac efb828e61b Metrics 2026-03-10 11:54:23 +01:00
IsaacandClaude Opus 4.5 d2cf720e0a Refactor constructor use sites for types 180-189 to struct pattern
Refactored constructors:
- JSON types: jsonObjectValue, jsonArray, jsonBool, jsonNumber, jsonObject, jsonString
- Invoice types: invoice, labeledPrice
- Keyboard button types: keyboardButton, keyboardButtonCallback, keyboardButtonUrl, etc.
- Lang pack types: langPackDifference, langPackString, langPackStringPluralized, langPackStringDeleted, langPackLanguage
- Input web file types: inputWebFileLocation, inputWebFileAudioAlbumThumbLocation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 22:27:04 +08:00
Ilya Laktyushin 85f8bde398 Various fixes 2025-09-25 23:19:21 +04:00
Ilya Laktyushin 934ed73331 Fix build 2025-09-25 15:37:49 +04:00
Mikhail Filimonov 526ad333f0 Merge branch 'master' of gitlab.com:peter-iakovlev/telegram-ios 2025-09-19 12:26:46 +04:00
Ilya Laktyushin a0e96582dd Update API [skip ci] 2025-09-19 12:20:21 +04:00
Mikhail Filimonov 96f2740607 small fix 2025-09-18 12:02:43 +04:00
Isaac 1d06c3f058 Bot forums v2 2025-09-05 15:25:50 +02:00
Isaac ee749050f0 Bot forums 2025-08-19 17:24:33 +02:00
Isaac 8843fbe5cb Support typing drafts 2025-08-15 09:18:11 +02:00
Isaac 7512f7f017 Cleanup 2025-06-28 13:14:15 +02:00
Isaac 2ca01d18eb Fix monoforum search 2025-06-05 19:59:04 +08:00
Mikhail Filimonov 7fe9ce7321 - additional method 2025-05-28 12:49:27 +01:00
Mikhail Filimonov f0ceabd6f7 monoforums 2025-05-20 16:43:39 +01:00
Mikhail Filimonov 7afac7e0e9 -bugfixes 2025-05-19 09:55:09 +01:00
Isaac 1a56afcb48 [WIP] Monoforums 2025-05-16 01:02:25 +08:00
Isaac 0e119dd6f1 [WIP] Monoforums 2025-05-08 20:56:55 +01:00
Ilya Laktyushin c9c4d78e30 Various fixes 2025-05-02 00:45:42 +04:00
Isaac 2739a839ed Fix flatbuffers serialization 2025-03-25 12:36:31 +01:00
Isaac 7e2c6da812 FlatBuffers implementation debugging 2025-03-19 18:56:39 +01:00
Isaac 383ab9e479 Various improvements 2025-03-07 17:52:50 +01:00
Isaac faa765b601 Various optimizations 2025-03-04 14:13:07 +01:00
Isaac 1fb93ab298 Various improvements 2025-02-25 14:46:07 +00:00
Isaac c37cc451ec Merge commit 'eecb2ef5c088434f55d4e29a47349681904c828d'
# Conflicts:
#	submodules/TelegramCore/Sources/SyncCore/SyncCore_TelegramUser.swift
2025-02-21 16:47:32 +01:00
Isaac da48b145e9 Various improvements 2025-02-21 16:17:15 +01:00
Ilya Laktyushin 4f42e41180 Update API [skip ci] 2025-02-21 17:23:25 +04:00
Mikhail Filimonov 39e8c7bb2e macos and other stuff 2025-02-17 12:41:04 +02:00
Ilya Laktyushin c5b39cfefe Update API [skip ci] 2025-01-16 18:29:00 +04:00
Mikhail Filimonov 0794a1cdb9 Merge branch 'master' of gitlab.com:peter-iakovlev/telegram-ios
# Conflicts:
#	submodules/MediaPlayer/Sources/FFMpegFileReader.swift
2025-01-16 11:30:14 +01:00
Ilya Laktyushin 6e850130fd Update API [skip ci] 2024-12-26 07:27:14 +04:00
Ilya Laktyushin 26ff9da7d1 Update API [skip ci] 2024-12-19 16:12:17 +04:00
Ilya Laktyushin fdb4b80e27 Various improvements 2024-12-06 09:31:49 +04:00
Ilya Laktyushin 37c91f89c5 Various improvements 2024-11-07 16:32:33 +01:00
Isaac caf10fe889 Various improvements 2024-10-25 11:24:06 +02:00
Ilya Laktyushin 5a8506c3a4 Fix build 2024-09-20 18:52:28 +04:00
Ilya Laktyushin 987befccc4 Ads and codes improvements 2024-09-19 17:47:49 +04:00
Isaac 923587b0da [WIP] Dynamic video streaming 2024-09-18 01:04:29 +08:00
Isaac 7313e25029 Merge commit '5d9d794f159b6056ba49c819aabe0322e5598be2' 2024-08-12 22:34:43 +08:00
Isaac ce0e2ba62d Send as improvements 2024-08-12 22:34:30 +08:00
Ilya Laktyushin 9adbb61a02 Update API 2024-08-12 12:20:41 +02:00
Ilya Laktyushin 83c7fdd228 Various improvements 2024-08-11 06:32:41 +02:00
Isaac 6e13876636 Star reactions 2024-08-09 16:55:53 +04:00