diff --git a/src/renderer/src/components/mobile/MobileHero.tsx b/src/renderer/src/components/mobile/MobileHero.tsx
index f0688ee404c..29c2ff13099 100644
--- a/src/renderer/src/components/mobile/MobileHero.tsx
+++ b/src/renderer/src/components/mobile/MobileHero.tsx
@@ -206,41 +206,36 @@ export function HeroFlow({
compact
/>
- {connectionMode === 'local-only' ? (
-
-
- {translate('auto.components.mobile.MobileHero.dfd2aa9d5d', 'Network')}
-
-
-
-
-
-
- ) : null}
+
+
+ {translate('auto.components.mobile.MobileHero.dfd2aa9d5d', 'Network')}
+
+
+
+
+
+
diff --git a/src/renderer/src/components/settings/MobilePairingConnectionOptions.tsx b/src/renderer/src/components/settings/MobilePairingConnectionOptions.tsx
index f28abcf2491..28cb98dae05 100644
--- a/src/renderer/src/components/settings/MobilePairingConnectionOptions.tsx
+++ b/src/renderer/src/components/settings/MobilePairingConnectionOptions.tsx
@@ -36,6 +36,135 @@ function relayStatusLabel(status: MobileRelayStatus): string {
)
}
+type CompactConnectionOptionsProps = {
+ value: MobilePairingConnectionMode
+ onChange: (value: MobilePairingConnectionMode) => void
+ signedIn: boolean
+ configured: boolean
+ connecting: boolean
+ connect: () => Promise
+ relayStatus: MobileRelayStatus
+}
+
+function CompactConnectionOptions({
+ value,
+ onChange,
+ signedIn,
+ configured,
+ connecting,
+ connect,
+ relayStatus
+}: CompactConnectionOptionsProps): React.JSX.Element {
+ return (
+
+ )
+}
+
export function MobilePairingConnectionOptions({
value,
onChange,
@@ -75,8 +204,22 @@ export function MobilePairingConnectionOptions({
}
}, [])
+ if (compact) {
+ return (
+
+ )
+ }
+
return (
-
+
{translate(
'auto.components.settings.MobilePairingConnectionOptions.title',
@@ -87,7 +230,7 @@ export function MobilePairingConnectionOptions({
@@ -160,7 +303,7 @@ export function MobilePairingConnectionOptions({
diff --git a/src/renderer/src/components/settings/MobilePairingSetupSection.test.tsx b/src/renderer/src/components/settings/MobilePairingSetupSection.test.tsx
index 25703b9fc99..6b28dcbcc7c 100644
--- a/src/renderer/src/components/settings/MobilePairingSetupSection.test.tsx
+++ b/src/renderer/src/components/settings/MobilePairingSetupSection.test.tsx
@@ -43,20 +43,18 @@ function renderSection(
}
describe('MobilePairingSetupSection', () => {
- it('opens local settings by default for local-only pairing', () => {
+ it('keeps local settings visible for local-only pairing', () => {
renderSection()
expect(screen.getByRole('combobox')).toHaveTextContent('100.64.1.20 (tailscale0)')
expect(screen.getByText(/connects only through the local network address/i)).toBeVisible()
})
- it('keeps local settings advanced for automatic Relay fallback', async () => {
- const { user } = renderSection({ connectionMode: 'automatic' })
- expect(screen.queryByRole('combobox')).not.toBeInTheDocument()
+ it('keeps local settings visible for automatic direct-first pairing', () => {
+ renderSection({ connectionMode: 'automatic' })
+ expect(screen.getByRole('combobox')).toBeVisible()
expect(
screen.getByText(/includes direct access and encrypted Orca Relay fallback/i)
).toBeVisible()
- await user.click(screen.getByRole('button', { name: 'Local connection settings' }))
- expect(screen.getByRole('combobox')).toBeVisible()
})
it('commits an OS interface picked from the list', async () => {
diff --git a/src/renderer/src/components/settings/MobilePairingSetupSection.tsx b/src/renderer/src/components/settings/MobilePairingSetupSection.tsx
index 80c2bfdf924..8c91eb30442 100644
--- a/src/renderer/src/components/settings/MobilePairingSetupSection.tsx
+++ b/src/renderer/src/components/settings/MobilePairingSetupSection.tsx
@@ -69,62 +69,57 @@ export function MobilePairingSetupSection({
)}
-
-
-
+
+
+
{translate(
'auto.components.settings.MobilePairingSetupSection.localSettings',
'Local connection settings'
)}
-
-
-
+
+
+ {translate(
+ 'auto.components.settings.MobilePairingSetupSection.localAddressDescription',
+ 'Choose the LAN or private-network address that Orca Mobile can use to reach this computer directly.'
+ )}
+
+
+
+
+
+
+
+
+
+
+
{translate(
- 'auto.components.settings.MobilePairingSetupSection.localAddressDescription',
- 'Choose the LAN or private-network address that Orca Mobile can use to reach this computer directly.'
+ 'auto.components.settings.MobilePairingSetupSection.refresh',
+ 'Refresh network interfaces'
)}
-
-
-
-
-
-
-
-
-
-
- {translate(
- 'auto.components.settings.MobilePairingSetupSection.refresh',
- 'Refresh network interfaces'
- )}
-
-
-
-
-
-
+
+
+
+
+
+
+
{translate(
'auto.components.settings.MobilePairingSetupSection.tailnet',