From af8a529e171b273185119a28c3ffb4317efc3459 Mon Sep 17 00:00:00 2001 From: Dustin Washington Date: Mon, 15 Dec 2025 18:52:48 -0500 Subject: [PATCH 1/4] Add --yes-always-commands to auto accept even cli commands in non-agent mode --- aider/args.py | 9 ++++++++- aider/coders/base_coder.py | 2 +- aider/main.py | 3 +++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/aider/args.py b/aider/args.py index 077706d5600..cb11269ac2e 100644 --- a/aider/args.py +++ b/aider/args.py @@ -838,9 +838,16 @@ def get_parser(default_config_files, git_root): group.add_argument( "--yes-always", action="store_true", - help="Always say yes to every confirmation", + help="Always say yes to every confirmation (not including cli commands)", default=None, ) + group.add_argument( + "--yes-always-commands", + "--yolo", + action="store_true", + help="Always say yes to every confirmation (including cli commands)", + default=False, + ) group.add_argument( "--disable-playwright", action="store_true", diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index 4f2bcde12fd..e6322e7fd2d 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -3833,7 +3833,7 @@ async def handle_shell_commands(self, commands_str, group): if not await self.io.confirm_ask( prompt, subject="\n".join(commands), - explicit_yes_required=True, + explicit_yes_required=self.args.yes_always_commands, group=group, allow_never=True, ): diff --git a/aider/main.py b/aider/main.py index 1d0a1161326..723cdc8c668 100644 --- a/aider/main.py +++ b/aider/main.py @@ -721,6 +721,9 @@ async def main_async(argv=None, input=None, output=None, force_git_root=None, re if return_coder and args.yes_always is None: args.yes_always = True + if args.yes_always_commands: + args.yes_always = True + editing_mode = EditingMode.VI if args.vim else EditingMode.EMACS def get_io(pretty): From 671ef5f7b1ec2b13b0cc7f54364d4d9a6702865f Mon Sep 17 00:00:00 2001 From: Dustin Washington Date: Mon, 15 Dec 2025 19:10:36 -0500 Subject: [PATCH 2/4] Default linear-output to true since we have the TUI now --- aider/args.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aider/args.py b/aider/args.py index cb11269ac2e..b16d14c4bc5 100644 --- a/aider/args.py +++ b/aider/args.py @@ -797,7 +797,7 @@ def get_parser(default_config_files, git_root): help=( "Run input and output sequentially instead of us simultaneous streams (default: False)" ), - default=False, + default=True, ) group.add_argument( "--debug", From 14dbee981e9e890e0c50e0ac1a75efa537b30aac Mon Sep 17 00:00:00 2001 From: Dustin Washington Date: Tue, 16 Dec 2025 00:09:00 -0500 Subject: [PATCH 3/4] Use io spinner for commit messages so it doesn't continually hammer the TUI --- aider/repo.py | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/aider/repo.py b/aider/repo.py index 7baebfddef0..f2016075b22 100644 --- a/aider/repo.py +++ b/aider/repo.py @@ -21,7 +21,6 @@ from aider import prompts, utils from .dump import dump # noqa: F401 -from .waiting import Spinner ANY_GIT_ERROR += [ OSError, @@ -341,26 +340,27 @@ async def get_commit_message(self, diffs, context, user_language=None): commit_message = None for model in self.models: spinner_text = f"Generating commit message with {model.name}\n" - with Spinner(spinner_text): - if model.system_prompt_prefix: - current_system_content = model.system_prompt_prefix + "\n" + system_content - else: - current_system_content = system_content + self.io.start_spinner(spinner_text, update_last_text=False) - messages = [ - dict(role="system", content=current_system_content), - dict(role="user", content=content), - ] + if model.system_prompt_prefix: + current_system_content = model.system_prompt_prefix + "\n" + system_content + else: + current_system_content = system_content + + messages = [ + dict(role="system", content=current_system_content), + dict(role="user", content=content), + ] - num_tokens = model.token_count(messages) - max_tokens = model.info.get("max_input_tokens") or 0 + num_tokens = model.token_count(messages) + max_tokens = model.info.get("max_input_tokens") or 0 - if max_tokens and num_tokens > max_tokens: - continue + if max_tokens and num_tokens > max_tokens: + continue - commit_message = await model.simple_send_with_retries(messages) - if commit_message: - break # Found a model that could generate the message + commit_message = await model.simple_send_with_retries(messages) + if commit_message: + break # Found a model that could generate the message if not commit_message: self.io.tool_error("Failed to generate commit message!") @@ -370,6 +370,7 @@ async def get_commit_message(self, diffs, context, user_language=None): if commit_message and commit_message[0] == '"' and commit_message[-1] == '"': commit_message = commit_message[1:-1].strip() + self.io.start_spinner(self.io.last_spinner_text, update_last_text=False) return commit_message def get_diffs(self, fnames=None): From 9f00ad58c0fec9b96ed1e605b1ec641190b37e37 Mon Sep 17 00:00:00 2001 From: Dustin Washington Date: Tue, 16 Dec 2025 00:18:05 -0500 Subject: [PATCH 4/4] Add file name to output in TUI mode so it's visible --- aider/coders/base_coder.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index e6322e7fd2d..b97d0300f8b 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -2894,6 +2894,9 @@ async def check_for_file_mentions(self, content): added_fnames = [] group = ConfirmGroup(new_mentions) for rel_fname in sorted(new_mentions): + if self.args.tui: + self.io.tool_output(rel_fname) + if await self.io.confirm_ask( "Add file to the chat?", subject=rel_fname, group=group, allow_never=True ):