Skip to content

All features combined#1006

Closed
DelightReza wants to merge 67 commits intoTGX-Android:mainfrom
DelightReza:all-features-combined
Closed

All features combined#1006
DelightReza wants to merge 67 commits intoTGX-Android:mainfrom
DelightReza:all-features-combined

Conversation

@DelightReza
Copy link

@DelightReza DelightReza commented Jan 22, 2026

nothing

tgx-server and others added 30 commits January 22, 2026 08:05
- Add StoryViewController for full-screen story viewing with gestures
- Add StoryBarView for horizontal story list in chat list header
- Add story ring support to AvatarView (gradient for unread, gray for read)
- Implement ReplyComponent.setStory() for story preview in replies
- Add SETTING_FLAG_HIDE_STORIES setting with UI toggle
- Add MessageStory support in TGMessageService
- Respects hideStories setting throughout (except shared story messages)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- StoryComposeController for creating stories via camera/gallery
- AddStoryItemView in story bar with gradient ring
- StoryReplyInputView for replying to stories
- Double-tap heart reactions via SetStoryReaction
- checkCanPostStory() integration in ChatsController
- ReplySent string and controller_storyCompose id

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Fix status bar collision using RootFrameLayout.InsetsChangeListener
- Fix horizontal swipe to navigate between users' stories
- Fix touch handling to allow header/footer button clicks
- Add story reactions (full picker and quick reactions row)
- Add quick reactions settings toggle
- Fix share button functionality
- Fix "#400 story didn't open" error toast
- Add delete/share options based on story permissions

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Wrap debug logs in BuildConfig.DEBUG checks
- Fix GetStoryInteractions query parameter (null -> empty string)
- Fix album picker ID collision with R.id values
- Implement proper ReportStory flow with options and text dialogs
- Fix StoryContentView memory leak (add destroy() call)
- Hide privacy settings and reply input for channel stories
- Remove unused imports from story files
- Add missing string resources for report dialog

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add snap-to-show/hide when scroll stops
- Better top detection using layout manager
- Fix checkCanPostStory timing with user data wait

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adds complete forum topics functionality:
- ForumTopicsController: Main topics list with search, create, edit, delete
- ForumTopicView: Custom view for topic items with icons/avatars
- ForumTopicTabsController: ViewPager tabs layout for topics
- Topic message filtering using GetForumTopicHistory
- Per-topic unread counters, mentions, and reactions
- Topic notification settings (mute/unmute)
- Topic typing indicators
- Topic header in chat view
- Navigation integration
- Forum toggle in group settings
- View as chat/topics toggle
- Notification separation showing "Chat > Topic"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Added break statement after fall-through service message cases in
ContentPreview.getContentPreview() to prevent them from falling through
to the forum topic handlers. This fixes a bug where group photo changes
and other service messages incorrectly showed "Topic created" in the
chat list preview.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add forum layout toggle (tabs vs list) in ProfileController settings
- Fix layout toggle not applying until re-entry (wasForumTabsChanged check)
- Fix visual flash when entering forum tabs by using LoadingController placeholder
- Add Group Info access from tabs mode for admins
- Add permission checks for topic actions UI

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Move search loading indicator to ClearButton in search bar (spinner where X button is)
- Fix topic filter dialog icon positioning (18dp left offset instead of 68dp)
- Fix settings popup ripple effect (use ?android:attr/colorControlHighlight for theme-adaptive ripple)
- Remove centered ProgressComponentView in favor of search bar spinner

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
…i, search in menu

- ChatHeaderView: Add custom emoji support for forum topic icons
- ForumTopicView: 3-line layout (title, sender, preview) matching chat list
- ForumTopicsController: Add "View as tabs" option, fix draft updates
- ForumTopicTabsController: Add "View as topics" option, move search to menu
- TdlibUi: Fix viewAsTopics check for proper view mode switching
- ShareController: Add forum topics support for sharing
- Add topic list caching in Tdlib

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
japananimetime and others added 29 commits January 22, 2026 08:08
- Updated scroll listener to use dynamic archive position instead of
  hardcoded values (0, 1) which don't account for story bar
- Updated getLiveLocationPosition() to account for story bar offset
- Archive scroll collapse/expand now works correctly with story bar

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fixed archive collapse offset overlapping with story bar by checking hasStoryBar()
- Changed story bar to only add to adapter when content is available
- Story bar now always VISIBLE when in adapter (adapter controls presence)
- Added scroll to top when story bar is first added for visibility on app start
- Fixed scroll listener positions to use dynamic archive position

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- StickerSmallView.setSticker() now handles isDefaultPremiumStar stickers
- Shows premium star drawable for paid reactions instead of empty
- Added proper error translation for "not enough stars" error
- Added user-friendly error message string

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implemented proper TextMediaListener for custom emoji rendering:
- ForumTopicView now implements Text.TextMediaListener
- Added textMediaReceiver for loading custom emoji
- Preview text with custom emoji now renders correctly

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Star reaction icon now respects bounds and scales correctly
- ForumTopicView properly handles custom emoji in preview text

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Forums now skip preview mode on long-press in chat list.
This prevents swipe-up from opening MessagesController instead of
ForumTopicsController.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Implement separate notifications for each forum topic
  - Split notification groups by topic ID for forums
  - Display each topic as separate Android notification
  - Show topic name in notification title: "Chat › Topic"
  - Tap notification opens correct topic

- Fix unread ticks in ForumTopicView
  - Use lastReadInboxMessageId for incoming messages
  - Use lastReadOutboxMessageId for outgoing messages

- Add MessageListener to ForumTopicsController
  - Subscribe to message updates for real-time topic sync
  - Update topic lastMessage when new messages arrive
  - Handle message content changes and deletions
  - Resort topics when messages change

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Added setting to show reactions as bubbles in direct messages (like groups)
- Added setting to keep attach button visible while typing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…rt, layout fixes

- Add separate settings for Camera, Attach, and Voice buttons while typing
- Add caption support: input text becomes caption when sending media
- Caption works with photos, gallery media, and voice messages
- Fix button layout to use flex-like behavior (no gaps for hidden buttons)
- Fix send button overlapping text with dynamic padding
- Fix buttons not restoring when text is deleted
- Add caption prefill for attach picker and camera flows

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…navigation

- Replace emoji prefixes with icon-based indicators (mute/lock icons)
- Fix text width calculation to prevent overlap with time/counters
- Fix header margin to prevent title overlap with menu buttons
- Forums with hasForumTabs now always open in tabs view
- Fix "View as chat" navigation to prevent re-opening in tabs mode

Based on fixes from https://github.com/logopek/reX/tree/musicProfile

Co-Authored-By: logopek <logopek@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When sending a message to a forum topic, the topic list wouldn't show
the latest message preview after returning from the topic view.

Root cause: The pending message has topicId=null, causing onNewMessage()
to exit early. When the message succeeds, updateMessageSendSucceeded fires
but ForumTopicsController didn't implement onMessageSendSucceeded().

Fix: Implement onMessageSendSucceeded() to route to onNewMessage() with
the completed message that has topicId properly populated.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Cherry-picked Video Calls with Camera and Screen Sharing support.
- Added CallInterface abstraction layer
- Added NTgCallsInterface and TgCallsInterface implementations
- Added VoIPFloatingLayout and VoIPTextureView for video display
- Updated CallController with video button support
- Updated TGCallService with NTgCalls/TgCalls selection based on BuildConfig.USE_NTGCALLS

Based on commit 9513771 from Laky-64/Telegram-X PR #916

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add BLUETOOTH_CONNECT and BLUETOOTH_SCAN permissions for Android 12+
- Add USE_NTGCALLS BuildConfig flag (controlled by app.ntgcalls in local.properties)
- Add useNTgCalls to ApplicationConfig and ConfigurationPlugin
- Add conditional NTgCalls dependency (io.github.pytgcalls:ntgcalls:2.0.6)

Note: The NTgCalls interface code from PR #916 requires API compatibility
updates - the PR was written for a different version of the NTgCalls library
with packages (media, p2p, devices, exceptions) that don't exist in the
public Maven Central release.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Group Calls:
- Add NTgCallsGroupInterface for group call handling via NTgCalls
- Add GroupCallController UI with participant list, mute/camera/screen share controls
- Integrate group call joining flow in TdlibUi
- Add public methods for group call listener subscription in TdlibListeners
- Add mic_off and screen_share icons

Voice/Video Restrictions:
- Add visual dimming for restricted voice/video button in VoiceVideoButtonView
- Show restriction tooltip when tapping restricted mode in MessagesController

Build:
- Enable ARM64 debug variant for easier testing
- Update CLAUDE.md with MantisBT integration instructions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add forumTopic() and isForumTopicMuted() helper methods in Tdlib
- Filter notifications from muted forum topics in TdlibNotificationHelper
- Add isFromMutedForumTopic() check in TdlibNotification
- Handle closed topics: block input for non-admins in MessagesController
- Handle forum mode changes in ForumTopicTabsController

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add clearComposingText() to EditText to safely clear composing spans
- Call clearComposingText() in InputView before programmatic text changes
- Handle view parent removal in ViewPagerController when reusing cached controllers

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add hasBluetoothPermission() helper method to check BLUETOOTH_CONNECT
- Initialize BluetoothAdapter only if permission is granted on API 31+
- Check permission before calling getProfileConnectionState()
- Remove //noinspection MissingPermission suppression

Fixes #23

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Cherry-picked from reX fork (logopek/reX commit f54f712)

Users can now see personal notes on user profiles. Notes are stored
by Telegram and synced across devices (using TdApi.UserFullInfo.note).

- Added ProfileNote string
- Added btn_profileNote ID
- ProfileController: setProfileNote(), checkProfileNote() methods
- Shows note in user profile info section

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add VoIPTextureView for local camera preview with floating layout
- Add video grid container for participant video streams
- Set up FrameCallback to receive video frames from NTgCallsGroupInterface
- Add RemoteSourceChangeCallback to detect participant video state changes
- Add VideoParticipantsAdapter for video grid layout
- Clean up video resources on destroy

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add createVideoChat() and endVideoChat() to TdlibUi
- Add public joinGroupCall() method to TdlibUi
- Add canManageVideoChats() permission check to Tdlib
- Add "Start Video Chat" / "Join Video Chat" options to group chat menu
- Add raise hand toggle button to GroupCallController
- Add end video chat confirmation dialog for admins (long-press leave)
- Add new button IDs and string resources

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace joinGroupCall(int) with joinVideoChat(int) for chat-bound video chats
- Use TdApi.JoinVideoChat instead of non-existent InputGroupCallId
- Use groupCall.canBeManaged instead of chatId for permission check

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add invite button to GroupCallController
- Get video chat invite link via TdApi.GetVideoChatInviteLink
- Copy link to clipboard and show share dialog

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Cherry-picked from logopek/reX: e6d439d
- Save user's preferred forum view (tabs vs topics list)
- Respect saved preference when opening forums
- Store preference per chat in TdlibSettingsManager

Co-Authored-By: shikaatux <logopek@github.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add tags bar below header in Saved Messages chat
- Filter messages by tag with tap, clear with second tap
- Long-press tag chip to edit label (Premium, max 12 chars)
- Real-time tag updates via UpdateSavedMessagesTags listener
- Tag mode display on message reactions (shows label instead of count)

Files created:
- data/TGSavedMessagesTag.java - Tag data wrapper
- data/TGSavedMessagesTags.java - Tags container
- telegram/SavedMessagesTagsListener.java - Update listener
- widget/SavedMessagesTagsBarView.java - Filter bar UI
- ui/SavedMessagesTagEditController.java - Label editor

TDLib APIs: GetSavedMessagesTags, SetSavedMessagesTagLabel,
SearchSavedMessages, UpdateSavedMessagesTags

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Cherry-picked from Laky-64/Telegram-X commit 223c39b

- Playback speed slider in audio/video player
- Speeds: 0.5x (50%), 0.75x, 1x, 1.25x, 1.5x, 2x, 2.5x
- Visual speed indicator counter
- Persists speed preference
- Hold for more options, swipe for precise adjustment

Co-Authored-By: Arseny271 <56611696+Arseny271@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Update

* Add some tooltips

* Fixes

* Update TGPlayerController.java

* Update

* Update

* Update Recorder

* Voice recording pause

* Update

* Update

* Round pause v1

* Update

* Update

* Update RecordAudioVideoController.java

* Update themes

* Update

* Update RecordAudioVideoController.java

* Update RecordAudioVideoController.java

* Minor fixes

---------

Co-authored-by: vkryl <6242627+vkryl@users.noreply.github.com>
* Quotes

* Samsung keyboard fix

* Emoji fix

* Remove background, message layout fixes

* Fix

* Fixes

* More fixes

* Input filter fix

* Update ThemeCustom.java

* Fix

* Color Updates

* TextFormattingUpdate

* Update Text.java

* Update

* Uodate

* Update MessagesController.java

* Fix

* Add Copyright and remove unused code

* Update

* Fiz

* [Experimental] NoClipEditText fix for actual Android versions.

* Update
- Add TextSelectionHelper for text selection and quote creation
- Add menu for text selection quote options
- Implement quote callback in TGMessageText
- Add replyInOtherChat and quoteInOtherChat functionality
- Support text highlight for quoted fragments
- Add quote-related IDs and strings
- Document feature branch workflow (start from main, merge to all-features-combined)
- List all available feature branches with descriptions
- Add branch hierarchy diagram

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

5 participants