Commit Graph

71764 Commits

Author SHA1 Message Date
Shakker
02423d33fc fix: improve cron model preflight errors (#113409)
Preserve bounded and redacted local-provider preflight diagnostics, classify the guarded-fetch deadline accurately, and include the failure reason when cron continues with a fallback.

Closes #113195.

Reported-by: @timme0126
Reviewed-by: @shakkernerd
2026-07-24 22:26:00 +01:00
Peter Steinberger
3e44b5f5dd refactor(ui): split chat pane (#113406)
* refactor(ui): split chat pane

* refactor(ui): keep chat pane entrypoint local
2026-07-24 14:25:20 -07:00
Peter Steinberger
59fc573fb9 docs(security): clarify requester-scoped controls (#113400)
* docs(security): clarify requester-scoped controls

* docs(security): refresh documentation map
2026-07-24 14:07:34 -07:00
Vincent Koc
c0c12da9f2 fix(qa): separate provider plans from runtime calls (#113399)
* fix(qa): separate provider plans from runtime calls

* fix(claws): keep profile limit outside env ratchet

* refactor(qa): remove obsolete capture comparators

* chore(release): leave notes to release workflow
2026-07-24 20:55:54 +00:00
Jason (Json)
2ee8730450 feat(anthropic): add Claude Opus 5 model support (#113391)
* feat(anthropic): add Claude Opus 5 model support

Wire claude-opus-5 through the Claude 5 contract seams: adaptive-by-default
thinking with the full low..max effort range, default-sampling and prefill
stripping, streaming refusal contract, model-bound thinking replay, and 1M/128k
catalog metadata across anthropic, claude-cli, Vertex, Bedrock, and Mantle.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(anthropic-vertex): normalize explicit Vertex Opus 5 model rows

Extend normalizeAnthropicVertexResolvedModel so user-configured Vertex Opus 5
rows regain reasoning, image input, 1M/128k limits, and the native thinking
map; update the live-model priority expectation and regenerate docs_map.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 14:47:08 -06:00
Peter Steinberger
14df16007f fix(ci): log every pr-ci-sweeper classification and scan by creation time (#113397) 2026-07-24 13:33:16 -07:00
Jason (Json)
ee606def49 fix(codex): stop Computer Use readiness stalls across fallbacks (#113393)
* fix(codex): bound computer use readiness preflight

* chore(codex): keep service status internal
2026-07-24 14:27:53 -06:00
Vincent Koc
663c4fba10 fix(sqlite): repair canonical indexes before database use (#113390)
* fix(sqlite): recover canonical indexes before open

* chore(sqlite): keep index contract types internal

* test(sqlite): keep unsafe index corruption fail closed
2026-07-25 04:18:06 +08:00
Franck MEYER
5e3007cc23 fix(ui): preserve session identity across gateway snapshots (#113322)
* fix(ui): preserve session identity across gateway snapshots

Co-authored-by: openclaw-repo-broker[bot] <285669409+openclaw-repo-broker[bot]@users.noreply.github.com>

* test(ui): cover session identity transitions

Co-authored-by: openclaw-repo-broker[bot] <285669409+openclaw-repo-broker[bot]@users.noreply.github.com>

* test(ui): model identity reconnect snapshot accurately

* style(ui): format session identity test import

* test(ui): isolate assistant identity snapshot coverage

---------

Co-authored-by: openclaw-repo-broker[bot] <285669409+openclaw-repo-broker[bot]@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-24 13:17:23 -07:00
scotthuang
2900026b33 fix: stop selected channel sessions from WebChat (#111108)
* fix: stop selected channel sessions from WebChat

* fix: clear channel working state after stop

* fix: cancel queued turns before session abort

* fix: replay pending stops after reconnect

* fix: align stop lifecycle test fixtures

* fix(ui): bind pending aborts to gateway client

* test(ui): keep chat pane specs within line limit

* chore(ios): refresh native i18n inventory

* chore: retrigger PR checks

* fix(system-agent): avoid blocking TUI catalog discovery

* fix: preserve session abort ownership

* test: align abort coverage with current main

* test: assert scoped session abort broadcast

* fix(agent-runs): expose SDK runtime abort state

* fix(ui): clear queued main-session stops by scope

* fix(ui): replay only exact run aborts

* fix(gateway): protect session abort cleanup

* fix(ui): narrow session abort intent

* test(ui): avoid unbound request assertions

---------

Co-authored-by: scotthuang <scotthuang@tencent.com>
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com>
2026-07-24 14:36:18 -05:00
Peter Steinberger
4aa9c9f916 test(google-meet): remove release validation races (#113387) 2026-07-25 03:28:22 +08:00
Gio Della-Libera
e9b3252ae8 feat(claws): separate portable and OpenClaw profiles (#112773)
* feat(claws): add portable agent policy settings

* fix(claws): align portable agent policy

* fix(claws): preserve host policy boundaries

* feat(claws): separate portable and OpenClaw profiles

* test(claws): align profile fixtures with portable schema

* fix(claws): align portable profile boundaries
2026-07-24 12:06:02 -07:00
Peter Steinberger
1564c0719f ci: pin exact action version comments (#113386) 2026-07-24 12:05:51 -07:00
Vincent Koc
f1afaa3d0e fix(sqlite): snapshot through online backup (#113385) 2026-07-25 03:03:33 +08:00
Vincent Koc
3d486066ca test(google-meet): accept remaining browser act budget (#113384) 2026-07-25 02:55:58 +08:00
Vincent Koc
ab5e2c34ef fix(sqlite): verify canonical index b-trees (#113382)
* fix(sqlite): verify canonical index b-trees

* chore(sqlite): leave release notes to automation
2026-07-25 02:31:42 +08:00
Peter Steinberger
7d5fb6f242 test(release): align extension prerelease contracts (#113381) 2026-07-25 02:30:35 +08:00
Vincent Koc
0920946f83 fix(snapshot): make SQLite publication crash recoverable (#113367)
* fix(sqlite): pin directory durability checks

* fix(snapshot): make publication crash recoverable

* fix(snapshot): revalidate committed publication

* fix(sqlite): pin durable directory ancestry

* test(sqlite): target directory sync fault

* fix(sqlite): pin every durability edge

* test(sqlite): target pinned sync failures

* fix(snapshot): reject markerless partial state

* fix(sqlite): harden durable directory opens

* test(snapshot): accept hardened redirect rejection

* test(sqlite): accept optional open flags

* fix(sqlite): repair pinned directory permissions

* fix(sqlite): bind publication and trusted repair

* fix(snapshot): preserve safe repository mode repair

* fix(sqlite): keep sync outcome internal
2026-07-25 01:56:05 +08:00
Peter Steinberger
1e9d918037 feat(sdk): always persist media facts and ship facts-first replacements for legacy Media* surfaces (#113355)
* feat(sdk): always persist media facts and ship facts-first replacements for legacy Media* surfaces

PR 1 of the media legacy retirement program (audit-frozen, 4 PRs).

- Every media-bearing user turn now persists normalized __openclaw.media
  facts unconditionally while continuing to emit the legacy top-level
  Media* projection byte-identically (dual-write bridge; the conditional
  shouldPersistStructuredMediaEntries gate now always includes media).
- New replacement APIs, shipped before any removal: typed hook media
  facts (media[], originalMedia[], mediaStagingPending) on message
  events; {{AttachmentPath}}/{{AttachmentUrl}}/{{AttachmentContentType}}/
  {{AttachmentDir}}/{{AttachmentIndex}} template variables; focused
  openclaw/plugin-sdk/media-local-roots subpath split out of the
  deprecated agent-media-payload facade.
- Every legacy surface carries @deprecated naming its replacement, under
  one named compatibility record media-legacy-projection with the
  operator-approved removeAfter 2026-10-01 (two release trains; deletion
  additionally gates on a clean published-plugin artifact sweep).
- Generic transcript append invariant documented; SDK migration, hooks,
  and configuration docs updated to the facts-first path.

Writer golden matrix proves legacy bytes and model prompt bytes are
unchanged while nested facts become unconditional. 2,189 broad media
tests green; SDK api-baseline regenerated on fresh-env Testbox.

* feat(sdk): register media-local-roots subpath exports and deprecation metadata

Completes PR 1: package export map for openclaw/plugin-sdk/media-local-roots
plus the deprecated-subpath inventory and doc metadata entries for the
media-legacy-projection record.

* chore(sdk): track media-local-roots entrypoint and deprecated-export budgets

* fix(sdk): keep deprecated MSTeams buildMediaPayload re-export through the compat window

Deleting shipped runtime-api re-exports belongs to retirement PR 4 after
the media-legacy-projection window; PR 1 only deprecates. Also formats
the migration-guide schedule table.

* docs: regenerate docs map for media migration additions
2026-07-24 10:42:17 -07:00
Peter Steinberger
756b6f7009 fix(release): repair plugin prerelease regressions (#113373) 2026-07-24 10:20:32 -07:00
Peter Steinberger
9c2ae380bc refactor(ui): split chat message rendering (#113363)
* refactor(ui): split chat message rendering

* refactor(ui): tighten chat message exports
2026-07-24 09:41:53 -07:00
Peter Steinberger
f41e28202f fix(plugins): keep feed trust within env budget (#113364) 2026-07-24 09:19:14 -07:00
Vincent Koc
8029b3bbb8 fix(update): repair plugin config during upgrade finalization (#113324)
* fix(update): repair configured plugins during finalization

* fix(update): allow legacy config through migration
2026-07-25 00:18:59 +08:00
Peter Steinberger
70a8c2a1c9 fix(ui): chat bubbles overlap after switching to the dashboard face (#113356)
* fix(ui): keep chat transcript rows measured across dashboard face switches

* test(ui): satisfy lint in transcript measure regression test
2026-07-24 09:06:58 -07:00
Vincent Koc
1e15b18bcb fix(sqlite): support deep Windows state paths (#113336)
* fix(sqlite): normalize core database locations

* fix(sqlite): preserve Windows immutable read paths

* test(windows): exercise deep SQLite state paths

* test(windows): isolate Unix supervisor fixtures

* test(infra): keep handoff fixture within lint budget

* fix(sqlite): own read-only paths at node boundary

* chore(release): leave changelog to release flow

* fix(sqlite): classify resolved Windows UNC paths
2026-07-24 23:55:12 +08:00
Peter Steinberger
049a17860c refactor(ui): split chat composer (#113338)
* refactor(ui): split chat composer

* refactor(ui): align composer split ownership

* test(ui): clarify custom combobox inventory
2026-07-24 08:11:54 -07:00
Peter Steinberger
4e9cba2aba fix(release): scope dependency conflicts to bundled plugins (#113350) 2026-07-24 08:08:55 -07:00
Omar Shahine
e430a1beb2 feat(approvals): emit bold headers and labels in approval prompts (#113193)
* feat(approvals): emit bold headers and labels in approval prompts

Approval prompts carried plain-text labels, so iMessage showed no formatting
even though its send path now translates markdown into attributed-body ranges
(the markdown-core profile refactor, #113002). Emit bold on the headers and
field labels so channels that render markdown show formatted approval text:
iMessage into native ranges, other markdown channels into their native bold,
and channels that downgrade drop the markers cleanly.

Closes #85954.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7d86Ww4vJwxJwY4z1AVx6

* test(approvals): update prompt-text assertions for bold labels

* feat(approvals): bold the auto-review rationale in reaction prompts

The rationale is the reason for the interruption, so it should stand out.
Generated text, but the reaction-runtime renderers parse to an IR that
tolerates stray markers, so a rationale containing a lone marker degrades
gracefully rather than breaking the emphasis span.

* fix(approvals): preserve reaction binding and Signal rendering for bold prompts

Codex + local ClawSweeper caught that bolding the prompt headers/labels broke
downstream consumers of the visible approval text:

- Reaction/tapback binding on iMessage, Signal, and WhatsApp anchors on the
  plain `Exec approval required` / `ID:` format. Strip `**` markers in each
  channel's binding parser before matching, so binding still correlates the
  delivered prompt. Adds an iMessage bold-format binding regression test.
- Signal sent the approval payload with textMode "plain", so the markers would
  reach users literally. Switch Signal's approval sends to markdown mode;
  markdownToSignalText renders the headers as native bold. WhatsApp already
  renders markdown by default; iMessage renders via extractMarkdownFormatRuns.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7d86Ww4vJwxJwY4z1AVx6

* style(approvals): oxfmt the touched approval files

---------

Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 08:06:05 -07:00
Peter Steinberger
10484486a0 test: restore shared runtime state (#113334) 2026-07-24 07:51:10 -07:00
Peter Steinberger
44c3ec10ed fix(ui): paginate sidebar session sections independently (#113343) 2026-07-24 07:48:40 -07:00
Peter Steinberger
3b3a3d1d56 test(plugin-sdk): restore memory-host timers (#113339) 2026-07-24 07:46:18 -07:00
Peter Steinberger
6235ea55ac refactor(codex): split command handlers (#113335)
* refactor(codex): split command handlers

* refactor(codex): keep helper types private
2026-07-24 07:29:44 -07:00
Gio Della-Libera
f88e7e46a1 feat: bind signed ClawHub default feed trust (#101981)
* feat: bind signed ClawHub feed trust

* fix(feeds): preserve trust and enforce expiry

* fix(feeds): enforce signed catalog HTTP contract

* fix(feeds): align signed feed validation

* fix: preserve hosted catalog trust boundaries

* fix(feeds): stage custom feed identity binding

* fix(feeds): require complete entry trust authority

* fix(feeds): retain feed schema trust context

* fix(feeds): enforce schema trust before overlays

* fix(feeds): satisfy catalog trust CI checks

---------

Co-authored-by: Gio Della-Libera <giodl@microsoft.com>
2026-07-24 07:27:09 -07:00
Peter Steinberger
07e3855b46 refactor(heartbeat): remove legacy HEARTBEAT.md runtime fallback and template repair (#113131)
The database scratch migration (3e2b3ea4) left two named upgrade bridges:
the revision-0 read-only HEARTBEAT.md fallback in the heartbeat runner and
the doctor heartbeat-template repair contribution. This deletes both; the
doctor scratch migration remains the sole upgrade path.

Merge gate: hold until the next stable release containing 3e2b3ea4 has
shipped and completed its upgrade window.
2026-07-24 07:11:19 -07:00
Peter Steinberger
7dfb660d1f fix(release): keep msteams packaging and Docker reruns reliable (#113332)
* fix(release): forward-port beta packaging repairs

* fix(ci): acknowledge sweeper token grant
2026-07-24 07:05:41 -07:00
Peter Steinberger
8d67c40939 fix(ci): restore full-grant app token for pr-ci-sweeper
Every scheduled sweep failed at token minting since the explicit
permission subset was added: actions/create-github-app-token rejects any
request exceeding the installation grant, and these installations lack
actions:write/checks:read (stale.yml succeeds with actions:read;
auto-response succeeds with neither). Requesting no subset restores the
app's full granted set, which the re-fire lane demonstrably worked with.
If the org later grants actions:write+checks:read, the explicit subset
can return.
2026-07-24 06:21:04 -07:00
Vincent Koc
ebf2306c1d fix(sqlite): normalize Windows verification paths (#113313)
* fix(sqlite): normalize Windows verification paths

* test(windows): normalize backup archive fixture paths

* test(windows): separate backslash and traversal archive cases
2026-07-24 21:00:15 +08:00
Vincent Koc
d2200f64af fix(doctor): apply compatibility after plugin repair (#113317) 2026-07-24 20:25:10 +08:00
Vincent Koc
48d65f94a1 fix(test): release SQLite fixtures before Windows cleanup (#113316)
* fix(test): close SQLite fixtures before Windows cleanup

* test(windows): extend fixture cleanup retries

* fix(test): avoid registry reads during fixture cleanup
2026-07-24 20:04:57 +08:00
Peter Steinberger
4302896638 fix(i18n): unwrap invented inline code 2026-07-24 07:48:30 -04:00
Peter Steinberger
4cd327e31f refactor(agents): split subagent registry internals (#113297)
* refactor(agents): split subagent registry

* fix(agents): defer registry restore until exports initialize
2026-07-24 04:44:37 -07:00
Vincent Koc
3bfc23c676 fix(backup): publish archives durably (#113302) 2026-07-24 19:12:11 +08:00
Vincent Koc
218c2fe3a5 fix(update): preserve JSON output during resume (#113298) 2026-07-24 18:56:20 +08:00
Peter Steinberger
445eea201a refactor(memory-lancedb): remove dead legacy path scan (#113299) 2026-07-24 03:43:17 -07:00
Peter Steinberger
b614661646 fix(test): satisfy no-map-spread in exec approvals (#113303) 2026-07-24 03:36:19 -07:00
Pavan Kumar Gondhi
76af831155 fix: keep OAuth refresh failures terminal [AI] (#112957)
* fix: fail closed on oauth refresh errors

* fix: keep prepared auth refresh failures terminal

* fix: preserve prepared auth profile fallback
2026-07-24 15:50:49 +05:30
Pavan Kumar Gondhi
1fc81c2054 fix: reusable exec approvals apply to approved arguments (#112946)
* fix: bind allow-always exec approvals to argv

* test: update exec approval persistence expectations

* fix: hash reusable exec approval arguments

* test: pin POSIX exec approval hash expectation

* fix: match hashed exec approvals in macOS

* fix: encode exec approval argv hashes unambiguously

* fix: bind native exec approval grants to argv

* test: expect hashed exec approval patterns

* fix: ignore legacy broad exec approval grants

* fix: hash shell script allow-always grants

* fix: require argv binding for package manager grants

* fix: bind positional carrier approval grants

* fix: address approval check failures

* fix: format approval policy test

* fix: reject context-changing package manager grants

* fix: keep build-enabled pnpm dlx grants one-shot

* fix: reject npm exec context grants

* fix: catch npm exec tail context options

* fix: block npm package context approvals

* fix: block leading pnpm dlx context grants

* fix: restrict durable positional carrier grants

* docs: clarify generated exec approvals

* fix: block post-dlx pnpm context grants
2026-07-24 15:38:38 +05:30
Peter Steinberger
050475b9de refactor(agents): split tool search internals (#113296) 2026-07-24 03:04:14 -07:00
Pavan Kumar Gondhi
dc4c5887fa fix: keep inline eval approvals one-shot [AI] (#112956)
* fix: classify inline eval interpreters

* fix: cover inline eval flag variants

* fix: handle snippet eval option aliases

* fix: classify debugger and runtime callbacks

* fix: tighten interpreter eval matching

* fix: cover gdb early init eval flags

* fix: cover bundled eval option forms

* fix: cover gdb eval abbreviations

* fix: cover iex and guile eval forms
2026-07-24 15:21:24 +05:30
Vincent Koc
e3636852ba refactor(normalization): reuse trimmed list helpers (#113295) 2026-07-24 17:43:22 +08:00