Telegram github commits and releases
5.05K subscribers
601 files
19K links
Broadcast from the most important Telegram clients' repositories
Download Telegram
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) <[email protected]>

#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) <[email protected]>

#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
morethanwords/tweb/masterfbfab896 files, +30/-13
Various fixes

- Hide DisableSharing, EnableSharing and SendGift menu items for bots
in the chat topbar (SendGift was broken by missing `await` on a
manager proxy call)
- Hide stories menu (Show Archive / Create Album) in profile header
when the viewer lacks edit_stories rights
- Show upload preloader for huge videos that hit the early return in
wrapVideo because canAutoplay is false
- Cap upload progress at fileSize to avoid >100%
- Add quote-block class to quote entities in rich text

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>

morethanwords/tweb/master4af54887 files, +22/-17
Merge branch 'master' of https://github.com/morethanwords/tweb

#webk
🫡2
telegramdesktop/tdesktop/dev66b38cc1 files, +9/-2
Pause animations only if video message isn't paused.

telegramdesktop/tdesktop/dev5eed8131 files, +2/-3
Fix layout for RTL messages.

telegramdesktop/tdesktop/dev43192453 files, +204/-31
Allow seeking in video messages.

#tdesktop
🫡3
telegramdesktop/tdesktop/devef848e01 files, +8/-8
Port Linux notifications to std::get_if

There's no sense to use abstrations calling std::holds_alternative

telegramdesktop/tdesktop/dev92488b22 files, +19/-26
Move GNotification action creation to the rest of notification code

telegramdesktop/tdesktop/devbc2eb3d1 files, +4/-20
Remove explicit disconnections where object lifetime is the same

telegramdesktop/tdesktop/devb5f3ea62 files, +26/-1
Try to use KSandbox::startHostProcess

telegramdesktop/tdesktop/dev3fbe3022 files, +167/-0
feat(accessibility): add screen reader support for country select box

#tdesktop
🫡3
telegramdesktop/tdesktop/devc354ed72 files, +202/-169
Simplify, reuse stuff in country_select_box.

telegramdesktop/tdesktop/dev5bb03921 files, +1/-1
Fix sticker size option with scaling

#tdesktop
🫡3
Ajaxy/telegram-tt/master741c6f53 files, +4/-4
12.0.25

Ajaxy/telegram-tt/master86684cd31 files, +1327/-825
Chat: Support unread poll votes (#6847)

Ajaxy/telegram-tt/master5eda3f54 files, +662/-650
Icons: Rebuild (#6855)

Ajaxy/telegram-tt/masterdf5c8291 files, +13/-0
Open Chat Button: Fix text color on button hover (#6859)

Ajaxy/telegram-tt/master889d07829 files, +542/-144
Message Translate: Support Tone (#6849)

Ajaxy/telegram-tt/master7e789e64 files, +23/-9
General: Better validation for iframe event origins (#6856)

Ajaxy/telegram-tt/master83ed53d11 files, +295/-37
UI: Add Island and Surface (#6851)

Ajaxy/telegram-tt/mastere5da72b88 files, +85/-85
[Build]

#webz
🫡2
telegramdesktop/tdesktop/devd53ee9c13 files, +0/-18
Fix warnings.

telegramdesktop/tdesktop/dev6419bb11 files, +1/-1
Update User-Agent for DNS to Chrome 146.0.0.0.

#tdesktop
🫡2