Telegram github commits and releases
4.55K subscribers
601 files
20.3K links
Broadcast from the most important Telegram clients' repositories
Download Telegram
UnigramDev/Unigram/develop53f18ac1 files, +13/-2
Take the video list down with the pinned cell it belongs to

The list exists to hold the videos the pinned cell covers, so when that cell goes
away the grid lays them out again while the list still holds them, and every
remaining participant shows up twice. Clearing the pin was not enough: nothing
tore the list down, and the participant rows stayed hidden with it.

LoadVideoInfo replays every participant, which could put the pinned endpoint in
the list the same way.

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

UnigramDev/Unigram/developbf724171 files, +67/-14
Pin a shared screen without being asked to

A screen share takes the pinned slot as it arrives, and again if the pinned cell
goes away while another one is running. One automatic pin replaces another, but a
cell the user pinned themselves is never taken over.

Selecting a cell moves out of the click handler, since both paths need it. The
only difference is that an automatic pin does not scroll the compact list to the
top, which would move it under whoever is reading it.

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

UnigramDev/Unigram/develop49d97ae1 files, +8/-0
Let a new back gesture take the chip from a burst still playing

The burst animates the chip's opacity to zero, and a property under a running
animation ignores direct writes, so the next gesture's reset was dropped and the
burst left the chip hidden for the whole of it - while the tracker carried the
gesture through to the navigation regardless.

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

#unigram
UnigramDev/Unigram/playback-shufflee6346dd3 files, +215/-36
Implement shuffle

The button existed in two places and set IsReversed, since shuffle itself
was never written. It now walks a fixed shuffled order, so Previous goes
back to what was actually heard, and pages loaded later are folded into
the part not yet played.

Paging is measured against the playlist rather than the order being
walked, which shuffle reaches the ends of in no particular order.

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

#unigram
telegramdesktop/tdesktop/nightly565c0765 files, +2/-67
Removed protobuf dependency from cld3 and build recipes.

#tdesktop
🫡3
telegramdesktop/tdesktop/nightlyaf5bb1b1 files, +2/-0
Enabled LTO in Release configuration on Windows CI.

#tdesktop
🫡3
telegramdesktop/tdesktop/nightly37b4ed41 files, +24/-11
Switched macOS CI to Release build with LTO on nightly.

#tdesktop
🫡3
UnigramDev/Unigram/developffdc0815 files, +31/-23
Update emoji to Unicode 17.0

UnigramDev/Unigram/develop37b0fc41 files, +0/-0
Trim emoji font size

UnigramDev/Unigram/develop6b4b9cd1 files, +3/-3
Fix shift when sending a message after many unread messages

UnigramDev/Unigram/develop761ab7b1 files, +1/-0
Clear children before add

#unigram
UnigramDev/Unigram/record-start-on-press51b52ea1 files, +19/-0
Note the sixty-second pause and message drafts as todo

The official apps stop at sixty seconds and show the pause UI rather than
sending, which 4.3 does not, and they keep an unsent recording as a draft,
which Unigram has no notion of.

UnigramDev/Unigram/record-start-on-press08898401 files, +4/-0
Note that the sixty-second stop cannot be resumed from

The limit reuses the pause UI, but a video message gets no more time, so the
pause button has to go rather than offer its resume glyph.

UnigramDev/Unigram/record-start-on-presse8922151 files, +3/-10
Drop two flags the timer and the session already answer for

_recordAudioVideoRunnableStarted said what _timer.IsEnabled says, and
_calledRecordRunnable was only ever read where a recording exists, which the
session knows.

UnigramDev/Unigram/record-start-on-press4da45571 files, +8/-1
Don't record for a press that was let go while rights were checked

The check is awaited between the press and the timer, so a release during it
left the press running: the timer started with no pointer down, and a recording
began three hundred milliseconds later that nobody was holding.

UnigramDev/Unigram/record-start-on-press3069c661 files, +21/-4
Close off opening the device on the press

Warming the device up under the hold timer works, but it marks the microphone
and the camera as accessed for a tap that only switches mode, and lights the
privacy LED on hardware that has one. Written down so it isn't tried again.

#unigram
UnigramDev/Unigram/developcf37ec81 files, +19/-0
Note the sixty-second pause and message drafts as todo

The official apps stop at sixty seconds and show the pause UI rather than
sending, which 4.3 does not, and they keep an unsent recording as a draft,
which Unigram has no notion of.

UnigramDev/Unigram/develop134180d1 files, +4/-0
Note that the sixty-second stop cannot be resumed from

The limit reuses the pause UI, but a video message gets no more time, so the
pause button has to go rather than offer its resume glyph.

UnigramDev/Unigram/develope71214d1 files, +3/-10
Drop two flags the timer and the session already answer for

_recordAudioVideoRunnableStarted said what _timer.IsEnabled says, and
_calledRecordRunnable was only ever read where a recording exists, which the
session knows.

UnigramDev/Unigram/develop57630df1 files, +8/-1
Don't record for a press that was let go while rights were checked

The check is awaited between the press and the timer, so a release during it
left the press running: the timer started with no pointer down, and a recording
began three hundred milliseconds later that nobody was holding.

UnigramDev/Unigram/develop86ad43f1 files, +21/-4
Close off opening the device on the press

Warming the device up under the hold timer works, but it marks the microphone
and the camera as accessed for a tap that only switches mode, and lights the
privacy LED on hardware that has one. Written down so it isn't tried again.

#unigram
telegramdesktop/tdesktop/nightly74da0c31 files, +30/-1
Enabled LTO in Release configuration on Windows CI.

telegramdesktop/tdesktop/nightlyf7c73861 files, +24/-11
Switched macOS CI to Release build with LTO on nightly.

#tdesktop
🫡3
telegramdesktop/tdesktop/nightly9ac49701 files, +35/-1
Enabled LTO in Release configuration on Windows CI.

telegramdesktop/tdesktop/nightlyeb2a3dc1 files, +24/-11
Switched macOS CI to Release build with LTO on nightly.

#tdesktop
🫡3
telegramdesktop/tdesktop/nightly396ada11 files, +38/-1
Enabled LTO in Release configuration on Windows CI.

telegramdesktop/tdesktop/nightly6cda4dd1 files, +24/-11
Switched macOS CI to Release build with LTO on nightly.

#tdesktop
🫡3
telegramdesktop/tdesktop/nightly4f1f0f53 files, +138/-1
Added packing of Lottie animations into tgs at build time.

telegramdesktop/tdesktop/nightly567462e226 files, +1071/-112
Replaced animation tgs blobs with plain json sources.

#tdesktop
🫡2
UnigramDev/Unigram/developec0529b1 files, +0/-0
Fix space char in emoji font

UnigramDev/Unigram/developb9ed1af1 files, +4/-1
Normalize log tail

UnigramDev/Unigram/develop19143711 files, +18/-2
Log focus manager exceptions

UnigramDev/Unigram/develop7189e2b1 files, +16/-0
Try to park window focus before swapping content

UnigramDev/Unigram/develop9d605821 files, +4/-1
Enable bubble tails only in high performance mode

UnigramDev/Unigram/developc3cdae31 files, +1/-1
Don't ignore source ImageBrush

UnigramDev/Unigram/developa99cbaf31 files, +222/-87
Update TDLib

UnigramDev/Unigram/develop09074193 files, +11/-12
Update webrtc to the 2026-08-19 archives, built with Visual Studio 18

UnigramDev/Unigram/develop6fcff0b6 files, +29/-0
Split generators into two projects

UnigramDev/Unigram/develop6fb1c6210 files, +230/-64
Support message ephemeral content

UnigramDev/Unigram/developa2e5b966 files, +63/-6
Handle unsupported rich message blocks

UnigramDev/Unigram/developc2b02391 files, +24/-0
Store community full info

UnigramDev/Unigram/developa16508c1 files, +3/-0
Unsubscribe events on unlock

UnigramDev/Unigram/developdafbee51 files, +7/-3
Fix VideoAnimation getting stuck on read loop

UnigramDev/Unigram/develop0769a061 files, +6/-1
Capture RPC_E_WRONG_THREAD too

#unigram
UnigramDev/Unigram/developba5dbcb13 files, +1220/-43
Animate deleted messages coming apart

A frozen visual surface captures at the compositor commit that follows the
freeze, so the view's mirror holds a removal back for one frame to give it one.
The view model applies updateDeleteMessages unchanged.

IsInitial becomes AnimationState, which is also how the view tells a deletion
from a row leaving the list for any other reason. The renderer is a diagnostics
setting, off by default in the Store build.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

UnigramDev/Unigram/developc290b371 files, +8/-1
Try to fix null ref

UnigramDev/Unigram/develop24927ab1 files, +73/-9
Park focus asynchronously when swapping window content

Control.Focus answers before the focus pipeline has run, and reports success
even when a LosingFocus handler cancels the move underneath it. Focus stayed
on the passcode field, which was then detached with it, leaving the focus
manager pointing at an element XAML can no longer resolve a peer for.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

#unigram
UnigramDev/Unigram/developc3bf9374 files, +522/-14
Update notes, add changelog skill

#unigram
Ajaxy/telegram-tt/masterb70a9f33 files, +4/-4
12.0.40

Ajaxy/telegram-tt/master00b3e6c28 files, +627/-17
Profile: Add "Playlist" tab with saved music

Lists the music a peer has added to their profile, next to Posts and Gifts
and ahead of the shared media tabs. The tab is shown when `userFull` reports
saved music, so it costs no extra request.

Tracks come from `users.getSavedMusic` as bare documents, so they are played
inline through their own `savedMusic` track queue, which advances in listing
order. `TrackId` accepts document-based ids alongside message-based ones, and
file references are repaired via `users.getSavedMusicByID`.

Also keeps the current user's own playlist in step with "Add to Profile", so
toggling does not need a refetch.

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

Ajaxy/telegram-tt/mastera91fb872 files, +8/-1
Modals: Fix link overflow for modal windows (#7216)

Ajaxy/telegram-tt/mastera821d5d5 files, +47/-22
TLottie: Bump renderer (#7227)

Ajaxy/telegram-tt/master81fe0ff80 files, +4141/-1446
Emoji Picker: Add search (#7210)

Ajaxy/telegram-tt/master45424491 files, +5/-1
Round Video: Fix width (#7226)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

Ajaxy/telegram-tt/master8b63941144 files, +593/-569
[Build]

#webz
UnigramDev/Unigram/develop8b28e131 files, +28/-0
Note playing a paused recording back as todo

The paused bar draws a waveform with nothing to press, and neither the ogg nor
the mp4 is a finished file at the pause, so what gets played is the question the
task turns on.

#unigram
TGX-Android/Telegram-X/maindc7a0be110 files, +13/-3
Reduce non-latest APK size

TGX-Android/Telegram-X/main39e73611 files, +1/-1
Version bump to `1805`

#tgxandroid
🫡3
telegramdesktop/tdesktop/devd23928e3 files, +25/-4
Share the notification gate with the poll scheduler

Task: 2026/08/18/share-notification-gate-predicate-with-scheduler

telegramdesktop/tdesktop/dev3667c0e3 files, +34/-9
Attribute poll vote notifications to the voted message

Task: 2026/08/18/attribute-poll-vote-notifications-to-voted-message

telegramdesktop/tdesktop/dev449b2eb1 files, +28/-9
[ai] Digest retained task content from git, not the checkout

A consolidation alias sealed on one platform could never revalidate on
another, because the seal hashed working-tree bytes.

telegramdesktop/tdesktop/devde211ff2 files, +5/-2
Fix build on MSVC.

telegramdesktop/tdesktop/dev40043de1 files, +0/-10
Remove irrelevant helper info.

telegramdesktop/tdesktop/dev9c735411 files, +3/-0
Survive creating a window with none open

Task: 2026/08/15/survive-window-creation-with-an-empty-registry

telegramdesktop/tdesktop/dev8d657ca3 files, +25/-5
Clear a window's TouchBar when it is destroyed

Task: 2026/08/15/survive-last-primary-close-after-an-extra-window

telegramdesktop/tdesktop/dev56ff88e1 files, +13/-15
Guard delayed updateOnline on the window

Task: 2026/08/15/survive-last-primary-close-after-an-extra-window

telegramdesktop/tdesktop/dev02e51c12 files, +162/-5
[ai] Stage removed paths in workspace helper commits

Task: 2026/08/18/stage-removed-paths-in-helper-commits

telegramdesktop/tdesktop/devc3674542 files, +61/-1
[ai] Read non-ASCII paths literally in workspace scans

Task: 2026/08/18/read-non-ascii-paths-literally-in-change-scans

telegramdesktop/tdesktop/dev85a62492 files, +216/-18
[ai] Read helper paths literally, fix crash detection

Task: 2026/08/18/repair-helper-path-reads-and-linux-crash-diagnosis

telegramdesktop/tdesktop/dev4da95d21 files, +50/-37
Fixed macOS tray menu blocking whole application event loop.

#tdesktop
🫡2
telegramdesktop/tdesktop/devd4df9784 files, +45/-46
Moved settings section search row to shared helper.

telegramdesktop/tdesktop/dev4742c423 files, +44/-12
Switched experimental settings search to shared word matching.

telegramdesktop/tdesktop/devc392e531 files, +143/-9
Added quick search in keyboard shortcuts settings section.

telegramdesktop/tdesktop/devb85c8061 files, +1/-1
Fix new restricted WEB proxy on Windows.

telegramdesktop/tdesktop/devdf5d3af1 files, +1/-2
Drop the subsumed clip rect from the unique gift bg

Task: 2026/08/18/drop-subsumed-clip-rect-from-unique-gift-bg

telegramdesktop/tdesktop/dev08dfb4e1 files, +1/-1
Floor the stored sparse ids count at zero

Task: 2026/08/18/floor-stored-shared-media-count-at-zero

telegramdesktop/tdesktop/dev270d47b1 files, +2/-2
Compose the poll vote notification via the shared lookup

Task: 2026/08/18/read-vote-notification-poll-through-shared-lookup

telegramdesktop/tdesktop/devc7b19301 files, +1/-2
Read the unread poll vote's poll through the shared lookup

Task: 2026/08/18/read-unread-vote-poll-through-shared-lookup

telegramdesktop/tdesktop/dev38aec1e7 files, +12/-25
Fix build on Linux.

telegramdesktop/tdesktop/devb66e2742 files, +8/-7
Added pixel ratio as arg to credits graphics for stars image generation.

telegramdesktop/tdesktop/dev64d9d301 files, +13/-10
Removed outline passes from single star image generation.

telegramdesktop/tdesktop/dev7de7b312 files, +119/-59
Replaced subscription badge outline path with computed cut mask.

telegramdesktop/tdesktop/devaa7217d1 files, +4/-2
Added active state guard for corner badge frame rebuild in dialogs.

#tdesktop
🫡2
telegramdesktop/tdesktop/devde957d63 files, +32/-0
Added disabling of restore windows offer after three skips.

telegramdesktop/tdesktop/dev88f5a3a4 files, +57/-0
Added platform primitive for window screenshot protection.

telegramdesktop/tdesktop/dev390d0e15 files, +156/-0
Added screenshot protection reason registry to application.

telegramdesktop/tdesktop/dev6298b1b3 files, +27/-17
Extracted reactive check for peer allowing forwarding.

telegramdesktop/tdesktop/deva4cfb9f2 files, +14/-0
Added screenshot protection for chats forbidding forwarding.

telegramdesktop/tdesktop/dev4a969082 files, +27/-0
Added screenshot protection following media viewer content.

telegramdesktop/tdesktop/dev9fc67391 files, +5/-0
Added screenshot protection for one-time media player.

telegramdesktop/tdesktop/devd8f336d2 files, +9/-0
Added screenshot protection for payment checkout panel.

telegramdesktop/tdesktop/dev414b5625 files, +2/-67
Removed protobuf dependency from cld3 and build recipes.

telegramdesktop/tdesktop/dev0326af41 files, +71/-21
Reduced full size image copies per transcoded frame.

telegramdesktop/tdesktop/devd94501a1 files, +3/-0
Added premultiplication of alpha sources in video transcode.

telegramdesktop/tdesktop/dev9f234271 files, +36/-35
Reduced per pixel work in round video recorder overlay.

Related commit: b4120b156e.

telegramdesktop/tdesktop/deve185a1a2 files, +11/-5
Fixed rich paste toast offering editor with same formatting.

#tdesktop
🫡2