Telegram github commits and releases
4.87K subscribers
601 files
19.2K links
Broadcast from the most important Telegram clients' repositories
Download Telegram
telegramdesktop/tdesktop/dev37d870f1 files, +1/-1
[poll-view] Fixed option bar width to match percentage.

telegramdesktop/tdesktop/dev418233f7 files, +41/-0
Added frame-by-frame stepping hotkeys to media view on paused video.

telegramdesktop/tdesktop/devd6d70461 files, +29/-20
Fixed ability to open profile of poll option creator from menu.

telegramdesktop/tdesktop/dev365cd721 files, +8/-0
Fixed display of button for new poll in shared polls.

telegramdesktop/tdesktop/dev9245c2e2 files, +4/-0
Fixed missing reply action for timecode reply in voice messages menu.

Related commit: 73d0b4cb84.
Fixed #30557.

telegramdesktop/tdesktop/devde737b34 files, +309/-92
Added support of pagination to stickers and emoji search.

telegramdesktop/tdesktop/dev52615a312 files, +236/-41
Added support of draw-to-reply from shared media.

telegramdesktop/tdesktop/devfaa7c1c1 files, +3/-1
Fixed spoiler menu entry display for non-media files in send files box.

telegramdesktop/tdesktop/devd6cb8d62 files, +7/-0
Added drag support for url inline keyboard buttons in messages.

telegramdesktop/tdesktop/devcfa8ecb1 files, +2/-0
Fix possible crash in ResolveWindowDefault.

telegramdesktop/tdesktop/devab61dda1 files, +3/-4
Disable shrink-to-text with media shown.

telegramdesktop/tdesktop/dev05d28811 files, +1/-27
Disable attempts to launch bingmaps.

Fixes #30551.

#tdesktop
🫡4
telegramdesktop/tdesktop/dev59e64f51 files, +5/-1
Fix possible crash in chats list.

telegramdesktop/tdesktop/devd36f7d51 files, +1/-0
Make sure we check for non-null in background first.

#tdesktop
🫡3
tdlib/td/masterc4394fe4 files, +36/-0
Add and use MessagesManager::get_message_poll_id.

tdlib/td/masterb0c75c17 files, +12/-82
Move set_poll_answer and get_poll_voters to PollManager.

tdlib/td/master42ea83d7 files, +19/-50
Move stop_poll to PollManager.

tdlib/td/masterea683b27 files, +12/-55
Move add_poll_option and delete_poll_option to PollManager.

tdlib/td/master3bde4782 files, +2/-2
Make iOS build reproducible by @g000sha256.

tdlib/td/masterf3713bb1 files, +3/-1
Add g000sha256/tdl-coroutines to the list of examples.

tdlib/td/master8921c222 files, +13/-13
Fix handling of links to specific task and poll option.

#tdlib
🫡2
Ajaxy/telegram-tt/master507123f4 files, +4/-5
12.0.23

Ajaxy/telegram-tt/master85c6df217 files, +756/-89
Layer: Support layer 224 (#6801)

Ajaxy/telegram-tt/masteraafb84c16 files, +144/-50
Dialog: Migrate messages to new lang API (#6800)

Ajaxy/telegram-tt/master0d9d4bb4 files, +58/-116
Update layer (#6827)

Ajaxy/telegram-tt/master319c039150 files, +3009/-4586
Bump dependencies (#6714)

Ajaxy/telegram-tt/master2bf27f31 files, +22/-12
Calendar: Jump by year while holding Shift (#6828)

Ajaxy/telegram-tt/master54d5b793 files, +6/-7
Tauri: Fix build on Mac (#6829)

Ajaxy/telegram-tt/masteree3faa91 files, +2/-3
Reactions: Allow in chat with Telegram (#6831)

Ajaxy/telegram-tt/master29b82892 files, +18/-18
[dev] GH Actions: Bump version (#6830)

Ajaxy/telegram-tt/mastere9955fa2 files, +10/-12
Pull translations from platform (#6832)

Ajaxy/telegram-tt/mastera2a601f19 files, +820/-217
Dates: Support composer input (#6796)

Ajaxy/telegram-tt/master43b6ddd2 files, +2/-3
Forward Modal: Make items wider (#6833)

Ajaxy/telegram-tt/masterac07a223 files, +6/-9
Message: Fix appearance order (#6835)

Ajaxy/telegram-tt/master97ba6b831 files, +1558/-60
UI: Introduce new set of controls (#6825)

Ajaxy/telegram-tt/master854ee082 files, +30/-24
Composer: Check character limit on edit (#6839)

#webz
🫡2
Ajaxy/telegram-tt/mastere98306c3 files, +32/-27
Chat List: Move unread badge on forum view (#6837)

Ajaxy/telegram-tt/masterdd864663 files, +3/-3
[dev] Better comments (#6841)

Ajaxy/telegram-tt/master8f5108c2 files, +19/-19
Passkey: Fix date format (#6844)

Ajaxy/telegram-tt/master32a0a1e2 files, +5/-4
Message List: Fix stuck scheduled loading (#6846)

Ajaxy/telegram-tt/master7b269656 files, +26/-1
Profile: Show insecure client warning (#6845)

Ajaxy/telegram-tt/masterd7e34567 files, +113/-60
Forward: Fix forward to forum topics (#6842)

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

Ajaxy/telegram-tt/masterd4138b069 files, +2928/-134
Composer: Support AI messages (#6826)

Ajaxy/telegram-tt/masterfc0e52e94 files, +3848/-2485
Poll: Support new features (#6819)

Ajaxy/telegram-tt/master3248a9a2 files, +0/-0
Icons: Rebuild (#6850)

Ajaxy/telegram-tt/masterf2c6e8c300 files, +1497/-1481
[Build]

#webz
🫡2
telegramdesktop/tdesktop/devc5317e62 files, +26/-50
Revert "Replace mozjpeg with jpegli on Linux"

This reverts commit cb5fdac0da0cb063fe3978a4220eca16a328a17d.

#tdesktop
🫡3
Ajaxy/telegram-tt/masterce378d04 files, +5/-5
12.0.24

Ajaxy/telegram-tt/masterc97503a4 files, +5/-2
Mini App: Bring back `allow-same-origin` (#6852)

Ajaxy/telegram-tt/master41688f522 files, +25/-25
[Build]

#webz
🫡2
telegramdesktop/tdesktop/devf9d86281 files, +1/-1
Fix build with GCC.

telegramdesktop/tdesktop/dev33dda9d1 files, +27/-1
Return possibility for maps handler customization on Windows.

telegramdesktop/tdesktop/dev59e9a912 files, +7/-1
First text appearing animation duration floor.

telegramdesktop/tdesktop/dev668a91b6 files, +31/-15
Version 6.7.6.

- Gradient-reveal animation for text appearing in messages.
- Support draw-to-reply from shared media.
- Frame-by-frame stepping and hold-to-speedup hotkeys in media view.
- Fix loading stickers and emoji search results.
- Custom emoji picker for premium quick reaction.
- Search in section of pinned messages.
- Recent search entries in settings search.
- Hide phone number in main settings section.
- Suggest sending large texts as files.
- Allow creating polls with single answer option.
- Bring menus and fullscreen media viewer to active space on macOS.
- Fix several poll display and voting menu issues.
- Fix possible crashes in chats list, url auth and others.

#tdesktop
🫡3
New telegramdesktop/tdesktop release: v6.7.6 (stable)

- Gradient-reveal animation for text appearing in messages.
- Support draw-to-reply from shared media.
- Frame-by-frame stepping and hold-to-speedup hotkeys in media view.
- Fix loading stickers and emoji search results.
- Custom emoji picker for premium quick reaction.
- Search in section of pinned messages.
- Recent search entries in settings search.
- Hide phone number in main settings section.
- Suggest sending large texts as files.
- Allow creating polls with single answer option.
- Bring menus and fullscreen media viewer to active space on macOS.
- Fix several poll display and voting menu issues.
- Fix possible crashes in chats list, url auth and others.

#tdesktop
🫡4
TelegramMessenger/tgcalls/experimental616810f38 files, +38/-0
build: add #include <cstdint> for GCC 15 compatibility

TelegramMessenger/tgcalls/experimental24fd51b7 files, +2218/-19
feat: SCTP signaling improvements for reliable connection establishment

Add writable gate for role-based SCTP handshake ordering: caller
(isOutgoing=true) starts writable and sends INIT immediately; callee
starts not-writable and defers Connect() until first received packet
triggers setWritable(true).

Implement CustomDcSctpSocket to fix WebRTC's missing timer backoff cap
on t1_init and t1_cookie handshake timers. Without this, simultaneous-open
under packet loss causes 20+ second stalls due to unlimited exponential
backoff (1s, 2s, 4s, 8s...). With the fix: 400ms init, 750ms max backoff,
yielding ~18 attempts in 15s and 100% success at 30% loss.

Timer values are configurable via JSON custom parameters:
- network_sctp_t1_init_ms, network_sctp_t1_cookie_ms, network_sctp_max_backoff_ms

Squashed from:
- feat: add SCTP writable gate for role-based handshake ordering
- chore: whitespace cleanup in NativeNetworkingImpl
- fix: CustomDcSctpSocket with t1 timer backoff cap for signaling SCTP

TelegramMessenger/tgcalls/experimental212a8741 files, +5/-0
fix: use-after-free in InstanceV2ReferenceImpl::writeStateLogRecords()

writeStateLogRecords() captured a raw Call* pointer on the media thread
and posted it to the worker thread. If stop() called
_peerConnection->Close() (which destroys Call) between the post and
worker thread execution, the worker thread would dereference a dangling
pointer. WebRTC's call_ptr_ is Call* const and never nulled after Close(),
so the existing null check didn't catch this.

Fix: add _isStopped atomic flag, set before Close() in stop(), checked
in the worker thread lambda before accessing call.

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

#tgcalls
🫡3
TelegramMessenger/tgcalls/experimentaleb2bd7d7 files, +2173/-155
feat: add InstanceV2CompatImpl for cross-version interop (v14.0.0)

New implementation that uses WebRTC PeerConnection internally but speaks
V2Impl's signaling protocol (InitialSetupMessage, NegotiateChannelsMessage,
CandidatesMessage). Enables bidirectional calls between PeerConnection-based
clients and V2Impl clients (versions 7.0.0-13.0.0).

Architecture: PeerConnection <-> SignalingTranslator <-> EncryptedConnection
<-> SignalingSctpConnection

Key components:
- SignalingTranslator: converts between cricket::SessionDescription and V2Impl
signaling messages using JsepSessionDescription programmatic API (no SDP
string round-trips)
- Shared conversion functions extracted to Signaling.h/.cpp for use by both
ContentNegotiationContext (V2Impl) and SignalingTranslator (CompatImpl)
- Data channel works for CompatImpl<->CompatImpl calls; padded as rejected
when paired with V2Impl (which has no PeerConnection)

100% success rate at 30% loss in both call directions.

Squashed from:
- refactor: extract signaling content conversion functions to Signaling.h/.cpp
- feat: add SignalingTranslator for V2Impl signaling <-> PeerConnection conversion
- feat: add InstanceV2CompatImpl — PeerConnection with V2Impl signaling (version 14.0.0)
- feat: add data channel support to InstanceV2CompatImpl

TelegramMessenger/tgcalls/experimental08cd6d52 files, +1110/-0
feat: add GroupInstanceReferenceImpl — PeerConnection-based group calls

Alternative group call implementation using standard WebRTC PeerConnection
instead of the manual ICE/DTLS/SRTP management in GroupInstanceCustomImpl.
Implements the same GroupInstanceInterface (~1500 lines vs ~4700).

Uses a single PeerConnection to the SFU with:
- sendrecv audio transceiver (outgoing audio)
- recvonly audio transceivers added dynamically per remote SSRC
- data channel for Colibri protocol (ActiveAudioSsrcs discovery)
- Programmatic SDP construction via cricket::SessionDescription API

Key implementation details:
- Loopback ICE enabled (network_ignore_mask=0) for localhost SFU
- RTP header extensions copied from local offer per m-line (BUNDLE-safe)
- MID extension excluded from remote answer to prevent wrong-channel routing
- Renegotiation mirrors local offer mids exactly in constructed answer
- Synthetic audio levels (0.1) for known remote SSRCs
- Serialized renegotiation (one offer/answer at a time)

Squashed from:
- feat: add GroupInstanceReferenceImpl — PeerConnection-based group call client
- fix: add missing jsep_session_description.h include
- fix: enable loopback ICE and add remote candidates
- fix: add RTP header extensions to SDP answer
- fix: rewrite buildRemoteAnswer to mirror local offer mids for renegotiation
- fix: simplify audio level polling to use known remote SSRCs directly

#tgcalls
🫡3💅1
TelegramMessenger/tgcalls/experimentalb0245de3 files, +533/-17
feat: add video support to group calls (CustomImpl + ReferenceImpl)

Enable H264 simulcast video in group calls for both GroupInstanceCustomImpl
and GroupInstanceReferenceImpl, with reactive channel setup mirroring the
real Telegram app's flow.

Infrastructure:
- DiscardPacketsWithUnknownSsrc field trial prevents outgoing video channel
from stealing incoming RTP for unregistered SSRCs
- dataChannelMessageReceived callback on GroupInstanceDescriptor forwards
Colibri messages (ActiveVideoSsrcs) to the application layer

ReferenceImpl video implementation:
- Pre-allocate 6 video SSRCs (3 layers x primary + RTX) at construction
- SDP munging: replace PeerConnection's auto-generated StreamParams with
pre-allocated SSRCs + SIM + FID groups before SetLocalDescription
- Video source activated via sender()->SetTrack() (no renegotiation)
- Incoming video: recvonly transceivers with explicit remote SSRCs in answer
(required because DiscardPacketsWithUnknownSsrc is process-wide)
- Video sinks wired explicitly after SetRemoteDescription (OnTrack doesn't
fire for locally-created recvonly transceivers)
- Colibri ReceiverVideoConstraints sent over data channel to control SFU
forwarding; SFU responds with SenderVideoConstraints + proactive PLI

Squashed from:
- feat: enable DiscardPacketsWithUnknownSsrc field trial for video group calls
- feat: add dataChannelMessageReceived callback to GroupInstanceDescriptor
- feat(group-ref): store video configuration from descriptor
- feat(group-ref): pre-allocate video SSRCs and include in join payload
- feat(group-ref): add video encoder/decoder factories to PeerConnectionFactory
- feat(group-ref): implement setVideoSource with SDP munging for simulcast SSRCs
- feat(group-ref): extend buildRemoteAnswer with video m-line construction
- feat(group-ref): forward data channel messages to app for video signaling
- feat(group-ref): implement setRequestedVideoChannels with Colibri constraints
- feat(group-ref): implement addIncomingVideoOutput with video sink wiring
- fix(group-ref): activate outgoing video after join response is applied
- feat(group-ref): add video support to GroupInstanceReferenceImpl

#tgcalls
🫡4💅1
UnigramDev/Unigram/developf2522c11 files, +1/-1
Update TDLib

UnigramDev/Unigram/developc7d57ba45 files, +2486/-281
Initial progress with polls

UnigramDev/Unigram/develop55601bf8 files, +504/-15
Initial progress with ai editor

UnigramDev/Unigram/develop09deed414 files, +71/-21
API changes

UnigramDev/Unigram/develop64bc48e2 files, +70/-0
Markup acc

UnigramDev/Unigram/develop5d603eb1 files, +1/-1
Show "Connecting to proxy" whenever a proxy is enabled

UnigramDev/Unigram/develop7f013572 files, +2/-2
Bump version to 12.6

#unigram
🫡2
morethanwords/tweb/design26dd6a7a966 files, +2085/-1314
WIP: New Forward

#webk
🫡3
telegramdesktop/tdesktop/dev0e7a4831 files, +1/-1
Fix muted icon outline clipping.

telegramdesktop/tdesktop/devb87df701 files, +6/-7
Fix microphone testing in Settings.

telegramdesktop/tdesktop/devd39af8e1 files, +2/-2
[ai] Fix custom command for icon creation.

telegramdesktop/tdesktop/devce10b711 files, +1/-1
Fix geometry counting around collapsed blockquote.

telegramdesktop/tdesktop/deve3a34ea5 files, +90/-21
Cache date string in dialog rows.

telegramdesktop/tdesktop/devf31421a1 files, +2/-2
Fix unread media indicator display.

telegramdesktop/tdesktop/dev1b967721 files, +3/-3
Allow continue macOS build after partial.

telegramdesktop/tdesktop/dev2cd90eb14 files, +958/-133
Add proxy auto-rotation option.

#tdesktop
🫡4💅1
telegramdesktop/tdesktop/dev6cc58e33 files, +8/-17
Use git -C with xargs

#tdesktop
🫡3
telegramdesktop/tdesktop/devaae56312 files, +19/-5
Fix bio cut-off in calls peer info.

#tdesktop
🫡3
morethanwords/tweb/claude/upbeat-lamarr-eecfec9a37da26 files, +10/-14
Fix several small bugs

- Hide message read info in context menu for bot chats
- Fix broken asset URLs in SCSS (url(assets/...) resolved relative to
the CSS file, e.g. /partials/assets/... instead of /assets/...);
this also fixes the monoforum avatar mask, media editor assets and
chat thread separator backgrounds
- Fix birthday display for dates where the day does not exist in the
current month (e.g. Oct 31 while today is April): the previous
setDate/setMonth/setFullYear sequence overflowed the day; use the
Date constructor directly

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

#webk
🤝2🫡2👍1
morethanwords/tweb/master0d79feb6 files, +10/-14
Merge pull request #629 from morethanwords/claude/upbeat-lamarr-eecfec

Fix several small bugs

#webk
🫡2👍1
morethanwords/tweb/masteraf9ed281 files, +12/-3
Merge pull request #627 from AoiNyanko/fix-clearing-cache

Fix cache clearing when no service worker is available

#webk
🫡2