From df4e4534f415d56e759af4a6e3eac68e51feb517 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Wed, 17 Dec 2025 20:10:58 +0000 Subject: [PATCH] Android: advertise device model to bridge --- .../main/java/com/steipete/clawdis/node/NodeRuntime.kt | 9 +++++++++ .../steipete/clawdis/node/bridge/BridgePairingClient.kt | 6 ++++++ .../com/steipete/clawdis/node/bridge/BridgeSession.kt | 4 ++++ 3 files changed, 19 insertions(+) diff --git a/apps/android/app/src/main/java/com/steipete/clawdis/node/NodeRuntime.kt b/apps/android/app/src/main/java/com/steipete/clawdis/node/NodeRuntime.kt index 78ae2cde2..2eff0cbfc 100644 --- a/apps/android/app/src/main/java/com/steipete/clawdis/node/NodeRuntime.kt +++ b/apps/android/app/src/main/java/com/steipete/clawdis/node/NodeRuntime.kt @@ -1,6 +1,7 @@ package com.steipete.clawdis.node import android.content.Context +import android.os.Build import com.steipete.clawdis.node.bridge.BridgeDiscovery import com.steipete.clawdis.node.bridge.BridgeEndpoint import com.steipete.clawdis.node.bridge.BridgePairingClient @@ -175,6 +176,10 @@ class NodeRuntime(context: Context) { scope.launch { _statusText.value = "Connecting…" val storedToken = prefs.loadBridgeToken() + val modelIdentifier = listOfNotNull(Build.MANUFACTURER, Build.MODEL) + .joinToString(" ") + .trim() + .ifEmpty { null } val resolved = if (storedToken.isNullOrBlank()) { _statusText.value = "Pairing…" @@ -191,6 +196,8 @@ class NodeRuntime(context: Context) { token = null, platform = "Android", version = "dev", + deviceFamily = "Android", + modelIdentifier = modelIdentifier, caps = caps, ), ) @@ -214,6 +221,8 @@ class NodeRuntime(context: Context) { token = authToken, platform = "Android", version = "dev", + deviceFamily = "Android", + modelIdentifier = modelIdentifier, caps = buildList { add("canvas") diff --git a/apps/android/app/src/main/java/com/steipete/clawdis/node/bridge/BridgePairingClient.kt b/apps/android/app/src/main/java/com/steipete/clawdis/node/bridge/BridgePairingClient.kt index 09287b64c..9284c69af 100644 --- a/apps/android/app/src/main/java/com/steipete/clawdis/node/bridge/BridgePairingClient.kt +++ b/apps/android/app/src/main/java/com/steipete/clawdis/node/bridge/BridgePairingClient.kt @@ -25,6 +25,8 @@ class BridgePairingClient { val token: String?, val platform: String?, val version: String?, + val deviceFamily: String?, + val modelIdentifier: String?, val caps: List?, ) @@ -57,6 +59,8 @@ class BridgePairingClient { hello.token?.let { put("token", JsonPrimitive(it)) } hello.platform?.let { put("platform", JsonPrimitive(it)) } hello.version?.let { put("version", JsonPrimitive(it)) } + hello.deviceFamily?.let { put("deviceFamily", JsonPrimitive(it)) } + hello.modelIdentifier?.let { put("modelIdentifier", JsonPrimitive(it)) } hello.caps?.let { put("caps", JsonArray(it.map(::JsonPrimitive))) } }, ) @@ -79,6 +83,8 @@ class BridgePairingClient { hello.displayName?.let { put("displayName", JsonPrimitive(it)) } hello.platform?.let { put("platform", JsonPrimitive(it)) } hello.version?.let { put("version", JsonPrimitive(it)) } + hello.deviceFamily?.let { put("deviceFamily", JsonPrimitive(it)) } + hello.modelIdentifier?.let { put("modelIdentifier", JsonPrimitive(it)) } hello.caps?.let { put("caps", JsonArray(it.map(::JsonPrimitive))) } }, ) diff --git a/apps/android/app/src/main/java/com/steipete/clawdis/node/bridge/BridgeSession.kt b/apps/android/app/src/main/java/com/steipete/clawdis/node/bridge/BridgeSession.kt index 7261be477..3384c0b14 100644 --- a/apps/android/app/src/main/java/com/steipete/clawdis/node/bridge/BridgeSession.kt +++ b/apps/android/app/src/main/java/com/steipete/clawdis/node/bridge/BridgeSession.kt @@ -40,6 +40,8 @@ class BridgeSession( val token: String?, val platform: String?, val version: String?, + val deviceFamily: String?, + val modelIdentifier: String?, val caps: List?, ) @@ -193,6 +195,8 @@ class BridgeSession( hello.token?.let { put("token", JsonPrimitive(it)) } hello.platform?.let { put("platform", JsonPrimitive(it)) } hello.version?.let { put("version", JsonPrimitive(it)) } + hello.deviceFamily?.let { put("deviceFamily", JsonPrimitive(it)) } + hello.modelIdentifier?.let { put("modelIdentifier", JsonPrimitive(it)) } hello.caps?.let { put("caps", JsonArray(it.map(::JsonPrimitive))) } }, )