Commit Graph

65673 Commits

Author SHA1 Message Date
Peter Steinberger
d8624a4e1b fix: fail release performance when reports do not publish (#103126)
* fix(ci): harden performance report publishing

* ci: use scoped app token for reports

* ci: pin Kova readiness probe fix

* ci: pin latest Kova readiness checks

* ci: pin Kova startup sequencing fix

* ci: pin calibrated Kova release policy
2026-07-10 01:27:26 +01:00
Peter Steinberger
e26a850fbd feat(webchat): lobster pet charm bundle - names, celebrations, poke moods, night owl (#103149)
Every pet gets a seeded name shown via native hover tooltip (rare
palettes carry signature names: Goldie, Boo, Picasso, Patches, Lantern,
Blueberry, OG). A busy->idle mode flip now earns a cheer act (double hop
with a mid-air twirl, claws up) instead of a startle, so the lobster
celebrates finished runs. Three fast pokes make it grumpy for a minute
(angry brows + frown overlay); ten pokes send it off in a huff until a
later scheduled visit (offline pets are on duty and never huff).
Visits between 22:00 and 06:00 local always act sleepy regardless of
personality.
2026-07-10 01:15:20 +01:00
Peter Steinberger
8b300e57f0 fix(browser): keep remote CDP credentials out of responses (#103139)
* fix(browser): contain remote CDP credentials

* fix(browser): probe authenticated discovery before attach

* chore: keep release note in PR metadata
2026-07-10 01:12:51 +01:00
ZOOWH
e327a3dca1 fix(telegram): deliver content instead of throwing when tag overhead fills chunk (#102999)
* fix(telegram): deliver content instead of throwing when tag overhead fills chunk

When HTML tag overhead (open + close tags) exceeds the chunk limit,
appendText threw an error causing complete message delivery failure.
Instead, force the text into the chunk so the message is still delivered
even if the chunk slightly exceeds the limit.

Closes #102910

* fix(telegram): strip rich formatting when tag overhead fills chunk

When HTML tag overhead fills an empty chunk with no room for text, strip
rich formatting and retry as plain text instead of delivering an oversized
chunk or throwing. Orphan close tags from the stripped formatting are
skipped to keep the output well-formed and within the chunk limit.

This preserves the existing plain-text fallback paths in send.ts and
rich-message.ts.

Closes #102910

* fix(telegram): preserve delivery when HTML tag overhead overflows

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-10 01:05:51 +01:00
maweibin
8dd45e864e fix(ui): preserve sidebar sessions through reconnect (#102424)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-10 01:02:10 +01:00
SunnyShu
9526224f42 fix(gateway): guard thinkingLevel re-validation against only relevant patch fields (#102866)
* fix(gateway): guard thinkingLevel re-validation against only relevant patch fields

The second thinkingLevel validation block used `if (next.thinkingLevel)`,
which enters on ANY patch when the session already has a thinkingLevel
inherited from the existing entry. This caused unnecessary model catalog
loading and could silently delete or modify the existing value.

Fix: change guard to also check that the patch explicitly touches
thinkingLevel or changes the model (which may alter the effective
provider/model that thinkingLevel is validated against).

Ref: BUG-002 (local finding)
Co-Authored-By: Claude <claude@anthropic.com>

* test(gateway): prove session patch catalog isolation

---------

Co-authored-by: Claude <claude@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-10 01:01:33 +01:00
Peter Steinberger
6fd9cc92b7 fix(meta): live validation targets deployed Muse Spark 1.1 (#103163)
* fix(meta): target Muse Spark 1.1 in live checks

* chore: follow release-owned changelog policy
2026-07-10 01:00:31 +01:00
Ayaan Zaidi
f351288a0d chore(repo): remove stale repository artifacts (#103152)
* docs: remove merged cron design document
* chore(repo): remove stale planning and proof artifacts

---------

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-07-10 05:28:12 +05:30
Peter Steinberger
dc3d06c5d6 fix(ci): calibrate hosted startup memory 2026-07-09 19:54:42 -04:00
Peter Steinberger
53378459cd fix: release startup migration lease before exit (#103157) 2026-07-10 00:53:10 +01:00
NianJiu
7e20018b69 fix: count multi-failure tool summaries accurately (#102981)
* fix: count tool summary failures

* fix(agents): preserve per-call tool failures

Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com>

---------

Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-10 00:53:06 +01:00
Vincent Koc
eaee8b7e74 chore(codex): update managed app-server to 0.144.1 (#103156) 2026-07-09 16:52:33 -07:00
llagy007
823c153577 fix(browser): reject ambiguous tab references (#103119)
* fix(browser): reject ambiguous tab references

Co-authored-by: llagy007 <0668001470@xydigit.com>

* fix(browser): close tracked tabs by raw target id

* fix(browser): harden raw tab cleanup routing

* test(browser): type raw close request mock

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-10 00:51:18 +01:00
Dallin Romney
ff0a3f2d0b docs(skills): add backporting to release maintainer (#99266)
* docs(skills): add stable backport workflow

* docs(skills): prepare complete stable patch sets

* docs(skills): align backports with extended stable

* docs(skills): fold backports into release maintainer

* docs(release): clarify plugin selector repair
2026-07-09 16:50:22 -07:00
ANIRUDDHA ADAK
991262e2e7 fix(utils): fetchWithTimeout ignores caller-provided AbortSignal in RequestInit (#102951)
* fix(utils): fetchWithTimeout ignores caller-provided AbortSignal in RequestInit

* fix(fetch): preserve caller abort through response body

* test(fetch): satisfy abort rejection lint

* test(mattermost): satisfy promise executor lint

---------

Co-authored-by: Aniruddha Adak <aniruddhaadak80@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-10 00:39:18 +01:00
lin-hongkuan
3f16718b0c fix: keep heredoc bodies out of shell stage splits (#102889)
* fix: keep heredoc bodies out of shell stage splits

* chore: refresh PR #102889 checks

* fix: handle multiple same-line heredocs

* fix: keep heredoc bodies with declaring stages

* test: cover escaped heredoc delimiters

* style: format escaped heredoc regression

* fix: distinguish here-strings from heredocs

* fix: ignore non-heredoc shell syntax

---------

Co-authored-by: lin-hongkuan <lin-hongkuan@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-10 00:35:58 +01:00
Peter Steinberger
88908d5ce6 perf(test): trim secrets and media setup 2026-07-09 19:32:12 -04:00
Vincent Koc
db71e497be fix(ci): restore live OpenAI performance evidence (#103151) 2026-07-09 16:29:22 -07:00
NianJiu
04c090fb50 fix(ios): return promptly from noncooperative timeouts (#103066)
* fix(ios): return promptly from noncooperative timeouts

* fix(apple): harden async timeout cancellation

Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com>

* fix(apple): preserve legacy location requests

* style(apple): format location continuation code

---------

Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-10 00:29:03 +01:00
tzy-17
3dd5c1880f fix(discord): honor forum archive defaults (#103033)
Carry typed forum/media parent metadata through the message-send path so implicit thread creation uses the configured default archive duration.

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-10 00:23:34 +01:00
llagy007
910886814d fix(browser): filter non-page CDP targets (#103115)
* fix(browser): filter non-page CDP targets

* fix(browser): require page CDP targets

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-10 00:18:04 +01:00
Yuval Dinodia
beda4218af fix(secrets): reject prototype-polluting mutation paths (#102840)
* fix(secrets): reject prototype-polluting mutation paths

Co-authored-by: yetval <yetvald@gmail.com>

* docs(secrets): document blocked mutation segments

* chore(secrets): keep release notes in PR metadata

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-10 00:17:31 +01:00
wm0018
50cb0d66b8 fix(ai): replace raw require(node:fs) with loadNodeBuiltinModule in getProcEnv (#102947)
* fix(ai): replace raw require(node:fs) with loadNodeBuiltinModule in getProcEnv

* test(ai): cover browser-safe env key bundle

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-10 00:14:58 +01:00
Peter Steinberger
fe2486247b feat(ui): add settings sidebar search (#103138)
* feat(ui): add settings sidebar search

* chore: keep release notes in PR body

* fix(i18n): translate settings search labels
2026-07-10 00:08:13 +01:00
Peter Steinberger
c6d7088035 refactor(android): align talk levels and thinking state with iOS/macOS (#103130)
* refactor(android): align talk levels and thinking state with iOS/macOS

TalkAudioLevel.kt ports OpenClawKit's level scale exactly: PCM16 RMS
through the shared 50 dB window replaces mean-abs (mic/talk/playback)
and linear peak (voice notes), so Android waveforms read identically to
iOS/macOS at the same loudness. The waveform's Thinking phase now comes
from a typed awaitingAgent StateFlow set alongside every status change
in TalkModeManager instead of the UI matching status string literals;
forgetting the flag at a new status site fails safe to Listening/Idle.

* fix(android): keep awaiting-agent flag intact on no-op status republishes

* chore(i18n): resync native inventory
2026-07-09 23:59:12 +01:00
Peter Steinberger
e7a6ed8eb6 chore(pairing): retire vestigial node token plumbing and flatten cleanup claims (#103140) 2026-07-09 23:48:01 +01:00
Peter Steinberger
5a93880d7d improve(webchat): compact the model picker reasoning and speed rows (#103127)
Reasoning header drops the '(Default is Off)' reset text and the verbose
'Default (Off)' value: inherited defaults render as a muted level word with
no reset, overrides render strong with an icon-only reset. The Faster/
Smarter scale row is removed along with its i18n keys, and the menu gets
tighter dimensions (392px wide, shorter model rows). Screen readers keep the
verbose default phrasing via aria-valuetext.
2026-07-09 23:46:37 +01:00
Peter Steinberger
d185f9a0b4 fix(infra): preserve characters in truncated response snippets (#103136)
* fix(infra): preserve bounded response text characters

Co-authored-by: qingminlong <34085845+qingminglong@users.noreply.github.com>

* ci(plugin-sdk): refresh API baseline

---------

Co-authored-by: qingminlong <34085845+qingminglong@users.noreply.github.com>
2026-07-09 23:43:26 +01:00
Peter Steinberger
af3a76f320 fix(ui): refresh session windows after events (#103134)
* fix(ui): refresh session windows after events

* chore: defer session fix release note
2026-07-09 23:43:07 +01:00
qingminlong
e251bc4c2f fix(agent-core): keep file info basename on Windows paths (#102813)
* fix(agent-core): keep file info basename on Windows paths

* fix(agent-core): use platform path basenames

* chore: sync PR branch before changelog

* docs(changelog): credit Windows file metadata fix

* fix(agent-core): use platform path basenames

* test(agent-core): isolate Windows shell discovery

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Peter Steinberger <peter@steipete.me>
2026-07-09 23:33:28 +01:00
Peter Steinberger
7c38c78f43 feat(webchat): lobster pet visits instead of living in the corner (#103111)
The sidebar pet becomes a seeded guest: ~25% of loads never get a
visit, the rest see arrivals after 15s-3min, stays of 1.5-5min, and
returns after 6-18min, all from a dedicated seeded RNG stream. Each
arrival re-rolls its perch: the classic ledge above the footer divider
or standing inside the footer bar next to the gateway status dot
(size-clamped). Gateway disconnects always summon the pet - even shy
ones - until the connection returns. Right-click shoos it away for the
rest of the page load and also beats offline summons. A new 'Lobster
visits' toggle in Settings -> Appearance (client-side UiSettings pref,
only opt-out persists, live via the theme.refresh republish channel)
disables visits entirely. New quickSettings.appearance i18n strings
synced across locale bundles.
2026-07-09 23:29:28 +01:00
Peter Steinberger
a1ce77d2a9 fix(cli): reduce plugin listing startup memory (#103132) 2026-07-09 23:28:11 +01:00
Peter Steinberger
ecad886cd1 feat(ui): redesign cron/tasks summary cards and give both nav routes distinct icons (#103122)
* feat(ui): redesign cron/tasks summary cards and give both nav routes distinct icons

* fix(i18n): translate new control-ui strings and resync raw-copy baseline
2026-07-09 23:10:02 +01:00
Peter Steinberger
6c7c97f231 fix(ci): prepare QA runtime for live shard (#103129) 2026-07-09 23:06:44 +01:00
Alix-007
2f057e1be7 fix(tlon): remove auth retry abort listener after delay (#101661)
* fix(tlon): remove auth retry abort listener after delay

* fix(tlon): reuse abort-aware retry sleep

Co-authored-by: Alix <267018309+Alix-007@users.noreply.github.com>

* test(tlon): complete runtime fixture

* test(infra): cover abortable sleep cleanup

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 23:04:19 +01:00
Peter Steinberger
fdde2ecde4 fix(status): preserve OAuth JSON diagnostics (#103106)
Co-authored-by: 0668001336 <wang.lizhang@xydigit.com>
2026-07-09 23:03:48 +01:00
Peter Steinberger
d2163e672c fix(ui): keep hidden sessions out of configured-only lists (#103101)
* fix(ui): preserve session list event scope

Co-authored-by: 0668001336 <wang.lizhang@xydigit.com>

* test(ui): scope session filter e2e locator

---------

Co-authored-by: 0668001336 <wang.lizhang@xydigit.com>
2026-07-09 23:03:38 +01:00
SunnyShu
1074bf62a1 fix(heartbeat): preserve selected agent in global scope (#102307)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 23:03:05 +01:00
qingminlong
9a60629693 fix(web_fetch): preserve content length when output is truncated (#102978)
* fix(web_fetch): preserve content length when output is truncated

* fix(web_fetch): preserve provider raw length

* test(web-fetch): cover wrapper-overhead source length

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 23:02:50 +01:00
Peter Steinberger
5c8b54854b fix(cli): reject unsafe byte sizes (#103100)
Co-authored-by: ly-wang19 <ly-wang19@users.noreply.github.com>
2026-07-09 23:02:31 +01:00
Peter Steinberger
41236e6d4f perf(test): avoid full config runtime imports 2026-07-09 17:58:17 -04:00
Peter Steinberger
f5806d08e2 refactor(gateway): retire the standalone node pairing store (#103120)
* refactor(gateway): fold node pairing store into device records

* docs+cli: retire standalone node pairing store references

* test(infra): respec node pairing as device-backed surface approvals

* test(infra): assemble migration token fixtures dynamically

* fix(pairing): preserve node surface across device re-approval, strip legacy tokens in CLI JSON

* test(gateway): drop retired node token from pairing fixtures

* chore(protocol): regenerate Swift models, drop dead pairing-pending module
2026-07-09 22:58:03 +01:00
Peter Steinberger
a661804270 docs(readme): trim banner whitespace for a more compact hero
Crop the top/bottom padding out of the README banners (533 -> 358 px at
1280 wide) so the hero takes about a third less vertical space.
2026-07-09 14:53:52 -07:00
Peter Steinberger
16daa88367 docs: swap Run Onboarding card icon from sparkles to list-checks
The sparkles glyph reads like a generic emoji and renders thin at card
size; list-checks conveys the guided setup steps of openclaw onboard.
2026-07-09 14:51:37 -07:00
Peter Steinberger
b4428fb9df fix(nodes): keep Gateway connections healthy and consistent (#103093)
* fix(gateway): evict unresponsive node sockets

Co-authored-by: hoangsaga123 <hoangsaga123@gmail.com>

* fix(nodes): align invoke timeout semantics

* fix(node): preserve managed connection settings

* docs(changelog): note node connection fixes

* fix(node): redact service credentials in status

* fix(systemd): preserve escaped operator values

* fix(node): carry explicit plaintext service mode

* fix(systemd): avoid promoting stale shell references

* fix(node): clear fingerprints for plaintext runs

* docs(changelog): defer node notes to release

* fix(nodes): normalize forwarded system run timeout

* fix(systemd): preserve operator environment values

* fix(nodes): type normalized invoke payload

---------

Co-authored-by: hoangsaga123 <hoangsaga123@gmail.com>
2026-07-09 22:48:25 +01:00
Peter Steinberger
b8537cd81e ci: pin corrected Kova release evaluator (#103110)
* ci: pin corrected Kova release evaluator

* ci: include gateway plugin calibration
2026-07-09 22:43:44 +01:00
Peter Steinberger
fc463e3b61 docs(readme): replace floating hero with full-bleed brand banners (#103123)
The README led with a transparent mascot cutout floating on the GitHub
background. Swap in generated full-bleed banners (ink starfield dark
variant, warm paper light variant) with the wordmark, tagline, and
one-liner baked in, and drop the now-redundant EXFOLIATE text line.
2026-07-09 22:40:33 +01:00
Peter Steinberger
db44b284ff fix: keep usage day buckets correct across DST (#103097)
* fix: bucket usage days across DST

* docs: document DST-aware usage dates

* perf: reuse usage day formatters

* fix: preserve usage fallback on older gateways

* docs: normalize usage changelog entry

* docs: leave release changelog unchanged

* fix: handle skipped timezone dates
2026-07-09 22:39:57 +01:00
clawsweeper[bot]
90b68536c4 fix(twitch): strip internal tool-trace banners from outbound text (#103109)
* fix(twitch): strip internal tool-trace banners from outbound text

Co-authored-by: Masato Hoshino <246810661+masatohoshino@users.noreply.github.com>

* fix(twitch): strip internal tool-trace banners from outbound text

---------

Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: Masato Hoshino <246810661+masatohoshino@users.noreply.github.com>
2026-07-09 22:39:03 +01:00
Peter Steinberger
676cf03f7d ci(release): retry transient MiniMax image failures (#103114) 2026-07-09 22:33:33 +01:00