diff --git a/CHANGELOG.md b/CHANGELOG.md index 74a8d88c7ba..9beb5c14a71 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ Docs: https://docs.openclaw.ai - OpenAI/Streaming transport: make `openai` Responses WebSocket-first by default (`transport: "auto"` with SSE fallback), add shared OpenAI WS stream/connection runtime wiring with per-session cleanup, and preserve server-side compaction payload mutation (`store` + `context_management`) on the WS path. - Android/Gateway capability refresh: add live Android capability integration coverage and node canvas capability refresh wiring, plus runtime hardening for A2UI readiness retries, scoped canvas URL normalization, debug diagnostics JSON, and JavaScript MIME delivery. (#28388) Thanks @obviyus. - Android/Nodes parity: add `system.notify`, `photos.latest`, `contacts.search`/`contacts.add`, `calendar.events`/`calendar.add`, and `motion.activity`/`motion.pedometer`, with motion sensor-aware command gating and improved activity sampling reliability. (#29398) Thanks @obviyus. +- CLI/Config: add `openclaw config file` to print the active config file path resolved from `OPENCLAW_CONFIG_PATH` or default locations. (#26256) thanks @cyb1278588254. - Feishu/Docx tables + uploads: add `feishu_doc` actions for Docx table creation/cell writing (`create_table`, `write_table_cells`, `create_table_with_values`) and image/file uploads (`upload_image`, `upload_file`) with stricter create/upload error handling for missing `document_id` and placeholder cleanup failures. (#20304) Thanks @xuhao1. - Feishu/Reactions: add inbound `im.message.reaction.created_v1` handling, route verified reactions through synthetic inbound turns, and harden verification with timeout + fail-closed filtering so non-bot or unverified reactions are dropped. (#16716) Thanks @schumilin. - Feishu/Chat tooling: add `feishu_chat` tool actions for chat info and member queries, with configurable enablement under `channels.feishu.tools.chat`. (#14674) Thanks @liuweifly. diff --git a/docs/cli/config.md b/docs/cli/config.md index 201ba844656..8bee6deec7a 100644 --- a/docs/cli/config.md +++ b/docs/cli/config.md @@ -1,5 +1,5 @@ --- -summary: "CLI reference for `openclaw config` (get/set/unset config values)" +summary: "CLI reference for `openclaw config` (get/set/unset values and config file path)" read_when: - You want to read or edit config non-interactively title: "config" @@ -7,13 +7,14 @@ title: "config" # `openclaw config` -Config helpers: get/set/unset values by path. Run without a subcommand to open +Config helpers: get/set/unset values by path and print the active config file. +Run without a subcommand to open the configure wizard (same as `openclaw configure`). ## Examples ```bash -openclaw config path +openclaw config file openclaw config get browser.executablePath openclaw config set browser.executablePath "/usr/bin/google-chrome" openclaw config set agents.defaults.heartbeat.every "2h" @@ -50,6 +51,6 @@ openclaw config set channels.whatsapp.groups '["*"]' --strict-json ## Subcommands -- `config path`: Print the active config file path (resolved from `OPENCLAW_CONFIG_PATH` or default location). +- `config file`: Print the active config file path (resolved from `OPENCLAW_CONFIG_PATH` or default location). Restart the gateway after edits. diff --git a/docs/cli/index.md b/docs/cli/index.md index fc1633710cb..a20c53aad19 100644 --- a/docs/cli/index.md +++ b/docs/cli/index.md @@ -380,7 +380,7 @@ Interactive configuration wizard (models, channels, skills, gateway). ### `config` -Non-interactive config helpers (get/set/unset). Running `openclaw config` with no +Non-interactive config helpers (get/set/unset/file). Running `openclaw config` with no subcommand launches the wizard. Subcommands: @@ -388,7 +388,7 @@ Subcommands: - `config get `: print a config value (dot/bracket path). - `config set `: set a value (JSON5 or raw string). - `config unset `: remove a value. -- `config path`: print the active config file path. +- `config file`: print the active config file path. ### `doctor` diff --git a/src/cli/config-cli.test.ts b/src/cli/config-cli.test.ts index 9d5c2c1b78b..f0dc2fd6fc5 100644 --- a/src/cli/config-cli.test.ts +++ b/src/cli/config-cli.test.ts @@ -289,12 +289,12 @@ describe("config cli", () => { }); }); - describe("config path", () => { + describe("config file", () => { it("prints the active config file path", async () => { const resolved: OpenClawConfig = { gateway: { port: 18789 } }; setSnapshot(resolved, resolved); - await runConfigCommand(["config", "path"]); + await runConfigCommand(["config", "file"]); expect(mockLog).toHaveBeenCalledWith("/tmp/openclaw.json"); expect(mockWriteConfigFile).not.toHaveBeenCalled(); @@ -306,7 +306,7 @@ describe("config cli", () => { snapshot.path = "/home/user/.openclaw/openclaw.json"; mockReadConfigFileSnapshot.mockResolvedValueOnce(snapshot); - await runConfigCommand(["config", "path"]); + await runConfigCommand(["config", "file"]); expect(mockLog).toHaveBeenCalledWith("/home/user/.openclaw/openclaw.json"); }); diff --git a/src/cli/config-cli.ts b/src/cli/config-cli.ts index ef79e3abbdf..13cc72b1111 100644 --- a/src/cli/config-cli.ts +++ b/src/cli/config-cli.ts @@ -324,7 +324,7 @@ export async function runConfigUnset(opts: { path: string; runtime?: RuntimeEnv } } -export async function runConfigPath(opts: { runtime?: RuntimeEnv }) { +export async function runConfigFile(opts: { runtime?: RuntimeEnv }) { const runtime = opts.runtime ?? defaultRuntime; try { const snapshot = await readConfigFileSnapshot(); @@ -339,7 +339,7 @@ export function registerConfigCli(program: Command) { const cmd = program .command("config") .description( - "Non-interactive config helpers (get/set/unset). Run without subcommand for the setup wizard.", + "Non-interactive config helpers (get/set/unset/file). Run without subcommand for the setup wizard.", ) .addHelpText( "after", @@ -403,9 +403,9 @@ export function registerConfigCli(program: Command) { }); cmd - .command("path") + .command("file") .description("Print the active config file path") .action(async () => { - await runConfigPath({}); + await runConfigFile({}); }); } diff --git a/src/cli/program/command-registry.ts b/src/cli/program/command-registry.ts index 9ad44cf3eeb..324b5692893 100644 --- a/src/cli/program/command-registry.ts +++ b/src/cli/program/command-registry.ts @@ -83,7 +83,7 @@ const coreEntries: CoreCliEntry[] = [ { name: "config", description: - "Non-interactive config helpers (get/set/unset). Default: starts setup wizard.", + "Non-interactive config helpers (get/set/unset/file). Default: starts setup wizard.", hasSubcommands: true, }, ],