diff --git a/packages/coding-agent/README.md b/packages/coding-agent/README.md index 8e5433d2..b9e57b0d 100644 --- a/packages/coding-agent/README.md +++ b/packages/coding-agent/README.md @@ -827,6 +827,7 @@ Global `~/.pi/agent/settings.json` stores persistent preferences: | `shellPath` | Custom bash path (Windows) | auto-detected | | `shellCommandPrefix` | Command prefix for bash (e.g., `shopt -s expand_aliases` for alias support) | - | | `hideThinkingBlock` | Hide thinking blocks in output (Ctrl+T to toggle) | `false` | +| `quietStartup` | Hide startup info (keybindings, loaded skills/extensions) | `false` | | `collapseChangelog` | Show condensed changelog after update | `false` | | `compaction.enabled` | Enable auto-compaction | `true` | | `compaction.reserveTokens` | Tokens to reserve before compaction triggers | `16384` | @@ -1278,6 +1279,7 @@ pi [options] [@files...] [messages...] | `--no-prompt-templates` | Disable prompt template discovery and loading | | `--no-themes` | Disable theme discovery and loading | | `--export [output]` | Export session to HTML | +| `--verbose` | Force verbose startup (overrides `quietStartup` setting) | | `--help`, `-h` | Show help | | `--version`, `-v` | Show version | diff --git a/packages/coding-agent/src/cli/args.ts b/packages/coding-agent/src/cli/args.ts index ddab572c..57c28de5 100644 --- a/packages/coding-agent/src/cli/args.ts +++ b/packages/coding-agent/src/cli/args.ts @@ -38,6 +38,7 @@ export interface Args { themes?: string[]; noThemes?: boolean; listModels?: string | true; + verbose?: boolean; messages: string[]; fileArgs: string[]; /** Unknown flags (potentially extension flags) - map of flag name to value */ @@ -148,6 +149,8 @@ export function parseArgs(args: string[], extensionFlags?: Map Export session file to HTML and exit --list-models [search] List available models (with optional fuzzy search) + --verbose Force verbose startup (overrides quietStartup setting) --help, -h Show this help --version, -v Show version number diff --git a/packages/coding-agent/src/main.ts b/packages/coding-agent/src/main.ts index 61244988..74964c2b 100644 --- a/packages/coding-agent/src/main.ts +++ b/packages/coding-agent/src/main.ts @@ -582,7 +582,7 @@ export async function main(args: string[]) { if (mode === "rpc") { await runRpcMode(session); } else if (isInteractive) { - if (scopedModels.length > 0 && !settingsManager.getQuietStartup()) { + if (scopedModels.length > 0 && (parsed.verbose || !settingsManager.getQuietStartup())) { const modelList = scopedModels .map((sm) => { const thinkingStr = sm.thinkingLevel ? `:${sm.thinkingLevel}` : ""; @@ -599,6 +599,7 @@ export async function main(args: string[]) { initialMessage, initialImages, initialMessages: parsed.messages, + verbose: parsed.verbose, }); await mode.run(); } else { diff --git a/packages/coding-agent/src/modes/interactive/interactive-mode.ts b/packages/coding-agent/src/modes/interactive/interactive-mode.ts index d325e4fb..0afd278b 100644 --- a/packages/coding-agent/src/modes/interactive/interactive-mode.ts +++ b/packages/coding-agent/src/modes/interactive/interactive-mode.ts @@ -138,6 +138,8 @@ export interface InteractiveModeOptions { initialImages?: ImageContent[]; /** Additional messages to send after the initial message */ initialMessages?: string[]; + /** Force verbose startup (overrides quietStartup setting) */ + verbose?: boolean; } export class InteractiveMode { @@ -373,7 +375,7 @@ export class InteractiveMode { this.setupAutocomplete(this.fdPath); // Add header with keybindings from config (unless silenced) - if (!this.settingsManager.getQuietStartup()) { + if (this.options.verbose || !this.settingsManager.getQuietStartup()) { const logo = theme.bold(theme.fg("accent", APP_NAME)) + theme.fg("dim", ` v${this.version}`); // Build startup instructions using keybinding hint helpers @@ -642,7 +644,7 @@ export class InteractiveMode { } private showLoadedResources(options?: { extensionPaths?: string[]; force?: boolean }): void { - const shouldShow = options?.force || !this.settingsManager.getQuietStartup(); + const shouldShow = options?.force || this.options.verbose || !this.settingsManager.getQuietStartup(); if (!shouldShow) { return; } diff --git a/packages/coding-agent/test/args.test.ts b/packages/coding-agent/test/args.test.ts index 2438de2d..21b9af30 100644 --- a/packages/coding-agent/test/args.test.ts +++ b/packages/coding-agent/test/args.test.ts @@ -220,6 +220,13 @@ describe("parseArgs", () => { }); }); + describe("--verbose flag", () => { + test("parses --verbose flag", () => { + const result = parseArgs(["--verbose"]); + expect(result.verbose).toBe(true); + }); + }); + describe("--no-tools flag", () => { test("parses --no-tools flag", () => { const result = parseArgs(["--no-tools"]);