Telegram github commits and releases
4.55K subscribers
601 files
20.3K links
Broadcast from the most important Telegram clients' repositories
Download Telegram
telegramdesktop/tdesktop/public-canary7cc09792 files, +821/-0
Add focused tests for v2 update verification

telegramdesktop/tdesktop/public-canary1b740e31 files, +862/-0
Add canary build and publish workflow

telegramdesktop/tdesktop/public-canary30ebc871 files, +186/-163
Build one canary lane per repository in CI

telegramdesktop/tdesktop/public-canarybc3526f3 files, +31/-13
Use readable v2 update file names

telegramdesktop/tdesktop/public-canary31f96ca4 files, +117/-8
Use new update names and pinned Bot API image in CI

telegramdesktop/tdesktop/public-canary46bc5df3 files, +108/-62
Ship per-arch mac updates with a universal installer

telegramdesktop/tdesktop/public-canary4317bc51 files, +70/-28
Publish portable archives as canary first installs

telegramdesktop/tdesktop/public-canary3c9acb91 files, +5/-4
Drop the bundled d3d compiler from canary builds

telegramdesktop/tdesktop/public-canary9bd400c3 files, +41/-4
Embed external and local signatures in one packer pass

telegramdesktop/tdesktop/public-canarycff50c22 files, +82/-3
Add a v2 update switch to the release build scripts

telegramdesktop/tdesktop/public-canary4b877181 files, +29/-1
Read the pinned metadata through the local Bot API

telegramdesktop/tdesktop/public-canary1b4d58f3 files, +25/-1
Support v2 updates in the updater and deploy scripts

telegramdesktop/tdesktop/public-canary9c32fc423 files, +872/-216
Harden canary builds running.

#tdesktop
🫡2
telegramdesktop/tdesktop/public-canary0a569a74 files, +20/-10
Fix build for Release.

telegramdesktop/tdesktop/public-canary677e0912 files, +68/-21
Try to fix signing.

telegramdesktop/tdesktop/public-canaryc75055b1 files, +77/-5
Improve caching.

telegramdesktop/tdesktop/public-canary6f6f9c81 files, +17/-5
Try to fix signing again.

telegramdesktop/tdesktop/public-canary3d4d66e10 files, +598/-311
New names, separate publishing.

telegramdesktop/tdesktop/public-canaryc98a1037 files, +255/-6
Fix translocated launch on macOS.

telegramdesktop/tdesktop/public-canaryb10cfc24 files, +32/-14
Improve version display for canary.

telegramdesktop/tdesktop/public-canary6b7baed1 files, +141/-40
Split macOS canary build into per-arch jobs.

telegramdesktop/tdesktop/public-canary715f7a77 files, +198/-3
Add an in-title CANARY/PRIVATE marking.

telegramdesktop/tdesktop/public-canary9461c9b6 files, +42/-24
Rename canary branches.

telegramdesktop/tdesktop/public-canary24a67421 files, +3/-0
Fixed per-arch build picking universal crashpad handler.

telegramdesktop/tdesktop/public-canary6b349d71 files, +11/-4
Keep TelegramForcePortable in portable archives.

telegramdesktop/tdesktop/public-canaryf1826dd1 files, +11/-11
Allow CANARY_ALLOW_UNSIGNED in public lane too.

#tdesktop
🫡3
telegramdesktop/tdesktop/public-canary31d3ca01 files, +38/-3
Try workaround clone problems.

telegramdesktop/tdesktop/public-canary024b4a71 files, +25/-19
Fix build with GCC.

telegramdesktop/tdesktop/public-canaryec001e02 files, +36/-19
Fix public publishing.

telegramdesktop/tdesktop/public-canarya09321e1 files, +6/-6
Keep canary artifacts for seven days

telegramdesktop/tdesktop/public-canary24fcf5a1 files, +29/-1
Fixed missing ATL breaking breakpad build in canary Windows job.

telegramdesktop/tdesktop/public-canary3c6f1561 files, +50/-20
Install ATL for the pinned Windows toolset

telegramdesktop/tdesktop/public-canary2238be31 files, +10/-1
Fallback to v1 update unpacking.

#tdesktop
🫡3
UnigramDev/Unigram/develop0b777f02 files, +64/-15
Improve generators

UnigramDev/Unigram/develop7765a4e1 files, +2/-2
Dispatch Suspend/Resume

UnigramDev/Unigram/develop53f4caa1 files, +73/-0
Saved messages chats accessibility

UnigramDev/Unigram/develop9df968b2 files, +12/-5
Register more collections for export

UnigramDev/Unigram/developf40f64e1 files, +1/-1
Bump version to 12.10.1

#unigram
telegramdesktop/tdesktop/public-canary1f87f092 files, +1261/-0
[ai] Add crash report triage command

telegramdesktop/tdesktop/public-canarya088e884 files, +7/-0
Add public keys for canary channel.

telegramdesktop/tdesktop/public-canaryd5863c29 files, +1279/-0
Add v2 update verification core and build channels

telegramdesktop/tdesktop/public-canarybf920163 files, +672/-0
Support v2 channel packing in the Packer

telegramdesktop/tdesktop/public-canaryff8e9f17 files, +662/-141
Verify, fetch and install v2 updates in the client

telegramdesktop/tdesktop/public-canary3b6fb842 files, +9/-1
Show canary version and skip changelogs on canary

telegramdesktop/tdesktop/public-canarydeddc012 files, +821/-0
Add focused tests for v2 update verification

telegramdesktop/tdesktop/public-canarydc2d3ba1 files, +862/-0
Add canary build and publish workflow

telegramdesktop/tdesktop/public-canaryb0c52fd1 files, +186/-163
Build one canary lane per repository in CI

telegramdesktop/tdesktop/public-canaryc5220f63 files, +31/-13
Use readable v2 update file names

telegramdesktop/tdesktop/public-canary89a63a24 files, +117/-8
Use new update names and pinned Bot API image in CI

telegramdesktop/tdesktop/public-canaryeb815183 files, +108/-62
Ship per-arch mac updates with a universal installer

telegramdesktop/tdesktop/public-canaryc61708f1 files, +70/-28
Publish portable archives as canary first installs

#tdesktop
🫡3
telegramdesktop/tdesktop/public-canarybcce4521 files, +5/-4
Drop the bundled d3d compiler from canary builds

telegramdesktop/tdesktop/public-canary357fa4b3 files, +41/-4
Embed external and local signatures in one packer pass

telegramdesktop/tdesktop/public-canaryd7d2ea12 files, +82/-3
Add a v2 update switch to the release build scripts

telegramdesktop/tdesktop/public-canaryf21da361 files, +29/-1
Read the pinned metadata through the local Bot API

telegramdesktop/tdesktop/public-canary7524caa3 files, +25/-1
Support v2 updates in the updater and deploy scripts

telegramdesktop/tdesktop/public-canary49c924923 files, +872/-216
Harden canary builds running.

telegramdesktop/tdesktop/public-canary22fe4474 files, +20/-10
Fix build for Release.

telegramdesktop/tdesktop/public-canarybf30cbf2 files, +68/-21
Try to fix signing.

telegramdesktop/tdesktop/public-canary4114a231 files, +77/-5
Improve caching.

telegramdesktop/tdesktop/public-canary072ca071 files, +17/-5
Try to fix signing again.

telegramdesktop/tdesktop/public-canary2e8714010 files, +598/-311
New names, separate publishing.

telegramdesktop/tdesktop/public-canaryb2dd9827 files, +255/-6
Fix translocated launch on macOS.

telegramdesktop/tdesktop/public-canary854ddaa4 files, +32/-14
Improve version display for canary.

#tdesktop
🫡3
telegramdesktop/tdesktop/public-canary754b73b1 files, +141/-40
Split macOS canary build into per-arch jobs.

telegramdesktop/tdesktop/public-canary40c33357 files, +198/-3
Add an in-title CANARY/PRIVATE marking.

telegramdesktop/tdesktop/public-canary7b4b5a26 files, +42/-24
Rename canary branches.

telegramdesktop/tdesktop/public-canaryf5f5b6b1 files, +3/-0
Fixed per-arch build picking universal crashpad handler.

telegramdesktop/tdesktop/public-canary8a9a7b51 files, +11/-4
Keep TelegramForcePortable in portable archives.

telegramdesktop/tdesktop/public-canaryb20e9771 files, +11/-11
Allow CANARY_ALLOW_UNSIGNED in public lane too.

telegramdesktop/tdesktop/public-canary0198b761 files, +38/-3
Try workaround clone problems.

telegramdesktop/tdesktop/public-canary5503ef21 files, +25/-19
Fix build with GCC.

telegramdesktop/tdesktop/public-canary0addfd12 files, +36/-19
Fix public publishing.

telegramdesktop/tdesktop/public-canarye801daa1 files, +6/-6
Keep canary artifacts for seven days

telegramdesktop/tdesktop/public-canary4d368211 files, +29/-1
Fixed missing ATL breaking breakpad build in canary Windows job.

telegramdesktop/tdesktop/public-canary50bd49f1 files, +50/-20
Install ATL for the pinned Windows toolset

telegramdesktop/tdesktop/public-canarye624e6b1 files, +10/-1
Fallback to v1 update unpacking.

#tdesktop
🫡3
telegramdesktop/tdesktop/public-canary6453b533 files, +26/-7
[ai] Refuse implausible test watchdog values

Task: 2026/08/23/refuse-implausible-test-watchdog-values

telegramdesktop/tdesktop/public-canary4f002123 files, +0/-0
Delete unused account_check icon rasters

Task: 2026/08/18/delete-orphaned-account-check-icon

telegramdesktop/tdesktop/public-canary9c86cfc2 files, +11/-2
Correct shared media index writes and viewer counts

Task: 2026/08/18/repair-shared-media-index-and-count-bookkeeping

telegramdesktop/tdesktop/public-canary94d45791 files, +16/-3
Re-index a sent message only when its thread moves

Task: 2026/08/18/repair-shared-media-index-and-count-bookkeeping

telegramdesktop/tdesktop/public-canarya728c322 files, +60/-6
Derive the pinned bar's topic root from the thread

Task: 2026/08/19/align-replies-thread-shared-media-attribution

telegramdesktop/tdesktop/public-canary4d72cb02 files, +1/-1
Pair the uploaded media edit's shared media removal

Task: 2026/08/19/pair-media-edit-removal-with-index-add

telegramdesktop/tdesktop/public-canarybff374e1 files, +20/-5
Drop a sent message from the shared media lists it left

Task: 2026/08/19/match-sent-message-removal-to-written-mask

telegramdesktop/tdesktop/public-canary95b05451 files, +3/-3
Don't keep a media reference across rich page changes

Task: 2026/08/19/refetch-saved-media-after-rich-page-changes

telegramdesktop/tdesktop/public-canary8edc8285 files, +30/-13
Don't lower shared media counts for unindexed messages

Task: 2026/08/20/stop-unmatched-removal-lowering-shared-media-counts

telegramdesktop/tdesktop/public-canary0a783d27 files, +40/-56
Tie stored pinned index writes to the pinned flag

Task: 2026/08/19/unify-pinned-index-writers

telegramdesktop/tdesktop/public-canary35b429a2 files, +52/-1
Write the pinned thread index only in forum peers

Task: 2026/08/20/stop-orphaning-general-id-shared-media-lists

#tdesktop
🫡3
telegramdesktop/tdesktop/public-canary8ca22f32 files, +5/-2
Give a saved sublist its own pinned message list

Task: 2026/08/19/make-saved-sublist-pinned-bar-read-one-list

telegramdesktop/tdesktop/public-canary6696c281 files, +6/-0
Retire shared media of a deleted topic with no object

Task: 2026/08/20/retire-forum-media-lists-without-topic-objects

telegramdesktop/tdesktop/public-canarya478eaf5 files, +31/-0
Retire all topic shared media when a forum is destroyed

Task: 2026/08/20/retire-stranded-forum-media-keys-on-forum-teardown

telegramdesktop/tdesktop/public-canary883d3021 files, +6/-4
Guard the live-topic media unload against a zero root

Task: 2026/08/20/guard-live-topic-unload-against-zero-root

telegramdesktop/tdesktop/public-canary5007dcc1 files, +6/-4
Guard the forum teardown media unload against a zero root

Task: 2026/08/20/guard-forum-teardown-unload-against-zero-root

telegramdesktop/tdesktop/public-canaryef515222 files, +4/-4
Resolve the self peer sublist in the shared resolver

Task: 2026/08/20/resolve-self-peer-sublist-in-shared-resolver

telegramdesktop/tdesktop/public-canary19a508f2 files, +0/-2
Drop the write-only monoforum id from top controls

Task: 2026/08/20/retire-write-only-top-controls-monoforum-peer-id

telegramdesktop/tdesktop/public-canarybf152801 files, +1/-1
Read the inbox when a sublist has no parent chat

Task: 2026/08/20/restore-read-inbox-on-parentless-sublist-send

telegramdesktop/tdesktop/public-canary8eb97c11 files, +2/-8
Use the shared sublist resolver in the player panel

Task: 2026/08/20/collapse-player-panel-sublist-onto-shared-resolver

telegramdesktop/tdesktop/public-canary6f214124 files, +35/-0
Request pinned messages when a pin is not loaded

Task: 2026/08/20/reach-unloaded-pin-on-complete-pinned-slice

#tdesktop
🫡3
telegramdesktop/tdesktop/public-canary8a4704c6 files, +21/-10
Open a saved sublist's own shared media page

Task: 2026/08/20/open-saved-sublist-own-info-media-page

telegramdesktop/tdesktop/public-canaryeedd9e39 files, +63/-43
Align sublist media count, query and window keys

Task: 2026/08/21/align-sublist-media-count-query-and-window-keys

telegramdesktop/tdesktop/public-canary9e7765f4 files, +55/-3
Keep Info pages on their topic or sublist

Task: 2026/08/21/preserve-info-thread-identity-and-lifetime

telegramdesktop/tdesktop/public-canary9fbbd481 files, +12/-10
Tear down Info after a sublist is destroyed

Task: 2026/08/21/preserve-info-thread-identity-and-lifetime

telegramdesktop/tdesktop/public-canaryf0c8acf1 files, +14/-12
Clear Info immediately when its sublist dies

Task: 2026/08/21/preserve-info-thread-identity-and-lifetime

telegramdesktop/tdesktop/public-canary654ca391 files, +9/-13
Always drop an Info wrap when its sublist dies

Task: 2026/08/21/preserve-info-thread-identity-and-lifetime

telegramdesktop/tdesktop/public-canary001005a6 files, +90/-34
Reach unloaded pins on thread keys and updates

Task: 2026/08/21/reach-unloaded-pins-across-thread-and-update-paths

telegramdesktop/tdesktop/public-canarya2dd73a3 files, +11/-4
Rebind Info wrap teardown when a sublist is replaced

Task: 2026/08/21/resubscribe-info-wrap-teardown-on-replaced-sublist

telegramdesktop/tdesktop/public-canaryd01e12f2 files, +14/-10
Tear down Layer Info instantly when its sublist dies

Task: 2026/08/21/resubscribe-info-wrap-teardown-on-replaced-sublist

telegramdesktop/tdesktop/public-canary71a40832 files, +17/-14
Queue Info wrap teardown off sublist destroyed()

Task: 2026/08/21/resubscribe-info-wrap-teardown-on-replaced-sublist

telegramdesktop/tdesktop/public-canarybcde7113 files, +19/-21
Hide Layer Info before its sublist is erased

Task: 2026/08/21/resubscribe-info-wrap-teardown-on-replaced-sublist

#tdesktop
🫡3
telegramdesktop/tdesktop/public-canaryb870e022 files, +15/-18
Preserve teardown stream across Info wrap removal

Task: 2026/08/21/resubscribe-info-wrap-teardown-on-replaced-sublist

telegramdesktop/tdesktop/public-canary7bb4be81 files, +0/-1
Remove stale Info teardown implementation note

Task: 2026/08/21/resubscribe-info-wrap-teardown-on-replaced-sublist

telegramdesktop/tdesktop/public-canaryfc40c7b1 files, +3/-2
Keep saved sublists alive through item teardown

Task: 2026/08/21/finish-info-wrap-sublist-teardown-past-item-destroy

telegramdesktop/tdesktop/public-canaryae077b94 files, +39/-20
Align sublist media counts, windows and titles

Task: 2026/08/21/align-sublist-media-count-window-and-title

telegramdesktop/tdesktop/public-canary83f48161 files, +7/-5
Show the new window tooltip only on entries that have one

Task: 2026/08/23/verify-saved-sublist-media-surfaces-and-gate-tooltip

telegramdesktop/tdesktop/public-canaryb7244674 files, +90/-67
Unify sublist media window ids and persisted titles

Task: 2026/08/23/unify-sublist-separate-id-and-window-naming-rulings

telegramdesktop/tdesktop/public-canaryc5578ea1 files, +2/-2
Limit media topic context to forum chats

telegramdesktop/tdesktop/public-canary9134d691 files, +1/-1
Removed stale comment about swscale destination format caching.

telegramdesktop/tdesktop/public-canary173fc681 files, +5/-0
Restricted transcode temp directory permissions to user.

Related commit: 0807483acc.

telegramdesktop/tdesktop/public-canary26bc6b32 files, +26/-6
Extracted video editor layer showing to shared helper.

telegramdesktop/tdesktop/public-canary91a26b41 files, +26/-10
Extracted shared video encoder setup from H264 encoder.

#tdesktop
🫡3
telegramdesktop/tdesktop/public-canarya346acb2 files, +7/-3
Added VP9 encoder and webm muxer to ffmpeg build configs.

telegramdesktop/tdesktop/public-canary8c28d552 files, +150/-20
Added webm sticker output mode to video encoder.

telegramdesktop/tdesktop/public-canaryca3c28d7 files, +332/-69
Added adapting video stickers into custom emoji.

Related commit: 9895e5bb89.

#tdesktop
🫡3
telegramdesktop/tdesktop/dev23dff651 files, +1/-3
Fix formatting adding in table cells.

#tdesktop
🫡3
tdlib/telegram-bot-api/mastere3e9dd81 files, +1/-1
Fix RichBlockDocument.

#botapi
🫡2
UnigramDev/Unigram/chatview-background-xamlroot2cd5e6f2 files, +12/-5
Don't let XamlRoot.Content take down the chat background lookup

#unigram
morethanwords/tweb/mastere5ad6614 files, +134/-7
Restore sticker fade-in without delaying settled dice

#webk
🫡2
telegramdesktop/tdesktop/public-canary9d4d03a1 files, +16/-12
Added closing of restore windows offer when chat is opened.

Related commit: 3284a5a399.

telegramdesktop/tdesktop/public-canary382a7133 files, +9/-3
Moved plain text paste check to message field module.

telegramdesktop/tdesktop/public-canarye3dd1f71 files, +3/-1
Fixed rich paste offer on explicit plain text paste.

telegramdesktop/tdesktop/public-canary049456b1 files, +17/-0
[ai] Reconcile wave verdicts against the ledger

telegramdesktop/tdesktop/public-canary6ea5a9b1 files, +27/-9
[ai] Require no perf cost for auto-committed crash fixes

telegramdesktop/tdesktop/public-canary4cda4571 files, +3/-0
Fixed crash on deleting already deleted proxies.

telegramdesktop/tdesktop/public-canaryde107851 files, +17/-5
Fixed use-after-free on global media slice update.

telegramdesktop/tdesktop/public-canary70c994e1 files, +16/-2
Fixed huge allocation blurring shared media photos.

telegramdesktop/tdesktop/public-canaryb9c6dfa1 files, +1/-1
Fixed pure virtual call in accessible interfaces.

telegramdesktop/tdesktop/public-canary061e0741 files, +7/-3
Fixed use-after-free of the account before intro.

telegramdesktop/tdesktop/public-canary7e1c09e1 files, +6/-1
Fixed crash on gifting Stars without a callback.

telegramdesktop/tdesktop/public-canary4cf1edd2 files, +6/-2
Fixed use-after-free in the group call bar content.

telegramdesktop/tdesktop/public-canaryc2169c61 files, +10/-4
Fixed crash saving a photo with no loaded image.

#tdesktop
🫡3
telegramdesktop/tdesktop/public-canaryae997612 files, +15/-1
Fixed handling a 2FA password removed from another session.

The intro step reported a permanent "Server Error" for both a removed
password and an unsupported algorithm; mtp.unknownAlgorithm separates
them, and a removal is what PASSWORD_EMPTY already reports, so go back.
CloudPassword::check() also missed the !hasPassword guard its own set()
and setEmail() have, and ComputeCloudPasswordHash() aborts on the null
algorithm variant.

telegramdesktop/tdesktop/public-canarye97d6dc1 files, +7/-0
Fixed crash destroying history widget on logout.

telegramdesktop/tdesktop/public-canary822b2cd2 files, +7/-1
Fixed crash using info media list after controller.

telegramdesktop/tdesktop/public-canary6866b461 files, +25/-10
Fixed use-after-free of the pinned bar custom button.

When the pinned id changes the producer drops the subscription watching
the pushed item for Destroyed, so the consumer must not be left holding
that pointer with nobody to clear it. Resolve the new item first and emit
nullptr only when nothing replaced the pushed one, so an already loaded
item does not make the bar crossfade a default button in and back out.

telegramdesktop/tdesktop/public-canary00d03051 files, +1/-1
Fixed reentrancy destroying menu item widgets.

telegramdesktop/tdesktop/public-canaryed78e2c1 files, +8/-3
Fixed abort on failed video frame allocation.

telegramdesktop/tdesktop/public-canary1f1ad7b1 files, +6/-3
Fixed out of bounds read tracking the pinned bar.

telegramdesktop/tdesktop/public-canaryff90c7c1 files, +4/-1
Fixed collectible emoji stars on backwards time.

telegramdesktop/tdesktop/public-canary7e4aa9c1 files, +3/-1
Fixed crash on double skip of the recovery email.

telegramdesktop/tdesktop/public-canary98f5ab41 files, +6/-0
Fixed crash finishing info layer show after resize.

#tdesktop
🫡3
telegramdesktop/tdesktop/public-canary3ad1b6c1 files, +19/-6
Fixed crashes reordering stickers in a set.

A press without a following move leaves lastSelected == -1, always so for
mask sets, and reordering to -1 rotated past _elements.begin().

_pack also keeps every sticker while _elements skips premium ones when
the account cannot buy premium, so _pack is the longer list - but hit
testing bounded itself by _pack, the shift animation map was keyed over
_pack, and the paint loop reached _elements[index] through those keys
before its own bounds check. Index everything by _elements, which is what
is actually painted.

telegramdesktop/tdesktop/public-canarye7d87b81 files, +9/-1
Fixed crash pasting a huge image from the clipboard.

telegramdesktop/tdesktop/public-canary44462222 files, +22/-9
Fixed use-after-free with several downloads per message.

telegramdesktop/tdesktop/public-canary14861f33 files, +24/-0
Fixed account deleted from inside its own teardown.

telegramdesktop/tdesktop/public-canary2a078921 files, +1/-1
Fixed divide by zero on a raced Lottie frame rate.

telegramdesktop/tdesktop/public-canaryb7bc2011 files, +4/-1
Fixed crash on a sensitive album of documents.

telegramdesktop/tdesktop/public-canary19239dc1 files, +14/-4
Fixed crash opening a url auth box already closed.

show() can hand back an already empty pointer, and subscribing to
boxClosing() through it dereferenced null. That event has also already
passed by then, so the decline request has to be sent right away instead.

telegramdesktop/tdesktop/public-canaryaba8ea01 files, +10/-1
Fixed stale last message after a sublist switch.

telegramdesktop/tdesktop/public-canary099b0812 files, +41/-12
Fixed use-after-free in the text appearing animation.

telegramdesktop/tdesktop/public-canary4a9c4e51 files, +19/-1
Fixed use-after-free in the filtered chats ripple.

#tdesktop
🫡3
telegramdesktop/tdesktop/public-canaryce094ed1 files, +5/-2
Fixed assertion clearing a history twice at once.

telegramdesktop/tdesktop/public-canary556dd3a1 files, +10/-2
Fixed crash editing an album thumb with no cursor one.

telegramdesktop/tdesktop/public-canary3c0a78c1 files, +9/-1
Fixed stack overflow relayouting the drag areas.

telegramdesktop/tdesktop/public-canary5be5a471 files, +6/-2
Fixed crash choosing a group call reaction.

telegramdesktop/tdesktop/public-canary6e3fb882 files, +24/-5
Fixed use-after-free in the recent chats switcher.

telegramdesktop/tdesktop/public-canarybfdeec91 files, +1/-1
Don't abort on E_OUTOFMEMORY from a WinRT server.

telegramdesktop/tdesktop/public-canary68a25442 files, +14/-0
Fixed stack overflow typing a phone with an IME.

telegramdesktop/tdesktop/public-canary39428b41 files, +23/-6
Fixed crash when the last monitor is removed.

telegramdesktop/tdesktop/public-canary52858161 files, +8/-1
Fixed use-after-free of the font preview theme.

telegramdesktop/tdesktop/public-canaryb47690e1 files, +8/-0
Fixed crash closing the location picker webview.

telegramdesktop/tdesktop/public-canary3afebb71 files, +7/-2
Fixed archive assertion on an unknown unread state.

telegramdesktop/tdesktop/public-canary786289e3 files, +33/-21
Reclaim the right button ripple callback per press.

The ripple outlives the row it was created for: it is owned per peer by
_rightButtons, so a callback baked in on the first press kept repainting
a Row that was long gone. Keep the callback in the button and refresh it
on every press, holding the row through a weak pointer - which is why
has_weak_ptr moves down to BasicRow, where nearly every subclass already
had it.

#tdesktop
🫡3
telegramdesktop/tdesktop/public-canaryb0d99302 files, +35/-0
Fixed use-after-free of Iv block media on item death.

telegramdesktop/tdesktop/public-canary0809aac1 files, +1/-1
Don't keep the gzip scratch buffer in the result.

telegramdesktop/tdesktop/public-canary36ab8e92 files, +2/-2
Update Qt patches to fix a crash on screen removal.

telegramdesktop/tdesktop/public-canary135d9cd1 files, +1/-1
Fixed spoiler overlay bound to a replaced text context.

telegramdesktop/tdesktop/public-canaryac7da711 files, +1/-1
Fixed reentrancy destroying a removed menu item.

telegramdesktop/tdesktop/public-canary4bdb2501 files, +1/-1
Fixed use-after-free of shared Lottie provider metadata.

telegramdesktop/tdesktop/public-canary1d76c8f1 files, +20/-21
Fixed huge allocation cropping shared media photos.

CropMediaFrame() cut the frame out at the source resolution before
scaling, deep copying the whole cut region - a few hundred megabytes for
a 12000x9000 photo in a square cell. Expanding to the box applies the
same scale factor, so the visible pixels are unchanged.

telegramdesktop/tdesktop/public-canaryf1f29331 files, +31/-13
Fixed deleting all downloads of one message.

deleteFiles() is addressed by item, but removed only the first matching
download and then fired loadedRemoved anyway, so the rest kept their
files while the row was already hidden. changed() likewise re-checked
only the first entry.

telegramdesktop/tdesktop/public-canary3390cf92 files, +13/-11
Fixed editing an album thumb after moving the cursor away.

The edit and delete callbacks resolved their target from the cursor
position at the moment they ran, but editing is delayed by the ripple
hide duration and keyboard activation has no cursor over the thumb at
all. Bind the thumbnail that owns the button - by pointer, since
takeOrder() permutes _thumbs in place - and translate it through the
current order.

telegramdesktop/tdesktop/public-canary4f38a102 files, +18/-8
Fixed two more crashes when the last monitor is removed.

#tdesktop
🫡3