Vincent Koc
091bc7f9ed
Merge remote-tracking branch 'origin/main' into experiment/google-cli-supported-paths
...
* origin/main: (115 commits)
test: type session request parameters (#116713 )
fix: retain event invalidation for pagination
docs: note queued session refresh fix
fix: preserve queued session refresh options
fix(exec): require approval for abbreviated inline eval flags [AI] (#116529 )
fix: keep owner-only tools out of non-owner skill commands [AI] (#116532 )
fix(tui): require a fresh agent roster (#116715 )
fix(memory-wiki): preserve user edits when rolling back ChatGPT imports (#116517 )
fix(agents): cron failures preserve timeout and cancellation reasons (#116566 )
fix(release): unblock beta validation workflows (#116708 )
fix(ci): discover frozen target startup benchmark cases (#116711 )
fix(session): preserve reset message payloads (#116195 )
fix(qa): tolerate loaded-runner bus delivery stalls (#116448 )
improve(ci): rebalance embedded agent test configs (#116436 )
fix(browser): return committed trace path (#116702 )
fix(qa): exceed Slack table aggregate limit in fallback probe (#116447 )
fix(qa): use built plugin tools server (#116442 )
fix(test): keep memory FD repro config valid (#116698 )
fix(telegram): keep queued tool progress in one message (#116685 )
fix(qa): stop waiting on yielded fanout runs (#116440 )
...
# Conflicts:
# src/system-agent/setup-inference-detect.ts
# ui/src/e2e/model-setup.e2e.test.ts
2026-07-31 16:40:33 +08:00
joshavant
23dbee9e38
fix(github-copilot): honor live model selection in guided setup
2026-07-30 21:15:10 -05:00
Vincent Koc
af82ca471c
test(setup): allow timeout fallback without prepare options
2026-07-31 09:20:11 +08:00
Vincent Koc
94b85cba5f
feat(setup): improve local model onboarding
2026-07-31 08:53:13 +08:00
Vincent Koc
98df5a2287
fix(onboarding): hide unsupported Google CLI setup routes
2026-07-30 22:36:33 +08:00
Vincent Koc
12e5eb6a23
fix(ui): clarify model setup flows ( #116086 )
2026-07-30 09:47:57 +08:00
Vincent Koc
4278fdfd5e
Merge pull request #115825 from openclaw/refactor/health-owner-boundary
...
refactor(gateway): own health snapshot collection
2026-07-29 22:00:59 +08:00
Vincent Koc
b6f70ea440
fix(setup): make Gemini recovery actionable ( #115835 )
2026-07-29 18:29:32 +08:00
Vincent Koc
46f629882b
refactor(gateway): own health summary contract
2026-07-29 17:36:30 +08:00
Eugene Harold Krabs
198e702642
fix(system-agent): avoid TUI startup catalog preparation ( #113136 )
...
* fix(system-agent): avoid TUI startup catalog preparation
* test(system-agent): mock prepared catalog snapshot
* test(system-agent): prove nonblocking setup catalog startup
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 04:06:21 -04:00
Vincent Koc
25d6e5f841
fix(onboarding): Codex setup no longer fails after verification ( #115704 )
...
* fix(onboarding): keep verified Codex harness active
* chore(ci): refresh pull request base
2026-07-29 15:25:35 +08:00
Peter Steinberger
9e5e6f961e
feat(system-agent): host memory import in Ask OpenClaw ( #115376 )
...
* feat(wizard): expose memory import outcomes
* feat(system-agent): host memory import in chat
* test(system-agent): trip the copy-boundary recheck inside the wizard run
* fix(system-agent): guard memory import against drift and partial-copy lies
* fix(wizard): return typed memory import outcomes in callers
* test(onboard): split guided memory-import coverage
* fix(system-agent): use effective config for memory import
* test(onboard): type memory import detection mock
2026-07-28 16:27:47 -04:00
Peter Steinberger
792f276daf
feat(system-agent): guide gateway configuration in Ask OpenClaw ( #115363 )
...
* feat(system-agent): add guided gateway configuration
* test(system-agent): cover guided gateway setup
* fix(system-agent): skip lockout warning when the gateway wizard refuses
* fix(system-agent): print the shell restart command after terminal gateway handoff
* test(system-agent): satisfy prefer-const on the pinned base config
* style(system-agent): reformat tui-backend handoff messages
2026-07-28 15:02:28 -04:00
Peter Steinberger
29b6f56254
feat(system-agent): host skills and web-search setup in Ask OpenClaw ( #115130 )
...
* feat(system-agent): host skills and search setup
* test(system-agent): align stop-message assertions with channel-specific labels
* fix(system-agent): report failed search-provider install honestly
* fix(system-agent): preserve nonfatal search setup skips
* test(flows): satisfy plugin-install mock return type
* test(system-agent): split setup-flow operation tests
2026-07-28 06:59:28 -04:00
Peter Steinberger
2025c3d1b8
feat(system-agent): give Ask OpenClaw ambient page context ( #114943 )
...
* feat(ui): add custodian page context
* fix(system-agent): keep planner input free of the pending-proposal marker
* fix(system-agent): preserve context-free call shape
* refactor(system-agent): isolate page context boundaries
* fix(gateway): canonicalize UI context
* fix(gateway): enforce ASCII page context
2026-07-28 05:30:44 -04:00
Peter Steinberger
4273ca9dbd
refactor(sessions): remove file-era transcript runtime ( #113233 )
...
* refactor(sessions): keep helper transcripts in memory
* refactor(sessions): remove file-era transcript storage
* test(sessions): use SQLite identity in attempt persistence
* test(codex): isolate legacy transcript fixtures
* fix(sessions): preserve SQLite transcript identity
* fix(sessions): harden transcript lifecycle invariants
* fix(sessions): validate transcript identities
* fix(sessions): close identity compatibility gaps
* fix(sessions): preserve leaf and plugin identities
* fix(sessions): retain dispatch transcript targets
* fix(sessions): preserve active transcript context
* fix(sessions): isolate artifact accounting
* fix(sessions): bound SQLite usage accounting
* fix(sessions): retain bounded latest usage
* fix(sessions): align rebased transcript targets
* test(sessions): align accessor scope fixture
* fix(telegram): derive SQLite transcript identity
* refactor(sessions): remove file-era compaction residue
* chore(sessions): lower max-lines baseline
* fix(sessions): preserve structured transcript identity
* test(sessions): align doctor identity assertions
* fix(sessions): isolate default SDK database
* refactor(sessions): remove dead file-era exports
* fix(sessions): reconcile SQLite transcript identity
* fix(sessions): pass checkpoint identity explicitly
* test(sessions): make entry field probe explicit
* test(sessions): satisfy transcript cleanup lint
* test(sessions): align diagnostics identity proof
* fix(sessions): finish transcript runtime teardown
* fix(sessions): preserve transcript identity invariants
* fix(sessions): harden transcript compatibility edges
* fix(sessions): preserve checkpoint transcript anchors
* fix(sessions): preserve SQLite lifecycle invariants
* fix(sessions): retarget compaction successors
* test(sessions): preserve transcript fixture semantics
* feat(plugin-sdk): add command transcript targets
* fix(sessions): serialize transcript rewrites
* fix(sessions): validate legacy successor identity
* fix(sessions): normalize compaction ownership
* fix(sessions): validate successor identity before adoption
* fix(sessions): preserve plugin transcript ownership
* fix(sessions): carry transcript identity through commands
* fix(sessions): import legacy checkpoint artifacts into SQLite
* fix(sessions): preserve successor transcript ownership
* fix(sessions): align transcript consumers with target identity
* fix(sessions): scope transcript token estimates
* fix(sessions): retain agent identity across lifecycle hooks
* fix(sessions): resolve scoped SQLite targets
* fix(sessions): isolate lifecycle transcript targets
* fix(sessions): validate compaction agent ownership
* fix(sessions): preserve reset and cleanup lifecycle
* fix(sessions): serialize prompt cleanup lifecycle
* fix(sessions): remove stale lock import
* fix(sessions): preserve reset target context
* fix(sessions): fence prompt reload takeover
* fix(sessions): unblock abort and default lifecycle reads
* fix(sessions): validate legacy successor scope
* fix(sessions): reject metadata-only runtime rows
* fix(sessions): propagate custom transcript stores
* fix(sessions): preserve adopted retry targets
* fix(sessions): allow unkeyed usage reads
* fix(sessions): harden runtime target boundaries
* fix(sessions): serialize retry transcript writes
* fix(sessions): bound prompt reload disposal
* fix(sessions): complete retry marker identity
* fix(sessions): keep legacy marker identity minimal
* test(sessions): tighten teardown fixture types
* fix(sessions): preserve compatibility target identity
* test(sessions): persist post-checkpoint boundary turn
* test(sessions): align runtime store mock contracts
* style(sessions): simplify persisted identity guard
* fix(sessions): prefer complete typed targets
* fix(sessions): recover legacy marker targets
* test(sessions): align marker lookup fixture scope
* fix(sessions): validate partial transcript targets
* fix(sessions): reconcile partial transcript identities
* fix(sessions): canonicalize compatibility identities
* test(sessions): cover compatibility aliases
* fix(sessions): adopt legacy successor identity
* fix(sessions): preserve usage read identity
* fix(sessions): preserve partial marker compatibility
* fix(sessions): validate legacy successor mappings
* fix(sessions): reconcile marker store mappings
* fix(sessions): preserve legacy fallback identity
* fix(sessions): harden marker alias resolution
* fix(sessions): prefer verified successor aliases
* fix(sessions): resolve preferred marker aliases
* fix(sessions): serialize cleanup admission
* fix(sessions): align marker lookup scopes
* fix(codex): type marker alias summaries
* style(sessions): satisfy changed lint
* test(sessions): align structured target assertions
* fix(sessions): reconcile latest identity contracts
* fix(sessions): validate transcript identity boundaries
* docs(sessions): explain stable registry keys
* fix(sessions): harden compatibility target round trips
* fix(sessions): port usage identity to split modules
* test(sessions): align subagent transcript identity
* fix(sessions): finish transcript identity migration
* fix(agents): route subagent completion capture through transcript targets
* fix(agents): settle SQLite prompt handoff during cleanup
* chore: shrink max-lines baseline after teardown
* fix(sessions): port teardown across split runtime owners
* fix(sessions): carry transcript targets through split owners
* test(agents): use SQLite compaction target in abort coverage
* chore: retain unrelated max-lines suppressions
* chore: shrink max-lines baseline after main splits
* style(agents): const compaction checkpoint locals
* fix(sessions): harden SQLite teardown boundaries
* test(sessions): use typed metadata in predicate isolation fixture
* test(agents): cover malformed settlement rejections lint-safely
* fix(sessions): close remaining SQLite identity races
* fix(agents): fail closed on incomplete successor targets
* fix(sessions): preserve transcript identity fallbacks
* fix(agents): preserve session-key abort admission
* fix(trajectory): validate incomplete export targets
* test(sessions): drop retired pricing cache imports
* fix(sessions): validate partial transcript identities
* fix(sessions): close transcript identity edge cases
* fix(plugins): reserve retired transcript locator slot
* fix(sessions): scope transcript locks by target
* style(sessions): simplify SDK initialization error
* fix(sessions): preserve initialized transcript state
* fix(codex): verify mirrored history session keys
* fix(sessions): reject stale transcript ownership
* fix(sessions): anchor asynchronous transcript ownership
* fix(sessions): measure active transcript state
* fix(sessions): preserve scoped transcript compaction
* fix(sessions): harden transcript identity and lifecycle
* fix(sessions): resolve scoped command transcript stores
* fix(sessions): make transcript appends failure-atomic
* fix(sessions): enforce scoped transcript ownership
* fix(sessions): reject cross-owner transcript handoffs
* fix(sessions): fence cleanup transcript ownership
* fix(sessions): retire stale write ownership contexts
* fix(sessions): preserve pending session migration state
* fix(sessions): validate migrated transcript ownership
* fix(sessions): validate usage transcript targets
* fix(sessions): clear predecessor transcript metadata
* fix(sessions): align durable session event targets
* fix(sessions): fence late prompt handoffs
* fix(sessions): fence lifecycle transcript fallbacks
* fix(sessions): bound zero-length memory capture
* fix(sessions): preserve transcript teardown ownership
* fix(sessions): reject duplicate cleanup ownership
* fix(sessions): serialize runtime writes with sqlite leases
* fix(sessions): close sqlite teardown concurrency gaps
* fix(sessions): preserve nested lifecycle failures
* fix(sessions): canonicalize sqlite transcript ownership
* fix(sessions): settle disposed prompt handoffs
* fix(sessions): resolve canonical attempt lock targets
* test(sessions): align canonical target fixtures
* test(sessions): retire redundant jsonl parser coverage
* refactor(sessions): split active transcript cursors
* test(memory): retire legacy marker fixture
* fix(sessions): preserve canonical transcript access after rebase
* fix(sessions): fence prompt lease and return transcript targets
* fix(sessions): colocate transcript leases with target store
* fix(sessions): canonicalize transcript lease and worker targets
* fix(sessions): preserve plugin and fork identity markers
* fix(sessions): complete sqlite transcript target migration
* fix(sessions): integrate canonical followup identity
* fix(sessions): preserve bounded transcript topology
* fix(sessions): validate transcript identity boundaries
* fix(context): separate caller and successor targets
* test(sessions): split persistence compatibility coverage
* test(sessions): preserve fixture topology efficiently
* chore(sdk): refresh plugin api baseline
* test(agents): align compaction lock target mocks
* test(sessions): seed malformed transcript fixtures directly
* fix(agents): canonicalize transcript compatibility inputs
* fix(agents): type optional tool result ids
* test(ci): stabilize loaded process timing
* test(tui): wait for collect queue admission
2026-07-27 22:33:24 -04:00
Peter Steinberger
e9ef30e739
refactor(config): split write preparation primitives ( #114228 )
2026-07-26 22:00:29 -04:00
Peter Steinberger
4bfb26415a
feat(agents): explicit per-surface agent targets + default-role materialization ( #113637 )
...
* refactor(agents): add explicit ambient target seams
* fix(doctor): materialize ambient default-agent roles
* fix(agents): satisfy dependency and docs checks
* chore: leave agent release note to release process
* test(agents): prove shared heartbeat fan-out survives doctor
2026-07-25 05:37:41 -07:00
Peter Steinberger
82d1a03f25
refactor(agents): move implicit-main fallback into load-time roster injection ( #112678 )
...
* refactor(agents): require explicit roster defaults
* feat(onboard): create named first roster agent
* refactor(agents): remove runtime main fallbacks
* style(agents): apply roster refactor formatting
* refactor(agents): finish roster-only runtime sweep
* fix(doctor): migrate legacy main session sqlite
* fix(doctor): harden roster session migrations
* fix(onboard): commit first agent atomically
* fix(config): support empty-roster analysis
* fix(agents): preserve legacy main state during creation
* fix(setup): materialize baseline agent roster
* fix(agents): harden legacy default transfer recovery
* fix(agents): simplify roster-only legacy compatibility
* fix(agents): preserve staged first-agent entries
* fix(config): migrate persisted implicit-main rosters
* fix(config): preserve staged empty rosters
* fix(agents): finalize roster-only upgrade paths
* fix(sessions): close legacy main migration outcomes
* fix(config): migrate legacy roster markers at load
* fix(sessions): preserve roster upgrade history
* refactor(sessions): restore lean legacy main compatibility
* fix(setup): prepare first-agent credentials before publish
* fix(config): stabilize roster snapshot migration
* refactor(sessions): shrink legacy main compatibility
* fix(agents): restore roster compatibility fidelity
* fix(sessions): preserve divergent legacy history
* refactor(agents): narrow roster-only scope
* fix(config): isolate roster migration
* test(agents): align roster-only fixtures
* fix(agents): keep main agent undeletable
* fix(agents): harden roster migration invariants
* fix(agents): close setup and audit scope gaps
* fix(cron): scope session reaper throttles by agent
* fix(agents): preserve scoped owner precedence
* fix(config): preserve authored config ownership
* fix(setup): keep default workspace and roster in sync
* fix(setup): preserve default entry workspace on bare runs
* fix(agents): adapt roster rebase to keyed entries
* fix(agents): honor both roster representations
* fix(agents): route roster reads through shared helpers
* fix(config): preserve canonical roster writes
* fix(cron): resolve dynamic default for session reaper
* fix(agents): close dynamic default migration gaps
* fix(agents): align scoped session ownership
* fix(sessions): preserve legacy main directory casing
* fix(agents): align cron and legacy auth ownership
* fix(setup): provision the committed default workspace
* fix(cron): align scoped ownership and reaping
* fix(cron): treat blank agent ids as absent
* fix(cron): retain configured session-store owners
* fix(agents): repair roster-aware CI boundaries
* fix(cron): preserve scoped ownership resolution
* fix(agents): preserve rosterless maintenance paths
* fix(agents): propagate roster ownership through runtime boundaries
* fix(agents): preserve roster ownership across runtime paths
* fix(agents): harden roster diagnostics and legacy routing
* fix(agents): remove redundant diagnostic import
* test(agents): type CLI policy fixture explicitly
* fix(config): preserve canonical roster mutation identity
* fix(doctor): read canonical agent rosters consistently
* fix(config): resolve compound roster unsets safely
* fix(config): finalize main-session reconciliation
* fix(doctor): read canonical session state safely
* fix(sessions): preserve current visibility alias
* fix(config): track roster include provenance
* test(config): type roster provenance cases
* fix(config): refine roster include ownership
* fix(agents): preserve staged roster invariants
* test(config): align fixtures with explicit roster ownership
* test(node-host): preserve optional plan typing
* fix(config): preserve authored roster projections
* test(config): keep raw roster fixtures explicit
* test(config): normalize rosters at runtime fixtures
* fix(config): protect authored roster ownership
* fix(agents): require explicit session ownership
* fix(agents): enforce scoped roster ownership
* fix(sessions): merge fixed-store agent partitions
* fix(agents): harden roster ownership boundaries
* fix(config): reject ambiguous roster projections
* fix(sessions): preserve persisted store ownership
* fix(sessions): keep collision diagnostics additive
* fix(security): scan malformed roster workspaces
* test(config): align snapshot fixtures after rebase
* test(agents): use explicit roster fixtures
* fix(config): harden roster diagnostic boundaries
* fix(sessions): isolate fixed-store agent databases
* test(agents): type malformed default markers
* refactor(sessions): extract store collision resolution
* test(system-agent): split oversized setup coverage
* style(system-agent): format split setup suite
* fix(sessions): preserve promoted store ownership
* fix(sessions): derive scoped owner before target
* fix(sessions): preserve explicit sqlite ownership
* fix(agents): restore roster compatibility across CI
* fix(agents): enforce roster-owned runtime boundaries
* fix(agents): satisfy default lookup lint
* test(sessions): split known-owner coverage
* fix(state): satisfy path identity lint
* fix(agents): preserve malformed roster safety boundaries
* fix(agents): restore roster compatibility at runtime boundaries
* fix(config): satisfy roster boundary type checks
* fix(agents): preserve roster ownership across runtime probes
Setup inference probes now execute as the configured roster owner. Malformed agent-prefixed session rows are intentionally omitted by the fail-closed visibility contract rather than normalized by tests.
* fix(agents): satisfy session list owner lint
* fix(agents): preserve roster-owned runtime boundaries
Restore shared logical rows for exact SQLite session locators while keeping their physical database owner separate. The ownership regression test now constructs an explicit sole-owner database directly instead of relying on first-touch capture, matching the intentional shared-store contract.
* fix(sessions): preserve multiply owned exact stores
* fix(sessions): restore runtime owner boundaries
Keep incognito sentinels agent-owned, fold default-agent approvals into the global snapshot, and preserve the configless legacy-main CLI policy fallback. Also repair the existing CLI watchdog test lifecycle so the compact shard observes its timeout without an unawaited assertion or async timer stall; product behavior is unchanged by that test-only fix.
* test(ci): align owner-scoped fixtures
These assertions are unchanged. The fixtures now declare the intended non-default runner, expose the session-key constant imported by production status code, and select the main approvals bucket explicitly on Windows.
* fix(agents): close final roster ownership gaps
2026-07-24 22:38:09 -07:00
Peter Steinberger
2a5ad61ce9
feat(system-agent): constrain planner JSON output at generation time ( #113482 )
...
* feat(system-agent): constrain planner JSON output
* fix(ai): align response format request typing
* fix(ai): preserve response format backend contracts
2026-07-24 21:00:28 -07:00
Peter Steinberger
5bea268128
feat(anthropic): complete Claude Opus 5 rollout ( #113392 )
...
* feat(models): add Claude Opus 5 support
* test(models): align Opus 5 setup fixtures
* test(models): update ambient Opus 5 detection
* fix(models): reconcile Opus 5 support with main
2026-07-24 14:55:36 -07:00
joshavant
8287e21445
fix(cron): enforce caps across CLI backends
2026-07-24 01:24:03 -05:00
Peter Steinberger
78b987aa2e
fix: keep model catalog coherent across config reloads ( #112331 )
...
* fix(gateway): keep model catalog reads generation-safe
* fix(gateway): type owner-aware catalog snapshots
* fix(sessions): break lifecycle accessor import cycle
* fix(gateway): preserve requested catalog owner
* fix(gateway): keep catalog owner identity explicit
* fix(gateway): isolate catalog snapshot types
* fix(gateway): respect published catalog owner
* fix(gateway): reject mismatched catalog owners
* test(apple): gate unread patch timing explicitly
* fix(gateway): keep startup metadata bounded
* fix(gateway): forbid startup catalog fallback
* test(apple): wait for terminal outbox flush
* fix(cron): follow published model catalog owner
* test(cron): align catalog runtime mocks
* test(system-agent): isolate TUI catalog metadata
* test(gateway): refresh deletion session snapshot
* fix(gateway): preserve authoritative catalog owners
* fix(gateway): retain equivalent catalog preload
* fix(gateway): reject ownerless catalog projections
* fix(gateway): scope catalog loads to resolved agent
* fix(gateway): restore canonical catalog owner identity
* fix(cron): preserve published catalog owner
* test(cron): align owner snapshot mocks
* fix(cron): preserve replacement owner workspace
* fix(runtime): reject explicit catalog owner mismatch
* fix(runtime): preserve implicit owner fallback
* test(cron): resolve implicit owner fixtures
2026-07-23 10:54:27 -07:00
Peter Steinberger
9a624cd78f
fix(ios): localize Agent Pro detail labels ( #112980 )
...
* fix(ios): preserve localized Agent Pro detail labels
* fix(ios): localize Dreaming metric labels
* test(ios): refresh native localization inventory
* test(setup): align isolated detection fallback
* test(system-agent): allow slow shared TUI setup
* test(chat): allow loaded outbox retry drain
---------
Co-authored-by: Alix-007 <li.long15@xydigit.com >
2026-07-23 09:01:07 -07:00
Peter Steinberger
9cbbac8fc8
refactor(plugins): prune retired compatibility tombstones ( #113025 )
...
* refactor(plugins): prune retired compat tombstones
* chore: shrink cleanup ratchets
* test(tooling): model flattened agent-core exports
* test(system-agent): isolate TUI catalog discovery
2026-07-23 07:30:35 -07:00
Peter Steinberger
5bd719fb9c
refactor(system-agent): split setup inference phases ( #113028 )
...
* refactor(system-agent): split setup inference phases
* fix(system-agent): preserve activation helper types
* fix(system-agent): keep read-only inference verification
* test(system-agent): track moved lint suppressions
2026-07-23 06:52:23 -07:00
Peter Steinberger
852548ce05
feat(onboard): stage migration imports before promotion ( #112798 )
...
* feat(onboard): stage migration imports before promotion
* fix(onboard): harden migration recovery
* fix(onboard): commit promoted config with CAS
* fix(onboard): resume setup after migration recovery
* test(onboard): split noninteractive migration coverage
* refactor(onboard): split migration promotion helpers
* fix(onboard): normalize migration preparation cleanup
* fix(onboard): preserve recovered inference ownership
* fix(codex): complete empty deferred plugin config
* fix(codex): reconcile deferred plugin config retries
* fix(onboard): resolve verification target after rebase
* refactor(onboard): trim retired migration exports
* test(onboard): assert read-only auth prompt store
2026-07-23 07:06:01 -04:00
Vincent Koc
84d149bf6f
fix(ui): use bundled model setup icons
2026-07-23 17:43:10 +08:00
Peter Steinberger
bf922f59fe
fix(onboard): keep setup effects on the default agent ( #112738 )
...
* fix(onboard): align default agent setup ownership
* chore(onboard): remove stale target assignments
* fix(onboard): preserve workspace provisioning boundary
2026-07-22 19:05:21 -04:00
Jason (Json)
dc5f14f442
fix(onboarding): reuse active Codex API-key authentication ( #112770 )
...
* fix(onboarding): import Codex API key auth
* fix(onboarding): honor active Codex API-key auth
* fix(onboarding): remove unused Codex auth export
2026-07-22 15:52:27 -06:00
Peter Steinberger
3c4a1ec905
refactor(agents): move CLI backend adapters from config DSL to registerCliBackend plugins (review request) ( #112539 )
...
* refactor(agents): move CLI backend adapters into plugins
* test(agents): register CLI backend fixtures through plugins
2026-07-22 00:25:29 -07:00
Jason (Json)
1a42e005fb
fix(anthropic): forward selected profiles to Claude CLI ( #112458 )
...
* fix(anthropic): forward Claude CLI auth profiles
* fix(system-agent): inject CLI auth route stores
* fix(claude-cli): pass profile credentials by descriptor
* fix(anthropic): repair selected profile CI coverage
* fix(anthropic): preserve profile owner validation
* test(system-agent): preserve selected profile fixtures
* test(system-agent): narrow selected profile fixture
* test(system-agent): resolve profile store merge
* fix(anthropic): forward profiles to node Claude runs
* fix(system-agent): reconcile profile route projection
* test(system-agent): thread profile store through projection
* fix(anthropic): make selected profile authoritative
* fix(system-agent): type auth setup failures
* fix(system-agent): type setup auth failures
* style: format Claude profile maintenance
* fix(anthropic): keep gateway credentials off nodes
* fix(anthropic): clear ambient auth for selected profiles
* fix(anthropic): secure paired-node Claude auth
* fix(node-host): type Claude fd spawn streams
* style(node-host): satisfy Claude spawn lint
* fix(process): capture exit before secret delivery
* fix(anthropic): preserve node-native Claude auth
2026-07-21 23:27:37 -06:00
Josh Lehman
cb797c959a
feat(wizard): narrate app-recommendation scan phases in the progress spinner ( #112414 )
2026-07-21 22:13:36 -07:00
Josh Lehman
4481c623cd
fix(onboard): survive inference owner drift and prefer subscription logins in guided setup ( #112378 )
...
* fix(onboard): survive inference owner drift and verify credentials route-aware
Guided onboarding crashed ("Could not start the CLI") on the openai-api-key
candidate when OPENAI_API_KEY was set and a Codex CLI login existed:
- owner revalidation resolved provider auth without the route model's
id/api, so the transport gate never applied and profile-first discovery
picked the Codex-imported ChatGPT OAuth profile instead of the env key
the probe ran with — a deterministic fingerprint mismatch
- that mismatch escaped the activation persistence path as a plain throw,
crashing the wizard ladder instead of moving to the next candidate
Owner re-resolution now carries resolved model transport facts (fail closed
when the model cannot be resolved), and all setup revalidation sites route
through one helper whose drift error activation maps to
{ ok: false, status: "auth" }.
* feat(onboard): prefer logged-in subscription CLIs over env API keys in setup ladder
* fix(onboard): promote codex only on verifiable ChatGPT OAuth tokens
* fix(onboard): surface detected AI candidates in the top auth-choice tier
* fix(onboard): name detected candidates and the current model clearly
* test(setup): mock model resolution in the bound-session lock test
* fix(system-agent): carry verified model transport facts
2026-07-21 22:03:26 -07:00
Peter Steinberger
edecdbd05e
refactor(config): config-surface reduction tranche 3 — product consolidations (review request) ( #111527 )
...
* refactor(config): consolidate media model lists
* refactor(config): unify memory configuration
* refactor(config): consolidate TTS ownership
* refactor(config): move typing policy to agents
* refactor(config): retire product-level config surfaces
* refactor(config): share scoped tool policy type
* chore(config): refresh generated baselines
* fix(config): honor agent typing overrides
* fix(config): migrate sibling config consumers
* refactor(infra): keep base64url decoder private
* fix(config): strip invalid legacy TTS values
* chore(config): refresh rebased baseline hash
* fix(doctor): route legacy messages.tts.realtime voice to talk during tts move
* refactor(config): polish final layout names
* refactor(config): freeze retired tuning defaults
* feat(config): add fast mode default symmetry
* refactor(config): key agent entries by id
* docs(config): update final layout reference
* test(config): cover final layout migrations
* chore(config): refresh final layout baselines
* fix(config): align final layout runtime readers
* fix(config): align remaining readers
* fix(config): stabilize final layout migrations
* fix(config): finalize config projection proof
* fix(config): address final layout review
* docs(release): preserve historical config names
* fix(config): complete keyed agent migration
* fix(config): close final migration gaps
* fix(config): finish full-branch review
* fix(config): complete runtime secret detection
* fix(config): close final review findings
* fix(config): finish canonical docs and heartbeat migration
* fix(config): integrate latest main after rebase
* refactor(env): isolate test-only controls
* refactor(env): isolate build and development controls
* refactor(env): collapse process identity indirection
* refactor(env): remove duplicate config and temp aliases
* docs(env): define the operator-facing allowlist
* ci(env): ratchet production variable count
* fix(env): remove stale provider helper import
* fix(env): make ratchet sorting explicit
* test(env): keep test seam in dead-code audit
* test(env): cover ratchet growth and boundary; document surface budgets
* docs(config): document tier-eval consolidations
* docs(config): clarify speech preference ownership
* test(memory): align retired tuning fixtures
* refactor(memory): freeze engine heuristics
* refactor(config): apply tier-eval tranche
* refactor(tts): move persona shaping to providers
* refactor(compaction): move prompt policy to providers
* test(config): align hookified prompt fixtures
* chore(deadcode): classify test-only exports
* chore(github): remove unused spawn helper
* chore(deadcode): classify queue diagnostics
* chore(deadcode): remove unused lane snapshot export
* chore(plugin-sdk): ratchet consolidated surface
* fix(config): integrate latest main after rebase
2026-07-21 20:28:43 -07:00
Peter Steinberger
d3430cae80
fix: keep Control UI setup responsive when discovery stalls ( #112338 )
...
* fix(gateway): keep setup responsive during inference discovery
* test(agents): align setup runtime coverage
* test(zoom-meetings): follow session agent routing
2026-07-21 20:13:07 -07:00
qingminlong
f79d7a3636
fix(system-agent): reject non-decimal wizard option numbers ( #108140 )
...
* fix(system-agent): reject non-decimal wizard option numbers
* style(system-agent): format wizard choice regression
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-21 10:04:58 -07:00
Vincent Koc
69d821569c
fix(ui): exit onboarding when setup is skipped ( #112165 )
...
* fix(ui): exit onboarding when setup is skipped
* fix(ui): satisfy onboarding validation gates
* fix(ui): keep transcript helpers module-local
* style(ui): format transcript helper
2026-07-21 15:38:52 +08:00
Peter Steinberger
49ff6a4497
fix(protocol): classify system agents in rosters ( #111920 )
...
* fix(protocol): classify system agents in rosters
* fix(ci): align agent kind client gates
* fix(ci): keep roster filtering in startup bundle
* chore(ui): remove superseded roster module
* style(android): satisfy agent kind test formatting
* style(linux): format merged agent capability assertion
* fix(config): reject reserved system agent ids
* chore(i18n): refresh native source inventory
* style(android): format agent kind surfaces
* fix(gateway): preserve configured agent ownership
2026-07-20 16:57:04 -07:00
Peter Steinberger
7cafe35bd5
fix(onboard): never silently remap an existing fleet's workspaces ( #111787 )
...
* fix(onboard): preserve agent workspaces on rerun
* fix(onboard): preserve first-run workspace setup
2026-07-20 16:16:04 -07:00
Peter Steinberger
629de998f9
feat(system-agent): agentic cached caretaker greeting with quick actions ( #111615 )
...
* feat(system-agent): agentic cached caretaker greeting with quick actions
* test(gateway): pin caretaker greeting in session-ownership tests
* fix(system-agent): offer agent handoff chip only when a model is available
* fix(ci): typecheck narrowing, lint, and knip gates for greeting module
* fix(system-agent): reject structured greeting output on every retained line
* test(gateway): split caretaker welcome tests under the max-lines gate
2026-07-20 01:21:09 -07:00
Peter Steinberger
ddf57c083f
fix(onboard): keep invalid wizard retries unpersisted ( #111558 )
...
* fix(onboard): validate wizard retries before persist
* fix(onboard): stage retry auth profiles until verified
* test(onboard): clarify staged credential fixtures
* refactor(onboard): preserve immediate provider auth path
* fix(onboard): retain staged auth across retries
* fix(onboard): isolate rejected auth repairs
* fix(onboard): retain verified credential refreshes
* test(onboard): mark credential fixtures synthetic
* test(onboard): use canonical secret placeholders
* refactor(onboard): destructure staged profile stores
* fix(onboard): retain rotated staged credentials
* test(onboard): use valid timeout status
* refactor(onboard): keep staged auth helper private
2026-07-20 02:47:21 +00:00
Peter Steinberger
171a3852ba
fix: install exact app recommendations and retry failures ( #111518 )
...
* fix(onboard): preserve recommendation install retries
* fix(onboard): preserve bootstrap recommendation retries
* fix(onboard): commit recommendation outcomes after config
* fix(onboard): guard recommendation state transitions
* fix(onboard): reconcile durable skill installs
* docs(clawhub): clarify search publisher contract
2026-07-19 14:10:50 -07:00
Peter Steinberger
1ddb6f1bbb
fix(system-agent): preserve setup success on audit failure ( #111504 )
2026-07-19 12:06:59 -07:00
Peter Steinberger
6d4082ef97
fix(ui): prevent unsafe custodian nudge answers ( #111430 )
...
* fix(ui): harden custodian nudge actions
* refactor(ui): split custodian page helpers
* fix(ui): classify custodian nudge delivery
* fix(ui): ignore stale custodian question replies
* fix(ui): restore rejected custodian questions
* fix(ui): preserve custodian wizard uncertainty
* refactor(ui): keep nudge text helper private
* test(ui): model uncertain custodian delivery
* fix(ui): scope delayed custodian dismissals
* fix(ui): retain in-flight custodian nudges
* fix(ui): block nudges during hosted wizard input
* chore(protocol): regenerate gateway models
2026-07-19 11:10:41 -07:00
Peter Steinberger
8c7f09a3c4
feat(system-agent): durable rolling transcript with openclaw.chat.history ( #111440 )
...
* feat(system-agent): durable rolling transcript with openclaw.chat.history
* chore(ui): scanner-safe auth root in custodian session ownership key
* fix(system-agent): durable reset boundary for transcript seeding
* fix(ui): ownership-aware custodian session rotation with capability gating
* fix(ui): bounded history load and reconnect-safe transcript refresh
* fix(ui): keep unknown-outcome warning and event nudges across transport transitions
* fix(ui): flag-backed unknown-outcome warning independent of retry state
* fix(ui): armed ownership boundaries and abandon-before-rotate ordering
* chore(ui): localize the server-side sensitive mask in durable history
* fix(ui): repair rebase-dropped import and mock arity
* chore: gate fixes — void history handler, module-local transcript internals
* refactor(gateway): leaf history-turn contract to keep the module graph acyclic
* chore(gateway): stamp openclaw.chat.history with its introduction train
* test(gateway): record openclaw.chat.history in the 2026.7 train pin
2026-07-19 08:37:00 -07:00
Peter Steinberger
783a5d21cf
refactor(config): purge numeric tuning knobs behind built-in defaults ( #111382 )
2026-07-19 07:35:45 -07:00
Peter Steinberger
d96a5e2c9e
fix(system-agent): rebind verified model routes ( #111431 )
2026-07-19 07:07:44 -07:00
Peter Steinberger
06f5f73e47
refactor: own model discovery by runtime lifecycle ( #111173 )
...
* refactor(agents): prepare model runtime catalogs
Build lifecycle-owned model and auth snapshots, carry prepared stores into hot agent paths, and serialize config/auth publication.
Credits @zeroaltitude's #90741 investigation and benchmark approach.
* refactor: finish lifecycle-owned model discovery
* fix: align prepared model catalog contracts
* test: align lifecycle catalog mocks
* test: fix prepared catalog type fixtures
* refactor: split prepared model runtime ownership
* fix: import prepared runtime replacement gate type
* test: split media runtime coverage
* test: preserve image auth fixture key types
* test: isolate lifecycle gate fixtures
* chore: keep release changelog owned
* refactor: finish prepared model catalog migration
* test: keep catalog review fixtures scanner-safe
* refactor: preserve lifecycle model runtime ownership
* fix: close prepared runtime lifecycle races
* fix: preserve compaction workspace fallback
* chore: document btw generation rebinding
* fix: preserve prepared generation boundaries
* fix: keep model-list discovery flag explicit
* fix: serialize standalone model runtime activation
* refactor: migrate subagent model catalog lookup
* refactor: clarify doctor catalog lookup seam
* chore: refresh plugin sdk api baseline
* test: migrate swarm catalog dependency
* refactor(telegram): rename runtime catalog seam
* refactor: extract model-aware tool context
* test(models): isolate lifecycle catalog fixtures
* refactor(agents): avoid btw parameter rebinding
* fix(net-policy): align root ipaddr dependency
* fix(build): keep net policy dependency bundled
* fix(deadcode): document net policy compile dependency
2026-07-19 05:30:54 -07:00
Peter Steinberger
9aa6e672a7
fix(custodian): show mode-appropriate guidance and defaults ( #111263 )
...
* fix(custodian): align option-card defaults
* test(custodian): preserve default confirm choice
2026-07-19 00:17:09 -07:00