Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
162 commits
Select commit Hold shift + click to select a range
a0fa283
fix(discord): prevent stuck typing indicator
ngutman Feb 25, 2026
56b8c69
docs(changelog): add discord typing fix entry (#26295) (thanks @ngutman)
ngutman Feb 25, 2026
2e3c05d
feat(android): make QR scanning first-class onboarding
obviyus Feb 25, 2026
f894c23
docs(android): update README for native Android workflow
obviyus Feb 25, 2026
959cbaf
fix(android): stabilize chat composer ime and tab layout
obviyus Feb 25, 2026
7725c0b
fix(android): stabilize chat ime insets and tab bar
obviyus Feb 25, 2026
9c1c083
fix(android): remove tab bar gap above system nav
obviyus Feb 25, 2026
036e3e6
fix(android): harden scanned setup code parsing
obviyus Feb 25, 2026
ed34129
test(android): cover non-string setupCode QR payload
obviyus Feb 25, 2026
b3f46f0
fix(test): stabilize low-mem parallel runner and cron session mock (#…
ngutman Feb 25, 2026
97eb554
fix(typing): guard fireStart against post-close invocation
Feb 25, 2026
ae658aa
style: add curly braces to satisfy eslint(curly)
Feb 25, 2026
a182afc
style: expand curly braces per oxfmt
Feb 25, 2026
3607b73
fix(changelog): add typing firestart guard note (#26325) (thanks @win4r)
ngutman Feb 25, 2026
90ddb3f
fix(android): stabilize gateway operator reconnect
obviyus Feb 25, 2026
3d29233
feat(android): add single-path mic capture runtime manager
obviyus Feb 25, 2026
6798330
feat(android): replace voice placeholder with mic transcript UI
obviyus Feb 25, 2026
73677f2
refactor(android): remove legacy voice wake controls from settings
obviyus Feb 25, 2026
434dc46
feat(android): stream voice turns from mic manager events
obviyus Feb 25, 2026
f9c3fdb
refactor(android): expose voice conversation state to viewmodel
obviyus Feb 25, 2026
10a1593
feat(android): redesign voice mode layout for full-height conversation
obviyus Feb 25, 2026
f729cc7
fix(android): stop auto canvas rehydrate on node connect
obviyus Feb 25, 2026
285a0f4
fix(android): sync mic manager on toggle
obviyus Feb 25, 2026
2b7db53
fix(android): recover stuck voice sends after missing finals
obviyus Feb 25, 2026
b12216a
fix(android): refresh settings permissions on resume
obviyus Feb 25, 2026
975c9f4
Agents: emphasize config.schema usage
thewilloftheshadow Feb 25, 2026
15240bd
feature/OPENCLAW_IMAGE
ozbillwang Feb 3, 2026
c7f88e8
feature/OPENCLAW_IMAGE
ozbillwang Feb 3, 2026
9829233
Update docker-setup.sh
ozbillwang Feb 3, 2026
a898acb
feature/OPENCLAW_IMAGE
ozbillwang Feb 3, 2026
8f33100
refactor(macos): remove anthropic oauth onboarding flow
steipete Feb 25, 2026
d512163
fix(security): harden nextcloud-talk webhook replay handling
steipete Feb 25, 2026
f60d959
docs(changelog): add macOS auth fix note for setup-token path
steipete Feb 25, 2026
5325ed9
refactor(nextcloud-talk): extract webhook pipeline and shared test ha…
steipete Feb 25, 2026
45d5997
docs(changelog): clarify macOS beta scope for oauth fix
steipete Feb 25, 2026
125f407
fix(gateway): block agents.files symlink escapes
steipete Feb 25, 2026
2011edc
fix(gateway): preserve agentId through gateway send path
steipete Feb 25, 2026
15cfba7
fix: cron model fallback to agent defaults when payload.model fails (…
Youyou972 Feb 25, 2026
ef326f5
fix(browser): revalidate upload paths at use time
steipete Feb 25, 2026
2aa7842
fix(signal): enforce auth before reaction notification enqueue
steipete Feb 25, 2026
8d1481c
fix(gateway): require pairing for unpaired operator device auth
steipete Feb 25, 2026
eb73e87
fix(session): prevent silent overflow on parent thread forks (#26912)
steipete Feb 25, 2026
42f4557
fix(security): clarify denyCommands exact-match guidance
steipete Feb 25, 2026
b090d60
test(agent-runner): add overflow empty-payload regression coverage (#…
steipete Feb 25, 2026
39cc547
fix(discord): include embed title in fallback text (#26907)
Feb 25, 2026
a0a229a
Discord: align embed fallback in thread starter parsing
shakkernerd Feb 25, 2026
f837199
Changelog: note Discord embed fallback coverage
shakkernerd Feb 25, 2026
c6dfa26
refactor(signal): unify reaction auth flow and table-drive tests
steipete Feb 26, 2026
e56b0cf
fix: enforce telegram reaction authorization
steipete Feb 26, 2026
496a76c
fix(security): harden browser trace/download temp path handling
steipete Feb 26, 2026
046feb6
refactor: simplify telegram event authorization flow
steipete Feb 26, 2026
f41715a
refactor(browser): split act route modules and dedupe path guards
steipete Feb 26, 2026
c736f11
fix(gateway): harden browser websocket auth chain
steipete Feb 26, 2026
aedf62a
fix: harden discord and slack reaction ingress authorization
steipete Feb 26, 2026
4258a33
refactor(agents): unify subagent announce delivery pipeline
steipete Feb 26, 2026
876018f
chore(deps): update dependencies and lockfile
steipete Feb 26, 2026
8f8e46d
refactor: unify reaction ingress policy guards across channels
steipete Feb 26, 2026
20c2db2
refactor(gateway): split browser auth hardening paths
steipete Feb 26, 2026
aaeed3c
test(agents): add missing announce delivery regressions
steipete Feb 26, 2026
f312222
test: preserve config exports in agent handler mock
steipete Feb 26, 2026
c002627
fix(auth): distinguish revoked API keys from transient auth errors (#…
rrenamed Feb 26, 2026
70e31c6
fix(gateway): harden hooks URL parsing (#26864)
steipete Feb 26, 2026
6fb082e
fix(typing): call markDispatchIdle in followup runner to prevent stuc…
codexGW Feb 26, 2026
ec45c31
fix(gateway): block trusted-proxy control-ui node bypass
steipete Feb 26, 2026
3cd3d48
docs(changelog): note trusted-proxy control-ui hardening
steipete Feb 26, 2026
8c701ba
test(gateway): add hooks bind-host hardening coverage
steipete Feb 26, 2026
5e1bfb2
docs(changelog): add followup typing fix note (#26881)
steipete Feb 26, 2026
ce8c67c
fix(slack): gate interactive system events by sender auth
steipete Feb 26, 2026
95c6b3a
fix(telegram): recover polling after prolonged network outages
Feb 25, 2026
0cc3e81
refactor(gateway): centralize trusted-proxy control-ui bypass policy
steipete Feb 26, 2026
acbb93b
fix(agents): comprehensive quota fallback fixes - session overrides +…
ramezgaberiel Feb 26, 2026
1f004e6
refactor(tmp): simplify trusted tmp dir state checks
steipete Feb 26, 2026
347f7b9
fix(msteams): bind file consent invokes to conversation
steipete Feb 26, 2026
b8bb8ab
docs: clarify personal-by-default onboarding security notice
steipete Feb 26, 2026
00fc1f5
perf(android): remove startup bc provider registration
obviyus Feb 25, 2026
8d68199
perf(android): cache device identity and speed hex encoding
obviyus Feb 25, 2026
4a07c89
perf(android): make gateway token writes async
obviyus Feb 25, 2026
b49c2cb
perf(android): tighten startup path and add perf tooling
obviyus Feb 25, 2026
3175640
docs(android): add perf CLI workflow docs
obviyus Feb 25, 2026
410ba91
fix(android): hydrate gateway token state on init
obviyus Feb 26, 2026
958cafc
fix: add changelog note for android startup perf (#26659) (thanks @ob…
obviyus Feb 26, 2026
069bbf9
fix(slack): land #26878 allowlist channel ID case-insensitive match (…
steipete Feb 26, 2026
b786d11
refactor(telegram): simplify polling restart flow
steipete Feb 26, 2026
7b4fe6d
style(chat): UI: add mobile layout for chat compose actions
Feb 7, 2026
260bec5
fix: add changelog for chat compose mobile layout (#11167) (thanks @j…
obviyus Feb 26, 2026
baf656b
fix: block IPv6 multicast SSRF bypass
steipete Feb 26, 2026
03e689f
fix(security): bind system.run approvals to argv identity
steipete Feb 26, 2026
53fcfdf
fix(telegram): preserve finalized previews on mixed text+voice turns
steipete Feb 26, 2026
04d91d0
fix(security): block workspace hardlink alias escapes
steipete Feb 26, 2026
61b3246
fix(ssrf): unify ipv6 special-use blocking
steipete Feb 26, 2026
75dfb71
fix(slack): gate pin/reaction system events by sender auth
steipete Feb 26, 2026
92eb3df
refactor(security): unify exec approval request matching
steipete Feb 26, 2026
1e7ec8b
fix(routing): preserve explicit cron account and bound message defaults
steipete Feb 26, 2026
ee594e2
fix(telegram): webhook hang - tests and fix (openclaw#26933) thanks @…
huntharo Feb 26, 2026
8a006a3
feat(heartbeat): add directPolicy and restore default direct delivery
steipete Feb 26, 2026
de61e9c
refactor(security): unify path alias guard policies
steipete Feb 26, 2026
4ada143
docs(heartbeat): add directPolicy to config examples
steipete Feb 26, 2026
e16e8f5
refactor(slack): share system-event ingress and test harness
steipete Feb 26, 2026
b37dc42
fix(cron): suppress fallback summary after attempted announce delivery
steipete Feb 26, 2026
8a97803
fix(agents): normalize malformed tool results in adapter (#27007)
steipete Feb 26, 2026
8f8e2b1
fix: disable tts tool for voice provider
steipete Feb 26, 2026
f789f88
fix(security): harden approval-bound node exec cwd handling
steipete Feb 26, 2026
e4d62c2
test: expand voice provider tts regression coverage
steipete Feb 26, 2026
f55238e
chore: remove accidental PR_STATUS.md from repo
Marvae Feb 25, 2026
243e28d
fix(line): keep startAccount pending until abort signal to prevent re…
Sid-Qin Feb 25, 2026
9b81a53
fix: add changelog note for LINE lifecycle fix (#26528) (thanks @Sid-…
steipete Feb 26, 2026
7af6849
Discord: handle early gateway startup errors
theotarr Feb 22, 2026
e35fe78
refactor: centralize message-provider tool filtering
steipete Feb 26, 2026
02c7318
test(discord): fix monitor test typings
steipete Feb 26, 2026
e915b4c
refactor: unify monitor abort lifecycle handling
steipete Feb 26, 2026
fdea741
docs: reorder unreleased changelog by user impact
steipete Feb 26, 2026
5500000
chore(protocol): regenerate Swift gateway models
steipete Feb 26, 2026
c7352f6
security(telegram): fail closed group allowlist against DM pairing store
bmendonca3 Feb 25, 2026
470c606
refactor(telegram): remove dmPolicy from group allow context helper
obviyus Feb 26, 2026
3b02985
fix: document telegram group allowlist hardening (#25988) (thanks @bm…
obviyus Feb 26, 2026
bf70614
fix(ci): publish latest tag for stable docker release
obviyus Feb 26, 2026
41314c6
fix(ci): gate docker latest tag to stable release format
obviyus Feb 26, 2026
7493f11
fix(ci): allow legacy patch tags to publish docker latest
obviyus Feb 26, 2026
04870a5
test(session): make fork parent path assertion cross-platform
steipete Feb 26, 2026
4b5d4a4
docs: finalize 2026.2.25 release notes and appcast
steipete Feb 26, 2026
cb3e5c3
docs: fix onboarding markdown list spacing
steipete Feb 26, 2026
e819740
Docker/docs: reduce docker build OOM risk on small GCP hosts
pandego Feb 25, 2026
35976da
fix: harden Docker/GCP onboarding flow (#26253) (thanks @pandego)
steipete Feb 26, 2026
cf8d01b
pairing: isolate account-scoped allowlist and pending requests
gumadeiras Feb 26, 2026
d9b19e5
plugin-sdk: export shared timezone formatting helpers (#27196)
gumadeiras Feb 26, 2026
91a3f0a
pairing: enforce strict account-scoped state
gumadeiras Feb 26, 2026
39a1c13
chore(ci): fix cross-platform symlink path assertions in agents file …
gumadeiras Feb 26, 2026
f08fe02
Onboarding: support plugin-owned interactive channel flows (#27191)
gumadeiras Feb 26, 2026
72adf24
CI: shard Windows test lane for faster CI critical path (#27234)
joshavant Feb 26, 2026
bee0c56
test(android): add GatewaySession invoke roundtrip test
obviyus Feb 26, 2026
8117a13
fix(nodes): default camera snap to front high-quality image
obviyus Feb 26, 2026
d4ae8a8
test(android): cover invoke paramsJSON and error mapping
obviyus Feb 26, 2026
18fc4c1
refactor(android): centralize invoke command registry
obviyus Feb 26, 2026
39d362a
refactor(android): distill invoke dispatcher command flow
obviyus Feb 26, 2026
c3f54fc
refactor(android): unify invoke error parsing
obviyus Feb 26, 2026
f786552
fix(android): omit websocket Origin for native gateway connect
obviyus Feb 26, 2026
a87d961
fix(android): require gateway device auth store
obviyus Feb 26, 2026
ac6539e
refactor(android): unify invoke availability gating
obviyus Feb 26, 2026
c5d040b
fix: update changelog for android invoke distill (#27257) (thanks @ob…
obviyus Feb 26, 2026
96c7702
Agents: add account-scoped bind and routing commands (#27195)
gumadeiras Feb 26, 2026
b975711
fix(daemon): stabilize LaunchAgent restart and proxy env passthrough …
frankekn Feb 26, 2026
4ebefe6
fix(daemon): keep launchd KeepAlive while preserving restart hardening
gumadeiras Feb 26, 2026
39d725f
Daemon tests: guard undefined runtime status
gumadeiras Feb 26, 2026
a8d36a5
Merge upstream/main: resolve conflicts in agent.debug, cron run, launchd
siri666942 Feb 26, 2026
9915a0b
chore: re-apply QVerisBot fork patches after upstream sync
siri666942 Feb 26, 2026
92c309f
docs: fix wrong Providers link in configuration examples
yinghaosang Feb 26, 2026
c289b5f
fix(config): preserve agent-level apiKey/baseUrl during models.json m…
Sid-Qin Feb 26, 2026
cf4fe41
feat(android): add notifications.list node command
obviyus Feb 26, 2026
e6a5d57
feat(gateway): allow notifications.list for android nodes
obviyus Feb 26, 2026
c0073b3
feat(agents): add nodes notifications_list action
obviyus Feb 26, 2026
0581718
refactor(android): unify notifications.list status flow
obviyus Feb 26, 2026
a0cf753
refactor(agents): dedupe node read invoke commands
obviyus Feb 26, 2026
da6a96e
fix: update changelog for notifications list land (#27344) (thanks @o…
obviyus Feb 26, 2026
dfa0b5b
Channels: move single-account config into accounts.default (#27334)
gumadeiras Feb 26, 2026
58fef1d
fix(telegram): allow inline button callbacks in groups when command w…
GodsBoy Feb 26, 2026
0e3ed28
fix: changelog for telegram group inline callbacks (#27343) (thanks @…
obviyus Feb 26, 2026
30fd2bb
fix(ssrf): honor global family policy for pinned dispatcher
obviyus Feb 26, 2026
a690b62
Doctor: ignore slash sessions in transcript integrity check
gumadeiras Feb 26, 2026
a9d9a96
chore(changelog): move post release entries to unreleased section
gumadeiras Feb 26, 2026
a7d56e3
feat: ACP thread-bound agents (#23580)
osolmaz Feb 26, 2026
4ec026d
Merge upstream/main - resolve conflicts
siri666942 Feb 26, 2026
3222020
sync upstream
siri666942 Feb 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 4 additions & 0 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,10 @@
- changed-files:
- any-glob-to-any-file:
- "extensions/device-pair/**"
"extensions: acpx":
- changed-files:
- any-glob-to-any-file:
- "extensions/acpx/**"
"extensions: minimax-portal-auth":
- changed-files:
- any-glob-to-any-file:
Expand Down
19 changes: 18 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -418,12 +418,23 @@ jobs:
include:
- runtime: node
task: lint
shard_index: 0
shard_count: 1
command: pnpm lint
- runtime: node
task: test
shard_index: 1
shard_count: 2
command: pnpm canvas:a2ui:bundle && pnpm test
- runtime: node
task: test
shard_index: 2
shard_count: 2
command: pnpm canvas:a2ui:bundle && pnpm test
- runtime: node
task: protocol
shard_index: 0
shard_count: 1
command: pnpm protocol:check
steps:
- name: Checkout
Expand Down Expand Up @@ -495,6 +506,12 @@ jobs:
pnpm -v
pnpm install --frozen-lockfile --ignore-scripts=false --config.engine-strict=false --config.enable-pre-post-scripts=true || pnpm install --frozen-lockfile --ignore-scripts=false --config.engine-strict=false --config.enable-pre-post-scripts=true
- name: Configure test shard (Windows)
if: matrix.task == 'test'
run: |
echo "OPENCLAW_TEST_SHARDS=${{ matrix.shard_count }}" >> "$GITHUB_ENV"
echo "OPENCLAW_TEST_SHARD_INDEX=${{ matrix.shard_index }}" >> "$GITHUB_ENV"
- name: Configure vitest JSON reports
if: matrix.task == 'test'
run: echo "OPENCLAW_VITEST_REPORT_DIR=$RUNNER_TEMP/vitest-reports" >> "$GITHUB_ENV"
Expand All @@ -512,7 +529,7 @@ jobs:
if: matrix.task == 'test'
uses: actions/upload-artifact@v4
with:
name: vitest-reports-${{ runner.os }}-${{ matrix.runtime }}
name: vitest-reports-${{ runner.os }}-${{ matrix.runtime }}-shard${{ matrix.shard_index }}of${{ matrix.shard_count }}
path: |
${{ env.OPENCLAW_VITEST_REPORT_DIR }}
${{ runner.temp }}/vitest-slowest.md
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/docker-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,9 @@ jobs:
if [[ "${GITHUB_REF}" == refs/tags/v* ]]; then
version="${GITHUB_REF#refs/tags/v}"
tags+=("${IMAGE}:${version}")
if [[ "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[0-9]+)?$ ]]; then
tags+=("${IMAGE}:latest")
fi
fi
if [[ ${#tags[@]} -eq 0 ]]; then
echo "::error::No manifest tags resolved for ref ${GITHUB_REF}"
Expand Down
88 changes: 79 additions & 9 deletions CHANGELOG.md

Large diffs are not rendered by default.

4 changes: 3 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@ COPY --chown=node:node patches ./patches
COPY --chown=node:node scripts ./scripts

USER node
RUN pnpm install --frozen-lockfile
# Reduce OOM risk on low-memory hosts during dependency installation.
# Docker builds on small VMs may otherwise fail with "Killed" (exit 137).
RUN NODE_OPTIONS=--max-old-space-size=2048 pnpm install --frozen-lockfile

# Optionally install Chromium and Xvfb for browser automation.
# Build with: docker build --build-arg OPENCLAW_INSTALL_BROWSER=1 ...
Expand Down
78 changes: 0 additions & 78 deletions PR_STATUS.md

This file was deleted.

Loading
Loading