Pavan Kumar Gondhi
5eb18c1387
fix(ios): keep authenticated Control UI pages bound to the trusted Gateway [AI] ( #119906 )
...
* fix(ios): enforce gateway TLS pins in control pages
* test(ios): run control UI trust regressions in CI
* test(ios): avoid nested Testing macros
* fix(ios): preserve control page navigation
* fix(ios): keep authenticated control pages on origin
* fix(ios): canonicalize control page IPv6 hosts
* chore(ios): refresh native i18n inventory
* fix(ios): normalize default TLS challenge ports
* fix(apps): share gateway TLS authority matching
* test(apps): fix authority CI validation
* chore(ci): drop control UI test routing
2026-08-12 15:18:19 +05:30
Peter Steinberger
d44f70eb4b
feat(pairing): one-paste device pairing via oc-pair setup links ( #120768 )
...
* feat(pairing): one-paste device pairing via oc-pair setup links
Implements milestone 3 from docs/plan/runners.md.
* fix(pairing): sign bootstrap handshake, keep URL candidates, wire pairing countdown
* test(gateway): update client callsite guard
* fix(pairing): preserve setup URL context paths
* fix(ui): keep pairing help aligned with setup mode
* fix(pairing): isolate bootstrap credentials
* perf(ui): keep one-paste pairing within bundle budget
* refactor(pairing): isolate native pair URL prefix parsing
* fix(pairing): preserve candidate lifecycle state
* fix(pairing): retire shared credentials after bootstrap
* fix(pairing): apply rotated manifest through client owner
* test(pairing): prove bootstrap retirement across reconnect
* fix(pairing): preserve native gateway context paths
* fix(pairing): carry native context paths through reconnect
* fix(ios): preserve encoded gateway context path
* chore(plugin-sdk): refresh pairing API baselines
2026-08-12 02:01:33 -07:00
openclaw-mantis[bot]
4bd56a316b
chore(i18n): refresh native locales ( #122355 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-11 20:00:14 -07:00
Peter Steinberger
db9bdb4a11
fix(gateway): preserve session identity through archive transitions ( #121169 )
...
* fix(sessions): fence lifecycle mutations by identity
* fix(sessions): finalize lifecycle identity fences
2026-08-11 16:43:10 -07:00
openclaw-mantis[bot]
6e9e569243
chore(i18n): refresh native locales ( #121939 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-11 09:10:15 -07:00
Pavan Kumar Gondhi
8862cc46b3
fix(ios): harden share relay persistence ( #121900 )
...
* fix(ios): harden share relay persistence
* fix(ios): make relay migration transactional
* fix(ios): make relay migration host-owned
* fix(ios): reject legacy auth in share extension
* fix(ios): reject failed relay credential migration
* style(ios): fix relay settings indentation
2026-08-11 18:46:34 +05:30
Peter Steinberger
a96fba6ff6
test(ios): remove preview source mirrors ( #121960 )
2026-08-11 02:03:07 -07:00
Peter Steinberger
4b46a14a54
feat(apple): show live subagent activity in chat ( #121815 )
...
* feat(apple): show live subagent activity in chat
* chore(apple): refresh native localization inventory
2026-08-10 21:50:13 -07:00
Peter Steinberger
3156b67708
ci(labeler): fix dead rules, cover all plugin dirs, drop vendored artifacts ( #121348 )
...
* ci(labeler): fix dead rules and cover unlabeled plugin dirs
* chore: drop vendored swabble workflow and empty ActivityWidget asset catalog
2026-08-09 22:28:02 -07:00
Peter Steinberger
d4fd9cc96a
fix(ui): restore settings search, media previews, clipboard, and native chat ( #116654 )
...
* fix(ui): restore search media and native text
* fix(native): unify visible chat text projection
* fix(ui): search composed array schemas
* fix(ui): keep config search off startup constraints
* fix(ui): honor schema and media path boundaries
2026-08-09 22:07:28 -07:00
Peter Steinberger
af708e6628
test(ios): trim duplicate root shell mirrors ( #121272 )
2026-08-09 16:53:04 -07:00
joshavant
59e4e31602
docs(ios): cut 2026.8.10 release notes
2026-08-09 17:45:22 -05:00
Peter Steinberger
c70aee247e
refactor(scripts): migrate JavaScript tools to TypeScript ( #121005 )
...
* refactor(scripts): migrate JavaScript tools to TypeScript
* fix(ci): keep changed-scope preflight zero-install
* fix(ci): preserve zero-install script owners
* fix(ci): complete script migration follow-through
* fix(release): keep stable closeout zero-install
* fix(scripts): preserve standalone execution boundaries
* fix(scripts): repair standalone loader boundaries
* fix(scripts): normalize gateway observation ids
* fix(scripts): keep Docker packager standalone
* test(scripts): preserve rebase cleanup helpers
* test(sessions): use tracked temp directory
2026-08-09 07:21:35 -07:00
Peter Steinberger
0dbce297fd
test(ios): isolate TLS pin clearing ( #113067 )
2026-08-09 06:34:10 -07:00
Colin Johnson
5cd184c91b
fix(ios): keyboard unavailable after tapping chat composer ( #120723 )
...
* fix(ios): restore composer keyboard focus
* test(ios): cover composer focus in screenshot CI
Co-authored-by: Colin <colin@solvely.net >
* test(ios): make composer focus proof device-aware
Co-authored-by: Colin <colin@solvely.net >
* fix(ios): stabilize sidebar layout under keyboard
Co-authored-by: Colin <colin@solvely.net >
* chore(ios): refresh native i18n inventory
Co-authored-by: Colin <colin@solvely.net >
* test(ios): keep focus proof in screenshot helper
Co-authored-by: Colin <colin@solvely.net >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-08 21:56:46 -07:00
joshavant
480e0c0060
docs(ios): cut 2026.7.23 release notes
2026-08-07 19:22:57 -05:00
openclaw-mantis[bot]
a8f314d587
chore(i18n): refresh native locales ( #120352 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-08 07:42:35 +08:00
joshavant
ac2994a0e2
fix(ios): keep permission actions readable
2026-08-07 15:27:58 -05:00
joshavant
0bcbaf2eda
fix(ios): remove permission pre-prompts
2026-08-07 15:27:58 -05:00
Peter Steinberger
f96fc529c3
test(ios): consolidate talk config fixtures ( #118533 )
2026-08-02 23:42:06 -07:00
Vincent Koc
a842f482d5
fix(ios): keep attachments in composer when route is unavailable ( #116787 )
...
* fix(ios): retain attachments when delivery route is unavailable
Refs #116724
* chore(i18n): refresh native source inventory
2026-08-03 12:53:48 +08:00
Peter Steinberger
43d9ba493d
refactor(ios): remove redundant node test seams ( #118387 )
...
* refactor(ios): remove redundant node test seams
* fix(ios): keep approval route context private
* fix(ios): preserve routing task assertion
* fix(ios): retain private talk permission test seam
* fix(ios): retain operator options boundary
2026-08-02 21:44:45 -07:00
clawsweeper[bot]
fa0e298d84
fix(ios): route forced realtime consults through Gateway relay ( #117485 )
...
* fix(ios): route forced realtime consults through Gateway relay
* fix(ios): route forced realtime consults through Gateway relay
* fix(ios): route forced realtime consults through Gateway relay
* fix(ios): route forced realtime consults through Gateway relay
* style(ios): drop redundant Self in requiresForcedAgentConsultRelay
* style(ios): use explicit self for firstString per swiftformat
---------
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-02 18:06:19 -07:00
PollyBot13
d9669ce72c
fix(ios): finish Calendar and Reminders grants without relaunch ( #116504 )
2026-08-02 18:01:41 -07:00
Peter Steinberger
079d26c92c
test(ios): consolidate gateway connection fixtures ( #118072 )
2026-08-02 11:10:17 -07:00
Peter Steinberger
a3bdc53a71
test(ios): deduplicate node invoke fixtures ( #117670 )
2026-08-01 16:07:19 -07:00
Peter Steinberger
9e43844264
build: generate native Canvas resources on demand ( #117424 )
2026-08-01 08:16:56 -07:00
Vincent Koc
7cc2e6d830
fix(ci): repair full release validation regressions ( #117447 )
...
* fix(worktrees): reject repositories without commits
* test(memory-wiki): allow agent isolation runtime
* test(ios): await queued approval retry
2026-08-01 14:55:13 +00:00
metaforismo
102a5915ef
fix(ios): restore Magic Keyboard return in chat composer ( #116042 )
...
* fix(ios): restore hardware return in chat composer
* test(ios): cover hardware return composer flow
* fix(ios): route history keys through native editor
* fix(ios): satisfy composer lint gates
* test(ios): fix snapshot app lookup
* test(ios): keep snapshot helper nonthrowing
---------
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com >
2026-07-31 16:21:41 -07:00
Vincent Koc
20e68e01df
fix(gateway): sign device proofs with challenge time ( #116679 )
2026-07-31 16:45:53 +08:00
Vincent Koc
e460fcfb60
test(ios): remove duplicate deep-link coverage ( #116657 )
2026-07-31 12:16:40 +08:00
Vincent Koc
8a12343efe
fix(ios): stabilize Apple UI validation across runtimes ( #116487 )
...
* test(ios): align source guards with current contracts
* test(ios): stabilize cross-version UI automation
* test(ios): harden typography boundary audit
* test(ios): synchronize deterministic UI launches
2026-07-31 01:30:46 +08:00
Peter Steinberger
d962a3d9c1
fix(ios): avoid duplicate URLs in shared drafts ( #116430 )
...
* fix(ios): deduplicate shared URLs
* test(ios): prove share provider extraction
2026-07-30 09:09:35 -07:00
Vincent Koc
3cf98a8708
test(ios): cover auth cleanup during gateway forget ( #116425 )
2026-07-30 15:46:59 +00:00
joshavant
28f73d93c1
fix(ios): isolate capability router handlers
2026-07-30 03:04:42 -05:00
joshavant
e6f7a400e2
docs(ios): cut 2026.7.22 release notes
2026-07-30 03:04:42 -05:00
openclaw-mantis[bot]
81d165c612
chore(i18n): refresh native locales ( #116213 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-30 15:17:38 +08:00
Peter Steinberger
0021e51f22
feat(apple): media renditions, Now Playing, video upload ( #116051 )
...
* feat(apple): complete media playback and uploads
* fix(apple): preserve movie picker metadata
* fix(apple): harden rendition and picker routing
* style(apple): fix macOS media formatting
2026-07-29 15:50:18 -04:00
Peter Steinberger
afae681085
feat(apple): add inline media players ( #115903 )
2026-07-29 10:36:38 -04:00
Peter Steinberger
85afb973e4
fix(ios): keep stop available for staged voice notes ( #115744 )
2026-07-29 04:31:07 -04:00
Peter Steinberger
844329284e
fix(ios): prevent duplicate native chat replies after tool runs ( #115678 )
2026-07-29 02:59:25 -04:00
Vincent Koc
5ecd5f45db
chore(i18n): refresh native locales ( #115608 )
2026-07-29 13:59:04 +08:00
Peter Steinberger
26bfa88bb2
fix: restore native Talk transcripts, fallback, and microphone access ( #115577 )
...
* fix(ios): decode frameless Talk events
* fix(android): keep browser-only Talk models native
* fix(macos): gate dashboard media capture
* docs(talk): clarify native platform fallbacks
* chore(i18n): refresh native source inventory
* fix(android): gate relay entry on provider-level browser-only models too
2026-07-29 01:55:47 -04:00
Vincent Koc
c0a472f0b2
chore(i18n): refresh native locales ( #115532 )
2026-07-29 13:11:40 +08:00
Peter Steinberger
7f58f693b9
fix(ios): request motion access on first use ( #115523 )
2026-07-28 23:56:04 -04:00
yuvraj thakur
efec26b2df
fix(ios): Apple Watch chat inherits thinking defaults ( #111301 )
...
* fix(thinking): fall back instead of erroring on unsupported adaptive level (#109351 )
The adaptive level is the auto sentinel (normalizeThinkLevel maps auto ->
adaptive) meaning 'pick an appropriate level', not 'force this exact level'.
Some clients (e.g. the Apple Watch client) send it as a transport default
while the iOS app sends none, so hard-erroring on an unsupported adaptive
override rejected otherwise-valid turns from those clients. Now the auto
sentinel always falls back to a supported level; explicit concrete levels
(e.g. an explicit /think xhigh) still hard-error as before.
Closes #109351
* docs(proof): add real-behavior-proof screenshot + run log for #111301
Captured run of the real get-reply-run.media-only test (101 passed)
showing the adaptive-thinking fallback fix verified.
Co-Authored-By: yuvrajlaptop2008-byte <284412773+yuvrajlaptop2008-byte@users.noreply.github.com >
* fix(ios): inherit Watch chat thinking defaults
Co-authored-by: yuvraj thakur <284412773+yuvrajlaptop2008-byte@users.noreply.github.com >
* chore(ios): sync native i18n inventory
---------
Co-authored-by: yuvrajlaptop2008-byte <284412773+yuvrajlaptop2008-byte@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-28 23:24:22 -04:00
metaforismo
430de2299c
fix(ios): use configured speech language for system voice ( #113372 )
...
* fix(ios): honor speech locale for system voice
* chore(ios): refresh talk locale i18n inventory
* fix(ios): fall through unavailable system voices
* chore(ios): refresh talk locale i18n inventory
---------
Co-authored-by: Colin Johnson <colin@solvely.net >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-28 14:10:23 -04:00
Vincent Koc
289c8ff992
fix(apple): localize gateway discovery status
2026-07-28 23:48:57 +08:00
Cihat Gündüz
c3fba2bb20
fix(ios): forgetting a paired gateway does nothing ( #114083 )
...
* fix(ios): forgetting a paired gateway does nothing
Confirming "Forget Gateway" in Settings never removed the gateway. The
confirmation dialog derived its isPresented binding from the payload it
later needed and cleared that payload on dismissal, so by the time the
destructive button's action ran, forgetPendingGateway() found nil at its
opening guard and returned without calling forgetGateway(stableID:).
Nothing was logged either, because the failure branch was never reached.
Hand the entry to the action through the dialog's presenting: parameter
instead of reading it back from view state, and take it as a parameter
rather than looking it up. Everything downstream is unchanged; it simply
runs now.
* Shorten the dialog comment to one line
The three-line version repeated in prose what the next line already shows.
What is worth keeping is the trap: someone simplifying this back to reading
the entry from view state reintroduces the bug.
* fix(ios): harden forget gateway payload handoff
Co-authored-by: Cihat Gündüz <anthropic@fline.dev >
* test(ios): run gateway settings source guards
* test(ios): allow forget dialog state cleanup
* test(ci): provide rg in PR review fixture
---------
Co-authored-by: Cihat Gündüz <anthropic@fline.dev >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-28 09:59:23 -04:00
Peter Steinberger
4b05d83035
fix: generated images do not appear in native chat ( #115042 )
...
* fix(chat): render managed images in native clients
Co-authored-by: Francesco Giannicola <francescogiannicola1@gmail.com >
* chore: keep release changelog owned
* refactor(macos): split managed image loading
* test(apple): prove managed image header policy
* test(native): stabilize managed image proof
* test(apple): satisfy strict concurrency checks
---------
Co-authored-by: Francesco Giannicola <francescogiannicola1@gmail.com >
2026-07-28 04:39:53 -04:00