Skip to content

feat(mobile): native mobile hooks and phone call layout - #301

Open
matheusfillipe wants to merge 15 commits into
stack/sidebarfrom
stack/mobile
Open

matheusfillipe wants to merge 15 commits into
stack/sidebarfrom
stack/mobile

Conversation

@matheusfillipe

@matheusfillipe matheusfillipe commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor
  • Tauri 2.12
  • Android picture-in-picture, iOS keyboard events, background audio
  • Phone calls: one control layer, fullscreen, video folds while typing
  • Calls rejoin after drops, keep mute, listen-only without a mic
  • Working uploads, voice messages play as audio
  • Keyboard keeps the header and input in view, safe areas on sheets
  • PMs work like channels, every chat can be reordered
  • Release workflow: iOS waits for the Tauri 2.12 build file, Android installs only platform-tools

@coderabbitai

coderabbitai Bot commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 158 files, which is 58 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: ca068485-2f13-4e8e-87ad-93d192a4105b

📥 Commits

Reviewing files that changed from the base of the PR and between c0715d2 and 8993adc.


⛔ Files ignored due to path filters (6)
  • package-lock.json is excluded by !**/package-lock.json
  • src-tauri/Cargo.lock is excluded by !**/*.lock
  • src-tauri/gen/android/.gitignore is excluded by !**/gen/**
  • src-tauri/gen/android/app/src/main/AndroidManifest.xml is excluded by !**/gen/**
  • src-tauri/gen/android/app/src/main/java/com/obsidianirc/dev/MainActivity.kt is excluded by !**/gen/**
  • src-tauri/gen/apple/Obby_iOS/Info.plist is excluded by !**/gen/**

📒 Files selected for processing (158)
  • .github/workflows/publish.yaml
  • index.html
  • package.json
  • src-tauri/Info.plist
  • src-tauri/capabilities/ios.json
  • src-tauri/plugins/ios-keyboard/ios/Sources/AppLifecycle.swift
  • src-tauri/plugins/ios-keyboard/ios/Sources/KeyboardPlugin.swift
  • src-tauri/plugins/ios-keyboard/permissions/autogenerated/reference.md
  • src-tauri/plugins/ios-keyboard/permissions/listen.toml
  • src-tauri/plugins/ios-keyboard/permissions/schemas/schema.json
  • src-tauri/plugins/ios-keyboard/src/lib.rs
  • src-tauri/plugins/share-sheet/.tauri/tauri-api/Sources/Tauri/Invoke.swift
  • src-tauri/plugins/share-sheet/.tauri/tauri-api/Sources/Tauri/Tauri.swift
  • src-tauri/src/lib.rs
  • src-tauri/src/screen_record.rs
  • src-tauri/src/socket.rs
  • src/App.tsx
  • src/components/PrivacyPolicy.tsx
  • src/components/layout/AddChannelRow.tsx
  • src/components/layout/AppLayout.tsx
  • src/components/layout/ChannelContextMenu.tsx
  • src/components/layout/ChannelList.tsx
  • src/components/layout/ChannelRow.tsx
  • src/components/layout/ChatArea.tsx
  • src/components/layout/ChatHeader.tsx
  • src/components/layout/ConnectionStrip.tsx
  • src/components/layout/MemberList.tsx
  • src/components/layout/NetworkMenu.tsx
  • src/components/layout/PrivateChatRow.tsx
  • src/components/layout/ServerList.tsx
  • src/components/layout/UserPanel.tsx
  • src/components/layout/VoiceChannelView.tsx
  • src/components/message/EncryptedMediaPreview.tsx
  • src/components/message/MediaPreview.tsx
  • src/components/message/MessageItem.tsx
  • src/components/mobile/BottomSheet.tsx
  • src/components/ui/AddServerModal.tsx
  • src/components/ui/AppEmojiPicker.tsx
  • src/components/ui/AvatarUpload.tsx
  • src/components/ui/BotToolsCard.tsx
  • src/components/ui/BouncerNetworkForm.tsx
  • src/components/ui/BouncerNetworksPanel.tsx
  • src/components/ui/CameraCaptureModal.tsx
  • src/components/ui/ChangePasswordModal.tsx
  • src/components/ui/ChannelListModal.tsx
  • src/components/ui/E2EERequestBanner.tsx
  • src/components/ui/EditServerModal.tsx
  • src/components/ui/EmojiPackAdminModal.tsx
  • src/components/ui/FloodSettingsModal.tsx
  • src/components/ui/GifSelector.tsx
  • src/components/ui/GlobalNotifications.tsx
  • src/components/ui/InvitationsPanel.tsx
  • src/components/ui/LinkSecurityWarningModal.tsx
  • src/components/ui/MediaCommentsSidebar.tsx
  • src/components/ui/MediaViewerModal.tsx
  • src/components/ui/OAuthSection.tsx
  • src/components/ui/ObbyWhoisModal.tsx
  • src/components/ui/PasswordRecoveryModal.tsx
  • src/components/ui/Popover.tsx
  • src/components/ui/QuickActions/uiActionConfig.tsx
  • src/components/ui/RecordingControlsOverlay.tsx
  • src/components/ui/RecordingPanel.tsx
  • src/components/ui/ScrollToBottomButton.tsx
  • src/components/ui/SlashCommandParamModal.tsx
  • src/components/ui/TextInput.tsx
  • src/components/ui/TicTacToeModal.tsx
  • src/components/ui/TopicModal.tsx
  • src/components/ui/TotpStepUpModal.tsx
  • src/components/ui/TwoFactorSettingsModal.tsx
  • src/components/ui/UploadProgressOverlay.tsx
  • src/components/ui/UserProfileModal.tsx
  • src/components/ui/UserSettings.tsx
  • src/components/ui/WorkflowStepRow.tsx
  • src/components/ui/settings/CallDeviceShared.tsx
  • src/components/ui/settings/CustomMentionsField.tsx
  • src/components/ui/settings/IgnoreListField.tsx
  • src/components/ui/settings/SettingRenderer.tsx
  • src/components/voice/ParticipantTile.tsx
  • src/components/voice/VideoTrackView.tsx
  • src/components/voice/VoiceAvatarBar.tsx
  • src/components/voice/VoicePipOverlay.tsx
  • src/components/voice/VoiceVideoBand.tsx
  • src/components/voice/pickPipMember.ts
  • src/hooks/useKeyboardResize.ts
  • src/hooks/useVoiceCall.ts
  • src/index.css
  • src/lib/irc/IRCClient.ts
  • src/lib/irc/handlers/channels.ts
  • src/lib/irc/handlers/index.ts
  • src/lib/mediaDevices.ts
  • src/lib/mediaUpload.ts
  • src/lib/messageGrouping.ts
  • src/lib/nativeCallBridge.ts
  • src/lib/voice.ts
  • src/lib/voiceErrors.ts
  • src/lib/voiceSpotlight.ts
  • src/locales/cs/messages.mjs
  • src/locales/cs/messages.po
  • src/locales/de/messages.mjs
  • src/locales/de/messages.po
  • src/locales/en/messages.mjs
  • src/locales/en/messages.po
  • src/locales/es/messages.mjs
  • src/locales/es/messages.po
  • src/locales/fi/messages.mjs
  • src/locales/fi/messages.po
  • src/locales/fr/messages.mjs
  • src/locales/fr/messages.po
  • src/locales/it/messages.mjs
  • src/locales/it/messages.po
  • src/locales/ja/messages.mjs
  • src/locales/ja/messages.po
  • src/locales/ko/messages.mjs
  • src/locales/ko/messages.po
  • src/locales/nl/messages.mjs
  • src/locales/nl/messages.po
  • src/locales/pl/messages.mjs
  • src/locales/pl/messages.po
  • src/locales/pt/messages.mjs
  • src/locales/pt/messages.po
  • src/locales/ro/messages.mjs
  • src/locales/ro/messages.po
  • src/locales/ru/messages.mjs
  • src/locales/ru/messages.po
  • src/locales/sv/messages.mjs
  • src/locales/sv/messages.po
  • src/locales/tr/messages.mjs
  • src/locales/tr/messages.po
  • src/locales/uk/messages.mjs
  • src/locales/uk/messages.po
  • src/locales/zh-TW/messages.mjs
  • src/locales/zh-TW/messages.po
  • src/locales/zh/messages.mjs
  • src/locales/zh/messages.po
  • src/store/handlers/connection.ts
  • src/store/index.ts
  • src/store/localStorage.ts
  • tailwind.config.js
  • tests/components/CameraCaptureModal.test.tsx
  • tests/components/MediaPreview.test.tsx
  • tests/components/RecordingPanel.test.tsx
  • tests/components/layout/ChatHeader.privateChat.test.tsx
  • tests/components/layout/PrivateChatRow.test.tsx
  • tests/components/voice/VideoTrackView.pip.test.tsx
  • tests/components/voice/VoiceChannelView.test.tsx
  • tests/components/voice/VoicePipOverlay.test.tsx
  • tests/components/voice/VoiceVideoBand.test.tsx
  • tests/components/voice/pickPipMember.test.ts
  • tests/hooks/useVoiceCall.test.tsx
  • tests/lib/ircClient.test.ts
  • tests/lib/messageGrouping.test.ts
  • tests/lib/nativeCallBridge.test.ts
  • tests/lib/voiceErrors.test.ts
  • tests/lib/voiceOffer.test.ts
  • tests/lib/voiceRegistry.test.ts
  • tests/store/localStorage.test.ts
  • tests/store/privateChatOrder.test.ts
  • vite.config.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@matheusfillipe
matheusfillipe added this pull request to stack #305 October 10, 2026 18:36
@github-actions

Copy link
Copy Markdown

Pages Preview
Preview URL: https://stack-mobile.obsidianirc.pages.dev

Automated deployment preview for the PR in the Cloudflare Pages.

@matheusfillipe matheusfillipe changed the title feat(mobile): mobile shell and phone calls feat(mobile): native mobile hooks and phone call layout Oct 10, 2026

This branch has not been deployed

No deployments
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.

2 participants