diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e15acee638ad..394c04581597 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -647,6 +647,10 @@ jobs: if: needs.preflight.outputs.run_control_ui_i18n == 'true' run: pnpm ui:i18n:check + - name: Check native app i18n inventory + if: needs.preflight.outputs.run_macos == 'true' || needs.preflight.outputs.run_android == 'true' + run: pnpm native:i18n:check + - name: Pack built runtime artifacts run: tar --posix -cf dist-runtime-build.tar.zst --use-compress-program zstdmt dist dist-runtime diff --git a/apps/.i18n/native-source.json b/apps/.i18n/native-source.json new file mode 100644 index 000000000000..56909c4c650e --- /dev/null +++ b/apps/.i18n/native-source.json @@ -0,0 +1,10061 @@ +{ + "version": 1, + "entries": [ + { + "kind": "ui-call", + "line": 190, + "path": "apps/android/app/src/main/java/ai/openclaw/app/MainActivity.kt", + "source": "OPENCLAW", + "surface": "android", + "id": "native.android.306d765c1cad5699" + }, + { + "kind": "ui-call", + "line": 67, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/AndroidScreenshotModeScreen.kt", + "source": "OpenClaw", + "surface": "android", + "id": "native.android.1c01f8c3181d559f" + }, + { + "kind": "ui-property", + "line": 74, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/AndroidScreenshotModeScreen.kt", + "source": "Connected", + "surface": "android", + "id": "native.android.656c5332c364ed73" + }, + { + "kind": "ui-property", + "line": 99, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/AndroidScreenshotModeScreen.kt", + "source": "Gateway paired", + "surface": "android", + "id": "native.android.2f6698c52d5d30b1" + }, + { + "kind": "ui-property", + "line": 100, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/AndroidScreenshotModeScreen.kt", + "source": "Node", + "surface": "android", + "id": "native.android.bb3ed343c46fedae" + }, + { + "kind": "ui-property", + "line": 101, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/AndroidScreenshotModeScreen.kt", + "source": "Transport", + "surface": "android", + "id": "native.android.16b6d15a1dce5b2a" + }, + { + "kind": "ui-property", + "line": 102, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/AndroidScreenshotModeScreen.kt", + "source": "Capabilities", + "surface": "android", + "id": "native.android.52e8a7b6bf4449bf" + }, + { + "kind": "ui-property", + "line": 105, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/AndroidScreenshotModeScreen.kt", + "source": "Ready", + "surface": "android", + "id": "native.android.0ceab91ac8a10fa8" + }, + { + "kind": "ui-property", + "line": 117, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/AndroidScreenshotModeScreen.kt", + "source": "You", + "surface": "android", + "id": "native.android.ad83a5f31febd534" + }, + { + "kind": "ui-property", + "line": 119, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/AndroidScreenshotModeScreen.kt", + "source": "Molty", + "surface": "android", + "id": "native.android.a14530ed76fecffc" + }, + { + "kind": "ui-property", + "line": 144, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/AndroidScreenshotModeScreen.kt", + "source": "Talk mode", + "surface": "android", + "id": "native.android.be33589766a48528" + }, + { + "kind": "ui-property", + "line": 145, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/AndroidScreenshotModeScreen.kt", + "source": "Wake phrase", + "surface": "android", + "id": "native.android.3173fbe1d6d2c68e" + }, + { + "kind": "ui-property", + "line": 146, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/AndroidScreenshotModeScreen.kt", + "source": "Latency", + "surface": "android", + "id": "native.android.71a6603c36dd95ca" + }, + { + "kind": "ui-property", + "line": 152, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/AndroidScreenshotModeScreen.kt", + "source": "Screen tools", + "surface": "android", + "id": "native.android.59f9fca229d19510" + }, + { + "kind": "ui-property", + "line": 153, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/AndroidScreenshotModeScreen.kt", + "source": "Canvas", + "surface": "android", + "id": "native.android.2620710c7a17d264" + }, + { + "kind": "ui-property", + "line": 154, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/AndroidScreenshotModeScreen.kt", + "source": "Camera", + "surface": "android", + "id": "native.android.7ef56b93ab140322" + }, + { + "kind": "ui-property", + "line": 155, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/AndroidScreenshotModeScreen.kt", + "source": "Location", + "surface": "android", + "id": "native.android.0f53e6f009581cc3" + }, + { + "kind": "ui-call", + "line": 164, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/AndroidScreenshotModeScreen.kt", + "source": "Live context", + "surface": "android", + "id": "native.android.6ba36a13a49d7976" + }, + { + "kind": "ui-property", + "line": 165, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/AndroidScreenshotModeScreen.kt", + "source": "Camera", + "surface": "android", + "id": "native.android.7ef56b93ab140322.165" + }, + { + "kind": "ui-property", + "line": 166, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/AndroidScreenshotModeScreen.kt", + "source": "Screen", + "surface": "android", + "id": "native.android.befcea467891fe02" + }, + { + "kind": "ui-property", + "line": 167, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/AndroidScreenshotModeScreen.kt", + "source": "Location", + "surface": "android", + "id": "native.android.0f53e6f009581cc3.167" + }, + { + "kind": "ui-property", + "line": 175, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/AndroidScreenshotModeScreen.kt", + "source": "Security", + "surface": "android", + "id": "native.android.4623e8f6ce8c3f8f" + }, + { + "kind": "ui-property", + "line": 179, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/AndroidScreenshotModeScreen.kt", + "source": "Notifications", + "surface": "android", + "id": "native.android.086bed0445ddcd67" + }, + { + "kind": "ui-property", + "line": 58, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/CanvasSettingsScreen.kt", + "source": "Canvas", + "surface": "android", + "id": "native.android.abd4a8cb9bc4abef" + }, + { + "kind": "ui-property", + "line": 47, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ChannelsSettingsScreen.kt", + "source": "Channels", + "surface": "android", + "id": "native.android.ee5c88e2e12c50ae" + }, + { + "kind": "ui-call", + "line": 84, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ChannelsSettingsScreen.kt", + "source": "Connect the gateway to load channels.", + "surface": "android", + "id": "native.android.b6acf0eac749ea4f" + }, + { + "kind": "ui-call", + "line": 89, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ChannelsSettingsScreen.kt", + "source": "No channels found.", + "surface": "android", + "id": "native.android.4b0c6dd25a7ab7d6" + }, + { + "kind": "ui-call", + "line": 90, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ChannelsSettingsScreen.kt", + "source": "Telegram, WhatsApp, email, and other channels appear here after setup.", + "surface": "android", + "id": "native.android.fd7bef54ea5c9573" + }, + { + "kind": "ui-call", + "line": 141, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatComposer.kt", + "source": "Type a message…", + "surface": "android", + "id": "native.android.4949d6815387ee5c" + }, + { + "kind": "ui-call", + "line": 150, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatComposer.kt", + "source": "Gateway is offline. Open Settings to reconnect.", + "surface": "android", + "id": "native.android.bd0659567d84bf91" + }, + { + "kind": "ui-property", + "line": 180, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatComposer.kt", + "source": "Select thinking level", + "surface": "android", + "id": "native.android.3ebad9f6394892a7" + }, + { + "kind": "ui-property", + "line": 204, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatComposer.kt", + "source": "Attach", + "surface": "android", + "id": "native.android.cdfdf4d9af402622" + }, + { + "kind": "ui-property", + "line": 212, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatComposer.kt", + "source": "Refresh", + "surface": "android", + "id": "native.android.91a793d47d4fc51a" + }, + { + "kind": "ui-property", + "line": 220, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatComposer.kt", + "source": "Abort", + "surface": "android", + "id": "native.android.e45aa664125cfd02" + }, + { + "kind": "ui-call", + "line": 254, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatComposer.kt", + "source": "Send", + "surface": "android", + "id": "native.android.d7401efe9de023b6" + }, + { + "kind": "ui-call", + "line": 696, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatMarkdown.kt", + "source": "Image unavailable", + "surface": "android", + "id": "native.android.2ee533ce4b7c3285" + }, + { + "kind": "ui-call", + "line": 103, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatMessageListCard.kt", + "source": "Loading session", + "surface": "android", + "id": "native.android.69239493702da212" + }, + { + "kind": "ui-call", + "line": 123, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatMessageListCard.kt", + "source": "No messages yet", + "surface": "android", + "id": "native.android.a7d32e86ce4c0a17" + }, + { + "kind": "ui-call", + "line": 145, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatMessageViews.kt", + "source": "Thinking...", + "surface": "android", + "id": "native.android.a50e44d8f380f9ad" + }, + { + "kind": "ui-call", + "line": 164, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatMessageViews.kt", + "source": "Running tools...", + "surface": "android", + "id": "native.android.3788802f6c138c8b" + }, + { + "kind": "ui-call", + "line": 263, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatMessageViews.kt", + "source": "Unsupported attachment", + "surface": "android", + "id": "native.android.09720189ba712747" + }, + { + "kind": "ui-property", + "line": 184, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt", + "source": "Chat needs attention", + "surface": "android", + "id": "native.android.439e09dfc467513e" + }, + { + "kind": "ui-call", + "line": 278, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt", + "source": "All", + "surface": "android", + "id": "native.android.11133b6f41c5b2f9" + }, + { + "kind": "ui-call", + "line": 328, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt", + "source": "OpenClaw", + "surface": "android", + "id": "native.android.f7a2599ba8e8f32a" + }, + { + "kind": "ui-property", + "line": 350, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt", + "source": "Refresh chat", + "surface": "android", + "id": "native.android.a03c8ab554f5826a" + }, + { + "kind": "ui-call", + "line": 353, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt", + "source": "Chat", + "surface": "android", + "id": "native.android.2b92efe5937f06fa" + }, + { + "kind": "ui-property", + "line": 476, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt", + "source": "Loading session", + "surface": "android", + "id": "native.android.6fc849b20733fe53" + }, + { + "kind": "ui-property", + "line": 567, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt", + "source": "Catch me up", + "surface": "android", + "id": "native.android.a119805448771e19" + }, + { + "kind": "ui-property", + "line": 567, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt", + "source": "Catch me up on my recent OpenClaw sessions and suggest next steps.", + "surface": "android", + "id": "native.android.e48c0affa3566e1e" + }, + { + "kind": "ui-property", + "line": 568, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt", + "source": "Help me turn this goal into a practical checklist:", + "surface": "android", + "id": "native.android.7a8c879c1220905f" + }, + { + "kind": "ui-property", + "line": 568, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt", + "source": "Plan the work", + "surface": "android", + "id": "native.android.c05d48abd79dec24" + }, + { + "kind": "ui-property", + "line": 569, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt", + "source": "Use this phone", + "surface": "android", + "id": "native.android.13e3ef2252392a8c" + }, + { + "kind": "ui-property", + "line": 569, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt", + "source": "What can you help me do from this phone right now?", + "surface": "android", + "id": "native.android.e7bda5878f50af2e" + }, + { + "kind": "ui-call", + "line": 672, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt", + "source": "OpenClaw is preparing a response.", + "surface": "android", + "id": "native.android.5ab12321d1432b72" + }, + { + "kind": "ui-call", + "line": 753, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt", + "source": "Stop", + "surface": "android", + "id": "native.android.8eecae1b6c4ba1bf" + }, + { + "kind": "ui-property", + "line": 835, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt", + "source": "Attach image", + "surface": "android", + "id": "native.android.0b67976feaa7ccb4" + }, + { + "kind": "ui-call", + "line": 850, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt", + "source": "Message OpenClaw", + "surface": "android", + "id": "native.android.20931a8359c744c7" + }, + { + "kind": "ui-property", + "line": 865, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt", + "source": "Voice", + "surface": "android", + "id": "native.android.83ac161e6952be2f" + }, + { + "kind": "ui-property", + "line": 903, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt", + "source": "Remove attachment", + "surface": "android", + "id": "native.android.0c9955e844f9f16d" + }, + { + "kind": "ui-property", + "line": 980, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt", + "source": "Send", + "surface": "android", + "id": "native.android.aa0d4e54e7690c80" + }, + { + "kind": "ui-call", + "line": 266, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatSheetContent.kt", + "source": "CHAT ERROR", + "surface": "android", + "id": "native.android.ec4880fb802ef06f" + }, + { + "kind": "ui-property", + "line": 100, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/CommandPalette.kt", + "source": "Close search", + "surface": "android", + "id": "native.android.01efb2d2e7b70fb6" + }, + { + "kind": "ui-call", + "line": 103, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/CommandPalette.kt", + "source": "Search", + "surface": "android", + "id": "native.android.fdd903cab8ddba65" + }, + { + "kind": "ui-property", + "line": 109, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/CommandPalette.kt", + "source": "Search OpenClaw", + "surface": "android", + "id": "native.android.a931519ddde3f838" + }, + { + "kind": "ui-property", + "line": 113, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/CommandPalette.kt", + "source": "Quick actions", + "surface": "android", + "id": "native.android.e87e9632749929ab" + }, + { + "kind": "ui-property", + "line": 118, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/CommandPalette.kt", + "source": "No actions found", + "surface": "android", + "id": "native.android.c2be1f17aaf817e9" + }, + { + "kind": "ui-property", + "line": 127, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/CommandPalette.kt", + "source": "Sessions", + "surface": "android", + "id": "native.android.7c6d193e6b9828b4" + }, + { + "kind": "ui-property", + "line": 262, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/CommandPalette.kt", + "source": "Open session", + "surface": "android", + "id": "native.android.0494955a4dd594da" + }, + { + "kind": "ui-call", + "line": 103, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Trust this gateway?", + "surface": "android", + "id": "native.android.db9b3ffd6b7983d3" + }, + { + "kind": "ui-call", + "line": 122, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Trust and continue", + "surface": "android", + "id": "native.android.f60e86cd1e4a386f" + }, + { + "kind": "ui-call", + "line": 130, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Cancel", + "surface": "android", + "id": "native.android.e82eac1ea98d5344" + }, + { + "kind": "ui-call", + "line": 161, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Gateway Connection", + "surface": "android", + "id": "native.android.bd14ca8081e66fb5" + }, + { + "kind": "ui-call", + "line": 194, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Endpoint", + "surface": "android", + "id": "native.android.3c87c3eb8b76443d" + }, + { + "kind": "ui-call", + "line": 216, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Status", + "surface": "android", + "id": "native.android.cb8ca12247f5574d" + }, + { + "kind": "ui-call", + "line": 241, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Disconnect", + "surface": "android", + "id": "native.android.3947ebe9e7302445" + }, + { + "kind": "ui-call", + "line": 310, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Connect Gateway", + "surface": "android", + "id": "native.android.29b6c84cc243897f" + }, + { + "kind": "ui-call", + "line": 357, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Copy Report for Claw", + "surface": "android", + "id": "native.android.b81ffcf00e1d5aa2" + }, + { + "kind": "ui-call", + "line": 376, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Advanced controls", + "surface": "android", + "id": "native.android.54e06efb5730c9d3" + }, + { + "kind": "ui-call", + "line": 377, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Setup code, endpoint, TLS, token, password, onboarding.", + "surface": "android", + "id": "native.android.cbff50e93346f3c5" + }, + { + "kind": "ui-call", + "line": 398, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Connection method", + "surface": "android", + "id": "native.android.cb057f35d269d945" + }, + { + "kind": "ui-property", + "line": 401, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Setup Code", + "surface": "android", + "id": "native.android.0e2eec805f9c2448" + }, + { + "kind": "ui-property", + "line": 406, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Manual", + "surface": "android", + "id": "native.android.5fcf0beb9ef48a98" + }, + { + "kind": "ui-call", + "line": 412, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Run these on the gateway host:", + "surface": "android", + "id": "native.android.bcc45347b4e15232" + }, + { + "kind": "ui-call", + "line": 415, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "For Tailscale or public hosts, use wss:// or Tailscale Serve. Private LAN ws:// remains supported.", + "surface": "android", + "id": "native.android.8b607ce7ba3ac4d3" + }, + { + "kind": "ui-call", + "line": 422, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Setup Code", + "surface": "android", + "id": "native.android.4082145b2c1c1393" + }, + { + "kind": "ui-call", + "line": 429, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Paste setup code", + "surface": "android", + "id": "native.android.8338a39bcb90b86e" + }, + { + "kind": "ui-property", + "line": 444, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Android Emulator", + "surface": "android", + "id": "native.android.06295da50c863a52" + }, + { + "kind": "ui-property", + "line": 453, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Localhost", + "surface": "android", + "id": "native.android.988d9feaf26a4cd7" + }, + { + "kind": "ui-call", + "line": 463, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Host", + "surface": "android", + "id": "native.android.3cc6464a0aa1f0ef" + }, + { + "kind": "ui-call", + "line": 505, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Use TLS", + "surface": "android", + "id": "native.android.02693afaa85da5ea" + }, + { + "kind": "ui-call", + "line": 506, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Turn this on for Tailscale or public hosts. Private LAN ws:// remains supported.", + "surface": "android", + "id": "native.android.bdb650918c75aa9b" + }, + { + "kind": "ui-call", + "line": 528, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Token (optional)", + "surface": "android", + "id": "native.android.795ba55a55ed1684" + }, + { + "kind": "ui-call", + "line": 532, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "token", + "surface": "android", + "id": "native.android.60da1ba96bf1ed31" + }, + { + "kind": "ui-call", + "line": 541, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Password (optional)", + "surface": "android", + "id": "native.android.8123f2cfbe415437" + }, + { + "kind": "ui-call", + "line": 549, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "password", + "surface": "android", + "id": "native.android.eb1f4aca9bce2805" + }, + { + "kind": "ui-call", + "line": 566, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Run onboarding again", + "surface": "android", + "id": "native.android.94891650ca526e96" + }, + { + "kind": "ui-call", + "line": 651, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ConnectTabScreen.kt", + "source": "Resolved endpoint", + "surface": "android", + "id": "native.android.436f51d4042a34f3" + }, + { + "kind": "ui-property", + "line": 536, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/design/ClawComponents.kt", + "source": "OpenClaw", + "surface": "android", + "id": "native.android.7280f0ff9d755965" + }, + { + "kind": "ui-property", + "line": 540, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/design/ClawComponents.kt", + "source": "Search", + "surface": "android", + "id": "native.android.390d0c30870cc3cd" + }, + { + "kind": "ui-call", + "line": 550, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/design/ClawComponents.kt", + "source": "OpenClaw", + "surface": "android", + "id": "native.android.be2b601d10e4da8e" + }, + { + "kind": "ui-call", + "line": 551, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/design/ClawComponents.kt", + "source": "Design system prototype", + "surface": "android", + "id": "native.android.07485133a00d5c90" + }, + { + "kind": "ui-property", + "line": 564, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/design/ClawComponents.kt", + "source": "Sessions", + "surface": "android", + "id": "native.android.28e6b737daff1d20" + }, + { + "kind": "ui-property", + "line": 566, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/design/ClawComponents.kt", + "source": "Testing testing 1 2 3", + "surface": "android", + "id": "native.android.6d1ecc239cdee336" + }, + { + "kind": "ui-property", + "line": 571, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/design/ClawComponents.kt", + "source": "Provider setup", + "surface": "android", + "id": "native.android.06a79c2765aed2bc" + }, + { + "kind": "ui-property", + "line": 577, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/design/ClawComponents.kt", + "source": "Ask OpenClaw anything", + "surface": "android", + "id": "native.android.f275a64ae27e2289" + }, + { + "kind": "ui-property", + "line": 591, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/design/ClawComponents.kt", + "source": "Nothing needs your attention", + "surface": "android", + "id": "native.android.9d3dd55ee837d52d" + }, + { + "kind": "ui-property", + "line": 598, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/design/ClawComponents.kt", + "source": "Home", + "surface": "android", + "id": "native.android.2fc9f9e691b48cf4" + }, + { + "kind": "ui-property", + "line": 599, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/design/ClawComponents.kt", + "source": "Chat", + "surface": "android", + "id": "native.android.0fbf96daa3a43282" + }, + { + "kind": "ui-property", + "line": 600, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/design/ClawComponents.kt", + "source": "Voice", + "surface": "android", + "id": "native.android.87c9add98a877392" + }, + { + "kind": "ui-property", + "line": 601, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/design/ClawComponents.kt", + "source": "Settings", + "surface": "android", + "id": "native.android.fb5f6a5d6e3fad1f" + }, + { + "kind": "ui-property", + "line": 52, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/DreamingSettingsScreen.kt", + "source": "Dreaming", + "surface": "android", + "id": "native.android.fcaeeb256d50cb76" + }, + { + "kind": "ui-call", + "line": 82, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/DreamingSettingsScreen.kt", + "source": "Connect the gateway to load dreaming.", + "surface": "android", + "id": "native.android.49a54e0653742e1b" + }, + { + "kind": "ui-property", + "line": 95, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/DreamingSettingsScreen.kt", + "source": "Memory Store", + "surface": "android", + "id": "native.android.4473fe928ab4a792" + }, + { + "kind": "ui-property", + "line": 101, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/DreamingSettingsScreen.kt", + "source": "Signal Index", + "surface": "android", + "id": "native.android.537dc752d2131d4e" + }, + { + "kind": "ui-property", + "line": 107, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/DreamingSettingsScreen.kt", + "source": "Promoted", + "surface": "android", + "id": "native.android.693199e52fc5003b" + }, + { + "kind": "ui-call", + "line": 120, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/DreamingSettingsScreen.kt", + "source": "DIARY", + "surface": "android", + "id": "native.android.4f837346c0e5ee25" + }, + { + "kind": "ui-call", + "line": 124, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/DreamingSettingsScreen.kt", + "source": "No dream diary yet.", + "surface": "android", + "id": "native.android.4776e358136bd7fc" + }, + { + "kind": "ui-call", + "line": 125, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/DreamingSettingsScreen.kt", + "source": "Entries appear after a dreaming cycle writes a narrative summary.", + "surface": "android", + "id": "native.android.e4d818b051f06a9b" + }, + { + "kind": "ui-call", + "line": 132, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/DreamingSettingsScreen.kt", + "source": "The diary is waiting for its first entry.", + "surface": "android", + "id": "native.android.d5fe733ec8b2d6ff" + }, + { + "kind": "ui-call", + "line": 163, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/DreamingSettingsScreen.kt", + "source": "D", + "surface": "android", + "id": "native.android.5ad63873f0e1270f" + }, + { + "kind": "ui-property", + "line": 70, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/HealthLogsSettingsScreen.kt", + "source": "Health", + "surface": "android", + "id": "native.android.e33466cf5d1b88fe" + }, + { + "kind": "ui-property", + "line": 121, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/HealthLogsSettingsScreen.kt", + "source": "Log Entry", + "surface": "android", + "id": "native.android.bc3bb7b18b436057" + }, + { + "kind": "ui-call", + "line": 136, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/HealthLogsSettingsScreen.kt", + "source": "Message", + "surface": "android", + "id": "native.android.a87e03787aee7bdd" + }, + { + "kind": "ui-call", + "line": 142, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/HealthLogsSettingsScreen.kt", + "source": "Raw", + "surface": "android", + "id": "native.android.4aea986d6b6a0d67" + }, + { + "kind": "ui-property", + "line": 169, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/HealthLogsSettingsScreen.kt", + "source": "Gateway", + "surface": "android", + "id": "native.android.ffb96c0f0f63d24b" + }, + { + "kind": "ui-property", + "line": 171, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/HealthLogsSettingsScreen.kt", + "source": "Phone Node", + "surface": "android", + "id": "native.android.ee5c55c2a224d4f2" + }, + { + "kind": "ui-property", + "line": 173, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/HealthLogsSettingsScreen.kt", + "source": "Chat", + "surface": "android", + "id": "native.android.48775a6aafa29319" + }, + { + "kind": "ui-property", + "line": 175, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/HealthLogsSettingsScreen.kt", + "source": "Models", + "surface": "android", + "id": "native.android.538076707692b7f8" + }, + { + "kind": "ui-property", + "line": 177, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/HealthLogsSettingsScreen.kt", + "source": "Voice", + "surface": "android", + "id": "native.android.6902334ee46770f9" + }, + { + "kind": "ui-property", + "line": 179, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/HealthLogsSettingsScreen.kt", + "source": "Runs", + "surface": "android", + "id": "native.android.3abcede0da98c068" + }, + { + "kind": "ui-call", + "line": 192, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/HealthLogsSettingsScreen.kt", + "source": "RECENT LOGS", + "surface": "android", + "id": "native.android.5096e46a0d7ae437" + }, + { + "kind": "ui-call", + "line": 200, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/HealthLogsSettingsScreen.kt", + "source": "Connect the gateway to load recent logs.", + "surface": "android", + "id": "native.android.823fa69734294cb7" + }, + { + "kind": "ui-call", + "line": 204, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/HealthLogsSettingsScreen.kt", + "source": "No recent log entries.", + "surface": "android", + "id": "native.android.1dd06f5ae668e831" + }, + { + "kind": "ui-call", + "line": 220, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/HealthLogsSettingsScreen.kt", + "source": "Showing the latest log chunk.", + "surface": "android", + "id": "native.android.c9dc02d65781a103" + }, + { + "kind": "ui-property", + "line": 53, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/NodesDevicesSettingsScreen.kt", + "source": "Nodes & Devices", + "surface": "android", + "id": "native.android.dedf10d2f5df9e48" + }, + { + "kind": "ui-call", + "line": 83, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/NodesDevicesSettingsScreen.kt", + "source": "Connect the gateway to load nodes and paired devices.", + "surface": "android", + "id": "native.android.9f1aec1c28289fbb" + }, + { + "kind": "ui-call", + "line": 88, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/NodesDevicesSettingsScreen.kt", + "source": "No nodes or paired devices.", + "surface": "android", + "id": "native.android.aee002c1a18433d8" + }, + { + "kind": "ui-call", + "line": 89, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/NodesDevicesSettingsScreen.kt", + "source": "Linked phones and node hosts will appear here after pairing.", + "surface": "android", + "id": "native.android.3369a3483f05c6fd" + }, + { + "kind": "ui-call", + "line": 102, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/NodesDevicesSettingsScreen.kt", + "source": "Device pairing admin needs elevated access. Connected nodes still work.", + "surface": "android", + "id": "native.android.f92949702972811f" + }, + { + "kind": "ui-property", + "line": 106, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/NodesDevicesSettingsScreen.kt", + "source": "Pending Requests", + "surface": "android", + "id": "native.android.f691ea72756b9ada" + }, + { + "kind": "ui-property", + "line": 116, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/NodesDevicesSettingsScreen.kt", + "source": "Nodes", + "surface": "android", + "id": "native.android.f65c9848f3793c4d" + }, + { + "kind": "ui-property", + "line": 126, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/NodesDevicesSettingsScreen.kt", + "source": "Paired Devices", + "surface": "android", + "id": "native.android.070a00529685dbfb" + }, + { + "kind": "ui-call", + "line": 215, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Trust this gateway?", + "surface": "android", + "id": "native.android.40b4074a84478a80" + }, + { + "kind": "ui-call", + "line": 225, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Trust", + "surface": "android", + "id": "native.android.9ac2d4498b17d478" + }, + { + "kind": "ui-call", + "line": 230, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Cancel", + "surface": "android", + "id": "native.android.e26ee07a1d1911be" + }, + { + "kind": "ui-call", + "line": 411, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "OPENCLAW", + "surface": "android", + "id": "native.android.e8893dbc155f10f9" + }, + { + "kind": "ui-call", + "line": 416, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Your personal AI assistant. Exfoliate! Exfoliate!", + "surface": "android", + "id": "native.android.ac4ab5cb08ab8746" + }, + { + "kind": "ui-property", + "line": 427, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Connect Gateway", + "surface": "android", + "id": "native.android.d58f9b404be3bab3" + }, + { + "kind": "ui-property", + "line": 443, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "OpenClaw logo", + "surface": "android", + "id": "native.android.15ac481631a30324" + }, + { + "kind": "ui-property", + "line": 537, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Gateway Setup", + "surface": "android", + "id": "native.android.2635411bcff2abdf" + }, + { + "kind": "ui-property", + "line": 542, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Scan setup code", + "surface": "android", + "id": "native.android.76ceadaf7b51474c" + }, + { + "kind": "ui-property", + "line": 550, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Nearby gateway", + "surface": "android", + "id": "native.android.bfd274cb057bd574" + }, + { + "kind": "ui-property", + "line": 559, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Enter gateway URL", + "surface": "android", + "id": "native.android.25e15f33b1c19f06" + }, + { + "kind": "ui-property", + "line": 567, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Setup code issue", + "surface": "android", + "id": "native.android.1c98a29d88f42418" + }, + { + "kind": "ui-call", + "line": 584, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Advanced", + "surface": "android", + "id": "native.android.8c5db1916e922a5a" + }, + { + "kind": "ui-property", + "line": 593, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Setup code", + "surface": "android", + "id": "native.android.b51ff2674db4bab8" + }, + { + "kind": "ui-property", + "line": 595, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Host", + "surface": "android", + "id": "native.android.e4cba0244fdca9df" + }, + { + "kind": "ui-property", + "line": 596, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Port", + "surface": "android", + "id": "native.android.b7c2836e067ae847" + }, + { + "kind": "ui-property", + "line": 602, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Token optional", + "surface": "android", + "id": "native.android.4bab1ec34722c479" + }, + { + "kind": "ui-property", + "line": 603, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Password optional", + "surface": "android", + "id": "native.android.979ae1cfc99f4aa6" + }, + { + "kind": "ui-property", + "line": 641, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Gateway Recovery", + "surface": "android", + "id": "native.android.eca8b5b4698ba156" + }, + { + "kind": "ui-call", + "line": 677, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Last gateway", + "surface": "android", + "id": "native.android.7745f9f035b0463f" + }, + { + "kind": "ui-property", + "line": 724, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Edit connection", + "surface": "android", + "id": "native.android.e72bea0c769d2354" + }, + { + "kind": "ui-property", + "line": 725, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Copy diagnostic", + "surface": "android", + "id": "native.android.4b08105677ad128c" + }, + { + "kind": "ui-property", + "line": 759, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Copy approval command", + "surface": "android", + "id": "native.android.d352768b33909665" + }, + { + "kind": "ui-call", + "line": 785, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Allow permissions", + "surface": "android", + "id": "native.android.ef45ac79b2ba1ce3" + }, + { + "kind": "ui-call", + "line": 790, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "These permissions keep OpenClaw secure and useful.", + "surface": "android", + "id": "native.android.ffdde83c5cd3b716" + }, + { + "kind": "ui-property", + "line": 841, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Back", + "surface": "android", + "id": "native.android.bbb5487f0dc5555c" + }, + { + "kind": "ui-property", + "line": 869, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Open $title", + "surface": "android", + "id": "native.android.78c13087af44ca13" + }, + { + "kind": "ui-call", + "line": 926, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Permissions", + "surface": "android", + "id": "native.android.1f83a6973cd9d621" + }, + { + "kind": "ui-call", + "line": 928, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Choose what this phone can share with OpenClaw. You can change these later in Settings.", + "surface": "android", + "id": "native.android.f38ca3445453a6bb" + }, + { + "kind": "ui-call", + "line": 936, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Done", + "surface": "android", + "id": "native.android.552df4241451e350" + }, + { + "kind": "ui-property", + "line": 949, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Back", + "surface": "android", + "id": "native.android.bbb5487f0dc5555c.949" + }, + { + "kind": "ui-call", + "line": 952, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Permission Setup", + "surface": "android", + "id": "native.android.a67520d5c3818724" + }, + { + "kind": "ui-call", + "line": 1033, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Continue", + "surface": "android", + "id": "native.android.b56319cfea0b412f" + }, + { + "kind": "ui-property", + "line": 1049, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Connected", + "surface": "android", + "id": "native.android.8eb75bf90e40b87d" + }, + { + "kind": "ui-property", + "line": 1050, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Your Gateway is ready.", + "surface": "android", + "id": "native.android.f2db02232fe0c670" + }, + { + "kind": "ui-property", + "line": 1053, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Pairing Gateway", + "surface": "android", + "id": "native.android.2c7c31ff12ac75d4" + }, + { + "kind": "ui-property", + "line": 1054, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Approve this phone on the gateway. Then retry the connection.", + "surface": "android", + "id": "native.android.851ad6ca68be9a7b" + }, + { + "kind": "ui-property", + "line": 1057, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Node Approval Pending", + "surface": "android", + "id": "native.android.c2e84e295b8c961c" + }, + { + "kind": "ui-property", + "line": 1058, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Gateway pairing worked. Approve this phone's node capabilities from an operator UI.", + "surface": "android", + "id": "native.android.5f8a47dfbb4e65c1" + }, + { + "kind": "ui-property", + "line": 1061, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Pairing Gateway", + "surface": "android", + "id": "native.android.2c7c31ff12ac75d4.1061" + }, + { + "kind": "ui-property", + "line": 1062, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Approval is in progress. OpenClaw will reconnect automatically.", + "surface": "android", + "id": "native.android.e8a24b86aaa0df08" + }, + { + "kind": "ui-property", + "line": 1065, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Connecting Gateway", + "surface": "android", + "id": "native.android.af4a841b739b8fa0" + }, + { + "kind": "ui-property", + "line": 1066, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "OpenClaw is checking gateway and node access.", + "surface": "android", + "id": "native.android.869636a5ee0ae9cd" + }, + { + "kind": "ui-property", + "line": 1069, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "Connection issue", + "surface": "android", + "id": "native.android.aa4c4d36a4614549" + }, + { + "kind": "ui-property", + "line": 1070, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/OnboardingFlow.kt", + "source": "We could not reach your Gateway. Let's fix this.", + "surface": "android", + "id": "native.android.5de7d12a0b6616a8" + }, + { + "kind": "ui-property", + "line": 56, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/PostOnboardingTabs.kt", + "source": "Connect", + "surface": "android", + "id": "native.android.6a4f6e76d92a917a" + }, + { + "kind": "ui-property", + "line": 57, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/PostOnboardingTabs.kt", + "source": "Chat", + "surface": "android", + "id": "native.android.1212a87c33a1410f" + }, + { + "kind": "ui-property", + "line": 58, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/PostOnboardingTabs.kt", + "source": "Voice", + "surface": "android", + "id": "native.android.7453b2c43422ced8" + }, + { + "kind": "ui-property", + "line": 59, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/PostOnboardingTabs.kt", + "source": "Screen", + "surface": "android", + "id": "native.android.62e03ecc7a877f42" + }, + { + "kind": "ui-property", + "line": 60, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/PostOnboardingTabs.kt", + "source": "Settings", + "surface": "android", + "id": "native.android.40a0c819d2da8d1d" + }, + { + "kind": "ui-call", + "line": 271, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/PostOnboardingTabs.kt", + "source": "OpenClaw", + "surface": "android", + "id": "native.android.4239457d7155d640" + }, + { + "kind": "ui-property", + "line": 86, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ProvidersModelsScreen.kt", + "source": "Back", + "surface": "android", + "id": "native.android.50d95f79954eda4b" + }, + { + "kind": "ui-call", + "line": 89, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ProvidersModelsScreen.kt", + "source": "Providers & Models", + "surface": "android", + "id": "native.android.4c1d5033ee947569" + }, + { + "kind": "ui-call", + "line": 90, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ProvidersModelsScreen.kt", + "source": "Review provider readiness and configured models.", + "surface": "android", + "id": "native.android.557f23a9cd21d8dc" + }, + { + "kind": "ui-property", + "line": 110, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ProvidersModelsScreen.kt", + "source": "Connected providers", + "surface": "android", + "id": "native.android.ab0eff9a93e20b31" + }, + { + "kind": "ui-property", + "line": 115, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ProvidersModelsScreen.kt", + "source": "Gateway offline", + "surface": "android", + "id": "native.android.6fd3622c201c1f1b" + }, + { + "kind": "ui-property", + "line": 241, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ProvidersModelsScreen.kt", + "source": "Ready", + "surface": "android", + "id": "native.android.f8fdcf491f0044d4" + }, + { + "kind": "ui-property", + "line": 242, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ProvidersModelsScreen.kt", + "source": "Models", + "surface": "android", + "id": "native.android.cb21e5bd384cebaa" + }, + { + "kind": "ui-property", + "line": 243, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ProvidersModelsScreen.kt", + "source": "Needs", + "surface": "android", + "id": "native.android.58354d1203cd537d" + }, + { + "kind": "ui-call", + "line": 110, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SessionsScreen.kt", + "source": "Sessions", + "surface": "android", + "id": "native.android.6e3a48ce367e9c0f" + }, + { + "kind": "ui-property", + "line": 111, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SessionsScreen.kt", + "source": "Search sessions", + "surface": "android", + "id": "native.android.7b9af9ed6092a7a9" + }, + { + "kind": "ui-property", + "line": 112, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SessionsScreen.kt", + "source": "Reverse session sort", + "surface": "android", + "id": "native.android.2a3bd62ebc2201d0" + }, + { + "kind": "ui-property", + "line": 137, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SessionsScreen.kt", + "source": "Toggle session layout", + "surface": "android", + "id": "native.android.176b8c3d55495778" + }, + { + "kind": "ui-property", + "line": 177, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Usage", + "surface": "android", + "id": "native.android.d60e89214fa6015f" + }, + { + "kind": "ui-call", + "line": 197, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Connect the gateway to load usage.", + "surface": "android", + "id": "native.android.82c9f729ea9805f7" + }, + { + "kind": "ui-call", + "line": 202, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "No usage data yet.", + "surface": "android", + "id": "native.android.38b80d757215562e" + }, + { + "kind": "ui-call", + "line": 203, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Provider limits will appear here when your gateway reports them.", + "surface": "android", + "id": "native.android.b26b40b93e5ce928" + }, + { + "kind": "ui-property", + "line": 228, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Cron Jobs", + "surface": "android", + "id": "native.android.99659d3e95a73fa5" + }, + { + "kind": "ui-call", + "line": 239, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Android shows scheduled work status. Create and edit schedules from the desktop app.", + "surface": "android", + "id": "native.android.1d541d7f06c38836" + }, + { + "kind": "ui-call", + "line": 249, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Connect the gateway to load cron jobs.", + "surface": "android", + "id": "native.android.86a6177578cd6876" + }, + { + "kind": "ui-call", + "line": 254, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "No scheduled jobs.", + "surface": "android", + "id": "native.android.683abd1bda4a35dd" + }, + { + "kind": "ui-call", + "line": 255, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Create recurring OpenClaw work from the desktop app.", + "surface": "android", + "id": "native.android.42219c01f56a387a" + }, + { + "kind": "ui-property", + "line": 278, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Agents", + "surface": "android", + "id": "native.android.85dfba2df3d2f9bf" + }, + { + "kind": "ui-call", + "line": 289, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Connect the gateway to load agents.", + "surface": "android", + "id": "native.android.f63903f947c86516" + }, + { + "kind": "ui-call", + "line": 293, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "No agents loaded yet.", + "surface": "android", + "id": "native.android.e88e22821030dd0a" + }, + { + "kind": "ui-property", + "line": 319, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Approvals", + "surface": "android", + "id": "native.android.2633f879cf800a18" + }, + { + "kind": "ui-call", + "line": 343, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Gateway disconnected.", + "surface": "android", + "id": "native.android.9718c6e70e437f74" + }, + { + "kind": "ui-call", + "line": 344, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Connect the gateway to load approval requests in the app.", + "surface": "android", + "id": "native.android.b979ca07070fcdd9" + }, + { + "kind": "ui-call", + "line": 350, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "No gateway approvals.", + "surface": "android", + "id": "native.android.ab37f6d3b83c0a32" + }, + { + "kind": "ui-call", + "line": 351, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Exec approval requests will appear here while this phone is connected.", + "surface": "android", + "id": "native.android.d581382b9fc1cbc2" + }, + { + "kind": "ui-call", + "line": 358, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Session activity", + "surface": "android", + "id": "native.android.051255a4c9071d50" + }, + { + "kind": "ui-call", + "line": 359, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Chat tool calls waiting in the active session remain visible here.", + "surface": "android", + "id": "native.android.c38d1730faf4d1c2" + }, + { + "kind": "ui-property", + "line": 373, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Profile", + "surface": "android", + "id": "native.android.0e46e5049f6d95ad" + }, + { + "kind": "ui-property", + "line": 376, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Device name", + "surface": "android", + "id": "native.android.64fe299865951762" + }, + { + "kind": "ui-property", + "line": 392, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Talk Provider Setup", + "surface": "android", + "id": "native.android.a0728b46a96c2a36" + }, + { + "kind": "ui-call", + "line": 397, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Audio Test", + "surface": "android", + "id": "native.android.4451aa6698a336b8" + }, + { + "kind": "ui-call", + "line": 398, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Check that OpenClaw can speak clearly on this phone.", + "surface": "android", + "id": "native.android.7928dc8ef7aff186" + }, + { + "kind": "ui-property", + "line": 419, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Realtime Provider", + "surface": "android", + "id": "native.android.f5bc9099a6938281" + }, + { + "kind": "ui-property", + "line": 426, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Voice", + "surface": "android", + "id": "native.android.d6d7e50afd109d41" + }, + { + "kind": "ui-property", + "line": 433, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Transport", + "surface": "android", + "id": "native.android.bb3d1b6d267e5fd1" + }, + { + "kind": "ui-property", + "line": 584, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Notifications", + "surface": "android", + "id": "native.android.6967dded9fd1fa21" + }, + { + "kind": "ui-call", + "line": 615, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Forwarding Mode", + "surface": "android", + "id": "native.android.63ebf993161b5ce8" + }, + { + "kind": "ui-call", + "line": 664, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "App Filter", + "surface": "android", + "id": "native.android.ad5cf05b09acf4dc" + }, + { + "kind": "ui-property", + "line": 676, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Search apps", + "surface": "android", + "id": "native.android.63de184625ab20c4" + }, + { + "kind": "ui-property", + "line": 679, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Show System Apps", + "surface": "android", + "id": "native.android.4c95d9fa1e637fb9" + }, + { + "kind": "ui-call", + "line": 687, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "No matching apps.", + "surface": "android", + "id": "native.android.d6bea54944c65885" + }, + { + "kind": "ui-property", + "line": 806, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Phone Capabilities", + "surface": "android", + "id": "native.android.186969ffccd96c1e" + }, + { + "kind": "ui-call", + "line": 825, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Location", + "surface": "android", + "id": "native.android.f46c213bf2629125" + }, + { + "kind": "ui-property", + "line": 861, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Gateway", + "surface": "android", + "id": "native.android.a02d1fcbf14e3148" + }, + { + "kind": "ui-call", + "line": 878, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Pair New Gateway", + "surface": "android", + "id": "native.android.325047954ba210ef" + }, + { + "kind": "ui-call", + "line": 879, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Clear this phone's saved gateway access and scan a fresh setup code.", + "surface": "android", + "id": "native.android.189c75f101d167a5" + }, + { + "kind": "ui-call", + "line": 885, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Android can scan or paste an existing setup code, but this gateway does not expose setup-code generation to the app yet. Generate the QR/code on the gateway host with openclaw qr, then scan it here or paste the setup code below.", + "surface": "android", + "id": "native.android.83ac308ae3f23235" + }, + { + "kind": "ui-call", + "line": 895, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Connection Setup", + "surface": "android", + "id": "native.android.7b96faf36176a8b5" + }, + { + "kind": "ui-property", + "line": 896, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Setup code", + "surface": "android", + "id": "native.android.85a2499395fffb84" + }, + { + "kind": "ui-property", + "line": 898, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Host", + "surface": "android", + "id": "native.android.a838ee4d2883bdef" + }, + { + "kind": "ui-property", + "line": 899, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Port", + "surface": "android", + "id": "native.android.b7ad370295347370" + }, + { + "kind": "ui-property", + "line": 907, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Token", + "surface": "android", + "id": "native.android.796d84f623bcd256" + }, + { + "kind": "ui-property", + "line": 908, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Bootstrap", + "surface": "android", + "id": "native.android.e5dcccb65ed482c4" + }, + { + "kind": "ui-property", + "line": 910, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Password", + "surface": "android", + "id": "native.android.13e7c8e8b1e35918" + }, + { + "kind": "ui-property", + "line": 971, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Appearance", + "surface": "android", + "id": "native.android.8f506c049e677558" + }, + { + "kind": "ui-call", + "line": 982, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Theme", + "surface": "android", + "id": "native.android.f116c52c0e56a463" + }, + { + "kind": "ui-property", + "line": 1029, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "About", + "surface": "android", + "id": "native.android.f2b194e3d0a09247" + }, + { + "kind": "ui-property", + "line": 1041, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Gateway", + "surface": "android", + "id": "native.android.a02d1fcbf14e3148.1041" + }, + { + "kind": "ui-property", + "line": 1043, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Runtime", + "surface": "android", + "id": "native.android.cacc147ff831cce1" + }, + { + "kind": "ui-property", + "line": 1046, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Update", + "surface": "android", + "id": "native.android.b2f9a83f3b58a505" + }, + { + "kind": "ui-property", + "line": 1113, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsScreens.kt", + "source": "Back", + "surface": "android", + "id": "native.android.a4b3061309a6eda6" + }, + { + "kind": "ui-call", + "line": 475, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "DEVICE", + "surface": "android", + "id": "native.android.46ba30c035d8f9b3" + }, + { + "kind": "ui-call", + "line": 486, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Name", + "surface": "android", + "id": "native.android.00d9f5fe4abd05a0" + }, + { + "kind": "ui-call", + "line": 496, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "$deviceModel · $appVersion", + "surface": "android", + "id": "native.android.d35345db50231440" + }, + { + "kind": "ui-call", + "line": 508, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Default Assistant", + "surface": "android", + "id": "native.android.a3959f171202f031" + }, + { + "kind": "ui-call", + "line": 544, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "MEDIA", + "surface": "android", + "id": "native.android.2949f2c21abc7e61" + }, + { + "kind": "ui-call", + "line": 555, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Microphone", + "surface": "android", + "id": "native.android.d8116d29802a3122" + }, + { + "kind": "ui-call", + "line": 585, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Camera", + "surface": "android", + "id": "native.android.72cb670153cdb9a2" + }, + { + "kind": "ui-call", + "line": 586, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Photos and video clips (foreground only).", + "surface": "android", + "id": "native.android.29a57979453ac97e" + }, + { + "kind": "ui-call", + "line": 594, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "NOTIFICATIONS", + "surface": "android", + "id": "native.android.893b84d511b75a97" + }, + { + "kind": "ui-call", + "line": 605, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "System Notifications", + "surface": "android", + "id": "native.android.d316b20dd0309255" + }, + { + "kind": "ui-call", + "line": 607, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Alerts and foreground service.", + "surface": "android", + "id": "native.android.ef0ca43d6ab9e92c" + }, + { + "kind": "ui-call", + "line": 632, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Notification Listener Access", + "surface": "android", + "id": "native.android.30bcd3f0ebf33d13" + }, + { + "kind": "ui-call", + "line": 634, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Required for `notifications.list`, `notifications.actions`, and forwarded notification events.", + "surface": "android", + "id": "native.android.f5c666d3707d9a31" + }, + { + "kind": "ui-call", + "line": 657, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "SMS", + "surface": "android", + "id": "native.android.581a2f434f14c5a2" + }, + { + "kind": "ui-call", + "line": 659, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Send and search SMS from this device.", + "surface": "android", + "id": "native.android.51b5f4cf7eaa5c86" + }, + { + "kind": "ui-call", + "line": 693, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Forward Notification Events", + "surface": "android", + "id": "native.android.8c32ca1f11a93a25" + }, + { + "kind": "ui-call", + "line": 732, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Package Filter: Allowlist", + "surface": "android", + "id": "native.android.0ca0ef510d5c07d3" + }, + { + "kind": "ui-call", + "line": 734, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Only listed package IDs are forwarded.", + "surface": "android", + "id": "native.android.57bc87918c65bb9f" + }, + { + "kind": "ui-call", + "line": 750, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Package Filter: Blocklist", + "surface": "android", + "id": "native.android.c20fb2c785da76b8" + }, + { + "kind": "ui-call", + "line": 752, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "All packages except listed IDs are forwarded.", + "surface": "android", + "id": "native.android.7395a775f7d34568" + }, + { + "kind": "ui-call", + "line": 794, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Search apps", + "surface": "android", + "id": "native.android.a06d9e470d1d453f" + }, + { + "kind": "ui-call", + "line": 806, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Show System Apps", + "surface": "android", + "id": "native.android.b035f039d963c268" + }, + { + "kind": "ui-call", + "line": 808, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Include Android/system packages in results.", + "surface": "android", + "id": "native.android.1600a4884e2a41da" + }, + { + "kind": "ui-call", + "line": 847, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Quiet Hours", + "surface": "android", + "id": "native.android.e2ef6b37990a691c" + }, + { + "kind": "ui-call", + "line": 849, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Suppress forwarding during a local time window.", + "surface": "android", + "id": "native.android.a4f770f835357f6c" + }, + { + "kind": "ui-call", + "line": 871, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Quiet Start (HH:mm)", + "surface": "android", + "id": "native.android.e1869f00aa2189c7" + }, + { + "kind": "ui-call", + "line": 879, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Use 24-hour HH:mm format, for example 22:00.", + "surface": "android", + "id": "native.android.d608320273495697" + }, + { + "kind": "ui-call", + "line": 888, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Quiet End (HH:mm)", + "surface": "android", + "id": "native.android.ddcfd9ba56cc1aeb" + }, + { + "kind": "ui-call", + "line": 896, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Use 24-hour HH:mm format, for example 07:00.", + "surface": "android", + "id": "native.android.4921ed94f99d6e63" + }, + { + "kind": "ui-call", + "line": 915, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Save Quiet Hours", + "surface": "android", + "id": "native.android.556d0a3c15366f05" + }, + { + "kind": "ui-call", + "line": 923, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Max Events / Minute", + "surface": "android", + "id": "native.android.63501cb40aae19ea" + }, + { + "kind": "ui-call", + "line": 941, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Save Rate", + "surface": "android", + "id": "native.android.cad16090254466f2" + }, + { + "kind": "ui-call", + "line": 950, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Route Session Key (optional)", + "surface": "android", + "id": "native.android.a08855b4ebbbd10a" + }, + { + "kind": "ui-call", + "line": 957, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Blank keeps notification events on this device's default notification route. Set a key only to pin forwarding into a different session.", + "surface": "android", + "id": "native.android.db352fa71ce1e349" + }, + { + "kind": "ui-call", + "line": 979, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Save Session Route", + "surface": "android", + "id": "native.android.6051f516f0825a19" + }, + { + "kind": "ui-call", + "line": 987, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "DATA ACCESS", + "surface": "android", + "id": "native.android.908f014114bee723" + }, + { + "kind": "ui-call", + "line": 999, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Photos", + "surface": "android", + "id": "native.android.da5835468d89c5c7" + }, + { + "kind": "ui-call", + "line": 1000, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Access recent photos.", + "surface": "android", + "id": "native.android.37cc59babec722da" + }, + { + "kind": "ui-call", + "line": 1025, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Contacts", + "surface": "android", + "id": "native.android.7a5393132c797c82" + }, + { + "kind": "ui-call", + "line": 1026, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Search and add contacts.", + "surface": "android", + "id": "native.android.2d3e44bab8c02b4e" + }, + { + "kind": "ui-call", + "line": 1052, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Calendar", + "surface": "android", + "id": "native.android.be1a5598d23e8b99" + }, + { + "kind": "ui-call", + "line": 1053, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Read and create events.", + "surface": "android", + "id": "native.android.dbd6257d7ed809a9" + }, + { + "kind": "ui-call", + "line": 1080, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Call Log", + "surface": "android", + "id": "native.android.735879662e992dcd" + }, + { + "kind": "ui-call", + "line": 1081, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Search recent call history.", + "surface": "android", + "id": "native.android.3c842261a945e43c" + }, + { + "kind": "ui-call", + "line": 1107, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Motion", + "surface": "android", + "id": "native.android.475e97f2df757f8b" + }, + { + "kind": "ui-call", + "line": 1108, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Track steps and activity.", + "surface": "android", + "id": "native.android.fa5092a818a770ab" + }, + { + "kind": "ui-call", + "line": 1137, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "LOCATION", + "surface": "android", + "id": "native.android.304217db5e6b3192" + }, + { + "kind": "ui-call", + "line": 1148, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Off", + "surface": "android", + "id": "native.android.474bf9e9dd0bb1ab" + }, + { + "kind": "ui-call", + "line": 1149, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Disable location sharing.", + "surface": "android", + "id": "native.android.7d3e67457d28228a" + }, + { + "kind": "ui-call", + "line": 1161, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "While Using", + "surface": "android", + "id": "native.android.5d60864f0652a0ab" + }, + { + "kind": "ui-call", + "line": 1162, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Only while OpenClaw is open.", + "surface": "android", + "id": "native.android.3b2109ae1192e191" + }, + { + "kind": "ui-call", + "line": 1174, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Precise Location", + "surface": "android", + "id": "native.android.b92944ae7d52f9e3" + }, + { + "kind": "ui-call", + "line": 1175, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Use precise GPS when available.", + "surface": "android", + "id": "native.android.a8bc0f574f3563b0" + }, + { + "kind": "ui-call", + "line": 1189, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "PREFERENCES", + "surface": "android", + "id": "native.android.8c3caf6577f67577" + }, + { + "kind": "ui-call", + "line": 1200, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Prevent Sleep", + "surface": "android", + "id": "native.android.a88b03a8b3e7a353" + }, + { + "kind": "ui-call", + "line": 1201, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Keep screen awake while open.", + "surface": "android", + "id": "native.android.a347983646f16109" + }, + { + "kind": "ui-call", + "line": 1208, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Debug Canvas", + "surface": "android", + "id": "native.android.95b2da6c6a76bb18" + }, + { + "kind": "ui-call", + "line": 1209, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SettingsSheet.kt", + "source": "Show status overlay on canvas.", + "surface": "android", + "id": "native.android.9f346a677f3367e7" + }, + { + "kind": "ui-property", + "line": 109, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Home", + "surface": "android", + "id": "native.android.cf6164276cf1a1e5" + }, + { + "kind": "ui-property", + "line": 110, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Chat", + "surface": "android", + "id": "native.android.4fdf869738b5b8dd" + }, + { + "kind": "ui-property", + "line": 111, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Voice", + "surface": "android", + "id": "native.android.7e8a4f353b357a1f" + }, + { + "kind": "ui-property", + "line": 112, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Sessions", + "surface": "android", + "id": "native.android.c86c01198908176a" + }, + { + "kind": "ui-property", + "line": 113, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Settings", + "surface": "android", + "id": "native.android.bd5c8eec2a2709eb" + }, + { + "kind": "ui-property", + "line": 114, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Providers", + "surface": "android", + "id": "native.android.d0a6f4d9a436d291" + }, + { + "kind": "ui-call", + "line": 336, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Trust this gateway?", + "surface": "android", + "id": "native.android.5922535fe24f23d7" + }, + { + "kind": "ui-call", + "line": 340, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Trust", + "surface": "android", + "id": "native.android.2526d4e2c33e53d6" + }, + { + "kind": "ui-call", + "line": 345, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Cancel", + "surface": "android", + "id": "native.android.d066cab1c65d5447" + }, + { + "kind": "ui-call", + "line": 423, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Overview", + "surface": "android", + "id": "native.android.a415d9a90a1a19b8" + }, + { + "kind": "ui-property", + "line": 469, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "No recent sessions", + "surface": "android", + "id": "native.android.3d700a49d6f79734" + }, + { + "kind": "ui-call", + "line": 530, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "OpenClaw", + "surface": "android", + "id": "native.android.2bfeca8fa66d45e2" + }, + { + "kind": "ui-property", + "line": 539, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Search", + "surface": "android", + "id": "native.android.9a56ca84a2bf2532" + }, + { + "kind": "ui-call", + "line": 591, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "ACTIVE AGENT", + "surface": "android", + "id": "native.android.6cde2c9a6a3aa5ec" + }, + { + "kind": "ui-property", + "line": 603, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Runs", + "surface": "android", + "id": "native.android.55d811ce6427a921" + }, + { + "kind": "ui-property", + "line": 604, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Sessions", + "surface": "android", + "id": "native.android.c86c01198908176a.604" + }, + { + "kind": "ui-property", + "line": 605, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Cron", + "surface": "android", + "id": "native.android.bf3f9215e63dcc53" + }, + { + "kind": "ui-call", + "line": 825, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Talk", + "surface": "android", + "id": "native.android.2914f6e4f3470a73" + }, + { + "kind": "ui-call", + "line": 826, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Open Talk", + "surface": "android", + "id": "native.android.97570ad4e9c5f9bd" + }, + { + "kind": "ui-property", + "line": 828, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Talk settings", + "surface": "android", + "id": "native.android.75c567396ad9be97" + }, + { + "kind": "ui-property", + "line": 836, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Recent Sessions", + "surface": "android", + "id": "native.android.df2da34b6171deb2" + }, + { + "kind": "ui-call", + "line": 845, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "View all", + "surface": "android", + "id": "native.android.872f4eab0beb3ff2" + }, + { + "kind": "ui-property", + "line": 939, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Gateway", + "surface": "android", + "id": "native.android.55de87a90d0e66af" + }, + { + "kind": "ui-property", + "line": 963, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Nodes", + "surface": "android", + "id": "native.android.14d2c87391558eab" + }, + { + "kind": "ui-property", + "line": 985, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Approvals", + "surface": "android", + "id": "native.android.b59ca0cad801c638" + }, + { + "kind": "ui-property", + "line": 994, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Sessions", + "surface": "android", + "id": "native.android.c86c01198908176a.994" + }, + { + "kind": "ui-call", + "line": 1168, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Needs attention", + "surface": "android", + "id": "native.android.a262bc817d5cc80f" + }, + { + "kind": "ui-property", + "line": 1307, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Open session", + "surface": "android", + "id": "native.android.0de6b18d3ca54399" + }, + { + "kind": "ui-property", + "line": 1419, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Back to home", + "surface": "android", + "id": "native.android.3b4e0d6a56733b8c" + }, + { + "kind": "ui-call", + "line": 1422, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Settings", + "surface": "android", + "id": "native.android.4e320e250793dd90" + }, + { + "kind": "ui-property", + "line": 1425, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Search settings", + "surface": "android", + "id": "native.android.c85a95184a051f27" + }, + { + "kind": "ui-call", + "line": 1707, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "OpenClaw mobile", + "surface": "android", + "id": "native.android.eb3aabfa6c8e7882" + }, + { + "kind": "ui-property", + "line": 1711, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt", + "source": "Open profile", + "surface": "android", + "id": "native.android.10d5cf9b543e57a5" + }, + { + "kind": "ui-property", + "line": 67, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SkillsSettingsScreen.kt", + "source": "Skills", + "surface": "android", + "id": "native.android.be8a954fb2ac7877" + }, + { + "kind": "ui-call", + "line": 96, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SkillsSettingsScreen.kt", + "source": "Connect the gateway to load skills.", + "surface": "android", + "id": "native.android.a305b7ff044840d5" + }, + { + "kind": "ui-call", + "line": 101, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SkillsSettingsScreen.kt", + "source": "No skills installed.", + "surface": "android", + "id": "native.android.5012b36de4b421aa" + }, + { + "kind": "ui-call", + "line": 102, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SkillsSettingsScreen.kt", + "source": "Skills installed on the gateway will appear here.", + "surface": "android", + "id": "native.android.f0aa5d1b6673d1e5" + }, + { + "kind": "ui-call", + "line": 144, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SkillsSettingsScreen.kt", + "source": "Setup", + "surface": "android", + "id": "native.android.44c50fe7611db36e" + }, + { + "kind": "ui-call", + "line": 157, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SkillsSettingsScreen.kt", + "source": "Connect the gateway to load skill details.", + "surface": "android", + "id": "native.android.3fdcc29284b8151c" + }, + { + "kind": "ui-call", + "line": 163, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SkillsSettingsScreen.kt", + "source": "Skill detail is not available in the current skills status.", + "surface": "android", + "id": "native.android.137a4d2fa1fa6637" + }, + { + "kind": "ui-call", + "line": 179, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/SkillsSettingsScreen.kt", + "source": "Description", + "surface": "android", + "id": "native.android.c4092be299d19f95" + }, + { + "kind": "ui-property", + "line": 40, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/TalkOrbOverlay.kt", + "source": "talk-orb", + "surface": "android", + "id": "native.android.b080f9c9fbf1832e" + }, + { + "kind": "ui-property", + "line": 50, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/TalkOrbOverlay.kt", + "source": "pulse", + "surface": "android", + "id": "native.android.bf9cf8864c79251a" + }, + { + "kind": "ui-property", + "line": 273, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "Back to voice", + "surface": "android", + "id": "native.android.39ab838a0b72d454" + }, + { + "kind": "ui-call", + "line": 275, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "Dictation", + "surface": "android", + "id": "native.android.d3004e4360dc176b" + }, + { + "kind": "ui-call", + "line": 276, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "Transcribe then send", + "surface": "android", + "id": "native.android.3ba869e900c7ba04" + }, + { + "kind": "ui-property", + "line": 278, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "Dictation settings", + "surface": "android", + "id": "native.android.ab2886d883536f00" + }, + { + "kind": "ui-call", + "line": 318, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "Speech provider", + "surface": "android", + "id": "native.android.1826c68c704ac062" + }, + { + "kind": "ui-call", + "line": 365, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "Tip: stop listening to send the captured turn.", + "surface": "android", + "id": "native.android.0721820e75795220" + }, + { + "kind": "ui-property", + "line": 410, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "Back to voice", + "surface": "android", + "id": "native.android.39ab838a0b72d454.410" + }, + { + "kind": "ui-call", + "line": 412, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "Realtime Talk", + "surface": "android", + "id": "native.android.c7aa58a8fbe914c3" + }, + { + "kind": "ui-property", + "line": 429, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "Talk settings", + "surface": "android", + "id": "native.android.685293603f91c432" + }, + { + "kind": "ui-call", + "line": 444, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "Live transcript", + "surface": "android", + "id": "native.android.4185c274b21daaf6" + }, + { + "kind": "ui-property", + "line": 454, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "End", + "surface": "android", + "id": "native.android.982b0b0a3d87b2b5" + }, + { + "kind": "ui-property", + "line": 455, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "Voice", + "surface": "android", + "id": "native.android.a2e3e5620000ff59" + }, + { + "kind": "ui-property", + "line": 468, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "OpenClaw", + "surface": "android", + "id": "native.android.b681abb5cd1c03bc" + }, + { + "kind": "ui-call", + "line": 559, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "OpenClaw", + "surface": "android", + "id": "native.android.b8b82945756c7cd8" + }, + { + "kind": "ui-property", + "line": 565, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "Search voice", + "surface": "android", + "id": "native.android.25a8148b819af091" + }, + { + "kind": "ui-call", + "line": 573, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "Voice", + "surface": "android", + "id": "native.android.18b119189f36e249" + }, + { + "kind": "ui-call", + "line": 772, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "Provider", + "surface": "android", + "id": "native.android.a124e3213962f7aa" + }, + { + "kind": "ui-call", + "line": 916, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "Live transcript", + "surface": "android", + "id": "native.android.4185c274b21daaf6.916" + }, + { + "kind": "ui-call", + "line": 919, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "No transcript yet", + "surface": "android", + "id": "native.android.b83b0ae0fee4e6df" + }, + { + "kind": "ui-call", + "line": 920, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "Your words and OpenClaw replies will appear here.", + "surface": "android", + "id": "native.android.c3f97a7a49f85998" + }, + { + "kind": "ui-call", + "line": 965, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "OpenClaw is preparing a response.", + "surface": "android", + "id": "native.android.c0b59f1b8574eba6" + }, + { + "kind": "ui-call", + "line": 975, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "Microphone access is needed.", + "surface": "android", + "id": "native.android.add05bf57feb3b62" + }, + { + "kind": "ui-call", + "line": 976, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt", + "source": "OpenClaw only listens when you start Talk or Dictation.", + "surface": "android", + "id": "native.android.c5ccaa8fee38db6f" + }, + { + "kind": "ui-call", + "line": 178, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceTabScreen.kt", + "source": "Tap mic or Talk", + "surface": "android", + "id": "native.android.aadc50cd77652b2d" + }, + { + "kind": "ui-call", + "line": 183, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceTabScreen.kt", + "source": "Mic sends turns; Talk keeps the conversation open.", + "surface": "android", + "id": "native.android.63dcad83fd6c28dd" + }, + { + "kind": "ui-call", + "line": 371, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceTabScreen.kt", + "source": "$gatewayStatus · $stateText", + "surface": "android", + "id": "native.android.959507fd4a6ba3a4" + }, + { + "kind": "ui-call", + "line": 401, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceTabScreen.kt", + "source": "Open settings", + "surface": "android", + "id": "native.android.b0cd6db035f9049f" + }, + { + "kind": "ui-call", + "line": 469, + "path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceTabScreen.kt", + "source": "OpenClaw is thinking…", + "surface": "android", + "id": "native.android.09137c880dd8890e" + }, + { + "kind": "ui-call", + "line": 39, + "path": "apps/ios/ActivityWidget/OpenClawLiveActivity.swift", + "source": "OpenClaw", + "surface": "apple", + "id": "native.apple.86d546e1f1247028" + }, + { + "kind": "ui-modifier", + "line": 58, + "path": "apps/ios/Sources/Design/AgentProDreamingDestination.swift", + "source": "Dreaming", + "surface": "apple", + "id": "native.apple.5a51d34e9c9fed9a" + }, + { + "kind": "ui-call", + "line": 141, + "path": "apps/ios/Sources/Design/AgentProDreamingDestination.swift", + "source": "Memory State", + "surface": "apple", + "id": "native.apple.7d9b95f78347a27a" + }, + { + "kind": "ui-call", + "line": 172, + "path": "apps/ios/Sources/Design/AgentProDreamingDestination.swift", + "source": "Maintenance", + "surface": "apple", + "id": "native.apple.f880ca9213d28fc5" + }, + { + "kind": "ui-call", + "line": 174, + "path": "apps/ios/Sources/Design/AgentProDreamingDestination.swift", + "source": "Refresh reads live state. Maintenance actions update the gateway diary/artifacts.", + "surface": "apple", + "id": "native.apple.6c3fd9dc73e28915" + }, + { + "kind": "ui-call", + "line": 188, + "path": "apps/ios/Sources/Design/AgentProDreamingDestination.swift", + "source": "Refresh dreaming", + "surface": "apple", + "id": "native.apple.48cf3d78d79aab82" + }, + { + "kind": "ui-modifier", + "line": 188, + "path": "apps/ios/Sources/Design/AgentProDreamingDestination.swift", + "source": "Refresh dreaming", + "surface": "apple", + "id": "native.apple.3b974332d3bb23be" + }, + { + "kind": "ui-call", + "line": 296, + "path": "apps/ios/Sources/Design/AgentProDreamingDestination.swift", + "source": "Dream diary day", + "surface": "apple", + "id": "native.apple.611e8d925d14d4a8" + }, + { + "kind": "ui-modifier", + "line": 296, + "path": "apps/ios/Sources/Design/AgentProDreamingDestination.swift", + "source": "Dream diary day", + "surface": "apple", + "id": "native.apple.95300e4dfd7aad42" + }, + { + "kind": "ui-call", + "line": 306, + "path": "apps/ios/Sources/Design/AgentProDreamingDestination.swift", + "source": "\\(day.entryCount) \\(day.entryCount == 1 ?", + "surface": "apple", + "id": "native.apple.24a461117e467712" + }, + { + "kind": "ui-call", + "line": 378, + "path": "apps/ios/Sources/Design/AgentProDreamingDestination.swift", + "source": "\\(entry.totalSignalCount)", + "surface": "apple", + "id": "native.apple.32c1207f3fb0ea37" + }, + { + "kind": "ui-modifier", + "line": 32, + "path": "apps/ios/Sources/Design/AgentProNodesDestination.swift", + "source": "Instances", + "surface": "apple", + "id": "native.apple.85e76a5f062aa118" + }, + { + "kind": "ui-call", + "line": 58, + "path": "apps/ios/Sources/Design/AgentProNodesDestination.swift", + "source": "Instances", + "surface": "apple", + "id": "native.apple.95d0ede59a5dfbc0" + }, + { + "kind": "ui-call", + "line": 75, + "path": "apps/ios/Sources/Design/AgentProNodesDestination.swift", + "source": "Presence", + "surface": "apple", + "id": "native.apple.c0a8f74751fe7761" + }, + { + "kind": "ui-call", + "line": 234, + "path": "apps/ios/Sources/Design/AgentProNodesDestination.swift", + "source": "Copy \\(title)", + "surface": "apple", + "id": "native.apple.58dafd47a9d00243" + }, + { + "kind": "ui-modifier", + "line": 234, + "path": "apps/ios/Sources/Design/AgentProNodesDestination.swift", + "source": "Copy \\(title)", + "surface": "apple", + "id": "native.apple.4b2a40c2512edb6b" + }, + { + "kind": "ui-call", + "line": 245, + "path": "apps/ios/Sources/Design/AgentProNodesDestination.swift", + "source": "None reported.", + "surface": "apple", + "id": "native.apple.e9c4662a91a0188e" + }, + { + "kind": "ui-call", + "line": 10, + "path": "apps/ios/Sources/Design/AgentProTab+Cron.swift", + "source": "Scheduler", + "surface": "apple", + "id": "native.apple.828de90d8dfed4ad" + }, + { + "kind": "ui-call", + "line": 100, + "path": "apps/ios/Sources/Design/AgentProTab+Cron.swift", + "source": "Run", + "surface": "apple", + "id": "native.apple.e8964650f824c877" + }, + { + "kind": "ui-modifier", + "line": 40, + "path": "apps/ios/Sources/Design/AgentProTab+Destinations.swift", + "source": "Agents", + "surface": "apple", + "id": "native.apple.ac789046a06d6afa" + }, + { + "kind": "ui-modifier", + "line": 67, + "path": "apps/ios/Sources/Design/AgentProTab+Destinations.swift", + "source": "Skills", + "surface": "apple", + "id": "native.apple.bf414656086b7b52" + }, + { + "kind": "ui-modifier", + "line": 110, + "path": "apps/ios/Sources/Design/AgentProTab+Destinations.swift", + "source": "Cron Jobs", + "surface": "apple", + "id": "native.apple.6d0fb682b3b7c3e4" + }, + { + "kind": "ui-modifier", + "line": 139, + "path": "apps/ios/Sources/Design/AgentProTab+Destinations.swift", + "source": "Usage", + "surface": "apple", + "id": "native.apple.5ff111ec99ba2bad" + }, + { + "kind": "ui-call", + "line": 40, + "path": "apps/ios/Sources/Design/AgentProTab+Overview.swift", + "source": "Search agents", + "surface": "apple", + "id": "native.apple.76d543cec6a0ee5b" + }, + { + "kind": "ui-modifier", + "line": 67, + "path": "apps/ios/Sources/Design/AgentProTab+Overview.swift", + "source": "Opens Settings / Gateway", + "surface": "apple", + "id": "native.apple.9c45abb65d0ba8f3" + }, + { + "kind": "ui-call", + "line": 24, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Enable All", + "surface": "apple", + "id": "native.apple.78806bca85333d64" + }, + { + "kind": "ui-call", + "line": 29, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Disable All", + "surface": "apple", + "id": "native.apple.f3262359a64b27b1" + }, + { + "kind": "ui-call", + "line": 34, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Reset", + "surface": "apple", + "id": "native.apple.d9ba2e8c076bcb15" + }, + { + "kind": "ui-call", + "line": 64, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Search skills", + "surface": "apple", + "id": "native.apple.6cf10999f4618500" + }, + { + "kind": "ui-call", + "line": 78, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Status", + "surface": "apple", + "id": "native.apple.c8f32d85993b1de0" + }, + { + "kind": "ui-call", + "line": 96, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Install Skills", + "surface": "apple", + "id": "native.apple.248f9e1ad5721249" + }, + { + "kind": "ui-call", + "line": 98, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Search ClawHub and install into this workspace.", + "surface": "apple", + "id": "native.apple.c3d3c59138c22954" + }, + { + "kind": "ui-call", + "line": 111, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Search ClawHub", + "surface": "apple", + "id": "native.apple.efcb886f500e918d" + }, + { + "kind": "ui-modifier", + "line": 111, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Search ClawHub", + "surface": "apple", + "id": "native.apple.1fbd7904e9c383f9" + }, + { + "kind": "ui-call", + "line": 114, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Search ClawHub", + "surface": "apple", + "id": "native.apple.efcb886f500e918d.114" + }, + { + "kind": "ui-call", + "line": 170, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Install \\(result.displayName)", + "surface": "apple", + "id": "native.apple.b69fd83a32b7b549" + }, + { + "kind": "ui-modifier", + "line": 170, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Install \\(result.displayName)", + "surface": "apple", + "id": "native.apple.a46408193c7d93e8" + }, + { + "kind": "ui-call", + "line": 287, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Missing: \\(missing)", + "surface": "apple", + "id": "native.apple.7c9ea375c01972ee" + }, + { + "kind": "ui-call", + "line": 293, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Setup: \\(install)", + "surface": "apple", + "id": "native.apple.61ebcf220ca6f7f4" + }, + { + "kind": "ui-call", + "line": 312, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Set up \\(skill.displayName)", + "surface": "apple", + "id": "native.apple.305b98a10fc4f2ff" + }, + { + "kind": "ui-modifier", + "line": 312, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Set up \\(skill.displayName)", + "surface": "apple", + "id": "native.apple.e94ab5a64ed0052b" + }, + { + "kind": "ui-call", + "line": 321, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Edit \\(skill.displayName)", + "surface": "apple", + "id": "native.apple.16ff2932470c1a04" + }, + { + "kind": "ui-modifier", + "line": 321, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Edit \\(skill.displayName)", + "surface": "apple", + "id": "native.apple.801febb8177c45d6" + }, + { + "kind": "ui-modifier", + "line": 381, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Skill", + "surface": "apple", + "id": "native.apple.29d82bdb73f5a551" + }, + { + "kind": "ui-call", + "line": 384, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Close", + "surface": "apple", + "id": "native.apple.8869a6b2fde070b8" + }, + { + "kind": "ui-call", + "line": 410, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Close", + "surface": "apple", + "id": "native.apple.8869a6b2fde070b8.410" + }, + { + "kind": "ui-call", + "line": 453, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "API key", + "surface": "apple", + "id": "native.apple.866ef51a89c50e1a" + }, + { + "kind": "ui-call", + "line": 461, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Save key", + "surface": "apple", + "id": "native.apple.339b853be8c8ea60" + }, + { + "kind": "ui-call", + "line": 523, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Setup", + "surface": "apple", + "id": "native.apple.07884c9a5b6dc1e4" + }, + { + "kind": "ui-call", + "line": 526, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "Missing: \\(missing)", + "surface": "apple", + "id": "native.apple.7c9ea375c01972ee.526" + }, + { + "kind": "ui-call", + "line": 530, + "path": "apps/ios/Sources/Design/AgentProTab+Skills.swift", + "source": "No missing requirements reported.", + "surface": "apple", + "id": "native.apple.51d5e0c708a3fa66" + }, + { + "kind": "ui-call", + "line": 10, + "path": "apps/ios/Sources/Design/AgentProTab+Usage.swift", + "source": "Totals", + "surface": "apple", + "id": "native.apple.a65066d19ed879fd" + }, + { + "kind": "ui-call", + "line": 69, + "path": "apps/ios/Sources/Design/AgentProTab+Usage.swift", + "source": "\\(Self.compactNumber(day.totalTokens ?? 0)) tokens", + "surface": "apple", + "id": "native.apple.a17ce77200834d9c" + }, + { + "kind": "ui-call", + "line": 55, + "path": "apps/ios/Sources/Design/ChatProTab.swift", + "source": "Chat is preparing", + "surface": "apple", + "id": "native.apple.e4d6867912dc7a57" + }, + { + "kind": "ui-call", + "line": 57, + "path": "apps/ios/Sources/Design/ChatProTab.swift", + "source": "The operator session will attach when the gateway is ready.", + "surface": "apple", + "id": "native.apple.3a97c70e0e573740" + }, + { + "kind": "ui-modifier", + "line": 199, + "path": "apps/ios/Sources/Design/ChatProTab.swift", + "source": "Opens Settings / Gateway", + "surface": "apple", + "id": "native.apple.d19c9577e0fdfea7" + }, + { + "kind": "ui-call", + "line": 126, + "path": "apps/ios/Sources/Design/CommandCenterSupport.swift", + "source": "View More", + "surface": "apple", + "id": "native.apple.e8018adcccaa2a4d" + }, + { + "kind": "ui-call", + "line": 116, + "path": "apps/ios/Sources/Design/CommandCenterTab.swift", + "source": "Gateway \\(self.gatewayStateText)", + "surface": "apple", + "id": "native.apple.2eedcda16e90fa8a" + }, + { + "kind": "ui-modifier", + "line": 116, + "path": "apps/ios/Sources/Design/CommandCenterTab.swift", + "source": "Gateway \\(self.gatewayStateText)", + "surface": "apple", + "id": "native.apple.1dd03a218068f08e" + }, + { + "kind": "ui-modifier", + "line": 117, + "path": "apps/ios/Sources/Design/CommandCenterTab.swift", + "source": "Opens Settings / Gateway", + "surface": "apple", + "id": "native.apple.897981356da91ac6" + }, + { + "kind": "ui-modifier", + "line": 640, + "path": "apps/ios/Sources/Design/CommandCenterTab.swift", + "source": "Sessions", + "surface": "apple", + "id": "native.apple.42bb4c76e3ca3ade" + }, + { + "kind": "ui-call", + "line": 654, + "path": "apps/ios/Sources/Design/CommandCenterTab.swift", + "source": "Sessions", + "surface": "apple", + "id": "native.apple.9f2fd65953013b7c" + }, + { + "kind": "ui-call", + "line": 668, + "path": "apps/ios/Sources/Design/CommandCenterTab.swift", + "source": "Recent sessions", + "surface": "apple", + "id": "native.apple.27bd187915ec8d2b" + }, + { + "kind": "ui-call", + "line": 105, + "path": "apps/ios/Sources/Design/IPadSidebarFeaturePreviews.swift", + "source": "Phone queue", + "surface": "apple", + "id": "native.apple.32f86add1b5bc82c" + }, + { + "kind": "ui-call", + "line": 107, + "path": "apps/ios/Sources/Design/IPadSidebarFeaturePreviews.swift", + "source": "Tap for detail, swipe or long-press for card actions.", + "surface": "apple", + "id": "native.apple.c4b157a8d93ac38c" + }, + { + "kind": "ui-call", + "line": 163, + "path": "apps/ios/Sources/Design/IPadSidebarFeaturePreviews.swift", + "source": "Phone proposals", + "surface": "apple", + "id": "native.apple.c1a259f4f71002a8" + }, + { + "kind": "ui-call", + "line": 165, + "path": "apps/ios/Sources/Design/IPadSidebarFeaturePreviews.swift", + "source": "Tap for detail, swipe or long-press for proposal actions.", + "surface": "apple", + "id": "native.apple.0a19ca3be8ebe45a" + }, + { + "kind": "ui-call", + "line": 595, + "path": "apps/ios/Sources/Design/IPadSidebarFeaturePreviews.swift", + "source": "iPad kanban", + "surface": "apple", + "id": "native.apple.686fca97adbcc9aa" + }, + { + "kind": "ui-call", + "line": 597, + "path": "apps/ios/Sources/Design/IPadSidebarFeaturePreviews.swift", + "source": "Wide layout with populated, empty, held, and custom proposal lanes.", + "surface": "apple", + "id": "native.apple.8ee291caf2fedcd2" + }, + { + "kind": "ui-modifier", + "line": 62, + "path": "apps/ios/Sources/Design/IPadSidebarScreenChrome.swift", + "source": "Opens Settings / Gateway", + "surface": "apple", + "id": "native.apple.749ac5e78033000f" + }, + { + "kind": "ui-modifier", + "line": 63, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Proposal", + "surface": "apple", + "id": "native.apple.bae7e51d0e736886" + }, + { + "kind": "ui-call", + "line": 67, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Done", + "surface": "apple", + "id": "native.apple.d690a258effde59c" + }, + { + "kind": "ui-call", + "line": 101, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Status", + "surface": "apple", + "id": "native.apple.daffe56ff9b28fa8" + }, + { + "kind": "ui-call", + "line": 113, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Refresh", + "surface": "apple", + "id": "native.apple.f343b3c8847ae5a6" + }, + { + "kind": "ui-call", + "line": 144, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "\\(self.filteredProposals.count) proposals", + "surface": "apple", + "id": "native.apple.57ea1dae1aa22723" + }, + { + "kind": "ui-call", + "line": 157, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Status", + "surface": "apple", + "id": "native.apple.daffe56ff9b28fa8.157" + }, + { + "kind": "ui-call", + "line": 172, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Refresh", + "surface": "apple", + "id": "native.apple.f343b3c8847ae5a6.172" + }, + { + "kind": "ui-call", + "line": 200, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Search proposals", + "surface": "apple", + "id": "native.apple.5a499d3e1bf372ce" + }, + { + "kind": "ui-call", + "line": 218, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Agent", + "surface": "apple", + "id": "native.apple.8c05535490c13854" + }, + { + "kind": "ui-call", + "line": 222, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Default agent", + "surface": "apple", + "id": "native.apple.1b494b6dc7ed0ec6" + }, + { + "kind": "ui-call", + "line": 244, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Skill Workshop agent scope", + "surface": "apple", + "id": "native.apple.24c78812bffbc00e" + }, + { + "kind": "ui-modifier", + "line": 244, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Skill Workshop agent scope", + "surface": "apple", + "id": "native.apple.429fbc96ee068cb0" + }, + { + "kind": "ui-call", + "line": 343, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Inspect", + "surface": "apple", + "id": "native.apple.5cf8a3ccae1db3e6" + }, + { + "kind": "ui-call", + "line": 350, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Apply", + "surface": "apple", + "id": "native.apple.f716605808ff03fc" + }, + { + "kind": "ui-call", + "line": 354, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Reject", + "surface": "apple", + "id": "native.apple.c83a84bb8d0ab095" + }, + { + "kind": "ui-call", + "line": 362, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Apply", + "surface": "apple", + "id": "native.apple.f716605808ff03fc.362" + }, + { + "kind": "ui-call", + "line": 367, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Reject", + "surface": "apple", + "id": "native.apple.c83a84bb8d0ab095.367" + }, + { + "kind": "ui-call", + "line": 374, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Inspect", + "surface": "apple", + "id": "native.apple.5cf8a3ccae1db3e6.374" + }, + { + "kind": "ui-call", + "line": 433, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Select refresh to load the proposal body.", + "surface": "apple", + "id": "native.apple.0fea571f6d470cd1" + }, + { + "kind": "ui-call", + "line": 440, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Support files", + "surface": "apple", + "id": "native.apple.a7cf31dea97d6a4c" + }, + { + "kind": "ui-call", + "line": 477, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Apply", + "surface": "apple", + "id": "native.apple.f716605808ff03fc.477" + }, + { + "kind": "ui-call", + "line": 489, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Reject", + "surface": "apple", + "id": "native.apple.c83a84bb8d0ab095.489" + }, + { + "kind": "ui-call", + "line": 501, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Inspect", + "surface": "apple", + "id": "native.apple.5cf8a3ccae1db3e6.501" + }, + { + "kind": "ui-call", + "line": 574, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Admin scope required.", + "surface": "apple", + "id": "native.apple.9cc0c7366724336d" + }, + { + "kind": "ui-call", + "line": 973, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Apply Proposal", + "surface": "apple", + "id": "native.apple.00e7adeb25750757" + }, + { + "kind": "ui-modifier", + "line": 973, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Apply Proposal", + "surface": "apple", + "id": "native.apple.d02a3df75b832c44" + }, + { + "kind": "ui-call", + "line": 981, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Reject Proposal", + "surface": "apple", + "id": "native.apple.452d95fd0ec53c7c" + }, + { + "kind": "ui-modifier", + "line": 981, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Reject Proposal", + "surface": "apple", + "id": "native.apple.a13064eb47c83eb8" + }, + { + "kind": "ui-call", + "line": 990, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Inspect Proposal", + "surface": "apple", + "id": "native.apple.b3f47545e493eaef" + }, + { + "kind": "ui-modifier", + "line": 990, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Inspect Proposal", + "surface": "apple", + "id": "native.apple.87a5f8581e42877d" + }, + { + "kind": "ui-call", + "line": 1002, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Inspect", + "surface": "apple", + "id": "native.apple.5cf8a3ccae1db3e6.1002" + }, + { + "kind": "ui-call", + "line": 1004, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Apply", + "surface": "apple", + "id": "native.apple.f716605808ff03fc.1004" + }, + { + "kind": "ui-call", + "line": 1006, + "path": "apps/ios/Sources/Design/IPadSkillWorkshopScreen.swift", + "source": "Reject", + "surface": "apple", + "id": "native.apple.c83a84bb8d0ab095.1006" + }, + { + "kind": "ui-call", + "line": 106, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Search cards", + "surface": "apple", + "id": "native.apple.57baf3d2a463af6d" + }, + { + "kind": "ui-call", + "line": 123, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Scope", + "surface": "apple", + "id": "native.apple.6d5fff8d127eeb0a" + }, + { + "kind": "ui-call", + "line": 124, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Active", + "surface": "apple", + "id": "native.apple.bec86362b812a969" + }, + { + "kind": "ui-call", + "line": 140, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Dispatch", + "surface": "apple", + "id": "native.apple.218fbb58080fb72d" + }, + { + "kind": "ui-call", + "line": 149, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Refresh", + "surface": "apple", + "id": "native.apple.f3ab09d2ffba5d9b" + }, + { + "kind": "ui-call", + "line": 180, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "\\(self.filteredCards.count) cards", + "surface": "apple", + "id": "native.apple.fb9e29033d18989e" + }, + { + "kind": "ui-call", + "line": 196, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Dispatch", + "surface": "apple", + "id": "native.apple.218fbb58080fb72d.196" + }, + { + "kind": "ui-call", + "line": 235, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Refresh workboard", + "surface": "apple", + "id": "native.apple.b36714d0e8bc207f" + }, + { + "kind": "ui-modifier", + "line": 235, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Refresh workboard", + "surface": "apple", + "id": "native.apple.8f223078cd6ac6a3" + }, + { + "kind": "ui-call", + "line": 243, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "New Card", + "surface": "apple", + "id": "native.apple.48006e54096957cd" + }, + { + "kind": "ui-modifier", + "line": 249, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Opens card title and notes entry", + "surface": "apple", + "id": "native.apple.a96a3caad5b92660" + }, + { + "kind": "ui-call", + "line": 254, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "All boards", + "surface": "apple", + "id": "native.apple.4ed27158ad8a0f9b" + }, + { + "kind": "ui-call", + "line": 283, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Workboard board scope", + "surface": "apple", + "id": "native.apple.4500527e338f2287" + }, + { + "kind": "ui-modifier", + "line": 283, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Workboard board scope", + "surface": "apple", + "id": "native.apple.e2418405eb6a9908" + }, + { + "kind": "ui-call", + "line": 332, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Show \\(IPadWorkboardDefaults.label(for: status)) cards", + "surface": "apple", + "id": "native.apple.7b410ba26d2d83b2" + }, + { + "kind": "ui-modifier", + "line": 332, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Show \\(IPadWorkboardDefaults.label(for: status)) cards", + "surface": "apple", + "id": "native.apple.1025db84f77e09e2" + }, + { + "kind": "ui-call", + "line": 337, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Board", + "surface": "apple", + "id": "native.apple.d451be3a2cbc14a2" + }, + { + "kind": "ui-call", + "line": 341, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "All boards", + "surface": "apple", + "id": "native.apple.4ed27158ad8a0f9b.341" + }, + { + "kind": "ui-call", + "line": 362, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Workboard board scope", + "surface": "apple", + "id": "native.apple.4500527e338f2287.362" + }, + { + "kind": "ui-modifier", + "line": 362, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Workboard board scope", + "surface": "apple", + "id": "native.apple.e2418405eb6a9908.362" + }, + { + "kind": "ui-call", + "line": 368, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Status", + "surface": "apple", + "id": "native.apple.6662824115f6982a" + }, + { + "kind": "ui-call", + "line": 372, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Active", + "surface": "apple", + "id": "native.apple.bec86362b812a969.372" + }, + { + "kind": "ui-call", + "line": 478, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Card", + "surface": "apple", + "id": "native.apple.0c99715b98ca22a2" + }, + { + "kind": "ui-call", + "line": 479, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Title", + "surface": "apple", + "id": "native.apple.77a417fa0f2aba1d" + }, + { + "kind": "ui-call", + "line": 482, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Notes", + "surface": "apple", + "id": "native.apple.24fb5469bb5a5b37" + }, + { + "kind": "ui-modifier", + "line": 493, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "New Card", + "surface": "apple", + "id": "native.apple.13b2e4011ee0917f" + }, + { + "kind": "ui-call", + "line": 497, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Cancel", + "surface": "apple", + "id": "native.apple.d34aa91acc1064ad" + }, + { + "kind": "ui-call", + "line": 996, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Open Session", + "surface": "apple", + "id": "native.apple.93eeaedb2ff61043" + }, + { + "kind": "ui-modifier", + "line": 996, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Open Session", + "surface": "apple", + "id": "native.apple.ac94e06cd1b5203a" + }, + { + "kind": "ui-call", + "line": 1003, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Move to \\(IPadWorkboardDefaults.label(for: status))", + "surface": "apple", + "id": "native.apple.774f595a01eca278" + }, + { + "kind": "ui-call", + "line": 1012, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Card Actions", + "surface": "apple", + "id": "native.apple.8619814d6e7b2190" + }, + { + "kind": "ui-modifier", + "line": 1012, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Card Actions", + "surface": "apple", + "id": "native.apple.7c47d0fcdeb2d0d3" + }, + { + "kind": "ui-call", + "line": 1100, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Card Actions", + "surface": "apple", + "id": "native.apple.8619814d6e7b2190.1100" + }, + { + "kind": "ui-modifier", + "line": 1100, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Card Actions", + "surface": "apple", + "id": "native.apple.7c47d0fcdeb2d0d3.1100" + }, + { + "kind": "ui-call", + "line": 1108, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Inspect", + "surface": "apple", + "id": "native.apple.c1f2821d719e37f8" + }, + { + "kind": "ui-call", + "line": 1111, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Open", + "surface": "apple", + "id": "native.apple.651ec246396255cd" + }, + { + "kind": "ui-call", + "line": 1130, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Open Session", + "surface": "apple", + "id": "native.apple.93eeaedb2ff61043.1130" + }, + { + "kind": "ui-call", + "line": 1132, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Inspect", + "surface": "apple", + "id": "native.apple.c1f2821d719e37f8.1132" + }, + { + "kind": "ui-call", + "line": 1134, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Move to \\(IPadWorkboardDefaults.label(for: status))", + "surface": "apple", + "id": "native.apple.774f595a01eca278.1134" + }, + { + "kind": "ui-call", + "line": 1196, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Card", + "surface": "apple", + "id": "native.apple.0c99715b98ca22a2.1196" + }, + { + "kind": "ui-call", + "line": 1197, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Title", + "surface": "apple", + "id": "native.apple.77a417fa0f2aba1d.1197" + }, + { + "kind": "ui-call", + "line": 1198, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Status", + "surface": "apple", + "id": "native.apple.6662824115f6982a.1198" + }, + { + "kind": "ui-call", + "line": 1204, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Actions", + "surface": "apple", + "id": "native.apple.68a43a9e8939f395" + }, + { + "kind": "ui-call", + "line": 1206, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Open Session", + "surface": "apple", + "id": "native.apple.93eeaedb2ff61043.1206" + }, + { + "kind": "ui-call", + "line": 1208, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Move", + "surface": "apple", + "id": "native.apple.a2732e4ff77a201b" + }, + { + "kind": "ui-modifier", + "line": 1220, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Card", + "surface": "apple", + "id": "native.apple.0cf4a97148446010" + }, + { + "kind": "ui-call", + "line": 1224, + "path": "apps/ios/Sources/Design/IPadWorkboardScreen.swift", + "source": "Done", + "surface": "apple", + "id": "native.apple.07a313e2adf7227b" + }, + { + "kind": "ui-modifier", + "line": 27, + "path": "apps/ios/Sources/Design/OpenClawDocsScreen.swift", + "source": "Docs", + "surface": "apple", + "id": "native.apple.9ad492235f897376" + }, + { + "kind": "ui-modifier", + "line": 59, + "path": "apps/ios/Sources/Design/OpenClawDocsScreen.swift", + "source": "Opens Settings / Gateway", + "surface": "apple", + "id": "native.apple.5c5978aabd24bbce" + }, + { + "kind": "ui-call", + "line": 93, + "path": "apps/ios/Sources/Design/OpenClawDocsScreen.swift", + "source": "Version", + "surface": "apple", + "id": "native.apple.62c19e63ba0e600a" + }, + { + "kind": "ui-call", + "line": 97, + "path": "apps/ios/Sources/Design/OpenClawDocsScreen.swift", + "source": "v\\(DeviceInfoHelper.openClawVersionString())", + "surface": "apple", + "id": "native.apple.c589f3ed9e2505cc" + }, + { + "kind": "ui-call", + "line": 402, + "path": "apps/ios/Sources/Design/OpenClawProComponents.swift", + "source": "OpenClaw", + "surface": "apple", + "id": "native.apple.329b31cfd127e7aa" + }, + { + "kind": "ui-modifier", + "line": 402, + "path": "apps/ios/Sources/Design/OpenClawProComponents.swift", + "source": "OpenClaw", + "surface": "apple", + "id": "native.apple.cf9bb65f8e405cc8" + }, + { + "kind": "ui-call", + "line": 465, + "path": "apps/ios/Sources/Design/OpenClawProComponents.swift", + "source": "Gateway \\(self.title)", + "surface": "apple", + "id": "native.apple.6552beb81114fa49" + }, + { + "kind": "ui-modifier", + "line": 465, + "path": "apps/ios/Sources/Design/OpenClawProComponents.swift", + "source": "Gateway \\(self.title)", + "surface": "apple", + "id": "native.apple.51c566ed34b67acf" + }, + { + "kind": "ui-modifier", + "line": 30, + "path": "apps/ios/Sources/Design/RootTabsPhoneControlHub.swift", + "source": "Control", + "surface": "apple", + "id": "native.apple.a2d8e7b4dba29764" + }, + { + "kind": "ui-call", + "line": 118, + "path": "apps/ios/Sources/Design/RootTabsPhoneControlHub.swift", + "source": "Gateway \\(self.gatewayStateText)", + "surface": "apple", + "id": "native.apple.8d9b28f827f013a8" + }, + { + "kind": "ui-modifier", + "line": 118, + "path": "apps/ios/Sources/Design/RootTabsPhoneControlHub.swift", + "source": "Gateway \\(self.gatewayStateText)", + "surface": "apple", + "id": "native.apple.b050fa88ddfab280" + }, + { + "kind": "ui-modifier", + "line": 119, + "path": "apps/ios/Sources/Design/RootTabsPhoneControlHub.swift", + "source": "Opens Settings / Gateway", + "surface": "apple", + "id": "native.apple.597471e86dda3d38" + }, + { + "kind": "ui-call", + "line": 184, + "path": "apps/ios/Sources/Design/RootTabsPhoneControlHub.swift", + "source": "v\\(DeviceInfoHelper.openClawVersionString())", + "surface": "apple", + "id": "native.apple.77d9ff112b9d70ad" + }, + { + "kind": "ui-call", + "line": 38, + "path": "apps/ios/Sources/Design/SettingsChannelsDestination.swift", + "source": "Channels / Integrations", + "surface": "apple", + "id": "native.apple.65602c216b89032d" + }, + { + "kind": "ui-call", + "line": 396, + "path": "apps/ios/Sources/Design/SettingsChannelsDestination.swift", + "source": "Stop", + "surface": "apple", + "id": "native.apple.d0eb2c9b73d0e34c" + }, + { + "kind": "ui-call", + "line": 400, + "path": "apps/ios/Sources/Design/SettingsChannelsDestination.swift", + "source": "Start", + "surface": "apple", + "id": "native.apple.4333e9ef3a21e90e" + }, + { + "kind": "ui-call", + "line": 406, + "path": "apps/ios/Sources/Design/SettingsChannelsDestination.swift", + "source": "Logout", + "surface": "apple", + "id": "native.apple.19108f0f755e083d" + }, + { + "kind": "ui-call", + "line": 560, + "path": "apps/ios/Sources/Design/SettingsChannelsDestination.swift", + "source": "Connected", + "surface": "apple", + "id": "native.apple.98c951a7322c94dc" + }, + { + "kind": "ui-call", + "line": 570, + "path": "apps/ios/Sources/Design/SettingsChannelsDestination.swift", + "source": "Loading", + "surface": "apple", + "id": "native.apple.e9a0639e3df7d270" + }, + { + "kind": "ui-call", + "line": 586, + "path": "apps/ios/Sources/Design/SettingsChannelsDestination.swift", + "source": "Empty", + "surface": "apple", + "id": "native.apple.5499301c35444424" + }, + { + "kind": "ui-call", + "line": 601, + "path": "apps/ios/Sources/Design/SettingsChannelsDestination.swift", + "source": "Error", + "surface": "apple", + "id": "native.apple.67ef5e90c3ea315b" + }, + { + "kind": "ui-call", + "line": 610, + "path": "apps/ios/Sources/Design/SettingsChannelsDestination.swift", + "source": "Offline", + "surface": "apple", + "id": "native.apple.042fad5f44e4a00c" + }, + { + "kind": "ui-modifier", + "line": 202, + "path": "apps/ios/Sources/Design/SettingsProTab.swift", + "source": "Scan QR Code", + "surface": "apple", + "id": "native.apple.adae4106b8b9c38b" + }, + { + "kind": "ui-call", + "line": 206, + "path": "apps/ios/Sources/Design/SettingsProTab.swift", + "source": "Cancel", + "surface": "apple", + "id": "native.apple.0cb64be43c0b3d97" + }, + { + "kind": "ui-call", + "line": 212, + "path": "apps/ios/Sources/Design/SettingsProTab.swift", + "source": "Reset", + "surface": "apple", + "id": "native.apple.4ed955a25c8ed47c" + }, + { + "kind": "ui-call", + "line": 215, + "path": "apps/ios/Sources/Design/SettingsProTab.swift", + "source": "Cancel", + "surface": "apple", + "id": "native.apple.0cb64be43c0b3d97.215" + }, + { + "kind": "ui-call", + "line": 217, + "path": "apps/ios/Sources/Design/SettingsProTab.swift", + "source": "This disconnects, clears saved gateway credentials, and reopens onboarding.", + "surface": "apple", + "id": "native.apple.800904a3c6cdc147" + }, + { + "kind": "ui-call", + "line": 225, + "path": "apps/ios/Sources/Design/SettingsProTab.swift", + "source": "OK", + "surface": "apple", + "id": "native.apple.541078d5af9de662" + }, + { + "kind": "ui-call", + "line": 230, + "path": "apps/ios/Sources/Design/SettingsProTab.swift", + "source": "Continue", + "surface": "apple", + "id": "native.apple.f8c042a923222472" + }, + { + "kind": "ui-call", + "line": 233, + "path": "apps/ios/Sources/Design/SettingsProTab.swift", + "source": "Not Now", + "surface": "apple", + "id": "native.apple.e212e27354542d3b" + }, + { + "kind": "ui-call", + "line": 27, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Appearance", + "surface": "apple", + "id": "native.apple.747143c7ef879774" + }, + { + "kind": "ui-call", + "line": 33, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Follows iOS appearance.", + "surface": "apple", + "id": "native.apple.c5e0bbcef6035665" + }, + { + "kind": "ui-call", + "line": 76, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Connection", + "surface": "apple", + "id": "native.apple.70eca66c79335a6e" + }, + { + "kind": "ui-call", + "line": 335, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Notifications are off", + "surface": "apple", + "id": "native.apple.db2079af09ca465a" + }, + { + "kind": "ui-call", + "line": 351, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Open Notifications", + "surface": "apple", + "id": "native.apple.fc1f2fdbe437cb9d" + }, + { + "kind": "ui-call", + "line": 385, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Allow", + "surface": "apple", + "id": "native.apple.34b198d5caa2f6de" + }, + { + "kind": "ui-call", + "line": 396, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Always", + "surface": "apple", + "id": "native.apple.9277893c07d00dd4" + }, + { + "kind": "ui-call", + "line": 405, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Deny", + "surface": "apple", + "id": "native.apple.47aa34a39a9e05e5" + }, + { + "kind": "ui-call", + "line": 417, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "No approvals waiting", + "surface": "apple", + "id": "native.apple.9bc57eb179ada99d" + }, + { + "kind": "ui-call", + "line": 661, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Location", + "surface": "apple", + "id": "native.apple.0535a52a62812307" + }, + { + "kind": "ui-call", + "line": 663, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Controls whether location can be shared with gateway tools.", + "surface": "apple", + "id": "native.apple.0f4e7486619df175" + }, + { + "kind": "ui-call", + "line": 675, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Location", + "surface": "apple", + "id": "native.apple.0535a52a62812307.675" + }, + { + "kind": "ui-call", + "line": 676, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Off", + "surface": "apple", + "id": "native.apple.fe44fd4b5147e65e" + }, + { + "kind": "ui-call", + "line": 677, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "While Using", + "surface": "apple", + "id": "native.apple.3e77661ca2afbe76" + }, + { + "kind": "ui-call", + "line": 678, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Always", + "surface": "apple", + "id": "native.apple.9277893c07d00dd4.678" + }, + { + "kind": "ui-call", + "line": 696, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Default Agent", + "surface": "apple", + "id": "native.apple.cb38cf4f01de7a6d" + }, + { + "kind": "ui-call", + "line": 698, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Agent", + "surface": "apple", + "id": "native.apple.bf6ddc5fa4832324" + }, + { + "kind": "ui-call", + "line": 699, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Default", + "surface": "apple", + "id": "native.apple.6ace5e6f09ec98c7" + }, + { + "kind": "ui-call", + "line": 707, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Used for new Chat and Talk sessions.", + "surface": "apple", + "id": "native.apple.3de045f17ea3c6d0" + }, + { + "kind": "ui-call", + "line": 718, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Setup Code", + "surface": "apple", + "id": "native.apple.d8a5510f1a2e1701" + }, + { + "kind": "ui-call", + "line": 720, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Paste setup code", + "surface": "apple", + "id": "native.apple.313eb24efcb8d4a0" + }, + { + "kind": "ui-call", + "line": 762, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Discovered Gateways", + "surface": "apple", + "id": "native.apple.adb22453596f1d78" + }, + { + "kind": "ui-call", + "line": 765, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "No gateways found yet. Use manual setup if Bonjour is blocked.", + "surface": "apple", + "id": "native.apple.64b89f4aa3a81aef" + }, + { + "kind": "ui-call", + "line": 798, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Connect", + "surface": "apple", + "id": "native.apple.f42ecf4f39c80d99" + }, + { + "kind": "ui-call", + "line": 809, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Use Manual Gateway", + "surface": "apple", + "id": "native.apple.c39f3a597f674aca" + }, + { + "kind": "ui-call", + "line": 810, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Host", + "surface": "apple", + "id": "native.apple.c3d6c69cdb46769e" + }, + { + "kind": "ui-call", + "line": 814, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Port", + "surface": "apple", + "id": "native.apple.600f8f373f177a74" + }, + { + "kind": "ui-call", + "line": 817, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Use TLS", + "surface": "apple", + "id": "native.apple.724f434cf4f7e84c" + }, + { + "kind": "ui-call", + "line": 836, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Auto-connect on launch", + "surface": "apple", + "id": "native.apple.b156004754dc59bd" + }, + { + "kind": "ui-call", + "line": 837, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Gateway Auth Token", + "surface": "apple", + "id": "native.apple.cf932b2ca61d1e6b" + }, + { + "kind": "ui-call", + "line": 841, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Gateway Password", + "surface": "apple", + "id": "native.apple.92a1a902541660c4" + }, + { + "kind": "ui-call", + "line": 846, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Reset Onboarding", + "surface": "apple", + "id": "native.apple.c9cd035bc39af480" + }, + { + "kind": "ui-call", + "line": 859, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Voice Wake", + "surface": "apple", + "id": "native.apple.5869824f66e222ed" + }, + { + "kind": "ui-call", + "line": 862, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Talk Mode", + "surface": "apple", + "id": "native.apple.88a997009842ffa0" + }, + { + "kind": "ui-call", + "line": 870, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Speech Language", + "surface": "apple", + "id": "native.apple.1f3ab82ab342555c" + }, + { + "kind": "ui-call", + "line": 875, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Background Listening", + "surface": "apple", + "id": "native.apple.dab7cbfc92787b27" + }, + { + "kind": "ui-call", + "line": 876, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Speakerphone", + "surface": "apple", + "id": "native.apple.518cef9408771a92" + }, + { + "kind": "ui-call", + "line": 903, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Provider", + "surface": "apple", + "id": "native.apple.24ee619948d75837" + }, + { + "kind": "ui-call", + "line": 909, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Realtime Voice", + "surface": "apple", + "id": "native.apple.47dd7fb00a4eb621" + }, + { + "kind": "ui-call", + "line": 910, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Gateway Default", + "surface": "apple", + "id": "native.apple.8c4c000f6606efc6" + }, + { + "kind": "ui-call", + "line": 936, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Show Talk Control", + "surface": "apple", + "id": "native.apple.27457003271bd73d" + }, + { + "kind": "ui-call", + "line": 937, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Default Share Instruction", + "surface": "apple", + "id": "native.apple.1300f0857e49b6e9" + }, + { + "kind": "ui-call", + "line": 944, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Run Share Self-Test", + "surface": "apple", + "id": "native.apple.ccb60c6b4d40b204" + }, + { + "kind": "ui-call", + "line": 965, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Discovery Debug Logs", + "surface": "apple", + "id": "native.apple.dfbbe0f7c038894a" + }, + { + "kind": "ui-call", + "line": 968, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Debug Screen Status", + "surface": "apple", + "id": "native.apple.c695f785d4f3331a" + }, + { + "kind": "ui-call", + "line": 982, + "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", + "source": "Device Name", + "surface": "apple", + "id": "native.apple.540b648f9486bb50" + }, + { + "kind": "ui-call", + "line": 249, + "path": "apps/ios/Sources/Design/SettingsProTabSupport.swift", + "source": "Connected", + "surface": "apple", + "id": "native.apple.fc7d007916016c0d" + }, + { + "kind": "ui-call", + "line": 262, + "path": "apps/ios/Sources/Design/SettingsProTabSupport.swift", + "source": "Loading", + "surface": "apple", + "id": "native.apple.b59e37e73db49f94" + }, + { + "kind": "ui-call", + "line": 271, + "path": "apps/ios/Sources/Design/SettingsProTabSupport.swift", + "source": "Empty", + "surface": "apple", + "id": "native.apple.511630542db1aa6f" + }, + { + "kind": "ui-call", + "line": 280, + "path": "apps/ios/Sources/Design/SettingsProTabSupport.swift", + "source": "Error", + "surface": "apple", + "id": "native.apple.2f70e6702c85bedf" + }, + { + "kind": "ui-call", + "line": 365, + "path": "apps/ios/Sources/Design/SettingsProTabSupport.swift", + "source": "Reconnect", + "surface": "apple", + "id": "native.apple.385825a3993c5f2a" + }, + { + "kind": "ui-call", + "line": 366, + "path": "apps/ios/Sources/Design/SettingsProTabSupport.swift", + "source": "Diagnose", + "surface": "apple", + "id": "native.apple.42e107ba01cd3840" + }, + { + "kind": "ui-call", + "line": 375, + "path": "apps/ios/Sources/Design/SettingsProTabSupport.swift", + "source": "Scan QR", + "surface": "apple", + "id": "native.apple.acd10851c7e1885d" + }, + { + "kind": "ui-call", + "line": 376, + "path": "apps/ios/Sources/Design/SettingsProTabSupport.swift", + "source": "Connect", + "surface": "apple", + "id": "native.apple.a9c35036bf9e02a8" + }, + { + "kind": "ui-call", + "line": 378, + "path": "apps/ios/Sources/Design/SettingsProTabSupport.swift", + "source": "Discovered gateways and manual setup live here when the gateway has not connected yet.", + "surface": "apple", + "id": "native.apple.f439c34a9ce3a332" + }, + { + "kind": "ui-modifier", + "line": 72, + "path": "apps/ios/Sources/Design/TalkProTab.swift", + "source": "Enable Talk", + "surface": "apple", + "id": "native.apple.58fadc01c871d064" + }, + { + "kind": "ui-call", + "line": 75, + "path": "apps/ios/Sources/Design/TalkProTab.swift", + "source": "Not Now", + "surface": "apple", + "id": "native.apple.c6e171128190d131" + }, + { + "kind": "ui-call", + "line": 102, + "path": "apps/ios/Sources/Design/TalkProTab.swift", + "source": "Talk", + "surface": "apple", + "id": "native.apple.29b77009bc088199" + }, + { + "kind": "ui-call", + "line": 243, + "path": "apps/ios/Sources/Design/TalkProTab.swift", + "source": "Voice & Talk settings", + "surface": "apple", + "id": "native.apple.db685e80ed2f3076" + }, + { + "kind": "ui-call", + "line": 45, + "path": "apps/ios/Sources/Design/TalkRuntimeIssueBanner.swift", + "source": "Open Settings", + "surface": "apple", + "id": "native.apple.1b802aea97c74722" + }, + { + "kind": "ui-call", + "line": 50, + "path": "apps/ios/Sources/Design/TalkRuntimeIssueBanner.swift", + "source": "Details", + "surface": "apple", + "id": "native.apple.533ef094239ad275" + }, + { + "kind": "ui-call", + "line": 104, + "path": "apps/ios/Sources/Design/TalkRuntimeIssueBanner.swift", + "source": "Technical details", + "surface": "apple", + "id": "native.apple.677a41ec947a185b" + }, + { + "kind": "ui-call", + "line": 109, + "path": "apps/ios/Sources/Design/TalkRuntimeIssueBanner.swift", + "source": "Copy diagnostics", + "surface": "apple", + "id": "native.apple.79b30b1d014a383d" + }, + { + "kind": "ui-modifier", + "line": 123, + "path": "apps/ios/Sources/Design/TalkRuntimeIssueBanner.swift", + "source": "Talk fallback", + "surface": "apple", + "id": "native.apple.e87c850114041ce8" + }, + { + "kind": "ui-call", + "line": 128, + "path": "apps/ios/Sources/Design/TalkRuntimeIssueBanner.swift", + "source": "Open Settings", + "surface": "apple", + "id": "native.apple.1b802aea97c74722.128" + }, + { + "kind": "ui-call", + "line": 135, + "path": "apps/ios/Sources/Design/TalkRuntimeIssueBanner.swift", + "source": "Done", + "surface": "apple", + "id": "native.apple.073825a7670d08cc" + }, + { + "kind": "ui-call", + "line": 17, + "path": "apps/ios/Sources/Gateway/DeepLinkAgentPromptAlert.swift", + "source": "Run OpenClaw agent?", + "surface": "apple", + "id": "native.apple.c218ef5194d0ee56" + }, + { + "kind": "ui-call", + "line": 26, + "path": "apps/ios/Sources/Gateway/DeepLinkAgentPromptAlert.swift", + "source": "Cancel", + "surface": "apple", + "id": "native.apple.fd7a510d373bb915" + }, + { + "kind": "ui-call", + "line": 29, + "path": "apps/ios/Sources/Gateway/DeepLinkAgentPromptAlert.swift", + "source": "Run", + "surface": "apple", + "id": "native.apple.556a5ad9893871c8" + }, + { + "kind": "ui-call", + "line": 62, + "path": "apps/ios/Sources/Gateway/ExecApprovalPromptDialog.swift", + "source": "Exec approval required", + "surface": "apple", + "id": "native.apple.8affb166c6d3eb43" + }, + { + "kind": "ui-call", + "line": 64, + "path": "apps/ios/Sources/Gateway/ExecApprovalPromptDialog.swift", + "source": "Review this exec request before continuing. Your decision will be sent back to the gateway.", + "surface": "apple", + "id": "native.apple.cc304ba214b8a9df" + }, + { + "kind": "ui-call", + "line": 100, + "path": "apps/ios/Sources/Gateway/ExecApprovalPromptDialog.swift", + "source": "Resolving…", + "surface": "apple", + "id": "native.apple.ffeadaa59fd07335" + }, + { + "kind": "ui-call", + "line": 110, + "path": "apps/ios/Sources/Gateway/ExecApprovalPromptDialog.swift", + "source": "Allow Once", + "surface": "apple", + "id": "native.apple.88dd5e6f5e90514d" + }, + { + "kind": "ui-call", + "line": 120, + "path": "apps/ios/Sources/Gateway/ExecApprovalPromptDialog.swift", + "source": "Allow Always", + "surface": "apple", + "id": "native.apple.bc243f646ddc3656" + }, + { + "kind": "ui-call", + "line": 131, + "path": "apps/ios/Sources/Gateway/ExecApprovalPromptDialog.swift", + "source": "Deny", + "surface": "apple", + "id": "native.apple.ac88205cbb8a974d" + }, + { + "kind": "ui-call", + "line": 140, + "path": "apps/ios/Sources/Gateway/ExecApprovalPromptDialog.swift", + "source": "Cancel", + "surface": "apple", + "id": "native.apple.7292be2c03d1caa4" + }, + { + "kind": "ui-call", + "line": 11, + "path": "apps/ios/Sources/Gateway/GatewayDiscoveryDebugLogView.swift", + "source": "Enable “Discovery Debug Logs” to start collecting events.", + "surface": "apple", + "id": "native.apple.c741e0a44409ac2a" + }, + { + "kind": "ui-call", + "line": 16, + "path": "apps/ios/Sources/Gateway/GatewayDiscoveryDebugLogView.swift", + "source": "No log entries yet.", + "surface": "apple", + "id": "native.apple.94e50889eec05b85" + }, + { + "kind": "ui-modifier", + "line": 32, + "path": "apps/ios/Sources/Gateway/GatewayDiscoveryDebugLogView.swift", + "source": "Discovery Logs", + "surface": "apple", + "id": "native.apple.c80ead1ebfcfd78c" + }, + { + "kind": "ui-call", + "line": 35, + "path": "apps/ios/Sources/Gateway/GatewayDiscoveryDebugLogView.swift", + "source": "Copy", + "surface": "apple", + "id": "native.apple.f21a8e304b607dc8" + }, + { + "kind": "ui-call", + "line": 39, + "path": "apps/ios/Sources/Gateway/GatewayProblemView.swift", + "source": "Request ID: \\(requestId)", + "surface": "apple", + "id": "native.apple.9958308c545765cc" + }, + { + "kind": "ui-call", + "line": 54, + "path": "apps/ios/Sources/Gateway/GatewayProblemView.swift", + "source": "Details", + "surface": "apple", + "id": "native.apple.b0933a18a539aef6" + }, + { + "kind": "ui-call", + "line": 153, + "path": "apps/ios/Sources/Gateway/GatewayProblemView.swift", + "source": "Request", + "surface": "apple", + "id": "native.apple.fd04cd49334845a9" + }, + { + "kind": "ui-call", + "line": 157, + "path": "apps/ios/Sources/Gateway/GatewayProblemView.swift", + "source": "Copy request ID", + "surface": "apple", + "id": "native.apple.ae581f232bd0ecc0" + }, + { + "kind": "ui-call", + "line": 165, + "path": "apps/ios/Sources/Gateway/GatewayProblemView.swift", + "source": "Gateway command", + "surface": "apple", + "id": "native.apple.50622ef698ba07f5" + }, + { + "kind": "ui-call", + "line": 169, + "path": "apps/ios/Sources/Gateway/GatewayProblemView.swift", + "source": "Copy command", + "surface": "apple", + "id": "native.apple.98df0e8ba486e4d1" + }, + { + "kind": "ui-call", + "line": 177, + "path": "apps/ios/Sources/Gateway/GatewayProblemView.swift", + "source": "Help", + "surface": "apple", + "id": "native.apple.6b1a61d6c9510bdb" + }, + { + "kind": "ui-call", + "line": 179, + "path": "apps/ios/Sources/Gateway/GatewayProblemView.swift", + "source": "Open docs", + "surface": "apple", + "id": "native.apple.32ea6ea1f9aea920" + }, + { + "kind": "ui-call", + "line": 189, + "path": "apps/ios/Sources/Gateway/GatewayProblemView.swift", + "source": "Technical details", + "surface": "apple", + "id": "native.apple.7041ebbb775bfdd7" + }, + { + "kind": "ui-modifier", + "line": 205, + "path": "apps/ios/Sources/Gateway/GatewayProblemView.swift", + "source": "Connection problem", + "surface": "apple", + "id": "native.apple.d33a0c45a54fa8a3" + }, + { + "kind": "ui-call", + "line": 217, + "path": "apps/ios/Sources/Gateway/GatewayProblemView.swift", + "source": "Done", + "surface": "apple", + "id": "native.apple.9bdfbc3e1ea38cb3" + }, + { + "kind": "ui-call", + "line": 17, + "path": "apps/ios/Sources/Gateway/GatewayQuickSetupSheet.swift", + "source": "Connect to a Gateway?", + "surface": "apple", + "id": "native.apple.948e3fafb80564c9" + }, + { + "kind": "ui-call", + "line": 57, + "path": "apps/ios/Sources/Gateway/GatewayQuickSetupSheet.swift", + "source": "Connecting…", + "surface": "apple", + "id": "native.apple.e8f30dffd2d62d96" + }, + { + "kind": "ui-call", + "line": 60, + "path": "apps/ios/Sources/Gateway/GatewayQuickSetupSheet.swift", + "source": "Connect", + "surface": "apple", + "id": "native.apple.a735b07046d583e7" + }, + { + "kind": "ui-call", + "line": 78, + "path": "apps/ios/Sources/Gateway/GatewayQuickSetupSheet.swift", + "source": "Not now", + "surface": "apple", + "id": "native.apple.102d0ce74e6253f3" + }, + { + "kind": "ui-call", + "line": 84, + "path": "apps/ios/Sources/Gateway/GatewayQuickSetupSheet.swift", + "source": "Don’t show this again", + "surface": "apple", + "id": "native.apple.88dbf6b7151586b4" + }, + { + "kind": "ui-call", + "line": 87, + "path": "apps/ios/Sources/Gateway/GatewayQuickSetupSheet.swift", + "source": "No gateways found yet. Make sure your gateway is running and Bonjour discovery is enabled.", + "surface": "apple", + "id": "native.apple.51d42270d75ea40a" + }, + { + "kind": "ui-modifier", + "line": 94, + "path": "apps/ios/Sources/Gateway/GatewayQuickSetupSheet.swift", + "source": "Quick Setup", + "surface": "apple", + "id": "native.apple.476757fc54c63560" + }, + { + "kind": "ui-call", + "line": 102, + "path": "apps/ios/Sources/Gateway/GatewayQuickSetupSheet.swift", + "source": "Close", + "surface": "apple", + "id": "native.apple.977a6e4a5022184f" + }, + { + "kind": "ui-call", + "line": 19, + "path": "apps/ios/Sources/Gateway/GatewayTrustPromptAlert.swift", + "source": "Trust this gateway?", + "surface": "apple", + "id": "native.apple.bbcc63db712ca58e" + }, + { + "kind": "ui-call", + "line": 27, + "path": "apps/ios/Sources/Gateway/GatewayTrustPromptAlert.swift", + "source": "Cancel", + "surface": "apple", + "id": "native.apple.a026715905bfd429" + }, + { + "kind": "ui-call", + "line": 30, + "path": "apps/ios/Sources/Gateway/GatewayTrustPromptAlert.swift", + "source": "Trust and connect", + "surface": "apple", + "id": "native.apple.0892fd4bee73202a" + }, + { + "kind": "ui-call", + "line": 52, + "path": "apps/ios/Sources/Gateway/NotificationPermissionGuidanceDialog.swift", + "source": "Notifications are off", + "surface": "apple", + "id": "native.apple.381baa85bbbd0f31" + }, + { + "kind": "ui-call", + "line": 69, + "path": "apps/ios/Sources/Gateway/NotificationPermissionGuidanceDialog.swift", + "source": "Open Notifications Settings", + "surface": "apple", + "id": "native.apple.a2378696390cca1e" + }, + { + "kind": "ui-call", + "line": 77, + "path": "apps/ios/Sources/Gateway/NotificationPermissionGuidanceDialog.swift", + "source": "Not Now", + "surface": "apple", + "id": "native.apple.807456c9b744662b" + }, + { + "kind": "ui-call", + "line": 85, + "path": "apps/ios/Sources/Gateway/NotificationPermissionGuidanceDialog.swift", + "source": "Don't show again", + "surface": "apple", + "id": "native.apple.d180e6d9a4963c2b" + }, + { + "kind": "ui-call", + "line": 13, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardSteps.swift", + "source": "Welcome to OpenClaw", + "surface": "apple", + "id": "native.apple.8197d399f16b6d15" + }, + { + "kind": "ui-call", + "line": 18, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardSteps.swift", + "source": "Turn this device into a secure OpenClaw node for chat, voice, camera, and device tools.", + "surface": "apple", + "id": "native.apple.116e17ea3a036818" + }, + { + "kind": "ui-call", + "line": 26, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardSteps.swift", + "source": "Connect to your gateway", + "surface": "apple", + "id": "native.apple.a715ab755d539d54" + }, + { + "kind": "ui-call", + "line": 27, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardSteps.swift", + "source": "Choose device permissions", + "surface": "apple", + "id": "native.apple.701ae9ceb7952290" + }, + { + "kind": "ui-call", + "line": 28, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardSteps.swift", + "source": "Use OpenClaw from your phone", + "surface": "apple", + "id": "native.apple.3d6efa9b4d988d3a" + }, + { + "kind": "ui-call", + "line": 48, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardSteps.swift", + "source": "Security notice", + "surface": "apple", + "id": "native.apple.09e7832b23cf14f6" + }, + { + "kind": "ui-call", + "line": 50, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardSteps.swift", + "source": "The connected OpenClaw agent can use device capabilities you enable,", + "surface": "apple", + "id": "native.apple.1de728a231b55cf0" + }, + { + "kind": "ui-call", + "line": 72, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardSteps.swift", + "source": "Continue", + "surface": "apple", + "id": "native.apple.cae311a6e975c879" + }, + { + "kind": "ui-call", + "line": 97, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardSteps.swift", + "source": "Connect Gateway", + "surface": "apple", + "id": "native.apple.68e933b36353a30c" + }, + { + "kind": "ui-call", + "line": 101, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardSteps.swift", + "source": "Scan a QR code from your OpenClaw gateway or continue with manual setup.", + "surface": "apple", + "id": "native.apple.e38067caa3fed1cd" + }, + { + "kind": "ui-call", + "line": 108, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardSteps.swift", + "source": "How to pair", + "surface": "apple", + "id": "native.apple.90592a5f545c102a" + }, + { + "kind": "ui-call", + "line": 110, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardSteps.swift", + "source": "In your OpenClaw chat, run", + "surface": "apple", + "id": "native.apple.005ae52ec5edd8a1" + }, + { + "kind": "ui-call", + "line": 113, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardSteps.swift", + "source": "/pair qr", + "surface": "apple", + "id": "native.apple.9f65b2eadb6aee92" + }, + { + "kind": "ui-call", + "line": 115, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardSteps.swift", + "source": "Then scan the QR code here to connect this device.", + "surface": "apple", + "id": "native.apple.470229f716c184bb" + }, + { + "kind": "ui-call", + "line": 134, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardSteps.swift", + "source": "Scan QR Code", + "surface": "apple", + "id": "native.apple.429ac70f39c21302" + }, + { + "kind": "ui-call", + "line": 143, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardSteps.swift", + "source": "Set Up Manually", + "surface": "apple", + "id": "native.apple.7ba3027e51acb255" + }, + { + "kind": "ui-call", + "line": 144, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Back", + "surface": "apple", + "id": "native.apple.e3cc3df936dce84d" + }, + { + "kind": "ui-call", + "line": 147, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Close", + "surface": "apple", + "id": "native.apple.e58367cfa71115cc" + }, + { + "kind": "ui-call", + "line": 154, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Done", + "surface": "apple", + "id": "native.apple.7822f4f0f671d841" + }, + { + "kind": "ui-call", + "line": 169, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "OK", + "surface": "apple", + "id": "native.apple.0a329fe4d4aef5bb" + }, + { + "kind": "ui-modifier", + "line": 191, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Scan QR Code", + "surface": "apple", + "id": "native.apple.a5fe3de8fc43f3da" + }, + { + "kind": "ui-call", + "line": 195, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Cancel", + "surface": "apple", + "id": "native.apple.f58429a2d9d3371f" + }, + { + "kind": "ui-call", + "line": 199, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Photos", + "surface": "apple", + "id": "native.apple.f0a022bd1772fda0" + }, + { + "kind": "ui-call", + "line": 318, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Connection Mode", + "surface": "apple", + "id": "native.apple.e0c0677d749a0f57" + }, + { + "kind": "ui-call", + "line": 349, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Continue", + "surface": "apple", + "id": "native.apple.b7dc527c2a7e95cb" + }, + { + "kind": "ui-call", + "line": 357, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Developer mode", + "surface": "apple", + "id": "native.apple.93d3e17fabd5e082" + }, + { + "kind": "ui-call", + "line": 403, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Mode", + "surface": "apple", + "id": "native.apple.d444d84eb269f529" + }, + { + "kind": "ui-call", + "line": 404, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Discovery", + "surface": "apple", + "id": "native.apple.d5d2681fc2d9b10d" + }, + { + "kind": "ui-call", + "line": 405, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Status", + "surface": "apple", + "id": "native.apple.2034ab1aeebbab91" + }, + { + "kind": "ui-call", + "line": 406, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Progress", + "surface": "apple", + "id": "native.apple.04cf1c4cf2c590ea" + }, + { + "kind": "ui-call", + "line": 408, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Status", + "surface": "apple", + "id": "native.apple.2034ab1aeebbab91.408" + }, + { + "kind": "ui-call", + "line": 425, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Choose a mode first.", + "surface": "apple", + "id": "native.apple.17e200e7cbad27ae" + }, + { + "kind": "ui-call", + "line": 426, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Back to Mode Selection", + "surface": "apple", + "id": "native.apple.378c2c7be159c1f2" + }, + { + "kind": "ui-call", + "line": 435, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Discovered Gateways", + "surface": "apple", + "id": "native.apple.07ebd3b75969629f" + }, + { + "kind": "ui-call", + "line": 437, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "No gateways found yet.", + "surface": "apple", + "id": "native.apple.2f00ef4bc35ecb8d" + }, + { + "kind": "ui-call", + "line": 460, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Resolving…", + "surface": "apple", + "id": "native.apple.17b900bb8b2fcced" + }, + { + "kind": "ui-call", + "line": 462, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Connect", + "surface": "apple", + "id": "native.apple.ab58b30ddda7aeb0" + }, + { + "kind": "ui-call", + "line": 470, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Restart Discovery", + "surface": "apple", + "id": "native.apple.94c9697fb748d05d" + }, + { + "kind": "ui-call", + "line": 486, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Host", + "surface": "apple", + "id": "native.apple.826c84d7090d253c" + }, + { + "kind": "ui-call", + "line": 489, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Port", + "surface": "apple", + "id": "native.apple.9e9de5d188e3c693" + }, + { + "kind": "ui-call", + "line": 491, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Use TLS", + "surface": "apple", + "id": "native.apple.ee93ad2b0824d2c4" + }, + { + "kind": "ui-call", + "line": 494, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Developer Local", + "surface": "apple", + "id": "native.apple.36bb966d0789414d" + }, + { + "kind": "ui-call", + "line": 496, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Default host is localhost. Use your Mac LAN IP if simulator networking requires it.", + "surface": "apple", + "id": "native.apple.dc8b73d67a261e73" + }, + { + "kind": "ui-call", + "line": 502, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Authentication", + "surface": "apple", + "id": "native.apple.6fbe75a487383dbe" + }, + { + "kind": "ui-call", + "line": 503, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Gateway Auth Token", + "surface": "apple", + "id": "native.apple.600ba39ce56ddd62" + }, + { + "kind": "ui-call", + "line": 506, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Gateway Password", + "surface": "apple", + "id": "native.apple.a5943eaea2db1d6d" + }, + { + "kind": "ui-call", + "line": 519, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Gateway rejected credentials. Scan a fresh QR code or update token/password.", + "surface": "apple", + "id": "native.apple.4cc6c6c21864bff9" + }, + { + "kind": "ui-call", + "line": 523, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Auth token looks valid.", + "surface": "apple", + "id": "native.apple.5841249e14da136f" + }, + { + "kind": "ui-call", + "line": 534, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Resume After Approval", + "surface": "apple", + "id": "native.apple.4404f435fb496b62" + }, + { + "kind": "ui-call", + "line": 538, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Pairing Approval", + "surface": "apple", + "id": "native.apple.44233bae1c0afe68" + }, + { + "kind": "ui-call", + "line": 547, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Approve this device on the gateway.", + "surface": "apple", + "id": "native.apple.391cb8d7969545f3" + }, + { + "kind": "ui-call", + "line": 560, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Scan QR Code Again", + "surface": "apple", + "id": "native.apple.7ff9099402ff9f21" + }, + { + "kind": "ui-call", + "line": 571, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Retry Connection", + "surface": "apple", + "id": "native.apple.0134e9bd57c74d27" + }, + { + "kind": "ui-call", + "line": 588, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Connected", + "surface": "apple", + "id": "native.apple.1384841e5f584d83" + }, + { + "kind": "ui-call", + "line": 609, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Open OpenClaw", + "surface": "apple", + "id": "native.apple.f50052c1d760ec10" + }, + { + "kind": "ui-call", + "line": 623, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Paste setup code", + "surface": "apple", + "id": "native.apple.4679e949156e07e3" + }, + { + "kind": "ui-call", + "line": 637, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Applying...", + "surface": "apple", + "id": "native.apple.880898c80cab264e" + }, + { + "kind": "ui-call", + "line": 640, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Apply Setup Code", + "surface": "apple", + "id": "native.apple.064ae900e9c5b550" + }, + { + "kind": "ui-call", + "line": 653, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Setup Code", + "surface": "apple", + "id": "native.apple.74d4be2078a04261" + }, + { + "kind": "ui-call", + "line": 655, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Use this if you received a setup code instead of a QR code.", + "surface": "apple", + "id": "native.apple.c522fa3b5b0d812a" + }, + { + "kind": "ui-call", + "line": 661, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Host", + "surface": "apple", + "id": "native.apple.826c84d7090d253c.661" + }, + { + "kind": "ui-call", + "line": 664, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Port", + "surface": "apple", + "id": "native.apple.9e9de5d188e3c693.664" + }, + { + "kind": "ui-call", + "line": 666, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Use TLS", + "surface": "apple", + "id": "native.apple.ee93ad2b0824d2c4.666" + }, + { + "kind": "ui-call", + "line": 667, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Discovery Domain (optional)", + "surface": "apple", + "id": "native.apple.b1fdf88fe407cf7b" + }, + { + "kind": "ui-call", + "line": 671, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Gateway Auth Token", + "surface": "apple", + "id": "native.apple.600ba39ce56ddd62.671" + }, + { + "kind": "ui-call", + "line": 674, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Gateway Password", + "surface": "apple", + "id": "native.apple.a5943eaea2db1d6d.674" + }, + { + "kind": "ui-call", + "line": 688, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Connecting…", + "surface": "apple", + "id": "native.apple.6c3fe084ab7b318d" + }, + { + "kind": "ui-call", + "line": 691, + "path": "apps/ios/Sources/Onboarding/OnboardingWizardView.swift", + "source": "Connect", + "surface": "apple", + "id": "native.apple.ab58b30ddda7aeb0.691" + }, + { + "kind": "ui-call", + "line": 143, + "path": "apps/ios/Sources/RootTabs.swift", + "source": "Control", + "surface": "apple", + "id": "native.apple.bda6cfa988e49a75" + }, + { + "kind": "ui-call", + "line": 148, + "path": "apps/ios/Sources/RootTabs.swift", + "source": "Chat", + "surface": "apple", + "id": "native.apple.fa30f77325b46efb" + }, + { + "kind": "ui-call", + "line": 153, + "path": "apps/ios/Sources/RootTabs.swift", + "source": "Talk", + "surface": "apple", + "id": "native.apple.f2ea327bfea8b8e3" + }, + { + "kind": "ui-call", + "line": 164, + "path": "apps/ios/Sources/RootTabs.swift", + "source": "Agent", + "surface": "apple", + "id": "native.apple.3c80f5351055a5f3" + }, + { + "kind": "ui-call", + "line": 171, + "path": "apps/ios/Sources/RootTabs.swift", + "source": "Settings", + "surface": "apple", + "id": "native.apple.22d107db5b905ef4" + }, + { + "kind": "ui-call", + "line": 263, + "path": "apps/ios/Sources/RootTabs.swift", + "source": "OpenClaw", + "surface": "apple", + "id": "native.apple.c23d35de8d70863f" + }, + { + "kind": "ui-call", + "line": 292, + "path": "apps/ios/Sources/RootTabs.swift", + "source": "OpenClaw \\(self.sidebarGatewayStatusTitle)", + "surface": "apple", + "id": "native.apple.fe50072094141b8d" + }, + { + "kind": "ui-modifier", + "line": 292, + "path": "apps/ios/Sources/RootTabs.swift", + "source": "OpenClaw \\(self.sidebarGatewayStatusTitle)", + "surface": "apple", + "id": "native.apple.39042da9fc187030" + }, + { + "kind": "ui-call", + "line": 329, + "path": "apps/ios/Sources/RootTabs.swift", + "source": "VERSION", + "surface": "apple", + "id": "native.apple.c50d02be6bd4818d" + }, + { + "kind": "ui-call", + "line": 333, + "path": "apps/ios/Sources/RootTabs.swift", + "source": "v\\(DeviceInfoHelper.openClawVersionString())", + "surface": "apple", + "id": "native.apple.f4f6d9a52238752e" + }, + { + "kind": "ui-call", + "line": 562, + "path": "apps/ios/Sources/RootTabs.swift", + "source": "Hide Sidebar", + "surface": "apple", + "id": "native.apple.0b7eee4e5471dd38" + }, + { + "kind": "ui-modifier", + "line": 562, + "path": "apps/ios/Sources/RootTabs.swift", + "source": "Hide Sidebar", + "surface": "apple", + "id": "native.apple.72fab75688479b3e" + }, + { + "kind": "ui-call", + "line": 634, + "path": "apps/ios/Sources/RootTabs.swift", + "source": "Close canvas", + "surface": "apple", + "id": "native.apple.f544902de2376c3b" + }, + { + "kind": "ui-modifier", + "line": 634, + "path": "apps/ios/Sources/RootTabs.swift", + "source": "Close canvas", + "surface": "apple", + "id": "native.apple.8af43f59602ec0d8" + }, + { + "kind": "ui-call", + "line": 14, + "path": "apps/ios/Sources/Settings/VoiceWakeWordsSettingsView.swift", + "source": "Wake word", + "surface": "apple", + "id": "native.apple.d9f9a74e25431256" + }, + { + "kind": "ui-call", + "line": 27, + "path": "apps/ios/Sources/Settings/VoiceWakeWordsSettingsView.swift", + "source": "Add word", + "surface": "apple", + "id": "native.apple.afc6f7fed2ea65d6" + }, + { + "kind": "ui-call", + "line": 32, + "path": "apps/ios/Sources/Settings/VoiceWakeWordsSettingsView.swift", + "source": "Reset defaults", + "surface": "apple", + "id": "native.apple.193005a2cdf1257f" + }, + { + "kind": "ui-call", + "line": 36, + "path": "apps/ios/Sources/Settings/VoiceWakeWordsSettingsView.swift", + "source": "Wake Words", + "surface": "apple", + "id": "native.apple.c1314556e24659d1" + }, + { + "kind": "ui-call", + "line": 38, + "path": "apps/ios/Sources/Settings/VoiceWakeWordsSettingsView.swift", + "source": "OpenClaw reacts when any trigger appears in a transcription.", + "surface": "apple", + "id": "native.apple.1b50da06e6635cad" + }, + { + "kind": "ui-modifier", + "line": 43, + "path": "apps/ios/Sources/Settings/VoiceWakeWordsSettingsView.swift", + "source": "Wake Words", + "surface": "apple", + "id": "native.apple.4fa33d3e9329db8a" + }, + { + "kind": "ui-call", + "line": 26, + "path": "apps/ios/Sources/Status/VoiceWakeToast.swift", + "source": "Voice Wake triggered", + "surface": "apple", + "id": "native.apple.bf7c62ea75f81013" + }, + { + "kind": "ui-modifier", + "line": 26, + "path": "apps/ios/Sources/Status/VoiceWakeToast.swift", + "source": "Voice Wake triggered", + "surface": "apple", + "id": "native.apple.994760420a194561" + }, + { + "kind": "ui-call", + "line": 59, + "path": "apps/ios/Sources/Voice/TalkPermissionPromptView.swift", + "source": "Request ID", + "surface": "apple", + "id": "native.apple.0189269b6a863dc2" + }, + { + "kind": "ui-call", + "line": 73, + "path": "apps/ios/Sources/Voice/TalkPermissionPromptView.swift", + "source": "Sending...", + "surface": "apple", + "id": "native.apple.f9d69f27f9d7f4de" + }, + { + "kind": "ui-call", + "line": 87, + "path": "apps/ios/Sources/Voice/TalkPermissionPromptView.swift", + "source": "Retry", + "surface": "apple", + "id": "native.apple.0c5336129f70faed" + }, + { + "kind": "ui-call", + "line": 178, + "path": "apps/ios/Tests/RootTabsPresentationTests.swift", + "source": "quarantined", + "surface": "apple", + "id": "native.apple.a892da29071dc4c3" + }, + { + "kind": "ui-call", + "line": 179, + "path": "apps/ios/Tests/RootTabsPresentationTests.swift", + "source": "pending", + "surface": "apple", + "id": "native.apple.fa338869ebe86039" + }, + { + "kind": "ui-call", + "line": 180, + "path": "apps/ios/Tests/RootTabsPresentationTests.swift", + "source": "needs-review", + "surface": "apple", + "id": "native.apple.2a0e160bfe78e347" + }, + { + "kind": "ui-call", + "line": 181, + "path": "apps/ios/Tests/RootTabsPresentationTests.swift", + "source": "manual_QA", + "surface": "apple", + "id": "native.apple.4bccd47831234643" + }, + { + "kind": "ui-call", + "line": 243, + "path": "apps/ios/Tests/RootTabsPresentationTests.swift", + "source": "clickclack", + "surface": "apple", + "id": "native.apple.d33cfc7a9611b6f8" + }, + { + "kind": "ui-modifier", + "line": 1050, + "path": "apps/ios/WatchApp/Sources/WatchInboxView.swift", + "source": "Chat", + "surface": "apple", + "id": "native.apple.c3f95f441ca34eae" + }, + { + "kind": "ui-call", + "line": 1065, + "path": "apps/ios/WatchApp/Sources/WatchInboxView.swift", + "source": "No chat synced", + "surface": "apple", + "id": "native.apple.5f277949dc42b1c3" + }, + { + "kind": "ui-call", + "line": 1072, + "path": "apps/ios/WatchApp/Sources/WatchInboxView.swift", + "source": "Tap the message pill below to start from your watch.", + "surface": "apple", + "id": "native.apple.9119276e0f1b473d" + }, + { + "kind": "ui-call", + "line": 1093, + "path": "apps/ios/WatchApp/Sources/WatchInboxView.swift", + "source": "You", + "surface": "apple", + "id": "native.apple.3d6feae83f106dfa" + }, + { + "kind": "ui-call", + "line": 1114, + "path": "apps/ios/WatchApp/Sources/WatchInboxView.swift", + "source": "Message OpenClaw", + "surface": "apple", + "id": "native.apple.b816e4b9e492ae6c" + }, + { + "kind": "ui-call", + "line": 32, + "path": "apps/macos/Sources/OpenClaw/AboutSettings.swift", + "source": "OpenClaw", + "surface": "apple", + "id": "native.apple.5ac0c79487a492b4" + }, + { + "kind": "ui-call", + "line": 34, + "path": "apps/macos/Sources/OpenClaw/AboutSettings.swift", + "source": "Version \\(self.versionString)", + "surface": "apple", + "id": "native.apple.383d9c0a8f5f4f7e" + }, + { + "kind": "ui-call", + "line": 37, + "path": "apps/macos/Sources/OpenClaw/AboutSettings.swift", + "source": "Built \\(buildTimestamp)\\(self.buildSuffix)", + "surface": "apple", + "id": "native.apple.33f4ac3e111b264f" + }, + { + "kind": "ui-call", + "line": 41, + "path": "apps/macos/Sources/OpenClaw/AboutSettings.swift", + "source": "Menu bar companion for notifications, screenshots, and privileged agent actions.", + "surface": "apple", + "id": "native.apple.95b5730738a28d71" + }, + { + "kind": "ui-call", + "line": 67, + "path": "apps/macos/Sources/OpenClaw/AboutSettings.swift", + "source": "Check for updates automatically", + "surface": "apple", + "id": "native.apple.32ce87cf5adca95c" + }, + { + "kind": "ui-call", + "line": 71, + "path": "apps/macos/Sources/OpenClaw/AboutSettings.swift", + "source": "Check for Updates…", + "surface": "apple", + "id": "native.apple.5e0de63984ca40c9" + }, + { + "kind": "ui-call", + "line": 74, + "path": "apps/macos/Sources/OpenClaw/AboutSettings.swift", + "source": "Updates unavailable in this build.", + "surface": "apple", + "id": "native.apple.ddec1d4e5e5b43cb" + }, + { + "kind": "ui-call", + "line": 80, + "path": "apps/macos/Sources/OpenClaw/AboutSettings.swift", + "source": "© 2026 OpenClaw Foundation — MIT License.", + "surface": "apple", + "id": "native.apple.4ec07761308f7f50" + }, + { + "kind": "ui-call", + "line": 11, + "path": "apps/macos/Sources/OpenClaw/AgentEventsWindow.swift", + "source": "Agent Events", + "surface": "apple", + "id": "native.apple.c6148a145aa87e36" + }, + { + "kind": "ui-call", + "line": 14, + "path": "apps/macos/Sources/OpenClaw/AgentEventsWindow.swift", + "source": "Clear", + "surface": "apple", + "id": "native.apple.c8d2fe5403e9df00" + }, + { + "kind": "ui-call", + "line": 45, + "path": "apps/macos/Sources/OpenClaw/AgentEventsWindow.swift", + "source": "run", + "surface": "apple", + "id": "native.apple.c8aab1f7d19edf59" + }, + { + "kind": "ui-call", + "line": 107, + "path": "apps/macos/Sources/OpenClaw/ChannelConfigForm.swift", + "source": "Enabled", + "surface": "apple", + "id": "native.apple.90dacdcac6e6bd80" + }, + { + "kind": "ui-call", + "line": 121, + "path": "apps/macos/Sources/OpenClaw/ChannelConfigForm.swift", + "source": "Unsupported field type.", + "surface": "apple", + "id": "native.apple.198eae468f234acb" + }, + { + "kind": "ui-call", + "line": 263, + "path": "apps/macos/Sources/OpenClaw/ChannelConfigForm.swift", + "source": "No quick settings for this channel.", + "surface": "apple", + "id": "native.apple.dbc78800d9f382b9" + }, + { + "kind": "ui-call", + "line": 265, + "path": "apps/macos/Sources/OpenClaw/ChannelConfigForm.swift", + "source": "Use Config for account, guild, action, and policy details.", + "surface": "apple", + "id": "native.apple.cbf7ef1afeae9ff8" + }, + { + "kind": "ui-call", + "line": 319, + "path": "apps/macos/Sources/OpenClaw/ChannelConfigForm.swift", + "source": "Select…", + "surface": "apple", + "id": "native.apple.71dc5674a2bda6d1" + }, + { + "kind": "ui-call", + "line": 450, + "path": "apps/macos/Sources/OpenClaw/ChannelConfigForm.swift", + "source": "Remove", + "surface": "apple", + "id": "native.apple.18b74467bb3a710d" + }, + { + "kind": "ui-call", + "line": 459, + "path": "apps/macos/Sources/OpenClaw/ChannelConfigForm.swift", + "source": "Add", + "surface": "apple", + "id": "native.apple.b237bc0cf8595b6d" + }, + { + "kind": "ui-call", + "line": 485, + "path": "apps/macos/Sources/OpenClaw/ChannelConfigForm.swift", + "source": "Extra entries", + "surface": "apple", + "id": "native.apple.ce17aea717f97f4d" + }, + { + "kind": "ui-call", + "line": 488, + "path": "apps/macos/Sources/OpenClaw/ChannelConfigForm.swift", + "source": "No extra entries yet.", + "surface": "apple", + "id": "native.apple.7b5de9206729e420" + }, + { + "kind": "ui-call", + "line": 495, + "path": "apps/macos/Sources/OpenClaw/ChannelConfigForm.swift", + "source": "Key", + "surface": "apple", + "id": "native.apple.017ff7fa7b3e26c4" + }, + { + "kind": "ui-call", + "line": 499, + "path": "apps/macos/Sources/OpenClaw/ChannelConfigForm.swift", + "source": "Remove", + "surface": "apple", + "id": "native.apple.18b74467bb3a710d.499" + }, + { + "kind": "ui-call", + "line": 509, + "path": "apps/macos/Sources/OpenClaw/ChannelConfigForm.swift", + "source": "Add", + "surface": "apple", + "id": "native.apple.b237bc0cf8595b6d.509" + }, + { + "kind": "ui-call", + "line": 16, + "path": "apps/macos/Sources/OpenClaw/ChannelsSettings+ChannelSections.swift", + "source": "Logout", + "surface": "apple", + "id": "native.apple.f74dfc887ee4f936" + }, + { + "kind": "ui-call", + "line": 24, + "path": "apps/macos/Sources/OpenClaw/ChannelsSettings+ChannelSections.swift", + "source": "Logout", + "surface": "apple", + "id": "native.apple.f74dfc887ee4f936.24" + }, + { + "kind": "ui-call", + "line": 37, + "path": "apps/macos/Sources/OpenClaw/ChannelsSettings+ChannelSections.swift", + "source": "Refresh", + "surface": "apple", + "id": "native.apple.c6587031bbc3e4e0" + }, + { + "kind": "ui-call", + "line": 48, + "path": "apps/macos/Sources/OpenClaw/ChannelsSettings+ChannelSections.swift", + "source": "Linking", + "surface": "apple", + "id": "native.apple.af173734eb7ad231" + }, + { + "kind": "ui-call", + "line": 71, + "path": "apps/macos/Sources/OpenClaw/ChannelsSettings+ChannelSections.swift", + "source": "Show QR", + "surface": "apple", + "id": "native.apple.b1d834b36062043d" + }, + { + "kind": "ui-call", + "line": 77, + "path": "apps/macos/Sources/OpenClaw/ChannelsSettings+ChannelSections.swift", + "source": "Relink", + "surface": "apple", + "id": "native.apple.eecd32848403c3c4" + }, + { + "kind": "ui-call", + "line": 109, + "path": "apps/macos/Sources/OpenClaw/ChannelsSettings+ChannelSections.swift", + "source": "Save", + "surface": "apple", + "id": "native.apple.35729b2cd003a68a" + }, + { + "kind": "ui-call", + "line": 115, + "path": "apps/macos/Sources/OpenClaw/ChannelsSettings+ChannelSections.swift", + "source": "Reload", + "surface": "apple", + "id": "native.apple.91dcf68eb2e49095" + }, + { + "kind": "ui-call", + "line": 70, + "path": "apps/macos/Sources/OpenClaw/ChannelsSettings+View.swift", + "source": "Channels", + "surface": "apple", + "id": "native.apple.bf4f425bd0dc0c74" + }, + { + "kind": "ui-call", + "line": 72, + "path": "apps/macos/Sources/OpenClaw/ChannelsSettings+View.swift", + "source": "Select a channel to view status and settings.", + "surface": "apple", + "id": "native.apple.4d0dfdb0ac98fb47" + }, + { + "kind": "ui-call", + "line": 145, + "path": "apps/macos/Sources/OpenClaw/ChannelsSettings+View.swift", + "source": "Last check \\(self.channelLastCheckText(channel))", + "surface": "apple", + "id": "native.apple.b4bc7f2d70f7d6f6" + }, + { + "kind": "ui-call", + "line": 149, + "path": "apps/macos/Sources/OpenClaw/ChannelsSettings+View.swift", + "source": "Error", + "surface": "apple", + "id": "native.apple.c05a9f1925dc6f02" + }, + { + "kind": "ui-call", + "line": 82, + "path": "apps/macos/Sources/OpenClaw/ConfigSettings.swift", + "source": "No config sections available.", + "surface": "apple", + "id": "native.apple.0a65101d40a6704c" + }, + { + "kind": "ui-call", + "line": 117, + "path": "apps/macos/Sources/OpenClaw/ConfigSettings.swift", + "source": "Select a config section to view settings.", + "surface": "apple", + "id": "native.apple.cb9d6dbd9d5b038c" + }, + { + "kind": "ui-call", + "line": 150, + "path": "apps/macos/Sources/OpenClaw/ConfigSettings.swift", + "source": "Unsaved changes", + "surface": "apple", + "id": "native.apple.7eb0ce9d97e01663" + }, + { + "kind": "ui-call", + "line": 165, + "path": "apps/macos/Sources/OpenClaw/ConfigSettings.swift", + "source": "Config", + "surface": "apple", + "id": "native.apple.4042c565a6f65501" + }, + { + "kind": "ui-call", + "line": 188, + "path": "apps/macos/Sources/OpenClaw/ConfigSettings.swift", + "source": "Reload", + "surface": "apple", + "id": "native.apple.a3465ec90e435ea9" + }, + { + "kind": "ui-call", + "line": 280, + "path": "apps/macos/Sources/OpenClaw/ConfigSettings.swift", + "source": "Loading current values…", + "surface": "apple", + "id": "native.apple.2efbb034dfb1c8f6" + }, + { + "kind": "ui-call", + "line": 287, + "path": "apps/macos/Sources/OpenClaw/ConfigSettings.swift", + "source": "Wildcard config entries are edited from their concrete key.", + "surface": "apple", + "id": "native.apple.5d4cb34e9ab41e84" + }, + { + "kind": "ui-call", + "line": 322, + "path": "apps/macos/Sources/OpenClaw/ConfigSettings.swift", + "source": "Retry", + "surface": "apple", + "id": "native.apple.88b63f0b2ca895e6" + }, + { + "kind": "ui-call", + "line": 353, + "path": "apps/macos/Sources/OpenClaw/ConfigSettings.swift", + "source": "Required", + "surface": "apple", + "id": "native.apple.b77bd2f246efcbe1" + }, + { + "kind": "ui-call", + "line": 30, + "path": "apps/macos/Sources/OpenClaw/ContextMenuCardView.swift", + "source": "No active sessions", + "surface": "apple", + "id": "native.apple.185e2d2285227daf" + }, + { + "kind": "ui-call", + "line": 89, + "path": "apps/macos/Sources/OpenClaw/ContextMenuCardView.swift", + "source": "main", + "surface": "apple", + "id": "native.apple.285a3ac6017334f9" + }, + { + "kind": "ui-call", + "line": 94, + "path": "apps/macos/Sources/OpenClaw/ContextMenuCardView.swift", + "source": "000k/000k", + "surface": "apple", + "id": "native.apple.7d8890e2fc64e695" + }, + { + "kind": "ui-call", + "line": 19, + "path": "apps/macos/Sources/OpenClaw/ContextRootMenuLabelView.swift", + "source": "Context", + "surface": "apple", + "id": "native.apple.ae89998eb6f436e0" + }, + { + "kind": "ui-call", + "line": 60, + "path": "apps/macos/Sources/OpenClaw/ContextUsageBar.swift", + "source": "Context usage", + "surface": "apple", + "id": "native.apple.80051ce139395da6" + }, + { + "kind": "ui-modifier", + "line": 60, + "path": "apps/macos/Sources/OpenClaw/ContextUsageBar.swift", + "source": "Context usage", + "surface": "apple", + "id": "native.apple.c8e1c903a53d1abc" + }, + { + "kind": "ui-call", + "line": 27, + "path": "apps/macos/Sources/OpenClaw/CostUsageMenuView.swift", + "source": "Today", + "surface": "apple", + "id": "native.apple.47eb7fbdc9792b54" + }, + { + "kind": "ui-call", + "line": 34, + "path": "apps/macos/Sources/OpenClaw/CostUsageMenuView.swift", + "source": "Last \\(self.summary.days)d", + "surface": "apple", + "id": "native.apple.ebfc6af133da68bf" + }, + { + "kind": "ui-call", + "line": 77, + "path": "apps/macos/Sources/OpenClaw/CostUsageMenuView.swift", + "source": "Partial: \\(self.summary.totals.missingCostEntries) entries missing cost", + "surface": "apple", + "id": "native.apple.936bfd42a2f08232" + }, + { + "kind": "ui-call", + "line": 93, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Name", + "surface": "apple", + "id": "native.apple.f3e018806829cda3" + }, + { + "kind": "ui-call", + "line": 94, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Required (e.g. “Daily summary”)", + "surface": "apple", + "id": "native.apple.d15ab158b3c13020" + }, + { + "kind": "ui-call", + "line": 99, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Description", + "surface": "apple", + "id": "native.apple.5d3f6ae647ede805" + }, + { + "kind": "ui-call", + "line": 100, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Optional notes", + "surface": "apple", + "id": "native.apple.0e62d328b9b20553" + }, + { + "kind": "ui-call", + "line": 105, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Agent ID", + "surface": "apple", + "id": "native.apple.6773dec468741604" + }, + { + "kind": "ui-call", + "line": 106, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Optional (default agent)", + "surface": "apple", + "id": "native.apple.16586aa545b687a0" + }, + { + "kind": "ui-call", + "line": 111, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Enabled", + "surface": "apple", + "id": "native.apple.eeba38110f1a3c12" + }, + { + "kind": "ui-call", + "line": 117, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Session target", + "surface": "apple", + "id": "native.apple.bcc9d1eb3289bc25" + }, + { + "kind": "ui-call", + "line": 119, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "main", + "surface": "apple", + "id": "native.apple.3e408bf7fd913139" + }, + { + "kind": "ui-call", + "line": 120, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "isolated", + "surface": "apple", + "id": "native.apple.926b2cd8c6dbbc45" + }, + { + "kind": "ui-call", + "line": 121, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "current", + "surface": "apple", + "id": "native.apple.a3a4fb0c68d6aa82" + }, + { + "kind": "ui-call", + "line": 128, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Wake mode", + "surface": "apple", + "id": "native.apple.ec2f3c99d04a641f" + }, + { + "kind": "ui-call", + "line": 130, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "now", + "surface": "apple", + "id": "native.apple.7bcc0a63bfc663e3" + }, + { + "kind": "ui-call", + "line": 131, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "next-heartbeat", + "surface": "apple", + "id": "native.apple.0f943be2a3559a24" + }, + { + "kind": "ui-call", + "line": 152, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Kind", + "surface": "apple", + "id": "native.apple.cfc085d7f55ec6bb" + }, + { + "kind": "ui-call", + "line": 154, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "at", + "surface": "apple", + "id": "native.apple.288d76f698265dc7" + }, + { + "kind": "ui-call", + "line": 155, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "every", + "surface": "apple", + "id": "native.apple.981882337a41b775" + }, + { + "kind": "ui-call", + "line": 156, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "cron", + "surface": "apple", + "id": "native.apple.8f029a66e8558108" + }, + { + "kind": "ui-call", + "line": 175, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "At", + "surface": "apple", + "id": "native.apple.da555c22da16bc6c" + }, + { + "kind": "ui-call", + "line": 184, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Auto-delete", + "surface": "apple", + "id": "native.apple.fa03647816776b55" + }, + { + "kind": "ui-call", + "line": 185, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Delete after successful run", + "surface": "apple", + "id": "native.apple.8eea808cb55c1f88" + }, + { + "kind": "ui-call", + "line": 190, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Every", + "surface": "apple", + "id": "native.apple.6eb1c75f9733d7a7" + }, + { + "kind": "ui-call", + "line": 191, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "10m, 1h, 1d", + "surface": "apple", + "id": "native.apple.e1299f47ac33f3ad" + }, + { + "kind": "ui-call", + "line": 197, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Expression", + "surface": "apple", + "id": "native.apple.170810a5a91fed11" + }, + { + "kind": "ui-call", + "line": 198, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "e.g. 0 9 * * 3", + "surface": "apple", + "id": "native.apple.767058f99028f188" + }, + { + "kind": "ui-call", + "line": 203, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Timezone", + "surface": "apple", + "id": "native.apple.05b31f0b14270fb7" + }, + { + "kind": "ui-call", + "line": 204, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Optional (e.g. America/Los_Angeles)", + "surface": "apple", + "id": "native.apple.46908ba87434178e" + }, + { + "kind": "ui-call", + "line": 223, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Kind", + "surface": "apple", + "id": "native.apple.cfc085d7f55ec6bb.223" + }, + { + "kind": "ui-call", + "line": 225, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "systemEvent", + "surface": "apple", + "id": "native.apple.400a2807228864fe" + }, + { + "kind": "ui-call", + "line": 226, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "agentTurn", + "surface": "apple", + "id": "native.apple.f0fd21111cd7005e" + }, + { + "kind": "ui-call", + "line": 245, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "System event text", + "surface": "apple", + "id": "native.apple.316094e1fc93af44" + }, + { + "kind": "ui-call", + "line": 268, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Cancel", + "surface": "apple", + "id": "native.apple.b15d95fbd7ab04b2" + }, + { + "kind": "ui-call", + "line": 278, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Save", + "surface": "apple", + "id": "native.apple.88f23c037d54887b" + }, + { + "kind": "ui-call", + "line": 310, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Message", + "surface": "apple", + "id": "native.apple.ebff58db1a257892" + }, + { + "kind": "ui-call", + "line": 311, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "What should OpenClaw do?", + "surface": "apple", + "id": "native.apple.df6243155293f80b" + }, + { + "kind": "ui-call", + "line": 317, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Thinking", + "surface": "apple", + "id": "native.apple.81b5ba441a230f07" + }, + { + "kind": "ui-call", + "line": 318, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Optional (e.g. low)", + "surface": "apple", + "id": "native.apple.80ef7233b7508f01" + }, + { + "kind": "ui-call", + "line": 323, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Timeout", + "surface": "apple", + "id": "native.apple.3ba268889ad0bb29" + }, + { + "kind": "ui-call", + "line": 324, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Seconds (optional)", + "surface": "apple", + "id": "native.apple.32f1ef2c514bc5f2" + }, + { + "kind": "ui-call", + "line": 329, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Delivery", + "surface": "apple", + "id": "native.apple.8559c9accb62a451" + }, + { + "kind": "ui-call", + "line": 331, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Announce summary", + "surface": "apple", + "id": "native.apple.a7deff2e1f9a2d4b" + }, + { + "kind": "ui-call", + "line": 332, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "None", + "surface": "apple", + "id": "native.apple.b9d67998af15a52b" + }, + { + "kind": "ui-call", + "line": 342, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Channel", + "surface": "apple", + "id": "native.apple.297903b6d84321d7" + }, + { + "kind": "ui-call", + "line": 353, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "To", + "surface": "apple", + "id": "native.apple.5cee9c451573efbc" + }, + { + "kind": "ui-call", + "line": 354, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Optional override (phone number / chat id / Discord channel)", + "surface": "apple", + "id": "native.apple.f635a754de997a56" + }, + { + "kind": "ui-call", + "line": 359, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Best-effort", + "surface": "apple", + "id": "native.apple.2281bf826d28ffb7" + }, + { + "kind": "ui-call", + "line": 360, + "path": "apps/macos/Sources/OpenClaw/CronJobEditor.swift", + "source": "Do not fail the job if announce fails", + "surface": "apple", + "id": "native.apple.75ea8e8d38238dfd" + }, + { + "kind": "ui-call", + "line": 43, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Layout.swift", + "source": "Cancel", + "surface": "apple", + "id": "native.apple.1b124194b8cb5fd5" + }, + { + "kind": "ui-call", + "line": 44, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Layout.swift", + "source": "Delete", + "surface": "apple", + "id": "native.apple.5457b9d0c551b472" + }, + { + "kind": "ui-call", + "line": 74, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Layout.swift", + "source": "Cron scheduler is disabled", + "surface": "apple", + "id": "native.apple.0d7cc44ae0dab2f7" + }, + { + "kind": "ui-call", + "line": 78, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Layout.swift", + "source": "Jobs are saved, but they will not run automatically until `cron.enabled` is set to `true`", + "surface": "apple", + "id": "native.apple.d4413f2d6a075aeb" + }, + { + "kind": "ui-call", + "line": 104, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Layout.swift", + "source": "Cron Jobs", + "surface": "apple", + "id": "native.apple.832eb0b0712fd34a" + }, + { + "kind": "ui-call", + "line": 106, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Layout.swift", + "source": "Manage Gateway cron jobs and inspect run history.", + "surface": "apple", + "id": "native.apple.0de268bcd943ee00" + }, + { + "kind": "ui-call", + "line": 118, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Layout.swift", + "source": "Refresh", + "surface": "apple", + "id": "native.apple.0c4ffb322b3e65de" + }, + { + "kind": "ui-call", + "line": 128, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Layout.swift", + "source": "New Job", + "surface": "apple", + "id": "native.apple.7f5f9b82bb18d061" + }, + { + "kind": "ui-call", + "line": 139, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Layout.swift", + "source": "Error: \\(err)", + "surface": "apple", + "id": "native.apple.62a13e9cad6985af" + }, + { + "kind": "ui-call", + "line": 167, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Layout.swift", + "source": "No cron jobs yet.", + "surface": "apple", + "id": "native.apple.33a31e8e9f2003af" + }, + { + "kind": "ui-call", + "line": 205, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Layout.swift", + "source": "Select a job to inspect details and run history.", + "surface": "apple", + "id": "native.apple.03b0c3fb3259236c" + }, + { + "kind": "ui-call", + "line": 208, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Layout.swift", + "source": "Tip: use ‘New Job’ to add one, or enable cron in your gateway config.", + "surface": "apple", + "id": "native.apple.60409b6f360a2726" + }, + { + "kind": "ui-call", + "line": 36, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "Run now", + "surface": "apple", + "id": "native.apple.b3049b1b58de4e0a" + }, + { + "kind": "ui-call", + "line": 38, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "Open transcript", + "surface": "apple", + "id": "native.apple.022656e82944b598" + }, + { + "kind": "ui-call", + "line": 46, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "Edit…", + "surface": "apple", + "id": "native.apple.8c48d1d69ed81f7e" + }, + { + "kind": "ui-call", + "line": 52, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "Delete…", + "surface": "apple", + "id": "native.apple.5684d3181ce22018" + }, + { + "kind": "ui-call", + "line": 71, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "Enabled", + "surface": "apple", + "id": "native.apple.7ded1df100694ac3" + }, + { + "kind": "ui-call", + "line": 76, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "Run", + "surface": "apple", + "id": "native.apple.9130853a425f720d" + }, + { + "kind": "ui-call", + "line": 79, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "Transcript", + "surface": "apple", + "id": "native.apple.f34de6490071b8e5" + }, + { + "kind": "ui-call", + "line": 84, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "Edit", + "surface": "apple", + "id": "native.apple.4bffda5fcd7a290d" + }, + { + "kind": "ui-call", + "line": 96, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "Schedule", + "surface": "apple", + "id": "native.apple.04c710cf31471ebd" + }, + { + "kind": "ui-call", + "line": 98, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "after success", + "surface": "apple", + "id": "native.apple.89cad86b7d3a1ed8" + }, + { + "kind": "ui-call", + "line": 98, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "Auto-delete", + "surface": "apple", + "id": "native.apple.a0c6656d9919acd7" + }, + { + "kind": "ui-call", + "line": 101, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "Description", + "surface": "apple", + "id": "native.apple.0b2a438527591597" + }, + { + "kind": "ui-call", + "line": 104, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "Agent", + "surface": "apple", + "id": "native.apple.e8ddda1d43812c1d" + }, + { + "kind": "ui-call", + "line": 106, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "Session", + "surface": "apple", + "id": "native.apple.a9ed6399f6985efb" + }, + { + "kind": "ui-call", + "line": 107, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "Wake", + "surface": "apple", + "id": "native.apple.4dde8cb5e531bb81" + }, + { + "kind": "ui-call", + "line": 108, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "Next run", + "surface": "apple", + "id": "native.apple.014262bb8068c0a1" + }, + { + "kind": "ui-call", + "line": 115, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "Last run", + "surface": "apple", + "id": "native.apple.8ec0a4219e5e76ce" + }, + { + "kind": "ui-call", + "line": 117, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "\\(date.formatted(date: .abbreviated, time: .standard)) · \\(relativeAge(from: date))", + "surface": "apple", + "id": "native.apple.7718fbae883d5389" + }, + { + "kind": "ui-call", + "line": 123, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "Last status", + "surface": "apple", + "id": "native.apple.87247dcb9a2857ed" + }, + { + "kind": "ui-call", + "line": 142, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "Run history", + "surface": "apple", + "id": "native.apple.bac4e36acb29ec13" + }, + { + "kind": "ui-call", + "line": 148, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "Refresh", + "surface": "apple", + "id": "native.apple.f614be2891ac9a70" + }, + { + "kind": "ui-call", + "line": 159, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "No run log entries yet.", + "surface": "apple", + "id": "native.apple.1d31c7c3dc040e9e" + }, + { + "kind": "ui-call", + "line": 185, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "\\(ms)ms", + "surface": "apple", + "id": "native.apple.6ec996f25c175bbc" + }, + { + "kind": "ui-call", + "line": 211, + "path": "apps/macos/Sources/OpenClaw/CronSettings+Rows.swift", + "source": "Payload", + "surface": "apple", + "id": "native.apple.07c987127cde7927" + }, + { + "kind": "ui-call", + "line": 68, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Kill \\(listener.command) (\\(listener.pid))?", + "surface": "apple", + "id": "native.apple.4c70e8fb1c642be1" + }, + { + "kind": "ui-call", + "line": 69, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "This process looks expected for the current mode. Kill anyway?", + "surface": "apple", + "id": "native.apple.a8e0eda487b545fb" + }, + { + "kind": "ui-call", + "line": 70, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Kill", + "surface": "apple", + "id": "native.apple.eb373e180ce4eb57" + }, + { + "kind": "ui-call", + "line": 80, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Attach only (skip launchd install)", + "surface": "apple", + "id": "native.apple.85986510973b69a5" + }, + { + "kind": "ui-call", + "line": 89, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "When enabled, OpenClaw won't install or manage \\(gatewayLaunchdLabel).", + "surface": "apple", + "id": "native.apple.1982d180ff261216" + }, + { + "kind": "ui-call", + "line": 106, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Debug", + "surface": "apple", + "id": "native.apple.15e528c55a96394f" + }, + { + "kind": "ui-call", + "line": 108, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Tools for diagnosing local issues (Gateway, ports, logs, Canvas).", + "surface": "apple", + "id": "native.apple.334ebd156b980d53" + }, + { + "kind": "ui-call", + "line": 149, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Health", + "surface": "apple", + "id": "native.apple.c89b5449fe399633" + }, + { + "kind": "ui-call", + "line": 157, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "CLI", + "surface": "apple", + "id": "native.apple.11bf6f17b2c17d01" + }, + { + "kind": "ui-call", + "line": 167, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "PID", + "surface": "apple", + "id": "native.apple.50a498bb5d21fce5" + }, + { + "kind": "ui-call", + "line": 168, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "\\(ProcessInfo.processInfo.processIdentifier)", + "surface": "apple", + "id": "native.apple.a1b7117088ad315f" + }, + { + "kind": "ui-call", + "line": 171, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Binary path", + "surface": "apple", + "id": "native.apple.6ae192c6a5942a53" + }, + { + "kind": "ui-call", + "line": 188, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Status", + "surface": "apple", + "id": "native.apple.117165abb75eb58b" + }, + { + "kind": "ui-call", + "line": 198, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Key", + "surface": "apple", + "id": "native.apple.5432c42ec6020ef0" + }, + { + "kind": "ui-call", + "line": 207, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Copy", + "surface": "apple", + "id": "native.apple.6675a44c2884bf14" + }, + { + "kind": "ui-call", + "line": 212, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Copy sample URL", + "surface": "apple", + "id": "native.apple.d88bd4f76c454179" + }, + { + "kind": "ui-call", + "line": 223, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Deep links (openclaw://…) are always enabled; the key controls unattended runs.", + "surface": "apple", + "id": "native.apple.f8e4e2b25dbdbd44" + }, + { + "kind": "ui-call", + "line": 228, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Stdout / stderr", + "surface": "apple", + "id": "native.apple.aeba5ae43a292c55" + }, + { + "kind": "ui-call", + "line": 245, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Restart Gateway", + "surface": "apple", + "id": "native.apple.93d4f16afee5753a" + }, + { + "kind": "ui-call", + "line": 247, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Clear log", + "surface": "apple", + "id": "native.apple.f552a3cb08f36b37" + }, + { + "kind": "ui-call", + "line": 260, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Pino log", + "surface": "apple", + "id": "native.apple.ec9654e76a7c3f6f" + }, + { + "kind": "ui-call", + "line": 263, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Open", + "surface": "apple", + "id": "native.apple.ac5b3114ca2f9f9c" + }, + { + "kind": "ui-call", + "line": 276, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "App logging", + "surface": "apple", + "id": "native.apple.73375aaca7469480" + }, + { + "kind": "ui-call", + "line": 278, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Verbosity", + "surface": "apple", + "id": "native.apple.45ca609245731590" + }, + { + "kind": "ui-modifier", + "line": 285, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Controls the macOS app log verbosity.", + "surface": "apple", + "id": "native.apple.9f5ec48a00c7bba6" + }, + { + "kind": "ui-call", + "line": 287, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Write rolling diagnostics log (JSONL)", + "surface": "apple", + "id": "native.apple.badf38ad13935f27" + }, + { + "kind": "ui-modifier", + "line": 289, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Writes a rotating, local-only log under ~/Library/Logs/OpenClaw/.", + "surface": "apple", + "id": "native.apple.2721533f0703b277" + }, + { + "kind": "ui-call", + "line": 294, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Open folder", + "surface": "apple", + "id": "native.apple.5b35a89bea603457" + }, + { + "kind": "ui-call", + "line": 298, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Clear", + "surface": "apple", + "id": "native.apple.1b7e3b03bf00eed6" + }, + { + "kind": "ui-call", + "line": 319, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Port diagnostics", + "surface": "apple", + "id": "native.apple.0e058d4bd1e38466" + }, + { + "kind": "ui-call", + "line": 323, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Check gateway ports", + "surface": "apple", + "id": "native.apple.49c55c23f1b30c49" + }, + { + "kind": "ui-call", + "line": 328, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Reset SSH tunnel", + "surface": "apple", + "id": "native.apple.f41a77907a653c26" + }, + { + "kind": "ui-call", + "line": 349, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Check which process owns \\(GatewayEnvironment.gatewayPort()) and suggest fixes.", + "surface": "apple", + "id": "native.apple.7d3bb8db32ac31b8" + }, + { + "kind": "ui-call", + "line": 355, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Port \\(report.port)", + "surface": "apple", + "id": "native.apple.b5c922d5a81b9a82" + }, + { + "kind": "ui-call", + "line": 364, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "\\(listener.command) (\\(listener.pid))", + "surface": "apple", + "id": "native.apple.0dbd56f870683617" + }, + { + "kind": "ui-call", + "line": 369, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Kill", + "surface": "apple", + "id": "native.apple.eb373e180ce4eb57.369" + }, + { + "kind": "ui-call", + "line": 398, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "OpenClaw project root", + "surface": "apple", + "id": "native.apple.5e9e8bf8e35c48ef" + }, + { + "kind": "ui-call", + "line": 401, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Path to openclaw repo", + "surface": "apple", + "id": "native.apple.8b01a6daf7a7b94e" + }, + { + "kind": "ui-call", + "line": 405, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Save", + "surface": "apple", + "id": "native.apple.fa6607e762a540c0" + }, + { + "kind": "ui-call", + "line": 407, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Reset", + "surface": "apple", + "id": "native.apple.b9e064d213c6b451" + }, + { + "kind": "ui-call", + "line": 415, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Used for pnpm/node fallback and PATH population when launching the gateway.", + "surface": "apple", + "id": "native.apple.2c9911885c449665" + }, + { + "kind": "ui-call", + "line": 424, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Session store", + "surface": "apple", + "id": "native.apple.b1d1a6049ad5abb8" + }, + { + "kind": "ui-call", + "line": 427, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Path", + "surface": "apple", + "id": "native.apple.745141d448a91b84" + }, + { + "kind": "ui-call", + "line": 431, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Save", + "surface": "apple", + "id": "native.apple.fa6607e762a540c0.431" + }, + { + "kind": "ui-call", + "line": 439, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Used by the CLI session loader; stored in ~/.openclaw/openclaw.json.", + "surface": "apple", + "id": "native.apple.a8154f17cda71415" + }, + { + "kind": "ui-call", + "line": 454, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Send Test Notification", + "surface": "apple", + "id": "native.apple.3e472353e27107af" + }, + { + "kind": "ui-call", + "line": 459, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Open Agent Events", + "surface": "apple", + "id": "native.apple.9fdf25afbeb46192" + }, + { + "kind": "ui-call", + "line": 500, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Note: macOS may require restarting OpenClaw after enabling Accessibility or Screen Recording.", + "surface": "apple", + "id": "native.apple.3307505d507faf31" + }, + { + "kind": "ui-call", + "line": 509, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Restart OpenClaw", + "surface": "apple", + "id": "native.apple.e52d463773aef1e1" + }, + { + "kind": "ui-call", + "line": 516, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Restart app", + "surface": "apple", + "id": "native.apple.e299e77f3ad75a75" + }, + { + "kind": "ui-call", + "line": 517, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Restart onboarding", + "surface": "apple", + "id": "native.apple.902488e753844202" + }, + { + "kind": "ui-call", + "line": 518, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Reveal app in Finder", + "surface": "apple", + "id": "native.apple.98b02027c57eda8b" + }, + { + "kind": "ui-call", + "line": 529, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Enable/disable Canvas in General settings.", + "surface": "apple", + "id": "native.apple.04eaabb42454944b" + }, + { + "kind": "ui-call", + "line": 534, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Session", + "surface": "apple", + "id": "native.apple.b2bebe675c30727a" + }, + { + "kind": "ui-call", + "line": 538, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Show panel", + "surface": "apple", + "id": "native.apple.99861950da1e69ba" + }, + { + "kind": "ui-call", + "line": 542, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Hide panel", + "surface": "apple", + "id": "native.apple.33eb8f297296ec9c" + }, + { + "kind": "ui-call", + "line": 548, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Write sample page", + "surface": "apple", + "id": "native.apple.547643e9375bf49c" + }, + { + "kind": "ui-call", + "line": 556, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Eval JS", + "surface": "apple", + "id": "native.apple.fea4c2dbfc571ab6" + }, + { + "kind": "ui-call", + "line": 560, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Eval", + "surface": "apple", + "id": "native.apple.940c0085416c853c" + }, + { + "kind": "ui-call", + "line": 564, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Snapshot", + "surface": "apple", + "id": "native.apple.a4e7bea688bf372c" + }, + { + "kind": "ui-call", + "line": 578, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "eval → \\(canvasEvalResult)", + "surface": "apple", + "id": "native.apple.ad26da5399b2e89a" + }, + { + "kind": "ui-call", + "line": 587, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "snapshot → \\(canvasSnapshotPath)", + "surface": "apple", + "id": "native.apple.2fa497069eba7671" + }, + { + "kind": "ui-call", + "line": 593, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Reveal", + "surface": "apple", + "id": "native.apple.1c45fe5f7f9e7f51" + }, + { + "kind": "ui-call", + "line": 606, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Tip: the session directory is returned by “Show panel”.", + "surface": "apple", + "id": "native.apple.44008e46c4816fcb" + }, + { + "kind": "ui-call", + "line": 618, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Icon override", + "surface": "apple", + "id": "native.apple.cf253de8a6d44fdc" + }, + { + "kind": "ui-call", + "line": 628, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Chat", + "surface": "apple", + "id": "native.apple.5a465c703604e054" + }, + { + "kind": "ui-call", + "line": 629, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Native SwiftUI", + "surface": "apple", + "id": "native.apple.39cdf5187168b1a0" + }, + { + "kind": "ui-call", + "line": 1012, + "path": "apps/macos/Sources/OpenClaw/DebugSettings.swift", + "source": "Test", + "surface": "apple", + "id": "native.apple.0397fa643df26663" + }, + { + "kind": "ui-call", + "line": 267, + "path": "apps/macos/Sources/OpenClaw/DevicePairingApprovalPrompter.swift", + "source": "Access requested", + "surface": "apple", + "id": "native.apple.ac15433d7c66db1a" + }, + { + "kind": "ui-call", + "line": 354, + "path": "apps/macos/Sources/OpenClaw/DevicePairingApprovalPrompter.swift", + "source": "\\(label):", + "surface": "apple", + "id": "native.apple.4c4cb5589f9c56b2" + }, + { + "kind": "ui-call", + "line": 372, + "path": "apps/macos/Sources/OpenClaw/DevicePairingApprovalPrompter.swift", + "source": "• \\(text)", + "surface": "apple", + "id": "native.apple.1b1ad7c8d65069fe" + }, + { + "kind": "ui-call", + "line": 24, + "path": "apps/macos/Sources/OpenClaw/GatewayDiscoveryMenu.swift", + "source": "No gateways found yet.", + "surface": "apple", + "id": "native.apple.6867a83813911d74" + }, + { + "kind": "ui-modifier", + "line": 115, + "path": "apps/macos/Sources/OpenClaw/GatewayDiscoveryMenu.swift", + "source": "Discover OpenClaw gateways on your LAN", + "surface": "apple", + "id": "native.apple.66ad783199ef9729" + }, + { + "kind": "ui-call", + "line": 119, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "App session", + "surface": "apple", + "id": "native.apple.050e1ad36603504f" + }, + { + "kind": "ui-call", + "line": 121, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "Quit only when you want to stop the menu bar app completely.", + "surface": "apple", + "id": "native.apple.67650c4eb108086a" + }, + { + "kind": "ui-call", + "line": 126, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "Quit", + "surface": "apple", + "id": "native.apple.c8c53e5345460948" + }, + { + "kind": "ui-call", + "line": 156, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "OpenClaw active", + "surface": "apple", + "id": "native.apple.7fe6df69d8050832" + }, + { + "kind": "ui-call", + "line": 244, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "\\(Int(ping)) ms", + "surface": "apple", + "id": "native.apple.8d5db3462778dd6f" + }, + { + "kind": "ui-call", + "line": 307, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "Gateway location", + "surface": "apple", + "id": "native.apple.f9b44adeadaace42" + }, + { + "kind": "ui-call", + "line": 308, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "Not configured", + "surface": "apple", + "id": "native.apple.4bc5101dc5f03eca" + }, + { + "kind": "ui-call", + "line": 309, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "Local (this Mac)", + "surface": "apple", + "id": "native.apple.26d3cba2f28bc7ee" + }, + { + "kind": "ui-call", + "line": 310, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "Remote (another host)", + "surface": "apple", + "id": "native.apple.e862ce24b922a761" + }, + { + "kind": "ui-call", + "line": 376, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "Nearby gateways", + "surface": "apple", + "id": "native.apple.df878fd5df528bd9" + }, + { + "kind": "ui-call", + "line": 448, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "Identity file", + "surface": "apple", + "id": "native.apple.2e33f01115fd73dd" + }, + { + "kind": "ui-call", + "line": 452, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "Project root", + "surface": "apple", + "id": "native.apple.8bd4eccc71e5668f" + }, + { + "kind": "ui-call", + "line": 456, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "CLI path", + "surface": "apple", + "id": "native.apple.938ee646aac4ce66" + }, + { + "kind": "ui-call", + "line": 463, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "SSH command details", + "surface": "apple", + "id": "native.apple.f588f7dad51aae2e" + }, + { + "kind": "ui-call", + "line": 486, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "Transport", + "surface": "apple", + "id": "native.apple.bd1edf4b42756cd2" + }, + { + "kind": "ui-call", + "line": 487, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "SSH tunnel", + "surface": "apple", + "id": "native.apple.5120bd84625c827a" + }, + { + "kind": "ui-call", + "line": 488, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "Direct (ws/wss)", + "surface": "apple", + "id": "native.apple.c58937e43a5b4591" + }, + { + "kind": "ui-call", + "line": 502, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "user@host[:22]", + "surface": "apple", + "id": "native.apple.8cd42b6d6dae8314" + }, + { + "kind": "ui-call", + "line": 521, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "wss://gateway.example.ts.net", + "surface": "apple", + "id": "native.apple.a8d207eec188d22d" + }, + { + "kind": "ui-call", + "line": 527, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "Use wss:// for public hosts. ws:// is allowed for localhost, LAN, .local, and Tailnet hosts.", + "surface": "apple", + "id": "native.apple.e568ae49d007dc03" + }, + { + "kind": "ui-call", + "line": 542, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "remote gateway auth token (gateway.remote.token)", + "surface": "apple", + "id": "native.apple.053a95077f2d4045" + }, + { + "kind": "ui-call", + "line": 547, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "The current gateway.remote.token value is not plain text.", + "surface": "apple", + "id": "native.apple.56f332e3a255da84" + }, + { + "kind": "ui-call", + "line": 566, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "Test remote", + "surface": "apple", + "id": "native.apple.d0b21bc12ab63cad" + }, + { + "kind": "ui-call", + "line": 589, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "Testing…", + "surface": "apple", + "id": "native.apple.5e3968d04d63200c" + }, + { + "kind": "ui-call", + "line": 627, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "Installed: \\(gatewayVersion) · Required: \\(required)", + "surface": "apple", + "id": "native.apple.9ff8bc297026d7cb" + }, + { + "kind": "ui-call", + "line": 631, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "Gateway \\(gatewayVersion) detected", + "surface": "apple", + "id": "native.apple.6a9514b81425ea1d" + }, + { + "kind": "ui-call", + "line": 637, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "Node \\(node)", + "surface": "apple", + "id": "native.apple.4593770894a0b662" + }, + { + "kind": "ui-call", + "line": 649, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "Last failure: \\(failure)", + "surface": "apple", + "id": "native.apple.50ab01059b763acd" + }, + { + "kind": "ui-call", + "line": 654, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "Recheck", + "surface": "apple", + "id": "native.apple.c55734a4ee849a4c" + }, + { + "kind": "ui-call", + "line": 657, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "Gateway auto-starts in local mode via launchd (\\(gatewayLaunchdLabel)).", + "surface": "apple", + "id": "native.apple.8fcaa10d4558a03d" + }, + { + "kind": "ui-call", + "line": 712, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "Retry now", + "surface": "apple", + "id": "native.apple.7a4bfb585fed2598" + }, + { + "kind": "ui-call", + "line": 717, + "path": "apps/macos/Sources/OpenClaw/GeneralSettings.swift", + "source": "Open logs", + "surface": "apple", + "id": "native.apple.6393591d17837eb0" + }, + { + "kind": "ui-call", + "line": 17, + "path": "apps/macos/Sources/OpenClaw/InstancesSettings.swift", + "source": "Error: \\(err)", + "surface": "apple", + "id": "native.apple.729f356a45366d00" + }, + { + "kind": "ui-call", + "line": 24, + "path": "apps/macos/Sources/OpenClaw/InstancesSettings.swift", + "source": "No instances reported yet.", + "surface": "apple", + "id": "native.apple.766ddaa931c544df" + }, + { + "kind": "ui-call", + "line": 54, + "path": "apps/macos/Sources/OpenClaw/InstancesSettings.swift", + "source": "Connected Instances", + "surface": "apple", + "id": "native.apple.c04316f1c7e825c9" + }, + { + "kind": "ui-call", + "line": 56, + "path": "apps/macos/Sources/OpenClaw/InstancesSettings.swift", + "source": "Latest presence beacons from OpenClaw nodes. Updated periodically.", + "surface": "apple", + "id": "native.apple.876c066efa88aee3" + }, + { + "kind": "ui-call", + "line": 137, + "path": "apps/macos/Sources/OpenClaw/InstancesSettings.swift", + "source": "Copy Debug Summary", + "surface": "apple", + "id": "native.apple.d49a2a06f0b30967" + }, + { + "kind": "ui-modifier", + "line": 171, + "path": "apps/macos/Sources/OpenClaw/InstancesSettings.swift", + "source": "Presence updated \\(inst.ageDescription).", + "surface": "apple", + "id": "native.apple.231b8e86486fd129" + }, + { + "kind": "ui-call", + "line": 172, + "path": "apps/macos/Sources/OpenClaw/InstancesSettings.swift", + "source": "\\(status.label) presence", + "surface": "apple", + "id": "native.apple.7017ebe54c8e3da3" + }, + { + "kind": "ui-modifier", + "line": 172, + "path": "apps/macos/Sources/OpenClaw/InstancesSettings.swift", + "source": "\\(status.label) presence", + "surface": "apple", + "id": "native.apple.12d83e5f01c98fc0" + }, + { + "kind": "ui-call", + "line": 441, + "path": "apps/macos/Sources/OpenClaw/InstancesSettings.swift", + "source": "self", + "surface": "apple", + "id": "native.apple.09b1c4fc1c0452c9" + }, + { + "kind": "ui-call", + "line": 442, + "path": "apps/macos/Sources/OpenClaw/InstancesSettings.swift", + "source": "instances-refresh", + "surface": "apple", + "id": "native.apple.57a76b71e090bba2" + }, + { + "kind": "ui-call", + "line": 443, + "path": "apps/macos/Sources/OpenClaw/InstancesSettings.swift", + "source": "seq gap", + "surface": "apple", + "id": "native.apple.ceff14dbbf21653a" + }, + { + "kind": "ui-call", + "line": 444, + "path": "apps/macos/Sources/OpenClaw/InstancesSettings.swift", + "source": "custom", + "surface": "apple", + "id": "native.apple.8e8df37f8203ce9c" + }, + { + "kind": "ui-call", + "line": 103, + "path": "apps/macos/Sources/OpenClaw/MenuBar.swift", + "source": "Settings...", + "surface": "apple", + "id": "native.apple.185a1b27c9859cc0" + }, + { + "kind": "ui-call", + "line": 72, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Send Heartbeats", + "surface": "apple", + "id": "native.apple.4362f273c3b52793" + }, + { + "kind": "ui-call", + "line": 84, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Browser Control", + "surface": "apple", + "id": "native.apple.2ad22b3ef37afe46" + }, + { + "kind": "ui-call", + "line": 87, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Allow Camera", + "surface": "apple", + "id": "native.apple.eb06374f7d430549" + }, + { + "kind": "ui-call", + "line": 94, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Exec Approvals", + "surface": "apple", + "id": "native.apple.a7298f07a717f564" + }, + { + "kind": "ui-call", + "line": 97, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Allow Canvas", + "surface": "apple", + "id": "native.apple.fa9ee90b4a391979" + }, + { + "kind": "ui-call", + "line": 105, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Voice Wake", + "surface": "apple", + "id": "native.apple.4cbde322496c96d7" + }, + { + "kind": "ui-call", + "line": 116, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Open Dashboard", + "surface": "apple", + "id": "native.apple.95959926dc363f2e" + }, + { + "kind": "ui-call", + "line": 121, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Open Chat", + "surface": "apple", + "id": "native.apple.723e0d2283af1458" + }, + { + "kind": "ui-call", + "line": 140, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Settings…", + "surface": "apple", + "id": "native.apple.e96f53fc66acbb95" + }, + { + "kind": "ui-call", + "line": 143, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "About OpenClaw", + "surface": "apple", + "id": "native.apple.fbab65790d6eca89" + }, + { + "kind": "ui-call", + "line": 145, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Update ready, restart now?", + "surface": "apple", + "id": "native.apple.14c8f4b1a57569f3" + }, + { + "kind": "ui-call", + "line": 147, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Quit", + "surface": "apple", + "id": "native.apple.f20b8f0da1520f4b" + }, + { + "kind": "ui-call", + "line": 220, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Debug", + "surface": "apple", + "id": "native.apple.1df24a30d7963640" + }, + { + "kind": "ui-call", + "line": 224, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Open Config Folder", + "surface": "apple", + "id": "native.apple.24b2a8b6549236c4" + }, + { + "kind": "ui-call", + "line": 229, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Run Health Check Now", + "surface": "apple", + "id": "native.apple.bb94be83a9083e18" + }, + { + "kind": "ui-call", + "line": 234, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Send Test Heartbeat", + "surface": "apple", + "id": "native.apple.406f1a5866bf0bd0" + }, + { + "kind": "ui-call", + "line": 243, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Reset Remote Tunnel", + "surface": "apple", + "id": "native.apple.872bee8f298e59ef" + }, + { + "kind": "ui-call", + "line": 256, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Verbosity", + "surface": "apple", + "id": "native.apple.ecde91c32bcc0da5" + }, + { + "kind": "ui-call", + "line": 269, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "App Logging", + "surface": "apple", + "id": "native.apple.f9dfd69b4f83afa1" + }, + { + "kind": "ui-call", + "line": 274, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Open Session Store", + "surface": "apple", + "id": "native.apple.0627f0cfb40a10c8" + }, + { + "kind": "ui-call", + "line": 280, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Open Agent Events…", + "surface": "apple", + "id": "native.apple.645ddb678c201ac8" + }, + { + "kind": "ui-call", + "line": 285, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Open Log", + "surface": "apple", + "id": "native.apple.c8cb59f8c2e28468" + }, + { + "kind": "ui-call", + "line": 290, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Send Debug Voice Text", + "surface": "apple", + "id": "native.apple.aba07ae46ea14d1e" + }, + { + "kind": "ui-call", + "line": 295, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Send Test Notification", + "surface": "apple", + "id": "native.apple.2d85e94cb51ec35c" + }, + { + "kind": "ui-call", + "line": 302, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Restart Gateway", + "surface": "apple", + "id": "native.apple.0f9e668602baf391" + }, + { + "kind": "ui-call", + "line": 308, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Restart Onboarding", + "surface": "apple", + "id": "native.apple.ed98a6c0df41cdde" + }, + { + "kind": "ui-call", + "line": 313, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Restart App", + "surface": "apple", + "id": "native.apple.2ebeecbd1b177e61" + }, + { + "kind": "ui-call", + "line": 439, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Refreshing microphones…", + "surface": "apple", + "id": "native.apple.469c920582755860" + }, + { + "kind": "ui-call", + "line": 446, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Microphone", + "surface": "apple", + "id": "native.apple.c0c6172187ca749a" + }, + { + "kind": "ui-call", + "line": 467, + "path": "apps/macos/Sources/OpenClaw/MenuContentView.swift", + "source": "Disconnected (using System default)", + "surface": "apple", + "id": "native.apple.3e248379359c7593" + }, + { + "kind": "ui-call", + "line": 284, + "path": "apps/macos/Sources/OpenClaw/NodesMenu.swift", + "source": "\\(self.label):", + "surface": "apple", + "id": "native.apple.4443962db00a2def" + }, + { + "kind": "ui-call", + "line": 91, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Layout.swift", + "source": "Back", + "surface": "apple", + "id": "native.apple.c8a2f8dc424fe447" + }, + { + "kind": "ui-call", + "line": 99, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Layout.swift", + "source": "Back", + "surface": "apple", + "id": "native.apple.c8a2f8dc424fe447.99" + }, + { + "kind": "ui-call", + "line": 34, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Welcome to OpenClaw", + "surface": "apple", + "id": "native.apple.ea8beaeecef15e54" + }, + { + "kind": "ui-call", + "line": 36, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "OpenClaw is a powerful personal AI assistant that can connect to WhatsApp or Telegram.", + "surface": "apple", + "id": "native.apple.69f81c58c14a5df4" + }, + { + "kind": "ui-call", + "line": 53, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Security notice", + "surface": "apple", + "id": "native.apple.e75671ec2ae4bf9d" + }, + { + "kind": "ui-call", + "line": 55, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "The connected AI agent (e.g. Claude) can trigger powerful actions on your Mac,", + "surface": "apple", + "id": "native.apple.aafa7a69b5fa8efd" + }, + { + "kind": "ui-call", + "line": 75, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Choose your Gateway", + "surface": "apple", + "id": "native.apple.9fb535bde270a73e" + }, + { + "kind": "ui-call", + "line": 77, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "OpenClaw uses a single Gateway that stays running. Pick this Mac,", + "surface": "apple", + "id": "native.apple.3fbc915c4ee973d2" + }, + { + "kind": "ui-call", + "line": 158, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Refresh", + "surface": "apple", + "id": "native.apple.e38ea89bafb6b75d" + }, + { + "kind": "ui-modifier", + "line": 162, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Retry remote discovery (Tailscale DNS-SD + Serve probe).", + "surface": "apple", + "id": "native.apple.ea066347e0bcb237" + }, + { + "kind": "ui-call", + "line": 168, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Searching for nearby gateways…", + "surface": "apple", + "id": "native.apple.d8b14de6ceb397fb" + }, + { + "kind": "ui-call", + "line": 174, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Nearby gateways", + "surface": "apple", + "id": "native.apple.98436332aec81f9b" + }, + { + "kind": "ui-call", + "line": 214, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Transport", + "surface": "apple", + "id": "native.apple.7881cec64b177026" + }, + { + "kind": "ui-call", + "line": 217, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Transport", + "surface": "apple", + "id": "native.apple.7881cec64b177026.217" + }, + { + "kind": "ui-call", + "line": 218, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "SSH tunnel", + "surface": "apple", + "id": "native.apple.8413b40cd91c9a19" + }, + { + "kind": "ui-call", + "line": 219, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Direct (ws/wss)", + "surface": "apple", + "id": "native.apple.915c50965d971bb4" + }, + { + "kind": "ui-call", + "line": 226, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Gateway URL", + "surface": "apple", + "id": "native.apple.9c90f7bc1b9564b1" + }, + { + "kind": "ui-call", + "line": 229, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "wss://gateway.example.ts.net", + "surface": "apple", + "id": "native.apple.ba96e44d673d04d3" + }, + { + "kind": "ui-call", + "line": 236, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "SSH target", + "surface": "apple", + "id": "native.apple.a193ae2a5ff9decd" + }, + { + "kind": "ui-call", + "line": 239, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "user@host[:port]", + "surface": "apple", + "id": "native.apple.53f26821d1f0a864" + }, + { + "kind": "ui-call", + "line": 256, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Identity file", + "surface": "apple", + "id": "native.apple.ecf41ca39add6b84" + }, + { + "kind": "ui-call", + "line": 259, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "/Users/you/.ssh/id_ed25519", + "surface": "apple", + "id": "native.apple.ef96d6a2a48a4c54" + }, + { + "kind": "ui-call", + "line": 264, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Project root", + "surface": "apple", + "id": "native.apple.0ef039b18340a2e1" + }, + { + "kind": "ui-call", + "line": 267, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "/home/you/Projects/openclaw", + "surface": "apple", + "id": "native.apple.dca75ab0dd73f0a4" + }, + { + "kind": "ui-call", + "line": 272, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "CLI path", + "surface": "apple", + "id": "native.apple.6998a7754dea6eb1" + }, + { + "kind": "ui-call", + "line": 275, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "/Applications/OpenClaw.app/.../openclaw", + "surface": "apple", + "id": "native.apple.5a3f4f943c8ee86a" + }, + { + "kind": "ui-call", + "line": 344, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Remote connection", + "surface": "apple", + "id": "native.apple.2e11404d7539301e" + }, + { + "kind": "ui-call", + "line": 346, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Checks the real remote websocket and auth handshake.", + "surface": "apple", + "id": "native.apple.bee162bb681696a3" + }, + { + "kind": "ui-call", + "line": 359, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Check connection", + "surface": "apple", + "id": "native.apple.6e5d3a3c3022e8c8" + }, + { + "kind": "ui-call", + "line": 389, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Gateway token", + "surface": "apple", + "id": "native.apple.1907a86a6cc2165b" + }, + { + "kind": "ui-call", + "line": 392, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "remote gateway auth token (gateway.remote.token)", + "surface": "apple", + "id": "native.apple.014d9fcbd97f6c48" + }, + { + "kind": "ui-call", + "line": 396, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Used when the remote gateway requires token auth.", + "surface": "apple", + "id": "native.apple.cc14b91d20cc33ba" + }, + { + "kind": "ui-call", + "line": 400, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "The current gateway.remote.token value is not plain text.", + "surface": "apple", + "id": "native.apple.ef3fe72bfb04b53d" + }, + { + "kind": "ui-call", + "line": 417, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Checking remote gateway…", + "surface": "apple", + "id": "native.apple.ef011af3c0e22127" + }, + { + "kind": "ui-call", + "line": 594, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Grant permissions", + "surface": "apple", + "id": "native.apple.4bad86566d023a64" + }, + { + "kind": "ui-call", + "line": 596, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "These macOS permissions let OpenClaw automate apps and capture context on this Mac.", + "surface": "apple", + "id": "native.apple.0cbf774c4168d80b" + }, + { + "kind": "ui-call", + "line": 618, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Refresh", + "surface": "apple", + "id": "native.apple.e38ea89bafb6b75d.618" + }, + { + "kind": "ui-modifier", + "line": 622, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Refresh status", + "surface": "apple", + "id": "native.apple.c9c5c08199b23e4a" + }, + { + "kind": "ui-call", + "line": 635, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Install the CLI", + "surface": "apple", + "id": "native.apple.507f071d2b76be9e" + }, + { + "kind": "ui-call", + "line": 637, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Required for local mode: installs `openclaw` so launchd can run the gateway.", + "surface": "apple", + "id": "native.apple.5ced9b0fad1555e0" + }, + { + "kind": "ui-call", + "line": 669, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Installed at \\(loc)", + "surface": "apple", + "id": "native.apple.e6a9668517354178" + }, + { + "kind": "ui-call", + "line": 694, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Agent workspace", + "surface": "apple", + "id": "native.apple.155fc8bc8b9f8c3f" + }, + { + "kind": "ui-call", + "line": 696, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "OpenClaw runs the agent from a dedicated workspace so it can load `AGENTS.md`", + "surface": "apple", + "id": "native.apple.a412041a3f89d02e" + }, + { + "kind": "ui-call", + "line": 707, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Remote gateway detected", + "surface": "apple", + "id": "native.apple.5a32f8309c1faaee" + }, + { + "kind": "ui-call", + "line": 709, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Create the workspace on the remote host (SSH in first).", + "surface": "apple", + "id": "native.apple.84a6db00959e6b15" + }, + { + "kind": "ui-call", + "line": 721, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Workspace folder", + "surface": "apple", + "id": "native.apple.e707cf5fab72f1f3" + }, + { + "kind": "ui-call", + "line": 735, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Create workspace", + "surface": "apple", + "id": "native.apple.88d2a41a6763127a" + }, + { + "kind": "ui-call", + "line": 741, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Open folder", + "surface": "apple", + "id": "native.apple.3c9e2e010d0a878f" + }, + { + "kind": "ui-call", + "line": 748, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Save in config", + "surface": "apple", + "id": "native.apple.0172a11ddaa58a58" + }, + { + "kind": "ui-call", + "line": 769, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Tip: edit AGENTS.md in this folder to shape the assistant’s behavior.", + "surface": "apple", + "id": "native.apple.8f89a1b01da68ed9" + }, + { + "kind": "ui-call", + "line": 784, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Meet your agent", + "surface": "apple", + "id": "native.apple.803fffba25310a90" + }, + { + "kind": "ui-call", + "line": 786, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "This is a dedicated onboarding chat. Your agent will introduce itself,", + "surface": "apple", + "id": "native.apple.bb8591786b3ee9ec" + }, + { + "kind": "ui-call", + "line": 807, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "All set", + "surface": "apple", + "id": "native.apple.5e1277166b2ad41a" + }, + { + "kind": "ui-call", + "line": 859, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Launch at login", + "surface": "apple", + "id": "native.apple.e54dfc2913c56f6f" + }, + { + "kind": "ui-call", + "line": 880, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Skills included", + "surface": "apple", + "id": "native.apple.040f2884f928f376" + }, + { + "kind": "ui-call", + "line": 887, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Refresh", + "surface": "apple", + "id": "native.apple.e38ea89bafb6b75d.887" + }, + { + "kind": "ui-call", + "line": 896, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Couldn’t load skills from the Gateway.", + "surface": "apple", + "id": "native.apple.38fc7e2b80c4e0fa" + }, + { + "kind": "ui-call", + "line": 899, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Make sure the Gateway is running and connected,", + "surface": "apple", + "id": "native.apple.e4b94f54e8bdbde4" + }, + { + "kind": "ui-call", + "line": 905, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "Details: \\(error)", + "surface": "apple", + "id": "native.apple.b6de2a51e5fb8397" + }, + { + "kind": "ui-call", + "line": 911, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift", + "source": "No skills reported yet.", + "surface": "apple", + "id": "native.apple.b82621bc28d4c6e3" + }, + { + "kind": "ui-call", + "line": 65, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Testing.swift", + "source": "Test", + "surface": "apple", + "id": "native.apple.4836cf45f5747d88" + }, + { + "kind": "ui-call", + "line": 66, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Testing.swift", + "source": "Card", + "surface": "apple", + "id": "native.apple.f6838ff32eba156f" + }, + { + "kind": "ui-call", + "line": 9, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Wizard.swift", + "source": "Setup Wizard", + "surface": "apple", + "id": "native.apple.a611a5555d06da70" + }, + { + "kind": "ui-call", + "line": 11, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Wizard.swift", + "source": "Follow the guided setup from the Gateway. This keeps onboarding in sync with the CLI.", + "surface": "apple", + "id": "native.apple.195e6fbfdd7f4647" + }, + { + "kind": "ui-call", + "line": 57, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Wizard.swift", + "source": "Wizard error", + "surface": "apple", + "id": "native.apple.593a59a20ed22b12" + }, + { + "kind": "ui-call", + "line": 63, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Wizard.swift", + "source": "Retry", + "surface": "apple", + "id": "native.apple.5ad203347ffbe0e8" + }, + { + "kind": "ui-call", + "line": 75, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Wizard.swift", + "source": "Starting wizard…", + "surface": "apple", + "id": "native.apple.48cc28b5b02b9140" + }, + { + "kind": "ui-call", + "line": 87, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Wizard.swift", + "source": "Wizard complete. Continue to the next step.", + "surface": "apple", + "id": "native.apple.3559abd61b4a02b3" + }, + { + "kind": "ui-call", + "line": 90, + "path": "apps/macos/Sources/OpenClaw/OnboardingView+Wizard.swift", + "source": "Waiting for wizard…", + "surface": "apple", + "id": "native.apple.4b16d82449e62fef" + }, + { + "kind": "ui-call", + "line": 281, + "path": "apps/macos/Sources/OpenClaw/OnboardingWizard.swift", + "source": "Unsupported step type", + "surface": "apple", + "id": "native.apple.3000242e4a2f9031" + }, + { + "kind": "ui-call", + "line": 34, + "path": "apps/macos/Sources/OpenClaw/PermissionsSettings.swift", + "source": "Restart onboarding", + "surface": "apple", + "id": "native.apple.f68a3f48ba505366" + }, + { + "kind": "ui-call", + "line": 62, + "path": "apps/macos/Sources/OpenClaw/PermissionsSettings.swift", + "source": "OpenClaw only asks for macOS capabilities when a feature needs them.", + "surface": "apple", + "id": "native.apple.4344ff6c0e9d7187" + }, + { + "kind": "ui-call", + "line": 93, + "path": "apps/macos/Sources/OpenClaw/PermissionsSettings.swift", + "source": "Location Access", + "surface": "apple", + "id": "native.apple.3aa3ccdcc285b461" + }, + { + "kind": "ui-call", + "line": 94, + "path": "apps/macos/Sources/OpenClaw/PermissionsSettings.swift", + "source": "Off", + "surface": "apple", + "id": "native.apple.cf3a5c243de1ef5a" + }, + { + "kind": "ui-call", + "line": 95, + "path": "apps/macos/Sources/OpenClaw/PermissionsSettings.swift", + "source": "While Using", + "surface": "apple", + "id": "native.apple.d5020a219ed1ac41" + }, + { + "kind": "ui-call", + "line": 96, + "path": "apps/macos/Sources/OpenClaw/PermissionsSettings.swift", + "source": "Always", + "surface": "apple", + "id": "native.apple.e03eebb9f39381b4" + }, + { + "kind": "ui-call", + "line": 108, + "path": "apps/macos/Sources/OpenClaw/PermissionsSettings.swift", + "source": "Precise Location", + "surface": "apple", + "id": "native.apple.f2cad6d6841591ae" + }, + { + "kind": "ui-call", + "line": 181, + "path": "apps/macos/Sources/OpenClaw/PermissionsSettings.swift", + "source": "Refresh", + "surface": "apple", + "id": "native.apple.cc8c64fe846d3cca" + }, + { + "kind": "ui-modifier", + "line": 186, + "path": "apps/macos/Sources/OpenClaw/PermissionsSettings.swift", + "source": "Refresh status", + "surface": "apple", + "id": "native.apple.fc97ae51b4016550" + }, + { + "kind": "ui-call", + "line": 257, + "path": "apps/macos/Sources/OpenClaw/PermissionsSettings.swift", + "source": "Granted", + "surface": "apple", + "id": "native.apple.9587edffda4b78f0" + }, + { + "kind": "ui-modifier", + "line": 261, + "path": "apps/macos/Sources/OpenClaw/PermissionsSettings.swift", + "source": "Granted", + "surface": "apple", + "id": "native.apple.934919cc9bd66077" + }, + { + "kind": "ui-call", + "line": 267, + "path": "apps/macos/Sources/OpenClaw/PermissionsSettings.swift", + "source": "Grant", + "surface": "apple", + "id": "native.apple.7b62187659c9925f" + }, + { + "kind": "ui-call", + "line": 274, + "path": "apps/macos/Sources/OpenClaw/PermissionsSettings.swift", + "source": "Granted", + "surface": "apple", + "id": "native.apple.9587edffda4b78f0.274" + }, + { + "kind": "ui-call", + "line": 278, + "path": "apps/macos/Sources/OpenClaw/PermissionsSettings.swift", + "source": "Checking…", + "surface": "apple", + "id": "native.apple.27ff5be3db0efbd0" + }, + { + "kind": "ui-call", + "line": 282, + "path": "apps/macos/Sources/OpenClaw/PermissionsSettings.swift", + "source": "Request access", + "surface": "apple", + "id": "native.apple.c8a3879230179938" + }, + { + "kind": "ui-call", + "line": 33, + "path": "apps/macos/Sources/OpenClaw/SessionMenuLabelView.swift", + "source": "\\(self.row.tokens.contextSummaryShort) · \\(self.row.ageText)", + "surface": "apple", + "id": "native.apple.c83f50f9eafa4e4a" + }, + { + "kind": "ui-call", + "line": 39, + "path": "apps/macos/Sources/OpenClaw/SessionsSettings.swift", + "source": "Sessions", + "surface": "apple", + "id": "native.apple.1ff8aec0044934c3" + }, + { + "kind": "ui-call", + "line": 41, + "path": "apps/macos/Sources/OpenClaw/SessionsSettings.swift", + "source": "Peek at the stored conversation buckets the CLI reuses for context and rate limits.", + "surface": "apple", + "id": "native.apple.74f66e96c112c3fa" + }, + { + "kind": "ui-call", + "line": 56, + "path": "apps/macos/Sources/OpenClaw/SessionsSettings.swift", + "source": "No sessions yet. They appear after the first inbound message or heartbeat.", + "surface": "apple", + "id": "native.apple.bab897f3252b134c" + }, + { + "kind": "ui-call", + "line": 115, + "path": "apps/macos/Sources/OpenClaw/SessionsSettings.swift", + "source": "Context", + "surface": "apple", + "id": "native.apple.cebd5d2895976bee" + }, + { + "kind": "ui-call", + "line": 12, + "path": "apps/macos/Sources/OpenClaw/SettingsRefreshButton.swift", + "source": "Refresh", + "surface": "apple", + "id": "native.apple.3c7279b3288a44da" + }, + { + "kind": "ui-modifier", + "line": 15, + "path": "apps/macos/Sources/OpenClaw/SettingsRefreshButton.swift", + "source": "Refresh", + "surface": "apple", + "id": "native.apple.956d275624b712a2" + }, + { + "kind": "ui-call", + "line": 132, + "path": "apps/macos/Sources/OpenClaw/SettingsRootView.swift", + "source": "Managed by Nix", + "surface": "apple", + "id": "native.apple.05918601c3b3b241" + }, + { + "kind": "ui-call", + "line": 138, + "path": "apps/macos/Sources/OpenClaw/SettingsRootView.swift", + "source": "Config: \\(configPath)", + "surface": "apple", + "id": "native.apple.deb89a876875cb48" + }, + { + "kind": "ui-call", + "line": 139, + "path": "apps/macos/Sources/OpenClaw/SettingsRootView.swift", + "source": "State: \\(stateDir)", + "surface": "apple", + "id": "native.apple.e20f8f3494d04da8" + }, + { + "kind": "ui-call", + "line": 69, + "path": "apps/macos/Sources/OpenClaw/SkillsSettings.swift", + "source": "Enable ready skills, or install missing tools on the Gateway or this Mac.", + "surface": "apple", + "id": "native.apple.6a9cf4d0e171abb0" + }, + { + "kind": "ui-call", + "line": 78, + "path": "apps/macos/Sources/OpenClaw/SkillsSettings.swift", + "source": "\\(total)", + "surface": "apple", + "id": "native.apple.79d4590049b0a8f2" + }, + { + "kind": "ui-call", + "line": 106, + "path": "apps/macos/Sources/OpenClaw/SkillsSettings.swift", + "source": "Refresh", + "surface": "apple", + "id": "native.apple.be08a918dffd2913" + }, + { + "kind": "ui-modifier", + "line": 109, + "path": "apps/macos/Sources/OpenClaw/SkillsSettings.swift", + "source": "Refresh", + "surface": "apple", + "id": "native.apple.2bcaea6a4d5124f3" + }, + { + "kind": "ui-call", + "line": 182, + "path": "apps/macos/Sources/OpenClaw/SkillsSettings.swift", + "source": "Filter", + "surface": "apple", + "id": "native.apple.2beddcc70ea0d96a" + }, + { + "kind": "ui-call", + "line": 276, + "path": "apps/macos/Sources/OpenClaw/SkillsSettings.swift", + "source": "Website", + "surface": "apple", + "id": "native.apple.d863af685def7a16" + }, + { + "kind": "ui-call", + "line": 310, + "path": "apps/macos/Sources/OpenClaw/SkillsSettings.swift", + "source": "Details", + "surface": "apple", + "id": "native.apple.f8994366d9516e2a" + }, + { + "kind": "ui-call", + "line": 418, + "path": "apps/macos/Sources/OpenClaw/SkillsSettings.swift", + "source": "Missing binaries: \\(self.missingBins.joined(separator:", + "surface": "apple", + "id": "native.apple.d22cf1207d0cbdd0" + }, + { + "kind": "ui-call", + "line": 423, + "path": "apps/macos/Sources/OpenClaw/SkillsSettings.swift", + "source": "Missing env: \\(self.missingEnv.joined(separator:", + "surface": "apple", + "id": "native.apple.5f64ec059341abb5" + }, + { + "kind": "ui-call", + "line": 428, + "path": "apps/macos/Sources/OpenClaw/SkillsSettings.swift", + "source": "Requires config: \\(self.missingConfig.joined(separator:", + "surface": "apple", + "id": "native.apple.f21f469c47906fa5" + }, + { + "kind": "ui-call", + "line": 471, + "path": "apps/macos/Sources/OpenClaw/SkillsSettings.swift", + "source": "Install on Gateway", + "surface": "apple", + "id": "native.apple.494d34a89a55787c" + }, + { + "kind": "ui-call", + "line": 476, + "path": "apps/macos/Sources/OpenClaw/SkillsSettings.swift", + "source": "Install on This Mac", + "surface": "apple", + "id": "native.apple.4dc7c4fc6c93d9d7" + }, + { + "kind": "ui-call", + "line": 484, + "path": "apps/macos/Sources/OpenClaw/SkillsSettings.swift", + "source": "Install on This Mac", + "surface": "apple", + "id": "native.apple.4dc7c4fc6c93d9d7.484" + }, + { + "kind": "ui-call", + "line": 602, + "path": "apps/macos/Sources/OpenClaw/SkillsSettings.swift", + "source": "Saved to openclaw.json under skills.entries.\\(self.editor.skillKey)", + "surface": "apple", + "id": "native.apple.d769a8ac65441d48" + }, + { + "kind": "ui-call", + "line": 606, + "path": "apps/macos/Sources/OpenClaw/SkillsSettings.swift", + "source": "Cancel", + "surface": "apple", + "id": "native.apple.af47aadb262d225d" + }, + { + "kind": "ui-call", + "line": 608, + "path": "apps/macos/Sources/OpenClaw/SkillsSettings.swift", + "source": "Save", + "surface": "apple", + "id": "native.apple.25beb661ec932b3b" + }, + { + "kind": "ui-call", + "line": 77, + "path": "apps/macos/Sources/OpenClaw/SystemRunSettingsView.swift", + "source": "Scope", + "surface": "apple", + "id": "native.apple.4c894d7779471cda" + }, + { + "kind": "ui-call", + "line": 80, + "path": "apps/macos/Sources/OpenClaw/SystemRunSettingsView.swift", + "source": "Scope", + "surface": "apple", + "id": "native.apple.4c894d7779471cda.80" + }, + { + "kind": "ui-call", + "line": 109, + "path": "apps/macos/Sources/OpenClaw/SystemRunSettingsView.swift", + "source": "Command access", + "surface": "apple", + "id": "native.apple.0102b90dbf8fa98c" + }, + { + "kind": "ui-call", + "line": 126, + "path": "apps/macos/Sources/OpenClaw/SystemRunSettingsView.swift", + "source": "Prompt behavior", + "surface": "apple", + "id": "native.apple.b49a61b9232edbf3" + }, + { + "kind": "ui-call", + "line": 144, + "path": "apps/macos/Sources/OpenClaw/SystemRunSettingsView.swift", + "source": "Fallback", + "surface": "apple", + "id": "native.apple.f7b187b19d3ce46c" + }, + { + "kind": "ui-call", + "line": 178, + "path": "apps/macos/Sources/OpenClaw/SystemRunSettingsView.swift", + "source": "Trusted skill binaries", + "surface": "apple", + "id": "native.apple.84e1f8a42caf871f" + }, + { + "kind": "ui-call", + "line": 206, + "path": "apps/macos/Sources/OpenClaw/SystemRunSettingsView.swift", + "source": "rg or /opt/homebrew/bin/*", + "surface": "apple", + "id": "native.apple.76e2478e29a4800e" + }, + { + "kind": "ui-call", + "line": 210, + "path": "apps/macos/Sources/OpenClaw/SystemRunSettingsView.swift", + "source": "Add", + "surface": "apple", + "id": "native.apple.6efbcd37d228a21f" + }, + { + "kind": "ui-call", + "line": 246, + "path": "apps/macos/Sources/OpenClaw/SystemRunSettingsView.swift", + "source": "Allowlists are per-agent", + "surface": "apple", + "id": "native.apple.656126ceb089f03f" + }, + { + "kind": "ui-call", + "line": 248, + "path": "apps/macos/Sources/OpenClaw/SystemRunSettingsView.swift", + "source": "Select an agent scope above to add trusted commands.", + "surface": "apple", + "id": "native.apple.2bbd6fb7cf2fa71b" + }, + { + "kind": "ui-call", + "line": 265, + "path": "apps/macos/Sources/OpenClaw/SystemRunSettingsView.swift", + "source": "No trusted commands yet", + "surface": "apple", + "id": "native.apple.a09fabb585670140" + }, + { + "kind": "ui-call", + "line": 267, + "path": "apps/macos/Sources/OpenClaw/SystemRunSettingsView.swift", + "source": "Commands that miss the allowlist follow the prompt and fallback policy above.", + "surface": "apple", + "id": "native.apple.7071e7264f7b3bd1" + }, + { + "kind": "ui-call", + "line": 328, + "path": "apps/macos/Sources/OpenClaw/SystemRunSettingsView.swift", + "source": "Pattern", + "surface": "apple", + "id": "native.apple.e98b56cbbe3a9cae" + }, + { + "kind": "ui-call", + "line": 341, + "path": "apps/macos/Sources/OpenClaw/SystemRunSettingsView.swift", + "source": "Last used \\(Self.relativeFormatter.localizedString(for: date, relativeTo: Date()))", + "surface": "apple", + "id": "native.apple.61954e6ed7118ddb" + }, + { + "kind": "ui-call", + "line": 347, + "path": "apps/macos/Sources/OpenClaw/SystemRunSettingsView.swift", + "source": "Last command: \\(lastUsedCommand)", + "surface": "apple", + "id": "native.apple.29f7d0d5d832b577" + }, + { + "kind": "ui-call", + "line": 353, + "path": "apps/macos/Sources/OpenClaw/SystemRunSettingsView.swift", + "source": "Resolved path: \\(lastResolvedPath)", + "surface": "apple", + "id": "native.apple.0ac3d7bc8c69e6a2" + }, + { + "kind": "ui-call", + "line": 104, + "path": "apps/macos/Sources/OpenClaw/TailscaleIntegrationSection.swift", + "source": "Tailscale (dashboard access)", + "surface": "apple", + "id": "native.apple.96bb9bb74999aec3" + }, + { + "kind": "ui-call", + "line": 125, + "path": "apps/macos/Sources/OpenClaw/TailscaleIntegrationSection.swift", + "source": "Local mode required. Update settings on the gateway host.", + "surface": "apple", + "id": "native.apple.5a382f1b024300a1" + }, + { + "kind": "ui-call", + "line": 170, + "path": "apps/macos/Sources/OpenClaw/TailscaleIntegrationSection.swift", + "source": "Refresh", + "surface": "apple", + "id": "native.apple.26e0afc4575fbc70" + }, + { + "kind": "ui-call", + "line": 192, + "path": "apps/macos/Sources/OpenClaw/TailscaleIntegrationSection.swift", + "source": "App Store", + "surface": "apple", + "id": "native.apple.62dcf1a51e15d52a" + }, + { + "kind": "ui-call", + "line": 194, + "path": "apps/macos/Sources/OpenClaw/TailscaleIntegrationSection.swift", + "source": "Direct Download", + "surface": "apple", + "id": "native.apple.fe89247395645ff4" + }, + { + "kind": "ui-call", + "line": 196, + "path": "apps/macos/Sources/OpenClaw/TailscaleIntegrationSection.swift", + "source": "Setup Guide", + "surface": "apple", + "id": "native.apple.fc4886c7228bc04f" + }, + { + "kind": "ui-call", + "line": 204, + "path": "apps/macos/Sources/OpenClaw/TailscaleIntegrationSection.swift", + "source": "Exposure mode", + "surface": "apple", + "id": "native.apple.726161ce2c382170" + }, + { + "kind": "ui-call", + "line": 206, + "path": "apps/macos/Sources/OpenClaw/TailscaleIntegrationSection.swift", + "source": "Exposure", + "surface": "apple", + "id": "native.apple.fadc7522289dd272" + }, + { + "kind": "ui-call", + "line": 223, + "path": "apps/macos/Sources/OpenClaw/TailscaleIntegrationSection.swift", + "source": "Dashboard URL:", + "surface": "apple", + "id": "native.apple.657ee675aa5c5d91" + }, + { + "kind": "ui-call", + "line": 235, + "path": "apps/macos/Sources/OpenClaw/TailscaleIntegrationSection.swift", + "source": "Start Tailscale to get your tailnet hostname.", + "surface": "apple", + "id": "native.apple.b40617c102f55113" + }, + { + "kind": "ui-call", + "line": 241, + "path": "apps/macos/Sources/OpenClaw/TailscaleIntegrationSection.swift", + "source": "Start Tailscale", + "surface": "apple", + "id": "native.apple.719949d1f6bdc263" + }, + { + "kind": "ui-call", + "line": 249, + "path": "apps/macos/Sources/OpenClaw/TailscaleIntegrationSection.swift", + "source": "Require credentials", + "surface": "apple", + "id": "native.apple.8fedb0008df7e179" + }, + { + "kind": "ui-call", + "line": 254, + "path": "apps/macos/Sources/OpenClaw/TailscaleIntegrationSection.swift", + "source": "Serve uses Tailscale identity headers; no password required.", + "surface": "apple", + "id": "native.apple.de7ce19eaf2a6fee" + }, + { + "kind": "ui-call", + "line": 263, + "path": "apps/macos/Sources/OpenClaw/TailscaleIntegrationSection.swift", + "source": "Funnel requires authentication.", + "surface": "apple", + "id": "native.apple.f00022aabd2fa142" + }, + { + "kind": "ui-call", + "line": 272, + "path": "apps/macos/Sources/OpenClaw/TailscaleIntegrationSection.swift", + "source": "Password", + "surface": "apple", + "id": "native.apple.9b1c9f02ab3eefa5" + }, + { + "kind": "ui-call", + "line": 276, + "path": "apps/macos/Sources/OpenClaw/TailscaleIntegrationSection.swift", + "source": "Stored in ~/.openclaw/openclaw.json. Prefer OPENCLAW_GATEWAY_PASSWORD for production.", + "surface": "apple", + "id": "native.apple.800bb607f45c05e4" + }, + { + "kind": "ui-call", + "line": 279, + "path": "apps/macos/Sources/OpenClaw/TailscaleIntegrationSection.swift", + "source": "Update password", + "surface": "apple", + "id": "native.apple.3942d43ca047de29" + }, + { + "kind": "ui-call", + "line": 19, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeOverlayController+Testing.swift", + "source": "Edited text", + "surface": "apple", + "id": "native.apple.02d8bfada90dea87" + }, + { + "kind": "ui-call", + "line": 129, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeSettings.swift", + "source": "Voice Wake requires macOS 26 or newer", + "surface": "apple", + "id": "native.apple.0577606e681fcf35" + }, + { + "kind": "ui-call", + "line": 131, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeSettings.swift", + "source": "The Voice Wake and push-to-talk controls are hidden on older macOS versions.", + "surface": "apple", + "id": "native.apple.013200734769f33a" + }, + { + "kind": "ui-call", + "line": 312, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeSettings.swift", + "source": "Add word", + "surface": "apple", + "id": "native.apple.2b5d3b9bb23d4790" + }, + { + "kind": "ui-call", + "line": 317, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeSettings.swift", + "source": "Reset", + "surface": "apple", + "id": "native.apple.64a5ed78f1daef4f" + }, + { + "kind": "ui-call", + "line": 339, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeSettings.swift", + "source": "No wake phrases configured", + "surface": "apple", + "id": "native.apple.261b2e1a284a4a23" + }, + { + "kind": "ui-call", + "line": 462, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeSettings.swift", + "source": "No Sound", + "surface": "apple", + "id": "native.apple.01dc8f0c65a84aa2" + }, + { + "kind": "ui-call", + "line": 470, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeSettings.swift", + "source": "Choose file…", + "surface": "apple", + "id": "native.apple.434b52758b95741a" + }, + { + "kind": "ui-call", + "line": 490, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeSettings.swift", + "source": "Play", + "surface": "apple", + "id": "native.apple.cfbff3ff838c859c" + }, + { + "kind": "ui-call", + "line": 539, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeSettings.swift", + "source": "Microphone", + "surface": "apple", + "id": "native.apple.8df75f6ebc900ba4" + }, + { + "kind": "ui-call", + "line": 540, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeSettings.swift", + "source": "System default", + "surface": "apple", + "id": "native.apple.061460a0ef5d6017" + }, + { + "kind": "ui-call", + "line": 553, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeSettings.swift", + "source": "Disconnected (using System default)", + "surface": "apple", + "id": "native.apple.5135e9bec6346f0d" + }, + { + "kind": "ui-call", + "line": 575, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeSettings.swift", + "source": "Language", + "surface": "apple", + "id": "native.apple.b5868ea893d6a974" + }, + { + "kind": "ui-call", + "line": 577, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeSettings.swift", + "source": "\\(self.friendlyName(for: current)) (System)", + "surface": "apple", + "id": "native.apple.d57fd5213daf2a6e" + }, + { + "kind": "ui-call", + "line": 597, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeSettings.swift", + "source": "Add", + "surface": "apple", + "id": "native.apple.41d06b5cfa8e5b2f" + }, + { + "kind": "ui-call", + "line": 636, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeSettings.swift", + "source": "Add", + "surface": "apple", + "id": "native.apple.41d06b5cfa8e5b2f.636" + }, + { + "kind": "ui-call", + "line": 816, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeSettings.swift", + "source": "Wake phrase", + "surface": "apple", + "id": "native.apple.a5088b30807780db" + }, + { + "kind": "ui-modifier", + "line": 833, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeSettings.swift", + "source": "Remove trigger word", + "surface": "apple", + "id": "native.apple.87c3465e9398bc2f" + }, + { + "kind": "ui-call", + "line": 861, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeSettings.swift", + "source": "Language \\(self.index + 2)", + "surface": "apple", + "id": "native.apple.2f9a1ff3cb47a58a" + }, + { + "kind": "ui-modifier", + "line": 878, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeSettings.swift", + "source": "Remove language", + "surface": "apple", + "id": "native.apple.cfab77826c9ac1d1" + }, + { + "kind": "ui-call", + "line": 893, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeSettings.swift", + "source": "OpenClaw reacts when any trigger appears in a transcription.", + "surface": "apple", + "id": "native.apple.0f67f77c4e9f0d22" + }, + { + "kind": "ui-call", + "line": 11, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeTestCard.swift", + "source": "Test Voice Wake", + "surface": "apple", + "id": "native.apple.2bcc6f4eca98f7f2" + }, + { + "kind": "ui-call", + "line": 30, + "path": "apps/macos/Sources/OpenClaw/VoiceWakeTestCard.swift", + "source": "Heard: \\(text)", + "surface": "apple", + "id": "native.apple.bcee3926c9672842" + }, + { + "kind": "ui-call", + "line": 146, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift", + "source": "Thinking", + "surface": "apple", + "id": "native.apple.510c6dfa05924ae2" + }, + { + "kind": "ui-call", + "line": 163, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift", + "source": "Model", + "surface": "apple", + "id": "native.apple.0fce9d743a640218" + }, + { + "kind": "ui-modifier", + "line": 178, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift", + "source": "Model", + "surface": "apple", + "id": "native.apple.e7904fff563624dc" + }, + { + "kind": "ui-call", + "line": 182, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift", + "source": "Session", + "surface": "apple", + "id": "native.apple.5dfc0700d8dff8de" + }, + { + "kind": "ui-modifier", + "line": 198, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift", + "source": "Session", + "surface": "apple", + "id": "native.apple.3e0afd523ce19d6a" + }, + { + "kind": "ui-modifier", + "line": 210, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift", + "source": "Add Image", + "surface": "apple", + "id": "native.apple.284b2b94c272591d" + }, + { + "kind": "ui-call", + "line": 211, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift", + "source": "Attachments", + "surface": "apple", + "id": "native.apple.9307b9f01debf9fa" + }, + { + "kind": "ui-modifier", + "line": 211, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift", + "source": "Attachments", + "surface": "apple", + "id": "native.apple.1963dfa3285cb715" + }, + { + "kind": "ui-modifier", + "line": 221, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift", + "source": "Add Image", + "surface": "apple", + "id": "native.apple.284b2b94c272591d.221" + }, + { + "kind": "ui-call", + "line": 222, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift", + "source": "Attachments", + "surface": "apple", + "id": "native.apple.9307b9f01debf9fa.222" + }, + { + "kind": "ui-modifier", + "line": 222, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift", + "source": "Attachments", + "surface": "apple", + "id": "native.apple.1963dfa3285cb715.222" + }, + { + "kind": "ui-modifier", + "line": 232, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift", + "source": "Add Image", + "surface": "apple", + "id": "native.apple.284b2b94c272591d.232" + }, + { + "kind": "ui-call", + "line": 233, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift", + "source": "Attachments", + "surface": "apple", + "id": "native.apple.9307b9f01debf9fa.233" + }, + { + "kind": "ui-modifier", + "line": 233, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift", + "source": "Attachments", + "surface": "apple", + "id": "native.apple.1963dfa3285cb715.233" + }, + { + "kind": "ui-modifier", + "line": 244, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift", + "source": "Add Image", + "surface": "apple", + "id": "native.apple.284b2b94c272591d.244" + }, + { + "kind": "ui-call", + "line": 245, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift", + "source": "Attachments", + "surface": "apple", + "id": "native.apple.9307b9f01debf9fa.245" + }, + { + "kind": "ui-modifier", + "line": 245, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift", + "source": "Attachments", + "surface": "apple", + "id": "native.apple.1963dfa3285cb715.245" + }, + { + "kind": "ui-call", + "line": 555, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift", + "source": "Stop response", + "surface": "apple", + "id": "native.apple.201ee19c4e593fc9" + }, + { + "kind": "ui-modifier", + "line": 555, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift", + "source": "Stop response", + "surface": "apple", + "id": "native.apple.afd8a2b9e3bf6d60" + }, + { + "kind": "ui-call", + "line": 579, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift", + "source": "Send message", + "surface": "apple", + "id": "native.apple.f61431d99930594b" + }, + { + "kind": "ui-modifier", + "line": 579, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift", + "source": "Send message", + "surface": "apple", + "id": "native.apple.d30969d467c66537" + }, + { + "kind": "ui-modifier", + "line": 593, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift", + "source": "Refresh", + "surface": "apple", + "id": "native.apple.f4473f79bb87b2fd" + }, + { + "kind": "ui-call", + "line": 583, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMessageViews.swift", + "source": "Writing", + "surface": "apple", + "id": "native.apple.e9914cfc93a514cb" + }, + { + "kind": "ui-call", + "line": 664, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMessageViews.swift", + "source": "Running tools…", + "surface": "apple", + "id": "native.apple.6b18ea1d85b5d3a2" + }, + { + "kind": "ui-call", + "line": 672, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMessageViews.swift", + "source": "\\(display.emoji) \\(display.label)", + "surface": "apple", + "id": "native.apple.7c99becc26501014" + }, + { + "kind": "ui-modifier", + "line": 30, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatSheets.swift", + "source": "Sessions", + "surface": "apple", + "id": "native.apple.43be8a2336e42faf" + }, + { + "kind": "ui-call", + "line": 675, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swift", + "source": "Loading chat", + "surface": "apple", + "id": "native.apple.28c2691c03030434" + }, + { + "kind": "ui-modifier", + "line": 766, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swift", + "source": "Refresh", + "surface": "apple", + "id": "native.apple.57f7e5c40ed0acc6" + }, + { + "kind": "ui-modifier", + "line": 773, + "path": "apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swift", + "source": "Dismiss", + "surface": "apple", + "id": "native.apple.5c481fea4eb3dc17" + } + ] +} diff --git a/package.json b/package.json index 02c82e276b8a..0f5bcf159995 100644 --- a/package.json +++ b/package.json @@ -1956,6 +1956,8 @@ "ui:i18n:check": "node --import tsx scripts/control-ui-i18n.ts check", "ui:i18n:report": "node --import tsx scripts/control-ui-i18n-report.ts", "ui:i18n:sync": "node --import tsx scripts/control-ui-i18n.ts sync --write", + "native:i18n:check": "node --import tsx scripts/native-app-i18n.ts check", + "native:i18n:sync": "node --import tsx scripts/native-app-i18n.ts sync --write", "ui:install": "node scripts/ui.js install", "verify": "node scripts/verify.mjs" }, diff --git a/scripts/native-app-i18n.ts b/scripts/native-app-i18n.ts new file mode 100644 index 000000000000..6a5310bd4f36 --- /dev/null +++ b/scripts/native-app-i18n.ts @@ -0,0 +1,206 @@ +import { createHash } from "node:crypto"; +import { mkdir, readdir, readFile, writeFile } from "node:fs/promises"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +export type NativeI18nSurface = "android" | "apple"; + +export type NativeI18nEntry = { + id: string; + kind: string; + line: number; + path: string; + source: string; + surface: NativeI18nSurface; +}; + +type Candidate = Omit; + +const HERE = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.resolve(HERE, ".."); +const OUTPUT_PATH = path.join(ROOT, "apps", ".i18n", "native-source.json"); +const SOURCE_ROOTS: Record = { + android: path.join(ROOT, "apps", "android", "app", "src", "main"), + apple: path.join(ROOT, "apps"), +}; + +const ANDROID_EXTENSIONS = new Set([".kt", ".kts"]); +const APPLE_EXTENSIONS = new Set([".swift"]); +const APPLE_UI_CALLS = + /(?:Text|Label|Button|TextField|SecureField|Picker|Section|LabeledContent|Toggle|Menu|ShareLink)\s*\(\s*"((?:\\.|[^"\\])*)"/gu; +const APPLE_MODIFIER_CALLS = + /\.(?:navigationTitle|accessibilityLabel|accessibilityHint|help)\s*\(\s*"((?:\\.|[^"\\])*)"/gu; +const ANDROID_CALLS = + /\b(?:Text|OutlinedTextField|BasicTextField|Button|IconButton|TopAppBar|Snackbar|AlertDialog)\s*\(\s*(?:text\s*=\s*)?"((?:\\.|[^"\\])*)"/gu; +const ANDROID_PROPERTIES = + /\b(?:contentDescription|label|placeholder|title|message|supportingText)\s*=\s*"((?:\\.|[^"\\])*)"/gu; +const GENERATED_PATH_RE = /(?:\/build\/|\/\.gradle\/|\/\.build\/|\/DerivedData\/)/u; +const EXCLUDED_PATH_RE = /(?:\/Tests?\/|\/UITests?\/|\/test\/|\/Preview(?:s)?\/)/u; + +function lineNumber(source: string, offset: number): number { + return source.slice(0, offset).split("\n").length; +} + +function decodeLiteral(raw: string): string { + try { + return JSON.parse(`"${raw}"`) as string; + } catch { + return raw; + } +} + +function normalizeSource(source: string): string { + return source.replace(/\s+/gu, " ").trim(); +} + +function addCandidate( + entries: Candidate[], + surface: NativeI18nSurface, + repoPath: string, + source: string, + kind: string, + line: number, +) { + const normalized = normalizeSource(decodeLiteral(source)); + if (!normalized || !/\p{L}/u.test(normalized)) { + return; + } + if (normalized.length > 500 || normalized.includes("${")) { + return; + } + entries.push({ kind, line, path: repoPath, source: normalized, surface }); +} + +function extractCandidates( + surface: NativeI18nSurface, + repoPath: string, + source: string, +): Candidate[] { + const entries: Candidate[] = []; + const patterns = + surface === "apple" + ? [ + [APPLE_UI_CALLS, "ui-call"], + [APPLE_MODIFIER_CALLS, "ui-modifier"], + ] + : [ + [ANDROID_CALLS, "ui-call"], + [ANDROID_PROPERTIES, "ui-property"], + ]; + for (const [pattern, kind] of patterns) { + for (const match of source.matchAll(pattern)) { + const value = match[1]; + const offset = match.index ?? 0; + if (value) { + addCandidate(entries, surface, repoPath, value, kind, lineNumber(source, offset)); + } + } + } + return entries; +} + +async function walkFiles( + root: string, + surface: NativeI18nSurface, + out: string[] = [], +): Promise { + const entries = await readdir(root, { withFileTypes: true }); + for (const entry of entries) { + const fullPath = path.join(root, entry.name); + if (entry.isDirectory()) { + if (GENERATED_PATH_RE.test(fullPath) || EXCLUDED_PATH_RE.test(fullPath)) { + continue; + } + await walkFiles(fullPath, surface, out); + continue; + } + const extension = path.extname(entry.name); + const allowed = surface === "apple" ? APPLE_EXTENSIONS : ANDROID_EXTENSIONS; + const isAndroidUiFile = + surface !== "android" || + fullPath.includes(`${path.sep}ui${path.sep}`) || + fullPath.endsWith(`${path.sep}MainActivity.kt`); + if (entry.isFile() && allowed.has(extension) && isAndroidUiFile) { + out.push(fullPath); + } + } + return out; +} + +function withIds(entries: Candidate[]): NativeI18nEntry[] { + const seen = new Set(); + return entries + .toSorted( + (left, right) => + left.surface.localeCompare(right.surface) || + left.path.localeCompare(right.path) || + left.line - right.line || + left.kind.localeCompare(right.kind) || + left.source.localeCompare(right.source), + ) + .map((entry) => { + const digest = createHash("sha256") + .update([entry.surface, entry.path, entry.kind, entry.source].join("\u0000")) + .digest("hex") + .slice(0, 16); + let id = `native.${entry.surface}.${digest}`; + if (seen.has(id)) { + id = `${id}.${entry.line}`; + } + seen.add(id); + return { ...entry, id }; + }); +} + +export async function collectNativeI18nEntries(): Promise { + const entries: Candidate[] = []; + for (const surface of ["android", "apple"] as const) { + const files = await walkFiles(SOURCE_ROOTS[surface], surface); + for (const filePath of files.toSorted()) { + const source = await readFile(filePath, "utf8"); + const repoPath = path.relative(ROOT, filePath).split(path.sep).join("/"); + entries.push(...extractCandidates(surface, repoPath, source)); + } + } + return withIds(entries); +} + +function render(entries: NativeI18nEntry[]): string { + return `${JSON.stringify({ version: 1, entries }, null, 2)}\n`; +} + +export async function syncNativeI18n(options: { checkOnly: boolean; write: boolean }) { + const expected = render(await collectNativeI18nEntries()); + let current = ""; + try { + current = await readFile(OUTPUT_PATH, "utf8"); + } catch { + // The first sync creates the inventory. + } + if (current !== expected && options.checkOnly) { + throw new Error( + "native app i18n inventory drift detected. Run `pnpm native:i18n:sync` and commit apps/.i18n/native-source.json.", + ); + } + if (current !== expected && options.write) { + await mkdir(path.dirname(OUTPUT_PATH), { recursive: true }); + await writeFile(OUTPUT_PATH, expected, "utf8"); + } + const count = JSON.parse(expected).entries.length as number; + process.stdout.write(`native-app-i18n: entries=${count} changed=${current !== expected}\n`); +} + +async function main() { + const [command] = process.argv.slice(2); + if (command !== "check" && command !== "sync") { + throw new Error("usage: node --import tsx scripts/native-app-i18n.ts check|sync [--write]"); + } + await syncNativeI18n({ + checkOnly: command === "check", + write: command === "sync" && process.argv.includes("--write"), + }); +} + +if (process.argv[1] && import.meta.url === `file://${path.resolve(process.argv[1])}`) { + await main(); +} diff --git a/scripts/test-projects.test-support.mjs b/scripts/test-projects.test-support.mjs index 2f00ca0382ab..561215d0945a 100644 --- a/scripts/test-projects.test-support.mjs +++ b/scripts/test-projects.test-support.mjs @@ -746,6 +746,7 @@ const TOOLING_SOURCE_TEST_TARGETS = new Map([ ["scripts/ci-changed-scope.mjs", ["src/scripts/ci-changed-scope.test.ts"]], ["scripts/ci-docker-pull-retry.sh", ["test/scripts/ci-docker-pull-retry.test.ts"]], ["scripts/control-ui-i18n.ts", ["test/scripts/control-ui-i18n.test.ts"]], + ["scripts/native-app-i18n.ts", ["test/scripts/native-app-i18n.test.ts"]], [ "scripts/copy-bundled-plugin-metadata.mjs", ["src/plugins/copy-bundled-plugin-metadata.test.ts", "src/infra/run-node.test.ts"], diff --git a/test/scripts/native-app-i18n.test.ts b/test/scripts/native-app-i18n.test.ts new file mode 100644 index 000000000000..d616f73264fa --- /dev/null +++ b/test/scripts/native-app-i18n.test.ts @@ -0,0 +1,14 @@ +import { describe, expect, it } from "vitest"; +import { collectNativeI18nEntries } from "../../scripts/native-app-i18n.ts"; + +describe("native app i18n inventory", () => { + it("collects stable Android and Apple UI entries", async () => { + const entries = await collectNativeI18nEntries(); + const surfaces = new Set(entries.map((entry) => entry.surface)); + + expect(entries.length).toBeGreaterThan(100); + expect(surfaces).toEqual(new Set(["android", "apple"])); + expect(entries.every((entry) => entry.id.startsWith(`native.${entry.surface}.`))).toBe(true); + expect(new Set(entries.map((entry) => entry.id)).size).toBe(entries.length); + }); +});