Skip to content

Commit f4a6f55

Browse files
authored
fix(backup): close archive stream before retry cleanup
1 parent c7244ca commit f4a6f55

608 files changed

Lines changed: 23084 additions & 4947 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.

.agents/skills/openclaw-ci-limits/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ These are intentionally guarded by `test/scripts/ci-workflow-guards.test.ts`:
132132
- `runner-admission` on `ubuntu-24.04` with
133133
`OPENCLAW_MAIN_CI_DEBOUNCE_SECONDS=90`.
134134
- `preflight` and `security-fast` needing `runner-admission`.
135-
- CI matrix caps: fast/check lanes at 12, Node test shards at 24, Windows and
135+
- CI matrix caps: fast/check lanes at 12, Node test shards at 28, Windows and
136136
Android at 2.
137137
- `build-artifacts` on `blacksmith-16vcpu-ubuntu-2404`.
138138
- lower-weight Node/check shards on `blacksmith-4vcpu-ubuntu-2404`.

.github/workflows/android-release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ jobs:
180180
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
181181
with:
182182
path: ~/.android-sdk
183-
key: ${{ runner.os }}-android-sdk-v1-cmdline-14742923-platform-36-build-tools-36.0.0
183+
key: ${{ runner.os }}-android-sdk-v1-cmdline-14742923-platform-37.0-build-tools-36.0.0
184184
restore-keys: |
185185
${{ runner.os }}-android-sdk-v1-
186186
@@ -209,7 +209,7 @@ jobs:
209209
yes | sdkmanager --sdk_root="${ANDROID_SDK_ROOT}" --licenses >/dev/null
210210
sdkmanager --sdk_root="${ANDROID_SDK_ROOT}" --install \
211211
"platform-tools" \
212-
"platforms;android-36" \
212+
"platforms;android-37.0" \
213213
"build-tools;36.0.0"
214214
215215
- name: Create apps-signing read token

.github/workflows/ci.yml

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,7 @@ jobs:
404404
{ check_name: "android-test-play", task: "test-play" },
405405
{ check_name: "android-test-third-party", task: "test-third-party" },
406406
{ check_name: "android-build-play", task: "build-play" },
407+
{ check_name: "android-ktlint", task: "ktlint" },
407408
]
408409
: [],
409410
),
@@ -1138,7 +1139,7 @@ jobs:
11381139
fail-fast: false
11391140
# The canonical main path waits for the admission debounce above, so
11401141
# widen this large matrix within the current runner-registration budget.
1141-
max-parallel: 24
1142+
max-parallel: 28
11421143
matrix: ${{ fromJson(needs.preflight.outputs.checks_node_core_nondist_matrix) }}
11431144
steps:
11441145
- *linux_node_checkout_step
@@ -2038,7 +2039,7 @@ jobs:
20382039
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
20392040
with:
20402041
path: ~/.android-sdk
2041-
key: ${{ runner.os }}-android-sdk-v1-cmdline-14742923-platform-36-build-tools-36.0.0
2042+
key: ${{ runner.os }}-android-sdk-v1-cmdline-14742923-platform-37.0-build-tools-36.0.0
20422043
restore-keys: |
20432044
${{ runner.os }}-android-sdk-v1-
20442045
@@ -2068,7 +2069,7 @@ jobs:
20682069
yes | sdkmanager --sdk_root="${ANDROID_SDK_ROOT}" --licenses >/dev/null
20692070
sdkmanager --sdk_root="${ANDROID_SDK_ROOT}" --install \
20702071
"platform-tools" \
2071-
"platforms;android-36" \
2072+
"platforms;android-37.0" \
20722073
"build-tools;36.0.0"
20732074
20742075
- name: Run Android ${{ matrix.task }}
@@ -2086,7 +2087,16 @@ jobs:
20862087
./gradlew --no-daemon --build-cache :app:testThirdPartyDebugUnitTest
20872088
;;
20882089
build-play)
2089-
./gradlew --no-daemon --build-cache :app:assemblePlayDebug
2090+
./gradlew --no-daemon --build-cache \
2091+
:app:assemblePlayDebug \
2092+
:app:assembleThirdPartyDebug \
2093+
:app:lintPlayDebug \
2094+
:app:lintThirdPartyDebug \
2095+
:benchmark:assembleDebug
2096+
;;
2097+
ktlint)
2098+
# Mirrors `pnpm android:lint`; keeps formatting drift out of main (see PR #100304 sweep).
2099+
./gradlew --no-daemon --build-cache :app:ktlintCheck :benchmark:ktlintCheck
20902100
;;
20912101
*)
20922102
echo "Unsupported Android task: $TASK" >&2

CHANGELOG.md

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

77
### Changes
88

9+
- **Android chat agent selector:** switch the active agent directly from the live chat screen while keeping chat, Talk mode, and home canvas on the same canonical session. (#80422) Thanks @bcperry.
910
- **Gateway host status:** show the connected Gateway's host, network address, OS, runtime, uptime, CPU, memory, and disk details in Control UI Settings. (#100478)
1011
- **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)
1112
- **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`.
@@ -22,7 +23,14 @@ Docs: https://docs.openclaw.ai
2223

2324
### Fixes
2425

26+
- **Packaged speech runtime:** stop treating package-backed `speech-core` as a bundled plugin sidecar, restoring TTS startup in npm installs while release checks keep true activation-bypassing facades package-complete. (#89899, #89425) Thanks @zhangguiping-xydt.
27+
- **Codex app-server protocol:** require app-server 0.142 or newer, remove pre-0.142 wire-shape compatibility, and teach Codex to retrieve deferred native `spawn_agent` through `tool_search` so native subagent task mirroring works on search-capable models. (#101221)
28+
- **Android hardware keyboard chat:** send with unmodified Enter on physical keyboards while preserving Shift+Enter and other modified Enter combinations for multiline input. (#101239) Thanks @3ninyt3nin-creator.
29+
- **CJK Markdown emphasis:** render adjacent Chinese, Japanese, and Korean emphasis punctuation through the shared Markdown pipeline instead of leaking literal markers across channels. (#101230, #101120) Thanks @nicknmorty.
30+
- **Backup retry cleanup:** close partial archive output handles before removing and retrying live-write failures, preventing Windows `EBUSY` locks from cascading into every retry. (#101397) Thanks @ZOOWH.
2531
- **Codex yielded native subagents:** keep the parent app-server subscription and shared client alive until yielded native subagent completion delivery settles, preventing lost wakeups and leaked one-shot cleanup.
32+
- **Delivery recovery pacing:** pace eligible outbound and restart-continuation replays after gateway startup so outage backlogs do not burst into channel rate limits, while preserving the wall-clock recovery budget. (#101118, #101058) Thanks @ZengWen-DT.
33+
- **Outbound pre-connect recovery:** clear stale platform-send evidence atomically when a connect or DNS failure proves no request was sent, allowing queued Discord and other channel messages to replay after connectivity returns without weakening the unknown-send duplicate guard. (#101024, #100979) Thanks @SunnyShu0925.
2634
- **Discord streamed finals:** send completion replies as fresh messages so inactive channels become unread, while preserving targeted mentions without escalating `@everyone` or `@here`. (#99711, #99662) Thanks @davelutztx.
2735
- **OpenAI-compatible SSE parsing:** recognize event streams mislabeled as JSON without prepending a second `data:` prefix, preserving valid streamed responses from non-conforming providers. (#96503) Thanks @ZengWen-DT.
2836
- **LM Studio embedding preload:** honor model- and provider-level context-window limits when preloading embedding models, preventing avoidable GPU out-of-memory failures. (#100750) Thanks @zak-li, @ZOOWH, and @hxz398.

0 commit comments

Comments
 (0)