Commit Graph

67697 Commits

Author SHA1 Message Date
Peter Steinberger
5e45ebe82b feat(ios): add private HealthKit summaries (#105616)
* feat(ios): add private HealthKit summaries

* fix(ios): satisfy Health settings lint

* chore(ios): sync Health localization artifacts

* chore(ios): refresh generated localization and docs

* fix(ios): reject partial Health history

* chore(ios): sync Health string catalogs

* fix(ios): bridge Health authorization dates

* fix(ios): scope Health summaries to today
2026-07-12 12:52:38 -07:00
Peter Steinberger
29a7654b29 feat(ui): search session transcripts (#105635)
* feat(ui): add session transcript search

* chore(ui): keep release notes in pull request

* chore(ui): sync session search locales

* fix(ui): localize session transcript search

* chore(ui): refresh merged locale metadata
2026-07-12 12:49:06 -07:00
Vincent Koc
6f3caf2020 refactor(sessions): trim SQLite internals (#105639) 2026-07-12 21:43:52 +02:00
qingminlong
056e89d887 fix(clawhub): ignore malformed retry-after headers (#105479)
* fix(clawhub): ignore malformed retry-after headers

* fix(clawhub): keep retry helper source-resolved

* docs(changelog): note ClawHub retry fix

Co-authored-by: qingminlong <0668001063@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 12:42:33 -07:00
Peter Steinberger
5ab07fde4a fix(openai): preserve authored openai-completions through provider normalization (#105539) 2026-07-12 12:37:33 -07:00
Peter Steinberger
a1c4ef189b fix(ui): explain grayed-out rows in the new-session folder picker (#105605)
* fix(ui): explain grayed-out rows in the new-session folder picker

Disabled device rows now carry a reason tooltip (device offline vs. no
folder-browsing support), the admin-gated folder trigger says it needs an
admin connection, and dimmed dot-directories are labeled as hidden folders.

* chore(i18n): sync locale bundles for new-session picker tooltips
2026-07-12 12:32:05 -07:00
Peter Steinberger
6556d1d173 refactor(config): declarative doctor alias-migration DSL with inheritance-aware account seeding (#105636)
* fix(config): seed inherited root streaming into doctor-materialized account streaming objects

* feat(plugin-sdk): add defineChannelAliasMigration doctor alias-migration DSL

* refactor(plugins): migrate channel doctor contracts onto the alias-migration DSL

* refactor(config): drop the prod-unused offMode legacy notice option

* fix(config): make account streaming seeding opt-in for wholesale-replace channels

* test(imessage): keep account streaming account-local for deep-merge runtime
2026-07-12 12:28:42 -07:00
Eden
5fd7b5c40a fix(line): skip confirm/buttons templates with blank required fields (#105520)
* fix(line): skip confirm/buttons templates with blank required fields

* test(line): cover surrounding-text preservation when skipping blank directives

* fix(line): omit optional blank button titles

Co-authored-by: 許元豪 <146086744+edenfunf@users.noreply.github.com>

* fix(line): reject blank button action labels

Co-authored-by: 許元豪 <146086744+edenfunf@users.noreply.github.com>

* docs(changelog): note LINE template fix

Co-authored-by: 許元豪 <146086744+edenfunf@users.noreply.github.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 12:25:52 -07:00
qingminlong
2db82eb243 fix(sessions): derive list channels from agent keys (#104274)
* fix(sessions): derive list channels from agent keys

* refactor(sessions): reuse canonical channel parser

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 12:24:06 -07:00
Peter Steinberger
bf44810139 refactor(deadcode): privatize banner and menu internals (#105628) 2026-07-12 12:22:32 -07:00
WhatsSkiLL
5d61d97a33 fix(android): autofocus command palette search (#105471)
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
2026-07-12 15:20:14 -04:00
zw-xysk
71accce06a fix(slack): keep dm metadata reads read-only (#103468)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: zw-xysk <zw-xysk@users.noreply.github.com>
2026-07-12 12:18:50 -07:00
qingminlong
8a595dafe4 fix(matrix): preserve UTF-8 bootstrap output tails (#105475)
* fix(matrix): preserve UTF-8 in bootstrap output tails

* fix(matrix): satisfy deps output tail types

* docs(changelog): note Matrix UTF-8 tail fix

Co-authored-by: qingminlong <0668001063@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 12:12:55 -07:00
destire-mio
ca90a59370 fix(retry): avoid status code substring matches (#105258)
* fix(retry): avoid status code substring matches

* fix(retry): parse leading HTTP statuses

* style(retry): format status classifier

* test(retry): cover session retry behavior

* test(retry): emit error stream events

* fix(retry): share rate-limit window classification

Co-authored-by: destire-mio <248462155+destire-mio@users.noreply.github.com>

* docs(changelog): note session retry fix

Co-authored-by: destire-mio <248462155+destire-mio@users.noreply.github.com>

* refactor(retry): keep window type internal

Co-authored-by: destire-mio <248462155+destire-mio@users.noreply.github.com>

---------

Co-authored-by: destire-mio <248462155+destire-mio@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 12:12:32 -07:00
pick-cat
840f349d5d fix(terminal): keep C1 CSI and BEL-terminated OSC-8 links intact when wrapping table cells (#103717)
* fix(terminal): keep C1 CSI and BEL-terminated OSC-8 links intact when wrapping table cells

* fix(terminal): close and reopen OSC-8 links at table wrap boundaries

* fix(terminal): carry leading OSC-8 state through table wrap state machine

A cell shaped like `${link} after` left the OSC-8 opener in `prefixAnsi`
(prepended to every wrapped line) while its closer sat inside `coreTokens`.
Continuation lines got an opener with no matching closer, reopening the
hyperlink onto trailing plain text and padding and bleeding link state past
the cell border.

Exclude OSC-8 tokens from `prefixAnsi`/`suffixAnsi` (SGR-only, unchanged)
and seed leading openers / trailing closers into `coreTokens` so the
`flushAt` close/reopen logic owns hyperlink state end to end. Adds a
`${link} after` regression across BEL, ESC-backslash, and C1-ST terminators.

Addresses the ClawSweeper P2 finding on #103717: carry leading OSC-8 state
into wrapped lines.

* chore: trigger CI re-run

* chore: trigger CI re-run

* fix(terminal): preserve ANSI state across table wraps

Co-authored-by: Pick-cat <huang.ting3@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 12:10:35 -07:00
Vincent Koc
e45f2f6ca6 refactor(agents): trim private export surface (#105631) 2026-07-12 21:08:56 +02:00
Peter Steinberger
31b9f21a1a fix(ui): lock worktree create draft during save (#105626) 2026-07-12 12:07:54 -07:00
Peter Steinberger
67d7bf1037 ci(release): deduplicate Telegram routing proofs (#105613) 2026-07-12 21:07:24 +02:00
Peter Steinberger
74e42892b6 fix: delay narrated channel progress and remove default title (#105607)
* fix(channels): delay narrated progress drafts

* chore: keep release changelog unchanged
2026-07-12 12:06:38 -07:00
Peter Steinberger
d37d63c6ff fix: usage page fails while session cache refreshes (#105611)
* fix(gateway): preserve pending usage summaries

* chore: keep release notes in PR
2026-07-12 12:06:29 -07:00
Peter Steinberger
c909a7e75d ci(deadcode): baseline claw-banner and menu-surface exports left unbaselined by racing landings (#105627) 2026-07-12 12:04:43 -07:00
Peter Steinberger
23251474df ci(deadcode): refresh unused-export baseline for banner and menu-surface exports (#105615) 2026-07-12 11:58:19 -07:00
Peter Steinberger
2821abc1f5 feat(android): polish skill management (#105592)
* feat(android): polish skill management

* chore(android): sync skill localization
2026-07-12 11:46:59 -07:00
Vincent Koc
3e68035de1 refactor(plugins): trim dead export surface (#105612) 2026-07-12 20:46:43 +02:00
Peter Steinberger
36e81bf45e fix(ui): queued steers appear only above composer (#105603)
* fix(ui): keep queued steers out of transcript

* chore: leave release notes to release flow
2026-07-12 11:42:08 -07:00
Peter Steinberger
0b0ca42135 fix(ui): sidebar sort, group, and customize menus render behind the resize divider (#105598)
The nav column is a stacking context (z-index 10) painted below the sidebar
resizer divider (z-index 20), so fixed-position menus rendered inside the nav
could never escape it. Promote the three inline app-sidebar menus into the
popover top layer through a shared openclaw-menu-surface host, and fold the
existing session-menu and native-link-menu promotion copies into the same
promoteToPopoverTopLayer helper.
2026-07-12 11:41:12 -07:00
Peter Steinberger
24a4f0bbbf feat(cli): animate the claw banner and show it on gateway startup (#105540)
* feat(cli): animate the claw banner and show it on foreground gateway startup

* fix(cli): restore the terminal when the banner animation is interrupted
2026-07-12 11:39:10 -07:00
Vincent Koc
c0f0107a5c refactor(infra): trim internal helper surface (#105606) 2026-07-12 20:37:50 +02:00
Peter Steinberger
5bb35b47da improve(ui): make the working claw punch instead of fade while the agent works (#105597)
While the agent works with nothing streaming, the web chat's reading
indicator now skips the assistant avatar and drops the opacity fade.
The claw shadowboxes - jab, jab, cross - with the jaw snapping shut on
impacts, a pow star on the cross, and a seeded per-run fighting style
(orthodox, mirrored southpaw, fast flurry, rare haymaker). Reduced
motion disables all of it; direct threads and narrow layouts that hide
avatars keep their flat left edge.
2026-07-12 11:37:27 -07:00
Peter Steinberger
a425807c31 ci(deadcode): replace broken export report lanes with enforced knip exports ratchet (#105595)
* chore(deadcode): add generated knip unused-export baseline

* ci(deadcode): replace broken export report lanes with enforced knip exports ratchet

* chore(deadcode): regenerate unused-export baseline on current main

* chore(deadcode): regenerate unused-export baseline on current main
2026-07-12 11:36:42 -07:00
Peter Steinberger
17a464b7ee fix(ui): lock workboard draft during save (#105600) 2026-07-12 11:36:33 -07:00
Alix-007
41a1fd696b fix(realtime): add timeout to WebRTC offer requests (#104662)
* fix(realtime): add timeout to WebRTC offer requests

* test(realtime): reject offer aborts with errors

* fix(ui): abort pending realtime offer on stop

* test(ui): normalize realtime abort rejection

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 11:34:37 -07:00
Vincent Koc
26c4187297 refactor(process): trim internal type surface (#105599) 2026-07-12 20:28:13 +02:00
Peter Steinberger
e0aba31727 fix(ci): allow SQLite schema contract inspection (#105591) 2026-07-12 11:26:12 -07:00
Peter Steinberger
f60d052846 chore(i18n): sync native inventory line coordinates
apps dead-code removal (ec62328eb8) shifted ChatViewModel.swift string
coordinates without refreshing apps/.i18n/native-source.json, failing the
native-i18n CI shard on every PR. Inventory-only sync via pnpm native:i18n:sync.
2026-07-12 11:24:42 -07:00
Vincent Koc
f230e8a11e refactor(gateway): privatize module helpers (#105596) 2026-07-12 20:21:31 +02:00
Peter Steinberger
bbf79b1934 fix(sessions): sessions_search slows as transcript history grows (#105585)
* chore(plugin-sdk): refresh API baseline

* perf(sessions): avoid full transcript scans during search
2026-07-12 19:13:40 +01:00
Vincent Koc
da71b48e5a refactor(auto-reply): privatize module internals (#105589) 2026-07-12 20:13:19 +02:00
Vincent Koc
7a06f662bd refactor(auth): privatize disabled CLI discovery helper (#105587) 2026-07-12 20:07:40 +02:00
Vincent Koc
f11b17d937 fix(sqlite): validate maintenance schema completeness (#105583) 2026-07-12 20:06:57 +02:00
Peter Steinberger
5b7b2d0fe0 feat(ui): collapse completed turn work behind a "Worked for X" rollup (#105012)
* feat(ui): collapse completed turn work behind a worked-for rollup

* test(ui): add a completed work turn to the mock chat history

* fix(ui): keep search matches visible instead of folding them into the work rollup

* fix(ui): keep attachment-only final replies outside the work rollup

* chore(ui): translate workRun locale keys and cover renderWorkGroupSummary mock

* fix(ui): satisfy strict index access in the work rollup pass
2026-07-12 19:01:45 +01:00
Vincent Koc
02f88c209c refactor(agents): remove redundant zero usage helper (#105577) 2026-07-12 19:57:51 +02:00
Peter Steinberger
1634d849c7 fix(ci): allow empty success diagnostics (#105569)
* fix(ci): allow empty success diagnostics

* docs(agents): guard non-main PR landing
2026-07-12 18:57:42 +01:00
Peter Steinberger
619a68e97e fix(qa): repair agentic runtime parity mocks (#105500)
* fix(qa): repair agentic runtime parity mocks

* fix(qa): scope terminal media parity evidence

* fix(qa): require one image call for media fallback

* fix(qa): bind terminal media proof to image step

* fix(qa): require image capture agreement

* fix(qa): allow skipped parity steps
2026-07-12 19:53:05 +02:00
Vincent Koc
19c85de227 refactor(agents): remove stale embedded runner exports (#105572) 2026-07-12 19:51:04 +02:00
Peter Steinberger
d3fdd214c2 fix(ui): prevent configuration edits from disappearing during operations (#105555)
* fix(ui): lock configuration during operations

* chore: defer release note to release workflow
2026-07-12 18:50:19 +01:00
dwc1997
2ebf0422db fix(discord): keep realtime partial transcript tail UTF-16 safe (#104896)
* fix(discord): keep realtime partial transcript tail UTF-16 safe

* refactor(discord): isolate realtime transcript merging

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 18:47:05 +01:00
Peter Steinberger
7ea0af14f4 test(tui): stabilize and speed PTY lifecycle tests (#105566) 2026-07-12 18:46:23 +01:00
Vincent Koc
db0924e44c refactor(agents): remove unused live model provider helper (#105570) 2026-07-12 19:46:00 +02:00
Vincent Koc
e8f8738aae refactor(agents): localize code mode internals (#105563) 2026-07-12 19:36:10 +02:00