Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
6665 commits
Select commit Hold shift + click to select a range
e121889
fix(plugins): share native anthropic replay hooks
vincentkoc Apr 14, 2026
3487e7f
fix(plugin-sdk): route shared stream helpers through one barrel
vincentkoc Apr 14, 2026
3f8c6dd
fix(openrouter): reuse shared replay hooks
vincentkoc Apr 14, 2026
5237a14
fix(plugins): drop stale provider hook dead code
vincentkoc Apr 14, 2026
2f378ec
perf(test): lazy-load shared runtime setup
vincentkoc Apr 14, 2026
50e5f95
perf(test): bypass fs in doctor config flow tests
vincentkoc Apr 14, 2026
9c42e64
fix(plugins): share tool-stream defaults and align xai sdk imports
vincentkoc Apr 14, 2026
60961a7
fix(openai): share responses transport defaults
vincentkoc Apr 14, 2026
a14f7c5
fix(openai): share responses stream hook family
vincentkoc Apr 14, 2026
356110c
fix(google): share gemini provider hook bundle
vincentkoc Apr 14, 2026
20bfa3c
perf(test): reuse control-ui device identities
vincentkoc Apr 14, 2026
4c15f13
fix(plugin-sdk): share canonical replay hook families
vincentkoc Apr 14, 2026
e5c3829
fix(plugin-sdk): share anthropic replay hook constants
vincentkoc Apr 14, 2026
4e46488
perf(cli): lazy-load gateway registration deps
vincentkoc Apr 14, 2026
36f4913
fix(openai): share responses transport hooks
vincentkoc Apr 14, 2026
25efa8c
fix(minimax): share provider hook bundle
vincentkoc Apr 14, 2026
f95c706
perf(cli): lazy-load daemon service runners
vincentkoc Apr 14, 2026
66701d5
fix(plugin-sdk): share opencode catalog auth helper
vincentkoc Apr 14, 2026
546edca
perf(gateway): trim hooks import graph
vincentkoc Apr 14, 2026
30dceba
fix(minimax): share region auth builders
vincentkoc Apr 14, 2026
b4e38a7
fix(plugins): share capability vitest shim aliases
vincentkoc Apr 14, 2026
37d5971
Align QMD memory reads with canonical memory paths (#66026)
eleqtrizit Apr 14, 2026
905b185
fix(plugins): share cached plugin jiti loader config
vincentkoc Apr 14, 2026
a7436c8
perf(plugins): split provider hook runtime seam
vincentkoc Apr 14, 2026
0d2a4b4
fix(plugin-sdk): reuse cached plugin jiti loader helper
vincentkoc Apr 14, 2026
3bb9e5f
fix(plugin-sdk): share facade loader jiti cache plumbing
vincentkoc Apr 14, 2026
b4e4f96
fix: restore embedded-run param forwarding (#62675) (thanks @hexsprite)
hexsprite Apr 14, 2026
f366c38
fix(plugins): share loader jiti cache overrides
vincentkoc Apr 14, 2026
34afe10
perf(config): skip duplicate channel legacy rule loads
vincentkoc Apr 14, 2026
60ea8e9
fix(plugins): share bundled capability jiti cache path
vincentkoc Apr 14, 2026
0bf3b84
fix: avoid setup crash on missing provider ids (#66649) (thanks @Tian…
Tianworld Apr 14, 2026
eea7ba5
fix(plugin-sdk): share canonical stream hook families
vincentkoc Apr 14, 2026
b2b3bf3
fix(openai): reuse canonical responses stream hooks
vincentkoc Apr 14, 2026
3624dda
refactor(openai): isolate base URL helpers
obviyus Apr 14, 2026
8b404ec
test(openai): cover base URL helpers
obviyus Apr 14, 2026
41d649c
fix(plugins): share runtime boundary jiti cache helper
vincentkoc Apr 14, 2026
27b1412
Release: move npm dist-tag ops private (#66660)
osolmaz Apr 14, 2026
5c28cfb
perf(channels): add lightweight doctor contract APIs
vincentkoc Apr 14, 2026
8fa63ac
fix(plugins): share bundled public surface jiti cache scope
vincentkoc Apr 14, 2026
daabbce
refactor(openai): import base URL helpers directly
obviyus Apr 14, 2026
450c3a8
fix(security): include Matrix avatar params in sandbox media normaliz…
slepybear Apr 14, 2026
2f29a58
fix(plugin-sdk): share facade activation check candidate loader
vincentkoc Apr 14, 2026
87eac53
fix(plugins): share runtime boundary alias builder
vincentkoc Apr 14, 2026
8d3bd48
perf(whatsapp): add doctor contract fast path
vincentkoc Apr 14, 2026
1b73ce9
test(wizard): use typed provider stubs
obviyus Apr 14, 2026
f12d6bf
fix(plugins): share public surface source extensions
vincentkoc Apr 14, 2026
9843a4f
fix(plugins): share source public surface resolver
vincentkoc Apr 14, 2026
f8610da
perf(cli): narrow daemon and gateway cold paths
vincentkoc Apr 14, 2026
7b05b4b
fix(channels): share plugin module jiti cache helper
vincentkoc Apr 14, 2026
f190bf0
Fix Matrix media alias normalization
gumadeiras Apr 14, 2026
604a5e0
perf(cli): lazy-resolve daemon stop fallback port
vincentkoc Apr 14, 2026
a80ecb9
fix(plugin-sdk): align root alias scoped sdk map
vincentkoc Apr 14, 2026
074efc9
fix(matrix): align wrapper scoped sdk aliases
vincentkoc Apr 14, 2026
4c090ac
perf(cli): avoid eager gateway call config loads
vincentkoc Apr 14, 2026
5a9ee98
fix(plugins): avoid redundant public surface jiti config reads
vincentkoc Apr 14, 2026
3a371a3
fix: filter telegram binary caption text (#66663) (thanks @joelnishanth)
joelnishanth Apr 14, 2026
4d6eeeb
fix(plugin-sdk): share facade runtime jiti cache helper
vincentkoc Apr 14, 2026
e31dfa9
perf(cli): avoid runtime config loads in gateway discover
vincentkoc Apr 14, 2026
16851e2
fix(plugin-sdk): sort safe root alias subpaths
vincentkoc Apr 14, 2026
30073fe
fix(matrix): sort safe wrapper sdk subpaths
vincentkoc Apr 14, 2026
665a849
fix(plugin-sdk): sort hashed root alias dist chunks
vincentkoc Apr 14, 2026
3745d5b
fix(matrix): require trusted wrapper package roots
vincentkoc Apr 14, 2026
0a87707
fix(matrix): normalize trusted wrapper bin hints
vincentkoc Apr 14, 2026
acd4e0a
fix(gateway): re-resolve HTTP auth per-request to honor credential ro…
mmaps Apr 14, 2026
6b2d418
fix(channels): resolve bundled plugin mts candidates
vincentkoc Apr 14, 2026
3362ccc
perf(doctor): skip redundant plugin legacy rescans
vincentkoc Apr 14, 2026
0a9616c
fix(matrix): align extension-api source aliases
vincentkoc Apr 14, 2026
6821b8b
fix(plugins): widen extension-api source alias candidates
vincentkoc Apr 14, 2026
2cab81d
fix(plugins): widen plugin-sdk source alias candidates
vincentkoc Apr 14, 2026
1169dd7
perf(doctor): skip blocker scans without plugin disablement
vincentkoc Apr 14, 2026
4bc46cc
fix(gateway): cap compaction reserve floor to context window for smal…
openperf Apr 14, 2026
1898b20
fix(plugin-sdk): widen root alias source candidates
vincentkoc Apr 14, 2026
17c4f62
fix(agents): classify unknown-no-details Responses failures as unknow…
OpenCodeEngineer Apr 14, 2026
088b41b
perf(test): split doctor preflight mock modes
vincentkoc Apr 14, 2026
66e06b5
perf(doctor): fast-path bundled channel compat migrations
vincentkoc Apr 14, 2026
7fbd318
fix: classify invalid-model fallback errors (#50028)
xiwuqi Apr 14, 2026
e0d1810
fix(failover): classify finish_reason: network_error as timeout (#612…
lawrence3699 Apr 14, 2026
2aaa17d
fix(ci): restore main typecheck
vincentkoc Apr 14, 2026
64f3241
test(release): include workspace template pack paths
vincentkoc Apr 14, 2026
09d7f27
test(agentic): align OpenAI replay id expectations
vincentkoc Apr 14, 2026
8d1510e
fix(lint): clear masked main check failures
vincentkoc Apr 14, 2026
a848dda
fix(deps): patch follow-redirects vulnerability
vincentkoc Apr 14, 2026
58a9905
fix(onboard): normalize channel setup metadata (#66706)
darkamenosa Apr 14, 2026
95cdaf9
test(resilience): cover broken plugin startup and onboarding
vincentkoc Apr 14, 2026
5012c38
test(release): cover workspace template pack paths
vincentkoc Apr 14, 2026
c7f08d1
test(contracts): refresh plugin boundary expectations
vincentkoc Apr 14, 2026
c2a192a
test(contracts): fix readonly sentinel matcher types
vincentkoc Apr 14, 2026
df956f8
test(slack): harden fixture cleanup retries
vincentkoc Apr 14, 2026
34f9211
fix(plugin-sdk): fall back from dist facade overrides to source surfaces
vincentkoc Apr 14, 2026
bd288e7
test(agents): mock provider hook runtime in replay suites
vincentkoc Apr 14, 2026
1f14c8d
fix(slack): fix slash commands with button arg menu errors
zimeg Apr 14, 2026
c8003f1
Harden Feishu webhook replay guards (#66707)
eleqtrizit Apr 14, 2026
fdbb0fb
fix(ci): trim dist fanout from source-only node shards
vincentkoc Apr 14, 2026
d35bdf6
refactor(slack): use packaged thread status method
zimeg Apr 14, 2026
9386e3a
test(feishu): align lifecycle runtime env typing
vincentkoc Apr 14, 2026
472bcbb
fix(agents): tighten workspace file opens (#66636)
eleqtrizit Apr 14, 2026
c96871d
test(feishu): avoid runtime env union lint trap
vincentkoc Apr 14, 2026
3425823
fix(regression): avoid sync startup for matrix status reads
gumadeiras Apr 14, 2026
82a2db7
refactor(qa): split Matrix QA into optional plugin (#66723)
gumadeiras Apr 14, 2026
62430d9
Harden MCP loopback request validation (#66665)
eleqtrizit Apr 14, 2026
bb14412
fix(reply): classify billing cooldown summaries (#66363)
Rohan5commit Apr 14, 2026
f958e31
tests: fix Feishu card action runtime mock typing
gumadeiras Apr 14, 2026
70b67b0
fix(agents): preserve original prompt on model fallback retry (#65760…
WuKongAI-CMU Apr 14, 2026
5bf30d2
matrix: prefer named default account
gumadeiras Apr 14, 2026
d21f07a
fix: allow workspace-rooted absolute media paths in auto-reply (#66689)
joelnishanth Apr 14, 2026
731d466
fix(reply): resolve active channel/account SecretRefs in reply runs (…
joshavant Apr 14, 2026
6531004
QA: fix matrix runner staging and host registration
gumadeiras Apr 14, 2026
06a4bf5
Actions: add reusable cross-OS release checks workflow (#66812)
osolmaz Apr 14, 2026
20463d1
test(gateway): harden canvas auth websocket probe
vincentkoc Apr 14, 2026
5ddca5d
fix(agents): normalize mini openai reasoning
vincentkoc Apr 14, 2026
85eac42
QA: remove runner install fallback catalog
gumadeiras Apr 14, 2026
c6c222b
perf(tests): trim hot wizard and infra setup work
vincentkoc Apr 14, 2026
e7dfc88
fix(infra): resolve opened file paths by identity
steipete Apr 14, 2026
54cf4cd
test(agents): isolate shared subagent state
steipete Apr 14, 2026
5977579
QA: drop qa-channel install metadata
gumadeiras Apr 14, 2026
9b25c8f
perf(tests): trim plugin and gateway hot paths
vincentkoc Apr 14, 2026
ef3ac6a
fix: guard Anthropic Messages max tokens (#66664)
jalehman Apr 14, 2026
7026dda
test(gateway): tolerate loaded hook enqueue timing
steipete Apr 14, 2026
2d26929
test(slack): harden thread context fixture cleanup
vincentkoc Apr 14, 2026
58d0c17
fix(ci): split agentic node shard by runtime shape
vincentkoc Apr 14, 2026
75e7fc9
fix: preserve runtime token budget in deferred context-engine mainten…
jalehman Apr 14, 2026
e1e0120
test(live): skip codex html interruptions in modern sweep
steipete Apr 14, 2026
d5b1329
test(perf): speed up slow launchd and sessions specs
vincentkoc Apr 14, 2026
59b5db5
test(perf): trim slow gateway, daemon, and command specs
vincentkoc Apr 14, 2026
58742ac
fix(bluebubbles): dedupe inbound webhooks across restarts (#19176, #1…
omarshahine Apr 14, 2026
95be2c1
QA: replace qa-lab-runtime with qa-runtime
gumadeiras Apr 14, 2026
4491bda
QA: drop dead qa-lab-runtime shim
gumadeiras Apr 14, 2026
1769fb2
fix(secrets): align SecretRef inspect/strict behavior across preload/…
joshavant Apr 14, 2026
ed1dfe2
perf(commands): trim sessions cold-path imports
vincentkoc Apr 14, 2026
06715db
test(gateway): avoid startup auth module reset churn
vincentkoc Apr 14, 2026
87ef32c
perf(tests): avoid bundled channel cold-loads in hot paths
vincentkoc Apr 14, 2026
f1c2be7
fix(ci): slim build-artifacts dist producer
vincentkoc Apr 14, 2026
3d5c0c3
docs(qa): refresh QA testing skill
gumadeiras Apr 14, 2026
16c949e
test(agents): trim hot replay approval suites
vincentkoc Apr 14, 2026
a2888f8
fix(ci): exclude private qa sidecars from install verify
vincentkoc Apr 14, 2026
97ee0c6
perf(migrations): trim legacy migration and bind cold paths
vincentkoc Apr 14, 2026
956b049
build: refresh A2UI bundle hash
steipete Apr 14, 2026
711b1a8
docs: parallelize Parallels smoke guidance
steipete Apr 14, 2026
5e77cbd
QA: add Matrix transport substrate
gumadeiras Apr 14, 2026
778ac43
QA: finish Matrix P1 harness coverage
gumadeiras Apr 14, 2026
5ed9016
fix: narrow a2ui bundle hash inputs
steipete Apr 14, 2026
81b66e5
test(qa-matrix): type provisioned topology fixture
steipete Apr 14, 2026
0329ec4
ci(tests): split agentic node shard into three lanes
vincentkoc Apr 14, 2026
9577d66
build: refresh release surface baselines
steipete Apr 14, 2026
f3a5b96
test(gateway): harden runtime services delivery recovery assertion
vincentkoc Apr 15, 2026
874eebe
QA: extract Matrix event modules
gumadeiras Apr 15, 2026
3aae0fb
QA: tighten Matrix substrate coverage
gumadeiras Apr 15, 2026
55ee327
fix(ci): replace retired pnpm audit hook
vincentkoc Apr 15, 2026
9727ed4
feat(skills): add discussion_comment support to secret-scanning skill…
hxy91819 Apr 15, 2026
5702ab6
test(e2e): harden beta preflight failures
steipete Apr 15, 2026
0c4e0d7
memory: block dreaming self-ingestion (#66852)
gumadeiras Apr 15, 2026
734bb9c
Telegram/documents: sanitize binary payloads to prevent prompt input …
martinfrancois Apr 15, 2026
9463f1c
QA: expand Matrix config scenario coverage
gumadeiras Apr 15, 2026
e49be93
fix(release): keep legacy update QA sidecars
steipete Apr 15, 2026
da43277
fix(ci): make pnpm audit hook dependency-free
gumadeiras Apr 15, 2026
4c52731
fix(ci): parse quoted pnpm snapshot keys
gumadeiras Apr 15, 2026
3c03d41
QA: split Matrix scenario leaf types
gumadeiras Apr 15, 2026
1c46fa0
test(e2e): quote linux bad-plugin diagnostic grep
steipete Apr 15, 2026
d974cea
test(e2e): harden Parallels smoke probes
steipete Apr 15, 2026
ff4edd0
fix: restore Telegram native auto defaults (#66843) (thanks @kashevk0)
kashevk0 Apr 15, 2026
6f1d321
feat(bluebubbles): replay missed webhook messages after gateway resta…
omarshahine Apr 15, 2026
b1d03b4
fix: keep Telegram command sync process-local (#66730) (thanks @nightq)
nightq Apr 15, 2026
0c0463b
fix: restore allowPrivateNetwork for self-hosted STT endpoints (#6669…
jhsmith409 Apr 15, 2026
e0bf756
fix: handle OpenRouter Qwen3 reasoning_details streams (#66905) (than…
bladin Apr 15, 2026
0bc4472
fix: remove stale media override import
steipete Apr 15, 2026
8db4bb7
Reply: preserve phased block metadata
gumadeiras Apr 15, 2026
5042b8b
QA: split Matrix contract runtime
gumadeiras Apr 15, 2026
fb92ca1
QA: genericize mock streaming fixtures
gumadeiras Apr 15, 2026
90c06c0
fix: guard against undefined event.content in cron agentTurn payload …
xinmotlanthua Apr 15, 2026
5ca65c8
fix: type media private-network request flag
steipete Apr 15, 2026
ec76352
build: refresh bundled channel metadata
steipete Apr 15, 2026
cd3e6e1
build: refresh config baseline
steipete Apr 15, 2026
2e2cbdd
fix(onboard): crash at channel selection on globally installed CLI (#…
rjchien728 Apr 15, 2026
7d7dc75
QA: speed up Matrix live lane
gumadeiras Apr 15, 2026
0aea998
Add Mason Huang as maintainer (#66974)
hxy91819 Apr 15, 2026
ccedc50
fix: handle native pnpm execpath
obviyus Apr 15, 2026
2cc9798
style: use non-capturing pnpm regex group
obviyus Apr 15, 2026
7fc5a18
test(qa-matrix): isolate flaky beta scenarios
steipete Apr 15, 2026
3d2f51c
CLI/plugins: stop forced-unsafe installs from falling back to hook pa…
hxy91819 Apr 15, 2026
507b718
feat(ui): add Model Auth status card to Overview dashboard (#66211)
omarshahine Apr 15, 2026
808ba47
chore(ui): refresh de control ui locale
github-actions[bot] Apr 15, 2026
adff956
chore(ui): refresh zh-TW control ui locale
github-actions[bot] Apr 15, 2026
d204471
chore(ui): refresh zh-CN control ui locale
github-actions[bot] Apr 15, 2026
0ac265f
chore(ui): refresh pt-BR control ui locale
github-actions[bot] Apr 15, 2026
1d8713b
chore(ui): refresh ja-JP control ui locale
github-actions[bot] Apr 15, 2026
bf136ab
chore(ui): refresh fr control ui locale
github-actions[bot] Apr 15, 2026
0c3354c
chore(ui): refresh es control ui locale
github-actions[bot] Apr 15, 2026
1c3c9c9
chore(ui): refresh ko control ui locale
github-actions[bot] Apr 15, 2026
b778253
chore(ui): refresh tr control ui locale
github-actions[bot] Apr 15, 2026
2e23002
chore(ui): refresh pl control ui locale
github-actions[bot] Apr 15, 2026
8602c81
chore(ui): refresh id control ui locale
github-actions[bot] Apr 15, 2026
9b1b56a
chore(ui): refresh uk control ui locale
github-actions[bot] Apr 15, 2026
732db75
fix: classify "No conversation found" as session_expired (#65028)
Ivan-Fn Apr 15, 2026
6aa4515
fix(context-engine): gracefully degrade to legacy engine on third-par…
openperf Apr 15, 2026
059d4b6
docs-i18n: add behavior baseline fixtures (#64073)
hxy91819 Apr 15, 2026
dd90297
doc:add qq support to README (#67039)
sliverp Apr 15, 2026
277885f
build: refresh plugin sdk api baseline
steipete Apr 15, 2026
18d0af3
fix(update): verify packaged dist inventory
obviyus Apr 15, 2026
5754667
fix(postinstall): prune stale packaged dist files
obviyus Apr 15, 2026
1077cb7
test(postinstall): use real dist inventory fixtures
obviyus Apr 15, 2026
5e7306b
fix(update): filter dist inventory to packed files
obviyus Apr 15, 2026
9e1df98
fix(postinstall): reject unsafe dist symlinks
obviyus Apr 15, 2026
aaa6b05
fix(update): preserve legacy global verify
obviyus Apr 15, 2026
60e2ccb
fix(update): preserve legacy downgrade verify
obviyus Apr 15, 2026
64f258f
fix(update): keep downgrade follow-ups in-process
obviyus Apr 15, 2026
2a8226f
fix(postinstall): reject dist symlink escapes
obviyus Apr 15, 2026
8b79141
fix(update): infer legacy bundled sidecars
obviyus Apr 15, 2026
2791b00
fix(build): move compat sidecars into src
obviyus Apr 15, 2026
a1d4eb2
fix(inventory): omit qa-matrix dist artifacts
obviyus Apr 15, 2026
2e61d2c
fix(lint): drop dead compat sidecar imports
obviyus Apr 15, 2026
94d5c3d
fix: prune stale dist chunks after npm upgrades (#66959)
obviyus Apr 15, 2026
df918c4
feat(memory-lancedb): add cloud storage support to memory-lancedb (#6…
ddupg Apr 15, 2026
7f35f76
fix(update): harden dist inventory handling
vincentkoc Apr 15, 2026
9e665e4
fix(ts): use typed runtime semver helpers
vincentkoc Apr 15, 2026
ea4889e
fix(update): keep dist verify compat-safe
vincentkoc Apr 15, 2026
fb4395c
fix(cron): preserve all fields in announce delivery by removing summa…
srinivaspavan9 Apr 15, 2026
7734a40
fix(ui): skip chat history reload during active sends to prevent mess…
scotthuang Apr 15, 2026
f49d9bc
test(gateway): harden non-isolated channel mocks
vincentkoc Apr 15, 2026
7611d41
build: refresh config docs baseline
steipete Apr 15, 2026
7320dfc
test(perf): speed up slow cron infra and secrets specs
vincentkoc Apr 15, 2026
bb669df
docs-i18n: harden behavior fixture path reads (#67046)
hxy91819 Apr 15, 2026
7821fae
test(types): fix perf test follow-up mocks
vincentkoc Apr 15, 2026
88d3620
feat(github-copilot): add embedding provider for memory search (#61718)
feiskyer Apr 15, 2026
9c32c2b
fix(gateway): clear fired close timeout handles
vincentkoc Apr 15, 2026
f6eb671
docs: cap release e2e lanes
steipete Apr 15, 2026
7bb670c
ci: raise extension boundary compile concurrency
vincentkoc Apr 15, 2026
dcaccdc
test: cap e2e install update phases
steipete Apr 15, 2026
e99a24d
fix(security): redact secrets in exec approval prompts (#61077) (#64790)
feiskyer Apr 15, 2026
804bb0f
fix(configure): re-read config hash after persist to avoid stale-hash…
feiskyer Apr 15, 2026
becd144
fix(gateway): stabilize imsg alias test coverage
vincentkoc Apr 15, 2026
8dd1abe
Update CHANGELOG.md
vincentkoc Apr 15, 2026
edfa074
Tests: align pnpm test expectations with main (#67001)
hxy91819 Apr 15, 2026
ec3bbae
test: cover npm global install smoke
steipete Apr 15, 2026
7883412
Update CHANGELOG.md
vincentkoc Apr 15, 2026
f09a4d9
fix(agents): move lean local-model mode behind experimental flag
vincentkoc Apr 15, 2026
a780151
docs: add experimental-features page and de-experimentalize dreaming
vincentkoc Apr 15, 2026
c727388
fix(plugins): localize bundled runtime deps to extensions (#67099)
vincentkoc Apr 15, 2026
b855b1d
fix(ci): clear extension lint regressions
vincentkoc Apr 15, 2026
bb4498c
test(plugins): align unreadable manifest traversal failure code
vincentkoc Apr 15, 2026
890e299
fix(ci): align docker smoke cache tests and reuse built dist
vincentkoc Apr 15, 2026
c5b3f00
test(plugins): align jiti loader cache expectations
vincentkoc Apr 15, 2026
7d2e068
test(agents): trim extraparams anthropic passthrough cost
vincentkoc Apr 15, 2026
1bca9ba
fix(release): mirror bundled runtime deps
steipete Apr 15, 2026
3830e68
test(perf): speed up slow gateway specs
vincentkoc Apr 15, 2026
963ad1d
QA: extend Matrix live contract coverage
gumadeiras Apr 15, 2026
9315810
test(plugins): allow packaged runtime mirrors
steipete Apr 15, 2026
b9d0fc5
fix(qa-matrix): remove unused scenario import
steipete Apr 15, 2026
d2a219e
fix(media): allow host-local CSV and Markdown uploads via Slack (#67047)
Unayung Apr 15, 2026
9f7a613
Merge remote-tracking branch 'upstream/main' into linfangw-upstream-s…
linfangw Apr 15, 2026
565f4c8
plugins: preserve qveris runtime surfaces
linfangw Apr 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
55 changes: 54 additions & 1 deletion .agents/skills/openclaw-parallels-smoke/SKILL.md

Large diffs are not rendered by default.

148 changes: 148 additions & 0 deletions .agents/skills/openclaw-qa-testing/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
---
name: openclaw-qa-testing
description: Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.
---

# OpenClaw QA Testing

Use this skill for `qa-lab` / `qa-channel` work. Repo-local QA only.

## Read first

- `docs/concepts/qa-e2e-automation.md`
- `docs/help/testing.md`
- `docs/channels/qa-channel.md`
- `qa/README.md`
- `qa/scenarios/index.md`
- `extensions/qa-lab/src/suite.ts`
- `extensions/qa-lab/src/character-eval.ts`

## Model policy

- Live OpenAI lane: `openai/gpt-5.4`
- Fast mode: on
- Do not use:
- `openai/gpt-5.4-pro`
- `openai/gpt-5.4-mini`
- Only change model policy if the user explicitly asks.

## Default workflow

1. Read the scenario pack and current suite implementation.
2. Decide lane:
- mock/dev: `mock-openai`
- real validation: `live-frontier`
3. For live OpenAI, use:

```bash
OPENCLAW_LIVE_OPENAI_KEY="${OPENAI_API_KEY}" \
pnpm openclaw qa suite \
--provider-mode live-frontier \
--model openai/gpt-5.4 \
--alt-model openai/gpt-5.4 \
--output-dir .artifacts/qa-e2e/run-all-live-frontier-<tag>
```

4. Watch outputs:
- summary: `.artifacts/qa-e2e/run-all-live-frontier-<tag>/qa-suite-summary.json`
- report: `.artifacts/qa-e2e/run-all-live-frontier-<tag>/qa-suite-report.md`
5. If the user wants to watch the live UI, find the current `openclaw-qa` listen port and report `http://127.0.0.1:<port>`.
6. If a scenario fails, fix the product or harness root cause, then rerun the full lane.

## Character evals

Use `qa character-eval` for style/persona/vibe checks across multiple live models.

```bash
pnpm openclaw qa character-eval \
--model openai/gpt-5.4,thinking=xhigh \
--model openai/gpt-5.2,thinking=xhigh \
--model openai/gpt-5,thinking=xhigh \
--model anthropic/claude-opus-4-6,thinking=high \
--model anthropic/claude-sonnet-4-6,thinking=high \
--model zai/glm-5.1,thinking=high \
--model moonshot/kimi-k2.5,thinking=high \
--model google/gemini-3.1-pro-preview,thinking=high \
--judge-model openai/gpt-5.4,thinking=xhigh,fast \
--judge-model anthropic/claude-opus-4-6,thinking=high \
--concurrency 16 \
--judge-concurrency 16 \
--output-dir .artifacts/qa-e2e/character-eval-<tag>
```

- Runs local QA gateway child processes, not Docker.
- Preferred model spec syntax is `provider/model,thinking=<level>[,fast|,no-fast|,fast=<bool>]` for both `--model` and `--judge-model`.
- Do not add new examples with separate `--model-thinking`; keep that flag as legacy compatibility only.
- Defaults to candidate models `openai/gpt-5.4`, `openai/gpt-5.2`, `openai/gpt-5`, `anthropic/claude-opus-4-6`, `anthropic/claude-sonnet-4-6`, `zai/glm-5.1`, `moonshot/kimi-k2.5`, and `google/gemini-3.1-pro-preview` when no `--model` is passed.
- Candidate thinking defaults to `high`, with `xhigh` for OpenAI models that support it. Prefer inline `--model provider/model,thinking=<level>`; `--thinking <level>` and `--model-thinking <provider/model=level>` remain compatibility shims.
- OpenAI candidate refs default to fast mode so priority processing is used where supported. Use inline `,fast`, `,no-fast`, or `,fast=false` for one model; use `--fast` only to force fast mode for every candidate.
- Judges default to `openai/gpt-5.4,thinking=xhigh,fast` and `anthropic/claude-opus-4-6,thinking=high`.
- Report includes judge ranking, run stats, durations, and full transcripts; do not include raw judge replies. Duration is benchmark context, not a grading signal.
- Candidate and judge concurrency default to 16. Use `--concurrency <n>` and `--judge-concurrency <n>` to override when local gateways or provider limits need a gentler lane.
- Scenario source should stay markdown-driven under `qa/scenarios/`.
- For isolated character/persona evals, write the persona into `SOUL.md` and blank `IDENTITY.md` in the scenario flow. Use `SOUL.md + IDENTITY.md` only when intentionally testing how the normal OpenClaw identity combines with the character.
- Keep prompts natural and task-shaped. The candidate model should receive character setup through `SOUL.md`, then normal user turns such as chat, workspace help, and small file tasks; do not ask "how would you react?" or tell the model it is in an eval.
- Prefer at least one real task, such as creating or editing a tiny workspace artifact, so the transcript captures character under normal tool use instead of pure roleplay.

## Codex CLI model lane

Use model refs shaped like `codex-cli/<codex-model>` whenever QA should exercise Codex as a model backend.

Examples:

```bash
pnpm openclaw qa suite \
--provider-mode live-frontier \
--model codex-cli/<codex-model> \
--alt-model codex-cli/<codex-model> \
--scenario <scenario-id> \
--output-dir .artifacts/qa-e2e/codex-<tag>
```

```bash
pnpm openclaw qa manual \
--model codex-cli/<codex-model> \
--message "Reply exactly: CODEX_OK"
```

- Treat the concrete Codex model name as user/config input; do not hardcode it in source, docs examples, or scenarios.
- Live QA preserves `CODEX_HOME` so Codex CLI auth/config works while keeping `HOME` and `OPENCLAW_HOME` sandboxed.
- Mock QA should scrub `CODEX_HOME`.
- If Codex returns fallback/auth text every turn, first check `CODEX_HOME`, `~/.profile`, and gateway child logs before changing scenario assertions.
- For model comparison, include `codex-cli/<codex-model>` as another candidate in `qa character-eval`; the report should label it as an opaque model name.

## Repo facts

- Seed scenarios live in `qa/`.
- Main live runner: `extensions/qa-lab/src/suite.ts`
- QA lab server: `extensions/qa-lab/src/lab-server.ts`
- Child gateway harness: `extensions/qa-lab/src/gateway-child.ts`
- Synthetic channel: `extensions/qa-channel/`

## What “done” looks like

- Full suite green for the requested lane.
- User gets:
- watch URL if applicable
- pass/fail counts
- artifact paths
- concise note on what was fixed

## Common failure patterns

- Live timeout too short:
- widen live waits in `extensions/qa-lab/src/suite.ts`
- Discovery cannot find repo files:
- point prompts at `repo/...` inside seeded workspace
- Subagent proof too brittle:
- prefer stable final reply evidence over transient child-session listing
- Harness “rebuild” delay:
- dirty tree can trigger a pre-run build; expect that before ports appear

## When adding scenarios

- Add or update scenario markdown under `qa/scenarios/`
- Keep kickoff expectations in `qa/scenarios/index.md` aligned
- Add executable coverage in `extensions/qa-lab/src/suite.ts`
- Prefer end-to-end assertions over mock-only checks
- Save outputs under `.artifacts/qa-e2e/`
4 changes: 4 additions & 0 deletions .agents/skills/openclaw-qa-testing/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
interface:
display_name: "QA Test OpenClaw"
short_description: "Run and debug qa-lab and qa-channel scenarios"
default_prompt: "Use $openclaw-qa-testing to run or extend the OpenClaw QA suite with qa-lab and qa-channel, using regular openai/gpt-5.4 in fast mode for live OpenAI runs."
48 changes: 42 additions & 6 deletions .agents/skills/openclaw-release-maintainer/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,22 @@ node --import tsx scripts/openclaw-npm-postpublish-verify.ts <published-version>
- For stable correction releases like `YYYY.M.D-N`, it also verifies the
upgrade path from `YYYY.M.D` to `YYYY.M.D-N` so a correction publish cannot
silently leave existing global installs on the old base stable payload.
- Treat install smoke as a pack-budget gate too. `pnpm test:install:smoke`
now fails the candidate update tarball when npm reports an oversized
`unpackedSize`, so release-time e2e cannot miss pack bloat that would risk
low-memory install/startup failures.
- Keep direct npm global coverage enabled in install smoke. It exercises plain
`npm install -g <candidate>` fresh installs and npm-driven update installs,
because many users install with npm even when docs prefer pnpm.
- Use `pnpm test:live:media video` for bounded video-provider smoke when video
generation is in release scope. The default video smoke skips `fal`, runs one
text-to-video attempt per provider with a one-second lobster prompt, and caps
each provider operation with `OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS`
(`180000` by default).
- Run `pnpm test:live:media video --video-providers fal` only when FAL-specific
proof is required. Its queue latency can dominate release time.
- Set `OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1` only when intentionally
validating the slower image-to-video and video-to-video transform lanes.

## Check all relevant release builds

Expand All @@ -97,6 +113,13 @@ node --import tsx scripts/openclaw-npm-postpublish-verify.ts <published-version>
- `pnpm release:check`
- `OPENCLAW_INSTALL_SMOKE_SKIP_NONROOT=1 pnpm test:install:smoke`
- Check all release-related build surfaces touched by the release, not only the npm package.
- For beta-style full e2e batteries, hard-cap top-level long lanes instead of letting them run indefinitely. Use host `timeout --foreground`/`gtimeout --foreground` caps such as:
- `45m` for `OPENCLAW_INSTALL_SMOKE_SKIP_NONROOT=1 pnpm test:install:smoke`
- `90m` for `pnpm test:docker:all`
- Parallels caps from the `openclaw-parallels-smoke` skill
If a lane hits its cap, stop and inspect/fix the affected lane before continuing; do not continue to wait on the same process.
- Actual npm install/update phases are capped at 5 minutes. If `npm install -g`, installer package install, or `openclaw update` takes longer than 300s in release e2e, stop treating the run as healthy progress and debug the installer/updater or harness.
- Serialize host build/package mutations ahead of VM lanes. Finish `pnpm build`, `pnpm ui:build`, `pnpm release:check`, install smoke, and any Docker/package-prep lanes before starting Parallels `npm pack` lanes; otherwise `dist` can disappear during VM pack prep and produce false failures.
- Include mac release readiness in preflight by running the public validation
workflow in `openclaw/openclaw` and the real mac preflight in
`openclaw/releases-private` for every release.
Expand All @@ -120,6 +143,10 @@ node --import tsx scripts/openclaw-npm-postpublish-verify.ts <published-version>
`.github/workflows/openclaw-npm-release.yml`, but it still needs a valid
`NPM_TOKEN` because `npm dist-tag` management is separate from trusted
publishing.
- Direct stable publishes can also run the same workflow with
`sync_stable_dist_tags=true` to point both `latest` and `beta` at the
already-published stable version. This also needs the `npm-release`
environment approval and `NPM_TOKEN`.
- The publish run must be started manually with `workflow_dispatch`.
- The npm workflow and the private mac publish workflow accept
`preflight_only=true` to run validation/build/package steps without uploading
Expand Down Expand Up @@ -178,7 +205,10 @@ node --import tsx scripts/openclaw-npm-postpublish-verify.ts <published-version>
plan does not yet support required reviewers there, do not assume the
environment alone is the approval boundary; rely on private repo access and
CODEOWNERS until those settings can be enabled.
- Do not use `NPM_TOKEN` or the plugin OTP flow for OpenClaw releases.
- Do not use `NPM_TOKEN` or the plugin OTP flow for the OpenClaw package
publish path; package publishing uses trusted publishing.
- Use `NPM_TOKEN` only for explicit npm dist-tag management modes, because npm
does not support trusted publishing for `npm dist-tag add`.
- `@openclaw/*` plugin publishes use a separate maintainer-only flow.
- Only publish plugins that already exist on npm; bundled disk-tree-only plugins stay unpublished.

Expand Down Expand Up @@ -248,19 +278,25 @@ node --import tsx scripts/openclaw-npm-postpublish-verify.ts <published-version>
passes with the same stable tag, `promote_beta_to_latest=true`,
`preflight_only=false`, empty `preflight_run_id`, and `npm_dist_tag=beta`,
then verify `latest` now points at that version.
17. Start
17. If the stable release was published directly to `latest` and `beta` should
follow it, start `.github/workflows/openclaw-npm-release.yml` again with
the same stable tag, `sync_stable_dist_tags=true`,
`promote_beta_to_latest=false`, `preflight_only=false`, empty
`preflight_run_id`, and `npm_dist_tag=latest`, then verify both `latest`
and `beta` point at that version.
18. Start
`openclaw/releases-private/.github/workflows/openclaw-macos-publish.yml`
for the real publish with the successful private mac `preflight_run_id` and
wait for success.
18. Verify the successful real private mac run uploaded the `.zip`, `.dmg`,
19. Verify the successful real private mac run uploaded the `.zip`, `.dmg`,
and `.dSYM.zip` artifacts to the existing GitHub release in
`openclaw/openclaw`.
19. For stable releases, download `macos-appcast-<tag>` from the successful
20. For stable releases, download `macos-appcast-<tag>` from the successful
private mac run, update `appcast.xml` on `main`, and verify the feed.
20. For beta releases, publish the mac assets but expect no shared production
21. For beta releases, publish the mac assets but expect no shared production
`appcast.xml` artifact and do not update the shared production feed unless a
separate beta feed exists.
21. After publish, verify npm and the attached release artifacts.
22. After publish, verify npm and the attached release artifacts.

## GHSA advisory work

Expand Down
Loading