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-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
telegramdesktop/tdesktop/public-canary12682e61 files, +4/-2
[ai] Reconcile only the groups the run selected

telegramdesktop/tdesktop/public-canary51ac1a61 files, +7/-2
Fixed abort scheduling TTL with a wrong system clock.

The interval was computed from two int32 timestamps, so a wrapped or
stale unixtime::now() - which is what the OS correcting a badly wrong
clock produces - overflowed it negative, and base::Timer aborts on that.

telegramdesktop/tdesktop/public-canaryfa863632 files, +59/-28
Fixed stale last message after a topic switch.

The reply fields decide topicRootId(), so setReplyFields() can move an
item to another topic. History::itemRemoved() later notifies only the
current topic(), leaving the old one holding a raw pointer to an item it
would never hear about again.

Also stop publishing item data changes from inside createComponents():
notifying about an item that new HistoryItem() has not finished building
lets a listener re-enter and reach it half-constructed.

telegramdesktop/tdesktop/public-canary61be1b51 files, +1/-1
Fixed crash showing a popup menu destroyed inside show().

telegramdesktop/tdesktop/public-canary5efbf503 files, +15/-2
Reset palette icon copies through their own palette.

telegramdesktop/tdesktop/public-canaryd0b86c62 files, +2/-2
Update Qt patches to guard windows destroyed mid-event.

telegramdesktop/tdesktop/public-canary9959fd71 files, +14/-3
Fixed assertion editing a deleted proxy into a duplicate.

replaceItemWith() removed the edited row from the settings list without
restoring it first, so doing that to a row already marked deleted - which
is not in that list at all - failed the Assert. Its sibling
replaceItemValue() has restored first all along.

_list is also a vector, so erasing the edited item shifts everything
after it and left the iterator for the duplicate naming a different item
- or one past the end when the duplicate was last. Read its id and
deleted flag before the erase; everything after it works by id anyway.

#tdesktop
🫡3
telegramdesktop/tdesktop/public-canary499b1bb2 files, +30/-6
Fixed stack overflow typing a date with an IME.

Same cycle the phone field fix closed: putNext() ends in setFocus(), and
on Windows a focus change with an open IME composition makes
QWindowsInputContext::reset() re-send the commit to the field we came
from, whose correctValue() fires putNext() again. Focus the next field
asynchronously, the way Ui::TimeInput already breaks this exact loop - a
re-entrancy flag would instead swallow a chained overflow digit, since
correctValue() can hand one straight on to the field after next.

telegramdesktop/tdesktop/public-canarye1b410e1 files, +6/-0
Fixed crash painting an info layer with no content.

parentResized() can move the content out into a MoveMemento and only
queue hideSpecialLayer(), and LayerStackWidget renders the layer
synchronously through Ui::Shadow::grab() during transitions, so
paintEvent could run in the same window showFinished() was guarded for.

telegramdesktop/tdesktop/public-canaryf827ef81 files, +7/-1
Fixed crash in the media viewer with no monitors left.

telegramdesktop/tdesktop/public-canaryf0125561 files, +11/-3
Fixed huge allocation blurring a video preview.

The frame was blurred at full resolution and only then scaled down to the
preview width, which both allocates by the source pixel count and washes
the blur out in proportion to how much is scaled away - a 4K video got a
noticeably sharper preview than a small one.

telegramdesktop/tdesktop/public-canary1a5921f1 files, +7/-1
Don't leak a background subscription per font family tap.

telegramdesktop/tdesktop/public-canary07d30961 files, +1/-1
Don't abort on E_OUTOFMEMORY building media controls.

telegramdesktop/tdesktop/public-canary7d5492e1 files, +45/-26
Fixed acting on the wrong sticker in a mixed set.

Hit testing yields an index into _elements, which skips the premium
stickers an account that cannot get premium must not see, while preview,
sending, the context menu, deletion and reordering all looked that index
up in _pack - which keeps them. With one skipped sticker before a visible
one, clicking a sticker sent a different one.

Everything driven by a visible position now reads _elements, and the
reorder translates both positions through the documents so the full pack
and the server still get the position in the whole set.

telegramdesktop/tdesktop/public-canary7caa13c1 files, +1/-1
Fixed reentrancy destroying the last menu separator.

#tdesktop
🫡3
telegramdesktop/tdesktop/public-canaryf1f07db1 files, +1/-1
Guard the other popup menu show paths as well.

telegramdesktop/tdesktop/public-canaryb3e85dc2 files, +41/-2
Fixed resetting icons that outlived their owner.

ChatStyle::value() hands its result to the caller, so the icons it makes
are not ours to keep in _ownedIcons: the lifetime overload's icons die
with the caller - a section's corner buttons, for instance, while the
session style lives on - and the by-value overload's live in a local.
A later palette change then reset through freed pointers.

Track only what the lifetime overload creates, and drop it again when
that lifetime ends.

telegramdesktop/tdesktop/public-canary4f3da4d1 files, +7/-0
Fixed stale last message after a service edition.

createServiceFromMtp() rebuilds the data topicRootId() reads, so a
service edition can move the item to another topic - and the old one was
left holding a raw pointer History::itemRemoved() would never tell it
about. The sublist beside it was already handled this way.

telegramdesktop/tdesktop/public-canary7e4e39d1 files, +5/-3
Don't hide a download another entry still owns.

detach() reported the item removed even when another downloaded entry
still held it, so the downloads list dropped a row that was still backed
by a file until the view was rebuilt.

telegramdesktop/tdesktop/public-canary98807cc1 files, +1/-1
Don't call through a null WinRT stream reference factory.

telegramdesktop/tdesktop/public-canary2ad89e62 files, +2/-2
Update Qt patches, narrower guard and a wider cocoa one.

telegramdesktop/tdesktop/public-canaryeda64ab1 files, +38/-13
Fixed huge allocation cropping a panorama thumbnail.

Expanding to the box before cropping avoids deep copying a 12000x9000
photo, but it blows up the other way on an extreme aspect ratio: a
2560x26 panorama expands to about 35000x360, where cropping first cost
almost nothing. Both orders scale by the same factor, so take whichever
intermediate is smaller.

telegramdesktop/tdesktop/public-canary9f47cda1 files, +4/-1
Fixed one more crash when the last monitor is removed.

#tdesktop
🫡3
telegramdesktop/tdesktop/public-canaryccfb5b32 files, +21/-1
Give up clearing a history after enough failed retries.

Re-requesting the dialog entry until the last message is known has no
bound, so an entry that keeps coming back unknown - offline, or a flood
wait - spun requests forever and the clear never finished.

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

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

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

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

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

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

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

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

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

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

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

#tdesktop
🫡3
telegramdesktop/tdesktop/public-canary18006031 files, +70/-28
Publish portable archives as canary first installs

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

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

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

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

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

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

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

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

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

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

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

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

#tdesktop
🫡3
telegramdesktop/tdesktop/public-canary86649fa4 files, +32/-14
Improve version display for canary.

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

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

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

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

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

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

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

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

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

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

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

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

#tdesktop
🫡3
telegramdesktop/tdesktop/public-canarye4a8e0b1 files, +10/-1
Fallback to v1 update unpacking.

telegramdesktop/tdesktop/public-canary3a105533 files, +26/-7
[ai] Refuse implausible test watchdog values

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

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

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

telegramdesktop/tdesktop/public-canary329910a2 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-canaryef9be271 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-canary99ad2712 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-canary206edab2 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-canary4f10eb61 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-canaryf1e7b581 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-canary0b9f3f95 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-canarye4dc19f7 files, +40/-56
Tie stored pinned index writes to the pinned flag

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

#tdesktop
🫡3