Skip to content

Commit a64a369

Browse files
Merge branch 'main' into codex/android-workspace-files-navigation
2 parents ee07e01 + 5b29c37 commit a64a369

143 files changed

Lines changed: 19566 additions & 3192 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.

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1202,7 +1202,7 @@ jobs:
12021202
for scenario_id in "${scenario_ids[@]}"; do
12031203
scenario_args+=(--scenario "$scenario_id")
12041204
done
1205-
node openclaw.mjs qa run \
1205+
timeout --signal=TERM --kill-after=15s 10m node openclaw.mjs qa run \
12061206
--repo-root . \
12071207
--qa-profile smoke-ci \
12081208
--concurrency 10 \

.github/workflows/openclaw-release-telegram-qa.yml

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ jobs:
320320
trusted_reason="release-tag"
321321
break
322322
fi
323-
done < <(git -C .candidate for-each-ref --format='%(refname)' refs/tags/v)
323+
done < <(git -C .candidate for-each-ref --format='%(refname)' 'refs/tags/v*')
324324
fi
325325
fi
326326
fi
@@ -339,18 +339,27 @@ jobs:
339339
-f name="$repository_name" \
340340
-f oid="$candidate_sha"
341341
)"
342-
signer="$(
342+
signature_status="$(
343343
jq -er \
344344
--arg sha "$candidate_sha" \
345345
'.data.repository.object |
346-
select(.oid == $sha and .signature.isValid == true and .signature.state == "VALID") |
347-
.signature.signer.login' \
346+
select(.oid == $sha) |
347+
if .signature == null then "missing"
348+
elif .signature.isValid == true and .signature.state == "VALID" and
349+
(.signature.signer.login // "") != "" then "valid"
350+
else "invalid"
351+
end' \
348352
<<<"$signature_json"
349353
)"
354+
if [[ "$signature_status" == "invalid" ]]; then
355+
echo "Release candidate ${candidate_sha} has an invalid commit signature." >&2
356+
exit 1
357+
fi
358+
signer="$(jq -r '.data.repository.object.signature.signer.login // ""' <<<"$signature_json")"
350359
permission_actor="$signer"
351-
if [[ "$signer" == "web-flow" ]]; then
360+
if [[ "$signature_status" == "missing" || "$signer" == "web-flow" ]]; then
352361
if [[ "$trusted_reason" != "release-branch-head" || -z "$trusted_release_branch" ]]; then
353-
echo "GitHub web-flow candidates require an exact release branch head." >&2
362+
echo "Unsigned or GitHub web-flow candidates require an exact release branch head." >&2
354363
exit 1
355364
fi
356365
permission_actor="$(
@@ -1002,7 +1011,7 @@ jobs:
10021011
trusted_reason="release-tag"
10031012
break
10041013
fi
1005-
done < <(git for-each-ref --format='%(refname)' refs/tags/v)
1014+
done < <(git for-each-ref --format='%(refname)' 'refs/tags/v*')
10061015
fi
10071016
fi
10081017
fi
@@ -1018,18 +1027,27 @@ jobs:
10181027
-f name="$repository_name" \
10191028
-f oid="$candidate_sha"
10201029
)"
1021-
signer="$(
1030+
signature_status="$(
10221031
jq -er \
10231032
--arg sha "$candidate_sha" \
10241033
'.data.repository.object |
1025-
select(.oid == $sha and .signature.isValid == true and .signature.state == "VALID") |
1026-
.signature.signer.login' \
1034+
select(.oid == $sha) |
1035+
if .signature == null then "missing"
1036+
elif .signature.isValid == true and .signature.state == "VALID" and
1037+
(.signature.signer.login // "") != "" then "valid"
1038+
else "invalid"
1039+
end' \
10271040
<<<"$signature_json"
10281041
)"
1042+
if [[ "$signature_status" == "invalid" ]]; then
1043+
echo "Release candidate ${candidate_sha} has an invalid commit signature." >&2
1044+
exit 1
1045+
fi
1046+
signer="$(jq -r '.data.repository.object.signature.signer.login // ""' <<<"$signature_json")"
10291047
permission_actor="$signer"
1030-
if [[ "$signer" == "web-flow" ]]; then
1048+
if [[ "$signature_status" == "missing" || "$signer" == "web-flow" ]]; then
10311049
if [[ "$trusted_reason" != "release-branch-head" || -z "$trusted_release_branch" ]]; then
1032-
echo "GitHub web-flow candidates require an exact release branch head." >&2
1050+
echo "Unsigned or GitHub web-flow candidates require an exact release branch head." >&2
10331051
exit 1
10341052
fi
10351053
permission_actor="$(

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ Docs: https://docs.openclaw.ai
3030

3131
### Fixes
3232

33+
- **Plugin SDK API baseline:** cover every public entrypoint, preserve complete declaration shapes without source-line churn, and run baseline and export-surface guards from changed-file validation.
3334
- **SQLite terminal session recovery:** track physical transcript mutation time in the agent database so killed or timed-out main sessions rotate when transcript writes outlive the registry update, while preserving legacy transcript mtimes during doctor import.
3435
- **Gateway chat typecheck:** import chat event types from their owning protocol schema after the retired aggregate type module was removed, restoring full project typechecks.
3536
- **Packaged Crabbox commands:** include the lease-freshness helper imported by the published wrapper so `crabbox:*` commands do not fail with `ERR_MODULE_NOT_FOUND` in npm installs.

0 commit comments

Comments
 (0)