Telegram github commits and releases
4.54K subscribers
601 files
20.3K links
Broadcast from the most important Telegram clients' repositories
Download Telegram
telegramdesktop/tdesktop/dev5e1a05f1 files, +1/-1
Fix crash when removing pinned chats during folder changes.

#tdesktop
🫡2
telegramdesktop/tdesktop/dev24ccd1c1 files, +6/-1
Fix crash when finishing the appearing text animation

textAppearCheckLine() runs synchronously from inside the width and
height animation tick callbacks (textAppearWidthCallback /
textAppearHeightCallback). Calling RemoveComponents(TextAppearing::Bit())
there destroys those very animations (and their Ui::Animations::Simple
data) while the animations manager is still iterating them, leading to a
use-after-free / null _data dereference in Simple::value().

Defer the component removal to the next main loop iteration so the
running tick can unwind first.

#tdesktop
🫡2
telegramdesktop/tdesktop/dev7f8c6901 files, +0/-1
Remove duplicate QT_NO_PRIVATE_MODULE_WARNING from root CMakeLists.txt

It now lives in cmake/external/qt/package.cmake

#tdesktop
🫡2
telegramdesktop/tdesktop/devdf268f34 files, +10/-10
Bump actions/cache from 5 to 6

Bumps [actions/cache](https://github.com/actions/cache) from 5 to 6.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/cache
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

#tdesktop
🫡2
telegramdesktop/tdesktop/dev12ce38f1 files, +25/-4
Fixed editing of selected caption in album to target its own media.

telegramdesktop/tdesktop/deva5142b95 files, +94/-34
Slightly improved filling of swipe-next-channel gesture.

telegramdesktop/tdesktop/dev76120b76 files, +186/-175
Replaced custom scroll processing in profile top bar with regular one.

telegramdesktop/tdesktop/deva4ed19f1 files, +21/-7
Extended regular scroll processing to stories section.

telegramdesktop/tdesktop/devffa63865 files, +137/-5
Cached peer list rows into opaque images while scrolling.

telegramdesktop/tdesktop/devfe8ca5a2 files, +34/-4
Added separate painting of peer badge emoji status to peer list.

telegramdesktop/tdesktop/dev1fb28f62 files, +14/-1
Added separate painting of peer list row emoji status to peer list.

telegramdesktop/tdesktop/dev89b4a782 files, +22/-1
Allowed emoji status animation over cached peer list rows.

telegramdesktop/tdesktop/dev3a901012 files, +45/-0
Added refresh of loaded userpics over cached peer list rows.

telegramdesktop/tdesktop/dev55b74843 files, +382/-113
Added media view video as system media controls source.

telegramdesktop/tdesktop/dev43b21103 files, +153/-1
Added metadata of media view video playback to system media controls.

telegramdesktop/tdesktop/dev40b3f623 files, +80/-7
Added swipe-back gesture to info profile section.

telegramdesktop/tdesktop/devf362c161 files, +2/-1
Fixed instant Cmd+Up/Down reply in sections with compose controls.

#tdesktop
🫡3
telegramdesktop/tdesktop/dev14909bc2 files, +6/-4
Fixed display of sticker-set and favorite actions for sending stickers.

telegramdesktop/tdesktop/dev85c94957 files, +184/-0
Added keyboard extension of message text selection to history sections.

#tdesktop
🫡2
morethanwords/tweb/master512d07d1 files, +25/-2
Fix stories hold-to-pause not resuming on release

SwipeHandler bound its global mouseup/touchend listeners to
this.element.ownerDocument at construction time. For a Solid JSX
element (cloned from a <template>), ownerDocument is the inert
about:blank template-contents document until the node is inserted
into the live DOM. The stories viewer constructs the SwipeHandler
before its <Portal> mounts the element, so the release listeners
were bound to a document that never receives real events: mousedown
(bound to the element directly) still paused on press, but mouseup
never reached reset()/onReset()/play(), so the story stayed paused.

Bind the gesture-end listener lazily in handleStart instead, when the
element is live and ownerDocument resolves to the real (main or
Document-PiP) document. Keeps the PiP fix from 9d58fe155 intact and
mirrors the lazy pattern already used in attachGrabListeners.

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

morethanwords/tweb/masterbbd37823 files, +87/-79
Render topic profile avatar in the profile-avatars header

Forum and bot-forum topic profiles used a separate inline 'simple avatar'
(.profile-avatar.avatar-120 inside the MainSection, gated by has-simple-avatar).
Route them through the same PeerProfileAvatars header as regular chats with no
photo instead: PeerProfileAvatars.setPeer now takes a threadId, skips the photo
carousel/list-loader, and renders the topic icon as a single centered avatar-120
(no profile-avatars-avatar-fake duplicate, no scaled-down full photo).

- peerProfileAvatars: topic branch in setPeer; processItem renders avatar-120
with a 120px custom-emoji size for topics.
- peerProfile: always use the carousel path, passing the topic id; drop the
needSimpleAvatar concept and the in-section avatar.
- _profile.scss: .is-topic centers the fixed-size icon and keeps it unscaled
when the header collapses; removed the dead .has-simple-avatar rule.

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

morethanwords/tweb/master12964462 files, +23/-25
Fix sponsored topbar plate not reserving chat padding-top

The sponsored/ad plate is the only floating plate with height: 'auto', so setFloating measures its offsetHeight. The measurement ran inside the count loop, before the wrapper's `hide` (display: none) class was toggled off — and a display:none ancestor zeroes descendants' offsetHeight. So exactly when the ad plate is the one flipping the visible-plate count 0 -> 1, it was measured at 0 and never reserved its padding-top, leaving it overlapping the chat. Compute the visible set and un-hide the wrapper before measuring.

Also clarify in updatePinnedFloatingHeight that a mid-scroll position is left anchored on purpose (matches iOS/Android: the plate slides over the content rather than shoving it down); behavior unchanged.

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

#webk
🫡3
morethanwords/tweb/master96fb8c04 files, +227/-194
Fix intermittent SRP 2FA password rejection (unpadded A)

The client public value A = g^a mod p was serialized with its minimal
big-endian length instead of being zero-padded to 256 bytes. The server
normalizes A to 256 bytes before hashing u and M1, so whenever g^a mod p
had a leading zero byte (~1/256 of attempts) our M1 mismatched the
server's and a correct password was rejected at random; a retry (fresh
account.getPassword -> new a) usually succeeded. Pad A to 256 bytes
everywhere, exactly like tdlib's A_bn.to_binary(256).

While matching tdlib's PasswordManager::get_input_check_password:
- generate the ephemeral secret a from a fresh local CSPRNG instead of
the server-provided state.secure_random (which leaked the secret
exponent and was constant across the now-removed retry loop);
- add the validations that were commented-out stubs: verifyDhPrimeAndGenerator
(= check_config) for both the check and new-password paths, and the
srp_B range/length check (0 < B < p, 248 <= len <= 256).

Rewrite src/tests/srp.test.ts into a real suite: KDF vs an independent
Node-crypto reference, a client/server SRP round-trip x25, a forced
leading-zero-A regression (mutation-confirmed it fails on the unpadded
code), the isNew verifier path, and validation throws. Drop the stale
A/M1/srp_B fixtures and the dead src/mock/srp_original.ts.

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

morethanwords/tweb/masterc6fb69c2 files, +1/-8
Align reply-quote poll icon inline instead of flexing the subtitle

The poll-option checkmark in the reply/pinned container now carries the
standard inline-icon classes (inline-icon inline-icon-left) so it aligns
with the quote text through the normal inline flow, dropping the bespoke
.with-icon flex wrapper on the subtitle.

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

#webk
🫡3
morethanwords/tweb/master0aaab72300 files, +571/-562
Build

#webk
🫡2
morethanwords/tweb/mastera5c73271 files, +42/-19
Fix video streaming edge cases in service worker

- Fall back to the worker on any cache read error (incl. a bare cache
timeout that rejects with undefined) instead of throwing TypeError on
error.type and killing the range request
- Preload the file's last chunk at start (moov/bounds) instead of chunk 0
- Treat PRELOAD_SIZE as a read-ahead window from the current position
rather than an absolute end offset (read-ahead was dead past 20MB)
- Align the preload window start to the chunk grid so preloaded offsets
stay valid MTProto offsets
- Gate the second range part on overflow > 0 (a byte count was used as a
boolean, so a negative value forced a wasteful extra chunk fetch)
- Clamp limit to a server-valid minimum (4KB) to avoid LIMIT_INVALID on
tiny ranges; make SMALLEST_CHUNK_LIMIT a valid 4KB and use it
- Don't resurrect a destroyed stream from toggleStreamInUse(false); clamp
inUse at 0 to stop zombie streams leaking in the map
- Re-arm the idle debounce instead of destroying a stream still bound to
a live <video>
- Swallow rejections from best-effort cache writes and fire-and-forget
preloads to avoid unhandled rejections
- Use Math.clz32 in alignLimit to drop the Math.log FP rounding; remove
the unused Response-Time header

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

morethanwords/tweb/master99de4a82 files, +30/-4
Fix rich-text paste/serialization of newlines around blockquotes

Three related fixes in the contenteditable rich-text path:

- getRichValueWithCaret paste reconciliation: the re-insertion pass used a
drifting offset threshold (`offset > plainTextLength - lineIndex + 1`) that
was only correct for one line index, shifting/losing entities on multi-line
formatted pastes (e.g. a second line in bold). Use the splice index directly
and adjust entity length, not just offset, in both removal and insertion.

- Paste handler: strip messageEntityLinebreak before insertRichTextAsHTML.
wrapDraftText renders line breaks from the text itself; passing explicit
linebreak entities made wrapRichText slice the one before a blockquote,
dropping a \n on e.g. `text\n\nquote`. Stripping them aligns paste with the
edit/draft path (verified: no extra blank line, model preserves both \n).

- getRichElementValue: a multiline blockquote built from block children
(<br>/<div>, what Enter produces) lost its last character outside the quote,
because the entity length is only grown by text nodes while block-generated
\n bypass it. Track the last real-content offset and re-span the blockquote
up to it, excluding trailing block line breaks.

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

#webk
🫡3
telegramdesktop/tdesktop/chrome_149.0.0.00830bf31 files, +1/-1
Update User-Agent for DNS to Chrome 149.0.0.0.

#tdesktop
🫡2
telegramdesktop/tdesktop/unused_styles_2026_071af2be21 files, +0/-8
Removed 4 unused style entries.

#tdesktop
🫡2
telegramdesktop/tdesktop/devaad218a1 files, +0/-8
Removed 4 unused style entries.

#tdesktop
🫡3
telegramdesktop/tdesktop/devcf661e51 files, +1/-1
Update User-Agent for DNS to Chrome 149.0.0.0.

#tdesktop
🫡3
telegramdesktop/tdesktop/dev3a528d82 files, +6/-3
Move -fuse-ld=lld to linker flags

telegramdesktop/tdesktop/dev6fcd6501 files, +0/-8
Remove cmake policy linking error workarounds

telegramdesktop/tdesktop/deva2d3b373 files, +3/-5
Restore cmake 3.25 as minimum version

telegramdesktop/tdesktop/devfa3948d1 files, +3/-5
Use theme change event from qApp

telegramdesktop/tdesktop/dev09459d11 files, +9/-8
CreateOfficialIcon -> CreateSupportIcon

That better fits the current meaning

telegramdesktop/tdesktop/dev84b0f731 files, +4/-0
Preserve window icon name on Wayland

#tdesktop
🫡3
telegramdesktop/tdesktop/devf1df2501 files, +1/-1
Update lib_ui.

#tdesktop
🫡3
morethanwords/tweb/master3acb5a43 files, +295/-0
Add run-build skill to list and serve past build snapshots

Lists the git "Build" commits (compiled app in public/) as a paginated,
date-sorted table, then serves any chosen snapshot locally by extracting
that commit's public/ tree via git archive — mirroring server.js and
leaving the working tree untouched.

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

#webk
🫡2
Ajaxy/telegram-tt/masterf33f22a3 files, +4/-4
12.0.32

Ajaxy/telegram-tt/master360de4816 files, +188/-37
Support startGroup deep link for bots (#7050)

Ajaxy/telegram-tt/master8f8cc051 files, +12/-3
Modal: Autofocus title by default (#7068)

Ajaxy/telegram-tt/master24fab593 files, +43/-20
Surface Container: Fix background color (#7071)

Ajaxy/telegram-tt/master63b505e1 files, +4/-1
Profile: Improve closing on Esc logic for profiles (#7070)

Ajaxy/telegram-tt/mastere3318c02 files, +7/-0
Passcode: Fix button spacing in passcode settings (#7069)

Ajaxy/telegram-tt/masterdb6db815 files, +37/-23
Passcode: Persist shared state to fix theme flicker on unlock (#7066)

Co-authored-by: Dmitry Kabanov <153344039+dmitrykabanovdev@users.noreply.github.com>

Ajaxy/telegram-tt/master55557c26 files, +20/-11
Middle Header Panel: Fix styles (#7072)

Ajaxy/telegram-tt/master6a0d49f29 files, +587/-240
Middle Column: Redesign composer and chat panels mask (#7059)

Co-authored-by: Alexander Zinchuk <alx.zinchuk@gmail.com>

Ajaxy/telegram-tt/master3b3fde01 files, +19/-6
Mini Apps: Fix miniAppsCachedSize saving after fullscreen (#7074)

Ajaxy/telegram-tt/mastereb9f74688 files, +246/-246
[Build]

#webz
🫡2
telegramdesktop/tdesktop/dev7bc0e171 files, +0/-1
Removed dead deep copy of reactions in unread lookup.

telegramdesktop/tdesktop/dev0426e191 files, +3/-0
Fixed quick-action icon loss after swipe returns to origin in dialogs.

telegramdesktop/tdesktop/devabf77d72 files, +8/-19
Replaced flattened table rows with label in rich reply previews.

telegramdesktop/tdesktop/dev94af1581 files, +1/-10
Fixed extra empty space below short member lists in info profiles.

telegramdesktop/tdesktop/deve2a6a082 files, +2/-1
Fixed profile scroll bar sliding under flexible top bar scroll.

telegramdesktop/tdesktop/dev8457d131 files, +6/-2
Fix escaping in HTML export of keyboards.

telegramdesktop/tdesktop/dev673d3d39 files, +18/-37
Revert "Disable IV editor for now."

This reverts commit 9a234182e1e8b3e099719404378b10f374a21731.

telegramdesktop/tdesktop/dev869941c9 files, +378/-200
Check for changes in rich message.

telegramdesktop/tdesktop/devf7c2ff32 files, +18/-7
Support Ctrl+X to cut block selections.

telegramdesktop/tdesktop/deva47aad43 files, +70/-0
Close editors on session destructions.

telegramdesktop/tdesktop/dev388da4b37 files, +2773/-178
Improve editor top bar controls.

telegramdesktop/tdesktop/dev6b970df7 files, +627/-38
Improve math formula edit with a box.

telegramdesktop/tdesktop/dev732df973 files, +182/-110
Improve emoji toggle, italic icon.

telegramdesktop/tdesktop/devb6672283 files, +346/-47
Improve undo/redo and single-block Ctrl+A.

#tdesktop
🫡3
telegramdesktop/tdesktop/dev6508c9824 files, +195/-49
Improve icons in the editor.

telegramdesktop/tdesktop/dev8b734137 files, +734/-37
Improve inter-blocks navigation.

telegramdesktop/tdesktop/dev05455fb3 files, +379/-50
Fix incorrect scroll jumps and block selections.

telegramdesktop/tdesktop/dev8d4226211 files, +1169/-103
Implement some media management.

telegramdesktop/tdesktop/dev2027d352 files, +451/-122
Improve arrows navigation through text nodes.

telegramdesktop/tdesktop/dev748bc829 files, +2855/-85
Allow drag-n-drop of blocks selections.

telegramdesktop/tdesktop/dev282d64722 files, +1781/-298
Support nice ordered list editing.

telegramdesktop/tdesktop/dev9dc4b8c24 files, +2356/-241
Support rich messages drafts.

telegramdesktop/tdesktop/devf68b30b12 files, +246/-298
Improve rich message draft preview.

telegramdesktop/tdesktop/dev67f47566 files, +382/-53
Improve draft preview, make it rich.

telegramdesktop/tdesktop/devec7e05613 files, +594/-161
Improve rich messages serialization.

telegramdesktop/tdesktop/devc0cb8894 files, +621/-29
Improve block creation / wrapping.

telegramdesktop/tdesktop/dev348f9163 files, +315/-9
Correct handling monospace/codeblock shortcuts.

telegramdesktop/tdesktop/dev60cd8942 files, +15/-5
Fix copy of codeblock from rich message.

#tdesktop
🫡3
telegramdesktop/tdesktop/dev31d1cb74 files, +1163/-81
Improve selection by keyboard.

telegramdesktop/tdesktop/devff867352 files, +41/-14
Normalize rich draft compose controls

telegramdesktop/tdesktop/dev1f87c0411 files, +342/-15
Send previewed rich drafts from compose

telegramdesktop/tdesktop/devaf71b4c8 files, +218/-24
Redesign rendered pullquotes

telegramdesktop/tdesktop/deveecda908 files, +178/-27
Make pullquote edits resize live

telegramdesktop/tdesktop/dev90d1dd32 files, +34/-0
Add three-state editor toolbar button helper

telegramdesktop/tdesktop/dev19e759b8 files, +218/-18
Add pill-group background for toolbar buttons

telegramdesktop/tdesktop/dev039367f1 files, +105/-759
Lay out IV editor top toolbar as pill groups

telegramdesktop/tdesktop/devcc192fd1 files, +11/-4
Lay out IV editor top toolbar as pill groups

telegramdesktop/tdesktop/dev9e1715f1 files, +2/-8
Lay out IV editor top toolbar as pill groups

telegramdesktop/tdesktop/dev5af16f97 files, +64/-24
Scroll IV editor content under the top pills with a fade

telegramdesktop/tdesktop/dev224b7401 files, +30/-3
Shadow IV emoji column and toggle emoji button state

telegramdesktop/tdesktop/dev0a0f56d8 files, +64/-3
Add floating close button over IV emoji column

telegramdesktop/tdesktop/devc89afaa4 files, +329/-7
Make IV editor toolbar style menus context-aware

#tdesktop
🫡3