Commit graph

260 commits

Author SHA1 Message Date
5f63240f2d channels: give getParticipants a stable Hash when read-model versions are missing
cachedParticipants returned a participant page with Hash=0 whenever the
channel_base / channel_participants rows in read_model_versions were never
seeded for a channel (e.g. groups created via messages.createChat). With
Hash=0 the RPC layer can never answer channels.channelParticipantsNotModified,
so a client that polls the member list re-fetches it in a tight loop forever.

Fall back to a deterministic content hash derived from the page itself
(channel id, page key, count, and each member's id/role/status/rank) so an
unchanged member list yields an identical non-zero Hash and the client
converges. The read-model-backed path is unchanged.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 12:26:30 +01:00
41f65bf0fc forum: fix reply_to_top_id for replies inside a forum
resolveChannelReply applied discussion-thread logic (reply_to_top_id =
the replied-to message's own id) to forum replies. Replying to a General
message produced reply_to_top_id = <that id>, a topic no client can
resolve: the reply vanished from every topic view and reply-jump on
strict clients said "message doesn't exist".

Forum replies now inherit the target's topic via domain.ForumReplyTopicID
(target's topic, or its own id if it's a topic-create, else General), and
General (topic 1) is accepted as a valid virtual topic everywhere, so
sends carrying top_msg_id: 1 are no longer rejected. Non-forum discussion
threads are unchanged.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 11:15:56 +01:00
443ca300b9 forum: let non-members browse a public forum's topic list
ListForumTopics / GetForumTopicsByID / GeneralForumTopic gated on
membership while channel history uses the public-preview path, so a
public forum's topics (General included) were invisible until you joined.
Switch them to getChannelForViewer / channelForViewerLocked; private
forums and write paths keep the membership gate.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 11:15:56 +01:00
f26468ef6d media: never project zero image/video dimensions (crashes Telegram Desktop on reactions) 2026-09-08 16:29:37 +01:00
233a2399e9 welcome message: link @zio with a mention entity 2026-09-08 16:29:37 +01:00
f8aefb7fd5 payments: stub getStarGifts / getSavedStarGifts to stop tdesktop 500 retry storm 2026-09-08 16:29:37 +01:00
8bc54fbfc5 /mybots: Edit Bot summary screen, return-to-menu, clickable @mentions
- Edit Bot now shows the current value of every field (Name/About/
  Description/Botpic/Commands) like BotFather, with real botpic status
  via a new PeerHasAvatar port method.
- After editing a field the dialog lands back on a fresh Edit Bot menu
  (working "Back to bot" / "Bots list" buttons) instead of ending, so a
  follow-up button press no longer reports the button as expired.
- Service-bot messages now render @username as a tappable mention entity.
2026-09-08 13:44:01 +01:00
165f81414c Add @zio channel invite to the sign-in welcome message 2026-09-08 13:31:39 +01:00
11142f74c5 Interactive /mybots menu for @BotFather
Button-driven bot management: paginated picker, per-bot API token /
revoke, Edit Bot (name/description/about/commands/botpic), Bot Settings
toggles (inline/groups/privacy), and delete. Navigation edits the menu
message in place via a new editServiceBotMessage helper.

Edit Botpic accepts a photo the user sends to @BotFather and sets it as
the bot's profile photo (new files.SetAvatarFromExistingPhoto, wired
through bots.SetBotUserpic / WithBotAvatarStore); photos.uploadProfilePhoto
does not accept a bot target so this is the only route.
2026-09-08 13:31:05 +01:00
80e99e8781 Don't 500 on channel sends with an unresolvable @mention
A channel post containing an @token that is not a syntactically valid
username (too short, leading digit, etc.) made messages.sendMessage return
500 INTERNAL_SERVER_ERROR: mentionedUserIDsFromMessage turned every
ResolveUsername error into internalErr().

Skip tokens that fail with ErrUsernameInvalid / ErrUsernameNotOccupied
instead, matching real Telegram (the message sends, the client renders the
mention and only fails to open it on tap). Only unexpected storage errors
still abort. Same fix applied to the bot send path.
2026-09-08 11:42:03 +01:00
onysd
2cfc7a0539 quickfix 2026-08-25 00:51:43 +03:00
onysd
e6a777983c fix 2026-08-25 00:20:05 +03:00
onysd
fe1cf1184f fix 2026-08-25 00:01:59 +03:00
onysd
ed2e61d32a fix 2026-08-24 23:41:58 +03:00
onysd
58a0aed4f3 fix for gifs auto-catigorisation 2026-08-24 23:26:57 +03:00
onysd
d0669bdc5e categorisation for gifs 2026-08-24 23:09:08 +03:00
onysd
5e18bd3830 fix for gif and emojies categories 2026-08-24 22:42:40 +03:00
onysd
78f174018e fix 2026-08-07 11:30:12 +03:00
onysd
4ac94f00de added gifs scan at start 2026-08-07 11:02:05 +03:00
onysd
15f2d6e925 added gifs preview 2026-08-07 10:51:43 +03:00
onysd
ff1d5ae361 fix 2026-08-07 10:13:42 +03:00
onysd
354128c106 added full gifts support 2026-08-07 10:13:11 +03:00
onysd
d16f34070d fix for overview panel 2026-08-07 04:26:56 +03:00
onysd
21d8e91756 removed all "paid" features - no more stars, gifts, or grams 2026-08-07 01:50:10 +03:00
onysd
818c9a58a3 disabling marksbot when third-party verifications if turned off 2026-08-06 15:45:32 +03:00
onysd
2491088e81 added ability to broadcast 2026-08-06 15:22:36 +03:00
onysd
36350f83dc added ability to disable third-party verification 2026-08-06 05:27:48 +03:00
onysd
4f0fa895c1 added avatar for verification bot 2026-08-06 04:39:28 +03:00
onysd
8aad71643f added ability to copy bot token 2026-08-05 22:33:33 +03:00
onysd
0b3c861057 updated bots,channels and supergroups lists and edit screens 2026-08-05 21:49:30 +03:00
onysd
40d49d5e97 added ability to change user info 2026-08-05 21:19:50 +03:00
onysd
45f79148c2 added s3 support 2026-08-05 02:34:24 +03:00
onysd
03f10b66ee s3 support 2026-08-04 23:09:11 +03:00
onysd
fa5cfaf14d changed verifier bot to marksbot 2026-08-04 03:22:46 +03:00
onysd
ac6a50c5ff Merge remote-tracking branch 'upstream/main' into merge-gramsrv-9106877 2026-08-03 23:29:20 +03:00
iamxvbaba
9106877123 sync: accept TDLib zlib gzip_packed payloads 2026-08-03 17:33:49 +08:00
iamxvbaba
837535f375 sync: diagnose exact upload admission failures 2026-08-03 17:33:49 +08:00
iamxvbaba
656b01dba7 perf(rpc): sync eliminate upload preflight allocations 2026-08-03 17:33:49 +08:00
iamxvbaba
e70bb0f167 sync: # file upload improve 2026-08-03 17:33:49 +08:00
iamxvbaba
9041abd3d3 fix: sync correct collectible username projection 2026-08-02 19:32:18 +08:00
iamxvbaba
8356989e01 fix: sync streamline self username cache convergence 2026-08-02 19:32:18 +08:00
iamxvbaba
8bc1560c16 fix: sync drive TDLib username cache convergence 2026-08-02 19:32:17 +08:00
iamxvbaba
f67e87689c fix: sync refresh complete self profile on session ready 2026-08-02 19:32:17 +08:00
iamxvbaba
2512eab51d fix: sync harden auth, privacy, and PTS state 2026-08-02 14:12:04 +08:00
iamxvbaba
c1597696af refactor(mtproto): sync replace result cache with execution ledger 2026-08-02 12:05:00 +08:00
iamxvbaba
141f2f20c4 feat(loadtest): sync add real 500-session capacity harness 2026-08-02 12:05:00 +08:00
iamxvbaba
ac0566f779 refactor(mtproto): sync redesign RPC replay ownership 2026-08-02 01:51:03 +08:00
iamxvbaba
7e0f9d1e62 feat(stars): sync implement unified purchase flow 2026-08-02 01:51:03 +08:00
iamxvbaba
c13fbf8885 fix(mtproto): sync accept TDLib reconnect service parity 2026-08-02 01:51:03 +08:00
iamxvbaba
c854fc7b94 feat: sync implement Stars friend gift packages 2026-08-02 01:51:02 +08:00