fix: quiet logs progress output (#1472) (thanks @czekaj)

This commit is contained in:
Peter Steinberger 2026-01-23 01:29:09 +00:00
parent 8bf1af35de
commit b72a3674a7
4 changed files with 21 additions and 3 deletions

View File

@ -25,6 +25,7 @@ Docs: https://docs.clawd.bot
### Fixes ### Fixes
- BlueBubbles: stop typing indicator on idle/no-reply. (#1439) Thanks @Nicell. - BlueBubbles: stop typing indicator on idle/no-reply. (#1439) Thanks @Nicell.
- CLI: suppress progress spinner noise for `logs --follow` and JSON output. (#1472) Thanks @czekaj.
- Auto-reply: only report a model switch when session state is available. (#1465) Thanks @robbyczgw-cla. - Auto-reply: only report a model switch when session state is available. (#1465) Thanks @robbyczgw-cla.
- Control UI: resolve local avatar URLs with basePath across injection + identity RPC. (#1457) Thanks @dlauer. - Control UI: resolve local avatar URLs with basePath across injection + identity RPC. (#1457) Thanks @dlauer.
- Agents: surface concrete API error details instead of generic AI service errors. - Agents: surface concrete API error details instead of generic AI service errors.

View File

@ -25,7 +25,7 @@ export async function callGatewayFromCli(
params?: unknown, params?: unknown,
extra?: { expectFinal?: boolean; progress?: boolean }, extra?: { expectFinal?: boolean; progress?: boolean },
) { ) {
const showProgress = extra?.progress ?? opts.json !== true; const showProgress = (extra?.progress ?? true) && opts.json !== true;
return await withProgress( return await withProgress(
{ {
label: `Gateway ${method}`, label: `Gateway ${method}`,

View File

@ -82,4 +82,21 @@ describe("logs cli", () => {
expect(stderrWrites.join("")).toContain("output stdout closed"); expect(stderrWrites.join("")).toContain("output stdout closed");
}); });
it("disables progress spinner in json mode", async () => {
callGatewayFromCli.mockResolvedValueOnce({
file: "/tmp/clawdbot.log",
lines: [],
});
const { registerLogsCli } = await import("./logs-cli.js");
const program = new Command();
program.exitOverride();
registerLogsCli(program);
await program.parseAsync(["logs", "--json"], { from: "user" });
const extra = callGatewayFromCli.mock.calls[0]?.[3];
expect(extra).toEqual({ progress: false });
});
}); });

View File

@ -196,8 +196,8 @@ export function registerLogsCli(program: Command) {
while (true) { while (true) {
let payload: LogsTailPayload; let payload: LogsTailPayload;
// Show progress spinner only on first fetch, not during follow polling // Show progress spinner only on first fetch for non-follow, non-JSON output.
const showProgress = first && !opts.follow; const showProgress = first && !opts.follow && !jsonMode;
try { try {
payload = await fetchLogs(opts, cursor, showProgress); payload = await fetchLogs(opts, cursor, showProgress);
} catch (err) { } catch (err) {