fix(config): accept "openclaw" as browser profile driver in Zod schema (#39374)

Merged via squash.

Prepared head SHA: 0eba5ab939
Co-authored-by: gambletan <266203672+gambletan@users.noreply.github.com>
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com>
Reviewed-by: @altaywtf
This commit is contained in:
gambletan
2026-03-08 17:04:49 +08:00
committed by GitHub
parent f73778e9b2
commit e5fdfec9dc
5 changed files with 7 additions and 4 deletions

View File

@@ -363,6 +363,7 @@ Docs: https://docs.openclaw.ai
- ACPX/MCP session bootstrap: inject configured MCP servers into ACP `session/new` and `session/load` for acpx-backed sessions, restoring Canva and other external MCP tools. Landed from contributor PR #39337. Thanks @goodspeed-apps. - ACPX/MCP session bootstrap: inject configured MCP servers into ACP `session/new` and `session/load` for acpx-backed sessions, restoring Canva and other external MCP tools. Landed from contributor PR #39337. Thanks @goodspeed-apps.
- Control UI/Telegram sender labels: preserve inbound sender labels in sanitized chat history so dashboard user-message groups split correctly and show real group-member names instead of `You`. (#39414) Thanks @obviyus. - Control UI/Telegram sender labels: preserve inbound sender labels in sanitized chat history so dashboard user-message groups split correctly and show real group-member names instead of `You`. (#39414) Thanks @obviyus.
- Agents/failover 402 recovery: keep temporary spend-limit `402` payloads retryable, preserve explicit insufficient-credit billing detection even in long provider payloads, and allow throttled billing-cooldown probes so single-provider setups can recover instead of staying locked out. (#38533) Thanks @xialonglee. - Agents/failover 402 recovery: keep temporary spend-limit `402` payloads retryable, preserve explicit insufficient-credit billing detection even in long provider payloads, and allow throttled billing-cooldown probes so single-provider setups can recover instead of staying locked out. (#38533) Thanks @xialonglee.
- Browser/config schema: accept `browser.profiles.*.driver: "openclaw"` while preserving legacy `"clawd"` compatibility in validated config. (#39374; based on #35621) Thanks @gambletan and @ingyukoh.
## 2026.3.2 ## 2026.3.2

View File

@@ -413,7 +413,7 @@ const ENUM_EXPECTATIONS: Record<string, string[]> = {
"gateway.bind": ['"auto"', '"lan"', '"loopback"', '"custom"', '"tailnet"'], "gateway.bind": ['"auto"', '"lan"', '"loopback"', '"custom"', '"tailnet"'],
"gateway.auth.mode": ['"none"', '"token"', '"password"', '"trusted-proxy"'], "gateway.auth.mode": ['"none"', '"token"', '"password"', '"trusted-proxy"'],
"gateway.tailscale.mode": ['"off"', '"serve"', '"funnel"'], "gateway.tailscale.mode": ['"off"', '"serve"', '"funnel"'],
"browser.profiles.*.driver": ['"clawd"', '"extension"'], "browser.profiles.*.driver": ['"openclaw"', '"clawd"', '"extension"'],
"discovery.mdns.mode": ['"off"', '"minimal"', '"full"'], "discovery.mdns.mode": ['"off"', '"minimal"', '"full"'],
"wizard.lastRunMode": ['"local"', '"remote"'], "wizard.lastRunMode": ['"local"', '"remote"'],
"diagnostics.otel.protocol": ['"http/protobuf"', '"grpc"'], "diagnostics.otel.protocol": ['"http/protobuf"', '"grpc"'],

View File

@@ -255,7 +255,7 @@ export const FIELD_HELP: Record<string, string> = {
"browser.profiles.*.cdpUrl": "browser.profiles.*.cdpUrl":
"Per-profile CDP websocket URL used for explicit remote browser routing by profile name. Use this when profile connections terminate on remote hosts or tunnels.", "Per-profile CDP websocket URL used for explicit remote browser routing by profile name. Use this when profile connections terminate on remote hosts or tunnels.",
"browser.profiles.*.driver": "browser.profiles.*.driver":
'Per-profile browser driver mode: "clawd" or "extension" depending on connection/runtime strategy. Use the driver that matches your browser control stack to avoid protocol mismatches.', 'Per-profile browser driver mode: "openclaw" (or legacy "clawd") or "extension" depending on connection/runtime strategy. Use the driver that matches your browser control stack to avoid protocol mismatches.',
"browser.profiles.*.attachOnly": "browser.profiles.*.attachOnly":
"Per-profile attach-only override that skips local browser launch and only attaches to an existing CDP endpoint. Useful when one profile is externally managed but others are locally launched.", "Per-profile attach-only override that skips local browser launch and only attaches to an existing CDP endpoint. Useful when one profile is externally managed but others are locally launched.",
"browser.profiles.*.color": "browser.profiles.*.color":

View File

@@ -4,7 +4,7 @@ export type BrowserProfileConfig = {
/** CDP URL for this profile (use for remote Chrome). */ /** CDP URL for this profile (use for remote Chrome). */
cdpUrl?: string; cdpUrl?: string;
/** Profile driver (default: openclaw). */ /** Profile driver (default: openclaw). */
driver?: "openclaw" | "extension"; driver?: "openclaw" | "clawd" | "extension";
/** If true, never launch a browser for this profile; only attach. Falls back to browser.attachOnly. */ /** If true, never launch a browser for this profile; only attach. Falls back to browser.attachOnly. */
attachOnly?: boolean; attachOnly?: boolean;
/** Profile color (hex). Auto-assigned at creation. */ /** Profile color (hex). Auto-assigned at creation. */

View File

@@ -315,7 +315,9 @@ export const OpenClawSchema = z
.object({ .object({
cdpPort: z.number().int().min(1).max(65535).optional(), cdpPort: z.number().int().min(1).max(65535).optional(),
cdpUrl: z.string().optional(), cdpUrl: z.string().optional(),
driver: z.union([z.literal("clawd"), z.literal("extension")]).optional(), driver: z
.union([z.literal("openclaw"), z.literal("clawd"), z.literal("extension")])
.optional(),
attachOnly: z.boolean().optional(), attachOnly: z.boolean().optional(),
color: HexColorSchema, color: HexColorSchema,
}) })