Telegram github commits and releases
4.55K subscribers
601 files
20.3K links
Broadcast from the most important Telegram clients' repositories
Download Telegram
telegramdesktop/tdesktop/nightly43ebea76 files, +500/-420
[iv-editor] Moved block factories to iv_editor_page_blocks.

telegramdesktop/tdesktop/nightly404a4c95 files, +342/-240
[iv-editor] Moved ordered list helpers to iv_editor_page_list.

telegramdesktop/tdesktop/nightly09650004 files, +132/-242
[iv-editor] Moved tag algebra and field chunking to text entities.

telegramdesktop/tdesktop/nightly16b44105 files, +158/-149
[iv-editor] Moved media block helpers to iv_editor_page_media.

telegramdesktop/tdesktop/nightlyfcba9f13 files, +100/-74
[iv-editor] Moved block path types out of State class.

telegramdesktop/tdesktop/nightlycb14b605 files, +120/-134
[iv-editor] Moved block path helpers to iv_editor_page_path.

telegramdesktop/tdesktop/nightlyfcb5fba5 files, +411/-507
[iv-editor] Moved table grid helpers to iv_editor_page_table_grid.

telegramdesktop/tdesktop/nightlya30eda82 files, +31/-0
[iv-editor] Added replace and edit actions to grouped media menu.

telegramdesktop/tdesktop/nightly65e7a1a2 files, +41/-13
[iv-editor] Added removal of list from range of selected items.

telegramdesktop/tdesktop/nightlyf48325d1 files, +9/-5
[iv-editor] Added removal of task list by its own toolbar action.

telegramdesktop/tdesktop/nightlydfd4efa2 files, +68/-0
[iv-editor] Added removal of lists selected as whole blocks.

telegramdesktop/tdesktop/nightly591ec531 files, +55/-4
[iv-editor] Added splitting of multiline selection into list items.

telegramdesktop/tdesktop/nightlye981c742 files, +42/-0
[iv-editor] Added detection of rich structure in pasted data.

#tdesktop
🫡2
telegramdesktop/tdesktop/nightlyc5296482 files, +21/-0
[iv-editor] Added pasting of source data into just opened editor.

telegramdesktop/tdesktop/nightly9422ead2 files, +33/-0
[iv-editor] Added plain text offer for pasted markdown.

telegramdesktop/tdesktop/nightly2dac0db6 files, +119/-0
[iv-editor] Added joining of typed list with adjacent list of same kind.

telegramdesktop/tdesktop/nightlyb245f3c2 files, +38/-6
[iv-editor] Added joining of lists created by toolbar with neighbours.

telegramdesktop/tdesktop/nightlye70f94c4 files, +18/-2
[iv-editor] Added wrapping of active line into list without selection.

telegramdesktop/tdesktop/nightly0647c5b1 files, +0/-11
[iv-editor] Replaced list item with paragraph for text left below line.

telegramdesktop/tdesktop/nightlyb14a8871 files, +2/-1
[iv-editor] Removed redundant start pinning for list kept above unwrap.

telegramdesktop/tdesktop/nightly79a6f4e2 files, +17/-14
[iv-editor] Added joining of pasted list with neighbours of same kind.

telegramdesktop/tdesktop/nightly33d91a25 files, +51/-25
[iv-editor] Added empty list item guard for list insertion.

telegramdesktop/tdesktop/nightly2e39c011 files, +8/-0
[iv-editor] Fixed caret loss after undo of structural change.

telegramdesktop/tdesktop/nightlyc1a34401 files, +2/-2
[iv-editor] Fixed last line skip for vertical caret move in field.

telegramdesktop/tdesktop/nightlyc58adda1 files, +11/-6
[iv-editor] Replaced item start with last line for caret moving up.

telegramdesktop/tdesktop/nightlya8e0c1f1 files, +2/-1
[iv-editor] Fixed missing redraw for ordered list turned into bullet.

#tdesktop
🫡2
telegramdesktop/tdesktop/nightlye717a353 files, +18/-18
[iv-editor] Added subscript, superscript and marked to selected text.

telegramdesktop/tdesktop/nightly9db910e2 files, +19/-4
[iv-editor] Added mutual exclusion for subscript and superscript.

telegramdesktop/tdesktop/nightlye3a0aac1 files, +4/-7
[iv-editor] Replaced next cell with cell below on Enter inside table.

telegramdesktop/tdesktop/nightly848bcc62 files, +73/-5
[iv-editor] Fixed loss of list items wrapped into quote.

telegramdesktop/tdesktop/nightlye1366c13 files, +11/-1
[iv-editor] Fixed Enter with emoji suggestion having no selection.

telegramdesktop/tdesktop/nightlyf1b43a22 files, +63/-4
Added ability to replace of rich message media from clipboard.

telegramdesktop/tdesktop/nightly25dbc074 files, +12/-14
[iv-editor] Removed nested list insertion from inside list item.

telegramdesktop/tdesktop/nightly217a1052 files, +11/-0
[iv-editor] Fixed line text disappearing after Tab in nested list.

telegramdesktop/tdesktop/nightly42acefe4 files, +60/-0
[iv-editor] Fixed Backspace on blank list item restructuring previous item.

telegramdesktop/tdesktop/nightly3e0e7ef3 files, +21/-2
[iv-editor] Fixed Tab and Shift+Tab not adopting list style of new level.

telegramdesktop/tdesktop/nightly4f5d66d2 files, +37/-12
[iv-editor] Fixed monospace in table cell inserting empty block after table.

telegramdesktop/tdesktop/nightlyece71652 files, +33/-3
[iv-editor] Fixed emoji shifting text offsets in inline editor field.

telegramdesktop/tdesktop/nightly2f637bb3 files, +74/-1
[iv-editor] Fixed Shift+Tab on nested line lifting whole list item.

#tdesktop
🫡2
telegramdesktop/tdesktop/nightly5fb972e1 files, +6/-4
[iv-editor] Moved horizontal scroll of nested lists to outermost list.

telegramdesktop/tdesktop/nightly92be0383 files, +8/-1
[iv-editor] Removed decimal item numbering for non-decimal lists.

telegramdesktop/tdesktop/nightly1cf8a8f3 files, +21/-6
[iv-editor] Added reset of item numbering on list type change.

telegramdesktop/tdesktop/nightlyd1b12323 files, +10/-1
[iv-editor] Added whole list condition for numbering type check.

telegramdesktop/tdesktop/nightly8dff50c1 files, +5/-1
[iv-editor] Fixed Enter at line end moving nested list to new item.

telegramdesktop/tdesktop/nightlya9f79174 files, +51/-6
[iv-editor] Added downgrade of block entities to inline in table cell.

telegramdesktop/tdesktop/nightly2b6c47a2 files, +51/-1
[iv-editor] Fixed multiline monospace in table cell becoming code block.

telegramdesktop/tdesktop/nightly11bbffd1 files, +1/-1
[iv-editor] Fixed custom emoji replaced with plain one on Enter.

telegramdesktop/tdesktop/nightly2d625123 files, +21/-4
[iv-editor] Added guards for list depth keys.

#tdesktop
🫡3
telegramdesktop/tdesktop/nightlycf962e21 files, +4/-2
[iv-editor] Fixed two list markers in one row on Enter at line end.

telegramdesktop/tdesktop/nightly9ceb4594 files, +51/-6
[iv-editor] Added downgrade of block entities to inline in table cell.

telegramdesktop/tdesktop/nightly5c126c62 files, +51/-1
[iv-editor] Fixed multiline monospace in table cell becoming code block.

telegramdesktop/tdesktop/nightly4a8d7041 files, +1/-1
[iv-editor] Fixed custom emoji replaced with plain one on Enter.

telegramdesktop/tdesktop/nightly0a23d243 files, +21/-4
[iv-editor] Added guards for list depth keys.

telegramdesktop/tdesktop/nightly22b64d51 files, +13/-30
[iv-editor] Fixed Enter at item start removing empty item above.

#tdesktop
🫡2
TGX-Android/Telegram-X/mainb7813399 files, +342/-130
Add foreground service for contacts sync

TGX-Android/Telegram-X/maina518d082 files, +28/-0
Explicitly disable device transfer

TGX-Android/Telegram-X/main1e0d4981 files, +1/-1
Version bump to `1801`

#tgxandroid
🫡3
UnigramDev/Unigram/record-sessiona9d58729 files, +1363/-1157
Give a recording an owner

The record button held four things: the gesture, the state of the recording, the
capture engine, and the decision of what to do with the result. The engine was a
thread-static singleton every loaded button subscribed to, so a recording started
in one chat drove the state of every other chat and story composer on the thread,
and QuantumProcessed was a single field that whichever button loaded last took
over and the first to unload set back to null.

ChatRecordSession now owns the state and the engine, one per button, which is one
per chat. What is left in the button is the press-and-hold gesture and its own
visuals.

Seven booleans and an integer interface state become three named states. The
fourth one - locked, then stopped - was only reachable through StopRecording(false),
which nothing ever called, so it went out along with the tri-state stop that
neither sent nor discarded what it recorded. Cancel and Complete say which they
are.

Elapsed comes off a monotonic clock rather than DateTime.Now, freezes while
paused, and starts when the capture device is actually open rather than when the
button was pressed. The pause state is reset when a recording ends instead of
leaking into the next one, and the bar detaches from the button on unload.

Permissions go through MediaDevicePermissions, which is what calls already use,
so granting access no longer costs the first press: the old check asked
DeviceAccessInformation and then returned false regardless, leaving the prompt as
the only thing that press did.

MediaCapture.Failed ends the recording instead of only logging it, and a press
too short to record now says so.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

#unigram
TGX-Android/Telegram-X/main4bdf4de1 files, +0/-1
Remove rudimentary logging

TGX-Android/Telegram-X/main93fda892 files, +6/-6
Update dependencies

TGX-Android/Telegram-X/maina874e131 files, +1/-1
Update FFmpeg to FFmpeg/FFmpeg@e21e475

TGX-Android/Telegram-X/main283aa9e1 files, +1/-1
Do not use `-Xlint:-dangling-doc-comments`

TGX-Android/Telegram-X/mainc9798eb3 files, +27275/-26631
Update baseline profile

TGX-Android/Telegram-X/maind2008bd1 files, +1/-1
Version bump to `1802`

#tgxandroid
🫡3
TGX-Android/Telegram-X/main7ada8e77 files, +89/-115
Update pre-latest flavors

TGX-Android/Telegram-X/mainc7e78251 files, +0/-35
Remove `update-dependencies.sh`

TGX-Android/Telegram-X/maineff99a91 files, +4/-0
Add final cleanup after FFmpeg build

TGX-Android/Telegram-X/main3c9d9c91 files, +10/-0
Require JDK 21

TGX-Android/Telegram-X/main83690171 files, +1/-1
Version bump to `1802`

#tgxandroid
🫡3
TGX-Android/Telegram-X/maine92c8178 files, +67/-60
Improve build speed

TGX-Android/Telegram-X/main05c383116 files, +30/-17
Upgrade Gradle to `9.7.0`

TGX-Android/Telegram-X/main53301eb1 files, +1/-1
Version bump to `1802`

#tgxandroid
🫡3
TGX-Android/Telegram-X/maincb3c1941 files, +2/-3
Increase heap size + Enable caching

TGX-Android/Telegram-X/main920a83a1 files, +1/-1
Version bump to `1802`

#tgxandroid
🫡3
TGX-Android/Telegram-X/main48ebd443 files, +5/-5
Exclude `:baseline-profile` from default project configuration

TGX-Android/Telegram-X/mainad5025c1 files, +1/-1
Version bump to `1802`

#tgxandroid
🫡3
TGX-Android/Telegram-X/main46080422 files, +28/-32
Improve build speed

TGX-Android/Telegram-X/main8177ad81 files, +1/-1
Version bump to `1802`

#tgxandroid
🫡3
telegramdesktop/tdesktop/nightlyb0d29352 files, +17/-5
[poll-view] Fixed cut emoji icon in add-option field at some scales.

telegramdesktop/tdesktop/nightly82e66c81 files, +49/-36
[poll-view] Fixed vertical alignment of answer media and text.

telegramdesktop/tdesktop/nightlyd910e4e4 files, +53/-15
[poll-view] Fixed answer media dropped for pending webpage.

telegramdesktop/tdesktop/nightly0ef04211 files, +44/-27
[poll-view] Slightly improved answer highlight.

#tdesktop
🫡3
UnigramDev/Unigram/tdlib-list-t828d7842 files, +72/-30
Expose every TDLib vector to WinRT from the schema

SettingsStoragePage binds Statistics.ByChat to ItemsSource and threw
E_INVALIDARG. TG1001 cannot see it: a binding assigns through the declared
IList<T>, so the concrete type is only known at runtime. The schema does know
it, and both parsers materialise a vector as List<T>, so the generator emits
the registration for every one of them - 188, nested vectors included.

That also settles the arrays that were listed by hand. A vector is never an
array, so none of them could ever be reached, and removing them leaves TG1001
reporting exactly one: PremiumGiftPaymentOption[], which the app builds
itself.

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

UnigramDev/Unigram/tdlib-list-t636c91d2 files, +53/-7
Flag the collection expressions no registration can fix

Targeting a read-only interface, a collection expression compiles to a type
the compiler makes up, and nothing can generate a vtable for that. TG1001
never reaches it: the target is typed, so its reasoning says the generator has
the conversion covered - but the marshaller it emits still needs a CCW for
whatever concrete type turns up.

There are two of them and the element count picks which, so a call site that
works with two elements can break when one is removed. Measured rather than
assumed, along with the targets that are safe: List, IList and ICollection all
produce a real List, a mutable interface needing a mutable instance. That also
retires the reason the generated API used IList - new[] { x } is no longer the
only short spelling.

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

UnigramDev/Unigram/tdlib-list-t2c74f624 files, +285/-20
Expose the TDLib vector instantiations from real source

CsWinRT reads these attributes in its own generator, and a generator cannot
see what another generator wrote, so emitting them was a no-op: the storage
page still threw. TDAPI003 now compares the schema against the attributes
actually present, for the next time TDLib adds a vector.

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

UnigramDev/Unigram/tdlib-list-t224de7f25 files, +106/-67
Expose TDLib object vectors as List<T>

Objects are read - bound to ItemsSource, iterated per render - so List makes
the concrete type visible to the analyzer, stops foreach boxing an enumerator
and lets the indexer inline. Functions are only ever written and serialised,
and keep IList. Constructors take IList either way, so arrays and collection
expressions still bind, and a parsed response is cast rather than copied.

AnimatedImage draws no shimmer when Outline is null, hence the shared empty.

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

#unigram
UnigramDev/Unigram/tdlib-list-t4cbb3621 files, +23/-1
Follow x:Bind into the setters the XAML compiler emits

A binding does not assign the property: it calls a Set_ on XamlBindingSetters,
which takes the value as object and belongs to this assembly, so nothing
flagged it. Following that one call reports 83 collections bound from XAML
with no CCW vtable - each one a page that throws when opened.

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

UnigramDev/Unigram/tdlib-list-t099bab682 files, +337/-313
Take List<T> in the generated constructors too

The parameter and the field are the same type now, so TdCollection.AsList is
gone. Call sites became [x] and [], which allocates less than it did: the
converter copied every array into a list.

Four needed more than a rewrite. TryGetColors and the two chat-list readers
fill by Add rather than by index, because a List's capacity is not its count.
TextStyleRun shares one empty list, since Array.Empty was free and these sit
on the render path - a shared mutable list is a footgun, and notes has the
plan for it.

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

#unigram
UnigramDev/Unigram/dragover-access-denied7a6aacc1 files, +13/-4
Refuse a drag whose data view cannot be inspected

IDataPackageView::Contains is a cross-process call into the process that
started the drag, and it can be denied, or fail because that process went
away mid-drag. Neither is something the app can act on, so the drop is
declined and the failure logged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

#unigram
UnigramDev/Unigram/location-access-check7a242051 files, +8/-3
Guard the location access request in CheckDeviceAccessAsync

Geolocator.RequestAccessAsync is a call into the Windows Geolocation
Service and throws ERROR_SERVICE_DISABLED (0x80070422) when that service
is disabled, as the identical call in SendLocationPopup.FindLocation did
in the field. Treat a throw as access not being available, the way
StartTrackingAsync already does.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

#unigram
UnigramDev/Unigram/media-collection-loadinge9d24351 files, +21/-4
Handle errors and cancellation when loading media

An Error response fell through silently, and the cancellation token was
never checked, so an abandoned load still appended to the collection.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

#unigram
UnigramDev/Unigram/composer-readonly-enter447e1cc1 files, +7/-0
Don't run the editing shortcuts in a read-only composer

Enter without Shift wrote a vertical tab into the document, which
RichEdit rejects with E_ACCESSDENIED whenever the composer has been
made read-only because the user cannot post in the chat.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

#unigram
UnigramDev/Unigram/currency-formatter-fallbackcc19c382 files, +5/-1
Fall back to a plain currency format when globalization is unavailable

GetCurrencyFormatter treated GlobalizationPreferences as infallible, so a
denied system query escaped as an UnauthorizedAccessException through the
synchronous ContainerContentChanging callback that reaches it. FormatCurrency
already handled a null formatter, but nothing could ever return one.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

#unigram
💅1