Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
409 commits
Select commit Hold shift + click to select a range
b863316
fix(models): preserve user reasoning override when merging with built…
byungsker Feb 24, 2026
3963163
fix: add changelog + typed omission test note (#25314) (thanks @lbo728)
steipete Feb 24, 2026
8cc8417
docs(security): enumerate dangerous config parameters
steipete Feb 24, 2026
f33d0a8
fix(slack): override wrong channel_type for D-prefix DM channels
mcaxtr Feb 24, 2026
3ff6e07
test(slack): add missing allowNameMatching field to DM classification…
mcaxtr Feb 24, 2026
5e6fe9c
fix: add changelog for slack dm channel-type guard (#25479) (thanks @…
steipete Feb 24, 2026
d32298c
fix: slug-generator uses effective model instead of agent-primary
SudeepMalipeddi Feb 24, 2026
bbdf895
fix: add changelog for slug generator model resolution (#25485) (than…
steipete Feb 24, 2026
aec41a5
fix(hooks): backfill reset command hooks for native /new path
chilu18 Feb 24, 2026
0365125
fix: add changelog for reset hook fallback coverage (#25459) (thanks …
steipete Feb 24, 2026
b5787e4
fix(sandbox): harden bind validation for symlink missing-leaf paths
steipete Feb 24, 2026
2c4ebf7
fix(config): coerce numeric meta.lastTouchedAt to ISO string
mcaxtr Feb 24, 2026
d2c031d
fix: add changelog for meta timestamp coercion (#25491) (thanks @mcaxtr)
steipete Feb 24, 2026
23b9dae
fix(doctor): improve sandbox warning when Docker unavailable
mcaxtr Feb 24, 2026
b511a38
fix: add changelog for doctor sandbox docker warning (#25438) (thanks…
steipete Feb 24, 2026
aa2826b
fix(usage): parse Kimi K2 cached_tokens from prompt_tokens_details
Elarwei001 Feb 24, 2026
760671e
fix: add changelog for kimi cache usage parsing (#25436) (thanks @Ela…
steipete Feb 24, 2026
31b1b20
docs: add WeChat community plugin listing
Feb 24, 2026
8db7ca8
fix: prevent synthetic toolResult for aborted/errored assistant messages
Feb 24, 2026
6da03ea
fix: add changelog and clean regression comment for tool-result guard…
steipete Feb 24, 2026
9168f21
test: add case-insensitive stop abort assertions
steipete Feb 24, 2026
c3680c2
docs(changelog): credit reporter for sandbox bind-path fix
steipete Feb 24, 2026
370d115
fix: enforce workspaceOnly for native prompt image autoload
steipete Feb 24, 2026
ebb5680
ui(chat): allowlist image open URLs
shakkernerd Feb 24, 2026
e583628
ui: centralize safe external URL opening
shakkernerd Feb 24, 2026
94942df
build: scope window.open guard to ui checks
shakkernerd Feb 24, 2026
fb8edeb
fix(ui): stabilize chat-image open browser test and changelog
steipete Feb 24, 2026
dd9ba97
fix: sort IPv4 addresses before IPv6 in SSRF pinned DNS to fix Telegr…
Glucksberg Feb 23, 2026
3f07d72
fix: changelog credit for Telegram IPv4 fallback fix (#24295) (thanks…
steipete Feb 24, 2026
203de14
fix(doctor): use plugin manifest id for third-party channel auto-enable
zerone0x Feb 24, 2026
3b4dac7
fix: doctor plugin-id mapping for channel auto-enable (#25275) (thank…
steipete Feb 24, 2026
9ccc15f
docs: update changelog note for native image workspace fix
steipete Feb 24, 2026
73f526f
fix(ios): support Xcode 16+ team detection and fix ntohl build error
brianleach Feb 21, 2026
fd07861
fix(ios): harden team-id profile fallback and tests
steipete Feb 24, 2026
1ae8c0a
fix(ios): make team-id python lookup cross-platform
steipete Feb 24, 2026
069c56c
fix(ios): normalize team IDs before preferred match
steipete Feb 24, 2026
d1f28c9
feat(gateway): surface talk elevenlabs config metadata
ngutman Feb 20, 2026
d58f715
feat(talk): add provider-agnostic config with legacy compatibility
ngutman Feb 21, 2026
4416205
fix(config): dedupe talk schema help keys
steipete Feb 24, 2026
0e15569
fix(config): add operational guidance to legacy talk help
steipete Feb 24, 2026
13bfe7f
refactor(sandbox): share bind parsing and host-path policy checks
steipete Feb 24, 2026
6c5ab54
refactor: tighten external-link policy and window.open guard
steipete Feb 24, 2026
878b4e0
refactor: unify tools.fs workspaceOnly resolution
steipete Feb 24, 2026
d18ae22
refactor: unify channel plugin resolution, family ordering, and chang…
steipete Feb 24, 2026
d06d870
iOS: normalize watch quick actions and fix test signing
mbelinky Feb 22, 2026
0121fa6
Changelog: add PR 23636 iOS/watch notes
mbelinky Feb 22, 2026
4ec0af0
Agents: fix embedded auth-profile failure helper typing
mbelinky Feb 22, 2026
80daaeb
fix(ios): split watch notify normalization helpers
steipete Feb 24, 2026
0f0a680
fix(exec): block shell-wrapper positional argv approval smuggling
steipete Feb 24, 2026
e806b34
chore: remove changelog add helper script
steipete Feb 24, 2026
36c3524
build(android): bump AGP and update gradle defaults
obviyus Feb 24, 2026
3e2e010
feat(android): add onboarding and gateway auth state plumbing
obviyus Feb 24, 2026
b9cc259
feat(android): add native four-step onboarding flow
obviyus Feb 24, 2026
d6bbe93
feat(android): add settings action to rerun onboarding
obviyus Feb 24, 2026
5d88e77
docs(android): add native UI style guide
obviyus Feb 24, 2026
757a4dc
docs(android): generalize style guide from onboarding baseline
obviyus Feb 24, 2026
c015382
feat(android): add connect tab screen with setup and manual modes
obviyus Feb 24, 2026
f853622
feat(android): switch post-onboarding app to five-tab shell
obviyus Feb 24, 2026
4b188dc
fix(android): persist gateway auth state across onboarding
obviyus Feb 24, 2026
14f5217
fix(android): retry with shared token after device-token failure
obviyus Feb 24, 2026
439d8e6
fix(android): use native client id for operator session
obviyus Feb 24, 2026
cf031d6
chore(android): remove unused legacy ui components
obviyus Feb 24, 2026
02e3fbe
style(android): align settings screen with RN visual system
obviyus Feb 24, 2026
b658000
style(android-chat): refine thread shell and empty states
obviyus Feb 24, 2026
81ff074
style(android-chat): align bubbles and markdown with RN
obviyus Feb 24, 2026
577c554
style(android-chat): redesign composer controls and actions
obviyus Feb 24, 2026
94f426b
fix(android-nav): hide tab bar while keyboard is open
obviyus Feb 24, 2026
bb27884
feat(android-tabs): add coming-soon voice and screen tabs
obviyus Feb 24, 2026
baf98a8
refactor(android-settings): remove gateway controls duplicated in con…
obviyus Feb 24, 2026
75f145e
docs(android): document alpha rebuild status and feature checklist
obviyus Feb 24, 2026
e11e329
refactor(android-chat): move thread selector above composer
obviyus Feb 24, 2026
8b24830
fix(android-gateway): avoid token clear on transient connect failure
obviyus Feb 24, 2026
7a74cf3
fix(android-security): remove token-derived logging from prefs
obviyus Feb 24, 2026
8892a1c
refactor(android-ui): unify gateway config resolution paths
obviyus Feb 24, 2026
00de3ca
fix: widen external link rel token set type
obviyus Feb 24, 2026
51b3e23
fix(telegram): fallback to plain text when threaded markdown renders …
Glucksberg Feb 15, 2026
566a8e7
chore(telegram): suppress handled empty-text retry logs
Glucksberg Feb 24, 2026
6e31bca
fix(telegram): fail loud on empty text fallback
obviyus Feb 24, 2026
f154926
fix: land telegram empty-html fallback hardening (#25096) (thanks @Gl…
obviyus Feb 24, 2026
9ef0fc2
fix(sandbox): block @-prefixed workspace path bypass
steipete Feb 24, 2026
e975010
ui: block svg data image opens and harden tests
shakkernerd Feb 24, 2026
e7298b8
changelog: credit both chat-image fix contributors
shakkernerd Feb 24, 2026
30cb849
test(ui): reject base64 SVG data URLs
shakkernerd Feb 24, 2026
853f755
changelog: include #25847 in chat image safety entry (#25847) (thanks…
shakkernerd Feb 24, 2026
f4e6f87
refactor(ios): drop legacy talk payload and keychain fallbacks
steipete Feb 24, 2026
955cc90
chore: sync plugin versions to 2026.2.24
shakkernerd Feb 24, 2026
039ae0b
chore: refresh lockfile after plugin devDependency cleanup
shakkernerd Feb 24, 2026
bf8ca07
fix(config): soften antigravity removal fallout (#25538)
steipete Feb 24, 2026
d3da67c
fix(security): lock sandbox tmp media paths to openclaw roots
steipete Feb 24, 2026
2d159e5
docs(security): document openclaw temp-folder boundary
steipete Feb 24, 2026
b67e600
fix(security): restrict default safe-bin trusted dirs
steipete Feb 24, 2026
270ab03
fix: enforce local media root checks for attachment hydration
steipete Feb 24, 2026
0ee3036
fix(synology-chat): fail closed empty allowlist
steipete Feb 24, 2026
7655c0c
docs(changelog): add synology-chat allowlist fail-closed note
steipete Feb 24, 2026
ccbeb33
fix: harden routing/session isolation for followups and heartbeat
steipete Feb 24, 2026
14b6eea
feat(sandbox): block container namespace joins by default
steipete Feb 24, 2026
5552f90
refactor(sandbox): centralize network mode policy helpers
steipete Feb 24, 2026
e7a5f9f
fix(channels,sandbox): land hard breakage cluster from reviewed PR bases
steipete Feb 24, 2026
9fccf60
refactor(synology-chat): centralize DM auth and fail fast startup
steipete Feb 24, 2026
9b53102
test: add routing/session isolation edge-case regressions
steipete Feb 24, 2026
54648a9
refactor: centralize followup origin routing helpers
steipete Feb 24, 2026
5c2a483
refactor(outbound): centralize attachment media policy
steipete Feb 24, 2026
4355e08
refactor: harden safe-bin trusted dir diagnostics
steipete Feb 24, 2026
b4010a0
fix(zalo): enforce group sender policy in groups
steipete Feb 24, 2026
79e2328
docs: update changelog for safe-bin hardening
steipete Feb 24, 2026
79a7b3d
test(line): align tmp-root expectation after sandbox hardening
steipete Feb 24, 2026
13a1c46
fix(web-search): reduce provider auto-detect log noise
steipete Feb 24, 2026
a2529c2
test(matrix,discord,sandbox): expand breakage regression coverage
steipete Feb 24, 2026
58309fd
refactor(matrix,tests): extract helpers and inject send-queue timing
steipete Feb 24, 2026
453664f
refactor(zalo): split monitor access and webhook logic
steipete Feb 24, 2026
5a64f6d
Gateway/Security: protect /api/channels plugin root
Feb 24, 2026
9514201
fix(telegram): block unauthorized DM media downloads
steipete Feb 24, 2026
48b0523
Security: sanitize inherited host exec env
Feb 24, 2026
43a3ff3
Changelog: add entry for exec env sanitization
Feb 24, 2026
9924f7c
fix(security): classify hook sessions case-insensitively
Feb 24, 2026
316fad1
refactor(outbound): unify attachment hydration flow
steipete Feb 24, 2026
36d1e1d
refactor(telegram): simplify DM media auth precheck flow
steipete Feb 24, 2026
53f9b7d
fix(automation): harden announce delivery + cron coding profile (#258…
steipete Feb 24, 2026
a3c4f56
security(voice-call): detect Telnyx webhook replay
Feb 24, 2026
7bb08ba
Auto-reply: add exact stop trigger for do not do that
vincentkoc Feb 24, 2026
91391bb
Auto-reply tests: assert exact do not do that behavior
vincentkoc Feb 24, 2026
83f586b
Gateway tests: cover exact do not do that stop matching
vincentkoc Feb 24, 2026
cc386f4
Telegram tests: route exact do not do that to control lane
vincentkoc Feb 24, 2026
de58637
Changelog: note exact do not do that stop trigger
vincentkoc Feb 24, 2026
def993d
refactor(tmp): harden temp boundary guardrails
steipete Feb 24, 2026
e22a2d7
fix(whatsapp): stop retry loop on non-retryable 440 close
markmusson Feb 24, 2026
b0bb3cc
test(types): fix ts narrowing regressions in followup and matrix queu…
steipete Feb 24, 2026
b3e6653
fix(onboard): avoid false 'telegram plugin not available' block
Suko Feb 24, 2026
b7deb06
fix: normalize "bedrock" provider ID to "amazon-bedrock"
fwhite13 Feb 24, 2026
8680240
docs(changelog): backfill landed fix PR entries
steipete Feb 24, 2026
55cf925
fix(security): harden system.run companion command binding
steipete Feb 25, 2026
97e56cb
fix(discord): land proxy/media/reaction/model-picker regressions
steipete Feb 25, 2026
e11e510
docs(changelog): add reporter credit for exec companion hardening
steipete Feb 25, 2026
236b22b
fix(macos): guard voice audio paths with no input device (#25817)
steipete Feb 25, 2026
31e6d18
fix(macos): prefer openclaw binary while keeping pnpm fallback (#25512)
steipete Feb 25, 2026
daa4f34
Auth: bypass cooldown tracking for OpenRouter
vincentkoc Feb 24, 2026
f1d5c1a
Auth: use cooldown helper in explicit profile order
vincentkoc Feb 24, 2026
5de0496
Tests: cover OpenRouter cooldown display bypass
vincentkoc Feb 24, 2026
ebc8c4b
Tests: skip OpenRouter failure cooldown persistence
vincentkoc Feb 24, 2026
06f0b4a
Tests: keep OpenRouter runnable with legacy cooldown markers
vincentkoc Feb 24, 2026
aee38c4
Tests: preserve OpenRouter explicit auth order under cooldown fields
vincentkoc Feb 24, 2026
1cb14fc
Changelog: note OpenRouter cooldown bypass
vincentkoc Feb 24, 2026
99dd344
Changelog: remove unrelated session entries from PR
vincentkoc Feb 24, 2026
30082c9
Update CHANGELOG.md
vincentkoc Feb 25, 2026
11a0495
fix(macos): default voice wake forwarding to webchat (#25440)
steipete Feb 25, 2026
1970a1e
fix(macos): keep Return for IME marked text commit (#25178)
steipete Feb 25, 2026
57c9a18
fix(security): block env depth-overflow approval bypass
steipete Feb 25, 2026
16b228e
fix(macos): resolve webchat panel corner clipping (#22458)
steipete Feb 25, 2026
e9068e2
Agents: trust explicit allowlist refs beyond catalog
vincentkoc Feb 25, 2026
f34325e
Tests: cover allowlist refs missing from catalog
vincentkoc Feb 25, 2026
f7cf3d0
Gateway tests: accept allowlisted refs absent from catalog
vincentkoc Feb 25, 2026
5509bf2
Gateway tests: include synthetic allowlist models in models.list
vincentkoc Feb 25, 2026
1839ba8
Changelog: note allowlist stale-catalog model selection fix
vincentkoc Feb 25, 2026
9cd50c5
fix(discord): harden voice DAVE receive reliability (#25861)
steipete Feb 25, 2026
ce1dbeb
fix(macos): clean warnings and harden gateway/talk config parsing
steipete Feb 25, 2026
ee6fec3
docs(discord): document DAVE defaults and decrypt recovery
steipete Feb 25, 2026
a1a6235
test: bridge discord voice private casts via unknown
steipete Feb 25, 2026
b0f3925
docs(changelog): remove next-release shipping sentence
steipete Feb 25, 2026
3c95f89
refactor(exec): split system.run phases and align ts/swift validator …
steipete Feb 25, 2026
7455cee
fix(windows): skip unreliable dev comparison in fs-safe openVerifiedL…
Feb 24, 2026
943b8f1
fix: align windows safe-open file identity checks
steipete Feb 25, 2026
a9ce6bd
refactor: dedupe exec wrapper denial plan and test setup
steipete Feb 25, 2026
2a11c09
fix: harden iMessage echo dedupe and reasoning suppression (#25897)
steipete Feb 25, 2026
196a7db
test(media): add win32 dev=0 local media regression
steipete Feb 25, 2026
5c6b2cb
refactor: extract iMessage echo cache and unify suppression guards
steipete Feb 25, 2026
2157c49
test: normalize tmp media path assertion for windows
steipete Feb 25, 2026
8470dff
chore(deps): update dependencies except carbon
steipete Feb 25, 2026
bd213cf
fix(agents): normalize SiliconFlow Pro thinking=off payload (#25435)
steipete Feb 25, 2026
0078070
fix(telegram): refresh global undici dispatcher for autoSelectFamily …
steipete Feb 25, 2026
7dfac70
fix(synology-chat): land @bmendonca3 fail-closed allowlist follow-up …
steipete Feb 25, 2026
43f318c
fix(agents): reduce billing false positives on long text (#25680)
steipete Feb 25, 2026
4d89548
fix(ui): inherit default model fallbacks in agents overview (#25729)
steipete Feb 25, 2026
e2362d3
fix(heartbeat): default target none and internalize relay prompts
steipete Feb 25, 2026
a177b10
test(windows): normalize risky-path assertions
steipete Feb 25, 2026
039713c
fix: suppress reasoning payload leakage in whatsapp replies
steipete Feb 25, 2026
b35d00a
fix: sanitize Gemini 3.1 Google reasoning payloads
steipete Feb 25, 2026
5e3502d
fix(sandbox): prevent shell option interpretation for paths with lead…
albertlieyingadrian Feb 24, 2026
c7ae4ed
fix: harden sandbox fs dash-path regression coverage (#25891) (thanks…
steipete Feb 25, 2026
455fbc6
fix(security): prevent cross-channel reply routing in shared sessions
brandonwise Feb 23, 2026
f35c902
style: fix oxfmt formatting in targets.test.ts
brandonwise Feb 23, 2026
389ccda
fix: remove unused DeliverableMessageChannel import
brandonwise Feb 23, 2026
559b5ea
fix(cli): support --query in memory search command (#25904)
steipete Feb 25, 2026
bf5a96a
fix(agents): keep fallback chain reachable on configured fallback mod…
steipete Feb 25, 2026
fa525bf
fix(shell): prefer PowerShell 7 on Windows with tested fallbacks (#25…
steipete Feb 25, 2026
a01849e
test(telegram): cover triple-dash inbound media path regression
steipete Feb 25, 2026
22689b9
fix(sandbox): reject hardlinked tmp media aliases
Feb 24, 2026
6fa7226
fix: add changelog thanks for #25820 (thanks @bmendonca3)
steipete Feb 25, 2026
c736778
fix: drop active heartbeat followups from queue (#25610, thanks @mcaxtr)
steipete Feb 25, 2026
eb4a93a
refactor(sandbox): share container-path utils and tighten fs bridge t…
steipete Feb 25, 2026
c267b5e
refactor(sandbox): unify tmp alias checks and dedupe hardlink tests
steipete Feb 25, 2026
dcd9043
refactor(telegram-tests): split media suites and decouple store mock
steipete Feb 25, 2026
e0201c2
fix: keep channel typing active during long inference (#25886, thanks…
steipete Feb 25, 2026
a805d6b
fix(heartbeat): block dm targets and internalize blocked prompts
steipete Feb 25, 2026
e288035
fix: add sandbox bind-override regression coverage (#25410) (thanks @…
steipete Feb 25, 2026
885452f
fix: fail-closed shared-session reply routing (#24571) (thanks @brand…
steipete Feb 25, 2026
91ae82a
refactor(sandbox): centralize dangerous docker override key handling
steipete Feb 25, 2026
24d7612
refactor(heartbeat): harden dm delivery classification
steipete Feb 25, 2026
d42ef2a
refactor: consolidate typing lifecycle and queue policy
steipete Feb 25, 2026
45b5c35
test: fix CI failures in heartbeat and typing tests
steipete Feb 25, 2026
9f1bda9
test: fix TS2742 in telegram media test utils
steipete Feb 25, 2026
2d1e693
docs(changelog): reorder and backfill 2026.2.24 release notes
steipete Feb 25, 2026
a12cbf8
docs: refresh CLI and trusted-proxy docs
steipete Feb 25, 2026
bfafec2
docs: expand doctor and devices CLI references
steipete Feb 25, 2026
c2a8375
docs: fix configure section example
steipete Feb 25, 2026
df9a474
test: stabilize no-output timeout exec test
steipete Feb 25, 2026
7c59b78
test: cap docker live model sweeps and harden timeouts
steipete Feb 25, 2026
069c495
docs: clarify pairing commands in faq and troubleshooting
steipete Feb 25, 2026
74e5cbf
build: update appcast for 2026.2.24 beta
steipete Feb 25, 2026
8930dc0
build: update 2026.2.24 appcast enclosure to beta tag
steipete Feb 25, 2026
51d76eb
build: switch 2026.2.24 appcast enclosure to stable tag
steipete Feb 25, 2026
480cc4b
chore: roll to 2026.2.25 unreleased
steipete Feb 25, 2026
d2597d5
fix(agents): harden model fallback failover paths
steipete Feb 25, 2026
6969027
fix(android): restore chat text streaming
obviyus Feb 25, 2026
ff4dc05
feat(android): add gfm chat markdown renderer
obviyus Feb 25, 2026
797843c
build(android): bump stable dependencies
obviyus Feb 25, 2026
1edd9f8
build(android): migrate to AGP 9 new DSL kotlin setup
obviyus Feb 25, 2026
d942e59
docs: add changelog entry for #26079 (thanks @obviyus)
obviyus Feb 25, 2026
2652bb1
Release: sync plugin versions to 2026.2.25
shakkernerd Feb 25, 2026
dd6ad0d
test(exec): stabilize Windows PATH prepend assertion
steipete Feb 25, 2026
9beec48
refactor(agents): centralize model fallback resolution
steipete Feb 25, 2026
146c920
fix: stabilize live docker test handling
steipete Feb 25, 2026
38c4944
docs(security): clarify trusted plugin boundary
steipete Feb 25, 2026
09200b3
security(nextcloud-talk): reject unsigned webhooks before body read
Feb 25, 2026
0a58328
security(nextcloud-talk): isolate group allowlist from pairing-store …
Feb 25, 2026
d1bed50
security(irc): isolate group allowlist from DM pairing store
Feb 25, 2026
107bda2
security(msteams): isolate group allowlist from pairing-store entries
Feb 25, 2026
19d2a89
security(line): cap unsigned webhook body read budget
Feb 25, 2026
f7de41c
fix(followup): fall back to dispatcher when same-channel origin routi…
Sid-Qin Feb 25, 2026
156f13a
fix(agents): continue fallback loop for unrecognized provider errors …
Sid-Qin Feb 25, 2026
2e84017
fix(markdown): require paired || delimiters for spoiler detection (#2…
Sid-Qin Feb 25, 2026
24a6079
fix(hooks): include guildId and channelName in message_received metad…
davidrudduck Feb 25, 2026
c1964e7
fix(discord): gate component command authorization for guild interact…
bmendonca3 Feb 25, 2026
b564b72
docs(changelog): add missing security PR entries (#26118 #26116 #2611…
steipete Feb 25, 2026
6e97470
fix(brave-search): clarify ui_lang and search_lang format requirement…
Glucksberg Feb 25, 2026
52d933b
refactor: replace bot.molt identifiers with ai.openclaw
steipete Feb 25, 2026
8f5f599
docs(security): note narrow filesystem roots for tool access
steipete Feb 25, 2026
177386e
fix(tui): resolve wrong provider prefix when session has model withou…
byungsker Feb 25, 2026
def28a8
fix(slack): deliver file-only messages when all media downloads fail
Feb 24, 2026
a6337be
refactor: use MAX_SLACK_MEDIA_FILES constant for file-only fallback
Feb 24, 2026
b247cd6
fix: harden Slack file-only fallback placeholder (#25181) (thanks @ju…
steipete Feb 25, 2026
e539983
fix(android): normalize canvas host URLs for TLS gateways
obviyus Feb 25, 2026
1c0c58e
feat(android): add screen-tab canvas restore flow
obviyus Feb 25, 2026
35a4641
fix(android): use mobile viewport settings for canvas webview
obviyus Feb 25, 2026
f701224
feat(canvas): add narrow-screen A2UI layout overrides
obviyus Feb 25, 2026
41870fa
fix(android): preserve scoped canvas URL suffix on TLS rewrite
obviyus Feb 25, 2026
b065265
fix(android): gate canvas restore on node connectivity
obviyus Feb 25, 2026
8175256
refactor(android): return sendNodeEvent status to callers
obviyus Feb 25, 2026
6bc7544
fix(telegram): fail closed on empty group allowFrom override
Feb 25, 2026
fb76e31
fix(test): use valid brave ui_lang locale
obviyus Feb 25, 2026
6187502
Merge branch 'main' of https://github.com/openclaw/openclaw into feat…
siri666942 Feb 25, 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
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,9 @@ jobs:
- name: Check types and lint and oxfmt
run: pnpm check

- name: Enforce safe external URL opening policy
run: pnpm lint:ui:no-raw-window-open

# Report-only dead-code scans. Runs after scope detection and stores machine-readable
# results as artifacts for later triage before we enable hard gates.
# Temporarily disabled in CI while we process initial findings.
Expand Down
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,12 @@ skills-lock.json

# Local iOS signing overrides
apps/ios/LocalSigning.xcconfig

# Xcode build directories (xcodebuild output)
apps/ios/build/
apps/shared/OpenClawKit/build/
Swabble/build/

# Generated protocol schema (produced via pnpm protocol:gen)
dist/protocol.schema.json
.ant-colony/
Expand Down
13 changes: 13 additions & 0 deletions .mailmap
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Canonical contributor identity mappings for cherry-picked commits.
bmendonca3 <208517100+bmendonca3@users.noreply.github.com> <brianmendonca@Brians-MacBook-Air.local>
hcl <7755017+hclsys@users.noreply.github.com> <chenglunhu@gmail.com>
Glucksberg <80581902+Glucksberg@users.noreply.github.com> <markuscontasul@gmail.com>
JackyWay <53031570+JackyWay@users.noreply.github.com> <jackybbc@gmail.com>
Marcus Castro <7562095+mcaxtr@users.noreply.github.com> <mcaxtr@gmail.com>
Marc Gratch <2238658+mgratch@users.noreply.github.com> <me@marcgratch.com>
Peter Machona <7957943+chilu18@users.noreply.github.com> <chilu.machona@icloud.com>
Ben Marvell <92585+easternbloc@users.noreply.github.com> <ben@marvell.consulting>
zerone0x <39543393+zerone0x@users.noreply.github.com> <hi@trine.dev>
Marco Di Dionisio <3519682+marcodd23@users.noreply.github.com> <m.didionisio23@gmail.com>
mujiannan <46643837+mujiannan@users.noreply.github.com> <shennan@mujiannan.com>
Santhanakrishnan <239082898+bitfoundry-ai@users.noreply.github.com> <noreply@anthropic.com>
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,7 @@
- launchd PATH is minimal; ensure the app’s launch agent PATH includes standard system paths plus your pnpm bin (typically `$HOME/Library/pnpm`) so `pnpm`/`openclaw` binaries resolve when invoked via `openclaw-mac`.
- For manual `openclaw message send` messages that include `!`, use the heredoc pattern noted below to avoid the Bash tool’s escaping.
- Release guardrails: do not change version numbers without operator’s explicit consent; always ask permission before running any npm publish/release step.
- Beta release guardrail: when using a beta Git tag (for example `vYYYY.M.D-beta.N`), publish npm with a matching beta version suffix (for example `YYYY.M.D-beta.N`) rather than a plain version on `--tag beta`; otherwise the plain version name gets consumed/blocked.

## NPM + 1Password (publish/verify)

Expand Down
202 changes: 159 additions & 43 deletions CHANGELOG.md

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ Welcome to the lobster tank! 🦞
- **Vincent Koc** - Agents, Telemetry, Hooks, Security
- GitHub: [@vincentkoc](https://github.com/vincentkoc) · X: [@vincent_koc](https://x.com/vincent_koc)

- **Val Alexander** - UI/UX, Docs, and Agent DevX
- GitHub: [@BunsDev](https://github.com/BunsDev) · X: [@BunsDev](https://x.com/BunsDev)

- **Seb Slight** - Docs, Agent Reliability, Runtime Hardening
- GitHub: [@sebslight](https://github.com/sebslight) · X: [@sebslig](https://x.com/sebslig)

Expand Down
78 changes: 78 additions & 0 deletions PR_STATUS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# OpenClaw PR Submission Status

> Auto-maintained by agent team. Last updated: 2026-02-22

## PR Plan Overview

All PRs target upstream `openclaw/openclaw` via fork `kevinWangSheng/openclaw`.
Each PR follows [CONTRIBUTING.md](./CONTRIBUTING.md) and uses the [PR template](./.github/PULL_REQUEST_TEMPLATE.md).

## Duplicate Check

Before submission, each PR was cross-referenced against:

- 100+ open upstream PRs (as of 2026-02-22)
- 50 recently merged PRs
- 50+ open issues

No overlap found with existing PRs.

## PR Status Table

| # | Branch | Title | Type | Status | PR URL |
| --- | -------------------------------------- | --------------------------------------------------------------------------- | -------- | --------------- | --------------------------------------------------------- |
| 1 | `security/redos-safe-regex` | fix(security): add ReDoS protection for user-controlled regex patterns | Security | CI Pass | [#23670](https://github.com/openclaw/openclaw/pull/23670) |
| 2 | `security/session-slug-crypto-random` | fix(security): use crypto.randomInt for session slug generation | Security | CI Pass | [#23671](https://github.com/openclaw/openclaw/pull/23671) |
| 3 | `fix/json-parse-crash-guard` | fix(resilience): guard JSON.parse of external process output with try-catch | Bug fix | CI Pass | [#23672](https://github.com/openclaw/openclaw/pull/23672) |
| 4 | `refactor/console-to-subsystem-logger` | refactor(logging): migrate remaining console calls to subsystem logger | Refactor | CI Pass | [#23669](https://github.com/openclaw/openclaw/pull/23669) |
| 5 | `fix/sanitize-rpc-error-messages` | fix(security): sanitize RPC error messages in signal and imessage clients | Security | CI Pass | [#23724](https://github.com/openclaw/openclaw/pull/23724) |
| 6 | `fix/download-stream-cleanup` | fix(resilience): destroy write streams on download errors | Bug fix | CI Pass | [#23726](https://github.com/openclaw/openclaw/pull/23726) |
| 7 | `fix/telegram-status-reaction-cleanup` | fix(telegram): clear done reaction when removeAckAfterReply is true | Bug fix | CI Pass | [#23728](https://github.com/openclaw/openclaw/pull/23728) |
| 8 | `fix/session-cache-eviction` | fix(memory): add max size eviction to session manager cache | Bug fix | CI Pass (17/17) | [#23744](https://github.com/openclaw/openclaw/pull/23744) |
| 9 | `fix/fetch-missing-timeout` | fix(resilience): add timeout to unguarded fetch calls in browser subsystem | Bug fix | CI Pass (18/18) | [#23745](https://github.com/openclaw/openclaw/pull/23745) |
| 10 | `fix/skills-download-partial-cleanup` | fix(resilience): clean up partial file on skill download failure | Bug fix | CI Pass (19/19) | [#24141](https://github.com/openclaw/openclaw/pull/24141) |
| 11 | `fix/extension-relay-stop-cleanup` | fix(browser): flush pending extension timers on relay stop | Bug fix | CI Pass (20/20) | [#24142](https://github.com/openclaw/openclaw/pull/24142) |

## Isolation Rules

- Each agent works on a separate git worktree branch
- No two agents modify the same file
- File ownership:
- PR 1: `src/infra/exec-approval-forwarder.ts`, `src/discord/monitor/exec-approvals.ts`
- PR 2: `src/agents/session-slug.ts`
- PR 3: `src/infra/bonjour-discovery.ts`, `src/infra/outbound/delivery-queue.ts`
- PR 4: `src/infra/tailscale.ts`, `src/node-host/runner.ts`
- PR 5: `src/signal/client.ts`, `src/imessage/client.ts`
- PR 6: `src/media/store.ts`, `src/commands/signal-install.ts`
- PR 7: `src/telegram/bot-message-dispatch.ts`
- PR 8: `src/agents/pi-embedded-runner/session-manager-cache.ts`
- PR 9: `src/cli/nodes-camera.ts`, `src/browser/pw-session.ts`
- PR 10: `src/agents/skills-install-download.ts`
- PR 11: `src/browser/extension-relay.ts`

## Verification Results

### Batch 1 (PRs 1-4) — All CI Green

- PR 1: 17 tests pass, check/build/tests all green
- PR 2: 3 tests pass, check/build/tests all green
- PR 3: 45 tests pass (3 new), check/build/tests all green
- PR 4: 12 tests pass, check/build/tests all green

### Batch 2 (PRs 5-7) — CI Running

- PR 5: 3 signal tests pass, check pass, awaiting full test suite
- PR 6: 38 tests pass (20 media + 18 signal-install), check pass, awaiting full suite
- PR 7: 47 tests pass (3 new), check pass, awaiting full suite

### Batch 3 (PRs 8-9) — All CI Green

- PR 8 & 9: Initially failed due to pre-existing upstream TS errors + Windows flaky test. Fixed by rebasing onto latest upstream/main and removing `yieldMs: 10` from flaky sandbox test.
- PR 8: 17/17 pass, check/build/tests/windows all green
- PR 9: 18/18 pass, check/build/tests/windows all green

### Batch 4 (PRs 10-11) — All CI Green

- PR 10 & 11: Initially failed Windows flaky test (`yieldMs: 10` race). Fixed by removing `yieldMs: 10` from flaky sandbox test (same fix as PRs 8-9).
- PR 10: 19/19 pass, check/build/tests/windows all green
- PR 11: 20/20 pass, check/build/tests/windows all green
Loading
Loading