Telegram github commits and releases
4.43K subscribers
601 files
21K links
Broadcast from the most important Telegram clients' repositories
Download Telegram
telegramdesktop/tdesktop/dev • 7b33e71 • 2 files, +7/-6
Fixed chat closing on hiding filters sidebar in narrowed window.

Related commits: c0bbb669e0, fd52b3c23b.

#tdesktop
🫡3
telegramdesktop/tdesktop/dev • 89e1ef0 • 1 files, +1/-1
Correctly check for OpenGL libs on Linux.

telegramdesktop/tdesktop/dev • 7cf6523 • 1 files, +1/-1
Add more warning ignoring in Linux build.

telegramdesktop/tdesktop/dev • 168c9f2 • 1 files, +12/-6
Workaround a bug in GCC 15+ with O2+LTO.

telegramdesktop/tdesktop/dev • 0bd6fe8 • 2 files, +1/-19
Make NTLM proxy fix inside Qt only, per-proxy.

#tdesktop
🫡3
telegramdesktop/tdesktop/dev • 65bb1a3 • 4 files, +451/-30
Improve min-width counting for rich messages.

telegramdesktop/tdesktop/dev • 67484a0 • 7 files, +110/-32
Optimize reveal animation of rich messages.

#tdesktop
🫡3
telegramdesktop/tdesktop/dev • 9f2920a • 2 files, +1/-2
Remove clang from Docker and Snap

It was needed only for dispatch

#tdesktop
🫡3
telegramdesktop/tdesktop/dev • 7193c3d • 1 files, +2/-1
Prevent periodic updater instantiation with autoupdates disabled

When autoupdates are disabled, there's no permanent updater reference making each UpdateChecker call create an Updater instance with make_shared just to destruct it immediately

#tdesktop
🫡3
telegramdesktop/tdesktop/dev • b338719 • 1 files, +1/-1
Harden image size checks.

telegramdesktop/tdesktop/dev • 6c14476 • 1 files, +1/-1
Attempt to fix even more context losses.

telegramdesktop/tdesktop/dev • 033d383 • 2 files, +40/-2
Fix some math formula rendering.

#tdesktop
🫡3
telegramdesktop/tdesktop/dev • d63506d • 2 files, +2/-0
Activate window on swipe-to-reply.

A touchpad swipe-to-reply works on an unfocused window, because scroll
events are delivered to the window under the pointer without moving
keyboard focus. The reply bar opened, but keystrokes kept going to the
previously focused application. Request window activation when a swipe
triggers a reply, like other reply flows already do.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

#tdesktop
🫡3💅2
telegramdesktop/tdesktop/dev • 1363667 • 2 files, +10/-1
Fix possible crash in formula parsing.

telegramdesktop/tdesktop/dev • ee1a9fd • 1 files, +4/-2
Add .kml / .kmz as potentially IP-revealing.

#tdesktop
🫡3
tdlib/td/master • 01b0cec • 2 files, +2/-2
Update pageBlockChatLink documentation.

tdlib/td/master • 4f3676d • 2 files, +14/-14
Simplify PageBlock field names.

tdlib/td/master • 4e59e82 • 15 files, +15/-5
Fix includes.

tdlib/td/master • 104536c • 4 files, +12/-12
Minor improvements.

tdlib/td/master • 84f21a1 • 1 files, +4/-1
Fix add_message_content_dependencies for ManagedBotCreated.

tdlib/td/master • b629bd3 • 2 files, +14/-12
Use get_message_content_rich_message if possible.

tdlib/td/master • 1f55d80 • 1 files, +1/-1
Fix richTextMention documentation.

tdlib/td/master • e6b6c17 • 1 files, +1/-0
Add missing include.

tdlib/td/master • 82607ee • 1 files, +1/-1
Improve documentation.

tdlib/td/master • 5d11c72 • 1 files, +1/-1
Fix misprint.

tdlib/td/master • 8df09c1 • 3 files, +19/-14
Make pageBlockCaption nullable.

tdlib/td/master • 39d1662 • 2 files, +7/-3
Make pageBlockCaption.credit nullable.

tdlib/td/master • 6817f61 • 2 files, +7/-6
Make credit and table caption nullable.

tdlib/td/master • 3f9f03c • 1 files, +1/-1
Improve documentation.

tdlib/td/master • fe5ab8d • 1 files, +1/-1
Return no media for invalid poll media.

tdlib/td/master • 3a2c083 • 3 files, +8/-18
Simplify get_poll_media_object usage.

tdlib/td/master • 09b9c24 • 1 files, +1/-1
Fix logging.

#tdlib
🫡2
tdlib/td/master • edab0cb • 3 files, +20/-7
Add and use DialogParticipantManager::get_chat_join_result_object.

tdlib/td/master • 5e21b56 • 5 files, +35/-7
Support rich messages in move_message_content_sticker_set_to_top.

tdlib/td/master • 434ef4b • 2 files, +7/-1
Add td_api::chatJoinResultRequestDeclined.

tdlib/td/master • a74cc9a • 1 files, +1/-1
Ignore draft replies to local messages.

tdlib/td/master • d78ceef • 6 files, +20/-15
Don't warn about invalid entities in old checklist tasks.

tdlib/td/master • 7445746 • 1 files, +1/-2
Improve anchor handling.

tdlib/td/master • 44db718 • 1 files, +1/-1
Fix trim_first.

tdlib/td/master • d171257 • 2 files, +9/-9
Add td_api::richTextReferenceLink.

tdlib/td/master • 108b33f • 1 files, +2/-2
Make pageBlockTable.caption nullable.

tdlib/td/master • 6d0824e • 1 files, +3/-0
Check for bots in WebBrowserManager::on_authorization_success.

tdlib/td/master • 2fe4156 • 1 files, +8/-8
Don't send automatic rich text to the server.

tdlib/td/master • e80270f • 1 files, +6/-3
Fix get_input_page_table_cell.

tdlib/td/master • a8f21f5 • 8 files, +9/-9
Update version to 1.8.65.

#tdlib
🫡2
tdlib/telegram-bot-api/master • 42d3102 • 2 files, +19/-0
Add JsonRichBlockCaption.

tdlib/telegram-bot-api/master • 0c6763b • 2 files, +52/-0
Add JsonBlockTableCell.

tdlib/telegram-bot-api/master • 01328b8 • 2 files, +287/-0
Add JsonRichBlock.

tdlib/telegram-bot-api/master • 28039d6 • 2 files, +21/-2
Add Message.rich_message.

tdlib/telegram-bot-api/master • 51ed1e7 • 1 files, +6/-0
Support rich messages in inline results.

tdlib/telegram-bot-api/master • bfd9d77 • 1 files, +7/-1
Support rich messages in editMessageText.

tdlib/telegram-bot-api/master • f0658f9 • 1 files, +1/-1
Increase maximum update size.

tdlib/telegram-bot-api/master • 59fdcc9 • 1 files, +7/-2
Add names constants for HTTP server parameters.

tdlib/telegram-bot-api/master • 0a9e569 • 2 files, +2/-2
Update version to 10.1.

#botapi
🫡2
telegramdesktop/tdesktop/dev • b54239b • 1 files, +1/-1
Attempt to force our fonts.

telegramdesktop/tdesktop/dev • d73030d • 1 files, +1/-1
Disable hinting for bundled math fonts.

telegramdesktop/tdesktop/dev • 8d60827 • 3 files, +20/-10
Fix possible crash in rich messages.

telegramdesktop/tdesktop/dev • 6532220 • 4 files, +97/-103
Slightly improved style of local storage section.

telegramdesktop/tdesktop/dev • 82efd0c • 1 files, +6/-1
Check blob extraction paths.

telegramdesktop/tdesktop/dev • 47eca40 • 1 files, +3/-0
Check passport encrypted data size.

telegramdesktop/tdesktop/dev • 8b6e326 • 1 files, +1/-1
Rasterize glyphs using Qt QPainterPath.

telegramdesktop/tdesktop/dev • d4336a9 • 4 files, +20/-6
Fix possible crash in rich messages.

telegramdesktop/tdesktop/dev • f5e93be • 6 files, +24/-15
Version 6.9.2.

- Fix possible crash in OpenGL init (Linux).
- Fix possible crash in calls (Windows on ARM).
- Fix working with system proxy (Windows).
- Fix display of rich messages without text.
- Fix display of rich messages in Recent Actions.
- Replace dispatch with TooManyCooks (Linux).

#tdesktop
🫡2
telegramdesktop/tdesktop/dev • 8165c7c • 1 files, +6/-3
Update API scheme on layer 227.

#tdesktop
🫡2
tdlib/td/master • d6debbb • 1 files, +3/-3
Fix typos in documentation

#tdlib
🫡2
New telegramdesktop/tdesktop release: v6.9.2 (stable)

- Fix possible crash in OpenGL init (Linux).
- Fix possible crash in calls (Windows on ARM).
- Fix working with system proxy (Windows).
- Fix display of rich messages without text.
- Fix display of rich messages in Recent Actions.
- Replace dispatch with TooManyCooks (Linux).

#tdesktop
🫡3🤝1
morethanwords/tweb/master • bc4c42a • 2 files, +6/-9
fix: pinned audio plate ripple and click-to-message only on the title part

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

morethanwords/tweb/master • 816f700 • 1 files, +10/-2
fix: show the Mute plate instead of the composer in the Replies chat

Nobody can write to the Replies service chat — iOS and Desktop replace
the message input with a Mute/Unmute button there. Reuse the existing
channel "can't write" plate for REPLIES_PEER_ID.

Fixes https://bugs.telegram.org/c/62502

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

#webk
🫡4
telegramdesktop/tdesktop/dev • 90cdf55 • 1 files, +6/-1
Adjust resources for docker run script.

#tdesktop
🫡3
morethanwords/tweb/master • e7e5d2a • 4 files, +117/-22
perf: stop bluff-spoiler from janking the app while animating

The mask used to be delivered as canvas.toDataURL() (sync GPU readback +
PNG encode on the main thread, 4-7ms) inlined into a full <style> replace
every ~80ms, whose invalidation cost scaled with the size of the whole
document - the entire app stuttered while any preview spoiler animated.

Now the WebGL frame leaves the main thread as a GPU-side
createImageBitmap copy (~0.1ms), a tiny worker turns it into a PNG blob,
and the object URL lands in inherited custom properties set inline on
the spoiler wrapper, so the style invalidation is scoped to the spoiler
subtree instead of the document. URLs still applied on connected
elements are pinned from revocation so a paused spoiler never loses its
mask. Falls back to canvas.toBlob() on the main thread where
OffscreenCanvas is unavailable.

Main-thread cost per tick: ~10-15ms (growing with DOM size) -> ~0.3ms.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

morethanwords/tweb/master • bcec324 • 3 files, +42/-24
perf: single group mask per bluff-spoiler run + predecode against flicker

The mask is a group effect, so one mask-image set inline on the run
wrapper masks all the letter spans at once - the per-letter mask layers
and the --index position math are gone, and a tick now invalidates the
style of a single element. The letter spans keep only their fixed width
(wrapping/ellipsis still work, the texture stays continuous across
lines via inline slice semantics).

Blob URLs load asynchronously (unlike the old inline data URLs), so a
paint could land between the style update and the image load, blinking
the mask to transparent. New masks are now published only after
img.decode() puts them in the image cache, and the decoded images stay
pinned until their URL is revoked.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

morethanwords/tweb/master • 5252c51 • 2 files, +17/-62
fix: deliver bluff-spoiler masks as data URLs - blob URLs flicker

CSS fetches a blob: URL asynchronously on every swap, even when the
image was predecoded through an <img> (the caches are not shared), so a
paint could land between the style update and the load, blanking the
mask. Reproduced on an exact replica: 1 of 8 random captures caught the
spoiler fully transparent; with data: URLs (which resolve synchronously,
as in the original implementation) all captures were stable.

The worker now replies with a data URL via FileReaderSync, which also
deletes the whole object-URL lifecycle (pool, revocation, pinning,
predecode). Masks are encoded as WebP - pixel-identical alpha to PNG at
well under half the size (the property parse + recalc per tick drop from
~3.2ms to ~1.1ms); browsers without canvas WebP encoding fall back to
PNG. The prefixed mask-image property is written only where the
unprefixed one is unsupported.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

#webk
🫡4
morethanwords/tweb/master • 6f0cc74 • 4 files, +480/-351
perf: run the bluff-spoiler simulation entirely inside the worker

The WebGL particles simulation is extracted from DotRenderer into a
DOM-free DotRendererCore that works on both HTMLCanvasElement and
OffscreenCanvas. For bluff spoilers the worker now owns the whole
render: it steps the simulation at 60fps on its own OffscreenCanvas,
encodes a frame every 4 ticks and posts ready data URLs - the main
thread no longer runs the rAF loop, the WebGL draws, or the
createImageBitmap copy; it only assigns the received mask to the
spoiler wrappers ~12 times per second.

Playback is driven by the existing animationIntersector callbacks
(play/pause messages start and stop the worker loop), so off-screen and
idle behavior is unchanged. Bubble text/image spoilers keep the
main-thread instance via the same core; browsers without WebGL in
OffscreenCanvas keep the previous main-thread-simulation path.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

morethanwords/tweb/master • 9dd54fc • 3 files, +366/-24
perf: render media-spoiler dots inside a worker via transferred canvases

Each media spoiler's dots canvas now transfers control to a dedicated
worker that owns the 480x480 particles simulation (same DotRendererCore)
and draws every visible target at 60fps - the main thread no longer
runs the simulation loop or the per-target drawImage for photo/video
spoilers, paid-media covers and gift-link dots; it only forwards
play/pause from animationIntersector.

The click reveal is split: the worker animates the dots push-zoom and
the growing clipping hole, while the main thread keeps punching the
matching hole in the underlying thumbnail (that canvas already has a 2D
context and cannot be transferred) with the same duration and easing,
and resolves the caller's promise as before. drawClippingCircle moved
to dotRendererCore for both sides. Browsers without WebGL in
OffscreenCanvas keep the main-thread path untouched.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

morethanwords/tweb/master • 0c505ec • 6 files, +440/-319
perf: merge spoiler rendering into one SharedWorker for all tabs

The two dedicated workers (bluff masks, media dots) are merged into a
single spoilerRenderer.worker that runs as a SharedWorker - every tab
feeds from the same simulations and one GL context, and a bluff mask is
encoded once and broadcast to all tabs that play it. The worker keeps
per-port state (playing flags, media targets), steps simulations only
while some port needs them, frees the GL resources when the last port
leaves, and respects ?noSharedWorker=1 / missing SharedWorker support
(Chrome Android < 120) by falling back to a per-tab dedicated worker
with the same script.

Tab lifetime is handled with a pagehide 'bye' plus the MessagePort
close event where supported; simulations are keyed by device pixel
ratio in case tabs live on different displays. The connection is
refcounted by its two consumers, so releasing bluff does not tear down
media and vice versa.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

#webk
🫡4