Skip to content

android: extend support for protocol navigation to Android - #815

Merged
willh-ts merged 1 commit into
mainfrom
will/navigate
Sep 1, 2026
Merged

willh-ts merged 1 commit into
mainfrom
will/navigate

Conversation

@willh-ts

@willh-ts willh-ts commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Extends support for the navigate path of the tailscale: protocol to Android,
mirroring the existing macOS routes & pending iOS routes.

All settings tabs without existing routes simply open the main settings view
for now.

tailscale://navigate/main/devices
tailscale://navigate/main/devices/<computedName or stableID>
tailscale://navigate/main/exit-nodes
tailscale://navigate/main/exit-nodes/<stableID>
tailscale://navigate/main/exit-nodes/location/<country>
tailscale://navigate/settings[/<anyTab>]

The scripts/deeplink-probe.go script can be used to trigger the application to
navigate to a given route by passing that to it.
e.g., ./tool/go run ./scripts/deeplink-probe.go main/devices

updates tailscale/corp#41056

@willh-ts
willh-ts requested review from barnstar and kari-ts June 29, 2026 18:50
@willh-ts
willh-ts force-pushed the will/navigate branch 2 times, most recently from 2334b8a to 88f4d5d Compare June 30, 2026 14:10

@barnstar barnstar left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mainly, I think we need to be really conservative on performing actions with deeplinks (and perhaps audit iOS/macOS if we allow that there). Navigation is perfectly fine, but the idea that clicking a link can change what exit node I'm using has some implications we need to consider before rolling it out.

Comment thread android/src/main/java/com/tailscale/ipn/ui/util/DeepLinkNavigator.kt Outdated
Comment thread android/src/main/java/com/tailscale/ipn/ui/util/DeepLinkNavigator.kt Outdated
Comment thread scripts/deeplink-probe.sh Outdated
@willh-ts
willh-ts requested a review from barnstar July 2, 2026 15:08

@kari-ts kari-ts left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for doing this!

Comment thread android/src/main/java/com/tailscale/ipn/ui/util/DeepLinkNavigator.kt Outdated
Comment thread android/src/main/java/com/tailscale/ipn/ui/util/DeepLinkNavigator.kt Outdated
Comment thread android/src/main/java/com/tailscale/ipn/ui/util/DeepLinkNavigator.kt Outdated
Comment thread android/src/main/java/com/tailscale/ipn/ui/util/DeepLinkNavigator.kt Outdated
Comment thread android/src/main/java/com/tailscale/ipn/MainActivity.kt Outdated
Comment thread android/src/main/java/com/tailscale/ipn/MainActivity.kt Outdated
Comment thread android/src/main/java/com/tailscale/ipn/MainActivity.kt
@willh-ts
willh-ts force-pushed the will/navigate branch 2 times, most recently from 43147d3 to 7af84d0 Compare July 2, 2026 20:09
@willh-ts
willh-ts requested a review from kari-ts July 2, 2026 20:15
Comment thread android/src/main/java/com/tailscale/ipn/ui/util/DeepLinkNavigator.kt Outdated
@kari-ts

kari-ts commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

LGTM once conflicts are resolved

Extends support for the `navigate` path of the `tailscale:` protocol to Android,
mirroring the existing macOS routes & pending iOS routes.

All settings tabs without existing routes simply open the main settings view
for now.

```
tailscale://navigate/main/devices
tailscale://navigate/main/devices/<computedName or stableID>
tailscale://navigate/main/exit-nodes
tailscale://navigate/main/exit-nodes/<stableID>
tailscale://navigate/main/exit-nodes/location/<country>
tailscale://navigate/settings[/<anyTab>]
```

The `scripts/deeplink-probe.sh` script can be used to trigger the application to
navigate to a given route by passing that to it.
e.g., `./tool/go run ./scripts/deeplink-probe.go main/devices`

updates tailscale/corp#41056

Signed-off-by: Will Hannah <willh@tailscale.com>
@willh-ts
willh-ts merged commit 0d5a376 into main Sep 1, 2026
5 checks passed
@willh-ts
willh-ts deleted the will/navigate branch September 1, 2026 12:29
serein-213 pushed a commit to serein-213/tailscale-android that referenced this pull request Sep 21, 2026
…#815)

Extends support for the `navigate` path of the `tailscale:` protocol to Android,
mirroring the existing macOS routes & pending iOS routes.

All settings tabs without existing routes simply open the main settings view
for now.

```
tailscale://navigate/main/devices
tailscale://navigate/main/devices/<computedName or stableID>
tailscale://navigate/main/exit-nodes
tailscale://navigate/main/exit-nodes/<stableID>
tailscale://navigate/main/exit-nodes/location/<country>
tailscale://navigate/settings[/<anyTab>]
```

The `scripts/deeplink-probe.sh` script can be used to trigger the application to
navigate to a given route by passing that to it.
e.g., `./tool/go run ./scripts/deeplink-probe.go main/devices`

updates tailscale/corp#41056

Signed-off-by: Will Hannah <willh@tailscale.com>
(cherry picked from commit 0d5a376)
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.

3 participants