fa
Feedback
Telegram github commits and releases

Telegram github commits and releases

رفتن به کانال در Telegram

Broadcast from the most important Telegram clients' repositories

نمایش بیشتر
4 857
مشترکین
+2924 ساعت
-207 روز
-22830 روز
آرشیو پست ها
telegramdesktop/tdesktop/dev8ca06bd1 files, +2/-2 Fix OpenGL in Windows builds. telegramdesktop/tdesktop/dev7db0d5d1 files, +1/-1 Fix parsing some incorrect formulas. #tdesktop

UnigramDev/Unigram/develop7ad76471 files, +4/-2 Remove redundant log #unigram

UnigramDev/Unigram/develop4a2df732 files, +0/-2 Remove dangling event handle UnigramDev/Unigram/develop83448cb9 files, +218/-18 Supergroup guard bot settings UnigramDev/Unigram/develop3db620423 files, +1358/-334 Rich messages improvements UnigramDev/Unigram/develop41773a91 files, +1/-1 Update TDLib UnigramDev/Unigram/develop70121171 files, +4/-0 Handle automatic decline UnigramDev/Unigram/developf059eee5 files, +55/-16 Show rich messages in shared media UnigramDev/Unigram/developb1d121b1 files, +8/-0 Update enum UnigramDev/Unigram/develop4f43ba81 files, +10/-2 Delete ranges UnigramDev/Unigram/develop0fd865e1 files, +6/-6 Fix native compilation UnigramDev/Unigram/develop23c5d291 files, +143/-15 Improve text formatting UnigramDev/Unigram/develop7789fa53 files, +38/-22 Update session api UnigramDev/Unigram/develop29dab751 files, +1/-1 Bump version to 12.8 UnigramDev/Unigram/develop4ef4df61 files, +1/-1 Update microtex UnigramDev/Unigram/developd9749d91 files, +1/-1 Ignore formulas in inline text UnigramDev/Unigram/develop4c1b6d62 files, +257/-160 Rich messages improvements #unigram

morethanwords/tweb/master12b30e96 files, +267/-60 feat: convert .mov attachments to mp4 in the send popup QuickTime files — the default macOS screen-recording/camera format — were sent as plain documents in browsers that can't play video/quicktime (Chrome on macOS), and even Safari sent them as .mov that recipients on other platforms couldn't stream. Now they get the same treatment as GIFs: conversion starts the moment the file lands in the new-media popup (after the open animation finishes, so the heavy work doesn't jank it), with a progress circle on the item and the send button locked until it's done. The conversion (helpers/movToVideo) goes through mediabunny's Conversion: H.264+AAC sources are remuxed without re-encoding (lossless, I/O-bound — a 650MB file repackages in about a second), other codecs are transcoded via WebCodecs to the universally playable pair; a track that can't be carried over makes the conversion throw, falling back to the old document behavior with the same error toast as GIFs. Eligibility is capped by the user's upload limit (upload_max_fileparts default/premium = 2GB/4GB, read from the cached app config); non-H.264 sources keep the media-editor 100MB cap instead, since a real transcode runs at roughly realtime. Outputs over 512MB use moov-at-end instead of fastStart 'in-memory', halving the memory peak. A convertible .mov counts as media throughout the popup (routing, albums, spoilers, paid-media and rights checks — keyed off the converted form, video/mp4), in the paste/drop/share entry points, and is selectable in the "Photo or Video" picker. The GIF conversion state maps are generalized (convertedFiles/fileConversions/failedConversions) and shared by both flows. Polish that fell out of testing, also affecting shared video code: - the uploaded/local video poster box grew from 320x240 (blurry on retina, 135x240 for portrait) to 720 max per side, matching the media editor's thumbnail cap, never upscaling a smaller source; - attachFiles destroys the old items only after the new ones replace them in the DOM — destroying upfront blanked the still-visible media out for the whole rebuild (createVideo clears src on destroy); - an uploading video bubble no longer autoplays under the progress spinner: the autoplay attribute is suppressed while message.uploadingFileName is set, and since the bubble isn't re-rendered on message_sent, playback resumes when the upload promise resolves (rounds keep their own is_outgoing handling). Verified e2e in the preview: a generated h264+pcm .mov pasted into Saved Messages converts (video copied, audio transcoded to AAC) and arrives as a streamable video/mp4; a corrupt .mov falls back to a document with the error toast; 162MB and 647MB files remux in ~1s. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> #webk

morethanwords/tweb/master5f9c0fb8 files, +92/-60 refactor: migrate from deprecated mp4-muxer to mediabunny mp4-muxer is deprecated in favor of mediabunny. Muxer/ArrayBufferTarget become Output/Mp4OutputFormat/BufferTarget, and chunks now go through EncodedVideo/AudioPacketSources whose async add() calls are chained from the sync encoder callbacks (decode order + backpressure), so finalize() is async for both callers. The opus track config is no longer declared upfront — it is deduced from the encoder metadata passed with the first packet. frameRate is forwarded to the video track only when the caller sets one, because mediabunny snaps timestamps to it (gifToVideo frames sit off-grid). mediabunny's bundled dom-mediacapture-transform typings narrow MediaStream.getVideoTracks() globally, hence the cast in callInstanceBase. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> #webk

tdlib/td/master062f2601 files, +1/-1 Fix typo in animation.has_stickers documentation #tdlib

morethanwords/tweb/masterea3c5359 files, +468/-80 perf: move the bubble text-spoiler overlays into the spoiler worker The last main-thread spoiler rendering is gone: the overlay canvas of a bubble text spoiler now transfers control to the shared spoiler worker, which draws the tinted particle chunks and animates the click unwrap from the same text simulation that feeds the bluff masks. The main thread keeps everything DOM-bound - measuring the line rects and colors, hover/click handling, the visibility class machinery - and pushes snapshots to the worker only when they change (the unwrap progress signal still runs on main for the class toggles; the worker mirrors the same curve for the pixels). The displayed size of a transferred canvas has to be pinned via inline CSS: the placeholder keeps its default 300x150 intrinsic size, so with the worker-side resize alone the committed bitmap would stretch (the legacy path derives it from the width/height attributes instead). simpleEasing/unwrapEasing/defaultEasing move into a @helpers/easings leaf so the worker shares the exact curves, and drawImageFromSource accepts offscreen contexts. Browsers without WebGL in OffscreenCanvas keep the previous main-thread overlay path. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> #webk

morethanwords/tweb/master001f3ed8 files, +175/-134 refactor: address spoiler-renderer review findings - The connection module now owns the consumer lifecycle: retain() takes the consumer's message listener and returns a scoped handle whose release() unregisters it - the per-consumer listenerAdded flags and the implicit 'who may send bye' contract are gone (only the module sends 'bye': on dispose and on pagehide, registered once). - A worker loading failure is now logged and flips new spoilers to the main-thread fallback (isWorkerSimSupported consults the failure flag, in-flight bluff encodes are unblocked via a synthesized connection-error message). - The worker prunes dpr-keyed simulations as soon as no connected tab uses them instead of waiting for the last tab to leave. - The duplicated target-canvas creation (classes, sizing, rotate/flip transforms) is extracted into DotRenderer.createTargetCanvas. - simpleEasing and applyColorOnContext moved into leaf helpers (re-exported from their old homes) so the worker shares the exact implementations instead of mirroring them. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> #webk

morethanwords/tweb/master6f0cc744 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/master9dd54fc3 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/master0c505ec6 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

morethanwords/tweb/mastere7e5d2a4 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/masterbcec3243 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/master5252c512 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

telegramdesktop/tdesktop/dev90cdf551 files, +6/-1 Adjust resources for docker run script. #tdesktop

morethanwords/tweb/masterbc4c42a2 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/master816f7001 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

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

tdlib/td/masterd6debbb1 files, +3/-3 Fix typos in documentation #tdlib

telegramdesktop/tdesktop/dev8165c7c1 files, +6/-3 Update API scheme on layer 227. #tdesktop

telegramdesktop/tdesktop/devb54239b1 files, +1/-1 Attempt to force our fonts. telegramdesktop/tdesktop/devd73030d1 files, +1/-1 Disable hinting for bundled math fonts. telegramdesktop/tdesktop/dev8d608273 files, +20/-10 Fix possible crash in rich messages. telegramdesktop/tdesktop/dev65322204 files, +97/-103 Slightly improved style of local storage section. telegramdesktop/tdesktop/dev82efd0c1 files, +6/-1 Check blob extraction paths. telegramdesktop/tdesktop/dev47eca401 files, +3/-0 Check passport encrypted data size. telegramdesktop/tdesktop/dev8b6e3261 files, +1/-1 Rasterize glyphs using Qt QPainterPath. telegramdesktop/tdesktop/devd4336a94 files, +20/-6 Fix possible crash in rich messages. telegramdesktop/tdesktop/devf5e93be6 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

tdlib/telegram-bot-api/master42d31022 files, +19/-0 Add JsonRichBlockCaption. tdlib/telegram-bot-api/master0c6763b2 files, +52/-0 Add JsonBlockTableCell. tdlib/telegram-bot-api/master01328b82 files, +287/-0 Add JsonRichBlock. tdlib/telegram-bot-api/master28039d62 files, +21/-2 Add Message.rich_message. tdlib/telegram-bot-api/master51ed1e71 files, +6/-0 Support rich messages in inline results. tdlib/telegram-bot-api/masterbfd9d771 files, +7/-1 Support rich messages in editMessageText. tdlib/telegram-bot-api/masterf0658f91 files, +1/-1 Increase maximum update size. tdlib/telegram-bot-api/master59fdcc91 files, +7/-2 Add names constants for HTTP server parameters. tdlib/telegram-bot-api/master0a9e5692 files, +2/-2 Update version to 10.1. #botapi

tdlib/td/masteredab0cb3 files, +20/-7 Add and use DialogParticipantManager::get_chat_join_result_object. tdlib/td/master5e21b565 files, +35/-7 Support rich messages in move_message_content_sticker_set_to_top. tdlib/td/master434ef4b2 files, +7/-1 Add td_api::chatJoinResultRequestDeclined. tdlib/td/mastera74cc9a1 files, +1/-1 Ignore draft replies to local messages. tdlib/td/masterd78ceef6 files, +20/-15 Don't warn about invalid entities in old checklist tasks. tdlib/td/master74457461 files, +1/-2 Improve anchor handling. tdlib/td/master44db7181 files, +1/-1 Fix trim_first. tdlib/td/masterd1712572 files, +9/-9 Add td_api::richTextReferenceLink. tdlib/td/master108b33f1 files, +2/-2 Make pageBlockTable.caption nullable. tdlib/td/master6d0824e1 files, +3/-0 Check for bots in WebBrowserManager::on_authorization_success. tdlib/td/master2fe41561 files, +8/-8 Don't send automatic rich text to the server. tdlib/td/mastere80270f1 files, +6/-3 Fix get_input_page_table_cell. tdlib/td/mastera8f21f58 files, +9/-9 Update version to 1.8.65. #tdlib

tdlib/td/master01b0cec2 files, +2/-2 Update pageBlockChatLink documentation. tdlib/td/master4f3676d2 files, +14/-14 Simplify PageBlock field names. tdlib/td/master4e59e8215 files, +15/-5 Fix includes. tdlib/td/master104536c4 files, +12/-12 Minor improvements. tdlib/td/master84f21a11 files, +4/-1 Fix add_message_content_dependencies for ManagedBotCreated. tdlib/td/masterb629bd32 files, +14/-12 Use get_message_content_rich_message if possible. tdlib/td/master1f55d801 files, +1/-1 Fix richTextMention documentation. tdlib/td/mastere6b6c171 files, +1/-0 Add missing include. tdlib/td/master82607ee1 files, +1/-1 Improve documentation. tdlib/td/master5d11c721 files, +1/-1 Fix misprint. tdlib/td/master8df09c13 files, +19/-14 Make pageBlockCaption nullable. tdlib/td/master39d16622 files, +7/-3 Make pageBlockCaption.credit nullable. tdlib/td/master6817f612 files, +7/-6 Make credit and table caption nullable. tdlib/td/master3f9f03c1 files, +1/-1 Improve documentation. tdlib/td/masterfe5ab8d1 files, +1/-1 Return no media for invalid poll media. tdlib/td/master3a2c0833 files, +8/-18 Simplify get_poll_media_object usage. tdlib/td/master09b9c241 files, +1/-1 Fix logging. #tdlib