diff --git a/Makefile b/Makefile index e2b51d9..2db7821 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ # with this name, it will be used. # # The convention here is tailscale-android-build-amd64- -DOCKER_IMAGE := tailscale-android-build-amd64-191124 +DOCKER_IMAGE := tailscale-android-build-amd64-031325-1 export TS_USE_TOOLCHAIN=1 # Auto-select an NDK from ANDROID_HOME (choose highest version available) @@ -46,7 +46,7 @@ else ANDROID_TOOLS_URL := "https://dl.google.com/android/repository/commandlinetools-mac-9477386_latest.zip" ANDROID_TOOLS_SUM := "2072ffce4f54cdc0e6d2074d2f381e7e579b7d63e915c220b96a7db95b2900ee commandlinetools-mac-9477386_latest.zip" endif -ANDROID_SDK_PACKAGES := 'platforms;android-31' 'extras;android;m2repository' 'ndk;23.1.7779620' 'platform-tools' 'build-tools;33.0.2' +ANDROID_SDK_PACKAGES := 'platforms;android-34' 'extras;android;m2repository' 'ndk;23.1.7779620' 'platform-tools' 'build-tools;34.0.0' # Attempt to find an ANDROID_SDK_ROOT / ANDROID_HOME based either from # preexisting environment or common locations. diff --git a/android/src/main/java/com/tailscale/ipn/ui/view/MainView.kt b/android/src/main/java/com/tailscale/ipn/ui/view/MainView.kt index 6a25e03..90e99e6 100644 --- a/android/src/main/java/com/tailscale/ipn/ui/view/MainView.kt +++ b/android/src/main/java/com/tailscale/ipn/ui/view/MainView.kt @@ -3,6 +3,7 @@ package com.tailscale.ipn.ui.view +import android.os.Build import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background import androidx.compose.foundation.clickable @@ -45,7 +46,6 @@ import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState import androidx.compose.runtime.derivedStateOf @@ -540,13 +540,14 @@ fun PeerList( var isListFocussed by remember { mutableStateOf(false) } val expandedPeer = viewModel.expandedMenuPeer.collectAsState() val localClipboardManager = LocalClipboardManager.current - val enableSearch = !isAndroidTV() + // Restrict search to devices running API 33+ (see https://github.com/tailscale/corp/issues/27375) + val enableSearch = Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU Column(modifier = Modifier.fillMaxSize()) { - if (FeatureFlags.isEnabled("enable_new_search")) { + if (enableSearch && FeatureFlags.isEnabled("enable_new_search")) { Search(onSearchBarClick) } else { - if (enableSearch) { + if (!isAndroidTV()) { Box( modifier = Modifier.fillMaxWidth().background(color = MaterialTheme.colorScheme.surface)) { diff --git a/docker/DockerFile.amd64-build b/docker/DockerFile.amd64-build index c4fa38a..b911779 100644 --- a/docker/DockerFile.amd64-build +++ b/docker/DockerFile.amd64-build @@ -1,11 +1,11 @@ # This is a Dockerfile for creating a build environment for # tailscale-android. -FROM --platform=linux/amd64 eclipse-temurin:20-jdk +FROM --platform=linux/amd64 eclipse-temurin:21 # To enable running android tools such as aapt RUN apt-get update && apt-get -y upgrade -RUN apt-get install -y libz1 libstdc++6 unzip +RUN apt-get install -y libz1 libstdc++6 unzip zip # For Go: RUN apt-get -y --no-install-recommends install curl gcc RUN apt-get -y --no-install-recommends install ca-certificates libc6-dev git diff --git a/docker/DockerFile.amd64-shell b/docker/DockerFile.amd64-shell index 5f73272..cdacec7 100644 --- a/docker/DockerFile.amd64-shell +++ b/docker/DockerFile.amd64-shell @@ -1,11 +1,11 @@ # This is a Dockerfile for creating a build environment for # tailscale-android. -FROM --platform=linux/amd64 eclipse-temurin:20-jdk +FROM --platform=linux/amd64 eclipse-temurin:21 # To enable running android tools such as aapt RUN apt-get update && apt-get -y upgrade -RUN apt-get install -y libz1 libstdc++6 unzip +RUN apt-get install -y libz1 libstdc++6 unzip zip # For Go: RUN apt-get -y --no-install-recommends install curl gcc RUN apt-get -y --no-install-recommends install ca-certificates libc6-dev git diff --git a/go.mod b/go.mod index 7713727..1e38f63 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/tailscale/wireguard-go v0.0.0-20250107165329-0b8b35511f19 golang.org/x/mobile v0.0.0-20240806205939-81131f6468ab inet.af/netaddr v0.0.0-20220617031823-097006376321 - tailscale.com v1.81.0-pre.0.20250224230719-8d7033fe7f58 + tailscale.com v1.83.0-pre.0.20250326212221-1ec1a60c107b ) require ( @@ -34,7 +34,7 @@ require ( github.com/djherbis/times v1.6.0 // indirect github.com/fxamacker/cbor/v2 v2.7.0 // indirect github.com/gaissmai/bart v0.18.0 // indirect - github.com/go-json-experiment/json v0.0.0-20250103232110-6a9a0fde9288 // indirect + github.com/go-json-experiment/json v0.0.0-20250223041408-d3c622f1b874 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/godbus/dbus/v5 v5.1.1-0.20230522191255-76236955d466 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect @@ -76,10 +76,10 @@ require ( go4.org/mem v0.0.0-20240501181205-ae6ca9944745 // indirect go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect go4.org/unsafe/assume-no-moving-gc v0.0.0-20230525183740-e7c30c78aeb2 // indirect - golang.org/x/crypto v0.33.0 // indirect + golang.org/x/crypto v0.35.0 // indirect golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac // indirect golang.org/x/mod v0.23.0 // indirect - golang.org/x/net v0.35.0 // indirect + golang.org/x/net v0.36.0 // indirect golang.org/x/sync v0.11.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/term v0.29.0 // indirect diff --git a/go.sum b/go.sum index b601a6e..77a58d5 100644 --- a/go.sum +++ b/go.sum @@ -60,8 +60,8 @@ github.com/gaissmai/bart v0.18.0 h1:jQLBT/RduJu0pv/tLwXE+xKPgtWJejbxuXAR+wLJafo= github.com/gaissmai/bart v0.18.0/go.mod h1:JJzMAhNF5Rjo4SF4jWBrANuJfqY+FvsFhW7t1UZJ+XY= github.com/github/fakeca v0.1.0 h1:Km/MVOFvclqxPM9dZBC4+QE564nU4gz4iZ0D9pMw28I= github.com/github/fakeca v0.1.0/go.mod h1:+bormgoGMMuamOscx7N91aOuUST7wdaJ2rNjeohylyo= -github.com/go-json-experiment/json v0.0.0-20250103232110-6a9a0fde9288 h1:KbX3Z3CgiYlbaavUq3Cj9/MjpO+88S7/AGXzynVDv84= -github.com/go-json-experiment/json v0.0.0-20250103232110-6a9a0fde9288/go.mod h1:BWmvoE1Xia34f3l/ibJweyhrT+aROb/FQ6d+37F0e2s= +github.com/go-json-experiment/json v0.0.0-20250223041408-d3c622f1b874 h1:F8d1AJ6M9UQCavhwmO6ZsrYLfG8zVFWfEfMS2MXPkSY= +github.com/go-json-experiment/json v0.0.0-20250223041408-d3c622f1b874/go.mod h1:TiCD2a1pcmjd7YnhGH0f/zKNcCD06B029pHhzV23c2M= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/godbus/dbus/v5 v5.1.1-0.20230522191255-76236955d466 h1:sQspH8M4niEijh3PFscJRLDnkL547IeP7kpPe3uUhEg= @@ -179,8 +179,8 @@ go4.org/unsafe/assume-no-moving-gc v0.0.0-20230525183740-e7c30c78aeb2/go.mod h1: golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= -golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= +golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac h1:l5+whBCLH3iH2ZNHYLbAe58bo7yrN4mVcnkHDYz5vvs= golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac/go.mod h1:hH+7mtFmImwwcMvScyxUhjuVHR3HGaDPMn9rMSUUbxo= golang.org/x/image v0.24.0 h1:AN7zRgVsbvmTfNyqIbbOraYL8mSwcKncEj8ofjgzcMQ= @@ -193,8 +193,8 @@ golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= -golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= +golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -246,5 +246,5 @@ inet.af/netaddr v0.0.0-20220617031823-097006376321 h1:B4dC8ySKTQXasnjDTMsoCMf1sQ inet.af/netaddr v0.0.0-20220617031823-097006376321/go.mod h1:OIezDfdzOgFhuw4HuWapWq2e9l0H9tK4F1j+ETRtF3k= software.sslmate.com/src/go-pkcs12 v0.4.0 h1:H2g08FrTvSFKUj+D309j1DPfk5APnIdAQAB8aEykJ5k= software.sslmate.com/src/go-pkcs12 v0.4.0/go.mod h1:Qiz0EyvDRJjjxGyUQa2cCNZn/wMyzrRJ/qcDXOQazLI= -tailscale.com v1.81.0-pre.0.20250224230719-8d7033fe7f58 h1:ZVCKlpKkxP0Qfox3I2beLU61tDRRqWIOwk5HDuZViWM= -tailscale.com v1.81.0-pre.0.20250224230719-8d7033fe7f58/go.mod h1:dsTgINkWHs6WE1b83nRegaRuD1nksaJmK6oSP+fPZQw= +tailscale.com v1.83.0-pre.0.20250326212221-1ec1a60c107b h1:vB+ymeR1CcbGR+dFVQoJE9zLhczLCHJpO2z+bERYYHw= +tailscale.com v1.83.0-pre.0.20250326212221-1ec1a60c107b/go.mod h1:iU6kohVzG+bP0/5XjqBAnW8/6nSG/Du++bO+x7VJZD0= diff --git a/go.toolchain.rev b/go.toolchain.rev index ddbabb3..69aec16 100644 --- a/go.toolchain.rev +++ b/go.toolchain.rev @@ -1 +1 @@ -2b494987ff3c1a6a26e10570c490394ff0a77aa4 +4fdaeeb8fe43bcdb4e8cc736433b9cd9c0ddd221