Skip to content

Commit 70f2bef

Browse files
steipeteNianJiuZst
andauthored
fix(ios): persist queued Watch replies (#100372)
* fix(ios): persist queued watch replies Route Apple Watch quick replies through the durable, gateway-scoped Watch message outbox with restart-safe routing and deduplication. Co-authored-by: NianJiuZst <[email protected]> * fix(ios): preserve pre-upgrade Watch replies Bind shipped notification prompts without routing metadata to the current Gateway once, while keeping explicit and persisted Gateway owners fail-closed. --------- Co-authored-by: NianJiuZst <[email protected]>
1 parent f607ba0 commit 70f2bef

11 files changed

Lines changed: 713 additions & 276 deletions

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ Docs: https://docs.openclaw.ai
2727
- **Model aliases:** resolve provider-qualified aliases during session and chat-command model switches without collisions when providers share a display alias. (#100209) Thanks @sahilsatralkar.
2828
- **TUI new-session hooks:** create `/new` sessions through the shared Gateway lifecycle so command and session hooks receive the completed parent transcript in both Gateway and embedded modes, while preventing rollover during an active turn. (#100241, #49918) Thanks @BingqingLyu.
2929
- **TUI abort diagnostics:** show sanitized tool argument-validation summaries for aborted runs in both Gateway and local TUI modes without exposing raw model arguments. (#91002) Thanks @wsyjh8.
30+
- **iOS Watch replies:** persist queued quick replies in the gateway-scoped chat outbox and submit them through idempotent chat delivery, preventing losses, duplicates, and cross-gateway sends after reconnects. (#100031) Thanks @NianJiuZst.
3031

3132
## 2026.7.1
3233

apps/.i18n/native-source.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10995,63 +10995,63 @@
1099510995
},
1099610996
{
1099710997
"kind": "conditional-branch",
10998-
"line": 2319,
10998+
"line": 2343,
1099910999
"path": "apps/ios/Sources/Model/NodeAppModel.swift",
1100011000
"source": "Action required",
1100111001
"surface": "apple",
1100211002
"id": "native.apple.0d030e96f7738497"
1100311003
},
1100411004
{
1100511005
"kind": "conditional-branch",
11006-
"line": 2319,
11006+
"line": 2343,
1100711007
"path": "apps/ios/Sources/Model/NodeAppModel.swift",
1100811008
"source": "Approval needed",
1100911009
"surface": "apple",
1101011010
"id": "native.apple.ce6a022159f2fb41"
1101111011
},
1101211012
{
1101311013
"kind": "conditional-branch",
11014-
"line": 2652,
11014+
"line": 2676,
1101511015
"path": "apps/ios/Sources/Model/NodeAppModel.swift",
1101611016
"source": "Connecting…",
1101711017
"surface": "apple",
1101811018
"id": "native.apple.b0d9c1ba8ef7ec19"
1101911019
},
1102011020
{
1102111021
"kind": "conditional-branch",
11022-
"line": 2652,
11022+
"line": 2676,
1102311023
"path": "apps/ios/Sources/Model/NodeAppModel.swift",
1102411024
"source": "Reconnecting…",
1102511025
"surface": "apple",
1102611026
"id": "native.apple.bd98e19b49309284"
1102711027
},
1102811028
{
1102911029
"kind": "conditional-branch",
11030-
"line": 2656,
11030+
"line": 2680,
1103111031
"path": "apps/ios/Sources/Model/NodeAppModel.swift",
1103211032
"source": "Connecting...",
1103311033
"surface": "apple",
1103411034
"id": "native.apple.6504753f3621269e"
1103511035
},
1103611036
{
1103711037
"kind": "conditional-branch",
11038-
"line": 2656,
11038+
"line": 2680,
1103911039
"path": "apps/ios/Sources/Model/NodeAppModel.swift",
1104011040
"source": "Reconnecting...",
1104111041
"surface": "apple",
1104211042
"id": "native.apple.c7fbe2a713d78714"
1104311043
},
1104411044
{
1104511045
"kind": "conditional-branch",
11046-
"line": 2964,
11046+
"line": 2988,
1104711047
"path": "apps/ios/Sources/Model/NodeAppModel.swift",
1104811048
"source": "Connected",
1104911049
"surface": "apple",
1105011050
"id": "native.apple.c0a005f81d588867"
1105111051
},
1105211052
{
1105311053
"kind": "conditional-branch",
11054-
"line": 2964,
11054+
"line": 2988,
1105511055
"path": "apps/ios/Sources/Model/NodeAppModel.swift",
1105611056
"source": "Offline",
1105711057
"surface": "apple",

apps/ios/Sources/Model/NodeAppModel.swift

Lines changed: 249 additions & 100 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)