Compare commits

...

812 Commits

Author SHA1 Message Date
AlexeyZavar aafdac6da4 fix: localization variables loading 2025-07-09 01:20:57 +03:00
AlexeyZavar bd202fce21 fix: make it build 2025-07-09 00:03:21 +03:00
AlexeyZavar f450001edb Merge tag 'v5.16.3' into dev 2025-07-09 00:02:08 +03:00
John Preston 36bb1d0cf3 Version 5.16.3.
- Allow removing / charging fee in channel direct messages.
- Don't offer creating checklists in channels.
- Support author channel in gifts.
2025-07-08 22:44:40 +04:00
John Preston c7c8e39e20 Fix build with Xcode. 2025-07-08 22:44:40 +04:00
John Preston 8e9630459b Add session_id to mtproto logs. 2025-07-08 21:32:49 +04:00
Ilya Fedin 1c53fca925 Remove unused yasm dependency from snap 2025-07-08 20:38:51 +04:00
Ilya Fedin 7d78de0673 Get rid of QT_GENERATE_SBOM=OFF 2025-07-08 20:38:51 +04:00
John Preston f8acc55365 Remove checklist creation in broadcasts. 2025-07-08 20:29:44 +04:00
John Preston c3157fe90d Fix incorrect dc for stars revenue requests. 2025-07-08 20:29:43 +04:00
John Preston 35b129287b Support RemoveFee/ChargeFee in monoforums. 2025-07-08 20:29:43 +04:00
John Preston d05155a403 Show who released the gift. 2025-07-08 20:29:43 +04:00
AlexeyZavar e5ca216c99 fix: make it build 2025-07-07 02:56:10 +03:00
AlexeyZavar 13a96ee1d3 Merge tag 'v5.16.2' into dev 2025-07-07 01:23:33 +03:00
AlexeyZavar 12879207ef fix: restrict saving content toggle 2025-07-07 00:59:02 +03:00
bleizix e097a5de58 feat: implement AyuForward 2025-07-06 23:54:45 +03:00
Neurotoxin001 0cd2617576 feat: delete own messages from groups 2025-07-06 21:07:32 +03:00
AlexeyZavar 6c303b8f87 chore: update README 2025-07-06 18:55:27 +03:00
AlexeyZavar 91224d8a1c fix: use tgdatabase bot again 2025-07-06 18:50:10 +03:00
AlexeyZavar 48e961392d fix: allow saving paid media 2025-07-06 18:09:54 +03:00
AlexeyZavar 5b08a1adfb chore: update langs 2025-07-06 17:37:35 +03:00
Neurotoxin001 3bbb9daa34 feat: disable reactions in channels and groups 2025-07-06 17:22:26 +03:00
AlexeyZavar 3f5f17705d feat: select multiple chats by holding ctrl or shift in forward box 2025-07-06 11:01:34 +03:00
John Preston f0aca45b11 Update API scheme on layer 207. 2025-07-04 21:31:20 +04:00
John Preston d205e3b4a3 Version 5.16.2.
- Fix crash in some checklists.
- Fix problems with some private chats message sending.
- Fix chats list preview for rejected/balance-low suggestions.
2025-07-04 20:23:44 +04:00
John Preston 8b40a77297 Fix build. 2025-07-04 20:23:37 +04:00
John Preston a7e87cc722 Try reducing self userFull requests. 2025-07-04 17:57:37 +04:00
John Preston 09f106bd49 Remove .00 from credits amount. 2025-07-04 17:57:35 +04:00
John Preston 8a0869fb75 Fix phrases for rejected/failed suggestion. 2025-07-04 17:56:35 +04:00
John Preston 7ccf26310d Fix spoilers in todo lists. 2025-07-04 17:51:02 +04:00
23rd e1420ba26c Decreased size of ministars for buttons in media for history view. 2025-07-04 09:46:09 +03:00
23rd c693c9cd44 Fixed history list of earn channel for currency. 2025-07-03 22:13:38 +03:00
GitHub Action e698557092 Update User-Agent for DNS to Chrome 137.0.0.0. 2025-07-03 17:46:26 +04:00
John Preston 1238c90450 Fix crash in Todo Lists. 2025-07-03 13:52:54 +04:00
John Preston e991dca5a0 Version 5.16.1.
- Fix inline keyboard updating in bot messages.
- Fix possible crash in fast chat switching.
- Different minor fixes.
2025-07-02 17:32:50 +04:00
23rd 37093c9f33 Slightly improved mini stars for button in history view premium gifts. 2025-07-02 17:32:50 +04:00
John Preston 1dd4f62ece Fix editing direct message prices. 2025-07-02 17:32:50 +04:00
Ilya Fedin 9ec27aad53 Update patches 2025-07-02 17:24:38 +04:00
Ilya Fedin f1d3a946d5 Get rid of libtgvoip leftovers 2025-07-02 17:24:38 +04:00
John Preston fd24f7045e Fix editing price per message. 2025-07-02 12:36:07 +04:00
John Preston 33671e7737 Save correct starsPerMessage for admins. 2025-07-02 12:04:29 +04:00
John Preston 13ecc6a56b Use separate phrase for Update Time. 2025-07-02 12:04:01 +04:00
23rd 20815eecbc Fixed request of recent gifts only when peer has gifts. 2025-07-02 10:18:22 +03:00
23rd f2f5ffd861 Moved out Type of ministars from class to separated enum class. 2025-07-02 10:18:22 +03:00
John Preston b0971601b1 Add distinct item for Poll in menu. 2025-07-02 11:15:48 +04:00
23rd 7253d764d2 Guarded requests of recent gifts for button from shared media section. 2025-07-02 11:05:48 +04:00
23rd 71f3a1f7cf Fixed wrong duplicated gifts in button from shared media section. 2025-07-02 11:05:41 +04:00
John Preston 950659b29d Fix aggregate checklists updates. 2025-07-02 10:57:20 +04:00
John Preston b4392d0e3c Update cmake submodule. 2025-07-02 10:27:14 +04:00
John Preston 4571302642 Fix usd values in stats. 2025-07-02 10:08:12 +04:00
Ilya Fedin 5121f04d66 Remove jemalloc 2025-07-02 09:38:24 +04:00
Ilya Fedin 77642d2876 Limit the amount of malloc arenas and call malloc_trim periodically with glibc
To prevent excessive memory usage looking like memory leak
2025-07-02 09:38:24 +04:00
John Preston ef69796798 Fix bot buttons refresh. 2025-07-02 07:20:51 +04:00
John Preston 869854fbc2 Version 5.16: Fix build with GCC. 2025-07-01 23:53:52 +04:00
John Preston 4584d912cc Version 5.16.
- Create private and group checklists.
- Suggest Posts in Channels.
- Monetizing via Suggested Posts.
2025-07-01 23:05:11 +04:00
John Preston ddd3d38dac Use more separate phrases. 2025-07-01 23:00:40 +04:00
John Preston fcba6bc7d7 Fix first days of some months. 2025-07-01 22:20:09 +04:00
John Preston a147c0fb4f Update API scheme on layer 206. 2025-07-01 22:10:30 +04:00
John Preston c3cc3fa9bd Separate phrase for paid messages placeholder. 2025-07-01 22:10:14 +04:00
23rd 0f0e14132a Added ability to copy and paste proxy list with shortcuts. 2025-07-01 19:33:25 +04:00
23rd a2c2ed0b4a Added ability to clear proxy list from top context menu in settings. 2025-07-01 19:33:25 +04:00
23rd 8bebca4502 Added ability to share your proxy list with clipboard. 2025-07-01 19:33:25 +04:00
23rd e9a550d458 Added ability to add proxies list from clipboard. 2025-07-01 19:33:25 +04:00
23rd bee567f2b1 Added transaction id info to channel earn history entries. 2025-07-01 19:33:25 +04:00
23rd 0fd7061671 Replaced Data::EarnHistoryEntry with Data::CreditsHistoryEntry. 2025-07-01 19:33:25 +04:00
23rd 96951576c1 Fixed credits display in statistic charts. 2025-07-01 19:33:24 +04:00
John Preston a665d7cc3c Show USD estimate in suggest posts. 2025-07-01 19:32:49 +04:00
John Preston 9b989329d4 Fix muted state of monoforums. 2025-07-01 15:59:20 +04:00
John Preston eccfd75a83 Scroll to active tab in subsection tabs. 2025-07-01 15:10:21 +04:00
John Preston 7e8a152eef Fix crash in topic links opening. 2025-07-01 14:39:28 +04:00
John Preston 44810f95a5 Fix clearing history in legacy groups. 2025-07-01 14:12:35 +04:00
John Preston bcd42dbb6a Block forwarded todo lists. 2025-07-01 13:01:29 +04:00
John Preston 6e77126a65 Fix task completion date tooltip. 2025-07-01 12:29:00 +04:00
John Preston 735bbef655 Fix phone/card click handler generation. 2025-07-01 12:23:55 +04:00
John Preston 7006a07dd3 Show completed-by names in tasks. 2025-07-01 12:10:08 +04:00
John Preston 7284926db4 Support links in tasks. 2025-07-01 11:26:56 +04:00
John Preston b506bf9506 Fix webpage preview glitch in small bubbles. 2025-07-01 11:05:02 +04:00
John Preston 3fea28f8b0 Warn admins about commission and stars. 2025-06-30 22:23:55 +04:00
John Preston cc6649667c Revert "Get rid of /DELAYLOAD"
This reverts commit 6586791655.
2025-06-30 18:29:28 +04:00
John Preston 24121fbbce Improve conditions / phrases. 2025-06-30 18:26:53 +04:00
John Preston ef280dae3e Open ready-preloaded TON section. 2025-06-30 16:56:42 +04:00
John Preston 49f580a36b Use better file origin for gift stickers. 2025-06-30 13:27:13 +04:00
John Preston a56d2b1313 Better handle min in linked channels. 2025-06-30 13:22:04 +04:00
John Preston f083180401 Support correct sitckers for TON gifts. 2025-06-30 12:32:33 +04:00
23rd 7b870edefa Added specific color for blue currency icon. 2025-06-30 11:22:08 +03:00
23rd a293fa1de6 Replaced std::map with flat_map for selected items in history list. 2025-06-30 10:55:25 +03:00
23rd 3a8898dd24 Added ability to share proxy with QR code. 2025-06-30 10:55:25 +03:00
23rd b97c8b9a17 Fixed order of saving grouped media from bulk download menu item. 2025-06-30 10:55:25 +03:00
23rd a0a8d76441 Proceeded returned earn history entries as inbound. 2025-06-30 09:51:53 +03:00
23rd 9199612cf7 Slightly improved macOS build docs by adding storage requirements. 2025-06-30 01:01:15 +03:00
23rd abfd37c045 Added suffix to version string for debug builds. 2025-06-29 23:40:24 +03:00
23rd ac243136b9 Replaced AboutBox with generic box. 2025-06-29 23:40:24 +03:00
23rd c93e948bb3 Added support of maximum amount of credits to withdraw from app config. 2025-06-29 22:34:46 +03:00
23rd 388803ffdb Fit transactions id from credits history entries to table cell. 2025-06-29 22:34:46 +03:00
23rd a809ccf229 Added support of special sticker pack for currency history entries. 2025-06-29 22:34:46 +03:00
23rd d1796a515e Fixed comparing of credits amount with different types. 2025-06-29 22:34:46 +03:00
23rd a11d3efed6 Added support of usd rate for withdrawal from app config. 2025-06-29 22:34:46 +03:00
Neurotoxin001 a8fb7cd225 fix: hide messages group 2025-06-29 22:28:41 +03:00
23rd 9d7aab4326 Added initial support of personal earn currency history. 2025-06-29 21:14:20 +03:00
23rd a3b76fed4c Added initial implementation of section for personal currency settings. 2025-06-29 21:14:20 +03:00
23rd 21f5f96d69 Added entry point to section of personal currency settings. 2025-06-29 21:14:20 +03:00
23rd 70d3061d59 Added support of lottie icon to premium top bar. 2025-06-29 21:14:20 +03:00
23rd 8f7a66a21a Improved spell checking on macOS. 2025-06-29 21:14:20 +03:00
23rd cd8e944751 Added recent gifts to section of shared media from info profile. 2025-06-29 21:14:20 +03:00
23rd 66e05594f6 Fixed display of top bar suggestion on premium value changed. 2025-06-29 21:14:20 +03:00
23rd d06a9e2e5c Added missing shortcut to toggle fullscreen for windows on macOS. 2025-06-29 21:14:20 +03:00
23rd 64df9222dd Added handle of flood errors on requesting to check chat invite.
Fixed #29368.
2025-06-29 21:14:20 +03:00
23rd 900ac46583 Moved out gifts from userpic to description in credits history list. 2025-06-29 21:14:20 +03:00
23rd fda1c8399f Added icon to big button in credits settings. 2025-06-29 21:14:20 +03:00
23rd c2cd4fc75f Improved style of credits settings. 2025-06-29 21:14:20 +03:00
23rd ef5a9eb777 Added some utils to convenient insert of credits icons to text labels. 2025-06-29 21:14:20 +03:00
23rd 8e3100acdd Added ability to provide max width to about label in premium top bar. 2025-06-29 21:14:20 +03:00
23rd 50d74fcf25 Fixed build with layer 206. 2025-06-29 21:14:20 +03:00
John Preston 140862ce5a Update API scheme on layer 206. 2025-06-29 20:42:52 +03:00
John Preston 966453dd8f Update scheme on layer 206. Build broken. 2025-06-27 22:54:34 +04:00
John Preston fcd37adc38 Fix build with Xcode. 2025-06-27 22:53:37 +04:00
John Preston 6a3989488e Fix possible crash in quick replies. 2025-06-27 21:29:39 +04:00
John Preston fbfdef8f9a Remove balance for admins changing prices. 2025-06-27 21:29:39 +04:00
John Preston b66c61573f Make counter-suggestions link originals. 2025-06-27 21:29:39 +04:00
John Preston 9186b28b60 Fix suggest of a forward. 2025-06-27 21:29:39 +04:00
John Preston 915a1b105c Add balance of stars / TON. 2025-06-27 21:29:39 +04:00
John Preston 12b9b3ce71 To-Do List -> Checklist. 2025-06-27 21:29:39 +04:00
John Preston deb4c48551 Server-side min/max values for TON suggests. 2025-06-27 21:29:39 +04:00
John Preston 9dfaac8582 Optimize some request channel full requests. 2025-06-27 21:29:39 +04:00
John Preston bd5b9f5347 Make less channel full requests. 2025-06-27 21:29:39 +04:00
John Preston ff4b9a3cfe Improve suggest post UI. 2025-06-27 21:29:35 +04:00
John Preston e844d7ed89 Use phrase from lang.strings for TON gift. 2025-06-27 21:29:35 +04:00
John Preston f3ae8f7f75 Fix styles in discussion group management. 2025-06-27 21:29:35 +04:00
John Preston f137eddbf9 Use correct premium promo for To-Do Lists. 2025-06-27 21:29:35 +04:00
John Preston c70f75b21a Add Stars/TON checks to suggestions. 2025-06-27 21:29:35 +04:00
John Preston 141fb875f9 Add icons to suggestion buttons. 2025-06-27 21:29:35 +04:00
John Preston 344d47e7dd Fix stars amount check. 2025-06-27 21:29:35 +04:00
John Preston 4840a9094b Check amounts of stars/TON. 2025-06-27 21:29:35 +04:00
John Preston 6f305c8974 Improve layout in suggested price box. 2025-06-27 21:29:35 +04:00
John Preston c83bae3bb5 Use correct icon in post suggesting. 2025-06-27 21:29:35 +04:00
John Preston 4c1b962486 Support adding an offer to existing message. 2025-06-27 21:29:35 +04:00
John Preston b929e2a7b2 Update API scheme on layer 160, show correct warnings. 2025-06-27 21:29:35 +04:00
John Preston 1ecd7aa7cf Implement suggestion of changes. 2025-06-27 21:29:34 +04:00
John Preston 881aed50ea Support _suggestOptions for changes in ComposeControls. 2025-06-27 21:29:34 +04:00
John Preston 6272b79f70 Allow suggesting with TON. 2025-06-27 21:29:34 +04:00
John Preston 0fa50f1951 Update API scheme on layer 206. 2025-06-27 21:29:34 +04:00
John Preston dc19f2e76c Start suggesting changes to messages by editing. 2025-06-27 21:29:34 +04:00
John Preston 498116c3f6 Show correctly change suggestions. 2025-06-27 21:29:34 +04:00
John Preston e29dcf7489 Update API scheme on layer 206. Re-Suggest. 2025-06-27 21:29:34 +04:00
John Preston ec28eea7f0 Make keyboard fully shown with media. 2025-06-27 21:29:34 +04:00
John Preston ebce4d0f31 Show suggested service info. 2025-06-27 21:29:34 +04:00
John Preston bf9492e083 Show approve/decline service messages. 2025-06-27 21:29:34 +04:00
John Preston cb987c1baf PoC suggested accept/decline. 2025-06-27 21:29:34 +04:00
John Preston e4a4be1f53 Don't show visibility status in opened-by-link gifts. 2025-06-27 21:29:34 +04:00
John Preston f6d1fe6c04 Update API scheme on layer 206. 2025-06-27 21:29:34 +04:00
John Preston 7e5a29a5cc PoC suggesting posts to channels. 2025-06-27 21:29:34 +04:00
John Preston 8dbc175c02 Update API scheme on layer 206. 2025-06-27 21:29:33 +04:00
John Preston 0473374d51 Allow admin sending to monoforum for free. 2025-06-27 21:29:33 +04:00
John Preston b2d7342b9e Attempt to fix monoforum muted setting. 2025-06-27 21:29:33 +04:00
John Preston b965aecc6c Update API scheme to layer 206. 2025-06-27 21:29:33 +04:00
John Preston 9290c90bdc Allow fully editing todo lists. 2025-06-27 21:29:33 +04:00
John Preston d83a80ec53 Improve adding tasks to todo lists. 2025-06-27 21:29:33 +04:00
John Preston 248fe1b53f Add tasks to todo lists. 2025-06-27 21:29:33 +04:00
John Preston bf217bf7aa Check premium for todo lists actions. 2025-06-27 21:29:33 +04:00
John Preston e5de8e22b7 Add fireworks on ending a task list. 2025-06-27 21:29:33 +04:00
John Preston 5666e84d92 Add ability to create todo lists. 2025-06-27 21:29:33 +04:00
John Preston a97d1b8669 Support task lists view/update/actions. 2025-06-27 21:29:33 +04:00
John Preston 06db13a0ab Update API scheme to layer 205. 2025-06-27 21:29:33 +04:00
John Preston 9832af7cce Show messages from channels in monoforums. 2025-06-27 21:29:32 +04:00
Yagiz Nizipli cf4a617f2b update ada-url to v3.2.4 (#29353) 2025-06-27 09:56:01 -07:00
Sean Wei 5a6a5fd4d1 Change const T&& parameters to T&& to enable proper move semantics
Previously some constructors/functions used `const T&&`, which prevents
calling the move constructor. This commit removes the `const` qualifier
so that `std::move` actually performs a move.
2025-06-27 20:50:08 +04:00
Ilya Fedin e6ebc19b4f Switch qt snapcraft part to cmake plugin 2025-06-27 20:49:30 +04:00
Neurotoxin001 2250fe75c4 fix: use custom serialization for settings
The error occurred when adding a new fields, for example showForwards, to the AyuGramSettings class. The NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT macro was used for serialization, which works correctly only when the number of parameters is up to 64. After extending the structure, the macro failed to expand and the compiler started generating messages about undefined identifiers like NLOHMANN_JSON_TO.

The fix was to replace the problematic macro with manual implementation of to_json and from_json functions. For each field, it is now explicitly specified how to serialize and deserialize it, which eliminates the limitation on the number of arguments. Additionally, auxiliary macros NLOHMANN_JSON_TO, NLOHMANN_JSON_FROM and NLOHMANN_JSON_FROM_WITH_DEFAULT have been declared in case they are absent in the header file used.

More info: https://json.nlohmann.me/api/macros/nlohmann_define_type_intrusive/#notes
2025-06-26 19:08:41 +03:00
AlexeyZavar e27b1840c6 chore: update README
Co-authored-by: Max Balashov <rsg245@yandex.com>
2025-06-26 18:57:24 +03:00
Neurotoxin001 717d197998 fix: image order when downloading albums 2025-06-26 18:36:25 +03:00
Ilya Fedin 02dd0dbbef Push Docker image to GHCR again 2025-06-24 08:47:28 +04:00
John Preston 2e4a437d32 Version 5.15.4.
- Fix updating messages in Saved Messages subchats.
- Fix possible issues with mouse cursor on Linux.
2025-06-12 22:07:05 +04:00
John Preston 63e1d6dab6 Fix saved messages sublists updates. 2025-06-12 22:07:02 +04:00
Daniel Novomeský 23133499c7 Update dav1d, openh264, libwebp, libavif, libde265, libheif 2025-06-10 08:56:12 +04:00
Ilya Fedin 67bd87b50c Prevent non-Qt harfbuzz/libpng from being linked 2025-06-10 08:55:58 +04:00
Ilya Fedin 6d31a4246f Fix default cursor path 2025-06-09 20:24:09 +04:00
John Preston d4f38b6d66 Version 5.15.3: Revert cmake_helpers downgrade. 2025-06-09 11:05:47 +04:00
John Preston 959229f143 Version 5.15.3.
- Fix new contact top bar appearance.
- Remove change photo button for channel direct messages.
2025-06-09 09:39:02 +04:00
John Preston 22f9b1a0b1 Hide photo change button for monoforums. 2025-06-09 09:37:51 +04:00
John Preston a8fc5a722f Fix display of contact status. 2025-06-09 09:37:51 +04:00
AlexeyZavar 69420f5750 chore: refactor & reformat settings 2025-06-08 11:00:04 +03:00
AlexeyZavar 20976ac9f9 fix: ttl messages destroying 2025-06-06 21:27:39 +03:00
AlexeyZavar dc33accae7 chore: update sqlite3 2025-06-06 11:38:15 +03:00
AlexeyZavar 29d1f1f14a fix: copy sticker owner ID if not found 2025-06-06 11:37:52 +03:00
Ilya Fedin 6102119673 Update cmake_helpers 2025-06-06 11:14:06 +04:00
Ilya Fedin 0c635a05ff Allow overriding jobs count in Dockerfile 2025-06-06 11:14:06 +04:00
Ilya Fedin 307a7791df Set Implib commit 2025-06-06 11:14:06 +04:00
Ilya Fedin 49b056a0ce Update xcb libraries to avoid freedesktop's anongit 2025-06-06 11:14:06 +04:00
Ilya Fedin af58ffadcb Use cache action for Docker layers cache 2025-06-06 11:13:56 +04:00
John Preston dcbda7b3af Version 5.15.2.
- Fix sending messages in new forum layout.
- Add statistics for user stars.
2025-06-05 22:55:29 +04:00
John Preston 553cc0c6ae Fix new forum messages sending. 2025-06-05 21:26:50 +04:00
23rd 067dcbfbeb Added initial entry point for self statistics of credits. 2025-06-05 19:59:02 +03:00
23rd 759258bb39 Added support of statistics availability to Credits component. 2025-06-05 19:49:25 +03:00
John Preston 3667ef551c Version 5.15.1.
- Fix launch on Windows 7.
- Fix launch on older Linux distributions.
- Fix crash in group chat message right click.
- Fix unread counters in channel direct messages.
- Don't generate "User joined" message in channel direct messages.
- Fix some other glitches in new forums and channel direct messages.
2025-06-05 19:08:28 +04:00
Ilya Fedin a3308087a5 Fix static libstdc++ link 2025-06-05 16:57:04 +04:00
John Preston bfb4652425 Realtime update admin status in members list. 2025-06-05 16:09:41 +04:00
John Preston 03c24e2906 Show better monoforum chat info column. 2025-06-05 15:29:26 +04:00
John Preston dc61faace1 Handle disabling direct messages in channel. 2025-06-05 15:29:26 +04:00
John Preston 73ea86ceeb Improve monoforum chat profiles. 2025-06-05 14:24:30 +04:00
John Preston 9a622ab466 Add view channel button to monoforum info. 2025-06-05 14:09:03 +04:00
John Preston 65cfd6c81c Fix new forum layout search and topics list. 2025-06-05 13:55:55 +04:00
John Preston 08681ac1b9 Show join requests in new forums layout. 2025-06-05 13:39:33 +04:00
John Preston f9acb5d19b Fix activation of wrong tab after new window. 2025-06-05 13:00:14 +04:00
John Preston e9e187c58b Ctrl+Click to open subsection in a new window. 2025-06-05 12:54:59 +04:00
John Preston 3bc20c3550 Save last opened subsection within a launch. 2025-06-05 12:47:16 +04:00
John Preston 4b25406d14 Remove delay when switching subsection tabs. 2025-06-05 12:19:27 +04:00
John Preston 265b7904a8 Fix blockquote/code captions to media in reply bar. 2025-06-05 12:10:31 +04:00
John Preston fb2274c58d Fix glitch in new forum layout opening. 2025-06-05 12:04:28 +04:00
John Preston 3cfdc9d897 Fix setting group emoji status. 2025-06-05 11:40:05 +04:00
John Preston 11986ac698 Show star in channel direct messages settings. 2025-06-05 11:33:43 +04:00
John Preston a08436ecd2 Fix unread counters in filters with monoforums. 2025-06-05 11:04:23 +04:00
John Preston e92adf94a7 Improve adaptive loading in subsection tabs. 2025-06-05 10:45:13 +04:00
Ilya Fedin d25356917d Stop setting CMAKE_EXE_LINKER_FLAGS in actions 2025-06-05 09:56:19 +04:00
John Preston 0adb3b062f Use only first name in birthday notification. 2025-06-05 09:55:16 +04:00
John Preston 9316480884 Don't generate joined message in monoforums. 2025-06-05 09:22:44 +04:00
John Preston 4e5082f6c6 Fix comments root view position.
Fixes #29389.
2025-06-05 09:06:19 +04:00
John Preston 16d5dbe71c Fix crash in group chat context menu.
Fixes #29387.
2025-06-05 08:59:07 +04:00
John Preston 133d7874e3 Revert d3d compiler to 10.0.22621.3233. 2025-06-05 08:56:53 +04:00
John Preston 4659d5db5d Version 5.15.
- Send Direct Messages to Channels.
- Enable New Tab Layout for Topics.
- Create Polls with Up To 12 Options.
2025-06-04 22:56:02 +04:00
Ilya Fedin af061125dd Fix Docker build without LTO 2025-06-04 21:33:53 +04:00
John Preston 5c4b1f6638 Show message author to admins in monoforums. 2025-06-04 21:33:27 +04:00
John Preston ee3d70f879 Fix glitching userpics in monoforum. 2025-06-04 21:05:08 +04:00
John Preston 7dadaa1b28 Save subsection tabs layout to disk. 2025-06-04 19:39:34 +04:00
John Preston a72782e232 Use server provided default stars count for direct. 2025-06-04 18:42:17 +04:00
John Preston 8654ffb6fb Don't show "Who Viewed" in monoforums. 2025-06-04 18:26:48 +04:00
John Preston 90e445eec9 Don't show notifications from other admins. 2025-06-04 18:26:30 +04:00
John Preston 910b6d8879 Fix unread mark badge in new forums layout. 2025-06-04 18:13:21 +04:00
John Preston 8d1c2f832d Add "Create topic" to new forum view. 2025-06-04 17:59:25 +04:00
John Preston 158d2a4124 Fix possible stack overflow in subsection tabs. 2025-06-04 17:59:10 +04:00
John Preston 66473738d6 Add simple shadow to subsection tabs. 2025-06-04 17:26:23 +04:00
John Preston 6a43107bb2 Fix possible crash in subsection tabs. 2025-06-04 16:52:44 +04:00
John Preston 28e7afa412 Even nicer empty chat. 2025-06-04 16:48:37 +04:00
John Preston 8dc151e14d Fix build on Windows. 2025-06-04 16:21:21 +04:00
John Preston a330a3f2eb Nicer empty monoforum for non-admins. 2025-06-04 15:45:22 +04:00
Ilya Fedin 8f7195d3b2 Fix macOS action 2025-06-04 11:17:35 +04:00
Ilya Fedin a4e4502d50 Add missing dependencies to macOS packaged action 2025-06-04 11:17:35 +04:00
GitHub Action 902da90100 Update User-Agent for DNS to Chrome 136.0.0.0. 2025-06-04 10:28:54 +04:00
John Preston d775760f98 Support nice monoforum userpics. 2025-06-04 10:00:24 +04:00
John Preston dfb6600104 Fix loading of horizontal avatar strip. 2025-06-04 10:00:24 +04:00
John Preston 41ed487d5e Improve opening ChatWidget at the end. 2025-06-04 10:00:24 +04:00
John Preston d156de05a5 Allow replying in monoforum while not in it. 2025-06-04 10:00:24 +04:00
John Preston f4582ddf36 Correctly mark monoforum chats as read. 2025-06-04 10:00:24 +04:00
John Preston 7f7b764f7b Allow ton:// links in webapps. 2025-06-04 10:00:24 +04:00
John Preston dd8fdfc3d4 Allow forwarding polls to monoforums. 2025-06-04 10:00:24 +04:00
John Preston 6c80d443b9 Better entry point for Direct Messages. 2025-06-04 10:00:24 +04:00
John Preston cd05586d51 Fix display of pinned messages in sublists. 2025-06-04 10:00:24 +04:00
John Preston dfc1ec3ccf Support shared media / pins for sublists. 2025-06-04 10:00:23 +04:00
John Preston ffe6786ad1 Support unread reactions in monoforums. 2025-06-04 10:00:23 +04:00
John Preston 6068678fa1 Improve separate window support. 2025-06-04 10:00:23 +04:00
John Preston 50b761fab2 Remove showing monoforums inside dialogs widget. 2025-06-04 10:00:23 +04:00
John Preston 0d43f16db2 Remove unsupported actions from monoforum menu. 2025-06-04 10:00:23 +04:00
John Preston 3278de9ba1 Support mark as read/unread in sublists. 2025-06-04 10:00:23 +04:00
John Preston abe1962002 Show context menu for topics in new tabs. 2025-06-04 10:00:23 +04:00
John Preston 5b15f377cd Improve set direct message price box. 2025-06-04 10:00:23 +04:00
John Preston d0e5ea78a5 Improve topics layout management. 2025-06-04 10:00:23 +04:00
John Preston 853757e611 Fix tabs transfer between chat widgets. 2025-06-04 10:00:22 +04:00
John Preston c3860cfe72 Improve monoforum top bar status. 2025-06-04 10:00:22 +04:00
John Preston 90b2c077a6 Don't flood with bot requests in monoforums. 2025-06-04 10:00:22 +04:00
John Preston fdce4bada7 Implement nice topic mode editing. 2025-06-04 10:00:22 +04:00
John Preston 4c8ff1c7ec Disable polls in monoforums, enable in Saved Messages. 2025-06-04 10:00:22 +04:00
John Preston 2a153214f6 Support polls with 12 options. 2025-06-04 10:00:22 +04:00
John Preston d7c964afc5 Show "Messages" badge for monoforum. 2025-06-04 10:00:22 +04:00
John Preston 5943052cd1 Show badges in new tabs. 2025-06-04 10:00:22 +04:00
John Preston 8512154b45 Implement better horizontal/vertical tabs. 2025-06-04 10:00:22 +04:00
John Preston 0e5419c60b Fix opening forums with tabs. 2025-06-04 10:00:22 +04:00
John Preston 1d26482298 Update API scheme on layer 204. 2025-06-04 10:00:21 +04:00
John Preston 126749f04c Fix build with new MSVC. 2025-06-04 10:00:21 +04:00
John Preston e0e69ce740 Support vertical tabs somehow. 2025-06-04 10:00:21 +04:00
John Preston 72b57924b7 Correctly load tab slices. 2025-06-04 10:00:21 +04:00
John Preston fdbdeeb956 Start new tabs for monoforums. 2025-06-04 10:00:21 +04:00
John Preston 3dbdecf73d Make monoforum sender badges float. 2025-06-04 10:00:21 +04:00
John Preston 7dc8943840 Improve monoforum opening. 2025-06-04 10:00:21 +04:00
John Preston 646b852717 Correct rights check in monoforums. 2025-06-04 10:00:21 +04:00
John Preston 075f754a71 Update API scheme on layer 204. 2025-06-04 10:00:21 +04:00
John Preston f65556acb7 Support drafts in monoforum sublists. 2025-06-04 10:00:21 +04:00
John Preston b2c01991a6 Support unread state in sublists. 2025-06-04 10:00:21 +04:00
John Preston 4bc5e81513 Update API scheme on layer 204. 2025-06-04 10:00:19 +04:00
John Preston 2b24fe95c2 Update API scheme on layer 204. 2025-06-04 10:00:19 +04:00
John Preston 358e64f2cc Show monoforums as forums in chats list. 2025-06-04 10:00:19 +04:00
John Preston 5dc50b6d96 Respect price of messages to channels. 2025-06-04 10:00:18 +04:00
John Preston b91a040a32 Update API scheme on layer 204. 2025-06-04 10:00:18 +04:00
John Preston 76db55ff19 Support forwarding to monoforums. 2025-06-04 10:00:18 +04:00
John Preston e17bf18350 Update API scheme on layer 204. 2025-06-04 10:00:18 +04:00
John Preston 43b4499125 Add monoforum sender bar divider. 2025-06-04 10:00:18 +04:00
John Preston c6d43a802c Fix sending messages in monoforums. 2025-06-04 10:00:18 +04:00
John Preston 21f8403357 Merge SublistSection into ChatSection. 2025-06-04 10:00:18 +04:00
John Preston 40053e3388 Rename RepliesWidget/Memento to ChatWidget/Memento. 2025-06-04 10:00:14 +04:00
John Preston abcf7e3a47 Update API scheme & fix monoforum send. 2025-06-04 10:00:14 +04:00
John Preston f8913bf9b9 Show square userpics for monoforums. 2025-06-04 10:00:14 +04:00
John Preston 51878ab38e Allow opening monoforums. 2025-06-04 10:00:14 +04:00
John Preston d3f9a84a0a Allow enabling direct messages in channels. 2025-06-04 10:00:14 +04:00
John Preston 23eedb468f Update API scheme to layer 204. 2025-06-04 10:00:14 +04:00
John Preston 9cb89fff45 Fix dropping filter in gifts. 2025-06-04 10:00:14 +04:00
23rd 79f0b22276 Compressed lottie for media forbidden. 2025-06-03 18:30:38 +03:00
23rd 8b2a728a0d Fixed display of loading animation from search in Saved Messages. 2025-06-03 18:28:11 +03:00
23rd b4120b156e Added nice overlay to recorded round videos. 2025-06-03 17:55:37 +03:00
23rd 1ae3122c20 Added support of suggestion to validate cloud password to settings. 2025-06-03 17:55:37 +03:00
23rd 727acca217 Updated Qt to 5.15.17 on Windows. 2025-06-03 17:55:37 +03:00
23rd 5f8d662d67 Slightly improved of forward declarations in history item. 2025-06-03 17:55:18 +03:00
23rd 81b432140c Added ability to edit caption from box even when file is uploaded. 2025-06-03 17:55:18 +03:00
23rd adc1ee71a9 Slightly improved box to edit caption of grouped file. 2025-06-03 17:55:18 +03:00
23rd 5ac373d4aa Added simple box to edit caption of single file while it's uploading. 2025-06-03 17:55:18 +03:00
23rd 5b9e24f3f4 Slightly improved box for writing captions to be more generic. 2025-06-03 17:55:18 +03:00
23rd 0e44de2fe3 Slightly improved style of exception button in notifications settings. 2025-06-03 17:55:18 +03:00
23rd b0125e8165 Slightly improved display of numbers approaching zero in stats charts. 2025-06-03 17:55:18 +03:00
23rd a532067a93 Fixed dismissing of custom pending suggestions. 2025-06-03 17:55:18 +03:00
Ilya Fedin f456071c08 Switch Dockerfile to packaged mode 2025-06-03 18:25:15 +04:00
Ilya Fedin 3896f0995c Runtime Implib detection 2025-06-03 18:25:15 +04:00
Ilya Fedin 56ff5808a3 Unify packaged/non-packaged binary name 2025-06-03 18:25:15 +04:00
Ilya Fedin 15c817dd15 Update Qt 6.9.0 -> 6.9.1 2025-06-03 15:01:48 +04:00
Ilya Fedin 7246c3f304 Set cmake OpenGL default to legacy in Dockerfile 2025-06-03 14:11:25 +04:00
Ilya Fedin e4f59f1ec4 Build only static libraries in Dockerfile 2025-06-03 14:11:25 +04:00
Ilya Fedin 5f0e9538cf Move Implib to Dockerfile 2025-06-03 10:16:58 +04:00
Ilya Fedin 73649128f3 Update cmake_helpers 2025-06-03 09:58:11 +04:00
Ilya Fedin edc84731ac Change debug cmake flags according to Dockerfile options 2025-06-03 09:58:11 +04:00
Ilya Fedin 108b116b06 Use lld when building without LTO in Dockerfile 2025-06-03 09:58:11 +04:00
Ilya Fedin dda587dc6f DESKTOP_APP_USE_PACKAGED_LAZY -> DESKTOP_APP_DISABLE_QT_PLUGINS 2025-06-03 09:50:07 +04:00
Ilya Fedin 4a9dd43598 Update tg_owt 2025-06-03 09:41:49 +04:00
Ilya Fedin a64cfe661a Add missing deps to webrtc Docker layer 2025-06-03 09:41:33 +04:00
Ilya Fedin 7e418a16ae Fix packaged conditions in lib_ffmpeg and Packer 2025-06-03 09:41:22 +04:00
Ilya Fedin ecf1fa2bbd Get rid of lib prefixes in Docker layers 2025-06-03 09:28:44 +04:00
Ilya Fedin a6157a34bc Update variable syntax in Dockerfile 2025-06-03 09:28:44 +04:00
Ilya Fedin 8e37e66706 Make TOOLSET variable not dependent on jinja in Dockerfile 2025-06-03 09:28:44 +04:00
Ilya Fedin dd6a4931e5 Make QT variable local to the Docker layer 2025-06-03 09:28:44 +04:00
Ilya Fedin 2d000e826b Remove GIT variable from Dockerfile 2025-06-03 09:28:44 +04:00
Ilya Fedin c1028e7408 Remove GIT_FREEDESKTOP variable from Dockerfile 2025-06-03 09:28:44 +04:00
Ilya Fedin 28b54fac37 Revert GIT_UPDATE_M4 in Dockerfile
This partially reverts commit 9461095c88.
2025-06-03 09:28:44 +04:00
Ilya Fedin 845fddf5f2 Use enable_language 2025-06-03 09:28:31 +04:00
Ilya Fedin e3e2a477c1 Proper check for multi-config generator 2025-06-03 09:20:45 +04:00
Ilya Fedin bf4442ecf5 CMAKE_CONFIG_TYPE doesn't seem to work
This partially reverts commit ae45189436.
2025-06-03 09:20:24 +04:00
AlexeyZavar 3be793032f fix: use usinfobot for username resolving & update README 2025-06-02 15:52:31 +03:00
Crd5 0fab18e8e8 chore: add homebrew as a download source for macOS 2025-06-02 15:48:52 +03:00
Ilya Fedin ab6375ef2a Update submodules 2025-05-27 10:56:02 +04:00
Ilya Fedin 2535b6e08c Update GCC to 14 on Linux 2025-05-27 10:56:02 +04:00
Ilya Fedin 2f003d416a Update OpenAL to 1.24.3 on Linux 2025-05-27 10:56:02 +04:00
Ilya Fedin 579b358f8b Use system gobject-introspection in Dockerfile 2025-05-27 10:56:02 +04:00
Ilya Fedin 231a583bf7 Build tg_owt in packaged mode in Dockerfile 2025-05-27 10:56:02 +04:00
Ilya Fedin f0cfbacb4f Install Qt to global prefix in Dockerfile 2025-05-27 10:56:02 +04:00
Ilya Fedin ae45189436 Set cmake generator, build type and parallel level globally in Dockerfile 2025-05-27 10:56:02 +04:00
Ilya Fedin ff8292b863 Set build directory for libde265 in Dockerfile 2025-05-27 10:56:02 +04:00
Ilya Fedin ebe45f73a0 Shorten GIT_UPDATE_M4 2025-05-27 10:56:02 +04:00
kuro neko c91f41e988 fix: upstream docker build
Same as https://github.com/telegramdesktop/tdesktop/commit/88ce676c46bb9806765bd0f4a8c700a60802d1b8
2025-05-26 04:55:51 +03:00
AlexeyZavar 3c7f3e8740 chore: change links 2025-05-20 22:59:22 +03:00
AlexeyZavar 3a9899529a fix: reordering crashes 2025-05-20 22:56:30 +03:00
Ilya Fedin 88ce676c46 Use Python 3.11 explicitly in Docker 2025-05-20 18:55:54 +04:00
Ilya Fedin 426cc2798e Revert "Use Python 3.12 in Docker"
This reverts commit 1d2df63652.
2025-05-20 18:55:54 +04:00
AlexeyZavar 5a015888d4 chore: remove workflows 2025-05-20 17:35:57 +03:00
Ilya Fedin 1d2df63652 Use Python 3.12 in Docker 2025-05-20 17:59:43 +04:00
AlexeyZavar be378eaacb feat: simple files reordering in send box 2025-05-19 15:44:02 +03:00
AlexeyZavar 631f5a1043 feat: restore caption from send files box 2025-05-19 00:59:34 +03:00
AlexeyZavar 353e9adec1 fix: make it build 2025-05-19 00:32:36 +03:00
AlexeyZavar e572da4927 Merge tag 'v5.14.3' into dev 2025-05-18 22:30:24 +03:00
John Preston d22afa36c3 Version 5.14.3.
- Fix stale birthday suggestions removing.
- Fix notification click opening a new window.
2025-05-18 20:32:39 +04:00
John Preston a7296f15ac Suggest to reset gifts filter. 2025-05-18 20:32:39 +04:00
John Preston b20caee548 Check if the resale gift price changed. 2025-05-18 14:12:18 +04:00
John Preston 519832edd7 Show warnings for dangerous business bot rights. 2025-05-18 14:12:17 +04:00
John Preston a2cea1e5bc More robust business bot editing. 2025-05-18 14:12:16 +04:00
John Preston b3c198f0d2 Improve layout of media albums with likes. 2025-05-18 14:12:15 +04:00
23rd b45a696b5d Fixed build of macOS on Github CI. 2025-05-17 09:22:12 +03:00
Mehran a2b3fe6411 Add and slightly improve cloud languages 2025-05-16 12:38:04 +04:00
Ilya Fedin 13d4f37726 Use CMAKE_MSVC_DEBUG_INFORMATION_FORMAT in Windows action 2025-05-16 11:36:16 +04:00
23rd 71f34f4e31 Added ability to jump from code to phone input in intro with Space. 2025-05-15 18:19:49 +03:00
23rd 018f147de6 Slightly improved position of code input in intro step. 2025-05-15 17:58:14 +03:00
23rd da012cbf8b Added lottie emoji to box for validate phone number in settings. 2025-05-15 17:58:14 +03:00
John Preston 3907a103fc Fix possible notification click problem.
Fixes #29293.
2025-05-15 15:34:23 +04:00
John Preston efb566bcc7 Don't show resale gifts as "sold out". 2025-05-15 14:50:27 +04:00
John Preston 53e8df3542 Sort resale gifts by Price by default. 2025-05-15 14:50:22 +04:00
23rd a00d262773 Added support of suggestion to validate phone number to settings. 2025-05-15 13:22:54 +03:00
23rd b64db54793 Fixed possible incorrect display of low credits balance in top bar. 2025-05-15 10:09:24 +03:00
23rd 97c0e3d4a9 Added support of custom emoji to top bar suggestion. 2025-05-15 10:09:01 +03:00
23rd ba31bbace8 Added refresh of top bar suggestion on day changed for birthdays. 2025-05-15 10:08:44 +03:00
23rd 606dfd29d3 Moved out data of contact birthdays to promo suggestions class. 2025-05-15 10:08:22 +03:00
23rd 9411d0781b Removed birthday suggestions for self, blocked and deleted accounts. 2025-05-15 09:22:22 +03:00
23rd 7aea200860 Fixed padding reset in top bar suggestion on suggestion changed. 2025-05-15 09:21:54 +03:00
Ilya Fedin 5d8ac95d07 Prepend PkgConfig variables with TDESKTOP_
To avoid clashes with cache variables set by third party cmake modules
2025-05-14 11:13:50 +04:00
Ilya Fedin cd0ebb41aa Use CMAKE_COMPILE_WARNING_AS_ERROR in actions
Instead of specifying the compiler flag manually
2025-05-14 10:43:50 +04:00
Ilya Fedin eb028b0dad Ensure clangd cache is out of build directory
It's annoying to rebuild index after cleaning the build directory
2025-05-13 10:41:42 +04:00
Ilya Fedin 61803f7516 Update submodules 2025-05-13 08:07:02 +04:00
Ilya Fedin 50bfed79be Update protobuf in snap 2025-05-13 07:48:03 +04:00
Ilya Fedin 1c77ae818e Update cmake_helpers 2025-05-12 09:41:26 +04:00
Ilya Fedin 66ede6037d Add t2e2e to snap 2025-05-12 09:41:26 +04:00
Ilya Fedin 01452b7309 Add tde2e to macOS Packaged action 2025-05-12 09:41:26 +04:00
Ilya Fedin b5f2470b79 td -> tde2e 2025-05-12 09:41:26 +04:00
Ilya Fedin 49403e9fee Fix COPY order for libraries in Dockerfile 2025-05-12 09:41:26 +04:00
John Preston 66d512f26f Version 5.14.2.
- Buy Rare Gifts in the Marketplace.
- Sell Your Gifts for Stars.
- Set Your Channel to Auto-Translate.
2025-05-09 10:01:55 +04:00
John Preston 2ba0ebf3e8 Update cmake_helpers submodule. 2025-05-09 10:01:55 +04:00
John Preston bbcd27d3c2 Fix possible crash in restrictions. 2025-05-09 10:01:55 +04:00
Ilya Fedin 837a3528cd Fix mozjpeg build with cmake 4 2025-05-08 03:41:54 -07:00
Ilya Fedin f39662588f Revert "Cherry-pick mozjpeg cmake 4 compatibility"
This reverts commit 9fd1f95ab8.
2025-05-08 03:41:54 -07:00
Ilya Fedin 4b12f52029 Revert "Set CMAKE_MSVC_RUNTIME_LIBRARY for mozjpeg"
This reverts commit ce764c862f.
2025-05-08 03:41:54 -07:00
Ilya Fedin f2920ddefb Use Docker's actions to build Docker image 2025-05-08 02:52:14 -07:00
Ilya Fedin ce010653d5 Don't create unnecessary subfolder in Linux action
It results in a tdesktop/tdesktop/tdesktop path
2025-05-08 02:52:14 -07:00
Ilya Fedin ce764c862f Set CMAKE_MSVC_RUNTIME_LIBRARY for mozjpeg
The cherry-pick made in 9fd1f95ab8 broke mozjpeg's own WITH_CRT_DLL variable so we have to use the cmake one
2025-05-08 02:38:45 -07:00
Ilya Fedin 60d821ae3e Use cmake --build in macOS action 2025-05-08 02:37:08 -07:00
Ilya Fedin 8f7f8fc0b5 Set CMAKE_CONFIGURATION_TYPES for actions 2025-05-08 02:37:08 -07:00
John Preston ec45041a66 Fix empty query migrated group search. 2025-05-08 10:53:23 +04:00
Ilya Fedin 67a666b282 Return accidentally removed video formats 2025-05-07 23:19:39 -07:00
Ilya Fedin d9404fc566 Raise minimum required cmake version to 3.25
Use policies up to 3.31
2025-05-07 23:13:01 -07:00
23rd bcd899c641 Slightly improved phrases to admin log for channels. 2025-05-07 22:35:30 +03:00
John Preston ec61ac29ea Fix forum showing when group not opened. 2025-05-07 22:17:49 +04:00
John Preston 180e663a43 Implement nice confcall bar text. 2025-05-07 22:10:44 +04:00
John Preston ae1711a685 Use translated phrase for collectible upgrade. 2025-05-07 21:05:33 +04:00
John Preston 9c3b62574d Change some hard-coded phrases. 2025-05-07 20:35:01 +04:00
John Preston a3637c12d6 Fix first message date with new peer info. 2025-05-07 18:53:21 +04:00
John Preston cae192682b Improve notification Ctrl+Click to open a new window.
Fixes #29144.
2025-05-07 18:52:52 +04:00
23rd 6c68bacaef Added ability to open chat in window from Ctrl+click on notifications. 2025-05-07 18:09:34 +04:00
John Preston ee7a2b564b Show "Join" button for pinned call links. 2025-05-07 18:03:59 +04:00
John Preston fb25d90b48 Hide weird unread badge in new-window forum. 2025-05-07 18:03:46 +04:00
John Preston 9075a521f0 Correctly show global search with in-chat. 2025-05-07 18:03:18 +04:00
John Preston 00a0e595ff Don't add global posts search preview for in-chat start. 2025-05-07 17:12:00 +04:00
John Preston 694ff32b01 Always search hashtags in current chat. 2025-05-07 16:56:55 +04:00
John Preston a74635ff56 Fix: Hide 'My gifts' tab when gifting to self 2025-05-07 16:52:57 +04:00
John Preston 8c6f3d66b5 Don't mask gift numbers in service notifications. 2025-05-07 16:44:41 +04:00
John Preston a49cb06d77 Fix unread count update in folder strip. 2025-05-07 16:39:42 +04:00
John Preston f96f478470 Rename linked-chat to discussion-link. 2025-05-07 14:58:47 +04:00
John Preston 1d2f713673 Fix Cursor rules files. 2025-05-07 14:50:01 +04:00
23rd 57d24d0fbf Fixed ability to dismiss of suggestion of 2+ birthdays of contacts. 2025-05-07 12:16:51 +03:00
23rd 584e55a89c Fixed crash on dismiss of birthday suggestion. 2025-05-07 12:15:50 +03:00
23rd 4560a83441 Fixed creation of new filter with selected dialog from menu. 2025-05-07 11:47:00 +03:00
23rd f4658728e8 Fixed update of currency balance on error receiving. 2025-05-07 11:17:33 +03:00
23rd 54825dc66f Fixed button for currency withdrawal from bots. 2025-05-07 10:28:54 +03:00
23rd d4056ac10a Slightly improved style of withdrawal widget in bot earn stats. 2025-05-07 10:04:26 +03:00
23rd 8f409a8fe2 Fixed swipe-back on strip of similar channels. 2025-05-07 10:04:26 +03:00
23rd d369d988b0 Fixed possible crashed on local zoom of charts in stats. 2025-05-07 10:04:26 +03:00
23rd 2a74736761 Removed ability to set wallpaper to replies chat. 2025-05-07 10:04:26 +03:00
23rd 6bd0bf6e69 Made more rpl-friendly balance label in channel profile. 2025-05-07 10:04:26 +03:00
23rd 53cee177e8 Added timeout to earn requests for channels and bots. 2025-05-07 10:04:26 +03:00
23rd a8afc62db7 Added ability to inspect earn balance from channel info. 2025-05-07 10:04:26 +03:00
23rd 14328eb601 Fixed right label for only paid reaction in edit peer info box. 2025-05-06 20:50:19 +03:00
23rd 2184755fdf Fixed ripple from top button in box about sponsored messages. 2025-05-06 20:50:19 +03:00
23rd 3a3cd1f856 Slightly improved icon position in PointDetailsWidget for stats. 2025-05-06 20:50:19 +03:00
23rd 24a3a41cd6 Slightly improved code style in PromoSuggestions. 2025-05-06 12:33:03 +03:00
23rd 197f6b05ae Added support of custom promo suggestions. 2025-05-06 12:21:42 +03:00
23rd c2e887a86e Moved out top promo from api and suggestions from config to single file. 2025-05-06 12:21:06 +03:00
AlexeyZavar 12b16577ef feat: send with sound in menu 2025-05-05 20:51:41 +03:00
AlexeyZavar 409165dec6 chore: refactor settings 2025-05-05 20:36:16 +03:00
AlexeyZavar 4870d59a43 fix: check if a message is modified 2025-05-05 19:35:09 +03:00
AlexeyZavar 70c3bb3288 fix: allow deleting deleted messages 2025-05-05 19:06:58 +03:00
AlexeyZavar 36156997ee fix: make it build
Thanks to tdesktop team for publishing broken sources ^^
2025-05-05 18:45:40 +03:00
Ilya Fedin 2c2728448c Update cmake_helpers 2025-05-05 16:52:55 +03:00
Ilya Fedin d1781a7c47 Fix tde2e include the way tdlib itself uses it 2025-05-05 16:51:48 +03:00
John Preston dc1459438c Fix a crash in screen share window close. 2025-05-05 11:43:51 +04:00
John Preston 00e6da9d64 Fix build with Xcode. 2025-05-05 11:43:51 +04:00
John Preston 68b3d75705 Track and show "too early" gift transfer/resell. 2025-05-05 11:43:51 +04:00
John Preston 3e538b732a Update API scheme on layer 203. 2025-05-05 11:43:51 +04:00
John Preston 833341dea7 Show transfer price if transfer from resale. 2025-05-05 11:43:51 +04:00
John Preston bc3efe2f4c Improve gift resale transaction entries. 2025-05-05 11:43:51 +04:00
John Preston 10e4c59f2e Correct implementation of auto-translation. 2025-05-05 11:43:51 +04:00
John Preston d9016b7979 Update API scheme on layer 203. 2025-05-05 11:43:51 +04:00
John Preston d975610ecd Update API scheme on layer 203. 2025-05-05 11:43:51 +04:00
John Preston 5d1251f6d8 Improve layout of resale gift counters. 2025-05-05 11:43:50 +04:00
John Preston bdf802e64a Use TextWithEntities().append(style::IconEmoji). 2025-05-05 11:43:50 +04:00
John Preston f2b888f9ae Use nice icons in resale gifts sorting. 2025-05-05 11:43:50 +04:00
John Preston 9583007769 Apply auto-translation from French? for test. 2025-05-05 11:43:50 +04:00
John Preston eb81c33308 Allow saving "Autotranslation of Messages" in channels. 2025-05-05 11:43:50 +04:00
John Preston 8d734f5cc4 Update API scheme on layer 203. 2025-05-05 11:43:50 +04:00
John Preston 3375ff6152 Use correct phrases for the resold gifts. 2025-05-05 11:43:50 +04:00
John Preston 80fc58f83e Reorder privacy and security settings. 2025-05-05 11:43:50 +04:00
John Preston 17c0124747 Improve price layout in saved gifts. 2025-05-05 11:43:50 +04:00
John Preston c220d4dd17 Handle STARGIFT_RESELL_TOO_EARLY error. 2025-05-05 11:43:50 +04:00
John Preston 15146725e3 Fix transfer of my gifts from Resale. 2025-05-05 11:43:50 +04:00
John Preston ddfab824c3 Respect gift privacy for resell gifts. 2025-05-05 11:43:50 +04:00
John Preston 8b5a00ca27 Add separate "Change Price" context menu button. 2025-05-05 11:43:50 +04:00
John Preston 04a7f14c0e Add price tag in resale gift view. 2025-05-05 11:43:50 +04:00
John Preston 18f14b828c Allow buying resold gifts. 2025-05-05 11:43:50 +04:00
John Preston 0a92e12a62 Allow placing your gifts on sale. 2025-05-05 11:43:50 +04:00
John Preston 5b71281ec4 Update API scheme on layer 203. 2025-05-05 11:43:50 +04:00
John Preston 08fdc4f1fc Add "Resale" tab in gift selection. 2025-05-05 11:43:50 +04:00
John Preston c726bef740 Allow buying reselling gifts. 2025-05-05 11:43:50 +04:00
John Preston 94e0ac3f54 Add resale gift sorting modes icons. 2025-05-05 11:43:50 +04:00
John Preston 284f7fc4f7 Improve resale unique gift display. 2025-05-05 11:43:50 +04:00
John Preston e629460942 Implement filtering of resale gifts. 2025-05-05 11:43:50 +04:00
John Preston 904e531113 Show resell info in gifts choose box. 2025-05-05 11:43:49 +04:00
John Preston ca2f2adc90 Use correct paths for the rules files. 2025-05-05 10:58:35 +04:00
Ilya Fedin 78a3e329f5 Use gperf from msys2 2025-05-03 04:46:45 -07:00
Ilya Fedin 5938e0f821 Use native versions of diffutils and pkg-config on Windows 2025-05-03 04:46:45 -07:00
Ilya Fedin 4a6ae3b46c Use ninja from Windows SDK 2025-05-03 04:46:45 -07:00
Ilya Fedin 2327d661b9 Update msys2 2025-05-03 04:46:45 -07:00
Ilya Fedin 9790e37154 Remove unused ThirdParty\cmake\bin from prepare.py 2025-05-03 04:46:45 -07:00
Ilya Fedin f97d751343 Update tg_owt 2025-05-03 04:46:45 -07:00
Ilya Fedin 81c1f6bd8e Update rnnoise 2025-05-03 04:46:45 -07:00
Ilya Fedin e3a5a4239b Don't override C(XX)FLAGS for static MSVC library in prepare.py
Rely solely on CMAKE_MSVC_RUNTIME_LIBRARY
2025-05-03 04:46:45 -07:00
Ilya Fedin fcec85881f Update xz to 5.8.1 in Docker 2025-05-03 04:46:45 -07:00
Ilya Fedin cfefb8b2e0 Update zlib to 1.3.1 2025-05-03 04:46:45 -07:00
Ilya Fedin e81a2a5011 Update Opus to 1.5.2
This fixes compatibility with cmake 4
2025-05-03 04:46:45 -07:00
Ilya Fedin d62b488459 Ensure ffmpeg can find static pkg-config deps 2025-05-03 04:46:45 -07:00
Ilya Fedin 932bd92b95 Cherry-pick libde265 cmake 4 compatibility 2025-05-03 04:46:45 -07:00
Ilya Fedin 9fd1f95ab8 Cherry-pick mozjpeg cmake 4 compatibility 2025-05-03 04:46:45 -07:00
Ilya Fedin cf414cb9cb Update cmake_helpers 2025-05-03 03:09:40 -07:00
Ilya Fedin f676d32f96 Fix tde2e include the way tdlib itself uses it 2025-05-03 03:09:40 -07:00
AlexeyZavar 939c9afeb4 Merge tag 'v5.14.1' into dev 2025-05-02 01:50:47 +03:00
John Preston 7d88c48c39 Version 5.14.1.
- Fix launching on Windows 7.
2025-05-01 19:01:11 +04:00
John Preston 26337a6bd4 Partially revert "Get rid of /DELAYLOAD"
This partially reverts commit 6586791655.
2025-05-01 18:57:35 +04:00
John Preston 1263a5bfc0 Fix build on MSVC. 2025-05-01 17:59:38 +04:00
John Preston fe21ca5b95 Update lib_ui. 2025-05-01 17:57:46 +04:00
23rd 0fe9dad515 Added initial api support of bank card entity in messages. 2025-05-01 13:51:16 +03:00
John Preston 75b33c906d Version 5.14.
- Secure Group Calls Made Easy.
- Automated Business Accounts.
- New Gifts Settings.
2025-05-01 12:43:35 +04:00
23rd 835fa77964 Fixed unpaused custom emoji in top bar of sponsored messages. 2025-05-01 12:43:35 +04:00
John Preston 3e13186560 Fix right Open button in search results. 2025-05-01 12:11:03 +04:00
John Preston 01f191289d Update cmake_helpers. 2025-05-01 11:59:54 +04:00
Ilya Fedin 6586791655 Get rid of /DELAYLOAD 2025-05-01 00:59:24 -07:00
John Preston b4f6774ca8 Update cmake_helpers. 2025-05-01 11:52:57 +04:00
John Preston 75d346fe69 Add support for tg://stars link. 2025-05-01 11:13:22 +04:00
John Preston 27780c7327 Add xml to ip-revealing extensions.
In case you put SVG content in an .xml file it shows it in the browser.
2025-05-01 11:13:22 +04:00
John Preston 100a8882f1 Add support for svg icons in style codegen. 2025-05-01 11:13:22 +04:00
John Preston 983bd1a57b Add some Cursor rules / ignore paths. 2025-05-01 11:13:22 +04:00
John Preston 810f7949f4 Fix crash in marking message contents read. 2025-05-01 11:13:22 +04:00
23rd 28c502bd85 Fixed display of plural phrase in moderate box. 2025-05-01 11:13:22 +04:00
23rd b8c313965f Fixed display of negative views count in message preview from stats. 2025-05-01 11:13:22 +04:00
23rd 8a2dcbbcff Removed 'new' badge from entry for messages effect in premium summary. 2025-05-01 11:13:22 +04:00
John Preston 263b9fa611 Add avrt.dll to the list of delayload libs. 2025-05-01 11:13:22 +04:00
23rd 793e15f80c Added entry point to settings section for login email change. 2025-05-01 11:13:22 +04:00
23rd 23d1394fb2 Added settings section for input of code confirm for login email. 2025-05-01 11:13:22 +04:00
23rd f97bb23c9d Added settings section for input of new login email replacement. 2025-05-01 11:13:22 +04:00
23rd d557739a28 Added api support to change login email. 2025-05-01 11:13:22 +04:00
23rd 8d06243b57 Added login email pattern to cloud password data. 2025-05-01 11:13:22 +04:00
23rd 9a4b73b942 Added ability to provide marked text to right label of settings button. 2025-05-01 11:13:21 +04:00
23rd d73e0dd13c Added phrases for login email settings. 2025-05-01 11:13:21 +04:00
23rd 2f3818fe4b Added assertion on looking up for controller from top bar suggestion. 2025-05-01 11:13:21 +04:00
John Preston d3d773079c Closed alpha version 5.13.1.5. 2025-05-01 11:13:21 +04:00
23rd 0b2acec50c Ensured to clear all top bar suggestion states on each check. 2025-05-01 11:13:21 +04:00
23rd 3501e4f44d Slightly improved check of today birthdays suggestion. 2025-05-01 11:13:21 +04:00
23rd 384c540197 Added special status to peers in gifts list with tomorrow birthday. 2025-05-01 11:13:21 +04:00
John Preston 1b78ffc018 Fix crash in joining video chats. 2025-05-01 11:13:21 +04:00
John Preston 79f4f0adbf Closed alpha version 5.13.1.4. 2025-05-01 11:13:21 +04:00
John Preston 98d71308a8 Update tgcalls, don't link libtgvoip any more. 2025-05-01 11:13:21 +04:00
23rd 4f0fa66575 Added ability to open profile of user by click on userpic in gift box. 2025-05-01 11:13:21 +04:00
23rd ecac3a0f16 Added context menu to list in ChooseStarGiftRecipient. 2025-05-01 11:13:21 +04:00
23rd d1898b9a0b Excluded non-today birthdays from reminder in top bar from dialogs. 2025-05-01 11:13:21 +04:00
23rd 868c7b170e Set premium grace suggestion as top priority. 2025-05-01 11:13:21 +04:00
23rd b1c5c53687 Fixed display of chat filters strip while search in peer. 2025-05-01 11:13:21 +04:00
23rd 6704886c6e Fixed display of top bar suggestion while search in peer. 2025-05-01 11:13:21 +04:00
23rd 7e45283ba2 Added privacy link to birthday box from top bar suggestion. 2025-05-01 11:13:21 +04:00
John Preston ff67d876b2 Respect "call_requests_disabled" for confcalls. 2025-05-01 11:13:21 +04:00
John Preston 4975a0a8d8 Update tgcalls. 2025-05-01 11:13:21 +04:00
John Preston e34a4338a1 Closed alpha version 5.13.1.3. 2025-05-01 11:13:21 +04:00
John Preston 0b4986b47a Fix build on Windows. 2025-05-01 11:13:21 +04:00
John Preston 937eab5f27 Update tde2e/tgcalls. 2025-05-01 11:13:20 +04:00
John Preston 70378bfac8 Improve emoji animation. 2025-05-01 11:13:20 +04:00
John Preston 29d87f692a Add carousel animation for emoji fingerprint. 2025-05-01 11:13:20 +04:00
John Preston b1b2798be1 Update tde2e library. 2025-05-01 11:13:20 +04:00
John Preston 2b74ad8b5f Disable raised-hand state in confcalls. 2025-05-01 11:13:20 +04:00
John Preston 3098fa6855 Rejoin async on e2e error. 2025-05-01 11:13:20 +04:00
John Preston 53883a7f1f Improve confcall re-create keyboard navigation. 2025-05-01 11:13:20 +04:00
John Preston 2c048376d4 Add TDLib build phases for tde2e part. 2025-05-01 11:13:20 +04:00
John Preston b583240d58 Put prioritized users on top of inactive confcall. 2025-05-01 11:13:20 +04:00
John Preston 844be11d43 Closed alpha version 5.13.1.2. 2025-05-01 11:13:20 +04:00
John Preston 53b739139b Suggest invite to empty/discarded joining call. 2025-05-01 11:13:20 +04:00
John Preston d09d1d72e6 Improve "Open" bot button in suggestions. 2025-05-01 11:13:20 +04:00
John Preston 01d927aceb Improve confcall join. 2025-05-01 11:13:20 +04:00
John Preston 59abfcbd6d Support "Device Storage" web app feature. 2025-05-01 11:13:20 +04:00
John Preston 4c2ec15f70 Fix "Add People" button visibility update. 2025-05-01 11:13:20 +04:00
John Preston 2b6dfbf4eb Closed alpha version 5.13.1.1. 2025-05-01 11:13:18 +04:00
John Preston eb8372eb91 Poll sub_chain_id:1 blocks after call_create. 2025-05-01 11:13:18 +04:00
John Preston c6b2967da0 Implement "Create New Call" interface. 2025-05-01 11:13:18 +04:00
John Preston 042f51e58f Optimize confcall join process. 2025-05-01 11:13:18 +04:00
John Preston c72cf46db7 Implement fast confcall migration. 2025-05-01 11:13:18 +04:00
John Preston 2a7aac76d9 Update API scheme on layer 202. 2025-05-01 11:13:18 +04:00
John Preston a569495f5d Fix discarding group call invites. 2025-05-01 11:13:18 +04:00
John Preston 59e56600bc Reuse p2p call window for migrated confcall. 2025-05-01 11:13:18 +04:00
John Preston 915dec7ba5 Show right call top bar after migration. 2025-05-01 11:13:18 +04:00
John Preston 909bd3dd2d Allow kicking from confcall by creator. 2025-05-01 11:13:18 +04:00
John Preston d50fad615f Check confcall size limit. 2025-05-01 11:13:18 +04:00
John Preston b036bedbc3 Support distinct calling/invited states. 2025-05-01 11:13:18 +04:00
John Preston 55c05d1a6e Allow discard invite or cancel ringing. 2025-05-01 11:13:17 +04:00
John Preston 344c0f6427 Check phone access on join. 2025-05-01 11:13:17 +04:00
John Preston 8ab1a7268b Handle all types of confcall invite responses. 2025-05-01 11:13:17 +04:00
John Preston e5f31dbe8e Remove unnecessary stale participant check. 2025-05-01 11:13:17 +04:00
John Preston 783c5c12e9 Improve couple of phrases. 2025-05-01 11:13:17 +04:00
John Preston c972485555 Allow revoking confcall link. 2025-05-01 11:13:17 +04:00
John Preston c507382d19 Keep window geometry on confcall migration. 2025-05-01 11:13:17 +04:00
John Preston fbbcbc8753 Respect conference_supported flag. 2025-05-01 11:13:17 +04:00
John Preston a5fa595627 Update API scheme on layer 202. 2025-05-01 11:13:17 +04:00
John Preston 502045f1fa Improve mute/video migration to confcall. 2025-05-01 11:13:17 +04:00
John Preston e9280777fd Fix confcall video encryption. 2025-05-01 11:13:17 +04:00
John Preston c36f402b88 Fix bug in OpenAL patches on Windows. 2025-05-01 11:13:17 +04:00
John Preston 3a68dd50ce Fix applying some Data::GroupCall updates. 2025-05-01 11:13:17 +04:00
John Preston eb06c0da08 Try migrating mute/video state. 2025-05-01 11:13:17 +04:00
John Preston 6528567746 Log applying blocks and fix sub_chain_id:1. 2025-05-01 11:13:17 +04:00
John Preston 09229812f4 Show nice confcall invites. 2025-05-01 11:13:17 +04:00
John Preston aaa37a3e0d Update API scheme on layer 202. 2025-05-01 11:13:17 +04:00
John Preston c5531b1bd8 Implement audio/video confcall invitations. 2025-05-01 11:13:17 +04:00
John Preston 021115b463 Nice join confcall confirm box. 2025-05-01 11:13:17 +04:00
John Preston 698d9c208f Improve confcall invite management. 2025-05-01 11:13:17 +04:00
John Preston 01a6b432f3 Improve some confcall graphics. 2025-05-01 11:13:16 +04:00
John Preston a5f44b3ed6 Fix incorrect naming userpic as public photo. 2025-05-01 11:13:16 +04:00
John Preston a3ba99c682 Implement incoming confcall window. 2025-05-01 11:13:16 +04:00
John Preston 7c709fddba Allow editing confcall messages. 2025-05-01 11:13:16 +04:00
John Preston 8f313b4603 Update API scheme on layer 202. 2025-05-01 11:13:16 +04:00
John Preston 41c0a5ee3b Add "Join Call" button to confcall link previews. 2025-05-01 11:13:16 +04:00
John Preston 346f7aadd6 Render confcall messages as phone calls. 2025-05-01 11:13:16 +04:00
John Preston be611c1920 Show confcall users that are only on blockchain. 2025-05-01 11:13:16 +04:00
John Preston e33a866a63 Give some admin rights to confcall creator. 2025-05-01 11:13:16 +04:00
John Preston c846eeed9d Fix cal buttons positioning. 2025-05-01 11:13:16 +04:00
John Preston d052eac019 Initial call->confcall migration. 2025-05-01 11:13:16 +04:00
John Preston 9dbd134601 Implement multi-inviting to confcalls. 2025-05-01 11:13:16 +04:00
John Preston 6451e1cfe2 Remove debug logging in swipes. 2025-05-01 11:13:16 +04:00
John Preston 9f3f715527 Allow sharing link from confcall. 2025-05-01 11:13:16 +04:00
John Preston 0d8e5b139b Add some special phrases. 2025-05-01 11:13:16 +04:00
John Preston 5d5dda548a Implement nice call link box. 2025-05-01 11:13:16 +04:00
John Preston 1d32e5267c Fix incorrect waiting blocks applying. 2025-05-01 11:13:16 +04:00
John Preston a300a25419 Fix complicated crash in async base::Timer destroying. 2025-05-01 11:13:16 +04:00
John Preston 4eaf03b922 Update API scheme on layer 202. 2025-05-01 11:13:15 +04:00
John Preston 4401ea388c PoC confcall invite, emoji. 2025-05-01 11:13:15 +04:00
John Preston dfe6ad3a32 Update gift icon for input field. 2025-05-01 11:13:15 +04:00
John Preston e3ef870b29 Remove stale confcall users from blockchain. 2025-05-01 11:13:15 +04:00
John Preston 7deb5bfdf2 Update API scheme, something works now. 2025-05-01 11:13:15 +04:00
John Preston 0e46a4402a Update API scheme on layer 202. 2025-05-01 11:13:15 +04:00
John Preston 33a15e69bb Move blocks order checking to tde2e_api module. 2025-05-01 11:13:15 +04:00
John Preston ebe11fdb1e Pass encrypt/decrypt callback to tgcalls. 2025-05-01 11:13:15 +04:00
John Preston f9a7c46868 Update tgcalls. 2025-05-01 11:13:15 +04:00
John Preston c80c23e8e8 PoC conference call creation. 2025-05-01 11:13:15 +04:00
John Preston 5e6c81a98e Parse e2e participant keys. 2025-05-01 11:13:15 +04:00
John Preston 214cc83d4a Update API scheme to layer 202. 2025-05-01 11:13:15 +04:00
John Preston 8e643fbf87 Add tde2e dependency. 2025-05-01 11:13:11 +04:00
23rd 6008d9e12b Added birthday sublist to contact list in gift box. 2025-05-01 11:13:01 +04:00
23rd 81da453ec4 Added suggestion to top-up low credits balance for subscriptions. 2025-05-01 11:13:01 +04:00
23rd f34835463d Added initial ability to create credit icon as non-session custom emoji. 2025-05-01 11:13:01 +04:00
23rd eb3419f3fc Added ability to request credits subscriptions with missing balance. 2025-05-01 11:13:01 +04:00
23rd 5886a07300 Fixed ability to renew credits subscription. 2025-05-01 11:13:01 +04:00
23rd 69e7c27fd0 Added premium grace suggestion to top bar in dialogs. 2025-05-01 11:13:01 +04:00
23rd 165cf6809f Added experimental option to display date when you joined to channel. 2025-05-01 11:13:01 +04:00
23rd 9b2b8b6796 Fixed display of top bar suggestion while display filtered dialogs. 2025-05-01 11:13:01 +04:00
23rd 3ed6d1dec1 Added strike out cost without discount in premium options in settings. 2025-05-01 11:13:00 +04:00
23rd 9ad1d1c25d Fixed some unused-but-set-variable warnings. 2025-05-01 11:13:00 +04:00
23rd 667e614bf3 Simplified proper cleanup of allocated event filters for swipe handler. 2025-05-01 11:13:00 +04:00
23rd d49da1fdd0 Added missed label for current balance in section of bot credits earn. 2025-05-01 11:13:00 +04:00
23rd 85b0733169 Improved guard of right edge iterator in linear chart view for stats. 2025-05-01 11:13:00 +04:00
23rd 7f2bba7c4a Fixed ttl phrase for 1 year. 2025-05-01 11:13:00 +04:00
23rd 664ec62396 Slightly improved style of text in top bar suggestion. 2025-05-01 11:13:00 +04:00
23rd b4a9e45214 Improved display of top bar suggestion in non-main chats lists. 2025-05-01 11:13:00 +04:00
23rd 2eab7044ba Added ability to emplace top bar suggestion later. 2025-05-01 11:13:00 +04:00
23rd 8d449f91c6 Fixed phrases in list of active group calls from Calls box. 2025-05-01 11:13:00 +04:00
23rd be8a836528 Fixed clearing of inactive quick dialog actions. 2025-05-01 11:13:00 +04:00
23rd 423782fd2b Improved birthday reminder of multiple contacts in top bar from dialogs. 2025-05-01 11:13:00 +04:00
23rd dc1dc8dffa Added today birthdays to data session. 2025-05-01 11:13:00 +04:00
23rd 16a77e2975 Removed redundant buttons from profile of bot verification. 2025-05-01 11:13:00 +04:00
23rd df69a70dd7 Removed ability to set wallpaper to chat with bot verification. 2025-05-01 11:13:00 +04:00
23rd 0638c86211 Removed ability to set TTL to chat with bot verification. 2025-05-01 11:13:00 +04:00
23rd 8c0de22c14 Added birthday reminder of multiple contacts to top bar in dialogs. 2025-05-01 11:13:00 +04:00
23rd f83568c6c9 Added birthday reminder of single contact to top bar in dialogs. 2025-05-01 11:13:00 +04:00
23rd 10d472728c Added userpic suggestion to top bar in dialogs. 2025-05-01 11:13:00 +04:00
23rd 2c3cb3f5ce Added suggestion for restore premium to top bar in dialogs. 2025-05-01 11:12:59 +04:00
23rd fbfe3fd5ed Added suggestion for upgrade to premium to top bar in dialogs. 2025-05-01 11:12:59 +04:00
23rd b280a26317 Replaced management of top bar for suggestion in dialogs with rpl. 2025-05-01 11:12:59 +04:00
23rd 640db8af7d Added suggestion for annual premium to top bar in dialogs. 2025-05-01 11:12:59 +04:00
23rd 98d9357208 Added auto clean of top bar in dialogs on empty. 2025-05-01 11:12:59 +04:00
23rd f3b6c7c09b Added birthday suggestion to top bar in dialogs. 2025-05-01 11:12:59 +04:00
23rd 3a622f111a Added initial dummy draft for top bar suggestions in dialogs. 2025-05-01 11:12:59 +04:00
23rd e0b1ed87e8 Fixed ability to trigger quick dialog action with non-middle button. 2025-05-01 11:12:59 +04:00
23rd 63578affa4 Added toasts to quick dialog actions. 2025-05-01 11:12:59 +04:00
23rd 74b188fa46 Fixed ability to click on bot app button in narrowed chat list. 2025-05-01 11:12:59 +04:00
Ilya Fedin fadaf852b7 Update lib_lottie 2025-04-30 23:43:46 -07:00
Ilya Fedin ac6124951a Use C++/WinRT from SDK 2025-04-30 23:43:46 -07:00
Ilya Fedin 89e42af149 Update cmake_helpers 2025-04-30 23:42:10 -07:00
Ilya Fedin cf5987b2b4 Update protobuf in Docker 2025-04-30 23:42:10 -07:00
Ilya Fedin 069d8d376c Unify libtgvoip options handling 2025-04-30 23:42:10 -07:00
Ilya Fedin fe3d8ea2be Don't check non-MSVC options with MSVC for tgcalls 2025-04-30 23:42:10 -07:00
Ilya Fedin 3ac03b43e1 Add missing dependency on win_directx_helper 2025-04-30 23:42:10 -07:00
Ilya Fedin eaf1a532f4 Remove workaround to find the right OpenAL in macOS packaged action 2025-04-30 23:42:10 -07:00
Ilya Fedin f2b0116c1e Don't require PkgConfig for libtgvoip 2025-04-30 23:42:10 -07:00
Ilya Fedin 155b5fa831 Don't link openh264 to td_ui
It's not used directly
2025-04-30 23:42:10 -07:00
Ilya Fedin 130c77a305 Update disptach to 6.1 2025-04-30 23:32:45 -07:00
GitHub Action 2e168d152f Update User-Agent for DNS to Chrome 135.0.0.0. 2025-04-30 23:02:17 -07:00
AlexeyZavar e0890541ea fix: update submodule 2025-04-25 02:29:17 +03:00
AlexeyZavar 1447b62999 Merge tag 'v5.13.1' into dev 2025-04-25 02:29:09 +03:00
AlexeyZavar 518ae8044d chore: update strings & move option 2025-04-25 01:18:24 +03:00
Grigory 314a90995a feat: add option to show only added emojis & stickers 2025-04-25 00:54:29 +03:00
komaru.yml 8f29e32577 fix: grammar in ayu_SettingsWatermark 2025-04-25 00:53:30 +03:00
AlexeyZavar b6e25a353d feat: speed-up ayudata queries 2025-04-25 00:42:53 +03:00
Yagiz Nizipli 635ed02198 update ada-url to v3.2.2 2025-04-24 00:06:56 -07:00
dependabot[bot] cd81a54062 Bump jinja2 from 3.1.5 to 3.1.6 in /Telegram/build/docker/centos_env
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.5 to 3.1.6.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/3.1.5...3.1.6)

---
updated-dependencies:
- dependency-name: jinja2
  dependency-version: 3.1.6
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-24 00:06:11 -07:00
GitHub Action 1035d787ab Update User-Agent for DNS to Chrome 134.0.0.0. 2025-04-24 00:05:39 -07:00
Ilya Fedin 29567df407 Re-enable ffmpeg optimizations on Linux
By disabling LTO
2025-04-23 23:59:30 -07:00
Ilya Fedin 79cb4668f1 Fix a crash on Linux without actions notification capability 2025-04-23 23:58:12 -07:00
Ilya Fedin 9bdc19e2fd Format markup-lacking Linux notifications using lng_dialogs_text_with_from 2025-04-11 09:51:19 -07:00
Ilya Fedin 25cd6106f5 Use Ui::ImageExtensions in PhotoVideoFilesFilter
This allows it to have all supported image extensions just like ImagesFilter
2025-04-11 09:51:08 -07:00
Ilya Fedin 13fbe59164 Free more space in Docker action 2025-04-05 06:56:47 +05:00
Ilya Fedin c261c3367a Fix a PiP crash with Qt 6.9 2025-04-05 06:55:06 +05:00
Ilya Fedin 8b92ab25c7 Update Qt 6.8.2 -> 6.9.0 2025-04-04 15:53:51 +05:00
Ilya Fedin 0aa1031270 Use global c(xx)flags for breakpad in Docker, just not LTO 2025-04-04 15:18:55 +05:00
Ilya Fedin dec8bdb39d Update breakpad in Docker to v2024.02.16 2025-04-04 15:18:55 +05:00
Ilya Fedin f318aeb67c Don't base Docker libjxl stage on patches
There's nothing the stage uses in it
2025-04-04 13:13:31 +05:00
nyakze 8b791e77d6 Update mime_type.cpp
add m3u to ip revealing types
2025-04-01 18:22:09 +05:00
Ilya Fedin 260b72fec1 Check location picker support early 2025-03-31 00:17:18 +05:00
Ilya Fedin 7d0beafce0 Ensure currentImageBack isn't null 2025-03-28 23:07:55 +05:00
Ilya Fedin 3c2f8b65ce Let QIcon::fromTheme check whether the tray icon is valid
QIcon::fromTheme overload with a fallback does a smarter check whether the icon is valid, use it to prevent getting a half-valid QIcon.
2025-03-27 21:58:36 +05:00
John Preston 5f73e8b3bf Version 5.13.1.
- Fix crash in group/channel stories.
2025-03-26 23:25:46 +05:00
John Preston 74afeeb85f Fix crash in group/channel stories. 2025-03-26 23:22:14 +05:00
John Preston f8920e5fef Version 5.13.
- Allow transferring my unique gifts from Send Gift section.
- Edit type of gifts you accept in Settings > Privacy and Security.
- Swipe navigation using swipe gesture on touchpads / touchscreens.
- Choose chat list quick action for swipe or middle click.
2025-03-26 13:23:36 +05:00
John Preston dd76313084 Fix shell prepare running on macOS. 2025-03-26 13:23:36 +05:00
John Preston 627ff6f26e Fix build with GCC. 2025-03-26 11:51:26 +04:00
John Preston 705db0b9cf Fix build with Xcode. 2025-03-26 12:27:55 +05:00
John Preston 47a958d81d Update lib_ui. 2025-03-26 07:13:52 +04:00
John Preston 906fc9cc1d Show more frozen errors. 2025-03-26 07:13:16 +04:00
John Preston 44d9525476 Update send gift icon visibility. 2025-03-26 07:13:16 +04:00
John Preston 8b2a549fab Fix crash in gifts repaint. 2025-03-26 07:13:15 +04:00
John Preston 7312e34f46 Update icons for gifts privacy. 2025-03-26 07:13:15 +04:00
John Preston 696be858f6 Load my gifts while scrolling in Send Gift. 2025-03-26 07:13:15 +04:00
John Preston e1f4fd0c7b Remove blue border from gifts. 2025-03-26 07:13:15 +04:00
John Preston f51320d1bc Add some more frozen restrictions. 2025-03-26 07:13:15 +04:00
John Preston a0764190f2 Support sponsored peers in search results. 2025-03-26 07:13:15 +04:00
John Preston 33c5b35444 Send sponsored peers click requests. 2025-03-26 07:13:15 +04:00
John Preston 04e10f81b5 Send sponsored peers view requests. 2025-03-26 07:13:15 +04:00
John Preston 7f2545a9ef Request sponsored peers in global search. 2025-03-26 07:13:15 +04:00
John Preston a2a16f3f23 Implement new business bots permissions. 2025-03-26 07:13:15 +04:00
John Preston ab2a947992 Move "Show Gift Button" block up. 2025-03-26 07:13:15 +04:00
John Preston 7d0a73a6b0 Show gift button in the message field. 2025-03-26 07:13:15 +04:00
John Preston e3c3a68566 Update API scheme on layer 201. 2025-03-26 07:13:15 +04:00
John Preston 4fc026b13c Allow transferring unique gifts from Send Gift. 2025-03-26 07:13:15 +04:00
John Preston c0fed4d2c3 Filter out allowed gift types. 2025-03-26 07:13:15 +04:00
John Preston b656e14453 Edit additional privacy options for gifts. 2025-03-26 07:13:11 +04:00
John Preston fbab3964e6 Handle some frozen cases. 2025-03-26 07:11:20 +04:00
John Preston d9b270b477 Initial frozen accounts support. 2025-03-26 07:11:20 +04:00
John Preston 7f53a19647 Update API scheme to layer 201. 2025-03-26 07:11:20 +04:00
23rd 9f1e90d007 Updated Qt to 6.2.12 on macOS. 2025-03-25 17:55:54 +03:00
23rd 9a439e1941 Added ability to switch tabs in dialogs suggestions with swipe. 2025-03-24 22:58:04 +03:00
23rd 4e4c69993c Ensured proper cleanup of allocated event filters for swipe handler. 2025-03-24 22:58:04 +03:00
23rd 0d085d500f Added ability to provide custom swipe handler to Info::ContentWidget. 2025-03-24 22:58:04 +03:00
23rd f734c0475b Replaced SetupSwipeHandler signature from arguments to struct. 2025-03-24 22:58:04 +03:00
23rd a30951dc91 Fixed swipe handler for small chat lists. 2025-03-24 22:58:04 +03:00
23rd c4b37950a9 Added filename as fallback for audio files while export chat history.
Fixed #28920.
2025-03-24 22:58:04 +03:00
23rd 7cf832a2f4 Replaced div tags with span for reactions in export chat history. 2025-03-24 22:58:04 +03:00
23rd 1f07e7978d Improved background buttons in box for share QR box on different scales. 2025-03-24 22:58:04 +03:00
23rd 5adab2739b Fixed icon scale in call panel when recipient has low level of battery. 2025-03-24 22:58:04 +03:00
23rd 2be76760de Slightly improved style of settings for quick dialog action. 2025-03-24 22:58:04 +03:00
23rd 28c125a3ec Added some special cases when quick dialog action can't be performed. 2025-03-21 17:59:26 +03:00
23rd bdf8a37a8f Guarded repaint of special quick dialog actions that lead to de-listing. 2025-03-21 17:59:21 +03:00
23rd 838711e2ac Added maximum of lifetime to every deactivated quick dialog action. 2025-03-21 17:26:50 +03:00
23rd c085691c54 Moved out active quick action from total list of quick dialog actions. 2025-03-21 16:47:55 +03:00
23rd 47506d70ed Simplified signature of ResolveQuickDialogLottieIconName. 2025-03-21 16:47:46 +03:00
23rd efc7cc4980 Added convenient bool operator to SwipeContextData. 2025-03-21 16:44:50 +03:00
John Preston f2016a8aa5 Don't ensure cursor visibility on modifier keys.
Fix #29108.
2025-03-21 09:35:00 +04:00
Yagiz Nizipli d6bbc375c4 Update prepare.py 2025-03-21 09:26:42 +04:00
Yagiz Nizipli 885996c5cf update ada-url to v3.2.1 2025-03-21 09:26:42 +04:00
John Preston 4e4604e00a Beta version 5.12.6.
- Allow customizing chats list swipe left action.
- Fix custom emoji in poll results view.
- Fix crash in main menu swipe closing.
2025-03-20 18:37:30 +04:00
John Preston b057d4fcb7 Allow folder switching by swipes in vertical mode. 2025-03-20 18:23:17 +04:00
John Preston cdf27296e4 Fix deselecting dialog rows between them. 2025-03-20 18:04:14 +04:00
23rd 889f111300 Slightly improved saving of quick dialog action in settings. 2025-03-20 16:59:33 +03:00
23rd 520b4f92ab Improved phrases for quick dialog actions in settings. 2025-03-20 16:59:33 +03:00
23rd feb1d4ebcc Fixed dialog dragging with pressed quick dialog action. 2025-03-20 16:59:33 +03:00
23rd c11a7589e2 Added initial ability to trigger quick dialog action with middle click. 2025-03-20 16:59:33 +03:00
23rd c332b7cb40 Added initial handler for middle mouse click on dialogs. 2025-03-20 16:59:33 +03:00
23rd 418dcedc4e Replaced single QuickActionContext in dialogs widget with flat map. 2025-03-20 16:59:33 +03:00
23rd a21eb9d59e Moved out quick actions enum for dialog to separated module. 2025-03-20 16:59:33 +03:00
23rd 25ed8fe044 Renamed swipe dialog action to quick dialog action. 2025-03-20 16:59:33 +03:00
23rd b079c79390 Added correspond colors for every swipe dialog action. 2025-03-20 16:59:33 +03:00
23rd d7a89ef122 Added implementation for all swipe dialog actions. 2025-03-20 16:59:33 +03:00
23rd b95035e7a2 Added initial ability to change swipe dialog action from chat settings. 2025-03-20 16:59:33 +03:00
23rd e28d29f276 Added initial implementation of swipe action to dialogs. 2025-03-20 16:59:33 +03:00
23rd c29d78ac0d Added ability to provide reach ratio speed to swipe. 2025-03-20 16:59:33 +03:00
23rd ad9106b815 Added ability to request reach out ratio of swipe. 2025-03-20 16:59:33 +03:00
John Preston f3ea24f9f9 Update lib_ui. 2025-03-20 17:47:21 +04:00
John Preston 96fdece478 Fix mini-thumbs in channel last message preview. 2025-03-20 17:46:27 +04:00
John Preston c30a5782df Revert "Fixed blinking of message preview from user's personal channel."
This reverts commit 75e454f3fd.
2025-03-20 17:46:27 +04:00
John Preston c924fcb91f Fix custom emoji in poll results view. 2025-03-20 17:46:27 +04:00
John Preston 46e7b6d6df Implement "Choose gift to unpin" box feature. 2025-03-20 17:46:27 +04:00
John Preston bb8ecf2f84 Fix spoiler hiding of ellipse image preview. 2025-03-20 17:46:27 +04:00
John Preston 7123a6d647 Hide image preview of ttl rounds behind spoiler. 2025-03-20 17:46:27 +04:00
John Preston eb4ef8b3d7 Replace Reply with Forward for specific bots. 2025-03-20 17:46:26 +04:00
23rd 0d346610a2 Fixed sort of received star gifts. 2025-03-20 10:36:41 +03:00
John Preston fe0c1acd79 Fix crash in main menu swipes on macOS. 2025-03-17 10:45:23 +04:00
AlexeyZavar b3552d8c2c fix: set deleted mark for service message 2025-03-15 00:10:52 +03:00
AlexeyZavar 206a15191f fix: repeated deleted text 2025-03-15 00:01:53 +03:00
Alexey 22de3980d1 chore: update bug report template 2025-03-14 22:19:10 +03:00
John Preston af35beefc2 Beta version 5.12.5: Fix build with Qt 6. 2025-03-14 17:23:54 +04:00
John Preston 532258bea8 Beta version 5.12.5.
- Support swipe navigation on touchscreens.
- Close main menu by swipe navigation.
2025-03-14 17:06:42 +04:00
Ilya Fedin 5b257293eb Update patches on Linux 2025-03-14 16:50:58 +04:00
John Preston 8e6d23ddd6 Support tg://settings/phone_privacy links. 2025-03-14 16:40:50 +04:00
John Preston 6d5d61c842 Label 'Add users' for Remove Fee. 2025-03-14 16:40:50 +04:00
John Preston 9d2e2a1739 Fix processing of video qualities.
Regression was introduced in b618d1e56a.
2025-03-14 16:40:49 +04:00
John Preston 19e2642ec1 Improve paid messages in groups layout. 2025-03-14 16:40:49 +04:00
John Preston f9df522b41 Show error not-found on comment link click. 2025-03-14 16:40:49 +04:00
John Preston b3e5c4a4aa Fix send button size on chat switch. 2025-03-14 16:40:49 +04:00
John Preston 06ed6c81a7 Remove 'delete also for' in Deleted Accounts. 2025-03-14 16:40:44 +04:00
John Preston d1e4dbb603 Fix animated emoji in folder name. 2025-03-14 16:40:44 +04:00
John Preston abe8079296 Allow temp-set of wearable as a status. 2025-03-14 16:40:44 +04:00
John Preston 033cb2790c Remove debug widget in the info section. 2025-03-14 16:03:58 +04:00
John Preston 188edce258 Support swipe-back from main menu. 2025-03-14 15:03:27 +04:00
John Preston 34858b36c1 Fix swipe gestures on touchscreens. 2025-03-14 14:36:13 +04:00
Ilya Fedin 044ef3447c Add the missing 5.12.4 changelog part 2025-03-14 11:14:28 +04:00
Ilya Fedin 2660439160 Fix Platform::ApplicationIconName for snap
Looks like it broke through rebases
2025-03-14 10:22:24 +04:00
John Preston 3f6f96cfb4 Fix typo in lcms2 build commands for Windows. 2025-03-12 21:15:30 +04:00
John Preston 99a1c98ae0 Beta version 5.12.4.
- Touchpad swipe back to go back in navigation history.
- Touchpad swipe between folders if they're horizontal.

Out-of-the-box monochrome tray icon on Linux
with GTK icon recolorization support.

Files telegram{,{,-attention,-mute}-panel} are renamed
to org.telegram.desktop{,{,-attention,-mute}-symbolic} for
unified icon lookup in multiple (sometimes sandboxed) builds
and GTK icon recolorization support.

Snap package got icon theming support,
the icon names are snap.telegram-desktop.{,{,-attention,-mute}-symbolic}
(notice the name ends with a dot in case of no suffix!)
2025-03-12 18:26:46 +04:00
John Preston fd718dfd5c Allow more Info sections swipe-back. 2025-03-12 18:02:47 +04:00
Ilya Fedin 31cb2f1999 Switch tray to symbolic icons
This allows to rely on GTK recoloring rather than requiring the user to have an icon theme
2025-03-12 14:54:41 +04:00
Ilya Fedin a6a8e32be7 Install app icon in a spec-compilant way 2025-03-12 14:54:41 +04:00
Ilya Fedin 594bb8a76b Support icon themes in snap 2025-03-12 14:54:41 +04:00
Ilya Fedin 228bbc1e8e Always use app ID based icon name
This allows to unify it between flatpak and non-flatpak builds and corresponds to what most other GUI apps on Linux do
2025-03-12 14:54:41 +04:00
Ilya Fedin b14c2878b3 Revert "Move icon name getter to cross-platform header"
This reverts commit d9318c9935.
2025-03-12 14:54:41 +04:00
Ilya Fedin 57f10040e1 Get rid of XEmbed mentions
The code goes through Qt abstractions which not necessarily go through XEmbed
2025-03-12 14:53:43 +04:00
Ilya Fedin 0fb67c78a9 Add a method to calculate instance hash to Launcher 2025-03-12 14:53:21 +04:00
John Preston ff0f7f49da Fix new swipes on Windows. 2025-03-12 14:02:04 +04:00
23rd 9682e37547 Added shortcut to open chat preview from dialogs. 2025-03-12 11:59:20 +04:00
23rd 7197d9480b Added ability to swipe between chats filters. 2025-03-12 11:59:20 +04:00
23rd 3315c9c7f4 Added ability to open main menu with swipe-to-back. 2025-03-12 11:59:20 +04:00
23rd f57eff4195 Added ability to mirror icon from widget for swipe-to-back. 2025-03-12 11:59:20 +04:00
23rd f0c8e48403 Added ability to keep ratio of swipe within range. 2025-03-12 11:59:20 +04:00
23rd de87bed375 Moved out data for swipe handler from history view to ui controls. 2025-03-12 11:59:20 +04:00
23rd 5cdfaab2db Moved out swipe handler from history view to ui controls. 2025-03-12 11:59:20 +04:00
23rd acb0b029b9 Added ability to switch tab in tabbed selector with swipe. 2025-03-12 11:59:20 +04:00
23rd 4c74cbbbe9 Added ability to set swipe back widget on opposite side. 2025-03-12 11:59:20 +04:00
23rd ad64e068db Allowed swipe-to-back in side info section. 2025-03-12 11:59:20 +04:00
23rd 6bed3f3f09 Increased speed of swipe-to-back. 2025-03-12 11:59:20 +04:00
23rd d02e55da06 Added ability to swipe-to-back to all info sections with narrow type. 2025-03-12 11:59:20 +04:00
23rd d662a8f2b9 Added ability to swipe-to-back to other sections. 2025-03-12 11:59:20 +04:00
23rd 13a93102a5 Added ability to swipe-to-back to admin log section. 2025-03-12 11:59:20 +04:00
23rd 0d6a1e6610 Added ability to swipe-to-back to replies section. 2025-03-12 11:59:20 +04:00
23rd 05cd9eebb8 Added ability to swipe-to-back to dialogs widget. 2025-03-12 11:59:20 +04:00
23rd d93d8ab1cc Added ability to provide ElasticScroll to SetupSwipeHandler. 2025-03-12 11:59:12 +04:00
23rd 540fa0e669 Added ability to swipe-to-back to history widget. 2025-03-12 04:36:34 +03:00
23rd 17a10cf6bb Added initial ability to handle history view swipe in both directions. 2025-03-12 04:36:24 +03:00
788 changed files with 50830 additions and 12296 deletions
+105
View File
@@ -0,0 +1,105 @@
---
description: For tasks requiring sending Telegram server API requests or working with generated API types.
globs:
alwaysApply: false
---
# Telegram Desktop API Usage
## API Schema
The API definitions are described using [TL Language]\(https:/core.telegram.org/mtproto/TL) in two main schema files:
1. **`Telegram/SourceFiles/mtproto/scheme/mtproto.tl`**
* Defines the core MTProto protocol types and methods used for basic communication, encryption, authorization, service messages, etc.
* Some fundamental types and methods from this schema (like basic types, RPC calls, containers) are often implemented directly in the C++ MTProto core (`SourceFiles/mtproto/`) and may be skipped during the C++ code generation phase.
* Other parts of `mtproto.tl` might still be processed by the code generator.
2. **`Telegram/SourceFiles/mtproto/scheme/api.tl`**
* Defines the higher-level Telegram API layer, including all the methods and types related to chat functionality, user profiles, messages, channels, stickers, etc.
* This is the primary schema used when making functional API requests within the application.
Both files use the same TL syntax to describe API methods (functions) and types (constructors).
## Code Generation
A custom code generation tool processes `api.tl` (and parts of `mtproto.tl`) to create corresponding C++ classes and types. These generated headers are typically included via the Precompiled Header (PCH) for the main `Telegram` project.
Generated types often follow the pattern `MTP[Type]` (e.g., `MTPUser`, `MTPMessage`) and methods correspond to functions within the `MTP` namespace or related classes (e.g., `MTPmessages_SendMessage`).
## Making API Requests
API requests are made using a standard pattern involving the `api()` object (providing access to the `MTP::Instance`), the generated `MTP...` request object, callback handlers for success (`.done()`) and failure (`.fail()`), and the `.send()` method.
Here's the general structure:
```cpp
// Include necessary headers if not already in PCH
// Obtain the API instance (usually via api() or MTP::Instance::Get())
api().request(MTPnamespace_MethodName(
// Constructor arguments based on the api.tl definition for the method
MTP_flags(flags_value), // Use MTP_flags if the method has flags
MTP_inputPeer(peer), // Use MTP_... types for parameters
MTP_string(messageText),
MTP_long(randomId),
// ... other arguments matching the TL definition
MTP_vector<MTPMessageEntity>() // Example for a vector argument
)).done([=]\(const MTPResponseType &result) {
// Handle the successful response (result).
// 'result' will be of the C++ type corresponding to the TL type
// specified after the '=' in the api.tl method definition.
// How to access data depends on whether the TL type has one or multiple constructors:
// 1. Multiple Constructors (e.g., User = User | UserEmpty):
// Use .match() with lambdas for each constructor:
result.match([&]\(const MTPDuser &data) {
/* use data.vfirst_name().v, etc. */
}, [&]\(const MTPDuserEmpty &data) {
/* handle empty user */
});
// Alternatively, check the type explicitly and use the constructor getter:
if (result.type() == mtpc_user) {
const auto &data = result.c_user(); // Asserts if type is not mtpc_user!
// use data.vfirst_name().v
} else if (result.type() == mtpc_userEmpty) {
const auto &data = result.c_userEmpty();
// handle empty user
}
// 2. Single Constructor (e.g., Messages = messages { msgs: vector<Message> }):
// Use .match() with a single lambda:
result.match([&]\(const MTPDmessages &data) { /* use data.vmessages().v */ });
// Or check the type explicitly and use the constructor getter:
if (result.type() == mtpc_messages) {
const auto &data = result.c_messages(); // Asserts if type is not mtpc_messages!
// use data.vmessages().v
}
// Or use the shortcut .data() for single-constructor types:
const auto &data = result.data(); // Only works for single-constructor types!
// use data.vmessages().v
}).fail([=]\(const MTP::Error &error) {
// Handle the API error (error).
// 'error' is an MTP::Error object containing the error code (error.type())
// and description (error.description()). Check for specific error strings.
if (error.type() == u"FLOOD_WAIT_X"_q) {
// Handle flood wait
} else {
Ui::show(Box<InformBox>(Lang::Hard::ServerError())); // Example generic error handling
}
}).handleFloodErrors().send(); // handleFloodErrors() is common, then send()
```
**Key Points:**
* Always refer to `Telegram/SourceFiles/mtproto/scheme/api.tl` for the correct method names, parameters (names and types), and response types.
* Use the generated `MTP...` types/classes for request parameters (e.g., `MTP_int`, `MTP_string`, `MTP_bool`, `MTP_vector`, `MTPInputUser`, etc.) and response handling.
* The `.done()` lambda receives the specific C++ `MTP...` type corresponding to the TL return type.
* For types with **multiple constructors** (e.g., `User = User | UserEmpty`), use `result.match([&]\(const MTPDuser &d){ ... }, [&]\(const MTPDuserEmpty &d){ ... })` to handle each case, or check `result.type() == mtpc_user` / `mtpc_userEmpty` and call the specific `result.c_user()` / `result.c_userEmpty()` getter (which asserts on type mismatch).
* For types with a **single constructor** (e.g., `Messages = messages{...}`), you can use `result.match([&]\(const MTPDmessages &d){ ... })` with one lambda, or check `type()` and call `c_messages()`, or use the shortcut `result.data()` to access the fields directly.
* The `.fail()` lambda receives an `MTP::Error` object. Check `error.type()` against known error strings (often defined as constants or using `u"..."_q` literals).
* Directly construct the `MTPnamespace_MethodName(...)` object inside `request()`.
* Include `.handleFloodErrors()` before `.send()` for standard flood wait handling.
+164
View File
@@ -0,0 +1,164 @@
---
description: For tasks requiring changing or adding user facing phrases and text parts.
globs:
alwaysApply: false
---
# Telegram Desktop Localization
## Coding Style Note
**Use `auto`:** In the actual codebase, variable types are almost always deduced using `auto` (or `const auto`, `const auto &`) rather than being written out explicitly. Examples in this guide may use explicit types for clarity, but prefer `auto` in practice.
```cpp
// Prefer this:
auto currentTitle = tr::lng_settings_title(tr::now);
auto nameProducer = GetNameProducer(); // Returns rpl::producer<...>
// Instead of this:
QString currentTitle = tr::lng_settings_title(tr::now);
rpl::producer<QString> nameProducer = GetNameProducer();
```
## String Resource File
Base user-facing English strings are defined in the `lang.strings` file:
`Telegram/Resources/langs/lang.strings`
This file uses a key-value format with named placeholders:
```
"lng_settings_title" = "Settings";
"lng_confirm_delete_item" = "Are you sure you want to delete {item_name}?";
"lng_files_selected" = "{count} files selected"; // Simple count example (see Pluralization)
```
Placeholders are enclosed in curly braces, e.g., `{name}`, `{user}`. A special placeholder `{count}` is used for pluralization rules.
### Pluralization
For keys that depend on a number (using the `{count}` placeholder), English typically requires two forms: singular and plural. These are defined in `lang.strings` using `#one` and `#other` suffixes:
```
"lng_files_selected#one" = "{count} file selected";
"lng_files_selected#other" = "{count} files selected";
```
While only `#one` and `#other` are defined in the base `lang.strings`, the code generation process creates C++ accessors for all six CLDR plural categories (`#zero`, `#one`, `#two`, `#few`, `#many`, `#other`) to support languages with more complex pluralization rules.
## Translation Process
While `lang.strings` provides the base English text and the keys, the actual translations are managed via Telegram's translations platform (translations.telegram.org) and loaded dynamically at runtime from the API. The keys from `lang.strings` (including the `#one`/`#other` variants) are used on the platform.
## Code Generation
A code generation tool processes `lang.strings` to create C++ structures and accessors within the `tr` namespace. These allow type-safe access to strings and handling of placeholders and pluralization. Generated keys typically follow the pattern `tr::lng_key_name`.
## String Usage in Code
Strings are accessed in C++ code using the generated objects within the `tr::` namespace. There are two main ways to use them: reactively (returning an `rpl::producer`) or immediately (returning the current value).
### 1. Reactive Usage (rpl::producer)
Calling a generated string function directly returns a reactive producer, typically `rpl::producer<QString>`. This producer automatically updates its value whenever the application language changes.
```cpp
// Key: "settings_title" = "Settings";
auto titleProducer = tr::lng_settings_title(); // Type: rpl::producer<QString>
// Key: "confirm_delete_item" = "Are you sure you want to delete {item_name}?";
auto itemNameProducer = /* ... */; // Type: rpl::producer<QString>
auto confirmationProducer = tr::lng_confirm_delete_item( // Type: rpl::producer<QString>
tr::now, // NOTE: tr::now is NOT passed here for reactive result
lt_item_name,
std::move(itemNameProducer)); // Placeholder producers should be moved
```
### 2. Immediate Usage (Current Value)
Passing `tr::now` as the first argument retrieves the string's current value in the active language (typically as a `QString`).
```cpp
// Key: "settings_title" = "Settings";
auto currentTitle = tr::lng_settings_title(tr::now); // Type: QString
// Key: "confirm_delete_item" = "Are you sure you want to delete {item_name}?";
const auto currentItemName = QString("My Document"); // Type: QString
auto currentConfirmation = tr::lng_confirm_delete_item( // Type: QString
tr::now, // Pass tr::now for immediate value
lt_item_name, currentItemName); // Placeholder value is a direct QString (or convertible)
```
### 3. Placeholders (`{tag}`)
Placeholders like `{item_name}` are replaced by providing arguments after `tr::now` (for immediate) or as the initial arguments (for reactive). A corresponding `lt_tag_name` constant is passed before the value.
* **Immediate:** Pass the direct value (e.g., `QString`, `int`).
* **Reactive:** Pass an `rpl::producer` of the corresponding type (e.g., `rpl::producer<QString>`). Remember to `std::move` the producer or use `rpl::duplicate` if you need to reuse the original producer afterwards.
### 4. Pluralization (`{count}`)
Keys using `{count}` require a numeric value for the `lt_count` placeholder. The correct plural form (`#zero`, `#one`, ..., `#other`) is automatically selected based on this value and the current language rules.
* **Immediate (`tr::now`):** Pass a `float64` or `int` (which is auto-converted to `float64`).
```cpp
int count = 1;
auto filesText = tr::lng_files_selected(tr::now, lt_count, count); // Type: QString
count = 5;
filesText = tr::lng_files_selected(tr::now, lt_count, count); // Uses "files_selected#other"
```
* **Reactive:** Pass an `rpl::producer<float64>`. Use the `tr::to_count()` helper to convert an `rpl::producer<int>` or wrap a single value.
```cpp
// From an existing int producer:
auto countProducer = /* ... */; // Type: rpl::producer<int>
auto filesTextProducer = tr::lng_files_selected( // Type: rpl::producer<QString>
lt_count,
countProducer | tr::to_count()); // Use tr::to_count() for conversion
// From a single int value wrapped reactively:
int currentCount = 5;
auto filesTextProducerSingle = tr::lng_files_selected( // Type: rpl::producer<QString>
lt_count,
rpl::single(currentCount) | tr::to_count());
// Alternative for single values (less common): rpl::single(currentCount * 1.)
```
### 5. Custom Projectors
An optional final argument can be a projector function (like `Ui::Text::Upper` or `Ui::Text::WithEntities`) to transform the output.
* If the projector returns `OutputType`, the string function returns `OutputType` (immediate) or `rpl::producer<OutputType>` (reactive).
* Placeholder values must match the projector's *input* requirements. For `Ui::Text::WithEntities`, placeholders expect `TextWithEntities` (immediate) or `rpl::producer<TextWithEntities>` (reactive).
```cpp
// Immediate with Ui::Text::WithEntities projector
// Key: "user_posted_photo" = "{user} posted a photo";
const auto userName = TextWithEntities{ /* ... */ }; // Type: TextWithEntities
auto message = tr::lng_user_posted_photo( // Type: TextWithEntities
tr::now,
lt_user,
userName, // Must be TextWithEntities
Ui::Text::WithEntities); // Projector
// Reactive with Ui::Text::WithEntities projector
auto userNameProducer = /* ... */; // Type: rpl::producer<TextWithEntities>
auto messageProducer = tr::lng_user_posted_photo( // Type: rpl::producer<TextWithEntities>
lt_user,
std::move(userNameProducer), // Move placeholder producers
Ui::Text::WithEntities); // Projector
```
## Key Summary
* Keys are defined in `Resources/langs/lang.strings` using `{tag}` placeholders.
* Plural keys use `{count}` and have `#one`/`#other` variants in `lang.strings`.
* Access keys via `tr::lng_key_name(...)` in C++.
* Call with `tr::now` as the first argument for the immediate `QString` (or projected type).
* Call without `tr::now` for the reactive `rpl::producer<QString>` (or projected type).
* Provide placeholder values (`lt_tag_name, value`) matching the usage (direct value for immediate, `rpl::producer` for reactive). Producers should typically be moved via `std::move`.
* For `{count}`:
* Immediate: Pass `int` or `float64`.
* Reactive: Pass `rpl::producer<float64>`, typically by converting an `int` producer using `| tr::to_count()`.
* Optional projector function as the last argument modifies the output type and required placeholder types.
* Actual translations are loaded at runtime from the API.
+216
View File
@@ -0,0 +1,216 @@
---
description:
globs:
alwaysApply: true
---
# RPL (Reactive Programming Library) Guide
## Coding Style Note
**Use `auto`:** In the actual codebase, variable types are almost always deduced using `auto` (or `const auto`, `const auto &`) rather than being written out explicitly. Examples in this guide may use explicit types for clarity, but prefer `auto` in practice.
```cpp
// Prefer this:
auto intProducer = rpl::single(123);
const auto &lifetime = existingLifetime;
// Instead of this:
rpl::producer<int> intProducer = rpl::single(123);
const rpl::lifetime &lifetime = existingLifetime;
// Sometimes needed if deduction is ambiguous or needs help:
auto user = std::make_shared<UserData>();
auto data = QByteArray::fromHex("...");
```
## Introduction
RPL is the reactive programming library used in this project, residing in the `rpl::` namespace. It allows handling asynchronous streams of data over time.
The core concept is the `rpl::producer`, which represents a stream of values that can be generated over a certain lifetime.
## Producers: `rpl::producer<Type, Error = no_error>`
The fundamental building block is `rpl::producer<Type, Error>`. It produces values of `Type` and can optionally signal an error of type `Error`. By default, `Error` is `rpl::no_error`, indicating that the producer does not explicitly handle error signaling through this mechanism.
```cpp
// A producer that emits integers.
auto intProducer = /* ... */; // Type: rpl::producer<int>
// A producer that emits strings and can potentially emit a CustomError.
auto stringProducerWithError = /* ... */; // Type: rpl::producer<QString, CustomError>
```
Producers are typically lazy; they don't start emitting values until someone subscribes to them.
## Lifetime Management: `rpl::lifetime`
Reactive pipelines have a limited duration, managed by `rpl::lifetime`. An `rpl::lifetime` object essentially holds a collection of cleanup callbacks. When the lifetime ends (either explicitly destroyed or goes out of scope), these callbacks are executed, tearing down the associated pipeline and freeing resources.
```cpp
rpl::lifetime myLifetime;
// ... later ...
// myLifetime is destroyed, cleanup happens.
// Or, pass a lifetime instance to manage a pipeline's duration.
rpl::lifetime &parentLifetime = /* ... get lifetime from context ... */;
```
## Starting a Pipeline: `rpl::start_...`
To consume values from a producer, you start a pipeline using one of the `rpl::start_...` methods. These methods subscribe to the producer and execute callbacks for the events they handle.
The most common method is `rpl::start_with_next`:
```cpp
auto counter = /* ... */; // Type: rpl::producer<int>
rpl::lifetime lifetime;
// Counter is consumed here, use std::move if it's an l-value.
std::move(
counter
) | rpl::start_with_next([=]\(int nextValue) {
// Process the next integer value emitted by the producer.
qDebug() << "Received: " << nextValue;
}, lifetime); // Pass the lifetime to manage the subscription.
// Note: `counter` is now in a moved-from state and likely invalid.
// If you need to start the same producer multiple times, duplicate it:
// rpl::duplicate(counter) | rpl::start_with_next(...);
// If you DON'T pass a lifetime to a start_... method:
auto counter2 = /* ... */; // Type: rpl::producer<int>
rpl::lifetime subscriptionLifetime = std::move(
counter2
) | rpl::start_with_next([=]\(int nextValue) { /* ... */ });
// The returned lifetime MUST be stored. If it's discarded immediately,
// the subscription stops instantly.
// `counter2` is also moved-from here.
```
Other variants allow handling errors (`_error`) and completion (`_done`):
```cpp
auto dataStream = /* ... */; // Type: rpl::producer<QString, Error>
rpl::lifetime lifetime;
// Assuming dataStream might be used again, we duplicate it for the first start.
// If it's the only use, std::move(dataStream) would be preferred.
rpl::duplicate(
dataStream
) | rpl::start_with_error([=]\(Error &&error) {
// Handle the error signaled by the producer.
qDebug() << "Error: " << error.text();
}, lifetime);
// Using dataStream again, perhaps duplicated again or moved if last use.
rpl::duplicate(
dataStream
) | rpl::start_with_done([=] {
// Execute when the producer signals it's finished emitting values.
qDebug() << "Stream finished.";
}, lifetime);
// Last use of dataStream, so we move it.
std::move(
dataStream
) | rpl::start_with_next_error_done(
[=]\(QString &&value) { /* handle next value */ },
[=]\(Error &&error) { /* handle error */ },
[=] { /* handle done */ },
lifetime);
```
## Transforming Producers
RPL provides functions to create new producers by transforming existing ones:
* `rpl::map`: Transforms each value emitted by a producer.
```cpp
auto ints = /* ... */; // Type: rpl::producer<int>
// The pipe operator often handles the move implicitly for chained transformations.
auto strings = std::move(
ints // Explicit move is safer
) | rpl::map([](int value) {
return QString::number(value * 2);
}); // Emits strings like "0", "2", "4", ...
```
* `rpl::filter`: Emits only the values from a producer that satisfy a condition.
```cpp
auto ints = /* ... */; // Type: rpl::producer<int>
auto evenInts = std::move(
ints // Explicit move is safer
) | rpl::filter([](int value) {
return (value % 2 == 0);
}); // Emits only even numbers.
```
## Combining Producers
You can combine multiple producers into one:
* `rpl::combine`: Combines the latest values from multiple producers whenever *any* of them emits a new value. Requires all producers to have emitted at least one value initially.
While it produces a `std::tuple`, subsequent operators like `map`, `filter`, and `start_with_next` can automatically unpack this tuple into separate lambda arguments.
```cpp
auto countProducer = rpl::single(1); // Type: rpl::producer<int>
auto textProducer = rpl::single(u"hello"_q); // Type: rpl::producer<QString>
rpl::lifetime lifetime;
// rpl::combine takes producers by const-ref internally and duplicates,
// so move/duplicate is usually not strictly needed here unless you
// want to signal intent or manage the lifetime of p1/p2 explicitly.
auto combined = rpl::combine(
countProducer, // or rpl::duplicate(countProducer)
textProducer // or rpl::duplicate(textProducer)
);
// Starting the combined producer consumes it.
// The lambda receives unpacked arguments, not the tuple itself.
std::move(
combined
) | rpl::start_with_next([=]\(int count, const QString &text) {
// No need for std::get<0>(latest), etc.
qDebug() << "Combined: Count=" << count << ", Text=" << text;
}, lifetime);
// This also works with map, filter, etc.
std::move(
combined
) | rpl::filter([=]\(int count, const QString &text) {
return count > 0 && !text.isEmpty();
}) | rpl::map([=]\(int count, const QString &text) {
return text.repeated(count);
}) | rpl::start_with_next([=]\(const QString &result) {
qDebug() << "Mapped & Filtered: " << result;
}, lifetime);
```
* `rpl::merge`: Merges the output of multiple producers of the *same type* into a single producer. It emits a value whenever *any* of the source producers emits a value.
```cpp
auto sourceA = /* ... */; // Type: rpl::producer<QString>
auto sourceB = /* ... */; // Type: rpl::producer<QString>
// rpl::merge also duplicates internally.
auto merged = rpl::merge(sourceA, sourceB);
// Starting the merged producer consumes it.
std::move(
merged
) | rpl::start_with_next([=]\(QString &&value) {
// Receives values from either sourceA or sourceB as they arrive.
qDebug() << "Merged value: " << value;
}, lifetime);
```
## Key Concepts Summary
* Use `rpl::producer<Type, Error>` to represent streams of values.
* Manage subscription duration using `rpl::lifetime`.
* Pass `rpl::lifetime` to `rpl::start_...` methods.
* If `rpl::lifetime` is not passed, **store the returned lifetime** to keep the subscription active.
* Use operators like `| rpl::map`, `| rpl::filter` to transform streams.
* Use `rpl::combine` or `rpl::merge` to combine streams.
* When starting a chain (`std::move(producer) | rpl::map(...)`), explicitly move the initial producer.
* These functions typically duplicate their input producers internally.
* Starting a pipeline consumes the producer; use `
+154
View File
@@ -0,0 +1,154 @@
---
description: For tasks requiring working with user facing UI components.
globs:
alwaysApply: false
---
# Telegram Desktop UI Styling
## Style Definition Files
UI element styles (colors, fonts, paddings, margins, icons, etc.) are defined in `.style` files using a custom syntax. These files are located alongside the C++ source files they correspond to within specific UI component directories (e.g., `Telegram/SourceFiles/ui/chat/chat.style`).
Definitions from other `.style` files can be included using the `using` directive at the top of the file:
```style
using "ui/basic.style";
using "ui/widgets/widgets.style";
```
The central definition of named colors happens in `Telegram/SourceFiles/ui/colors.palette`. This file allows for theme generation and loading colors from various sources.
### Syntax Overview
1. **Built-in Types:** The syntax recognizes several base types inferred from the value assigned:
* `int`: Integer numbers (e.g., `lineHeight: 20;`)
* `bool`: Boolean values (e.g., `useShadow: true;`)
* `pixels`: Pixel values, ending with `px` (e.g., `borderWidth: 1px;`). Generated as `int` in C++.
* `color`: Named colors defined in `colors.palette` (e.g., `background: windowBg;`)
* `icon`: Defined inline using a specific syntax (see below). Generates `style::icon`.
* `margins`: Four pixel values for margins or padding. Requires `margins(top, right, bottom, left)` syntax (e.g., `margin: margins(10px, 5px, 10px, 5px);` or `padding: margins(8px, 8px, 8px, 8px);`). Generates `style::margins` (an alias for `QMargins`).
* `size`: Two pixel values for width and height (e.g., `iconSize: size(16px, 16px);`). Generates `style::size`.
* `point`: Two pixel values for x and y coordinates (e.g., `textPos: point(5px, 2px);`). Generates `style::point`.
* `align`: Alignment keywords (e.g., `textAlign: align(center);` or `iconAlign: align(left);`). Generates `style::align`.
* `font`: Font definitions (e.g., `font: font(14px semibold);`). Generates `style::font`.
* `double`: Floating point numbers (e.g., `disabledOpacity: 0.5;`)
*Note on Borders:* Borders are typically defined using multiple fields like `border: pixels;` (for width) and `borderFg: color;` (for color), rather than a single CSS-like property.
2. **Structure Definition:** You can define complex data structures directly within the `.style` file:
```style
MyButtonStyle { // Defines a structure named 'MyButtonStyle'
textPadding: margins; // Field 'textPadding' expects margins type
icon: icon; // Field 'icon' of type icon
height: pixels; // Field 'height' of type pixels
}
```
This generates a `struct MyButtonStyle { ... };` inside the `namespace style`. Fields will have corresponding C++ types (`style::margins`, `style::icon`, `int`).
3. **Variable Definition & Inheritance:** Variables are defined using `name: value;` or `groupName { ... }`. They can be of built-in types or custom structures. Structures can be initialized inline or inherit from existing variables.
**Icon Definition Syntax:** Icons are defined inline using the `icon{...}` syntax. The generator probes for `.svg` files or `.png` files (including `@2x`, `@3x` variants) based on the provided path stem.
```style
// Single-part icon definition:
myIconSearch: icon{{ "gui/icons/search", iconColor }};
// Multi-part icon definition (layers drawn bottom-up):
myComplexIcon: icon{
{ "gui/icons/background", iconBgColor },
{ "gui/icons/foreground", iconFgColor }
};
// Icon with path modifiers (PNG only for flips, SVG only for size):
myFlippedIcon: icon{{ "gui/icons/arrow-flip_horizontal", arrowColor }};
myResizedIcon: icon{{ "gui/icons/logo-128x128", logoColor }}; // Forces 128x128 for SVG
```
**Other Variable Examples:**
```style
// Simple variables
buttonHeight: 30px;
activeButtonColor: buttonBgActive; // Named color from colors.palette
// Variable of a custom structure type, initialized inline
defaultButton: MyButtonStyle {
textPadding: margins(10px, 15px, 10px, 15px); // Use margins(...) syntax
icon: myIconSearch; // Assign the previously defined icon variable
height: buttonHeight; // Reference another variable
}
// Another variable inheriting from 'defaultButton' and overriding/adding fields
primaryButton: MyButtonStyle(defaultButton) {
icon: myComplexIcon; // Override icon with the multi-part one
backgroundColor: activeButtonColor; // Add a field not in MyButtonStyle definition
}
// Style group (often used for specific UI elements)
chatInput { // Example using separate border properties and explicit padding
border: 1px; // Border width
borderFg: defaultInputFieldBorder; // Border color (named color)
padding: margins(5px, 10px, 5px, 10px); // Use margins(...) syntax for padding field
backgroundColor: defaultChatBg; // Background color
}
```
## Code Generation
A code generation tool processes these `.style` files and `colors.palette` to create C++ objects.
- The `using` directives resolve dependencies between `.style` files.
- Custom structure definitions (like `MyButtonStyle`) generate corresponding `struct MyButtonStyle { ... };` within the `namespace style`.
- Style variables/groups (like `defaultButton`, `primaryButton`, `chatInput`) are generated as objects/structs within the `st` namespace (e.g., `st::defaultButton`, `st::primaryButton`, `st::chatInput`). These generated structs contain members corresponding to the fields defined in the `.style` file.
- Color objects are generated into the `st` namespace as well, based on their names in `colors.palette` (e.g., `st::windowBg`, `st::buttonBgActive`).
- The generated header files for styles are placed in the `Telegram/SourceFiles/styles/` directory with a `style_` prefix (e.g., `styles/style_widgets.h` for `ui/widgets/widgets.style`). You include them like `#include "styles/style_widgets.h"`.
Generated C++ types correspond to the `.style` types: `style::color`, `style::font`, `style::margins` (used for both `margin:` and `padding:` fields), `style::icon`, `style::size`, `style::point`, `style::align`, and `int` or `bool` for simple types.
## Style Usage in Code
Styles are applied in C++ code by referencing the generated `st::...` objects and their members.
```cpp
// Example: Including the generated style header
#include "styles/style_widgets.h" // For styles defined in ui/widgets/widgets.style
// ... inside some UI class code ...
// Accessing members of a generated style struct
int height = st::primaryButton.height; // Accessing the 'height' field (pixels -> int)
const style::icon &icon = st::primaryButton.icon; // Accessing the 'icon' field (st::myComplexIcon)
style::margins padding = st::primaryButton.textPadding; // Accessing 'textPadding'
style::color bgColor = st::primaryButton.backgroundColor; // Accessing the color (st::activeButtonColor)
// Applying styles (conceptual examples)
myButton->setIcon(st::primaryButton.icon);
myButton->setHeight(st::primaryButton.height);
myButton->setPadding(st::primaryButton.textPadding);
myButton->setBackgroundColor(st::primaryButton.backgroundColor);
// Using styles directly in painting
void MyWidget::paintEvent(QPaintEvent *e) {
Painter p(this);
p.fillRect(rect(), st::chatInput.backgroundColor); // Use color from chatInput style
// Border painting requires width and color
int borderWidth = st::chatInput.border; // Access border width (pixels -> int)
style::color borderColor = st::chatInput.borderFg; // Access border color
if (borderWidth > 0) {
p.setPen(QPen(borderColor, borderWidth));
// Adjust rect for pen width if needed before drawing
p.drawRect(rect().adjusted(borderWidth / 2, borderWidth / 2, -borderWidth / 2, -borderWidth / 2));
}
// Access padding (style::margins)
style::margins inputPadding = st::chatInput.padding;
// ... use inputPadding.top(), inputPadding.left() etc. for content layout ...
}
```
**Key Points:**
* Styles are defined in `.style` files next to their corresponding C++ source files.
* `using "path/to/other.style";` includes definitions from other style files.
* Named colors are defined centrally in `ui/colors.palette`.
* `.style` syntax supports built-in types (like `pixels`, `color`, `margins`, `point`, `size`, `align`, `font`, `double`), custom structure definitions (`Name { field: type; ... }`), variable definitions (`name: value;`), and inheritance (`child: Name(parent) { ... }`).
* Values must match the expected type (e.g., fields declared as `margins` type, like `margin:` or `padding:`, require `margins(...)` syntax). Borders are typically set via separate `border: pixels;` and `borderFg: color;` fields.
* Icons are defined inline using `name: icon{{ "path_stem", color }};` or `name: icon{ { "path1", c1 }, ... };` syntax, with optional path modifiers.
* Code generation creates `struct` definitions in the `style` namespace for custom types and objects/structs in the `st` namespace for defined variables/groups.
* Generated headers are in `styles/` with a `style_` prefix and must be included.
* Access style properties via the generated `st::` objects (e.g., `st::primaryButton.height`, `st::chatInput.backgroundColor`).
+2
View File
@@ -0,0 +1,2 @@
# Add directories or file patterns to ignore during indexing (e.g. foo/ or *.csv)
Telegram/ThirdParty/
+2 -4
View File
@@ -5,11 +5,9 @@
"vscode": {
"settings": {
"C_Cpp.intelliSenseEngine": "disabled",
"clangd.arguments": [
"--compile-commands-dir=${workspaceFolder}/out"
],
"cmake.generator": "Ninja Multi-Config",
"cmake.buildDirectory": "${workspaceFolder}/out"
"cmake.buildDirectory": "${workspaceFolder}/out",
"cmake.copyCompileCommands": "${workspaceFolder}/compile_commands.json"
},
"extensions": [
"ms-vscode.cpptools-extension-pack",
+5 -14
View File
@@ -5,7 +5,7 @@ body:
- type: markdown
attributes:
value: |
Thanks for reporting issues of Telegram Desktop!
Thanks for reporting issues of AyuGram Desktop!
To make it easier for us to help you please enter detailed information below.
- type: textarea
@@ -39,12 +39,9 @@ body:
required: true
- type: input
attributes:
label: Version of Telegram Desktop
label: Version of AyuGram Desktop
description: >
Please note we don't support versions from Linux distro repositories.
If you need support for these versions, **please contact your distro maintainer**
or your distro bugtracker.
**Don't use 'latest'**, specify actual version, **that's a reason to close your issue**.
**Don't use 'latest'**, specify actual version.
validations:
required: true
- type: dropdown
@@ -52,11 +49,7 @@ body:
label: Installation source
multiple: false
options:
- Static binary from official website
- Microsoft Store
- Mac App Store
- Flatpak
- Snap
- Binary from GitHub / official Telegram source
- Other (unofficial) source
validations:
required: true
@@ -65,9 +58,7 @@ body:
label: Crash ID
description: >
If you're reporting a crash, please enter the crash ID from the crash reporter
opening on the next launch after crash. **You have to enable beta versions
installation in Settings -> Advanced for the reporter to appear.**
You don't have to wait for a beta version to arrive.
opening on the next launch after crash.
- type: textarea
attributes:
label: Logs
+42
View File
@@ -0,0 +1,42 @@
name: Docker.
on:
push:
paths:
- '.github/workflows/docker.yml'
- 'Telegram/build/docker/centos_env/**'
jobs:
docker:
name: Ubuntu
runs-on: ubuntu-latest
if: github.ref_name == github.event.repository.default_branch
env:
IMAGE_TAG: ghcr.io/${{ github.repository }}/centos_env:latest
steps:
- name: Clone.
uses: actions/checkout@v4
with:
submodules: recursive
- name: First set up.
run: |
sudo apt update
curl -sSL https://install.python-poetry.org | python3 -
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin
- name: Free up some disk space.
uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be
with:
tool-cache: true
- name: Docker image build.
run: |
cd Telegram/build/docker/centos_env
poetry install
DEBUG= LTO= poetry run gen_dockerfile | DOCKER_BUILDKIT=1 docker build -t $IMAGE_TAG -
- name: Push the Docker image.
run: docker push $IMAGE_TAG
-125
View File
@@ -1,125 +0,0 @@
name: Linux.
on:
push:
paths-ignore:
- 'docs/**'
- '**.md'
- 'changelog.txt'
- 'LEGAL'
- 'LICENSE'
- '.github/**'
- '!.github/workflows/linux.yml'
- 'snap/**'
- 'Telegram/build/**'
- 'Telegram/Resources/uwp/**'
- 'Telegram/Resources/winrc/**'
- 'Telegram/SourceFiles/platform/win/**'
- 'Telegram/SourceFiles/platform/mac/**'
- 'Telegram/Telegram/**'
- 'Telegram/configure.bat'
- 'Telegram/Telegram.plist'
pull_request:
paths-ignore:
- 'docs/**'
- '**.md'
- 'changelog.txt'
- 'LEGAL'
- 'LICENSE'
- '.github/**'
- '!.github/workflows/linux.yml'
- 'snap/**'
- 'Telegram/build/**'
- 'Telegram/Resources/uwp/**'
- 'Telegram/Resources/winrc/**'
- 'Telegram/SourceFiles/platform/win/**'
- 'Telegram/SourceFiles/platform/mac/**'
- 'Telegram/Telegram/**'
- 'Telegram/configure.bat'
- 'Telegram/Telegram.plist'
jobs:
linux:
name: Rocky Linux 8
runs-on: ubuntu-latest
strategy:
matrix:
defines:
- ""
- "DESKTOP_APP_DISABLE_X11_INTEGRATION"
env:
UPLOAD_ARTIFACT: "true"
steps:
- name: Get repository name.
run: echo "REPO_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
- name: Clone.
uses: actions/checkout@v4
with:
submodules: recursive
path: ${{ env.REPO_NAME }}
- name: First set up.
run: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin
docker pull ghcr.io/$GITHUB_REPOSITORY/centos_env
docker tag ghcr.io/$GITHUB_REPOSITORY/centos_env tdesktop:centos_env
- name: Telegram Desktop build.
run: |
cd $REPO_NAME
DEFINE=""
if [ -n "${{ matrix.defines }}" ]; then
DEFINE="-D ${{ matrix.defines }}=ON"
echo Define from matrix: $DEFINE
echo "ARTIFACT_NAME=Telegram_${{ matrix.defines }}" >> $GITHUB_ENV
else
echo "ARTIFACT_NAME=Telegram" >> $GITHUB_ENV
fi
docker run --rm \
-u $(id -u) \
-v $PWD:/usr/src/tdesktop \
-e CONFIG=Debug \
tdesktop:centos_env \
/usr/src/tdesktop/Telegram/build/docker/centos_env/build.sh \
-D CMAKE_C_FLAGS_DEBUG="" \
-D CMAKE_CXX_FLAGS_DEBUG="" \
-D CMAKE_C_FLAGS="-Werror" \
-D CMAKE_CXX_FLAGS="-Werror" \
-D CMAKE_EXE_LINKER_FLAGS="-s" \
-D TDESKTOP_API_TEST=ON \
-D DESKTOP_APP_DISABLE_AUTOUPDATE=OFF \
-D DESKTOP_APP_DISABLE_CRASH_REPORTS=OFF \
$DEFINE
- name: Check.
run: |
filePath="$REPO_NAME/out/Debug/Telegram"
if test -f "$filePath"; then
echo "Build successfully done! :)"
size=$(stat -c %s "$filePath")
echo "File size of ${filePath}: ${size} Bytes."
else
echo "Build error, output file does not exist."
exit 1
fi
- name: Move artifact.
if: env.UPLOAD_ARTIFACT == 'true'
run: |
cd $REPO_NAME/out/Debug
mkdir artifact
mv {Telegram,Updater} artifact/
- uses: actions/upload-artifact@v4
if: env.UPLOAD_ARTIFACT == 'true'
name: Upload artifact.
with:
name: ${{ env.ARTIFACT_NAME }}
path: ${{ env.REPO_NAME }}/out/Debug/artifact/
-201
View File
@@ -1,201 +0,0 @@
name: Windows.
on:
push:
paths-ignore:
- 'docs/**'
- '**.md'
- 'changelog.txt'
- 'LEGAL'
- 'LICENSE'
- '.github/**'
- '!.github/workflows/win.yml'
- 'lib/xdg/**'
- 'snap/**'
- 'Telegram/build/docker/**'
- 'Telegram/Resources/uwp/**'
- 'Telegram/SourceFiles/platform/linux/**'
- 'Telegram/SourceFiles/platform/mac/**'
- 'Telegram/Telegram/**'
- 'Telegram/configure.sh'
- 'Telegram/Telegram.plist'
pull_request:
paths-ignore:
- 'docs/**'
- '**.md'
- 'changelog.txt'
- 'LEGAL'
- 'LICENSE'
- '.github/**'
- '!.github/workflows/win.yml'
- 'lib/xdg/**'
- 'snap/**'
- 'Telegram/build/docker/**'
- 'Telegram/Resources/uwp/**'
- 'Telegram/SourceFiles/platform/linux/**'
- 'Telegram/SourceFiles/platform/mac/**'
- 'Telegram/Telegram/**'
- 'Telegram/configure.sh'
- 'Telegram/Telegram.plist'
jobs:
windows:
name: Windows
runs-on: windows-latest
strategy:
matrix:
arch: [Win32, x64]
generator: ["", "Ninja Multi-Config"]
env:
UPLOAD_ARTIFACT: "true"
ONLY_CACHE: "false"
PREPARE_PATH: "Telegram/build/prepare/prepare.py"
defaults:
run:
shell: cmd
steps:
- name: Prepare directories.
run: |
mkdir %userprofile%\TBuild\Libraries
mklink /d %GITHUB_WORKSPACE%\TBuild %userprofile%\TBuild
echo TBUILD=%GITHUB_WORKSPACE%\TBuild>>%GITHUB_ENV%
- name: Get repository name.
shell: bash
run: echo "REPO_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
- uses: ilammy/msvc-dev-cmd@v1.13.0
name: Native Tools Command Prompt.
with:
arch: ${{ matrix.arch }}
- name: Clone.
uses: actions/checkout@v4
with:
submodules: recursive
path: ${{ env.TBUILD }}\${{ env.REPO_NAME }}
- name: Set up environment paths.
shell: bash
run: |
echo "CACHE_KEY=$(sha256sum $TBUILD/$REPO_NAME/$PREPARE_PATH | awk '{ print $1 }')" >> $GITHUB_ENV
echo "Configurate git for cherry-picks."
git config --global user.email "you@example.com"
git config --global user.name "Sample"
- name: NuGet sources.
run: |
nuget sources Disable -Name "Microsoft Visual Studio Offline Packages"
nuget sources Add -Source https://api.nuget.org/v3/index.json & exit 0
- name: ThirdParty cache.
id: cache-third-party
uses: actions/cache@v4
with:
path: ${{ env.TBUILD }}\ThirdParty
key: ${{ runner.OS }}-${{ matrix.arch }}-third-party-${{ env.CACHE_KEY }}
restore-keys: ${{ runner.OS }}-${{ matrix.arch }}-third-party-
- name: Libraries cache.
id: cache-libs
uses: actions/cache@v4
with:
path: ${{ env.TBUILD }}\Libraries
key: ${{ runner.OS }}-${{ matrix.arch }}-libs-${{ env.CACHE_KEY }}
restore-keys: ${{ runner.OS }}-${{ matrix.arch }}-libs-
- name: Libraries.
env:
GYP_MSVS_OVERRIDE_PATH: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\'
GYP_MSVS_VERSION: 2022
run: |
cd %TBUILD%
%REPO_NAME%\Telegram\build\prepare\win.bat skip-release silent
- name: Read configuration matrix.
shell: bash
run: |
ARTIFACT_NAME="Telegram"
ARCH=""
if [ -n "${{ matrix.arch }}" ]; then
case "${{ matrix.arch }}" in
Win32) ARCH="x86";;
*) ARCH="${{ matrix.arch }}";;
esac
echo "Architecture from matrix: $ARCH"
ARTIFACT_NAME="${ARTIFACT_NAME}_${{ matrix.arch }}"
fi
GENERATOR=""
if [ -n "${{ matrix.generator }}" ]; then
GENERATOR="-G \"${{ matrix.generator }}\""
echo "Generator from matrix: $GENERATOR"
ARTIFACT_NAME="${ARTIFACT_NAME}_${{ matrix.generator }}"
fi
echo "TDESKTOP_BUILD_GENERATOR=$GENERATOR" >> $GITHUB_ENV
[ -n "$GENERATOR" ] && ARCH=""
echo "TDESKTOP_BUILD_ARCH=$ARCH" >> $GITHUB_ENV
DEFINE=""
if [ -n "${{ matrix.defines }}" ]; then
DEFINE="-D ${{ matrix.defines }}=ON"
echo "Define from matrix: $DEFINE"
ARTIFACT_NAME="${ARTIFACT_NAME}_${{ matrix.defines }}"
fi
echo "TDESKTOP_BUILD_DEFINE=$DEFINE" >> $GITHUB_ENV
echo "ARTIFACT_NAME=$ARTIFACT_NAME" >> $GITHUB_ENV
API="-D TDESKTOP_API_TEST=ON"
if [ $GITHUB_REF == 'refs/heads/nightly' ]; then
echo "Use the open credentials."
API="-D TDESKTOP_API_ID=611335 -D TDESKTOP_API_HASH=d524b414d21f4d37f08684c1df41ac9c"
fi
echo "TDESKTOP_BUILD_API=$API" >> $GITHUB_ENV
- name: Free up some disk space.
run: |
cd %TBUILD%
del /S Libraries\*.pdb
del /S Libraries\*.pch
del /S Libraries\*.obj
- name: Telegram Desktop build.
if: env.ONLY_CACHE == 'false'
run: |
cd %TBUILD%\%REPO_NAME%\Telegram
call configure.bat ^
%TDESKTOP_BUILD_GENERATOR% ^
%TDESKTOP_BUILD_ARCH% ^
%TDESKTOP_BUILD_API% ^
-D CMAKE_C_FLAGS="/WX" ^
-D CMAKE_CXX_FLAGS="/WX" ^
-D DESKTOP_APP_DISABLE_AUTOUPDATE=OFF ^
-D DESKTOP_APP_DISABLE_CRASH_REPORTS=OFF ^
-D DESKTOP_APP_NO_PDB=ON ^
%TDESKTOP_BUILD_DEFINE%
cmake --build ..\out --config Debug --parallel
- name: Move artifact.
if: (env.UPLOAD_ARTIFACT == 'true') || (github.ref == 'refs/heads/nightly')
run: |
set OUT=%TBUILD%\%REPO_NAME%\out\Debug
mkdir artifact
move %OUT%\Telegram.exe artifact/
move %OUT%\Updater.exe artifact/
- uses: actions/upload-artifact@v4
name: Upload artifact.
if: (env.UPLOAD_ARTIFACT == 'true') || (github.ref == 'refs/heads/nightly')
with:
name: ${{ env.ARTIFACT_NAME }}
path: artifact\
+1
View File
@@ -20,6 +20,7 @@ ipch/
.vs/
.vscode/
.cache/
compile_commands.json
/Telegram/log.txt
/Telegram/data
-6
View File
@@ -1,6 +1,3 @@
[submodule "Telegram/ThirdParty/libtgvoip"]
path = Telegram/ThirdParty/libtgvoip
url = https://github.com/telegramdesktop/libtgvoip
[submodule "Telegram/ThirdParty/GSL"]
path = Telegram/ThirdParty/GSL
url = https://github.com/Microsoft/GSL.git
@@ -76,9 +73,6 @@
[submodule "Telegram/lib_webview"]
path = Telegram/lib_webview
url = https://github.com/desktop-app/lib_webview.git
[submodule "Telegram/ThirdParty/jemalloc"]
path = Telegram/ThirdParty/jemalloc
url = https://github.com/jemalloc/jemalloc
[submodule "Telegram/ThirdParty/dispatch"]
path = Telegram/ThirdParty/dispatch
url = https://github.com/apple/swift-corelibs-libdispatch
+7 -19
View File
@@ -4,15 +4,7 @@
# For license and copyright information please follow this link:
# https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
if (APPLE)
# target_precompile_headers with COMPILE_LANGUAGE restriction.
cmake_minimum_required(VERSION 3.23)
else()
cmake_minimum_required(VERSION 3.16)
endif()
if (POLICY CMP0149)
cmake_policy(SET CMP0149 NEW)
endif()
cmake_minimum_required(VERSION 3.25...3.31)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
@@ -20,19 +12,17 @@ include(cmake/validate_special_target.cmake)
include(cmake/version.cmake)
desktop_app_parse_version(Telegram/build/version)
set(project_langs C CXX)
if (APPLE)
list(APPEND project_langs OBJC OBJCXX)
elseif (LINUX)
list(APPEND project_langs ASM)
endif()
project(Telegram
LANGUAGES ${project_langs}
LANGUAGES C CXX
VERSION ${desktop_app_version_cmake}
DESCRIPTION "AyuGram Desktop"
HOMEPAGE_URL "https://ayugram.one"
)
if (APPLE)
enable_language(OBJC OBJCXX)
endif()
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT Telegram)
get_filename_component(third_party_loc "Telegram/ThirdParty" REALPATH)
@@ -47,9 +37,7 @@ include(cmake/variables.cmake)
include(cmake/nice_target_sources.cmake)
include(cmake/target_compile_options_if_exists.cmake)
include(cmake/target_link_frameworks.cmake)
include(cmake/target_link_optional_libraries.cmake)
include(cmake/target_link_options_if_exists.cmake)
include(cmake/target_link_static_libraries.cmake)
include(cmake/init_target.cmake)
include(cmake/generate_target.cmake)
include(cmake/nuget.cmake)
+31 -3
View File
@@ -30,10 +30,10 @@
### Windows
#### Официальный вариант
#### Официальная версия
Вы можете скачать готовый бинарный файл со вкладки [Releases](https://github.com/AyuGram/AyuGramDesktop/releases) или из
[Телеграм чата](https://t.me/ayugramchat/12788).
[Телеграм канала](https://t.me/AyuGramReleases).
#### Winget
@@ -55,16 +55,40 @@ scoop install ayugram
### macOS
#### Официальная версия
Вы можете скачать подписанный пакет со вкладки [Releases](https://github.com/AyuGram/AyuGramDesktop/releases).
#### Homebrew
```bash
brew install --cask ayugram
```
### Arch Linux
Вы можете установить `ayugram-desktop` из [AUR](https://aur.archlinux.org/packages?O=0&K=ayugram).
#### Из исходников (рекомендованный способ)
Установите `ayugram-desktop` из [AUR](https://aur.archlinux.org/packages/ayugram-desktop).
#### Готовые бинарники
Установите `ayugram-desktop-bin` из [AUR](https://aur.archlinux.org/packages/ayugram-desktop-bin).
Примечание: данный пакет собирается не нами.
### NixOS
Попробуйте [этот репозиторий](https://github.com/ayugram-port/ayugram-desktop).
### ALT Linux
[Sisyphus](https://packages.altlinux.org/en/sisyphus/srpms/ayugram-desktop/)
### EPM
`epm play ayugram`
### Любой другой Линукс дистрибутив
Следуйте [официальному руководству](https://github.com/AyuGram/AyuGramDesktop/blob/dev/docs/building-linux.md).
@@ -101,3 +125,7 @@ scoop install ayugram
### Иконки
- [Solar Icon Set](https://www.figma.com/community/file/1166831539721848736)
### Боты
- [TelegramDB](https://t.me/tgdatabase) для получения юзернейма по ID
+30 -2
View File
@@ -34,7 +34,7 @@ And many more. Check out our [Documentation](https://docs.ayugram.one/desktop/).
#### Official
You can download prebuilt Windows binary from [Releases tab](https://github.com/AyuGram/AyuGramDesktop/releases) or from
the [Telegram topic](https://t.me/ayugramchat/12788).
the [Telegram channel](https://t.me/AyuGramReleases).
#### Winget
@@ -56,16 +56,40 @@ build by yourself.
### macOS
#### Official
You can download prebuilt macOS package from [Releases tab](https://github.com/AyuGram/AyuGramDesktop/releases).
#### Homebrew
```bash
brew install --cask ayugram
```
### Arch Linux
You can install `ayugram-desktop` from [AUR](https://aur.archlinux.org/packages?O=0&K=ayugram).
#### From source (recommended)
Install `ayugram-desktop` from [AUR](https://aur.archlinux.org/packages/ayugram-desktop).
#### Prebuilt binaries
Install `ayugram-desktop-bin` from [AUR](https://aur.archlinux.org/packages/ayugram-desktop-bin).
Note: these binaries aren't officially maintained by us.
### NixOS
See [this repository](https://github.com/ayugram-port/ayugram-desktop) for installation manual.
### ALT Linux
[Sisyphus](https://packages.altlinux.org/en/sisyphus/srpms/ayugram-desktop/)
### EPM
`epm play ayugram`
### Any other Linux distro
Follow the [official guide](https://github.com/AyuGram/AyuGramDesktop/blob/dev/docs/building-linux.md).
@@ -102,3 +126,7 @@ Enjoy using **AyuGram**? Consider sending us a tip!
### Icons
- [Solar Icon Set](https://www.figma.com/community/file/1166831539721848736)
### Bots
- [TelegramDB](https://t.me/tgdatabase) for username lookup by ID
+81 -32
View File
@@ -26,7 +26,6 @@ get_filename_component(res_loc Resources REALPATH)
include(cmake/telegram_options.cmake)
include(cmake/lib_ffmpeg.cmake)
include(cmake/lib_stripe.cmake)
include(cmake/lib_tgvoip.cmake)
include(cmake/lib_tgcalls.cmake)
include(cmake/lib_prisma.cmake)
include(cmake/td_export.cmake)
@@ -34,6 +33,7 @@ include(cmake/td_iv.cmake)
include(cmake/td_lang.cmake)
include(cmake/td_mtproto.cmake)
include(cmake/td_scheme.cmake)
include(cmake/td_tde2e.cmake)
include(cmake/td_ui.cmake)
include(cmake/generate_appdata_changelog.cmake)
@@ -47,17 +47,13 @@ if (WIN32)
platform/win/windows_quiethours.idl
platform/win/windows_toastactivator.idl
)
nuget_add_winrt(Telegram)
endif()
set_target_properties(Telegram PROPERTIES AUTOMOC ON)
target_link_libraries(Telegram
PRIVATE
tdesktop::lib_tgcalls_legacy
tdesktop::lib_tgcalls
tdesktop::lib_tgvoip
# Order in this list defines the order of include paths in command line.
# We need to place desktop-app::external_minizip this early to have its
@@ -71,6 +67,7 @@ PRIVATE
tdesktop::td_lang
tdesktop::td_mtproto
tdesktop::td_scheme
tdesktop::td_tde2e
tdesktop::td_ui
desktop-app::lib_webrtc
desktop-app::lib_base
@@ -130,8 +127,6 @@ set(ayugram_files
ayu/ui/ayu_logo.h
ayu/ui/utils/ayu_profile_values.cpp
ayu/ui/utils/ayu_profile_values.h
ayu/ui/settings/icon_picker.cpp
ayu/ui/settings/icon_picker.h
ayu/ui/settings/settings_ayu.cpp
ayu/ui/settings/settings_ayu.h
ayu/ui/context_menu/context_menu.cpp
@@ -144,10 +139,8 @@ set(ayugram_files
ayu/ui/message_history/history_item.h
ayu/ui/message_history/history_section.cpp
ayu/ui/message_history/history_section.h
ayu/ui/boxes/edit_deleted_mark.cpp
ayu/ui/boxes/edit_deleted_mark.h
ayu/ui/boxes/edit_edited_mark.cpp
ayu/ui/boxes/edit_edited_mark.h
ayu/ui/boxes/edit_mark_box.cpp
ayu/ui/boxes/edit_mark_box.h
ayu/ui/boxes/font_selector.cpp
ayu/ui/boxes/font_selector.h
ayu/ui/boxes/theme_selector_box.cpp
@@ -156,6 +149,8 @@ set(ayugram_files
ayu/ui/boxes/message_shot_box.h
ayu/ui/components/image_view.cpp
ayu/ui/components/image_view.h
ayu/ui/components/icon_picker.cpp
ayu/ui/components/icon_picker.h
ayu/libs/json.hpp
ayu/libs/json_ext.hpp
ayu/libs/sqlite/sqlite3.c
@@ -171,6 +166,10 @@ set(ayugram_files
ayu/features/streamer_mode/streamer_mode.h
ayu/features/messageshot/message_shot.cpp
ayu/features/messageshot/message_shot.h
ayu/features/forward/ayu_forward.cpp
ayu/features/forward/ayu_forward.h
ayu/features/forward/ayu_sync.cpp
ayu/features/forward/ayu_sync.h
ayu/data/messages_storage.cpp
ayu/data/messages_storage.h
ayu/data/entities.h
@@ -210,6 +209,8 @@ PRIVATE
api/api_confirm_phone.h
api/api_credits.cpp
api/api_credits.h
api/api_credits_history_entry.cpp
api/api_credits_history_entry.h
api/api_earn.cpp
api/api_earn.h
api/api_editing.cpp
@@ -231,6 +232,8 @@ PRIVATE
api/api_peer_colors.h
api/api_peer_photo.cpp
api/api_peer_photo.h
api/api_peer_search.cpp
api/api_peer_search.h
api/api_polls.cpp
api/api_polls.h
api/api_premium.cpp
@@ -257,8 +260,12 @@ PRIVATE
api/api_statistics_data_deserialize.h
api/api_statistics_sender.cpp
api/api_statistics_sender.h
api/api_suggest_post.cpp
api/api_suggest_post.h
api/api_text_entities.cpp
api/api_text_entities.h
api/api_todo_lists.cpp
api/api_todo_lists.h
api/api_toggling_media.cpp
api/api_toggling_media.h
api/api_transcribes.cpp
@@ -295,8 +302,8 @@ PRIVATE
boxes/peers/edit_contact_box.h
boxes/peers/edit_forum_topic_box.cpp
boxes/peers/edit_forum_topic_box.h
boxes/peers/edit_linked_chat_box.cpp
boxes/peers/edit_linked_chat_box.h
boxes/peers/edit_discussion_link_box.cpp
boxes/peers/edit_discussion_link_box.h
boxes/peers/edit_members_visible.cpp
boxes/peers/edit_members_visible.h
boxes/peers/edit_participant_box.cpp
@@ -362,6 +369,8 @@ PRIVATE
boxes/edit_caption_box.h
boxes/edit_privacy_box.cpp
boxes/edit_privacy_box.h
boxes/edit_todo_list_box.cpp
boxes/edit_todo_list_box.h
boxes/gift_credits_box.cpp
boxes/gift_credits_box.h
boxes/gift_premium_box.cpp
@@ -476,6 +485,8 @@ PRIVATE
calls/calls_video_bubble.h
calls/calls_video_incoming.cpp
calls/calls_video_incoming.h
calls/calls_window.cpp
calls/calls_window.h
chat_helpers/compose/compose_features.h
chat_helpers/compose/compose_show.cpp
chat_helpers/compose/compose_show.h
@@ -525,6 +536,8 @@ PRIVATE
chat_helpers/ttl_media_layer_widget.h
core/application.cpp
core/application.h
core/bank_card_click_handler.cpp
core/bank_card_click_handler.h
core/base_integration.cpp
core/base_integration.h
core/changelogs.cpp
@@ -541,6 +554,7 @@ PRIVATE
core/crash_report_window.h
core/crash_reports.cpp
core/crash_reports.h
core/credits_amount.h
core/deadlock_detector.h
core/file_utilities.cpp
core/file_utilities.h
@@ -554,7 +568,6 @@ PRIVATE
core/sandbox.h
core/shortcuts.cpp
core/shortcuts.h
core/stars_amount.h
core/ui_integration.cpp
core/ui_integration.h
core/update_checker.cpp
@@ -578,8 +591,12 @@ PRIVATE
data/components/factchecks.h
data/components/location_pickers.cpp
data/components/location_pickers.h
data/components/promo_suggestions.cpp
data/components/promo_suggestions.h
data/components/recent_peers.cpp
data/components/recent_peers.h
data/components/recent_shared_media_gifts.cpp
data/components/recent_shared_media_gifts.h
data/components/scheduled_messages.cpp
data/components/scheduled_messages.h
data/components/sponsored_messages.cpp
@@ -724,6 +741,8 @@ PRIVATE
data/data_streaming.h
data/data_thread.cpp
data/data_thread.h
data/data_todo_list.cpp
data/data_todo_list.h
data/data_types.cpp
data/data_types.h
data/data_unread_value.cpp
@@ -764,12 +783,16 @@ PRIVATE
dialogs/dialogs_main_list.h
dialogs/dialogs_pinned_list.cpp
dialogs/dialogs_pinned_list.h
dialogs/dialogs_quick_action.cpp
dialogs/dialogs_quick_action.h
dialogs/dialogs_row.cpp
dialogs/dialogs_row.h
dialogs/dialogs_search_from_controllers.cpp
dialogs/dialogs_search_from_controllers.h
dialogs/dialogs_search_tags.cpp
dialogs/dialogs_search_tags.h
dialogs/dialogs_top_bar_suggestion.cpp
dialogs/dialogs_top_bar_suggestion.h
dialogs/dialogs_widget.cpp
dialogs/dialogs_widget.h
editor/color_picker.cpp
@@ -820,6 +843,8 @@ PRIVATE
history/view/controls/history_view_draft_options.h
history/view/controls/history_view_forward_panel.cpp
history/view/controls/history_view_forward_panel.h
history/view/controls/history_view_suggest_options.cpp
history/view/controls/history_view_suggest_options.h
history/view/controls/history_view_ttl_button.cpp
history/view/controls/history_view_ttl_button.h
history/view/controls/history_view_voice_record_bar.cpp
@@ -881,8 +906,12 @@ PRIVATE
history/view/media/history_view_sticker_player_abstract.h
history/view/media/history_view_story_mention.cpp
history/view/media/history_view_story_mention.h
history/view/media/history_view_suggest_decision.cpp
history/view/media/history_view_suggest_decision.h
history/view/media/history_view_theme_document.cpp
history/view/media/history_view_theme_document.h
history/view/media/history_view_todo_list.cpp
history/view/media/history_view_todo_list.h
history/view/media/history_view_unique_gift.cpp
history/view/media/history_view_unique_gift.h
history/view/media/history_view_userpic_suggestion.cpp
@@ -907,6 +936,8 @@ PRIVATE
history/view/history_view_bottom_info.h
history/view/history_view_chat_preview.cpp
history/view/history_view_chat_preview.h
history/view/history_view_chat_section.cpp
history/view/history_view_chat_section.h
history/view/history_view_contact_status.cpp
history/view/history_view_contact_status.h
history/view/history_view_context_menu.cpp
@@ -941,8 +972,6 @@ PRIVATE
history/view/history_view_pinned_tracker.h
history/view/history_view_quick_action.cpp
history/view/history_view_quick_action.h
history/view/history_view_replies_section.cpp
history/view/history_view_replies_section.h
history/view/history_view_reply.cpp
history/view/history_view_reply.h
history/view/history_view_requests_bar.cpp
@@ -959,8 +988,8 @@ PRIVATE
history/view/history_view_sponsored_click_handler.h
history/view/history_view_sticker_toast.cpp
history/view/history_view_sticker_toast.h
history/view/history_view_sublist_section.cpp
history/view/history_view_sublist_section.h
history/view/history_view_subsection_tabs.cpp
history/view/history_view_subsection_tabs.h
history/view/history_view_text_helper.cpp
history/view/history_view_text_helper.h
history/view/history_view_transcribe_button.cpp
@@ -1001,6 +1030,8 @@ PRIVATE
history/history_unread_things.h
history/history_view_highlight_manager.cpp
history/history_view_highlight_manager.h
history/history_view_swipe_back_session.cpp
history/history_view_swipe_back_session.h
history/history_widget.cpp
history/history_widget.h
info/bot/earn/info_bot_earn_list.cpp
@@ -1155,6 +1186,8 @@ PRIVATE
inline_bots/inline_bot_result.h
inline_bots/inline_bot_send_data.cpp
inline_bots/inline_bot_send_data.h
inline_bots/inline_bot_storage.cpp
inline_bots/inline_bot_storage.h
inline_bots/inline_results_inner.cpp
inline_bots/inline_results_inner.h
inline_bots/inline_results_widget.cpp
@@ -1501,12 +1534,18 @@ PRIVATE
settings/cloud_password/settings_cloud_password_hint.h
settings/cloud_password/settings_cloud_password_input.cpp
settings/cloud_password/settings_cloud_password_input.h
settings/cloud_password/settings_cloud_password_login_email.cpp
settings/cloud_password/settings_cloud_password_login_email.h
settings/cloud_password/settings_cloud_password_login_email_confirm.cpp
settings/cloud_password/settings_cloud_password_login_email_confirm.h
settings/cloud_password/settings_cloud_password_manage.cpp
settings/cloud_password/settings_cloud_password_manage.h
settings/cloud_password/settings_cloud_password_start.cpp
settings/cloud_password/settings_cloud_password_start.h
settings/cloud_password/settings_cloud_password_step.cpp
settings/cloud_password/settings_cloud_password_step.h
settings/cloud_password/settings_cloud_password_validate_icon.cpp
settings/cloud_password/settings_cloud_password_validate_icon.h
settings/settings_active_sessions.cpp
settings/settings_active_sessions.h
settings/settings_advanced.cpp
@@ -1612,6 +1651,8 @@ PRIVATE
support/support_preload.h
support/support_templates.cpp
support/support_templates.h
tde2e/tde2e_integration.cpp
tde2e/tde2e_integration.h
ui/boxes/edit_invite_link_session.cpp
ui/boxes/edit_invite_link_session.h
ui/boxes/peer_qr_box.cpp
@@ -1808,6 +1849,10 @@ if (WIN32)
# COMMENT
# $<IF:${release},"Appending compatibility manifest.","Finalizing build.">
# )
if (QT_VERSION LESS 6)
target_link_libraries(Telegram PRIVATE desktop-app::win_directx_helper)
endif()
elseif (APPLE)
if (NOT DESKTOP_APP_USE_PACKAGED)
target_link_libraries(Telegram PRIVATE desktop-app::external_iconv)
@@ -1921,11 +1966,7 @@ else()
set(bundle_identifier "one.ayugram.AyuGramDesktop")
endif()
set(bundle_entitlements "Telegram.entitlements")
if (LINUX AND DESKTOP_APP_USE_PACKAGED)
set(output_name "ayugram-desktop")
else()
set(output_name "AyuGram")
endif()
set(output_name "AyuGram")
endif()
if (CMAKE_GENERATOR STREQUAL Xcode)
@@ -1967,8 +2008,9 @@ PRIVATE
G_LOG_DOMAIN="Telegram"
)
get_property(is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
if (APPLE
OR "${CMAKE_GENERATOR}" STREQUAL "Ninja Multi-Config"
OR is_multi_config
OR NOT CMAKE_EXECUTABLE_SUFFIX STREQUAL ""
OR NOT "${output_name}" STREQUAL "AyuGram")
set(output_folder ${CMAKE_BINARY_DIR})
@@ -1991,6 +2033,7 @@ if (MSVC)
/DELAYLOAD:user32.dll
/DELAYLOAD:gdi32.dll
/DELAYLOAD:advapi32.dll
/DELAYLOAD:avrt.dll
/DELAYLOAD:shell32.dll
/DELAYLOAD:ole32.dll
/DELAYLOAD:oleaut32.dll
@@ -2119,6 +2162,10 @@ if (NOT DESKTOP_APP_DISABLE_AUTOUPDATE AND NOT build_macstore AND NOT build_wins
desktop-app::external_openssl
)
if (DESKTOP_APP_USE_PACKAGED)
target_compile_definitions(Packer PRIVATE PACKER_USE_PACKAGED)
endif()
set_target_properties(Packer PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${output_folder})
endif()
elseif (build_winstore)
@@ -2143,14 +2190,16 @@ if (LINUX AND DESKTOP_APP_USE_PACKAGED)
configure_file("../lib/xdg/com.ayugram.desktop.metainfo.xml" "${CMAKE_CURRENT_BINARY_DIR}/com.ayugram.desktop.metainfo.xml" @ONLY)
generate_appdata_changelog(Telegram "${CMAKE_SOURCE_DIR}/changelog.txt" "${CMAKE_CURRENT_BINARY_DIR}/com.ayugram.desktop.metainfo.xml")
install(TARGETS Telegram RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}")
install(FILES "Resources/art/icon16.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/16x16/apps" RENAME "ayugram.png")
install(FILES "Resources/art/icon32.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/32x32/apps" RENAME "ayugram.png")
install(FILES "Resources/art/icon48.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/48x48/apps" RENAME "ayugram.png")
install(FILES "Resources/art/icon64.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/64x64/apps" RENAME "ayugram.png")
install(FILES "Resources/art/icon128.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/128x128/apps" RENAME "ayugram.png")
install(FILES "Resources/art/icon256.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/256x256/apps" RENAME "ayugram.png")
install(FILES "Resources/art/icon512.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/512x512/apps" RENAME "ayugram.png")
install(FILES "Resources/icons/tray_monochrome.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/symbolic/apps" RENAME "ayugram-symbolic.svg")
install(FILES "Resources/art/icon16.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/16x16/apps" RENAME "com.ayugram.desktop.png")
install(FILES "Resources/art/icon32.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/32x32/apps" RENAME "com.ayugram.desktop.png")
install(FILES "Resources/art/icon48.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/48x48/apps" RENAME "com.ayugram.desktop.png")
install(FILES "Resources/art/icon64.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/64x64/apps" RENAME "com.ayugram.desktop.png")
install(FILES "Resources/art/icon128.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/128x128/apps" RENAME "com.ayugram.desktop.png")
install(FILES "Resources/art/icon256.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/256x256/apps" RENAME "com.ayugram.desktop.png")
install(FILES "Resources/art/icon512.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/512x512/apps" RENAME "com.ayugram.desktop.png")
install(FILES "Resources/icons/tray_monochrome.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/symbolic/apps" RENAME "com.ayugram.desktop-symbolic.svg")
install(FILES "Resources/icons/tray_monochrome_attention.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/symbolic/apps" RENAME "com.ayugram.desktop-attention-symbolic.svg")
install(FILES "Resources/icons/tray_monochrome_mute.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/symbolic/apps" RENAME "com.ayugram.desktop-mute-symbolic.svg")
install(FILES "../lib/xdg/com.ayugram.desktop.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications")
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/com.ayugram.desktop.service" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/dbus-1/services")
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/com.ayugram.desktop.metainfo.xml" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo")
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 721 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 529 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 956 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 679 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Icon / Input / input_paid</title>
<g id="Icon-/-Input-/-input_paid" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M20,9.8 C25.6299826,9.8 30.2,14.2730045 30.2,19.7983329 C30.2,25.3236612 25.6299826,29.7966657 20,29.7966657 C18.7457032,29.7966657 17.522531,29.57429 16.3765194,29.1472418 L16.049,29.018 L15.8675895,29.1274403 L15.6273764,29.2612632 C14.545782,29.8404011 13.0955737,30.1473058 11.2731839,30.1996583 C10.8153842,30.2127839 10.4336239,29.8523042 10.4204985,29.3945045 C10.4177264,29.2978179 10.4318913,29.2013918 10.4663408,29.0979123 C10.9468917,27.7307176 11.2958938,26.5818971 11.5130707,25.6565167 L11.566,25.42 L11.5361505,25.3785138 C10.4824637,23.8473989 9.87852612,22.0565089 9.80714989,20.1756532 L9.8,19.7983329 C9.8,14.2730045 14.3700174,9.8 20,9.8 Z M20,11.2 C15.1365724,11.2 11.2,15.0530063 11.2,19.7983329 C11.2,21.6384229 11.7922255,23.3893508 12.8759186,24.8453165 L13.0610907,25.0940992 L13.001223,25.3983974 C12.8243697,26.2973155 12.5137714,27.4099145 12.0719423,28.73207 L12.064,28.754 L12.2244984,28.7405395 C13.2682683,28.6413859 14.1190062,28.4334572 14.7754263,28.1231964 L14.9665215,28.0270547 C15.164827,27.9208723 15.3780604,27.7932923 15.605736,27.6441968 L15.9287098,27.4326945 L16.2799121,27.5930136 C17.4341359,28.1199012 18.6962936,28.3966657 20,28.3966657 C24.8634276,28.3966657 28.8,24.5436594 28.8,19.7983329 C28.8,15.0530063 24.8634276,11.2 20,11.2 Z" id="Shape---" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M20.2258661,25.6815247 C20.5071894,25.6815247 20.874026,25.4574745 20.874026,25.0631159 L20.874026,24.4093038 C22.5557139,24.2186972 23.4454545,23.1802196 23.4454545,21.6685117 C23.4454545,20.3671283 22.7015108,19.5784112 21.1573587,19.2234884 L19.8882782,18.9211469 C19.0943214,18.7371128 18.7067205,18.3558996 18.7067205,17.7972249 C18.7067205,17.1268153 19.2568638,16.6404397 20.1195884,16.6404397 C20.8197708,16.6404397 21.3073978,16.8902001 21.8512894,17.5277465 C22.126361,17.8300881 22.3389164,17.941823 22.6264913,17.941823 C22.9765824,17.941823 23.2454024,17.68549 23.2454024,17.3042767 C23.2454024,16.9362087 23.0390987,16.5352774 22.6890076,16.1737821 C22.2263871,15.713697 21.7022327,15.4113555 20.9207792,15.3061932 L20.9207792,14.6509738 C20.9207792,14.2631879 20.5009377,13.9363049 20.2133629,13.9363049 C19.9320396,13.9363049 19.5493506,14.2566152 19.5493506,14.6509738 L19.5493506,15.2864752 C17.930179,15.4442187 17.0312842,16.4629784 17.0312842,17.9221051 C17.0312842,19.1971979 17.7752279,20.0450688 19.2005991,20.3802736 L20.4696796,20.6891878 C21.3949206,20.9192303 21.7762699,21.2610078 21.7762699,21.8394004 C21.7762699,22.5886817 21.219875,23.061912 20.2258661,23.061912 C19.4819224,23.061912 18.8630112,22.766143 18.3003647,22.1285967 C17.9815316,21.7933919 17.8064861,21.7210928 17.5689242,21.7210928 C17.1875749,21.7210928 16.9,21.9774259 16.9,22.417793 C16.9,22.8055789 17.1125554,23.2065101 17.4939047,23.5548602 C17.9940349,24.0346632 18.7115432,24.3238594 19.5805195,24.4093038 L19.5805195,25.0565432 C19.5805195,25.4509018 19.9382912,25.6815247 20.2258661,25.6815247 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Icon / Filled / paid_approve</title>
<g id="Icon-/-Filled-/-paid_approve" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M12,4.5 C16.14,4.5 19.5,7.86 19.5,12 C19.5,16.14 16.14,19.5 12,19.5 C7.86,19.5 4.5,16.14 4.5,12 C4.5,7.86 7.86,4.5 12,4.5 Z M15.7577636,9.89127556 C15.4992394,9.62810439 15.0763217,9.62433727 14.8131506,9.88286145 L10.7479688,13.8761719 L9.18684944,12.3424898 C8.92367827,12.0839656 8.50076063,12.0877327 8.24223645,12.3509039 C7.98371227,12.6140751 7.98747939,13.0369927 8.25065056,13.2955169 L10.204967,15.2153247 C10.5064723,15.5115061 10.9896874,15.5115061 11.2911927,15.2153247 L15.7493494,10.8358886 C16.0125206,10.5773644 16.0162877,10.1544467 15.7577636,9.89127556 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 999 B

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Icon / Filled / paid_decline</title>
<g id="Icon-/-Filled-/-paid_decline" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M12,4.5 C16.1421356,4.5 19.5,7.85786438 19.5,12 C19.5,16.1421356 16.1421356,19.5 12,19.5 C7.85786438,19.5 4.5,16.1421356 4.5,12 C4.5,7.85786438 7.85786438,4.5 12,4.5 Z M9.73375908,8.63964245 C9.43162712,8.33751049 8.94177442,8.33751049 8.63964245,8.63964245 L8.59853606,8.68404063 C8.33819559,8.98800138 8.35189772,9.44601435 8.63964245,9.73375908 L10.9059783,12 L8.63964245,14.2662409 C8.33751049,14.5683729 8.33751049,15.0582256 8.63964245,15.3603575 L8.68404063,15.4014639 C8.98800138,15.6618044 9.44601435,15.6481023 9.73375908,15.3603575 L12,13.0936701 L14.2662409,15.3603575 C14.5683729,15.6624895 15.0582256,15.6624895 15.3603575,15.3603575 L15.4014639,15.3159594 C15.6618044,15.0119986 15.6481023,14.5539856 15.3603575,14.2662409 L13.0936701,12 L15.3603575,9.73375908 C15.6624895,9.43162712 15.6624895,8.94177442 15.3603575,8.63964245 L15.3159594,8.59853606 C15.0119986,8.33819559 14.5539856,8.35189772 14.2662409,8.63964245 L12,10.9059783 L9.73375908,8.63964245 Z" id="Shape" fill="#FFFFFF"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Icon / Filled / paid_edit</title>
<g id="Icon-/-Filled-/-paid_edit" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M13.5029106,7.64699152 C13.6056531,7.5472623 13.7697888,7.549705 13.869518,7.65244745 L16.2610253,10.1162122 C16.3593492,10.2175069 16.3585592,10.3788499 16.259248,10.4791768 L7.97687653,18.8462593 C7.87948817,18.9446437 7.74680196,19 7.6083679,19 L5.51851849,19 C5.23214864,19 5,18.7678513 5,18.4814815 L5,16.3683223 C5,16.2308422 5.05459809,16.0989896 5.15178971,16.0017551 L13.5029106,7.64699152 Z M16.0299869,5.19856593 C16.3408365,4.91998643 16.8161619,4.93645109 17.1069903,5.23587194 L18.7801411,6.95845528 C19.073802,7.26079221 19.0732123,7.74202152 18.7788114,8.04363789 L17.6449122,9.20518682 C17.5421105,9.3048549 17.3779763,9.30231456 17.2783082,9.19951281 L14.8031149,6.64621027 C14.707554,6.53957983 14.7165277,6.3756714 14.8231582,6.28011055 L16.0299869,5.19856593 Z" id="Shape" fill="#FFFFFF"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 865 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 630 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1015 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 680 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 813 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 675 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 930 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 889 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 574 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1016 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 472 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Mini / mini_gift_sorting2</title>
<g id="Mini-/-mini_gift_sorting2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M39.7913043,28.3413043 C40.9234881,28.3413043 41.8413043,29.2591206 41.8413043,30.3913043 L41.8413043,45 C41.8413043,46.1321837 40.9234881,47.05 39.7913043,47.05 C38.6591206,47.05 37.7413043,46.1321837 37.7413043,45 L37.7413043,30.3913043 C37.7413043,29.2591206 38.6591206,28.3413043 39.7913043,28.3413043 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M32.1330398,38.0495689 C32.9336146,38.8501437 34.2316028,38.8501437 35.0321776,38.0495689 L39.7906087,33.291 L44.5504311,38.0495689 C45.3088704,38.8080082 46.5137416,38.847926 47.3191738,38.1693225 L47.4495689,38.0495689 C48.2501437,37.2489941 48.2501437,35.9510059 47.4495689,35.1504311 L41.7573686,29.4582308 C40.6715413,28.3724035 38.9110674,28.3724035 37.8252401,29.4582308 L32.1330398,35.1504311 C31.332465,35.9510059 31.332465,37.2489941 32.1330398,38.0495689 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M36.5217391,5.3326087 C40.4153466,5.3326087 43.5717391,8.48900121 43.5717391,12.3826087 L43.5717391,21.7217391 C43.5717391,22.8539229 42.6539229,23.7717391 41.5217391,23.7717391 C40.3895554,23.7717391 39.4717391,22.8539229 39.4717391,21.7217391 L39.4717391,12.3826087 C39.4717391,10.7533687 38.1509791,9.4326087 36.5217391,9.4326087 L10,9.4326087 C8.37075999,9.4326087 7.05,10.7533687 7.05,12.3826087 L7.05,35.9826087 C7.05,37.6118487 8.37075999,38.9326087 10,38.9326087 L27.373913,38.9326087 C28.5060968,38.9326087 29.423913,39.850425 29.423913,40.9826087 C29.423913,42.1147924 28.5060968,43.0326087 27.373913,43.0326087 L10,43.0326087 C6.10639251,43.0326087 2.95,39.8762162 2.95,35.9826087 L2.95,12.3826087 C2.95,8.48900121 6.10639251,5.3326087 10,5.3326087 L36.5217391,5.3326087 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<polygon id="Path" fill="#FFFFFF" fill-rule="nonzero" points="6.09565217 20.3891304 40.426087 20.3891304 40.426087 16.2891304 6.09565217 16.2891304"></polygon>
<path d="M11.8434783,0.95 C12.975662,0.95 13.8934783,1.86781626 13.8934783,3 L13.8934783,6.65217391 C13.8934783,7.78435765 12.975662,8.70217391 11.8434783,8.70217391 C10.7112945,8.70217391 9.79347826,7.78435765 9.79347826,6.65217391 L9.79347826,3 C9.79347826,1.86781626 10.7112945,0.95 11.8434783,0.95 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M34.6782609,0.95 C35.8104446,0.95 36.7282609,1.86781626 36.7282609,3 L36.7282609,6.65217391 C36.7282609,7.78435765 35.8104446,8.70217391 34.6782609,8.70217391 C33.5460771,8.70217391 32.6282609,7.78435765 32.6282609,6.65217391 L32.6282609,3 C32.6282609,1.86781626 33.5460771,0.95 34.6782609,0.95 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Mini / mini_gift_sorting3</title>
<g id="Mini-/-mini_gift_sorting3" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M34.4778761,13.749192 C35.6376741,13.749192 36.5778761,14.689394 36.5778761,15.849192 C36.5778761,17.00899 35.6376741,17.949192 34.4778761,17.949192 L7.57258674,17.949192 C6.41278876,17.949192 5.47258674,17.00899 5.47258674,15.849192 C5.47258674,14.689394 6.41278876,13.749192 7.57258674,13.749192 L34.4778761,13.749192 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M30.923367,27.509546 C32.083165,27.509546 33.023367,28.4497481 33.023367,29.609546 C33.023367,30.769344 32.083165,31.709546 30.923367,31.709546 L4,31.709546 C2.84020203,31.709546 1.9,30.769344 1.9,29.609546 C1.9,28.4497481 2.84020203,27.509546 4,27.509546 L30.923367,27.509546 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M14.7584617,4.53380965 C15.0159315,3.40295129 16.1413939,2.69492999 17.2722522,2.9523998 C18.4031106,3.20986962 19.1111319,4.33533198 18.8536621,5.46619035 L10.9056841,40.3752813 C10.6482143,41.5061396 9.52275197,42.2141609 8.39189361,41.9566911 C7.26103524,41.6992213 6.55301394,40.5737589 6.81048375,39.4429006 L14.7584617,4.53380965 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M28.1811642,4.55038432 C28.4294801,3.41748072 29.5491797,2.70038069 30.6820833,2.94869657 C31.8149869,3.19701246 32.532087,4.31671208 32.2837711,5.44961568 L24.6322095,40.3587066 C24.3838936,41.4916102 23.264194,42.2087102 22.1312904,41.9603943 C20.9983868,41.7120785 20.2812868,40.5923788 20.5296027,39.4594752 L28.1811642,4.55038432 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M39.7913043,28.3413043 C40.9234881,28.3413043 41.8413043,29.2591206 41.8413043,30.3913043 L41.8413043,45 C41.8413043,46.1321837 40.9234881,47.05 39.7913043,47.05 C38.6591206,47.05 37.7413043,46.1321837 37.7413043,45 L37.7413043,30.3913043 C37.7413043,29.2591206 38.6591206,28.3413043 39.7913043,28.3413043 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M32.1330398,38.0495689 C32.9336146,38.8501437 34.2316028,38.8501437 35.0321776,38.0495689 L39.7906087,33.291 L44.5504311,38.0495689 C45.3088704,38.8080082 46.5137416,38.847926 47.3191738,38.1693225 L47.4495689,38.0495689 C48.2501437,37.2489941 48.2501437,35.9510059 47.4495689,35.1504311 L41.7573686,29.4582308 C40.6715413,28.3724035 38.9110674,28.3724035 37.8252401,29.4582308 L32.1330398,35.1504311 C31.332465,35.9510059 31.332465,37.2489941 32.1330398,38.0495689 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Mini / mini_gift_sorting1</title>
<g id="Mini-/-mini_gift_sorting1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M23.4380165,1.95 C35.3025073,1.95 44.9260331,11.510317 44.9260331,23.3103448 C44.9260331,23.5919731 44.9205389,23.8730129 44.9095753,24.1533571 C44.8653322,25.2846761 43.9123508,26.1659251 42.7810319,26.121682 C41.6497129,26.0774389 40.7684638,25.1244576 40.812707,23.9931386 C40.8215831,23.7661706 40.8260331,23.5385471 40.8260331,23.3103448 C40.8260331,13.7807547 33.0441659,6.05 23.4380165,6.05 C13.8318671,6.05 6.05,13.7807547 6.05,23.3103448 C6.05,32.839935 13.8318671,40.5706897 23.4380165,40.5706897 C25.2657432,40.5706897 27.0529516,40.2914087 28.7555206,39.7492213 C29.8343232,39.4056738 30.9873658,40.0017158 31.3309133,41.0805185 C31.6744608,42.1593211 31.0784187,43.3123637 29.9996161,43.6559112 C27.8959061,44.3258431 25.6891219,44.6706897 23.4380165,44.6706897 C11.5735257,44.6706897 1.95,35.1103726 1.95,23.3103448 C1.95,11.510317 11.5735257,1.95 23.4380165,1.95 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M39.7913043,28.3413043 C40.9234881,28.3413043 41.8413043,29.2591206 41.8413043,30.3913043 L41.8413043,45 C41.8413043,46.1321837 40.9234881,47.05 39.7913043,47.05 C38.6591206,47.05 37.7413043,46.1321837 37.7413043,45 L37.7413043,30.3913043 C37.7413043,29.2591206 38.6591206,28.3413043 39.7913043,28.3413043 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M32.1330398,38.0495689 C32.9336146,38.8501437 34.2316028,38.8501437 35.0321776,38.0495689 L39.7906087,33.291 L44.5504311,38.0495689 C45.3088704,38.8080082 46.5137416,38.847926 47.3191738,38.1693225 L47.4495689,38.0495689 C48.2501437,37.2489941 48.2501437,35.9510059 47.4495689,35.1504311 L41.7573686,29.4582308 C40.6715413,28.3724035 38.9110674,28.3724035 37.8252401,29.4582308 L32.1330398,35.1504311 C31.332465,35.9510059 31.332465,37.2489941 32.1330398,38.0495689 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M23.8366211,35.9195313 C24.4958008,35.9195313 25.281738,35.5533203 25.281738,34.6744141 L25.281738,33.5025391 C29.2221677,33.0777344 31.4831055,30.7632813 31.4831055,27.3941406 C31.4831055,24.49375 29.7399414,22.7359375 26.1217773,21.9449219 L23.1481445,21.2710938 C21.287793,20.8609375 20.3795898,20.0113281 20.3795898,18.7662109 C20.3795898,17.2720703 21.6686523,16.1880859 23.6901367,16.1880859 C25.3307617,16.1880859 26.4733398,16.7447266 27.7477539,18.165625 C28.3922852,18.8394531 28.890332,19.0884766 29.5641602,19.0884766 C30.3844727,19.0884766 31.0143555,18.5171875 31.0143555,17.6675781 C31.0143555,16.8472656 30.530957,15.9537109 29.7106445,15.1480469 C28.6266602,14.1226563 27.2006837,13.4488281 25.369629,13.2144531 L25.369629,11.9986328 C25.369629,11.134375 24.5836914,10.7681641 23.9098633,10.7681641 C23.2506836,10.7681641 22.464746,11.1197266 22.464746,11.9986328 L22.464746,13.1705078 C18.6708007,13.5220703 16.4538086,15.7925781 16.4538086,19.0445313 C16.4538086,21.8863281 18.1969727,23.7759766 21.5368164,24.5230469 L24.5104492,25.2115234 C26.678418,25.7242188 27.5719727,26.4859375 27.5719727,27.775 C27.5719727,29.4449219 26.2682617,30.4996094 23.9391602,30.4996094 C22.1959961,30.4996094 20.7458008,29.8404297 19.4274414,28.4195313 C18.6803711,27.6724609 18.2702148,27.5113281 17.7135742,27.5113281 C16.8200195,27.5113281 16.1461914,28.0826172 16.1461914,29.0640625 C16.1461914,29.9283203 16.6442383,30.821875 17.537793,31.5982422 C18.709668,32.6675781 20.3407222,33.3267578 22.376855,33.5171875 L22.376855,34.6744141 C22.376855,35.5533203 23.162793,35.9195313 23.8366211,35.9195313 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Icon / Filled / checklist</title>
<g id="Icon-/-Filled-/-checklist" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M12,4 C16.416,4 20,7.584 20,12 C20,16.416 16.416,20 12,20 C7.584,20 4,16.416 4,12 C4,7.584 7.584,4 12,4 Z M16.4818432,9.54348643 C16.1872637,9.22288416 15.7053635,9.21829494 15.4054889,9.53323613 L10.7733532,14.3979954 L8.99451107,12.5296222 C8.69463652,12.2146811 8.21273632,12.2192703 7.91815685,12.5398725 C7.62357737,12.8604748 7.62786989,13.3756846 7.92774444,13.6906258 L10.1546212,16.0293878 C10.4981762,16.3902041 11.0487833,16.3902041 11.3923383,16.0293878 L16.4722556,10.6942397 C16.7721301,10.3792985 16.7764226,9.8640887 16.4818432,9.54348643 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 975 B

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="plane" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M1.3311718,6.36592184 C5.3576954,4.67244493 8.04267511,3.5560013 9.38611094,3.01659096 C13.2218932,1.47646481 14.0189359,1.2089284 14.5384372,1.2 C14.6526967,1.19815119 14.9081723,1.22548649 15.0736587,1.35511219 C15.2133922,1.4645656 15.2518384,1.61242159 15.2702362,1.71619544 C15.288634,1.81996929 15.3115436,2.05636876 15.2933322,2.24108442 C15.0854698,4.34939964 14.1860526,9.46572464 13.7284802,11.8270738 C13.5348641,12.8262491 13.1536281,13.1612675 12.7845475,13.1940535 C11.9824498,13.265305 11.3733733,12.6823476 10.5965026,12.190753 C9.3808532,11.4215044 8.69408865,10.9426448 7.51409044,10.1920004 C6.15039834,9.32450079 7.03442319,8.84770795 7.81158733,8.06849502 C8.01497489,7.86457129 11.5490353,4.7615061 11.6174372,4.48000946 C11.625992,4.44480359 11.6339313,4.31357282 11.5531696,4.24427815 C11.472408,4.17498349 11.3532107,4.19867957 11.2671947,4.21752527 C11.1452695,4.24423848 9.20325394,5.48334063 5.44114787,7.93483171 C4.88991321,8.30022994 4.39062196,8.47826423 3.94327414,8.46893456 C3.45010907,8.45864936 2.50145729,8.19975808 1.79623221,7.97846422 C0.931244952,7.70703829 0.243770289,7.56353344 0.303633888,7.10256824 C0.334814555,6.86246904 0.677327192,6.61692024 1.3311718,6.36592184 Z" id="Path-3" fill="#FFFFFF"></path>
</g>
<circle class="error" fill="#f23c34" cx="3.9" cy="12.7" r="2.2"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="plane" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M1.3311718,6.36592184 C5.3576954,4.67244493 8.04267511,3.5560013 9.38611094,3.01659096 C13.2218932,1.47646481 14.0189359,1.2089284 14.5384372,1.2 C14.6526967,1.19815119 14.9081723,1.22548649 15.0736587,1.35511219 C15.2133922,1.4645656 15.2518384,1.61242159 15.2702362,1.71619544 C15.288634,1.81996929 15.3115436,2.05636876 15.2933322,2.24108442 C15.0854698,4.34939964 14.1860526,9.46572464 13.7284802,11.8270738 C13.5348641,12.8262491 13.1536281,13.1612675 12.7845475,13.1940535 C11.9824498,13.265305 11.3733733,12.6823476 10.5965026,12.190753 C9.3808532,11.4215044 8.69408865,10.9426448 7.51409044,10.1920004 C6.15039834,9.32450079 7.03442319,8.84770795 7.81158733,8.06849502 C8.01497489,7.86457129 11.5490353,4.7615061 11.6174372,4.48000946 C11.625992,4.44480359 11.6339313,4.31357282 11.5531696,4.24427815 C11.472408,4.17498349 11.3532107,4.19867957 11.2671947,4.21752527 C11.1452695,4.24423848 9.20325394,5.48334063 5.44114787,7.93483171 C4.88991321,8.30022994 4.39062196,8.47826423 3.94327414,8.46893456 C3.45010907,8.45864936 2.50145729,8.19975808 1.79623221,7.97846422 C0.931244952,7.70703829 0.243770289,7.56353344 0.303633888,7.10256824 C0.334814555,6.86246904 0.677327192,6.61692024 1.3311718,6.36592184 Z" id="Path-3" fill="#FFFFFF"></path>
</g>
<circle fill="#888888" cx="3.9" cy="12.7" r="2.2"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

+72 -6
View File
@@ -16,7 +16,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"cloud_lng_passport_in_ar" = "Arabic";
"cloud_lng_passport_in_az" = "Azerbaijani";
"cloud_lng_passport_in_bg" = "Bulgarian";
"cloud_lng_passport_in_bn" = "Bangla";
"cloud_lng_passport_in_bn" = "Bengali";
"cloud_lng_passport_in_cs" = "Czech";
"cloud_lng_passport_in_da" = "Danish";
"cloud_lng_passport_in_de" = "German";
@@ -64,7 +64,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"cloud_lng_translate_to_ar" = "Arabic";
"cloud_lng_translate_to_az" = "Azerbaijani";
"cloud_lng_translate_to_bg" = "Bulgarian";
// "cloud_lng_translate_to_bn" = "Bangla";
// "cloud_lng_translate_to_bn" = "Bengali";
"cloud_lng_translate_to_cs" = "Czech";
"cloud_lng_translate_to_da" = "Danish";
"cloud_lng_translate_to_de" = "German";
@@ -109,50 +109,116 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"cloud_lng_translate_to_uz" = "Uzbek";
"cloud_lng_translate_to_vi" = "Vietnamese";
"cloud_lng_language_af" = "Afrikaans";
"cloud_lng_language_am" = "Amharic";
"cloud_lng_language_ar" = "Arabic";
"cloud_lng_language_az" = "Azerbaijani";
"cloud_lng_language_be" = "Belarusian";
"cloud_lng_language_bg" = "Bulgarian";
// "cloud_lng_language_bn" = "Bangla";
"cloud_lng_language_bn" = "Bengali";
"cloud_lng_language_bs" = "Bosnian";
"cloud_lng_language_ca" = "Catalan";
// "cloud_lng_language_ceb" = "Cebuano";
"cloud_lng_language_co" = "Corsican";
"cloud_lng_language_cs" = "Czech";
"cloud_lng_language_cy" = "Welsh";
"cloud_lng_language_da" = "Danish";
"cloud_lng_language_de" = "German";
// "cloud_lng_language_dv" = "Divehi";
// "cloud_lng_language_dz" = "Dzongkha";
"cloud_lng_language_dv" = "Divehi";
"cloud_lng_language_dz" = "Dzongkha";
"cloud_lng_language_el" = "Greek";
"cloud_lng_language_en" = "English";
"cloud_lng_language_eo" = "Esperanto";
"cloud_lng_language_es" = "Spanish";
"cloud_lng_language_et" = "Estonian";
"cloud_lng_language_eu" = "Basque";
"cloud_lng_language_fa" = "Persian";
"cloud_lng_language_fi" = "Finnish";
"cloud_lng_language_fr" = "French";
"cloud_lng_language_fy" = "Frisian";
"cloud_lng_language_ga" = "Irish";
"cloud_lng_language_gd" = "Scots Gaelic";
"cloud_lng_language_gl" = "Galician";
"cloud_lng_language_gu" = "Gujarati";
"cloud_lng_language_ha" = "Hausa";
"cloud_lng_language_haw" = "Hawaiian";
"cloud_lng_language_he" = "Hebrew";
"cloud_lng_language_hi" = "Hindi";
// "cloud_lng_language_hmn" = "Hmong";
"cloud_lng_language_hr" = "Croatian";
"cloud_lng_language_ht" = "Haitian Creole";
"cloud_lng_language_hu" = "Hungarian";
"cloud_lng_language_hy" = "Armenian";
"cloud_lng_language_id" = "Indonesian";
"cloud_lng_language_ig" = "Igbo";
"cloud_lng_language_is" = "Icelandic";
"cloud_lng_language_it" = "Italian";
"cloud_lng_language_iw" = "Hebrew (Obsolete code)";
"cloud_lng_language_ja" = "Japanese";
"cloud_lng_language_jv" = "Javanese";
"cloud_lng_language_ka" = "Georgian";
// "cloud_lng_language_km" = "Khmer";
"cloud_lng_language_kk" = "Kazakh";
"cloud_lng_language_km" = "Khmer";
"cloud_lng_language_kn" = "Kannada";
"cloud_lng_language_ko" = "Korean";
"cloud_lng_language_ku" = "Kurdish";
"cloud_lng_language_ky" = "Kyrgyz";
"cloud_lng_language_la" = "Latin";
"cloud_lng_language_lb" = "Luxembourgish";
"cloud_lng_language_lo" = "Lao";
"cloud_lng_language_lt" = "Lithuanian";
"cloud_lng_language_lv" = "Latvian";
"cloud_lng_language_mg" = "Malagasy";
"cloud_lng_language_mi" = "Maori";
"cloud_lng_language_mk" = "Macedonian";
"cloud_lng_language_ml" = "Malayalam";
"cloud_lng_language_mn" = "Mongolian";
"cloud_lng_language_mr" = "Marathi";
"cloud_lng_language_ms" = "Malay";
"cloud_lng_language_mt" = "Maltese";
"cloud_lng_language_my" = "Burmese";
"cloud_lng_language_ne" = "Nepali";
"cloud_lng_language_nl" = "Dutch";
"cloud_lng_language_no" = "Norwegian";
"cloud_lng_language_ny" = "Nyanja";
"cloud_lng_language_or" = "Odia (Oriya)";
"cloud_lng_language_pa" = "Punjabi";
"cloud_lng_language_pl" = "Polish";
"cloud_lng_language_ps" = "Pashto";
"cloud_lng_language_pt" = "Portuguese";
"cloud_lng_language_ro" = "Romanian";
"cloud_lng_language_ru" = "Russian";
"cloud_lng_language_rw" = "Kinyarwanda";
"cloud_lng_language_sd" = "Sindhi";
"cloud_lng_language_si" = "Sinhala";
"cloud_lng_language_sk" = "Slovak";
"cloud_lng_language_sl" = "Slovenian";
"cloud_lng_language_sm" = "Samoan";
"cloud_lng_language_sn" = "Shona";
"cloud_lng_language_so" = "Somali";
"cloud_lng_language_sq" = "Albanian";
"cloud_lng_language_sr" = "Serbian";
"cloud_lng_language_st" = "Sesotho";
"cloud_lng_language_su" = "Sundanese";
"cloud_lng_language_sv" = "Swedish";
"cloud_lng_language_sw" = "Swahili";
"cloud_lng_language_ta" = "Tamil";
"cloud_lng_language_te" = "Telugu";
"cloud_lng_language_tg" = "Tajik";
"cloud_lng_language_th" = "Thai";
"cloud_lng_language_tk" = "Turkmen";
"cloud_lng_language_tl" = "Tagalog";
"cloud_lng_language_tr" = "Turkish";
"cloud_lng_language_tt" = "Tatar";
"cloud_lng_language_ug" = "Uyghur";
"cloud_lng_language_uk" = "Ukrainian";
"cloud_lng_language_ur" = "Urdu";
"cloud_lng_language_uz" = "Uzbek";
"cloud_lng_language_vi" = "Vietnamese";
"cloud_lng_language_xh" = "Xhosa";
"cloud_lng_language_yi" = "Yiddish";
"cloud_lng_language_yo" = "Yoruba";
"cloud_lng_language_zh" = "Chinese";
// "cloud_lng_language_zh-CN" = "Chinese (Simplified)";
// "cloud_lng_language_zh-TW" = "Chinese (Traditional)";
"cloud_lng_language_zu" = "Zulu";
File diff suppressed because it is too large Load Diff
@@ -1,6 +1,7 @@
<RCC>
<qresource prefix="/animations">
<file alias="blocked_peers_empty.tgs">../../animations/blocked_peers_empty.tgs</file>
<file alias="change_number.tgs">../../animations/change_number.tgs</file>
<file alias="filters.tgs">../../animations/filters.tgs</file>
<file alias="cloud_filters.tgs">../../animations/cloud_filters.tgs</file>
<file alias="local_passcode_enter.tgs">../../animations/local_passcode_enter.tgs</file>
@@ -8,6 +9,7 @@
<file alias="cloud_password/password_input.tgs">../../animations/cloud_password/password_input.tgs</file>
<file alias="cloud_password/hint.tgs">../../animations/cloud_password/hint.tgs</file>
<file alias="cloud_password/email.tgs">../../animations/cloud_password/email.tgs</file>
<file alias="cloud_password/validate.tgs">../../animations/cloud_password/validate.tgs</file>
<file alias="ttl.tgs">../../animations/ttl.tgs</file>
<file alias="discussion.tgs">../../animations/discussion.tgs</file>
<file alias="stats.tgs">../../animations/stats.tgs</file>
@@ -24,12 +26,18 @@
<file alias="hours.tgs">../../animations/hours.tgs</file>
<file alias="phone.tgs">../../animations/phone.tgs</file>
<file alias="chat_link.tgs">../../animations/chat_link.tgs</file>
<file alias="diamond.tgs">../../animations/diamond.tgs</file>
<file alias="collectible_username.tgs">../../animations/collectible_username.tgs</file>
<file alias="collectible_phone.tgs">../../animations/collectible_phone.tgs</file>
<file alias="search.tgs">../../animations/search.tgs</file>
<file alias="noresults.tgs">../../animations/noresults.tgs</file>
<file alias="hello_status.tgs">../../animations/hello_status.tgs</file>
<file alias="starref_link.tgs">../../animations/starref_link.tgs</file>
<file alias="media_forbidden.tgs">../../animations/media_forbidden.tgs</file>
<file alias="topics.tgs">../../animations/edit_peers/topics.tgs</file>
<file alias="topics_tabs.tgs">../../animations/edit_peers/topics_tabs.tgs</file>
<file alias="topics_list.tgs">../../animations/edit_peers/topics_list.tgs</file>
<file alias="direct_messages.tgs">../../animations/edit_peers/direct_messages.tgs</file>
<file alias="dice_idle.tgs">../../animations/dice/dice_idle.tgs</file>
<file alias="dart_idle.tgs">../../animations/dice/dart_idle.tgs</file>
@@ -49,5 +57,16 @@
<file alias="star_reaction_effect1.tgs">../../animations/star_reaction/effect1.tgs</file>
<file alias="star_reaction_effect2.tgs">../../animations/star_reaction/effect2.tgs</file>
<file alias="star_reaction_effect3.tgs">../../animations/star_reaction/effect3.tgs</file>
<file alias="swipe_archive.tgs">../../animations/swipe_action/archive.tgs</file>
<file alias="swipe_unarchive.tgs">../../animations/swipe_action/unarchive.tgs</file>
<file alias="swipe_delete.tgs">../../animations/swipe_action/delete.tgs</file>
<file alias="swipe_disabled.tgs">../../animations/swipe_action/disabled.tgs</file>
<file alias="swipe_mute.tgs">../../animations/swipe_action/mute.tgs</file>
<file alias="swipe_unmute.tgs">../../animations/swipe_action/unmute.tgs</file>
<file alias="swipe_pin.tgs">../../animations/swipe_action/pin.tgs</file>
<file alias="swipe_unpin.tgs">../../animations/swipe_action/unpin.tgs</file>
<file alias="swipe_read.tgs">../../animations/swipe_action/read.tgs</file>
<file alias="swipe_unread.tgs">../../animations/swipe_action/unread.tgs</file>
</qresource>
</RCC>
@@ -24,6 +24,8 @@
<file alias="icons/settings/star.svg">../../icons/settings/star.svg</file>
<file alias="icons/settings/starmini.svg">../../icons/settings/starmini.svg</file>
<file alias="icons/tray/monochrome.svg">../../icons/tray_monochrome.svg</file>
<file alias="icons/tray/monochrome_attention.svg">../../icons/tray_monochrome_attention.svg</file>
<file alias="icons/tray/monochrome_mute.svg">../../icons/tray_monochrome_mute.svg</file>
<file alias="topic_icons/blue.svg">../../art/topic_icons/blue.svg</file>
<file alias="topic_icons/yellow.svg">../../art/topic_icons/yellow.svg</file>
<file alias="topic_icons/violet.svg">../../art/topic_icons/violet.svg</file>
+1 -1
View File
@@ -10,7 +10,7 @@
<Identity Name="TelegramMessengerLLP.TelegramDesktop"
ProcessorArchitecture="ARCHITECTURE"
Publisher="CN=536BC709-8EE1-4478-AF22-F0F0F26FF64A"
Version="5.12.3.0" />
Version="5.16.3.0" />
<Properties>
<DisplayName>Telegram Desktop</DisplayName>
<PublisherDisplayName>Telegram Messenger LLP</PublisherDisplayName>
+4 -4
View File
@@ -44,8 +44,8 @@ IDI_ICON1 ICON "..\\art\\icon256.ico"
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 5,12,3,0
PRODUCTVERSION 5,12,3,0
FILEVERSION 5,16,3,0
PRODUCTVERSION 5,16,3,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -62,10 +62,10 @@ BEGIN
BEGIN
VALUE "CompanyName", "Radolyn Labs"
VALUE "FileDescription", "AyuGram Desktop"
VALUE "FileVersion", "5.12.3.0"
VALUE "FileVersion", "5.16.3.0"
VALUE "LegalCopyright", "Copyright (C) 2014-2025"
VALUE "ProductName", "AyuGram Desktop"
VALUE "ProductVersion", "5.12.3.0"
VALUE "ProductVersion", "5.16.3.0"
END
END
BLOCK "VarFileInfo"
+4 -4
View File
@@ -35,8 +35,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 5,12,3,0
PRODUCTVERSION 5,12,3,0
FILEVERSION 5,16,3,0
PRODUCTVERSION 5,16,3,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -53,10 +53,10 @@ BEGIN
BEGIN
VALUE "CompanyName", "Radolyn Labs"
VALUE "FileDescription", "AyuGram Desktop Updater"
VALUE "FileVersion", "5.12.3.0"
VALUE "FileVersion", "5.16.3.0"
VALUE "LegalCopyright", "Copyright (C) 2014-2025"
VALUE "ProductName", "AyuGram Desktop"
VALUE "ProductVersion", "5.12.3.0"
VALUE "ProductVersion", "5.16.3.0"
END
END
BLOCK "VarFileInfo"
+1 -1
View File
@@ -282,7 +282,7 @@ int main(int argc, char *argv[])
cout << "Compression start, size: " << resultSize << "\n";
QByteArray compressed, resultCheck;
#if defined Q_OS_WIN && !defined TDESKTOP_USE_PACKAGED // use Lzma SDK for win
#if defined Q_OS_WIN && !defined PACKER_USE_PACKAGED // use Lzma SDK for win
const int32 hSigLen = 128, hShaLen = 20, hPropsLen = LZMA_PROPS_SIZE, hOriginalSizeLen = sizeof(int32), hSize = hSigLen + hShaLen + hPropsLen + hOriginalSizeLen; // header
compressed.resize(hSize + resultSize + 1024 * 1024); // rsa signature + sha1 + lzma props + max compressed size
+1 -1
View File
@@ -27,7 +27,7 @@ extern "C" {
#include <openssl/evp.h>
} // extern "C"
#if defined Q_OS_WIN && !defined TDESKTOP_USE_PACKAGED // use Lzma SDK for win
#if defined Q_OS_WIN && !defined PACKER_USE_PACKAGED // use Lzma SDK for win
#include <LzmaLib.h>
#else
#include <lzma.h>
@@ -5,6 +5,7 @@ the official desktop application for the Telegram messaging service.
For license and copyright information please follow this link:
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#define _GLIBCXX_USE_CXX11_ABI 0
#include <cstdio>
#include <sys/stat.h>
#include <sys/types.h>
+24
View File
@@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "apiwrap.h"
#include "api/api_cloud_password.h"
#include "api/api_send_progress.h"
#include "api/api_suggest_post.h"
#include "boxes/share_box.h"
#include "boxes/passcode_box.h"
#include "boxes/url_auth_box.h"
@@ -399,10 +400,12 @@ void ActivateBotCommand(ClickHandlerContext context, int row, int column) {
}
}
const auto replyTo = FullReplyTo();
const auto suggest = SuggestPostOptions();
Window::PeerMenuCreatePoll(
controller,
item->history()->peer,
replyTo,
suggest,
chosen,
disabled);
} break;
@@ -519,6 +522,27 @@ void ActivateBotCommand(ClickHandlerContext context, int row, int column) {
controller->showToast(tr::lng_text_copied(tr::now));
}
} break;
case ButtonType::SuggestAccept: {
Api::AcceptClickHandler(item)->onClick(ClickContext{
Qt::LeftButton,
QVariant::fromValue(context),
});
} break;
case ButtonType::SuggestDecline: {
Api::DeclineClickHandler(item)->onClick(ClickContext{
Qt::LeftButton,
QVariant::fromValue(context),
});
} break;
case ButtonType::SuggestChange: {
Api::SuggestChangesClickHandler(item)->onClick(ClickContext{
Qt::LeftButton,
QVariant::fromValue(context),
});
} break;
}
}
@@ -256,6 +256,7 @@ void ConfirmSubscriptionBox(
{
const auto balance = Settings::AddBalanceWidget(
content,
session,
session->credits().balanceValue(),
true);
session->credits().load(true);
@@ -436,6 +437,12 @@ void CheckChatInvite(
}
});
}, [=](const MTP::Error &error) {
if (MTP::IsFloodError(error)) {
if (const auto strong = weak.get()) {
strong->show(Ui::MakeInformBox(tr::lng_flood_error()));
}
return;
}
if (error.code() != 400) {
return;
}
+1 -1
View File
@@ -14,7 +14,7 @@ class ChannelData;
namespace Info::Profile {
class Badge;
enum class BadgeType;
enum class BadgeType : uchar;
} // namespace Info::Profile
namespace Main {
@@ -494,8 +494,15 @@ void ChatParticipants::requestBots(not_null<ChannelData*> channel) {
LOG(("API Error: "
"channels.channelParticipantsNotModified received!"));
});
}).fail([=] {
}).fail([=](const MTP::Error &error) {
_botsRequests.remove(channel);
if (error.type() == u"CHANNEL_MONOFORUM_UNSUPPORTED"_q) {
channel->mgInfo->bots.clear();
channel->mgInfo->botStatus = -1;
channel->session().changes().peerUpdated(
channel,
Data::PeerUpdate::Flag::FullInfo);
}
}).send();
_botsRequests[channel] = requestId;
@@ -648,10 +655,7 @@ void ChatParticipants::Restrict(
channel->session().api().request(MTPchannels_EditBanned(
channel->inputChannel,
participant->input,
MTP_chatBannedRights(
MTP_flags(MTPDchatBannedRights::Flags::from_raw(
uint32(newRights.flags))),
MTP_int(newRights.until))
RestrictionsToMTP(newRights)
)).done([=](const MTPUpdates &result) {
channel->session().api().applyUpdates(result);
channel->applyEditBanned(participant, oldRights, newRights);
@@ -756,10 +760,7 @@ void ChatParticipants::kick(
const auto requestId = _api.request(MTPchannels_EditBanned(
channel->inputChannel,
participant->input,
MTP_chatBannedRights(
MTP_flags(
MTPDchatBannedRights::Flags::from_raw(uint32(rights.flags))),
MTP_int(rights.until))
RestrictionsToMTP(rights)
)).done([=](const MTPUpdates &result) {
channel->session().api().applyUpdates(result);
@@ -544,4 +544,38 @@ auto CloudPassword::checkRecoveryEmailAddressCode(const QString &code)
};
}
void RequestLoginEmailCode(
MTP::Sender &api,
const QString &sendToEmail,
Fn<void(int length, const QString &pattern)> done,
Fn<void(const QString &error)> fail) {
api.request(MTPaccount_SendVerifyEmailCode(
MTP_emailVerifyPurposeLoginChange(),
MTP_string(sendToEmail)
)).done([=](const MTPaccount_SentEmailCode &result) {
done(result.data().vlength().v, qs(result.data().vemail_pattern()));
}).fail([=](const MTP::Error &error) {
fail(error.type());
}).send();
}
void VerifyLoginEmail(
MTP::Sender &api,
const QString &code,
Fn<void()> done,
Fn<void(const QString &error)> fail) {
api.request(MTPaccount_VerifyEmail(
MTP_emailVerifyPurposeLoginChange(),
MTP_emailVerificationCode(MTP_string(code))
)).done([=](const MTPaccount_EmailVerified &result) {
result.match([=](const MTPDaccount_emailVerified &data) {
done();
}, [=](const MTPDaccount_emailVerifiedLogin &data) {
fail(QString());
});
}).fail([=](const MTP::Error &error) {
fail(error.type());
}).send();
}
} // namespace Api

Some files were not shown because too many files have changed in this diff Show More