ru
Feedback
Telegram github commits and releases

Telegram github commits and releases

Открыть в Telegram

Broadcast from the most important Telegram clients' repositories

Больше
4 834
Подписчики
-1324 часа
-487 дней
-22430 день

Загрузка данных...

Привлечение подписчиков
июнь '26
июнь '26
+17
в 0 каналах
май '26
+75
в 5 каналах
Get PRO
апрель '26
+39
в 9 каналах
Get PRO
март '26
+9
в 1 каналах
Get PRO
февраль '26
+13
в 2 каналах
Get PRO
январь '26
+16
в 2 каналах
Get PRO
декабрь '25
+19
в 0 каналах
Get PRO
ноябрь '25
+17
в 0 каналах
Get PRO
октябрь '25
+7
в 0 каналах
Get PRO
сентябрь '25
+5
в 0 каналах
Get PRO
август '25
+19
в 1 каналах
Get PRO
июль '25
+21
в 1 каналах
Get PRO
июнь '25
+23
в 0 каналах
Get PRO
май '25
+71
в 0 каналах
Get PRO
апрель '25
+28
в 0 каналах
Get PRO
март '25
+29
в 0 каналах
Get PRO
февраль '25
+24
в 0 каналах
Get PRO
январь '25
+61
в 0 каналах
Get PRO
декабрь '24
+16
в 0 каналах
Get PRO
ноябрь '24
+86
в 0 каналах
Get PRO
октябрь '24
+112
в 0 каналах
Get PRO
сентябрь '24
+814
в 0 каналах
Get PRO
август '24
+606
в 0 каналах
Get PRO
июль '24
+475
в 0 каналах
Get PRO
июнь '24
+415
в 0 каналах
Get PRO
май '24
+392
в 0 каналах
Get PRO
апрель '24
+422
в 0 каналах
Get PRO
март '24
+598
в 1 каналах
Get PRO
февраль '24
+1 585
в 0 каналах
Get PRO
январь '24
+3 043
в 0 каналах
Get PRO
декабрь '23
+3 050
в 0 каналах
Get PRO
ноябрь '23
+42
в 0 каналах
Get PRO
октябрь '23
+34
в 1 каналах
Get PRO
сентябрь '23
+25
в 0 каналах
Get PRO
август '23
+30
в 0 каналах
Get PRO
июль '23
+26
в 0 каналах
Get PRO
июнь '23
+12
в 0 каналах
Get PRO
май '23
+11
в 0 каналах
Get PRO
апрель '23
+18
в 0 каналах
Get PRO
март '23
+22
в 0 каналах
Get PRO
февраль '23
+14
в 0 каналах
Get PRO
январь '23
+10
в 0 каналах
Get PRO
декабрь '22
+13
в 0 каналах
Get PRO
ноябрь '22
+30
в 0 каналах
Get PRO
октябрь '22
+9
в 0 каналах
Get PRO
сентябрь '22
+23
в 0 каналах
Get PRO
август '22
+29
в 0 каналах
Get PRO
июль '22
+36
в 0 каналах
Get PRO
июнь '22
+22
в 0 каналах
Get PRO
май '22
+20
в 0 каналах
Get PRO
апрель '22
+40
в 0 каналах
Get PRO
март '22
+52
в 0 каналах
Get PRO
февраль '22
+24
в 0 каналах
Get PRO
январь '22
+13
в 0 каналах
Get PRO
декабрь '21
+61
в 0 каналах
Get PRO
ноябрь '21
+20
в 0 каналах
Get PRO
октябрь '21
+11
в 0 каналах
Get PRO
сентябрь '21
+28
в 0 каналах
Get PRO
август '21
+21
в 0 каналах
Get PRO
июль '21
+31
в 0 каналах
Get PRO
июнь '21
+25
в 0 каналах
Get PRO
май '21
+6
в 0 каналах
Get PRO
апрель '21
+40
в 0 каналах
Get PRO
март '21
+16
в 0 каналах
Get PRO
февраль '21
+11
в 0 каналах
Get PRO
январь '21
+30
в 0 каналах
Get PRO
декабрь '20
+477
в 0 каналах
Дата
Привлечение подписчиков
Упоминания
Каналы
09 июня0
08 июня+3
07 июня+2
06 июня+8
05 июня+2
04 июня0
03 июня0
02 июня+1
01 июня+1
Посты канала
telegramdesktop/tdesktop/devf3103131 files, +1/-1 Try improving context loss handling. telegramdesktop/tdesktop/deve38fc747 files, +210/-58 Mark IV links in shared links section. #tdesktop

2
morethanwords/tweb/master • 8be3bec • 1 files, +2/-2 fix: don't offer forward for protected messages in cross-chat selection The per-peer loop in AppSelection.updateContainer overwrote cantForward/ cantDelete on each iteration instead of OR-accumulating them. With a multi-peer selection (only reachable via global search), selecting a no_forwards message plus a forwardable message from another chat left the flags reflecting only the last peer iterated, re-enabling the Forward button and bypassing the content-protection restriction. Accumulate with ||= so a single unforwardable peer keeps the whole selection unforwardable, matching cantForwardDeleteMids' per-mid logic and the loop's existing `if(cantForward && cantDelete) break`. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> morethanwords/tweb/master • 068e422 • 1 files, +7/-0 fix: don't hide sibling album items' floating overlays in media viewer hideFloatings ran querySelectorAll over the whole bubble, so opening one album item dimmed every item's .video-time/.video-play overlays. Scope to the clicked item's .album-item while still hiding bubble-level floatings. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> morethanwords/tweb/master • e2705c6 • 2 files, +14/-8 feat: show views/shares count in message time tooltip Append exact views and forwards (shares) counts to the message timestamp title, like in TDesktop, so hovering the time/views area reveals them. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> #webk
100
3
morethanwords/tweb/master • ed1ae98 • 1 files, +13/-1 fix: animate chat-list/topbar video avatars only for premium users Match Telegram Android: in the chat list and chat topbar a video (animated) avatar plays only when its owner is a Premium user. Android's ImageReceiver.setForUserOrChat sets a videoLocation only under isPremiumUser(user) && has_video, and its chat branch sets no video at all — so non-Premium users, bots (which can't hold Premium) and groups/channels all stay static there. The big profile avatar and the avatar/media viewer are unchanged — they keep animating for everyone. Owner Premium is read synchronously from the cached peers mirror (apiManagerProxy.getUser), so this adds no request to the avatar-render path. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> morethanwords/tweb/master • afca7f7 • 1 files, +0/-2 fix: show "Nobody" option in Profile Photos privacy The Profile Photos privacy section hid the Nobody radio via skipTypes: [PrivacyType.Nobody]. Both official clients offer it (Android PRIVACY_RULES_TYPE_PHOTO handles TYPE_NOBODY; tdesktop ProfilePhotoPrivacyController handles Option::Nobody), and it is the natural pairing for the public (fallback) photo — nobody sees the real photo, restricted users see the public one. Remove the skip and the now-unused PrivacyType import. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> morethanwords/tweb/master • aaad022 • 1 files, +0/-2 fix: show "Nobody" option in Bio privacy All official clients (iOS, Android, Desktop) offer Everybody/Contacts/Nobody for Bio (privacyKeyAbout). tweb was suppressing Nobody via skipTypes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> morethanwords/tweb/master • 34ea6c7 • 2 files, +21/-7 fix: stronger frosted-glass side blur for vertical photos with caption The letterbox side-fill behind a portrait photo blurred the full-res image at radius 12 then object-fit: cover scaled it down, making the blur barely visible. Official clients downscale to a tiny thumbnail before blurring. Add an optional maxSize to blur() that downscales the source before the blur pass, and use blur(url, 10, 2, 48) for the side-fill (matches Android's ~48px/radius-10 config). Also cheaper: blurs a 48px image, not the full one. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> #webk
81
4
telegramdesktop/tdesktop/dev • ab656cb • 1 files, +14/-3 Update Windows ARM64 action to VS2026 #tdesktop
97
5
telegramdesktop/tdesktop/dev • df3d8b8 • 1 files, +5/-5 Fix rotated video rendering in calls #tdesktop
109
6
telegramdesktop/tdesktop/dev • 24b4724 • 1 files, +3/-0 Add newer cmake to snap build #tdesktop
113
7
telegramdesktop/tdesktop/dev • 0cdf4ff • 1 files, +2/-1 Support cmake 4 in Docker #tdesktop
116
8
telegramdesktop/tdesktop/dev • e2c42dd • 1 files, +1/-1 Update cmake_helpers for cmark-gfm packaged mode. #tdesktop
122
9
telegramdesktop/tdesktop/dev • ee20ac6 • 2 files, +5/-1 Drop session-less redundant accounts on acc add. telegramdesktop/tdesktop/dev • 614ee45 • 10 files, +951/-38 Implement support for flatpak updates #tdesktop
124
10
morethanwords/tweb/master • dfb013e • 5 files, +47/-9 fix: show limit-reached toast when saving GIFs or faving stickers saveGif / faveSticker silently trimmed the list to the account limit (saved_gifs_limit_*, stickers_faved_limit_*) with no feedback, unlike iOS/Android/tdesktop which show a "replaced" toast. They now flag limitReached on the gif_updated / sticker_updated events, and appImManager surfaces a toast via a shared showLimitReplacedToast helper: non-premium users get a clickable "increase the limit" Premium upsell, premium users a plain "replaced" message. Strings mirror the official iOS/Android wording. Fixes https://bugs.telegram.org/c/62515 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> morethanwords/tweb/master • f976635 • 1 files, +1/-0 docs(CLAUDE.md): never regenerate langPack.strings manually (auto-generated) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> #webk
130
11
morethanwords/tweb/master • de7c31e • 43 files, +1969/-109 Video avatars, public/personal profile photos & suggested-photo service messages Animated (video) profile photos and related profile-photo features, ported from the official iOS/Android/Desktop clients. Display - Animated avatars play in the profile carousel, chat list, topbar and the full-screen avatar/media viewer; message-bubble avatars stay static. Gated by lite-mode 'video'; off-screen videos pause. Upload - Media editor gains a video-avatar mode (<=10s trim, forced mute, cover-frame picker; 800px / 30fps / 1.5Mbps caps); the AvatarEdit pipeline wires it through. Public (fallback) & personal photos - Privacy > Profile Photo: set / update / remove a public (fallback) photo. - Contact editing: Set / Suggest / Reset a personal contact photo (correct save / suggest MTProto flags). Suggested & changed photos in chat - messageActionSuggestProfilePhoto renders the photo inline (generic wrapServiceMediaBubble); the receiving side opens it in the editor and sets it as the profile photo on confirm, with a toast. - Group / channel avatar-change service messages show the (animated) photo; clicking opens the media viewer. Notable fixes - Fallback-photo download via inputPhotoFileLocation (not a synthetic peer). - Channel video-avatar resolution in topbar / chat list (getFullVideoPhoto fetches the chat full photo; failed video loads are no longer cached). - editContact refreshes the full peer after set / suggest / reset. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> #webk
119
12
morethanwords/tweb/master • b43026f • 2 files, +81/-13 fix: keep per-chat theme on global toggle and reveal it with the theme-switch circle When the open chat pins its own theme/wallpaper, a global day/night toggle no longer overwrites it with the global background. chatBackground's theme_changed listener re-publishes the chat's own theme/wallpaper (tracked as ownedTheme/ownedWallPaper) instead of the global one; a same-render in-flight dedup lets the chat's useIsNightTheme re-publish attach to the in-flight render rather than supersede it; and appImManager's theme_changed listener defers when this.chat owns the background. The per-chat wallpaper also stopped popping in before the circular reveal. setBackground read themeController.getTheme() synchronously (in resolveBackgroundSync and the ownership check), so Chat's reactive update() effect subscribed to appSettings.theme and re-rendered the wallpaper the instant switchTheme flips the setting -- before startViewTransition, painting the new wallpaper into the already-captured old snapshot. Those reads are now wrapped in untrack(): setBackground is imperative and must not create a reactive dependency in its caller. The re-render defers to the theme_changed event inside the view-transition update callback, so it lands in the new snapshot and is revealed together with the circle. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> morethanwords/tweb/master • edeebd5 • 2 files, +41/-3 Fix phone number paste on the sign-in page Pasting an international number into the login phone field produced a mangled result (e.g. '+66809716338' became '+66', or a doubled country code). Two causes: - telInputField: a contentEditable paste inserts the raw clipboard text at the caret even when the paste event is preventDefault-ed in Chrome, so pasting onto the pre-filled country code concatenated/doubled it. Compute the country-code-aware merge in the paste handler (a full international number with +/00 replaces the field; a national number appends to the current code, dropping a leading trunk 0) and apply it in the input handler that follows. - SignInCard: when the pasted number changed the detected country, onInput -> countryInputField.override -> onCountryChange reset telInputField.value to the bare '+code', wiping the pasted national part. Guard that reset with an 'overriding' flag so phone-driven country detection mirrors into the selector without clearing the field; a manual country pick still resets as before. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> #webk
145
13
morethanwords/tweb/master • 8dde18f • 7 files, +22/-40 style: restyle folders-sidebar unread badges + const-ify sidebar tab locals morethanwords/tweb/master • f96bff1 • 3 files, +28/-6 fix: resolve circular worker import from log-buffer export wiring logsBuffer.ts is reached by the universal logger() so it lands in every worker bundle. It held import('./exportLogs'), and exportLogs statically imports apiManagerProxy, which spawns both the mtproto and crypto workers. Rollup keeps dynamically-imported modules in the graph (it only splits the chunk), so Vite's worker bundler pulled apiManagerProxy into crypto.worker's bundle -> spawns index.worker -> spawns crypto.worker -> "Circular worker imports detected". Move the main-thread-only window.downloadLogs/collectLogs wiring out of the leaf into mountLogExport.ts, imported only from src/index.ts, so exportLogs (and apiManagerProxy) stay out of every worker bundle. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> morethanwords/tweb/master • ed7e34e • 300 files, +987/-735 Build #webk
147
14
morethanwords/tweb/master • 06558b0 • 1 files, +14/-0 fix: lift incoming P2P call info column above the action buttons A ringing incoming call shows a second button row and raises the first row into the vertically-centred avatar/name/status column, leaving the subtitle sitting under the buttons. Re-centre the column (translateY -5rem) in the space between the header and the two button rows while .two-button-rows is set; it animates back to centre (audio) or top (video) once the call connects. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> morethanwords/tweb/master • 0d5a0c1 • 1 files, +24/-1 fix: keyboard scroll in chat — PageUp/PageDown + ArrowUp/Down in read-only chats PageUp/PageDown were ignored by the global keydown listener, so the chat never scrolled by page. ArrowUp/Down hijacked the key for edit-message even in channels where the user can't post, where there's nothing to edit. Both now hand keyboard focus to the bubbles scroll container and let the browser scroll it natively (overflow:auto + outline:none → focus is invisible). Existing edit-last / reply-to-previous shortcuts in writable chats are unchanged. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> morethanwords/tweb/master • 4b1d0bc • 1 files, +4/-4 fix: firing ripple with short trackpad click morethanwords/tweb/master • ca12e13 • 10 files, +338/-83 feat: rework Chat Wallpaper picker — instant open, lazy tiles, smooth theme switch Overhaul of the Chat Wallpaper / Set-a-color background picker: - Fix: picks never applied. The theme-settings Solid store was mutated directly (silently dropped) and appChatBackground short-circuited an undefined-opts wallpaper change. Persist via setWallpaperForCurrentTheme and resolve the background up front so the picked wallpaper actually shows. - Theme switch via the menu now swaps a static-image background smoothly: the view transition awaits the chat-background re-render, and heavyAnimation pauses video/sticker rendering during it with a safety timeout so the app can't freeze mid-transition. - Picker grid adopts the Shared-Media media-grid look (full-bleed, rounded), with corner-aware selection rounding driven by JS-computed classes (markGridCornerItem) rather than :nth-child. Same for the Set-a-color grid. - Performance: the grid opens instantly and only does work for visible tiles. Each whole tile (file download + gradient/pattern/image raster) is deferred to a LazyLoadQueue and built on scroll-into-view, instead of downloading + rasterizing all ~70 up front (was ~860ms reveal plus sustained main-thread jank). - Tiles show a synchronous colour skeleton (CSS gradient from the wallpaper's own colours; black fallback for image-only) so the grid is never empty, even mid open-slide. - The wallpaper list is cached synchronously (warmed by the General Settings preload) so the grid + skeletons render in the first frame of the open slide (~11ms) instead of after the async getWallPapers (~128ms). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> #webk
131
15
telegramdesktop/tdesktop/dev • 37c5bdb • 1 files, +1/-1 Update User-Agent for DNS to Chrome 148.0.0.0. telegramdesktop/tdesktop/dev • ea7b419 • 1 files, +0/-1 Removed 1 unused style entries. #tdesktop
132
16
morethanwords/tweb/master • 0ac46c1 • 1 files, +14/-0 fix: clear stuck drag-and-drop overlay when a file drag ends outside the window Dragging a file into the chat and releasing it outside the window/tab left the drop overlay (.drops-container.is-visible + body.is-dragging) stuck, blocking the chat: no 'drop' fires for a drop outside the app, and an external OS file drag has no in-document source so 'dragend' never fires either, leaving the dragenter/dragleave counter unbalanced. Add a watchdog armed on every 'dragover' (which keeps firing while a drag is held over the page and stops the instant it leaves/ends): if it lapses for 500ms, force-hide the overlay. A still-active drag re-arms it each tick. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> #webk
182
17
morethanwords/tweb/master • 9025762 • 3 files, +99/-7 fix: don't drop out of E2E conferences on duplicate chain-block delivery TdE2E chain blocks reach the call via two paths — the 1.5s poll and the server `updateGroupCallChainBlocks` push — but only the poll advanced the `e2eChainOffsets` cursor. A burst of pushes (several participants joining at once) left the cursor stale, so the next poll replayed a batch of already-applied blocks. `applyBlockBytes` deduped only the chain tip, so the older block in the batch fell through to the strict `applyBlock`, which threw a fatal HEIGHT_MISMATCH — the e2e worker raised `callFailed` and the client hung itself up. - applyBlockBytes: skip blocks strictly below our height (already applied) before the tip-hash check; keep the hash check for the same-height case so a genuine sibling/fork at the tip still fails. Real forward gaps (height > height + 1) stay fatal. - group_call_chain_blocks push handler: advance the poll cursor to the pushed next_offset (max-guarded against out-of-order pushes) so the next poll doesn't re-fetch and re-deliver what the push already applied. - tests: regression coverage for re-delivery of below-tip blocks + an in-order batch replay of the whole applied chain. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> #webk
168
18
telegramdesktop/tdesktop/nightly • 344e330 • 2 files, +6/-2 Fixed crash on Linux and Windows. telegramdesktop/tdesktop/nightly • 02f420a • 1 files, +52/-3 Updated macOS build on Github CI. #tdesktop
181
19
telegramdesktop/tdesktop/nightly • 5d7ca1b • 1 files, +52/-3 Updated macOS build on Github CI. #tdesktop
184
20
telegramdesktop/tdesktop/dev • 65f24c3 • 1 files, +2/-2 Fix build with Windows on ARM. #tdesktop
178