Ayaan Zaidi
6f63fc288a
fix(android): return NOT_AUTHORIZED when notify permission is lost
2026-03-01 20:32:14 +05:30
Ayaan Zaidi
0d672e43b9
chore(protocol): sync generated swift models
2026-03-01 20:32:14 +05:30
Ayaan Zaidi
759a0fc1b2
chore(android): remove deprecated AGP gradle flags
2026-03-01 20:32:14 +05:30
Ayaan Zaidi
9c2f7e2a9d
style(android): format gradle kotlin scripts
2026-03-01 20:32:14 +05:30
Ayaan Zaidi
348a7dd5b3
fix(android): guard notification post permission
2026-03-01 20:32:14 +05:30
Ayaan Zaidi
7f9274b71d
chore(android): add kotlin lint/format tooling
2026-03-01 20:32:14 +05:30
Greg Mousseau
ba430cc65b
fix(android): drainingTts identity check, mark stopped on WebSocket failure
...
- Codex P2: drain coroutine now only clears drainingTts if it's the
same instance (=== check), preventing a newer drain from being
unreachable by stopTts.
- Codex P2: set stopped=true on WebSocket onFailure so subsequent
sendText calls are rejected and stale state doesn't persist.
2026-03-01 20:03:26 +05:30
Greg Mousseau
ccca99c472
fix(android): ignore stale out-of-order agent events in streaming TTS
...
Agent events arrive on multiple threads concurrently. A stale event
with shorter accumulated text was falsely triggering 'text diverged',
causing the streaming TTS to restart with a new WebSocket — resulting
in multiple simultaneous ElevenLabs connections (2-3 voices) and
eventual system TTS fallback when hasReceivedAudio was false.
Fix: if sentFullText.startsWith(fullText), the event is stale (we
already have this text), not diverged. Accept and ignore it.
2026-03-01 20:03:26 +05:30
Greg Mousseau
a583261775
fix(android): wire speaker mute to TalkMode, release audio focus on stop
...
- Codex P1: setSpeakerEnabled now syncs talkMode.setPlaybackEnabled
so muting the speaker works when ttsOnAllResponses is active.
- Codex P2: abandonAudioFocus() called in stopSpeaking to prevent
audio focus leak after TTS completes or is interrupted.
2026-03-01 20:03:26 +05:30
Greg Mousseau
930841cd7c
fix(android): wire MP3 fallback call, prevent double-speaking
...
- Codex P1: streamAndPlayMp3 was computed but never called after PCM
failure. Now properly invoked as fallback.
- Codex P2: MicCaptureManager.speakAssistantReply now skipped when
TalkModeManager.ttsOnAllResponses is active, preventing both
pipelines from speaking the same assistant reply.
2026-03-01 20:03:26 +05:30
Greg Mousseau
587790e84a
fix(android): talk mode stability — thread safety, TTS fallback, mic cooldown
...
Bug fixes:
- @Synchronized on ElevenLabsStreamingTts.sendText/finish to prevent
sentFullText/sentTextLength races across OkHttp and caller threads
- Pre-set pendingRunId via onRunIdKnown callback before chat.send to
eliminate race where gateway events arrive before runId is stored
- Track drain coroutine as Job; cancel prior on rapid mic toggle to
prevent duplicate TTS and stale transcript sends
- Mic button disabled during 2s drain cooldown (micCooldown StateFlow)
Codex review fixes:
- Gate agent streaming TTS on sessionKey to prevent cross-session
audio leaks (P1)
- Clear ElevenLabs credentials when talk.provider is not elevenlabs;
gate streaming TTS on activeProviderIsElevenLabs (P2)
System TTS fallback fixes:
- Null streamingTts immediately in finishStreamingTts so next response
gets a fresh TTS instance
- Add hasReceivedAudio flag to ElevenLabsStreamingTts to detect when
WebSocket connects but returns no audio (invalid key, network error)
- Fall back to playTtsForText when streaming TTS produced no audio
- Track ttsJob to cleanly cancel prior playTtsForText on new response
- Re-throw CancellationException instead of cascading into fallback
attempts that also get cancelled
2026-03-01 20:03:26 +05:30
Greg Mousseau
4748ba491d
fix(android): chat history refresh and mic capture improvements for voice
...
ChatController:
- final/aborted/error run events now trigger a history refresh regardless of
whether the runId is in pendingRuns; only delta events require the run to be
tracked (prevents voice-initiated responses from being silently dropped)
MicCaptureManager:
- Don't auto-send on onResults silence detection — accumulate transcript
segments and send when mic is toggled off, giving the recognizer time to
finish processing buffered audio
- Capture any partial live transcript if no final segments arrived (2s drain
window before stop)
- Join multi-segment transcripts with sentence-ending punctuation to avoid
run-on text sent to the gateway
2026-03-01 20:03:26 +05:30
Greg Mousseau
68db055f1a
feat(android): wire TalkModeManager into NodeRuntime for voice screen TTS
...
TalkModeManager is instantiated lazily in NodeRuntime and drives ElevenLabs
streaming TTS for all assistant responses when the voice screen is active.
MicCaptureManager continues to own STT and chat.send; TalkModeManager is
TTS-only (ttsOnAllResponses = true, setEnabled never called).
- talkMode.ttsOnAllResponses = true when mic is enabled or voice screen active
- Barge-in: tapping the mic button calls stopTts() before re-enabling mic
- Lifecycle: PostOnboardingTabs LaunchedEffect + VoiceTabScreen onDispose both
call setVoiceScreenActive(false) so TTS stops cleanly on tab switch or
app backgrounding
- applyMainSessionKey wires the session key into TalkModeManager so it
subscribes to the correct chat session for TTS
2026-03-01 20:03:26 +05:30
Greg Mousseau
f0fcecd7c1
feat(android): ElevenLabsStreamingTts — WebSocket streaming TTS with PCM playback
...
Streams text to the ElevenLabs WebSocket API and plays audio in real-time
via AudioTrack (PCM 24kHz). Key design points:
- sendText(fullText) takes the full accumulated text and only transmits the
new suffix, detecting divergence for restart
- Chunks are queued if the WebSocket isn't yet connected; flushed in onOpen
- finish() sends EOS to ElevenLabs; deferred if called before onOpen fires
- sendText returns true (not false) when finished=true to avoid treating a
normal end-of-stream as a diverge restart
- finishStreamingTts coroutine uses identity check before nulling streamingTts
to prevent a mid-drain restart from orphaning a live TTS session
- eleven_v3 does NOT support WebSocket streaming; use eleven_flash_v2_5
2026-03-01 20:03:26 +05:30
Ayaan Zaidi
1d7b76a90e
fix(android-voice): rotate playback token per assistant reply
2026-02-28 20:05:59 +05:30
Ayaan Zaidi
addc619087
fix(android-voice): retry talk config after transient failures
2026-02-28 20:05:59 +05:30
Ayaan Zaidi
930e94024a
fix(android-voice): cancel in-flight speech when speaker muted
2026-02-28 20:05:59 +05:30
Ayaan Zaidi
727ae469cf
perf(android): reduce mic conversation update churn
2026-02-28 20:05:59 +05:30
Ayaan Zaidi
3daed77ba9
fix(android): unify voice speaker gating and config refresh
2026-02-28 20:05:59 +05:30
Ayaan Zaidi
72e135083a
feat(android-voice): add speaker toggle in voice tab
2026-02-28 20:05:59 +05:30
Ayaan Zaidi
fb92a91ef7
fix(android): speak final voice replies in mic capture flow
2026-02-28 20:05:59 +05:30
Ayaan Zaidi
fcf3e5b0a0
fix(android): expose talk-mode assistant speech entrypoint
2026-02-28 20:05:59 +05:30
Ayaan Zaidi
eea081c709
fix(android): update onboarding pairing commands
2026-02-28 20:05:59 +05:30
Ayaan Zaidi
548a28a13f
fix(android): request onboarding permissions per toggle
2026-02-28 20:05:59 +05:30
Ayaan Zaidi
3f056a7294
fix(android): block onboarding advance until special setup is complete
2026-02-28 12:29:52 +05:30
Ayaan Zaidi
cd61edb0f3
fix(android): add missing capability setup surfaces
2026-02-28 12:29:52 +05:30
Ayaan Zaidi
f1bb26642c
fix(gateway): scope notification wakeups to session
2026-02-28 11:18:01 +05:30
Ayaan Zaidi
9d3ccf4754
feat(gateway): enable Android notify + notification events
2026-02-28 11:18:01 +05:30
Ayaan Zaidi
1bc9da8f9e
fix(android): stabilize motion sampling and gate pedometer command
2026-02-28 09:27:54 +05:30
Ayaan Zaidi
18e7938dfd
refactor(android): remove unreachable motion classify branch
2026-02-28 09:27:54 +05:30
Ayaan Zaidi
943dce37be
feat(android): wire new device capabilities into runtime
2026-02-28 09:27:54 +05:30
Ayaan Zaidi
b9e474deb4
feat(android): add motion activity and pedometer handlers
2026-02-28 09:27:54 +05:30
Ayaan Zaidi
f75385981a
feat(android): add calendar capability handlers
2026-02-28 09:27:54 +05:30
Ayaan Zaidi
81ebe7de46
feat(android): add contacts capability handlers
2026-02-28 09:27:54 +05:30
Ayaan Zaidi
c8ad229776
feat(android): add photos latest handler
2026-02-28 09:27:54 +05:30
Ayaan Zaidi
f637cbd246
feat(android): add system notification handler
2026-02-28 09:27:54 +05:30
Ayaan Zaidi
3f06693e7d
refactor(android): share node capability and command manifest
2026-02-28 08:46:50 +05:30
Peter Steinberger
fe807e4bed
chore(release): bump 2026.2.27 and split changelog
2026-02-27 16:09:28 +01:00
Ayaan Zaidi
3a35035512
fix(android): send object params for canvas capability refresh
2026-02-27 13:26:42 +05:30
Ayaan Zaidi
6222d6650b
fix(android): avoid duplicate A2UI readiness probe on happy path
2026-02-27 12:16:36 +05:30
Ayaan Zaidi
8187fbc571
fix(android): refresh scoped canvas URLs without trailing slash
2026-02-27 12:16:36 +05:30
Ayaan Zaidi
d53b24d185
fix(android): return valid debug.ed25519 diagnostics JSON
2026-02-27 12:16:36 +05:30
Ayaan Zaidi
34486f8c10
fix(android): retry A2UI after canvas capability refresh
2026-02-27 12:16:36 +05:30
Ayaan Zaidi
9b64ad30c4
docs(android): add integration test preconditions and pitfalls
2026-02-27 12:16:36 +05:30
Ayaan Zaidi
0896bb09b0
feat(android): wire runtime canvas capability refresh
2026-02-27 12:16:36 +05:30
Ayaan Zaidi
22d422a792
refactor(android-node): share battery snapshot parsing across device handlers
2026-02-27 10:15:21 +05:30
Ayaan Zaidi
284f75500c
refactor(android-node): unify notifications snapshot rebind preflight
2026-02-27 10:15:21 +05:30
Ayaan Zaidi
bbab0b005e
fix(android): rebind listener before notification actions
2026-02-27 10:15:21 +05:30
Ayaan Zaidi
8807267bfd
fix(android): allow open and reply on non-clearable notifications
2026-02-27 10:15:21 +05:30
Ayaan Zaidi
d0ec3de588
feat(android): implement device diagnostics and notification actions
2026-02-27 10:15:21 +05:30
Ayaan Zaidi
e99b323a6b
feat(node): add device diagnostics and notification action commands
2026-02-27 10:15:21 +05:30
Ayaan Zaidi
e48513d512
fix(android): scale invoke result ack timeout to invoke budget
2026-02-27 10:15:21 +05:30
Ayaan Zaidi
1f7b3c613d
feat(android): add camera list and device selection
2026-02-27 10:15:21 +05:30
Ayaan Zaidi
0f7664fda3
fix(android): reject non-positive camera maxWidth
2026-02-27 09:10:10 +05:30
Ayaan Zaidi
adb41e48ae
test(android): cover camera clip payload size guard
2026-02-27 09:10:10 +05:30
Ayaan Zaidi
fb34c46074
refactor(android): make camera clip transport deterministic
2026-02-27 09:10:10 +05:30
Ayaan Zaidi
120a7abbab
test(android): cover camera clip upload URL JSON parsing
2026-02-27 09:10:10 +05:30
Ayaan Zaidi
67609cc16f
fix(android): parse camera and screen invoke params as JSON
2026-02-27 09:10:10 +05:30
Peter Steinberger
5b62d5603d
fix: unblock CI minimatch audit and host policy check
2026-02-26 22:48:09 +00:00
Peter Steinberger
c35368c6dd
fix(ios): eliminate Swift warnings and clean build logs
2026-02-26 22:42:23 +00:00
Philipp Spiess
a29b18c003
Protocol: regenerate Swift models for systemRunPlanV2
2026-02-26 23:05:23 +01:00
Peter Steinberger
10481097f8
refactor(security): enforce v1 node exec approval binding
2026-02-26 18:09:01 +01:00
Shakker
15e3e63705
protocol: regenerate Swift models for exec env field
2026-02-26 16:19:44 +00:00
Peter Steinberger
4894d907fa
refactor(exec-approvals): unify system.run binding and generate host env policy
2026-02-26 16:58:01 +01:00
Ayaan Zaidi
cf327f60ba
fix(android): require validated network for device status
2026-02-26 21:26:11 +05:30
Ayaan Zaidi
d14e734e9c
refactor(android): remove dead thermal sdk branch
2026-02-26 21:26:11 +05:30
Ayaan Zaidi
d768c1f81c
feat(android): wire device commands into runtime
2026-02-26 21:26:11 +05:30
Ayaan Zaidi
67f6a13c5a
feat(android): add device status and info handler
2026-02-26 21:26:11 +05:30
Ayaan Zaidi
551647aa96
feat(android): add device invoke protocol commands
2026-02-26 21:26:11 +05:30
Peter Steinberger
9a4b2266cc
fix(security): bind node system.run approvals to env
2026-02-26 16:38:07 +01:00
Harold Hunt
62a248eb99
core(protocol): pnpm protocol:check
2026-02-26 20:03:25 +05:30
Peter Steinberger
081b1aa1ed
refactor(gateway): unify v3 auth payload builders and vectors
2026-02-26 15:08:50 +01:00
Nimrod Gutman
185c393459
fix(ios): remove talk voice directive hint
2026-02-26 15:19:07 +02:00
Peter Steinberger
490cb5174d
fix(apps): sign gateway device auth with v3 payload
2026-02-26 14:16:49 +01:00
Harold Hunt
f53e4e9ffb
chore: Fix broken build protocol:check
2026-02-26 18:22:38 +05:30
Peter Steinberger
caace61ba1
chore: bump versions to 2026.2.26
2026-02-26 12:11:02 +01:00
Ayaan Zaidi
05817187fe
refactor(android): unify notifications.list status flow
2026-02-26 14:33:14 +05:30
Ayaan Zaidi
cf4fe41957
feat(android): add notifications.list node command
2026-02-26 14:33:14 +05:30
Ayaan Zaidi
ac6539ed03
refactor(android): unify invoke availability gating
2026-02-26 12:17:32 +05:30
Ayaan Zaidi
a87d961ebc
fix(android): require gateway device auth store
2026-02-26 12:17:32 +05:30
Ayaan Zaidi
f7865527af
fix(android): omit websocket Origin for native gateway connect
2026-02-26 12:17:32 +05:30
Ayaan Zaidi
c3f54fcddd
refactor(android): unify invoke error parsing
2026-02-26 12:17:32 +05:30
Ayaan Zaidi
39d362aeff
refactor(android): distill invoke dispatcher command flow
2026-02-26 12:17:32 +05:30
Ayaan Zaidi
18fc4c113b
refactor(android): centralize invoke command registry
2026-02-26 12:17:32 +05:30
Ayaan Zaidi
d4ae8a8d34
test(android): cover invoke paramsJSON and error mapping
2026-02-26 12:17:32 +05:30
Ayaan Zaidi
8117a13dd6
fix(nodes): default camera snap to front high-quality image
2026-02-26 12:17:32 +05:30
Ayaan Zaidi
bee0c564cf
test(android): add GatewaySession invoke roundtrip test
2026-02-26 12:17:32 +05:30
Peter Steinberger
5500000492
chore(protocol): regenerate Swift gateway models
2026-02-26 04:43:27 +01:00
Ayaan Zaidi
410ba918fb
fix(android): hydrate gateway token state on init
2026-02-26 07:50:09 +05:30
Ayaan Zaidi
3175640ea2
docs(android): add perf CLI workflow docs
2026-02-26 07:50:09 +05:30
Ayaan Zaidi
b49c2cbdd9
perf(android): tighten startup path and add perf tooling
2026-02-26 07:50:09 +05:30
Ayaan Zaidi
4a07c89816
perf(android): make gateway token writes async
2026-02-26 07:50:09 +05:30
Ayaan Zaidi
8d68199793
perf(android): cache device identity and speed hex encoding
2026-02-26 07:50:09 +05:30
Ayaan Zaidi
00fc1f56f1
perf(android): remove startup bc provider registration
2026-02-26 07:50:09 +05:30
Peter Steinberger
2011edc9e5
fix(gateway): preserve agentId through gateway send path
...
Landed from #23249 by @Sid-Qin.
Includes extra regression tests for agentId precedence + blank fallback.
Co-authored-by: Sid <201593046+Sid-Qin@users.noreply.github.com>
2026-02-25 23:31:35 +00:00
Peter Steinberger
8f3310000a
refactor(macos): remove anthropic oauth onboarding flow
2026-02-26 00:17:03 +01:00
Ayaan Zaidi
b12216af93
fix(android): refresh settings permissions on resume
2026-02-25 18:23:50 +05:30
Ayaan Zaidi
2b7db53d06
fix(android): recover stuck voice sends after missing finals
2026-02-25 18:23:50 +05:30
Ayaan Zaidi
285a0f48e5
fix(android): sync mic manager on toggle
2026-02-25 18:23:50 +05:30
Ayaan Zaidi
f729cc7b07
fix(android): stop auto canvas rehydrate on node connect
2026-02-25 18:23:50 +05:30
Ayaan Zaidi
10a1593e0c
feat(android): redesign voice mode layout for full-height conversation
2026-02-25 18:23:50 +05:30
Ayaan Zaidi
f9c3fdba45
refactor(android): expose voice conversation state to viewmodel
2026-02-25 18:23:50 +05:30
Ayaan Zaidi
434dc46531
feat(android): stream voice turns from mic manager events
2026-02-25 18:23:50 +05:30
Ayaan Zaidi
73677f2707
refactor(android): remove legacy voice wake controls from settings
2026-02-25 18:23:50 +05:30
Ayaan Zaidi
6798330c24
feat(android): replace voice placeholder with mic transcript UI
2026-02-25 18:23:50 +05:30
Ayaan Zaidi
3d29233bab
feat(android): add single-path mic capture runtime manager
2026-02-25 18:23:50 +05:30
Ayaan Zaidi
90ddb3f271
fix(android): stabilize gateway operator reconnect
2026-02-25 18:23:50 +05:30
Ayaan Zaidi
ed34129637
test(android): cover non-string setupCode QR payload
2026-02-25 14:05:56 +05:30
Ayaan Zaidi
036e3e633e
fix(android): harden scanned setup code parsing
2026-02-25 14:05:56 +05:30
Ayaan Zaidi
9c1c083d98
fix(android): remove tab bar gap above system nav
2026-02-25 14:05:56 +05:30
Ayaan Zaidi
7725c0b9b3
fix(android): stabilize chat ime insets and tab bar
2026-02-25 14:05:56 +05:30
Ayaan Zaidi
959cbafcdb
fix(android): stabilize chat composer ime and tab layout
2026-02-25 14:05:56 +05:30
Ayaan Zaidi
f894c23e64
docs(android): update README for native Android workflow
2026-02-25 14:05:56 +05:30
Ayaan Zaidi
2e3c05d9da
feat(android): make QR scanning first-class onboarding
2026-02-25 14:05:56 +05:30
Ayaan Zaidi
81752564e9
refactor(android): return sendNodeEvent status to callers
2026-02-25 11:43:35 +05:30
Ayaan Zaidi
b065265b73
fix(android): gate canvas restore on node connectivity
2026-02-25 11:43:35 +05:30
Ayaan Zaidi
41870fac16
fix(android): preserve scoped canvas URL suffix on TLS rewrite
2026-02-25 11:43:35 +05:30
Ayaan Zaidi
f701224a69
feat(canvas): add narrow-screen A2UI layout overrides
2026-02-25 11:43:35 +05:30
Ayaan Zaidi
35a4641bb6
fix(android): use mobile viewport settings for canvas webview
2026-02-25 11:43:35 +05:30
Ayaan Zaidi
1c0c58e30d
feat(android): add screen-tab canvas restore flow
2026-02-25 11:43:35 +05:30
Ayaan Zaidi
e5399835b2
fix(android): normalize canvas host URLs for TLS gateways
2026-02-25 11:43:35 +05:30
Peter Steinberger
52d933b3a9
refactor: replace bot.molt identifiers with ai.openclaw
2026-02-25 05:03:24 +00:00
Ayaan Zaidi
1edd9f8bf5
build(android): migrate to AGP 9 new DSL kotlin setup
2026-02-25 09:32:07 +05:30
Ayaan Zaidi
797843c39a
build(android): bump stable dependencies
2026-02-25 09:32:07 +05:30
Ayaan Zaidi
ff4dc050cc
feat(android): add gfm chat markdown renderer
2026-02-25 09:32:07 +05:30
Ayaan Zaidi
6969027025
fix(android): restore chat text streaming
2026-02-25 09:32:07 +05:30
Peter Steinberger
480cc4b85c
chore: roll to 2026.2.25 unreleased
2026-02-25 03:35:33 +00:00
Peter Steinberger
3c95f89662
refactor(exec): split system.run phases and align ts/swift validator contracts
2026-02-25 00:35:06 +00:00
Peter Steinberger
ce1dbeb986
fix(macos): clean warnings and harden gateway/talk config parsing
2026-02-25 00:27:36 +00:00
Peter Steinberger
16b228e4a6
fix(macos): resolve webchat panel corner clipping ( #22458 )
...
Co-authored-by: apethree <3081182+apethree@users.noreply.github.com>
Co-authored-by: agisilaos <3073709+agisilaos@users.noreply.github.com>
2026-02-25 00:14:56 +00:00
Peter Steinberger
1970a1e9e5
fix(macos): keep Return for IME marked text commit ( #25178 )
...
Co-authored-by: jft0m <9837901+bottotl@users.noreply.github.com>
2026-02-25 00:14:00 +00:00
Peter Steinberger
11a0495d5f
fix(macos): default voice wake forwarding to webchat ( #25440 )
...
Co-authored-by: Peter Machona <7957943+chilu18@users.noreply.github.com>
2026-02-25 00:12:44 +00:00
Peter Steinberger
31e6d18538
fix(macos): prefer openclaw binary while keeping pnpm fallback ( #25512 )
...
Co-authored-by: Peter Machona <7957943+chilu18@users.noreply.github.com>
2026-02-25 00:11:53 +00:00
Peter Steinberger
236b22b6a2
fix(macos): guard voice audio paths with no input device ( #25817 )
...
Co-authored-by: Stefan Förster <103369858+sfo2001@users.noreply.github.com>
2026-02-25 00:10:14 +00:00
Peter Steinberger
55cf92578d
fix(security): harden system.run companion command binding
2026-02-25 00:02:03 +00:00
Peter Steinberger
f4e6f87303
refactor(ios): drop legacy talk payload and keychain fallbacks
2026-02-24 22:39:37 +00:00
Ayaan Zaidi
8892a1cd45
refactor(android-ui): unify gateway config resolution paths
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
7a74cf34ba
fix(android-security): remove token-derived logging from prefs
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
8b24830e07
fix(android-gateway): avoid token clear on transient connect failure
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
e11e329238
refactor(android-chat): move thread selector above composer
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
75f145ebcc
docs(android): document alpha rebuild status and feature checklist
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
baf98a87f6
refactor(android-settings): remove gateway controls duplicated in connect
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
bb27884474
feat(android-tabs): add coming-soon voice and screen tabs
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
94f426b29e
fix(android-nav): hide tab bar while keyboard is open
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
577c554150
style(android-chat): redesign composer controls and actions
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
81ff074a51
style(android-chat): align bubbles and markdown with RN
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
b658000bf7
style(android-chat): refine thread shell and empty states
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
02e3fbef77
style(android): align settings screen with RN visual system
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
cf031d6ad4
chore(android): remove unused legacy ui components
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
439d8e609e
fix(android): use native client id for operator session
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
14f5217e22
fix(android): retry with shared token after device-token failure
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
4b188dcf97
fix(android): persist gateway auth state across onboarding
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
f853622eca
feat(android): switch post-onboarding app to five-tab shell
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
c015382a77
feat(android): add connect tab screen with setup and manual modes
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
757a4dc9fa
docs(android): generalize style guide from onboarding baseline
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
5d88e77420
docs(android): add native UI style guide
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
d6bbe93d4c
feat(android): add settings action to rerun onboarding
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
b9cc2599f1
feat(android): add native four-step onboarding flow
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
3e2e010952
feat(android): add onboarding and gateway auth state plumbing
2026-02-24 22:13:49 +05:30
Ayaan Zaidi
36c352453f
build(android): bump AGP and update gradle defaults
2026-02-24 22:13:49 +05:30
Peter Steinberger
80daaeba38
fix(ios): split watch notify normalization helpers
...
Co-authored-by: Mariano Belinky <mbelinky@gmail.com>
2026-02-24 15:16:11 +00:00
Mariano Belinky
d06d8701fd
iOS: normalize watch quick actions and fix test signing
2026-02-24 15:16:11 +00:00
Nimrod Gutman
d58f71571a
feat(talk): add provider-agnostic config with legacy compatibility
2026-02-24 15:02:52 +00:00
DoncicX
32d7756d8c
iOS: extract device/platform info into DeviceInfoHelper, keep Settings platform string as iOS X.Y.Z
2026-02-24 13:56:43 +00:00
Peter Steinberger
7c99a733a9
fix: harden macOS usage cost submenu recursion guard ( #25341 ) (thanks @yingchunbai)
2026-02-24 13:48:59 +00:00
yingchunbai
96b21f4823
fix(macos): remove self-delegate on cost usage submenu to prevent recursive dropdown
...
The cost usage submenu set `menu.delegate = self` (the MenuSessionsInjector),
which caused `menuWillOpen(_:)` to call `inject(into:)` on the submenu when
it opened. This re-inserted the "Usage cost (30 days)" item into the submenu,
creating an infinite recursive dropdown.
Fix: remove the delegate assignment from the submenu — it does not need
the injector's delegate behavior since it only contains a static chart view.
Closes #25167
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 13:48:59 +00:00
Peter Steinberger
2bad30b4d3
chore(release): bump version to 2026.2.24
2026-02-24 13:42:43 +00:00
Peter Steinberger
19d0ddc679
fix: regenerate protocol swift models for nodeId ( #24991 ) (thanks @stakeswky)
2026-02-24 04:34:49 +00:00
Peter Steinberger
ff4e6ca0d9
fix(ios): gate agent deep links with local confirmation
2026-02-24 02:51:58 +00:00
Ayaan Zaidi
61db3d4a16
fix(protocol): regenerate swift gateway models
2026-02-23 11:52:42 +05:30
Tak Hoffman
9e1a13bf4c
Gateway/UI: data-driven agents tools catalog with provenance (openclaw#24199) thanks @Takhoffman
...
Verified:
- pnpm install --frozen-lockfile
- pnpm build
- gh pr checks 24199 --watch --fail-fast
Co-authored-by: Takhoffman <781889+Takhoffman@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-02-22 23:55:59 -06:00
Peter Steinberger
558a0137bb
chore(release): bump versions to 2026.2.23
2026-02-23 05:13:46 +01:00
Tak Hoffman
f8171ffcdc
Config UI: tag filters and complete schema help/labels coverage ( #23796 )
...
* Config UI: add tag filters and complete schema help/labels
* Config UI: finalize tags/help polish and unblock test suite
* Protocol: regenerate Swift gateway models
2026-02-22 15:17:07 -06:00
Peter Steinberger
e80c803fa8
fix(security): block shell env allowlist bypass in system.run
2026-02-22 12:47:05 +01:00
Yuzuru Suzuki
6f7e5f92c3
fix: add operator.read and operator.write to default CLI scopes ( #22582 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 8569fc88c9
Co-authored-by: YuzuruS <1485195+YuzuruS@users.noreply.github.com>
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Reviewed-by: @obviyus
2026-02-22 16:36:18 +05:30
Peter Steinberger
a96d89f343
refactor: unify exec wrapper resolution and parity fixtures
2026-02-22 10:26:44 +01:00
Peter Steinberger
2b63592be5
fix: harden exec allowlist wrapper resolution
2026-02-22 09:52:02 +01:00
Peter Steinberger
c2c7114ed3
fix(security): block HOME and ZDOTDIR env override injection
2026-02-22 09:42:55 +01:00
Peter Steinberger
8887f41d7d
refactor(gateway)!: remove legacy v1 device-auth handshake
2026-02-22 09:27:03 +01:00
Peter Steinberger
bfe016fa29
fix: clear stale remote discovery endpoints ( #21618 ) (thanks @bmendonca3)
2026-02-22 00:04:36 +01:00
Brian Mendonca
617e38cec0
Security/macos: enforce wss for non-loopback direct gateway
2026-02-21 23:57:34 +01:00
Brian Mendonca
8942ac04a8
fix(security): fail closed on unauthenticated discovery routing
2026-02-21 23:57:34 +01:00
Peter Steinberger
1bc5c2a7e9
refactor: unify exec shell parser parity and gateway websocket test helpers
2026-02-21 23:17:12 +01:00
Peter Steinberger
2028ca4428
fix(macos): unify exec allowlist validation pipeline
2026-02-21 23:09:07 +01:00
Peter Steinberger
dd41fadcaf
fix(macos): enforce path-only exec allowlist patterns
2026-02-21 22:58:40 +01:00
Peter Steinberger
90a378ca3a
fix(macos): block quoted shell substitution in allowlist checks
2026-02-21 22:57:53 +01:00
Peter Steinberger
25e89cc863
fix(security): harden shell env fallback
2026-02-21 20:01:08 +01:00
Nimrod Gutman
d6353cc54b
fix(ios): suppress expected speech cancellation errors
2026-02-21 20:52:05 +02:00
Nimrod Gutman
8a661e30c9
fix(ios): prefetch talk tts segments
2026-02-21 20:52:05 +02:00
Peter Steinberger
e371da38aa
fix(macos): consolidate exec approval evaluation
2026-02-21 19:30:35 +01:00
Peter Steinberger
fa89ae8e9e
fix: stabilize swift protocol generation and flaky tests
2026-02-21 16:53:46 +01:00
Peter Steinberger
5da03e6221
fix(macos): harden exec allowlist shell-chain checks
2026-02-21 16:27:18 +01:00
Onur
8178ea472d
feat: thread-bound subagents on Discord ( #21805 )
...
* docs: thread-bound subagents plan
* docs: add exact thread-bound subagent implementation touchpoints
* Docs: prioritize auto thread-bound subagent flow
* Docs: add ACP harness thread-binding extensions
* Discord: add thread-bound session routing and auto-bind spawn flow
* Subagents: add focus commands and ACP/session binding lifecycle hooks
* Tests: cover thread bindings, focus commands, and ACP unbind hooks
* Docs: add plugin-hook appendix for thread-bound subagents
* Plugins: add subagent lifecycle hook events
* Core: emit subagent lifecycle hooks and decouple Discord bindings
* Discord: handle subagent bind lifecycle via plugin hooks
* Subagents: unify completion finalizer and split registry modules
* Add subagent lifecycle events module
* Hooks: fix subagent ended context key
* Discord: share thread bindings across ESM and Jiti
* Subagents: add persistent sessions_spawn mode for thread-bound sessions
* Subagents: clarify thread intro and persistent completion copy
* test(subagents): stabilize sessions_spawn lifecycle cleanup assertions
* Discord: add thread-bound session TTL with auto-unfocus
* Subagents: fail session spawns when thread bind fails
* Subagents: cover thread session failure cleanup paths
* Session: add thread binding TTL config and /session ttl controls
* Tests: align discord reaction expectations
* Agent: persist sessionFile for keyed subagent sessions
* Discord: normalize imports after conflict resolution
* Sessions: centralize sessionFile resolve/persist helper
* Discord: harden thread-bound subagent session routing
* Rebase: resolve upstream/main conflicts
* Subagents: move thread binding into hooks and split bindings modules
* Docs: add channel-agnostic subagent routing hook plan
* Agents: decouple subagent routing from Discord
* Discord: refactor thread-bound subagent flows
* Subagents: prevent duplicate end hooks and orphaned failed sessions
* Refactor: split subagent command and provider phases
* Subagents: honor hook delivery target overrides
* Discord: add thread binding kill switches and refresh plan doc
* Discord: fix thread bind channel resolution
* Routing: centralize account id normalization
* Discord: clean up thread bindings on startup failures
* Discord: add startup cleanup regression tests
* Docs: add long-term thread-bound subagent architecture
* Docs: split session binding plan and dedupe thread-bound doc
* Subagents: add channel-agnostic session binding routing
* Subagents: stabilize announce completion routing tests
* Subagents: cover multi-bound completion routing
* Subagents: suppress lifecycle hooks on failed thread bind
* tests: fix discord provider mock typing regressions
* docs/protocol: sync slash command aliases and delete param models
* fix: add changelog entry for Discord thread-bound subagents (#21805 ) (thanks @onutc)
---------
Co-authored-by: Shadow <hi@shadowing.dev>
2026-02-21 16:14:55 +01:00
Peter Steinberger
f202e73077
refactor(security): centralize host env policy and harden env ingestion
2026-02-21 13:04:39 +01:00
Peter Steinberger
2cdbadee1f
fix(security): block startup-file env injection across host execution paths
2026-02-21 11:44:20 +01:00
Peter Steinberger
9231d7d30f
chore: bump version to 2026.2.21
2026-02-21 11:02:30 +01:00
Nimrod Gutman
78caf9ec3d
feat(ios): surface gateway talk defaults and refresh icon assets ( #22530 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 54f3a40e22
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com>
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com>
Reviewed-by: @ngutman
2026-02-21 10:34:20 +02:00
Vincent Koc
f4a59eb5d8
Chore: harden A2UI bundle dependency resolution ( #22507 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: d84c5bde51
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Reviewed-by: @obviyus
2026-02-21 13:16:31 +05:30
Vincent Koc
55eab106ac
chore: remove root long and rolldown deps ( #22481 )
...
* chore(deadcode): add deadcode scanning and remove unused lockfile deps
* chore(changelog): mention deadcode CI scan pass
* ci: disable deadcode job temporarily
* docs(changelog): add PR ref and thanks for deadcode scan entry
* ci: comment out deadcode job condition while keeping it disabled
* Deps: remove dead root dependency from package manifest
* Changelog: reference PR for deadcode dependency cleanup
* Deps: remove unused root signal-utils
* Chore: remove unused lit context deps
* Chore: remove unused root lit dependency
* Chore: remove root long and rolldown deps
* Chore: add changelog for root long/rolldown removal
* Chore: fix a2ui bundling after root lit dependency removal
* Chore: simplify a2ui bundle script dependencies
2026-02-21 02:05:41 -05:00
Harold Hunt
844d84a7f5
Issue 17774 - Usage - Local - Show data from midnight to midnight of selected dates for browser time zone (AI assisted) (openclaw#19357) thanks @huntharo
...
Verified:
- pnpm install --frozen-lockfile
- pnpm build
- pnpm check
- pnpm test:macmini (override approved by Tak for this run; local baseline failures outside PR scope)
Co-authored-by: huntharo <5617868+huntharo@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-02-20 20:09:03 -06:00