Chris Herold
6e33f3f0f3
iOS: implement dual-connection gateway architecture with deadlock fix
...
Aligns the iOS app with the Clawnet refactor by implementing proper role
separation for gateway connections. Uses separate operator and node sessions
to match the gateway's authorization requirements.
Changes:
- New GatewayOperatorSession: Wraps GatewayChannelActor for operator-role
RPC requests (chat.*, health, sessions.list) without invoke handling
- Dual-connection architecture: Operator session for requests, node session
for node.event calls (e.g., chat.subscribe)
- Separate websocket sessions: Each connection gets its own URLSession to
prevent response cross-talk
- Updated chat transport: IOSGatewayChatTransport uses operator session for
requests, node session for subscriptions
ClawdbotKit (shared):
- Deadlock fix in GatewayChannel.swift: Moved connection finalization
(listen(), connected=true, isConnecting=false, waiter resumption) to occur
before calling pushHandler. This fixes a latent bug where requests made
from onConnected callbacks would deadlock. Does not affect macOS (its
callback doesn't make requests).
- Package.swift: Fixed argument order for Swift 6.2 compatibility
iOS chat is now working. This is the base PR to unlock further work on
the iOS app.
2026-01-27 14:46:27 -08:00
Peter Steinberger
6d16a658e5
refactor: rename clawdbot to moltbot with legacy compat
2026-01-27 12:21:02 +00:00
Peter Steinberger
69f645c662
fix: auto-save voice wake words across apps
2026-01-23 23:59:08 +00:00
Peter Steinberger
795985d339
refactor: migrate iOS gateway to unified ws
2026-01-19 10:08:33 +00:00
Peter Steinberger
1ab1e312b2
feat: add TLS for node bridge
2026-01-16 05:28:40 +00:00
Peter Steinberger
e2733d21bf
refactor(ios): require bridge stable ID
2026-01-10 16:23:53 +00:00
Peter Steinberger
f428ed9038
fix(ios): enable strict concurrency checks
2026-01-10 16:04:32 +00:00
Peter Steinberger
246adaa119
chore: rename project to clawdbot
2026-01-04 14:38:51 +00:00
Peter Steinberger
e1dd764504
feat: add node location support
2026-01-04 00:54:44 +01:00
Peter Steinberger
7165c8a7e5
refactor: rename bundle identifiers to com.clawdis
2026-01-03 12:26:22 +01:00
Peter Steinberger
74db53d939
feat: add camera list and device selection
2026-01-02 18:23:26 +01:00
Peter Steinberger
c56292a6ec
feat: move talk mode to overlay button
2025-12-30 00:01:21 +01:00
Peter Steinberger
20d7882033
feat: add talk mode across nodes
2025-12-29 23:21:05 +01:00
Peter Steinberger
b0396e196f
fix: refresh bridge tokens and enrich node settings
2025-12-29 22:11:12 +01:00
Peter Steinberger
30d84643db
feat(ios): toggle debug canvas status
2025-12-21 14:21:06 +01:00
Peter Steinberger
1b38ee8b46
fix: harden device model decoding
2025-12-20 01:48:29 +01:00
Peter Steinberger
beefda7f60
refactor: replace canvas.show with canvas.present
2025-12-19 03:35:33 +01:00
Peter Steinberger
7f3be083c1
feat: add node screen recording across apps
2025-12-19 02:57:00 +01:00
Peter Steinberger
b8012a2281
fix(canvas): load A2UI resources across platforms
2025-12-19 01:53:55 +00:00
Peter Steinberger
982f85bf90
chore(naming): remove remaining iris references
2025-12-18 13:30:22 +01:00
Peter Steinberger
6f58a9d643
iOS: support canvas.a2ui push/reset
2025-12-18 10:44:32 +01:00
Peter Steinberger
efed2ae30f
Nodes: advertise canvas invoke commands
2025-12-18 02:06:35 +00:00
Peter Steinberger
7707e3d887
iOS: reorder settings sections
2025-12-18 01:00:36 +01:00
Peter Steinberger
7fe7c30b17
Mobile: prevent sleep setting
2025-12-17 21:01:47 +01:00
Peter Steinberger
2ce24fdbf8
Nodes: auto-discover clawdis.internal
2025-12-17 17:01:30 +01:00
Peter Steinberger
316a04f606
iOS: allow unicast DNS-SD discovery domain
2025-12-17 14:14:17 +01:00
Peter Steinberger
f3f8aa5397
fix(ios): use Observation environment in settings
2025-12-14 05:17:59 +00:00
Peter Steinberger
b48a556de5
refactor(observation): migrate SwiftUI state
2025-12-14 05:06:34 +00:00
Peter Steinberger
0cef22ef83
feat(ios): sync wake words via gateway
2025-12-14 05:06:27 +00:00
Peter Steinberger
9e80764c2b
feat(ios): add discovery debug logs
2025-12-14 04:36:00 +00:00
Peter Steinberger
dbd3865e3b
test(ios): cover settings host/port parsing
2025-12-14 02:47:07 +00:00
Peter Steinberger
e2451484d9
feat(ios): unify manual bridge config and auto-reconnect
2025-12-14 01:55:40 +00:00
Peter Steinberger
2454e67e09
feat(ios): reconnect to last discovered gateway
2025-12-14 00:48:16 +00:00
Peter Steinberger
f7076c38ea
feat(ios): reconnect to last bridge
2025-12-14 00:27:26 +00:00
Peter Steinberger
b508f642b2
iOS: configurable voice wake words
2025-12-13 23:49:22 +00:00
Peter Steinberger
b01cb41950
iOS: copy bridge URL/host/port
2025-12-13 23:40:12 +00:00
Peter Steinberger
7642cbb5b7
iOS: show local IP in settings
2025-12-13 23:37:02 +00:00
Peter Steinberger
7a6334d920
iOS: copy + clean bridge address
2025-12-13 23:32:57 +00:00
Peter Steinberger
6143338116
chore(swift): run swiftformat and clear swiftlint
2025-12-13 19:53:17 +00:00
Peter Steinberger
e2a93e17f9
refactor: apply stashed bridge + CLI changes
2025-12-13 19:30:46 +00:00
Peter Steinberger
7c3502f031
fix(ios): improve bridge discovery and pairing UX
2025-12-13 17:58:03 +00:00
Peter Steinberger
3863fe6412
fix(ios): stabilize voice wake + bridge UI
2025-12-13 12:29:39 +00:00
Peter Steinberger
1f37d94f9e
feat(discovery): bonjour beacons + bridge presence
2025-12-13 04:28:43 +00:00
Peter Steinberger
73ccbedcdb
ui(ios): clean up connected bridge list
2025-12-13 02:02:38 +00:00
Peter Steinberger
7ef83311bb
feat(bridge): show node ip in pairing
2025-12-13 01:57:40 +00:00
Peter Steinberger
416c376077
feat(ios): add close button and ready canvas
2025-12-13 01:49:04 +00:00
Peter Steinberger
1d41129b6c
feat(ios): add settings UI
2025-12-12 21:19:39 +00:00