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