Skip to content

Commit 706fafc

Browse files
authored
fix(ui): preserve autonomous tool failures
1 parent 47a0e36 commit 706fafc

103 files changed

Lines changed: 4262 additions & 1029 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Docs: https://docs.openclaw.ai
66

77
### Changes
88

9+
- **iOS offline chat:** pre-paint recent sessions and canonical transcripts from a protected, bounded per-gateway cache, keep sending disabled offline, and purge cached conversation text when pairing is reset. (#100194)
910
- **Slack progress indicators:** use Slack's native assistant thread status and rotating loading messages by default while keeping acknowledgement reactions static; lifecycle reaction updates now require `messages.statusReactions.enabled: true`.
1011
- **Control UI Talk controls:** keep voice, model, and sensitivity in the composer while moving provider, transport, VAD timing, and reasoning defaults to Settings → Communications → Talk.
1112
- **Logbook work journal:** add a disabled-by-default bundled plugin that turns paired-node screen snapshots into a private timeline, daily standup, and timeline-grounded Q&A in a plugin-contributed Control UI tab. (#99930)
@@ -17,10 +18,14 @@ Docs: https://docs.openclaw.ai
1718

1819
### Fixes
1920

21+
- **Source build portability:** keep tsdown configuration self-contained so builds do not depend on resolving the tsdown package from unrun's temporary module directory.
22+
- **Diffs rendering:** render viewer and image output from one SSR preload, preserve language-pack highlighting through hydration, normalize language hints case-insensitively, skip identical before/after inputs with an explicit `changed` result, report truthful file-render and input errors, cache hash-pinned viewer runtimes, and prefer canonical file settings over stale aliases. (#100487)
2023
- **Remote browser reliability:** bound persistent Playwright tab enumeration by the existing remote CDP timeout budget and retire timed-out connection attempts so late completions cannot restore a stuck connection. (#80147, #58968) Thanks @HemantSudarshan and @KeaneYan.
24+
- **Managed browser cookie persistence:** initialize new isolated macOS headless profiles with a non-interactive encryption key while preserving existing profile keys, and close Chromium through CDP before bounded signal fallback so persistent logins survive graceful browser and Gateway restarts. (#96704, #98284) Thanks @TurboTheTurtle.
25+
- **MCP OAuth response bounds:** reject body-less foreign error bodies without calling their inherently unbounded `text()` fallback, while preserving HTTP status and headers for safe SDK diagnostics. (#98143) Thanks @Pick-cat.
2126
- **Control UI approval prompts:** keep stale resolve failures and busy-state cleanup from leaking across newer approvals or Gateway reconnects. (#98394) Thanks @haruaiclone-droid.
2227
- **Control UI autonomous tool failures:** keep an earlier failed turn's Tool error visible when a later autonomous turn recovers without an intervening user message. (#98888) Thanks @qingminglong.
23-
- **Agent empty replies:** surface a visible failure when a completed interactive turn has no deliverable reply, including queued follow-ups, while preserving explicit silence, pending continuations, and committed side effects. (#100456) Thanks @mushuiyu886.
28+
- **Agent empty replies:** surface a visible failure when a completed interactive turn has no deliverable reply, including queued follow-ups, while preserving explicit silence, pending continuations, and committed side effects, honoring queued send policies, and treating compaction notices as progress. (#100456) Thanks @mushuiyu886.
2429
- **Child process output safety:** prevent stdout/stderr pipe failures from crashing agent exec sessions, local TUI shell commands, and bounded process execution. (#100407, #100406, #100410) Thanks @cxbAsDev.
2530
- **Background refresh isolation:** keep remote skill-bin refreshes running when one node fails, and contain periodic subagent-sweeper failures without hiding errors from direct callers. (#100393, #100390) Thanks @cxbAsDev.
2631
- **Skill scan diagnostics:** report directory enumeration failures through the existing resource diagnostics instead of silently dropping affected skills. (#100380) Thanks @wendy-chsy.

apps/.i18n/native-source.json

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -5587,55 +5587,55 @@
55875587
},
55885588
{
55895589
"kind": "conditional-branch",
5590-
"line": 346,
5590+
"line": 369,
55915591
"path": "apps/android/app/src/main/java/ai/openclaw/app/voice/TalkModeManager.kt",
55925592
"source": "Listening",
55935593
"surface": "android",
55945594
"id": "native.android.b4f67e96603515bd"
55955595
},
55965596
{
55975597
"kind": "conditional-branch",
5598-
"line": 346,
5598+
"line": 369,
55995599
"path": "apps/android/app/src/main/java/ai/openclaw/app/voice/TalkModeManager.kt",
56005600
"source": "Ready",
56015601
"surface": "android",
56025602
"id": "native.android.b88e4278ead724ba"
56035603
},
56045604
{
56055605
"kind": "conditional-branch",
5606-
"line": 706,
5606+
"line": 726,
56075607
"path": "apps/android/app/src/main/java/ai/openclaw/app/voice/TalkModeManager.kt",
56085608
"source": "Off",
56095609
"surface": "android",
56105610
"id": "native.android.8d8230088f3baa2a"
56115611
},
56125612
{
56135613
"kind": "conditional-branch",
5614-
"line": 707,
5614+
"line": 727,
56155615
"path": "apps/android/app/src/main/java/ai/openclaw/app/voice/TalkModeManager.kt",
56165616
"source": "Talk failed: Realtime provider closed unexpectedly.",
56175617
"surface": "android",
56185618
"id": "native.android.d6b7f86564ac3147"
56195619
},
56205620
{
56215621
"kind": "conditional-branch",
5622-
"line": 708,
5622+
"line": 728,
56235623
"path": "apps/android/app/src/main/java/ai/openclaw/app/voice/TalkModeManager.kt",
56245624
"source": "Talk failed: Realtime provider closed: $reason",
56255625
"surface": "android",
56265626
"id": "native.android.eb6ac739ad55e63a"
56275627
},
56285628
{
56295629
"kind": "conditional-branch",
5630-
"line": 1617,
5630+
"line": 1675,
56315631
"path": "apps/android/app/src/main/java/ai/openclaw/app/voice/TalkModeManager.kt",
56325632
"source": "Aborted",
56335633
"surface": "android",
56345634
"id": "native.android.13531fe081a45711"
56355635
},
56365636
{
56375637
"kind": "conditional-branch",
5638-
"line": 1617,
5638+
"line": 1675,
56395639
"path": "apps/android/app/src/main/java/ai/openclaw/app/voice/TalkModeManager.kt",
56405640
"source": "Chat error",
56415641
"surface": "android",
@@ -7259,143 +7259,143 @@
72597259
},
72607260
{
72617261
"kind": "ui-localized-call",
7262-
"line": 97,
7262+
"line": 100,
72637263
"path": "apps/ios/Sources/Design/ChatProTab.swift",
72647264
"source": "Unable to Export Transcript",
72657265
"surface": "apple",
72667266
"id": "native.apple.e5524d5756a62744"
72677267
},
72687268
{
72697269
"kind": "ui-call",
7270-
"line": 101,
7270+
"line": 104,
72717271
"path": "apps/ios/Sources/Design/ChatProTab.swift",
72727272
"source": "OK",
72737273
"surface": "apple",
72747274
"id": "native.apple.942d6a10fd90d6e3"
72757275
},
72767276
{
72777277
"kind": "ui-call",
7278-
"line": 105,
7278+
"line": 108,
72797279
"path": "apps/ios/Sources/Design/ChatProTab.swift",
72807280
"source": "OpenClaw could not prepare the Markdown file.",
72817281
"surface": "apple",
72827282
"id": "native.apple.3548c8d1ab43e85e"
72837283
},
72847284
{
72857285
"kind": "ui-localized-call",
7286-
"line": 125,
7286+
"line": 128,
72877287
"path": "apps/ios/Sources/Design/ChatProTab.swift",
72887288
"source": "What would you like to work on?",
72897289
"surface": "apple",
72907290
"id": "native.apple.202b97e93b938049"
72917291
},
72927292
{
72937293
"kind": "ui-call",
7294-
"line": 136,
7294+
"line": 139,
72957295
"path": "apps/ios/Sources/Design/ChatProTab.swift",
72967296
"source": "The session attaches once the gateway is ready.",
72977297
"surface": "apple",
72987298
"id": "native.apple.32179ce0b6d4543f"
72997299
},
73007300
{
73017301
"kind": "ui-modifier",
7302-
"line": 212,
7302+
"line": 219,
73037303
"path": "apps/ios/Sources/Design/ChatProTab.swift",
73047304
"source": "Opens Settings / Gateway",
73057305
"surface": "apple",
73067306
"id": "native.apple.d19c9577e0fdfea7"
73077307
},
73087308
{
73097309
"kind": "ui-call",
7310-
"line": 237,
7310+
"line": 244,
73117311
"path": "apps/ios/Sources/Design/ChatProTab.swift",
73127312
"source": "Export Transcript",
73137313
"surface": "apple",
73147314
"id": "native.apple.ced228bb4d20a726"
73157315
},
73167316
{
73177317
"kind": "ui-modifier",
7318-
"line": 247,
7318+
"line": 254,
73197319
"path": "apps/ios/Sources/Design/ChatProTab.swift",
73207320
"source": "Chat actions",
73217321
"surface": "apple",
73227322
"id": "native.apple.940e1f943750c94b"
73237323
},
73247324
{
73257325
"kind": "conditional-branch",
7326-
"line": 300,
7326+
"line": 307,
73277327
"path": "apps/ios/Sources/Design/ChatProTab.swift",
73287328
"source": "Connected",
73297329
"surface": "apple",
73307330
"id": "native.apple.b635acd93246d67b"
73317331
},
73327332
{
73337333
"kind": "conditional-branch",
7334-
"line": 300,
7334+
"line": 307,
73357335
"path": "apps/ios/Sources/Design/ChatProTab.swift",
73367336
"source": "Unavailable",
73377337
"surface": "apple",
73387338
"id": "native.apple.04934af85e3b9d6e"
73397339
},
73407340
{
73417341
"kind": "conditional-branch",
7342-
"line": 311,
7342+
"line": 318,
73437343
"path": "apps/ios/Sources/Design/ChatProTab.swift",
73447344
"source": "Connect to a gateway",
73457345
"surface": "apple",
73467346
"id": "native.apple.889fe76e02b8ad5d"
73477347
},
73487348
{
73497349
"kind": "conditional-branch",
7350-
"line": 311,
7350+
"line": 318,
73517351
"path": "apps/ios/Sources/Design/ChatProTab.swift",
73527352
"source": "Message \\(self.agentDisplayName)...",
73537353
"surface": "apple",
73547354
"id": "native.apple.e8173c7d24457256"
73557355
},
73567356
{
73577357
"kind": "ui-localized-call",
7358-
"line": 361,
7358+
"line": 368,
73597359
"path": "apps/ios/Sources/Design/ChatProTab.swift",
73607360
"source": "Check OpenClaw status",
73617361
"surface": "apple",
73627362
"id": "native.apple.14492e334b87e4f2"
73637363
},
73647364
{
73657365
"kind": "ui-localized-call",
7366-
"line": 362,
7366+
"line": 369,
73677367
"path": "apps/ios/Sources/Design/ChatProTab.swift",
73687368
"source": "Summarize the current OpenClaw status and tell me what needs attention.",
73697369
"surface": "apple",
73707370
"id": "native.apple.bbf7bd23da1e7865"
73717371
},
73727372
{
73737373
"kind": "ui-localized-call",
7374-
"line": 365,
7374+
"line": 372,
73757375
"path": "apps/ios/Sources/Design/ChatProTab.swift",
73767376
"source": "What can I control here?",
73777377
"surface": "apple",
73787378
"id": "native.apple.ea8cbb1b4230c652"
73797379
},
73807380
{
73817381
"kind": "ui-localized-call",
7382-
"line": 366,
7382+
"line": 373,
73837383
"path": "apps/ios/Sources/Design/ChatProTab.swift",
73847384
"source": "Show me which phone controls and device capabilities are available right now.",
73857385
"surface": "apple",
73867386
"id": "native.apple.451d25bdb3130ed0"
73877387
},
73887388
{
73897389
"kind": "ui-localized-call",
7390-
"line": 369,
7390+
"line": 376,
73917391
"path": "apps/ios/Sources/Design/ChatProTab.swift",
73927392
"source": "Help me start voice chat",
73937393
"surface": "apple",
73947394
"id": "native.apple.503ec402d08bd43a"
73957395
},
73967396
{
73977397
"kind": "ui-localized-call",
7398-
"line": 370,
7398+
"line": 377,
73997399
"path": "apps/ios/Sources/Design/ChatProTab.swift",
74007400
"source": "Help me start a realtime voice session from this phone.",
74017401
"surface": "apple",
@@ -7507,47 +7507,47 @@
75077507
},
75087508
{
75097509
"kind": "ui-call",
7510-
"line": 661,
7510+
"line": 665,
75117511
"path": "apps/ios/Sources/Design/CommandCenterTab.swift",
75127512
"source": "Sessions",
75137513
"surface": "apple",
75147514
"id": "native.apple.9f2fd65953013b7c"
75157515
},
75167516
{
75177517
"kind": "ui-named-argument",
7518-
"line": 690,
7518+
"line": 694,
75197519
"path": "apps/ios/Sources/Design/CommandCenterTab.swift",
75207520
"source": "Sessions unavailable",
75217521
"surface": "apple",
75227522
"id": "native.apple.b272115c83f7ef58"
75237523
},
75247524
{
75257525
"kind": "conditional-branch",
7526-
"line": 700,
7526+
"line": 704,
75277527
"path": "apps/ios/Sources/Design/CommandCenterTab.swift",
75287528
"source": "Connect to the gateway.",
75297529
"surface": "apple",
75307530
"id": "native.apple.98512bfb25426929"
75317531
},
75327532
{
75337533
"kind": "conditional-branch",
7534-
"line": 700,
7534+
"line": 704,
75357535
"path": "apps/ios/Sources/Design/CommandCenterTab.swift",
75367536
"source": "Start a chat and it will appear here.",
75377537
"surface": "apple",
75387538
"id": "native.apple.bb1a311441d3cf24"
75397539
},
75407540
{
75417541
"kind": "conditional-branch",
7542-
"line": 727,
7542+
"line": 731,
75437543
"path": "apps/ios/Sources/Design/CommandCenterTab.swift",
75447544
"source": "Gateway offline",
75457545
"surface": "apple",
75467546
"id": "native.apple.9161ca3c61de6cc7"
75477547
},
75487548
{
75497549
"kind": "conditional-branch",
7550-
"line": 727,
7550+
"line": 731,
75517551
"path": "apps/ios/Sources/Design/CommandCenterTab.swift",
75527552
"source": "No recent sessions",
75537553
"surface": "apple",
@@ -11051,63 +11051,63 @@
1105111051
},
1105211052
{
1105311053
"kind": "conditional-branch",
11054-
"line": 2603,
11054+
"line": 2697,
1105511055
"path": "apps/ios/Sources/Model/NodeAppModel.swift",
1105611056
"source": "Action required",
1105711057
"surface": "apple",
1105811058
"id": "native.apple.0d030e96f7738497"
1105911059
},
1106011060
{
1106111061
"kind": "conditional-branch",
11062-
"line": 2603,
11062+
"line": 2697,
1106311063
"path": "apps/ios/Sources/Model/NodeAppModel.swift",
1106411064
"source": "Approval needed",
1106511065
"surface": "apple",
1106611066
"id": "native.apple.ce6a022159f2fb41"
1106711067
},
1106811068
{
1106911069
"kind": "conditional-branch",
11070-
"line": 3158,
11070+
"line": 3252,
1107111071
"path": "apps/ios/Sources/Model/NodeAppModel.swift",
1107211072
"source": "Connecting…",
1107311073
"surface": "apple",
1107411074
"id": "native.apple.b0d9c1ba8ef7ec19"
1107511075
},
1107611076
{
1107711077
"kind": "conditional-branch",
11078-
"line": 3158,
11078+
"line": 3252,
1107911079
"path": "apps/ios/Sources/Model/NodeAppModel.swift",
1108011080
"source": "Reconnecting…",
1108111081
"surface": "apple",
1108211082
"id": "native.apple.bd98e19b49309284"
1108311083
},
1108411084
{
1108511085
"kind": "conditional-branch",
11086-
"line": 3162,
11086+
"line": 3256,
1108711087
"path": "apps/ios/Sources/Model/NodeAppModel.swift",
1108811088
"source": "Connecting...",
1108911089
"surface": "apple",
1109011090
"id": "native.apple.6504753f3621269e"
1109111091
},
1109211092
{
1109311093
"kind": "conditional-branch",
11094-
"line": 3162,
11094+
"line": 3256,
1109511095
"path": "apps/ios/Sources/Model/NodeAppModel.swift",
1109611096
"source": "Reconnecting...",
1109711097
"surface": "apple",
1109811098
"id": "native.apple.c7fbe2a713d78714"
1109911099
},
1110011100
{
1110111101
"kind": "conditional-branch",
11102-
"line": 3450,
11102+
"line": 3544,
1110311103
"path": "apps/ios/Sources/Model/NodeAppModel.swift",
1110411104
"source": "Connected",
1110511105
"surface": "apple",
1110611106
"id": "native.apple.c0a005f81d588867"
1110711107
},
1110811108
{
1110911109
"kind": "conditional-branch",
11110-
"line": 3450,
11110+
"line": 3544,
1111111111
"path": "apps/ios/Sources/Model/NodeAppModel.swift",
1111211112
"source": "Offline",
1111311113
"surface": "apple",

0 commit comments

Comments
 (0)