Commit Graph

66940 Commits

Author SHA1 Message Date
github-actions[bot]
5304d006e5 chore(ui): refresh control ui locales 2026-07-04 18:38:46 +00:00
Peter Steinberger
77b9385340 fix: tests in nested git worktrees load bundled plugins from the enclosing checkout (#100053)
* fix(infra): stop package-root walks at node_modules boundaries

Nested git worktrees (.worktrees/<pr>, .claude/worktrees/*) have no local
node_modules, so vitest workers run with argv1 inside the enclosing
checkout's node_modules. resolveOpenClawPackageRoot* walked up past that
boundary, resolved the enclosing checkout as the openclaw package root,
and bundled plugin discovery loaded the ancestor's stale extension
manifests, failing ~12 test shards and the scripts/pr prepare-run test
gate whenever the primary checkout sat on a different branch.

A package.json above a node_modules directory belongs to the workspace
that installed the tooling, never to the package owning the running code,
so the ancestor walk now stops there. Installed layouts
(node_modules/openclaw, .bin shims, global installs) match at or below
the boundary and are unaffected.

* fix(scripts): pin bundled plugin discovery in nested PR worktree gates

scripts/pr gates run pnpm test inside .worktrees/<pr>, which resolves
vitest tooling from the primary checkout's node_modules. PR branches that
predate the openclaw-root node_modules-boundary fix would still discover
the primary checkout's stale bundled plugin manifests, so pin
OPENCLAW_BUNDLED_PLUGINS_DIR to the worktree's own extensions before the
build/check/test gates.
2026-07-04 14:36:53 -04:00
Dallin Romney
dbdaad1c2e refactor(providers): table-drive paired catalogs (#99777) 2026-07-04 11:35:55 -07:00
Peter Steinberger
6df0fb818d feat: add session thread management (#98510)
* feat: add session thread management

Squash of codex/thread-management (025aefc3ad1) onto origin/main:
pin/archive/rename sessions via sessions.patch, archived-aware
sessions.list, lifecycle fencing, read-only archived chat, SDK +
Swift protocol support, Control UI session management.

* refactor(ui): minimal session rows with hover-revealed management

Chat picker and sidebar recents share session-row primitives: single-line
rows, relative timestamps, rename/archive/pin revealed on hover or focus,
accent pin badge for pinned rows, and an active-run spinner in the trail
slot. Sidebar floats pinned sessions above recency via the shared
comparator and gains archive/pin actions through the unified sessions-view
patch fallback. Archive eligibility is one shared policy
(canArchiveSessionRow); the sidebar/picker active-run tooltip now uses the
real sessionsView.activeRun locale key.

* fix: align session admission with mailbox-era main

Integration fixes after rebasing onto current main: sessions_list mailbox
test expectations learn the archived/pinned row fields and archived:false
list param; gateway agent admission treats a session as deleted only when
both the requested and canonical alias sets miss it (legacy bare-main
stores and exec-approval followups read under different spellings); cron
persist tests keep a consistent store across claim-guarded persist calls;
the ACP abort hook test asserts abort propagation instead of signal
identity; drop dead lifecycle writes flagged by no-useless-assignment and
fix the promise-executor return in the codex compact test.

* fix(qa): align UI e2e and shard fixtures with redesigned session rows

Sidebar session rows are wrapper divs with an inner link now: update the
navigation browser tests and chat-flow Playwright selectors. Seed a real
per-test session store for the auto-fallback admission guard instead of
depending on leftover host files at /tmp/sessions.json. Teach the
test-projects routing fixture about the suites that newly import the
shared temp-dir helper. Document the Codex thread-format contract for
archivedAt/pinnedAt (flag derived from server-stamped timestamp, epoch ms
here vs Codex epoch seconds) at the type and in the session docs.

* test: route auto-fallback suite through temp-dir helper plans

The auto-fallback suite now imports the shared temp-dir helper for its
seeded session store, so the top-level helper routing fixture must list
it in the auto-reply plan.
2026-07-04 14:30:47 -04:00
sunlit-deng
3644946230 fix(acpx): handle MCP proxy stdio pipe errors (#99852)
* fix(acpx): handle MCP proxy stdio pipe errors

* fix(acpx): handle proxy stdout pipe failures

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-04 11:30:23 -07:00
github-actions[bot]
61da4f0917 chore(ui): refresh control ui locales 2026-07-04 18:26:54 +00:00
Peter Steinberger
7a92c473c1 test(qqbot): fix macOS-only outbound media test failures
The scoped outbound media tests added in #92872 assert raw mkdtemp paths,
but prod resolvers canonicalize roots, so on macOS the /var -> /private/var
tmpdir symlink made three tests fail (green on Linux CI). Realpath the tmp
roots like sibling tests, and export the real UploadDailyLimitExceededError
from the outbound-dispatch sender.js mock so prod instanceof checks in error
paths hit real assertions instead of vitest's missing-export guard.

Also add AGENTS.md test guidance covering both patterns.
2026-07-04 19:20:22 +01:00
Peter Steinberger
6da5db21a6 chore(i18n): regenerate control-ui locale metadata after rebase 2026-07-04 11:18:43 -07:00
Peter Steinberger
d41cb3aab8 fix(control-ui): drop unused vitest import and bind captured request in terminal-connection test 2026-07-04 11:18:43 -07:00
Peter Steinberger
6aeb0575cf chore(plugin-sdk): raise public export budget for GatewayTerminalConfig 2026-07-04 11:18:43 -07:00
Peter Steinberger
959a2774d7 refactor(gateway): satisfy oxlint on terminal session teardown 2026-07-04 11:18:42 -07:00
Peter Steinberger
f2e5159f53 fix(control-ui): register terminal panel via guarded define for shared test registry 2026-07-04 11:18:42 -07:00
Peter Steinberger
3c03389925 fix(control-ui): drop the terminal exit the server emits during a close RPC 2026-07-04 11:18:42 -07:00
Peter Steinberger
3601dcad24 fix(gateway): reject unknown agent ids before resolving terminal isolation 2026-07-04 11:18:42 -07:00
Peter Steinberger
3f976f9f86 fix(control-ui): reload the document when terminal enablement outpaces its CSP 2026-07-04 11:18:42 -07:00
Peter Steinberger
2399ce7c85 fix(control-ui): harden terminal panel lifecycle (pending-open cancel, live theme, viewport clamp) 2026-07-04 11:18:42 -07:00
Peter Steinberger
e275cd61d7 test(control-ui): keep terminal event listener while an open is in flight 2026-07-04 11:18:41 -07:00
Peter Steinberger
ec72de41fa feat(control-ui): dockable ghostty-web terminal panel 2026-07-04 11:18:41 -07:00
Peter Steinberger
f083f35ddb feat(gateway): embedded operator terminal (PTY) with fail-closed isolation and kill switch 2026-07-04 11:18:41 -07:00
Peter Steinberger
66015762a3 feat(gateway-protocol): add terminal.* RPC methods and events 2026-07-04 11:18:41 -07:00
Dallin Romney
9f07e01fc0 refactor: reuse shared number clamp (#99786) 2026-07-04 11:16:38 -07:00
Peter Steinberger
d9dbee7676 docs(cli): correct bare openclaw routing in onboard reference
Bare openclaw does not open Crestodian once config has authored settings.
Document the actual three-way routing: missing/unauthored config starts
classic onboarding, invalid config starts Crestodian for repair, valid
config opens the normal agent TUI (local or reachable configured Gateway),
with /crestodian or openclaw crestodian as the explicit entry points.
Matches resolveBareRootLaunchTarget in src/cli/run-main.ts.
2026-07-04 19:11:11 +01:00
Dallin Romney
d96db362bd refactor(voice-call): reuse webhook path normalization (#99766) 2026-07-04 10:53:07 -07:00
Vincent Koc
3d3a29413a fix(agents): replay images across cli fallback (#100035) 2026-07-04 10:50:42 -07:00
Dallin Romney
fab30c352e test(qa): exercise real cli channel picker (#99717) 2026-07-04 10:48:49 -07:00
Peter Steinberger
66b2c5cfd8 fix: verify GitHub auth without REST quota 2026-07-04 13:38:53 -04:00
Peter Steinberger
0869edc23b fix(slack): stop logging inbound message previews (#96312) 2026-07-04 13:14:09 -04:00
ash
b0476e5c8e fix(slack): include assistant loading messages (#85507)
* fix(slack): include assistant loading messages

* fix(slack): preserve assistant status wording

* fix(slack): preserve assistant status wording

* fix(slack): preserve assistant status wording

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-04 13:13:11 -04:00
github-actions[bot]
c78b0d59f5 chore(ui): refresh control ui locales 2026-07-04 16:52:23 +00:00
Barbara Kudiess
129e0a8cf0 feat: pair mobile devices from the Control UI (#94672)
* feat(gateway): add device.pair.setupCode RPC for connect QR

The OpenClaw mobile/companion app scans a pairing setup code to connect to the gateway, but that code + QR could only be produced by the openclaw qr CLI (ASCII to stdout). Non-terminal clients driving onboarding had no way to display the connect QR.

Add a device.pair.setupCode gateway method that reuses resolvePairingSetupFromConfig + encodePairingSetupCode + renderQrPngDataUrl to return { setupCode, qrDataUrl?, gatewayUrl, auth, urlSource }. The embedded setup code mints a short-lived bootstrap token that hands off broad operator scopes (read/write/approvals/talk.secrets), so the method requires operator.admin (matching the wizard methods a companion already uses) and is not advertised. auth is a label only; the gateway credential is never returned, and an oversized QR is omitted so the response always satisfies the result schema.

Refs #94661.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat(ui): pair mobile devices from Control UI

* docs: refresh generated docs map

* docs: clarify mobile QR auto-connect

* docs: clarify mobile QR auto-connect

* docs: clarify mobile QR auto-connect

---------

Co-authored-by: Barbara Kudiess <76582160+bkudiess@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-04 12:41:14 -04:00
Vincent Koc
cf36cb915d test(auto-reply): update group intro prompt expectations 2026-07-04 18:31:55 +02:00
Peter Steinberger
280e8d4876 test: accelerate package candidate safety proofs (#100008) 2026-07-04 12:20:47 -04:00
Jonathan Tsai
6169e5ddae fix(slack): allow channel-id reads for name-allowlisted channels (#95313)
* fix(slack): allow channel-id reads for name-allowlisted channels

* fix(slack): trust API lookup for read target names

* fix(slack): resolve name-allowlisted reads safely

Co-authored-by: Jonathan Tsai <jontsai@users.noreply.github.com>

* fix(slack): resolve name-allowlisted reads safely

* fix(slack): resolve name-allowlisted reads safely

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-04 12:03:34 -04:00
Peter Steinberger
e643828af6 perf: defer realtime smoke live imports (#100002) 2026-07-04 11:52:30 -04:00
Kevin Lin
ba7b5db74c feat(release): add monthly npm extended-stable publication (#99352)
* feat(release): add npm stable publication

* fix(release): allow stable full validation

* feat(release): add stable guard test bypass

* fix(release): allow stable maintenance after month rollover

* docs: refresh release documentation map

* refactor(release): rename monthly channel to extended-stable

* fix(release): repair extended-stable selector forward

* docs(release): fix extended-stable link
2026-07-04 08:22:39 -07:00
root
c79c380358 fix: type workspace suggestions check 2026-07-04 08:09:07 -07:00
Gio Della-Libera
fed1e9a9ff Keep workspace suggestions opt-in for doctor lint 2026-07-04 08:09:07 -07:00
ZOOWH
f683c9e9bd fix(slack): restore native presentation delivery (#95463)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-04 11:06:08 -04:00
Peter Steinberger
445976ed49 perf: speed up Docker scheduler tests (#99988) 2026-07-04 10:41:29 -04:00
Peter Steinberger
11eeba972f perf: speed up crabbox wrapper tests (#99969) 2026-07-04 10:09:14 -04:00
Peter Steinberger
fc4f8dddaa docs: sync plugin package snippets (#99973) 2026-07-04 10:00:04 -04:00
Mason Huang
4287d2629f [codex] fix(copilot): preserve BYOK bearer auth through proxy (#99955)
Summary:
- Merged [codex] fix(copilot): preserve BYOK bearer auth through proxy after ClawSweeper review.

Automerge notes:
- No ClawSweeper repair was needed after automerge opt-in.

Validation:
- ClawSweeper review passed for head ef753a9929.
- Required merge gates passed before the squash merge.

Prepared head SHA: ef753a9929
Review: https://github.com/openclaw/openclaw/pull/99955#issuecomment-4882241627

Co-authored-by: Mason Huang <masonxhuang@tencent.com>
Approved-by: hxy91819
2026-07-04 13:48:27 +00:00
Mason Huang
1c46fe72c9 docs: clarify plugin package live proof (#99962)
Summary:
- The branch adds plugin package live-proof guidance to the testing skill and plugin docs, separating npm-pack package validation from official-trust proof and documenting runtime dependency and compiled-entry checks.
- PR surface: Docs +111. Total +111 across 3 files.
- Reproducibility: not applicable. this is a documentation and skill-guidance clarification PR rather than a bug report. I validated the documented claims against current source, adjacent docs, tests, and live PR checks.

Automerge notes:
- No ClawSweeper repair was needed after automerge opt-in.

Validation:
- ClawSweeper review passed for head b56efcffc5.
- Required merge gates passed before the squash merge.

Prepared head SHA: b56efcffc5
Review: https://github.com/openclaw/openclaw/pull/99962#issuecomment-4882084565

Co-authored-by: Mason Huang <masonxhuang@tencent.com>
Approved-by: hxy91819
2026-07-04 13:41:46 +00:00
Vincent Koc
787f3a2ce5 test(channels): align outbound delivery assertions 2026-07-04 15:13:16 +02:00
Peter Steinberger
5ea80c8d80 fix: improve agent runtime correctness from upstream Pi (#99949)
* fix: improve agent runtime correctness

* test: track agent tool temp directories

* test: update helper routing expectation
2026-07-04 09:08:37 -04:00
Peter Steinberger
045f42f111 perf: skip real restart waits in update CLI tests (#99945) 2026-07-04 08:59:18 -04:00
Peter Steinberger
3706c2b3bd fix(anthropic): fall back to Claude Opus 4.8 when Fable 5 safety classifiers decline a request (#99906)
Claude Fable 5 requests on direct Anthropic API keys now opt into Anthropic's server-side fallback (server-side-fallback-2026-06-01): a safety-classifier decline is re-served by claude-opus-4-8 inside the same call instead of failing the turn with "LLM request failed.". Mid-stream boundaries drop the declined model's thinking/tool blocks per Anthropic's replay contract, keep the partial text as the continuation prefix, record a provider_fallback diagnostic, and cost the turn at the serving model's rates. Docs lead with the coupling: using Fable 5 means also using Opus 4.8. OAuth, proxies, Bedrock, Vertex, and Foundry requests are unchanged.

Live-verified: a benign reasoning_extraction classifier decline through the product path returns an Opus-served answer with the provider_fallback diagnostic; exact-head CI green (67 checks).

Related: #98976
2026-07-04 08:43:11 -04:00
Peter Steinberger
49cc59b1e8 refactor: consolidate markdown code fences, error coercion, and byte-identical helper pairs (#99932)
* refactor(shared): add markdown code span/fence helpers and migrate seven call sites

* refactor(normalization-core): add canonical toErrorObject and migrate six copies

* refactor: consolidate byte-identical helper pairs onto owner modules

* refactor: reuse canonical path and token helpers in session tools and credentials

* refactor(packages): dedupe compaction summarization tail and session dir parsing

* fix(security): keep missing extensions dir silent in shared plugin dir lister

* refactor: reuse media-core chunk reader and shared dreaming session key helper

* fix(plugins): register error-coercion subpath in sdk alias table

* chore(plugin-sdk): re-pin callable export count after rebase

* chore(plugin-sdk): re-pin callable export count after rebase
2026-07-04 08:40:41 -04:00
Peter Steinberger
706443c79b fix(slack): remove unused unsafe auth fetch helper (#99944)
* fix(slack): remove unused unsafe auth fetch helper

Co-authored-by: liyuanbin <li.yuanbin1@xydigit.com>

* fix(slack): remove unused unsafe auth fetch helper

---------

Co-authored-by: liyuanbin <li.yuanbin1@xydigit.com>
2026-07-04 08:21:32 -04:00
Vincent Koc
020f44aba8 chore(docs): refresh plugin SDK API baseline hash 2026-07-04 14:03:46 +02:00