Skip to content

Add iPad mini avatar rail layout (experimental mode & gesture isolation) - #2353

Open
xsa-dev wants to merge 14 commits into
TelegramMessenger:masterfrom
xsa-dev:ipad-mini-avatar-rail
Open

xsa-dev wants to merge 14 commits into
TelegramMessenger:masterfrom
xsa-dev:ipad-mini-avatar-rail

Conversation

@xsa-dev

@xsa-dev xsa-dev commented Oct 1, 2026

Copy link
Copy Markdown

Summary

This PR introduces an experimental compact avatar rail layout for iPad mini (and narrow iPad split-views) along with comprehensive gesture and touch isolation.

Key Changes

  1. Experimental Setting (compactAvatarRail):

    • Added compactAvatarRail: Bool in ExperimentalUISettings (defaults to false).
    • Exposed under Debug Menu (Settings -> 10 taps) as "iPad Mini Avatar Rail".
    • When disabled, Telegram retains 100% standard iPad master width (>= 320pt), search bar, folders, and tab bar.
  2. Touch & Gesture Isolation:

    • Disabled panRecognizer (swiping between folders) when compact avatar rail is active (width <= 160pt), preventing ListView.touchesCancelled drops on avatar taps.
    • Disabled isSelectionGestureEnabled on ChatListNode in compact rail to avoid accidental multi-selection entry.
    • Removed compactRailTopTouchBlockerNode static overlay to prevent hit-testing collisions during list scrolling.
  3. Status Bar Insets & Story Isolation:

    • Cleanly derived top list insets from status bar safe area: (insets.top > 0.0 ? insets.top : 24.0) + 12.0.
    • Disabled avatarStoryTapGesture in compact rail so tapping an avatar with active stories reliably opens the chat conversation.
    • Suppressed search header overscroll and stories insets in compact sidebar mode.

xsa-dev added 14 commits June 13, 2026 23:10
Add an iPad compact sidebar state that collapses the chat list to an avatar rail, with drag/tap restoration to the regular master list. Hide compact-mode chrome that does not fit the rail and clamp narrow chat-list measurements to avoid invalid AsyncDisplayKit geometry.
…re isolation

- Add compactAvatarRail experimental toggle in ExperimentalUISettings and DebugController
- Isolate panRecognizer and selection gestures when compact avatar rail is active (<= 160pt)
- Derive clean top list insets from status bar in ChatListContainerItemNode
- Disable story tap gesture in compact avatar rail to route avatar taps directly to chats
- Suppress search scroll header and stories overscroll in compact rail mode
- Maintain full compatibility with standard iPad regular split layout when disabled
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant