Add iPad mini avatar rail layout#2198
Conversation
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.
Device validation updateThis branch has now been built and installed on a real iPad mini device for local validation. Validation performed:
Known remaining issues / reason for draft:
I am marking this PR as draft while these remaining compact-mode issues are investigated and fixed. |
|
Follow-up fix pushed for a real-device compact-mode issue:
Commit: |
|
Follow-up after real-device feedback: the previous label-based approach did not fix the actual compact-rail UX. Updated behavior:
Verified:
Commit: |
|
Follow-up after testing folder-filter state ( Updated behavior:
Verified:
Commit: |
|
Follow-up for compact folder rail UX:
Verified:
Commit: |
|
Follow-up from real iPad feedback: the compact rail should be clean and should not expose folder/search chrome. Updated behavior:
Verified:
Commit: |
|
Follow-up from real iPad feedback: the compact rail must not leave an invisible/ambiguous own-story hit target at the top. Updated behavior:
Verified:
Commit: |
|
Follow-up from real iPad feedback: the issue was not limited to Updated behavior:
Verified:
Commit: |
|
Follow-up from real iPad feedback in filtered folders: hiding the visible story strip was not enough, because compact rail still had story top-inset / story camera gesture hooks, so the first item could still trigger story creation/viewer. Updated behavior:
Verified:
Commit: |
|
Follow-up from real iPad feedback: the top search/loupe placeholder itself should not exist, and the top rail space must not be an overlay or navigation hit-test area. Updated behavior:
|
|
Open
|
Summary
Adds a compact iPad tablet split-layout state that collapses the master chat list to an avatar-only rail on narrow tablet widths, preserving more space for the currently open chat.
Test Plan
xcrun swiftc -frontend -parse submodules/Display/Source/Navigation/NavigationSplitContainer.swiftxcrun swiftc -frontend -parse submodules/ChatListUI/Sources/Node/ChatListItem.swiftxcrun swiftc -frontend -parse submodules/ChatListUI/Sources/Node/ChatListNode.swiftxcrun swiftc -frontend -parse submodules/ChatListUI/Sources/ChatListControllerNode.swiftxcrun swiftc -frontend -parse submodules/TabBarUI/Sources/TabBarContollerNode.swiftbuild-input/bazel-8.4.2-darwin-arm64 build Telegram/Telegram ... --ios_multi_cpus=sim_arm64 --//Telegram:disableExtensions --//Telegram:disableProvisioningProfilesassert,fatal,crash, orinvalid boundslogs after launch.