ar
Feedback
Telegram github commits and releases

Telegram github commits and releases

الذهاب إلى القناة على Telegram

Broadcast from the most important Telegram clients' repositories

إظهار المزيد
4 771
المشتركون
-1124 ساعات
-767 أيام
-13130 أيام

جاري تحميل البيانات...

جذب المشتركين
يونيو '26
يونيو '26
+129
في 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 قنوات
التاريخ
نمو المشتركين
الإشارات
القنوات
30 يونيو0
29 يونيو0
28 يونيو0
27 يونيو+1
26 يونيو0
25 يونيو0
24 يونيو0
23 يونيو0
22 يونيو+2
21 يونيو+2
20 يونيو+7
19 يونيو+1
18 يونيو+4
17 يونيو+5
16 يونيو+50
15 يونيو+34
14 يونيو+1
13 يونيو+2
12 يونيو+1
11 يونيو0
10 يونيو0
09 يونيو+2
08 يونيو+3
07 يونيو+2
06 يونيو+8
05 يونيو+2
04 يونيو0
03 يونيو0
02 يونيو+1
01 يونيو+1
منشورات القناة
telegramdesktop/tdesktop/dev4943c419 files, +16/-38 Get rid of new Q_OS_LINUX telegramdesktop/tdesktop/dev34470201 files, +3/-2 Make macOS packaged cache key more stable telegramdesktop/tdesktop/dev22143a81 files, +15/-3 Per-week cache key for ccache on Linux action telegramdesktop/tdesktop/dev734d7093 files, +32/-1 Allow to override ffmpeg thread count for debugging purposes #tdesktop

2
morethanwords/tweb/master • e95fe52 • 1 files, +5/-1 Keep personal account in paid-reaction send-as list channels.getSendAs(for_paid_reactions=true) omits the personal account; the client injects it as the default peer. But this.sendAsPeers — the canonical pool every click handler rebuilds the menu from — was sliced before that injection, so the personal account was missing from it. The menu rendered correctly on first open (built from the local list), but the first selection regenerated it from this.sendAsPeers and dropped the personal account permanently. Save this.sendAsPeers after folding in the current/default peer. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> morethanwords/tweb/master • 07f7288 • 9 files, +214/-51 Notify when another user posts a story Add a local notification when a peer you follow posts a new story, mirroring the message-notification pipeline: the worker dispatches a notificationBuild task carrying a story payload (discriminated union) and the main thread builds and shows it. Respects the existing per-peer/global stories_muted setting, skips own/out/already-read stories, and covers the uncached-peer path so a peer's very first story still notifies. Story notifications play no sound and don't bump the tab-title counter (noIncrement). Clicking opens the peer's stories at the first unread (matching Android and the avatar tap): in-page directly, on the service-worker/background-push path via a custom.story_id marker, and cross-account via a new 'story' hash param. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> #webk
88
3
morethanwords/tweb/master • fcdcb04 • 3 files, +338/-0 Refresh chat-folder membership on unread-mark toggle and message deletion Chat-folder membership is driven by a cached index (dialog[index_N] / folder.dialogs) that is written only by dialogsStorage.processDialogForFilters — separate from the folder unread counters. Two update handlers mutated a dialog's unread state without re-processing filters, so a dialog could go stale in an exclude_read ("Unread") folder: it showed in the list with no badge (the badge reads the live unread_count, already 0) and only vanished when opened (open -> readHistory -> processDialogForFilters). - onUpdateDialogUnreadMark: marking a read chat unread didn't add it to an exclude_read folder, and clearing the mark (e.g. from another client) left it stranded there. - onUpdateDeleteMessages: deleting a channel's unread posts drops unread_count to 0 but left the channel stuck in the folder. Both fixed by calling processDialogForFilters after releaseUnreadCount, matching the readHistory ordering (release -> processDialogForFilters -> dispatch). No counter double-count: the unread*PeerIds sets are idempotent and the additive unreadMessagesCount nets to zero (release covers folders that matched before the change; the membership-change modify uses the post-mutate count). Adds synthetic regression tests: - unreadMarkFilterStale.test.ts: mark/clear maintains the index, counters net-zero. - channelMuteFilter.test.ts: muting alone is correct in isolation; deleting a channel's unread posts must drop it from exclude_read. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> morethanwords/tweb/master • f9eb2de • 8 files, +350/-12 Fix forum topic open, invite-tab, and cross-account propagation bugs - Opening a just-created topic in a cold (not-yet-warm) forum dropped the threadId and showed the forum root: Chat.setPeer set isForum only in the async onChangePeer, so a chat_update mid-transition compared against a stale isForum and reset the peer. Set isForum synchronously in setPeer. - Joining a forum via an invite link didn't open the topics tab. Route both PopupJoinChatInvite.openChat and internalLinkProcessor's already-joined (chatInviteAlready/Peek) path through appImManager.open() instead of setInnerPeer(), so forums go through op() and open the sidebar topics tab. - A topic created on another account never appeared in an open/cached topic list, and stayed hidden even after reopening or receiving messages, until a full reload. Replication-lag race: the topic-create arrives before the topic is queryable by id, messages.getForumTopicsByID returns forumTopicDeleted, and getForumTopicById blacklisted it permanently in deletedTopics. Build the topic locally from the messageActionTopicCreate action (it carries title, icon and id) instead of fetching it, and only blacklist a topic when the server explicitly returns forumTopicDeleted (not on errors/omissions). - Guard canManageTopic and the generic-animations sticker preload against null. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> #webk
49
4
morethanwords/tweb/master • 6cb2df2 • 1 files, +2/-2 Don't append live messages to the pinned-messages view The history_append/history_multiappend handlers guarded against the Scheduled/Static/Logs chat types but not Pinned. The pinned view shares the chat's messagesStorageKey and, once fully loaded, has loadedAll.bottom === true, so a regular incoming message fell through every guard and got rendered as a bubble in the pinned list. Exclude Pinned from both append handlers, matching the existing pattern; history_delete is left intact so deleted/unpinned messages still disappear from the view. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> morethanwords/tweb/master • 5d5c3ef • 3 files, +49/-3 Read mention/reaction when jumping to an already-visible message The unread mention/reaction corner button only scrolled to the target via setMessageId; the actual read is driven solely by the intersection observer, which fires only on an intersection CHANGE. When the target is already on screen — typical for reactions, which sit on our own recent messages — the programmatic scroll is a no-op, so no callback ever fires: the reaction stays unread and the badge never clears. Fix it by re-arming the observer for the focused bubble after it is rendered and scrolled into view, forcing a fresh intersection entry. It still reads only if the bubble is actually intersecting, so "read == seen" holds. - SuperIntersectionObserver.reobserve(target): re-deliver an entry for an already-observed target (handles bubbles with multiple callbacks, e.g. a mention that also carries the history observer); no-op while frozen. - ChatBubbles.reobserveUnreadContent(peerId, mid): guarded re-arm, only acts on a bubble still pending unread content (idempotent with the natural flow). - ChatInput: await the inner render/scroll promise before re-arming; poll votes keep their own read flow in goToNextMention. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> #webk
44
5
morethanwords/tweb/master • e8c9dca • 1 files, +2/-2 Skip post-send handling when no message was actually sent Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> morethanwords/tweb/master • 64efd76 • 1 files, +1/-1 Wrap long bot verification text in peer profile Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> morethanwords/tweb/master • 330ca41 • 1 files, +8/-1 Show profile Edit button for any admin, not only change_info The Edit (pencil) button in group/channel info was gated solely on the change_info right, so an admin who could manage members/permissions/admins but lacked change_info couldn't reach the edit screen — even though that screen already gates each section on its own rights and merely locks the name field when change_info is missing. Mirror tdesktop's EditPeerInfoBox::Available: show the button to any admin (channel: just_admin || change_info, excluding monoforums; basic group: change_info || change_permissions). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> #webk
88
6
morethanwords/tweb/master • d232274 • 1 files, +10/-12 Fix voice waveform dropped for non-standard (62-byte) waveforms decodeWaveform read each 5-bit sample via DataView.getUint16, which over-reads one byte past the needed one. For a 62-byte / 99-sample waveform the last sample's read landed out of bounds, threw a RangeError, and the catch returned an empty array — so the whole waveform silently failed to render (flat line). Standard 63-byte waveforms have a spare trailing byte and happened to work. Read the two bytes manually with a bounds-guarded high byte instead; output is bit-identical for 63-byte waveforms and now correct for shorter ones. Also fixes the latent byteOffset bug in the old new DataView(waveform.buffer) on view-backed arrays. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> morethanwords/tweb/master • 29ce0b6 • 5 files, +106/-16 Pause video avatars when not visible (incl. right sidebar closed) Video avatars kept animating while off-screen and, notably, while sitting in the right sidebar after it was slid closed — the column is hidden with a transform but stays mounted, so an IntersectionObserver never reports it as hidden. - avatarNew: register avatar <video>s with animationIntersector instead of an ad-hoc IntersectionObserver (pauses on off-screen / blur / idle / lite-mode, resumes when visible, survives Document-PiP). Covers both the chat-list / topbar overlay and the profile-carousel / service-bubble path, which had no visibility gating at all. - animationIntersector: add toggleVideosUnder(element, paused) to pause+lock (or resume) every registered video inside a container. - sidebarRight: pause/resume the column's avatar videos on hide()/show(), since the transform-based hide is invisible to the observer. - peerProfileAvatars: self-suspend the tab-progress rAF loop when the active video isn't advancing (restart on a captured 'play' / carousel nav), and free the carousel's registered videos on cleanup so a video locked while the sidebar was closed can't leak when the profile is torn down. - createLoopingMutedVideo: set autoplay only after the start-frame seek so the clip isn't briefly flashed from frame 0. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> morethanwords/tweb/master • 388a8b4 • 32 files, +1260/-777 Merge branch 'master' of https://github.com/morethanwords/tweb #webk
87
7
morethanwords/tweb/master • e9ea7d0 • 1 files, +4/-0 Ignore clicks on pinned gifts when profile avatar is expanded The pinned-gifts layer paints on top of the avatar and was only hidden via opacity:0 when the header is expanded, which leaves it catching clicks meant for the avatar underneath. Make it pointer-events:none in the expanded state so clicks fall through to the avatar handler. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> morethanwords/tweb/master • 0b2e4a5 • 1 files, +9/-2 Fix player menus invisible in fullscreen Playback-rate / quality / live menus open via ButtonMenuToggle, which portals the menu to document.body. While the player wrapper is the fullscreen element the browser paints only its subtree (top layer), so a menu in document.body never shows. Mount the menu inside the fullscreen element when the trigger lives there; falls back to the overlay root otherwise. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> morethanwords/tweb/master • bc0fe18 • 3 files, +27/-19 Chat preview: apply per-chat theme to outgoing bubbles + fix bubble width A preview Chat sets isPreview, so Chat.handleBackgrounds() short-circuits and applyContainerTheme() never runs — the per-chat theme's outgoing-bubble vars (--message-out-*) were missing on the container, so outgoing bubbles fell back to the global :root palette ("theme only partially applied"). Apply the resolved theme to the preview's chat container, re-firing on day/night toggle, mirroring Chat._handleBackgrounds. Also scope the bubbles scroll-area negative inset-inline rule to #column-center so it no longer widens the preview popup's bubbles, and drop the now-redundant inset-inline: 0 override in _chatPreview.scss. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> morethanwords/tweb/master • 2010d64 • 3 files, +56/-0 Close global search and left-sidebar tabs when switching folders Switching a chat folder now dismisses an open global search and closes any stacked left-sidebar tabs, mirroring closeEverythingInside. Tabs close the natural way (as if via the back arrow), so a tab that needs confirmation still asks; if the user declines, the folder switch is cancelled. Both folder UIs (the horizontal tabs and the vertical folders sidebar) funnel through selectFolderByIndex, so a single hook covers both. Adds SidebarSlider.closeAllTabsNaturally (close tabs top-down honoring each tab's isConfirmationNeededOnClose) and AppSidebarLeft.closeEverythingInsideNaturally. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> #webk
69
8
morethanwords/tweb/master • 7f76e50 • 3 files, +17/-8 Rethrow error for copyTextToClipboard morethanwords/tweb/master • 3dfc632 • 2 files, +0/-2 Remove unnecessary instance check morethanwords/tweb/master • f15ee7b • 3 files, +16/-22 Small refactor. Fix Original's overlay fading when appearing first time morethanwords/tweb/master • 0cf0e02 • 3 files, +69/-12 Add animation to scrollable's mask. Trigger onSizeChange when scrollable is added to DOM. morethanwords/tweb/master • 4281569 • 1 files, +7/-4 AI editor: don't leak composer's pending silent/schedule/effect into sends getMessageSendingParams() carries the chat input's live silent/scheduleDate/ scheduleRepeatPeriod/effect (e.g. restored from a draft). The AI editor manages these via its own send menu, so override them outright instead of merging — otherwise a message sent from the editor inherits state the editor never showed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> morethanwords/tweb/master • f382c99 • 32 files, +1260/-777 Merge pull request #678 from H7GhosT/feature/ai-editor Ai Editor improvements #webk
84
9
morethanwords/tweb/master • ef8c380 • 1 files, +2/-4 Merge branch 'feature/ai-editor' of github.com:H7GhosT/private-tweb into feature/ai-editor morethanwords/tweb/master • 50bb529 • 300 files, +10771/-2264 Merge branch 'master' into feature/ai-editor morethanwords/tweb/master • d88da87 • 1 files, +2/-5 Change comment morethanwords/tweb/master • c381bf7 • 1 files, +2/-2 Prevent EmojiDocumentIcon rerendering when color changes morethanwords/tweb/master • 1d339ba • 5 files, +125/-49 Make inner content scrollable morethanwords/tweb/master • dc3cec8 • 1 files, +1/-5 Change arrow bg hover color morethanwords/tweb/master • 8b0c60e • 1 files, +5/-1 Fix skeleton color on light theme morethanwords/tweb/master • e4d5364 • 2 files, +21/-4 Recompose message when editing currently selected tone morethanwords/tweb/master • 299f8ab • 1 files, +8/-7 Move create style button to the end of the list morethanwords/tweb/master • 8fedf41 • 3 files, +22/-3 Fade original and result scrollables edges when scrolled morethanwords/tweb/master • 1743807 • 3 files, +17/-2 Hide thumb when original is collapsed morethanwords/tweb/master • 68c84cc • 3 files, +6/-6 Show created by you in view tone popup morethanwords/tweb/master • 4d9db4b • 2 files, +21/-25 Fix formatting morethanwords/tweb/master • d25787e • 4 files, +128/-21 Add send menu to the send button morethanwords/tweb/master • d3d34f3 • 19 files, +880/-684 Remake the translation popup to be like the AI Editor popup #webk
84
10
Ajaxy/telegram-tt/master • 2b0f5d9 • 3 files, +4/-4 12.0.31 Ajaxy/telegram-tt/master • 297afa4 • 1 files, +5/-2 Message List: Fix random scroll to bottom on open (#7055) Ajaxy/telegram-tt/master • 5d4d237 • 1 files, +5/-1 Bot: Hide info immediately when starting new chat (#7056) Ajaxy/telegram-tt/master • 1dc28e3 • 2 files, +11/-3 Polls: Add line break for poll action messages (#7051) Ajaxy/telegram-tt/master • 81ee4be • 34 files, +1444/-873 Poll: Support more creation options (#7033) Ajaxy/telegram-tt/master • 72557c2 • 6 files, +91/-115 Poll Answer Results: Redesign (#7057) Ajaxy/telegram-tt/master • acebf11 • 1 files, +12/-0 Media Viewer: Fix closing MV on Esc (#7062) Ajaxy/telegram-tt/master • 46fa678 • 10 files, +669/-0 Message: Support read metrics (#7060) Ajaxy/telegram-tt/master • 7899098 • 1 files, +1/-0 Middle Column: Fix visibility after unlock (#7065) Ajaxy/telegram-tt/master • 7f3f7ff • 4 files, +18/-10 Middle Header: Fix middle header panel styles (#7063) Ajaxy/telegram-tt/master • d97d4da • 94 files, +207/-193 [Build] #webz
128
11
morethanwords/tweb/master • 29e1272 • 6 files, +351/-350 Regenerate icons morethanwords/tweb/master • 3853912 • 300 files, +934/-818 Build #webk
160
12
TGX-Android/Telegram-X/main • 3bb31c2 • 15 files, +245/-152 Migrate to `Firebase Installation ID` on Android 6 (Marshmallow) and higher #tgxandroid
165
13
morethanwords/tweb/master • ceb5160 • 11 files, +19/-48 Address AI Editor review findings - Fix: removing a saved tone was blocked at the saved-tones limit — the ViewTonePopup unsave path fell through to Promise.reject(), showing an error toast instead of unsaving. Allow unsave regardless of capacity. - Bound the composed-message cache (was an unbounded module-level Map). - Drop duplicate AICOMPOSE_*/TONE_NOT_FOUND literals in ServerErrorType. - customEmoji renderer: pass the callback to unobserveResize so it removes only its own resize callback (the new array-based observeResize allows multiple callbacks per element). - Remove dead code: simulateDelay/DEBUG scaffolding in styleTab, autoHeight duration/easing props, inputFieldMessage containerRef prop, and the byte-identical unused viewTonePopup/limits.ts. - wrapRichText: wrap the messageEntityDiffReplace case body in a block. - getMessageEntityFromDocIdOrEmoji: use the @lib alias import. - lang: "Used by %d persons" -> "people". Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> morethanwords/tweb/master • ea7e91b • 300 files, +15781/-2628 Merge branch 'master' into feature/ai-editor Resolved conflicts: - Icon font (icons.ts, _variables/_style.scss, tgico.svg/ttf/woff): kept the PR's regenerated set so the new AI icons work. Re-added master's `privacypolicy` glyph to icons.ts/_variables.scss as a placeholder (codepoint eab3) so the tree builds — it renders blank until the icon font is regenerated (`pnpm generate-icons`) from the union of SVG sources (privacypolicy.svg + the AI icons are both present in assets/icons/). - inputFieldMessage.tsx: union of imports (PR's AI-editor imports + master's getOverlayRoot). Production build passes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> morethanwords/tweb/master • 40846ea • 116 files, +6147/-1857 Merge pull request #665 from H7GhosT/feature/ai-editor AI Editor morethanwords/tweb/master • 3a0099f • 3 files, +3/-3 Merge pull request #676 from prdsrm/master fix: update nodejs version #675 #webk
150
14
TGX-Android/Telegram-X/main • cea514d • 37 files, +2744/-318 Add `marshmallow` flavor TGX-Android/Telegram-X/main • 6c14410 • 1 files, +8/-1 Sync `.gitignore` with `translations.telegram.org` #tgxandroid
136
15
UnigramDev/Unigram/develop • ff09a2f • 1 files, +1/-11 Undo style UnigramDev/Unigram/develop • 9e4cc27 • 1 files, +5/-2 Fix null ref UnigramDev/Unigram/develop • 9aa2550 • 3 files, +225/-17 Improve custom text selection UnigramDev/Unigram/develop • b309941 • 6 files, +52/-27 Break MessageSelector reference cycle UnigramDev/Unigram/develop • 703b2fd • 11 files, +199/-85 Fix playback service unsubscribe UnigramDev/Unigram/develop • 1188ad4 • 1 files, +8/-2 Access violation guard UnigramDev/Unigram/develop • 9d86f1b • 9 files, +738/-298 Break FormattedTextBlock into pieces, add MessageTextBlock, support expandable quotes UnigramDev/Unigram/develop • 8e4368b • 1 files, +17/-8 Fix text selection manager events registration UnigramDev/Unigram/develop • f3a06d3 • 2 files, +29/-0 Add missing interface methods UnigramDev/Unigram/develop • 1d66e25 • 2 files, +43/-3 Handle custom text selection in chat history UnigramDev/Unigram/develop • dbfee71 • 5 files, +42/-74 Support translating formatted text UnigramDev/Unigram/develop • dc5dd1d • 1 files, +21/-186 Improve quotes in rich messages UnigramDev/Unigram/develop • aab94f7 • 2 files, +13/-5 Use new text block in gallery UnigramDev/Unigram/develop • 333b44b • 1 files, +4/-1 Disable interactions on album children UnigramDev/Unigram/develop • 19714bb • 1 files, +4/-0 Don't stackalloc in debug to avoid recompiling every time #unigram
141
16
telegramdesktop/tdesktop/dev • 1c1a538 • 1 files, +15/-0 Fix accessible focus on filters refresh. #tdesktop
137
17
telegramdesktop/tdesktop/dev • e4fa072 • 8 files, +21/-2 Added animated icons to media saving toasts. telegramdesktop/tdesktop/dev • 145e580 • 43 files, +396/-90 Added animated icons to copy-to-clipboard toasts. telegramdesktop/tdesktop/dev • bbcc5fc • 6 files, +27/-7 Added animated icons to mute and pin quick action toasts. telegramdesktop/tdesktop/dev • 39cfbea • 2 files, +14/-3 Added animated icons to shared media and group call pin toasts. telegramdesktop/tdesktop/dev • 8901dba • 3 files, +6/-0 Added animated icon to chat archiving toast. telegramdesktop/tdesktop/dev • 6ecdee2 • 3 files, +4/-0 Added animated icon to premium purchased toast. telegramdesktop/tdesktop/dev • 5ed4e43 • 4 files, +19/-5 Added animated icons to sticker set install and copy toasts. telegramdesktop/tdesktop/dev • 8fa4ccb • 1 files, +24/-76 Added support for dragging files out of shared media. telegramdesktop/tdesktop/dev • ff3eb41 • 3 files, +93/-49 Added file preview to shared media drag. telegramdesktop/tdesktop/dev • cfc99e4 • 22 files, +501/-9 Added support of zoom in shared media for photos. telegramdesktop/tdesktop/dev • c255a97 • 5 files, +49/-4 Added a shadow to the action buttons in the profile top bar. telegramdesktop/tdesktop/dev • e1d63f9 • 1 files, +1/-1 Prevented Xcode 27 libc++ platform warning from breaking mac build. telegramdesktop/tdesktop/dev • cb1d81f • 2 files, +25/-6 Added group emoji badge to emoji list widget. telegramdesktop/tdesktop/dev • 84a4eee • 1 files, +14/-5 Added blur to poll attached media while loading. #tdesktop
141
18
telegramdesktop/tdesktop/dev • 54b9a6b • 1 files, +12/-0 Restore Home/End navigation in the chat list Home/End jumped to the first/last chat until InnerWidget's key handling was rewritten from a switch into an if/else chain (in 'Extract chats list accessibility, fix build'), which carried over only Up/Down and Page Up/Down and dropped the Home/End cases. Re-add them, skipping by the actual total row count (which selectSkip() clamps) instead of the previous 1<<20 constant, so it lands on the first or last row in both the default list and the filtered/search results. #tdesktop
124
19
telegramdesktop/tdesktop/dev • f43a2ca • 1 files, +1/-0 Add QScroller experimental option telegramdesktop/tdesktop/dev • ded7588 • 1 files, +1/-1 Update lib_ui. #tdesktop
140
20
telegramdesktop/tdesktop/dev • 949f2a6 • 2 files, +111/-46 Expose the chat-folders strip as a list, not a tab control Report the folders container with the List role (was PageTabList) and each folder as a ListItem, which matches NVDA's native single-selection list behaviour better than a tab control. TabListLayout opts in to RpWidget::accessibilitySelectionList(), so the selection interface and selected-item focus forwarding apply only to this strip, not to every List-role widget. - Locked (premium) folders are ordinary list items now: a ListItem is clickable, so they can open the Premium box, and they are reachable with the arrow keys like any other folder (they keep their locked accessible name/description, and report selectable = false). - Arrow keys move focus only and scroll the focused folder into view; activation - switching the chat list, or opening the Premium box for a locked folder - happens on Enter. - The list has one roving Tab-stop driven by focus (setListTabStop): a FocusIn on any folder - arrow, mouse or UIA SetFocus - makes it the single Tab-stop, wired main menu -> folder -> edit, always demoting the previous one; the active folder seeds it when nothing is focused. A refresh re-establishes the Tab-stop on the folder that was focused (or the active one), so rebuilding the list never leaves it without one. So Tab/Shift+Tab leave the list the same way regardless of which folder is focused, with no stray extra tab-stops. #tdesktop
146