From 849a379a8cc51f94981be86cb73d311dd6eb5dac Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 1 May 2025 17:24:14 -0700 Subject: [PATCH 01/14] refactor: Move lazy/overeager prompts to final reminders in system prompt --- aider/coders/base_coder.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index 675570c60..02af294aa 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -1079,12 +1079,15 @@ class Coder: return platform_text def fmt_system_prompt(self, prompt): + final_reminders = [] if self.main_model.lazy: - lazy_prompt = self.gpt_prompts.lazy_prompt - elif self.main_model.overeager: - lazy_prompt = self.gpt_prompts.overeager_prompt - else: - lazy_prompt = "" + final_reminders.append(self.gpt_prompts.lazy_prompt) + if self.main_model.overeager: + final_reminders.append(self.gpt_prompts.overeager_prompt) + + user_lang = self.get_user_language() + if user_lang: + final_reminders.append(f"Reply in {user_lang}.") platform_text = self.get_platform_info() @@ -1111,10 +1114,13 @@ class Coder: else: quad_backtick_reminder = "" + final_reminders = "\n\n".join(final_reminders) + + dump(prompt) prompt = prompt.format( fence=self.fence, quad_backtick_reminder=quad_backtick_reminder, - lazy_prompt=lazy_prompt, + final_reminders=final_reminders, platform=platform_text, shell_cmd_prompt=shell_cmd_prompt, rename_with_shell=rename_with_shell, From 9fa5f5ace113226ad24439bee45fce850ca7320a Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 1 May 2025 17:28:55 -0700 Subject: [PATCH 02/14] refactor: remove redundant dump call from prompt formatting in base_coder.py --- aider/coders/base_coder.py | 1 - 1 file changed, 1 deletion(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index 02af294aa..0b946ea1d 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -1116,7 +1116,6 @@ class Coder: final_reminders = "\n\n".join(final_reminders) - dump(prompt) prompt = prompt.format( fence=self.fence, quad_backtick_reminder=quad_backtick_reminder, From 433f2908a045399c9811047d68904dc7f6cfd7fa Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 1 May 2025 17:28:56 -0700 Subject: [PATCH 03/14] feat: add language normalization to convert locale codes to names using Babel or fallback map --- aider/coders/base_coder.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index 0b946ea1d..855f34e8a 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -15,6 +15,13 @@ import time import traceback from collections import defaultdict from datetime import datetime + +# Optional dependency: used to convert locale codes (eg ``en_US``) +# into human-readable language names (eg ``English``). +try: + from babel import Locale # type: ignore +except ImportError: # Babel not installed – we will fall back to a small mapping + Locale = None from json.decoder import JSONDecodeError from pathlib import Path from typing import List From e17c7d938cbf30fd5da988db90e080f4a7b22486 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 1 May 2025 17:29:14 -0700 Subject: [PATCH 04/14] refactor: add normalize_language and improve get_user_language to return readable names --- aider/coders/base_coder.py | 70 +++++++++++++++++++++++++++++++++----- 1 file changed, 61 insertions(+), 9 deletions(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index 855f34e8a..a9cd778bc 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -1018,23 +1018,75 @@ class Coder: ] self.cur_messages = [] - def get_user_language(self): - if self.chat_language: - return self.chat_language + def normalize_language(self, lang_code): + """ + Convert a locale code such as ``en_US`` or ``fr`` into a readable + language name (e.g. ``English`` or ``French``). If Babel is + available it is used for reliable conversion; otherwise a small + built-in fallback map handles common languages. + """ + if not lang_code: + return None + # Probably already a language name + if ( + len(lang_code) > 3 + and "_" not in lang_code + and "-" not in lang_code + and lang_code[0].isupper() + ): + return lang_code + + # Preferred: Babel + if Locale is not None: + try: + loc = Locale.parse(lang_code.replace("-", "_")) + return loc.get_display_name("en").capitalize() + except Exception: + pass # Fall back to manual mapping + + # Simple fallback for common languages + fallback = { + "en": "English", + "fr": "French", + "es": "Spanish", + "de": "German", + "it": "Italian", + "pt": "Portuguese", + "zh": "Chinese", + "ja": "Japanese", + "ko": "Korean", + "ru": "Russian", + } + return fallback.get(lang_code.split("_")[0].lower(), lang_code) + + def get_user_language(self): + """ + Detect the user's language preference and return a human-readable + language name such as ``English``. Detection order: + + 1. ``self.chat_language`` if explicitly set + 2. ``locale.getlocale()`` + 3. ``LANG`` / ``LANGUAGE`` / ``LC_ALL`` / ``LC_MESSAGES`` environment variables + """ + # Explicit override + if self.chat_language: + return self.normalize_language(self.chat_language) + + # System locale try: lang = locale.getlocale()[0] if lang: - return lang # Return the full language code, including country + return self.normalize_language(lang) except Exception: - pass + pass # pragma: no cover - for env_var in ["LANG", "LANGUAGE", "LC_ALL", "LC_MESSAGES"]: + # Environment variables + for env_var in ("LANG", "LANGUAGE", "LC_ALL", "LC_MESSAGES"): lang = os.environ.get(env_var) if lang: - return lang.split(".")[ - 0 - ] # Return language and country, but remove encoding if present + lang = lang.split(".")[0] # Strip encoding if present + return self.normalize_language(lang) return None From bdba0ca1c5af08099f0bc7983c19757b937c967e Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 1 May 2025 17:31:22 -0700 Subject: [PATCH 05/14] refactor: Move shell command prompts to shell.py, add final reminders --- aider/coders/base_prompts.py | 4 ++- aider/coders/editblock_fenced_prompts.py | 2 +- aider/coders/editblock_prompts.py | 45 ++++-------------------- aider/coders/editor_editblock_prompts.py | 2 +- aider/coders/editor_whole_prompts.py | 2 +- aider/coders/patch_prompts.py | 4 +-- aider/coders/udiff_prompts.py | 9 +++-- aider/coders/udiff_simple_prompts.py | 4 +-- aider/coders/wholefile_prompts.py | 4 +-- aider/watch.py | 1 + 10 files changed, 26 insertions(+), 51 deletions(-) diff --git a/aider/coders/base_prompts.py b/aider/coders/base_prompts.py index 464212031..36f991f1e 100644 --- a/aider/coders/base_prompts.py +++ b/aider/coders/base_prompts.py @@ -15,7 +15,9 @@ You always COMPLETELY IMPLEMENT the needed code! """ overeager_prompt = """Pay careful attention to the scope of the user's request. -Do what they ask, but no more.""" +Do what they ask, but no more. +Do not improve, comment, fix or modify unrelated parts of the code in any way! +""" example_messages = [] diff --git a/aider/coders/editblock_fenced_prompts.py b/aider/coders/editblock_fenced_prompts.py index 74f647f93..79fa179d9 100644 --- a/aider/coders/editblock_fenced_prompts.py +++ b/aider/coders/editblock_fenced_prompts.py @@ -137,7 +137,7 @@ To rename files which have been added to the chat, use shell commands at the end If the user just says something like "ok" or "go ahead" or "do that" they probably want you to make SEARCH/REPLACE blocks for the code changes you just proposed. The user will say when they've applied your edits. If they haven't explicitly confirmed the edits have been applied, they probably want proper SEARCH/REPLACE blocks. -{lazy_prompt} +{final_reminders} ONLY EVER RETURN CODE IN A *SEARCH/REPLACE BLOCK*! {shell_cmd_reminder} """ diff --git a/aider/coders/editblock_prompts.py b/aider/coders/editblock_prompts.py index 1457e021e..f6baaeb5f 100644 --- a/aider/coders/editblock_prompts.py +++ b/aider/coders/editblock_prompts.py @@ -1,5 +1,6 @@ # flake8: noqa: E501 +from . import shell from .base_prompts import CoderPrompts @@ -7,7 +8,7 @@ class EditBlockPrompts(CoderPrompts): main_system = """Act as an expert software developer. Always use best practices when coding. Respect and use existing conventions, libraries, etc that are already present in the code base. -{lazy_prompt} +{final_reminders} Take requests for changes to the supplied code. If the request is ambiguous, ask questions. @@ -28,32 +29,6 @@ You can keep asking if you then decide you need to edit more files. All changes to files must use this *SEARCH/REPLACE block* format. ONLY EVER RETURN CODE IN A *SEARCH/REPLACE BLOCK*! {shell_cmd_prompt} -""" - - shell_cmd_prompt = """ -4. *Concisely* suggest any shell commands the user might want to run in ```bash blocks. - -Just suggest shell commands this way, not example code. -Only suggest complete shell commands that are ready to execute, without placeholders. -Only suggest at most a few shell commands at a time, not more than 1-3, one per line. -Do not suggest multi-line shell commands. -All shell commands will run from the root directory of the user's project. - -Use the appropriate shell based on the user's system info: -{platform} -Examples of when to suggest shell commands: - -- If you changed a self-contained html file, suggest an OS-appropriate command to open a browser to view it to see the updated content. -- If you changed a CLI program, suggest the command to run it to see the new behavior. -- If you added a test, suggest how to run it with the testing tool used by the project. -- Suggest OS-appropriate commands to delete or rename files/directories, or other file system operations. -- If your code changes add new dependencies, suggest the command to install them. -- Etc. -""" - - no_shell_cmd_prompt = """ -Keep in mind these details about the user's platform and environment: -{platform} """ example_messages = [ dict( @@ -181,7 +156,7 @@ If you want to put code in a new file, use a *SEARCH/REPLACE block* with: - An empty `SEARCH` section - The new file's contents in the `REPLACE` section -{rename_with_shell}{go_ahead_tip}{lazy_prompt}ONLY EVER RETURN CODE IN A *SEARCH/REPLACE BLOCK*! +{rename_with_shell}{go_ahead_tip}{final_reminders}ONLY EVER RETURN CODE IN A *SEARCH/REPLACE BLOCK*! {shell_cmd_reminder} """ @@ -194,14 +169,6 @@ The user will say when they've applied your edits. If they haven't explicitly co """ - shell_cmd_reminder = """ -Examples of when to suggest shell commands: - -- If you changed a self-contained html file, suggest an OS-appropriate command to open a browser to view it to see the updated content. -- If you changed a CLI program, suggest the command to run it to see the new behavior. -- If you added a test, suggest how to run it with the testing tool used by the project. -- Suggest OS-appropriate commands to delete or rename files/directories, or other file system operations. -- If your code changes add new dependencies, suggest the command to install them. -- Etc. - -""" + shell_cmd_prompt = shell.shell_cmd_prompt + no_shell_cmd_prompt = shell.no_shell_cmd_prompt + shell_cmd_reminder = shell.shell_cmd_reminder diff --git a/aider/coders/editor_editblock_prompts.py b/aider/coders/editor_editblock_prompts.py index 463075e2c..0ec36b47f 100644 --- a/aider/coders/editor_editblock_prompts.py +++ b/aider/coders/editor_editblock_prompts.py @@ -5,7 +5,7 @@ from .editblock_prompts import EditBlockPrompts class EditorEditBlockPrompts(EditBlockPrompts): main_system = """Act as an expert software developer who edits source code. -{lazy_prompt} +{final_reminders} Describe each change with a *SEARCH/REPLACE block* per the examples below. All changes to files must use this *SEARCH/REPLACE block* format. ONLY EVER RETURN CODE IN A *SEARCH/REPLACE BLOCK*! diff --git a/aider/coders/editor_whole_prompts.py b/aider/coders/editor_whole_prompts.py index 7abd0ee53..39bc38f64 100644 --- a/aider/coders/editor_whole_prompts.py +++ b/aider/coders/editor_whole_prompts.py @@ -5,6 +5,6 @@ from .wholefile_prompts import WholeFilePrompts class EditorWholeFilePrompts(WholeFilePrompts): main_system = """Act as an expert software developer and make changes to source code. -{lazy_prompt} +{final_reminders} Output a copy of each file that needs changes. """ diff --git a/aider/coders/patch_prompts.py b/aider/coders/patch_prompts.py index 830a04f2b..690a08884 100644 --- a/aider/coders/patch_prompts.py +++ b/aider/coders/patch_prompts.py @@ -11,7 +11,7 @@ class PatchPrompts(EditBlockPrompts): main_system = """Act as an expert software developer. Always use best practices when coding. Respect and use existing conventions, libraries, etc that are already present in the code base. -{lazy_prompt} +{final_reminders} Take requests for changes to the supplied code. If the request is ambiguous, ask questions. @@ -156,6 +156,6 @@ For `Add` actions, use the `*** Add File: [path/to/new/file]` marker, followed b For `Delete` actions, use the `*** Delete File: [path/to/file]` marker. No other lines are needed for the deletion. -{rename_with_shell}{go_ahead_tip}{lazy_prompt}ONLY EVER RETURN CODE IN THE SPECIFIED V4A DIFF FORMAT! +{rename_with_shell}{go_ahead_tip}{final_reminders}ONLY EVER RETURN CODE IN THE SPECIFIED V4A DIFF FORMAT! {shell_cmd_reminder} """ diff --git a/aider/coders/udiff_prompts.py b/aider/coders/udiff_prompts.py index 5e7ca2c13..5201b8d89 100644 --- a/aider/coders/udiff_prompts.py +++ b/aider/coders/udiff_prompts.py @@ -1,11 +1,12 @@ # flake8: noqa: E501 +from . import shell from .base_prompts import CoderPrompts class UnifiedDiffPrompts(CoderPrompts): main_system = """Act as an expert software developer. -{lazy_prompt} +{final_reminders} Always use best practices when coding. Respect and use existing conventions, libraries, etc that are already present in the code base. @@ -106,5 +107,9 @@ To move code within a file, use 2 hunks: 1 to delete it from its current locatio To make a new file, show a diff from `--- /dev/null` to `+++ path/to/new/file.ext`. -{lazy_prompt} +{final_reminders} """ + + shell_cmd_prompt = shell.shell_cmd_prompt + no_shell_cmd_prompt = shell.no_shell_cmd_prompt + shell_cmd_reminder = shell.shell_cmd_reminder diff --git a/aider/coders/udiff_simple_prompts.py b/aider/coders/udiff_simple_prompts.py index 706bb1026..ea98164cf 100644 --- a/aider/coders/udiff_simple_prompts.py +++ b/aider/coders/udiff_simple_prompts.py @@ -21,5 +21,5 @@ Don't leave out any lines or the diff patch won't apply correctly. To make a new file, show a diff from `--- /dev/null` to `+++ path/to/new/file.ext`. -{lazy_prompt} -""" +{final_reminders} +""" # noqa diff --git a/aider/coders/wholefile_prompts.py b/aider/coders/wholefile_prompts.py index 95a4bb87b..6b6795833 100644 --- a/aider/coders/wholefile_prompts.py +++ b/aider/coders/wholefile_prompts.py @@ -10,7 +10,7 @@ If the request is ambiguous, ask questions. Always reply to the user in {language}. -{lazy_prompt} +{final_reminders} Once you understand the request you MUST: 1. Determine if any code changes are needed. 2. Explain any needed changes. @@ -61,7 +61,7 @@ To suggest changes to a file you MUST return a *file listing* that contains the *NEVER* skip, omit or elide content from a *file listing* using "..." or by adding comments like "... rest of code..."! Create a new file you MUST return a *file listing* which includes an appropriate filename, including any appropriate path. -{lazy_prompt} +{final_reminders} """ redacted_edit_message = "No changes are needed." diff --git a/aider/watch.py b/aider/watch.py index 8f84f6006..5d0e95a4f 100644 --- a/aider/watch.py +++ b/aider/watch.py @@ -35,6 +35,7 @@ def load_gitignores(gitignore_paths: list[Path]) -> Optional[PathSpec]: ".DS_Store", # macOS metadata "Thumbs.db", # Windows thumbnail cache "*.svg", + "*.pdf", # IDE files ".idea/", # JetBrains IDEs ".vscode/", # VS Code From 09030de0b54cfecfaee1920264126423ff514a4d Mon Sep 17 00:00:00 2001 From: Eryk Wieliczko Date: Fri, 2 May 2025 03:52:29 +0200 Subject: [PATCH 06/14] Show dates on "Release history" chart --- aider/website/_includes/blame.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/aider/website/_includes/blame.md b/aider/website/_includes/blame.md index 61758a7db..e1b75a431 100644 --- a/aider/website/_includes/blame.md +++ b/aider/website/_includes/blame.md @@ -27,7 +27,7 @@ document.addEventListener('DOMContentLoaded', function () { labels: labels, datasets: [{ label: 'Aider\'s percent of new code by release', - data: [{% for row in site.data.blame %}{ x: '{{ row.end_tag }}', y: {{ row.aider_percentage }}, lines: {{ row.aider_total }} },{% endfor %}], + data: [{% for row in site.data.blame %}{ x: '{{ row.end_tag }}', y: {{ row.aider_percentage }}, lines: {{ row.aider_total }}, end_date: '{{ row.end_date }}' },{% endfor %}], backgroundColor: 'rgba(54, 162, 235, 0.8)', borderColor: 'rgba(54, 162, 235, 1)', borderWidth: 1 @@ -88,6 +88,10 @@ document.addEventListener('DOMContentLoaded', function () { var value = context.parsed.y || 0; var lines = context.raw.lines || 0; return `${label}: ${Math.round(value)}% (${lines} lines)`; + }, + afterLabel: function(context) { + let date = context.raw.end_date || 'n/a'; + return `Date: ` + date; } } }, From fdc7be1318af92f364b3b03308276a5364d052cb Mon Sep 17 00:00:00 2001 From: Enno Richter Date: Fri, 2 May 2025 05:43:45 +0200 Subject: [PATCH 07/14] docs: update lint/test pre-commit shell script example to use "$@" for proper argument handling --- aider/website/docs/usage/lint-test.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aider/website/docs/usage/lint-test.md b/aider/website/docs/usage/lint-test.md index 0dfdccbae..c44398788 100644 --- a/aider/website/docs/usage/lint-test.md +++ b/aider/website/docs/usage/lint-test.md @@ -52,8 +52,8 @@ the script as your linter. # Second attempt will not do anything and exit 0 unless there's a real problem beyond # the code formatting that was completed. -pre-commit run --files $* >/dev/null \ - || pre-commit run --files $* +pre-commit run --files "$@" >/dev/null \ + || pre-commit run --files "$@" ``` ## Testing From f90b7bfb098579fcc6b9baca00713e5d41ecc358 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Mon, 5 May 2025 19:02:43 -0700 Subject: [PATCH 08/14] better --- aider/coders/ask_prompts.py | 2 +- aider/coders/shell.py | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 aider/coders/shell.py diff --git a/aider/coders/ask_prompts.py b/aider/coders/ask_prompts.py index dcedf2d14..855806592 100644 --- a/aider/coders/ask_prompts.py +++ b/aider/coders/ask_prompts.py @@ -32,4 +32,4 @@ Here are summaries of some files present in my git repo. If you need to see the full contents of any files to answer my questions, ask me to *add them to the chat*. """ - system_reminder = "" + system_reminder = "{final_reminders}" diff --git a/aider/coders/shell.py b/aider/coders/shell.py new file mode 100644 index 000000000..2e3753a4d --- /dev/null +++ b/aider/coders/shell.py @@ -0,0 +1,37 @@ +shell_cmd_prompt = """ +4. *Concisely* suggest any shell commands the user might want to run in ```bash blocks. + +Just suggest shell commands this way, not example code. +Only suggest complete shell commands that are ready to execute, without placeholders. +Only suggest at most a few shell commands at a time, not more than 1-3, one per line. +Do not suggest multi-line shell commands. +All shell commands will run from the root directory of the user's project. + +Use the appropriate shell based on the user's system info: +{platform} +Examples of when to suggest shell commands: + +- If you changed a self-contained html file, suggest an OS-appropriate command to open a browser to view it to see the updated content. +- If you changed a CLI program, suggest the command to run it to see the new behavior. +- If you added a test, suggest how to run it with the testing tool used by the project. +- Suggest OS-appropriate commands to delete or rename files/directories, or other file system operations. +- If your code changes add new dependencies, suggest the command to install them. +- Etc. +""" # noqa + +no_shell_cmd_prompt = """ +Keep in mind these details about the user's platform and environment: +{platform} +""" # noqa + +shell_cmd_reminder = """ +Examples of when to suggest shell commands: + +- If you changed a self-contained html file, suggest an OS-appropriate command to open a browser to view it to see the updated content. +- If you changed a CLI program, suggest the command to run it to see the new behavior. +- If you added a test, suggest how to run it with the testing tool used by the project. +- Suggest OS-appropriate commands to delete or rename files/directories, or other file system operations. +- If your code changes add new dependencies, suggest the command to install them. +- Etc. + +""" # noqa From a9883ccc25aec8106d032ff91fd5ca0673f74cc2 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Mon, 5 May 2025 19:03:32 -0700 Subject: [PATCH 09/14] copy --- README.md | 2 +- aider/website/assets/sample-analytics.jsonl | 408 +++++++++--------- .../website/docs/config/adv-model-settings.md | 5 + aider/website/docs/faq.md | 6 +- aider/website/docs/llms/other.md | 6 +- aider/website/index.html | 2 +- 6 files changed, 217 insertions(+), 212 deletions(-) diff --git a/README.md b/README.md index 688506ab5..cdf0f5c1b 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ cog.out(text) GitHub Stars PyPI Downloads +src="https://img.shields.io/badge/📦%20Installs-2.1M-2ecc71?style=flat-square&labelColor=555555"/> Tokens per week OpenRouter Ranking - - - + + + diff --git a/aider/website/docs/llms/other.md b/aider/website/docs/llms/other.md index c77c8ff54..5927230f6 100644 --- a/aider/website/docs/llms/other.md +++ b/aider/website/docs/llms/other.md @@ -55,8 +55,8 @@ lines = run( lines = ['- ' + line for line in lines.splitlines(keepends=True)] cog.out(''.join(lines)) ]]]--> -- ALEPHALPHA_API_KEY - ALEPH_ALPHA_API_KEY +- ALEPHALPHA_API_KEY - ANTHROPIC_API_KEY - ANYSCALE_API_KEY - AZURE_AI_API_KEY @@ -66,15 +66,15 @@ cog.out(''.join(lines)) - CEREBRAS_API_KEY - CLARIFAI_API_KEY - CLOUDFLARE_API_KEY +- CO_API_KEY - CODESTRAL_API_KEY - COHERE_API_KEY -- CO_API_KEY - DATABRICKS_API_KEY - DEEPINFRA_API_KEY - DEEPSEEK_API_KEY -- FIREWORKSAI_API_KEY - FIREWORKS_AI_API_KEY - FIREWORKS_API_KEY +- FIREWORKSAI_API_KEY - GEMINI_API_KEY - GROQ_API_KEY - HUGGINGFACE_API_KEY diff --git a/aider/website/index.html b/aider/website/index.html index 50947389d..bb7ab7b1c 100644 --- a/aider/website/index.html +++ b/aider/website/index.html @@ -73,7 +73,7 @@ cog.out(text) 📦 Installs - 2.0M + 2.1M
📈 Tokens/week From 72476f0967d4de54bb762e3398833c88f7c2f28f Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Mon, 5 May 2025 19:05:11 -0700 Subject: [PATCH 10/14] bump deps --- requirements.txt | 22 ++++++-------- requirements/common-constraints.txt | 38 +++++++++++------------- requirements/requirements-browser.txt | 6 ++-- requirements/requirements-dev.txt | 14 ++++----- requirements/requirements-help.txt | 8 ++--- requirements/requirements-playwright.txt | 4 +-- 6 files changed, 43 insertions(+), 49 deletions(-) diff --git a/requirements.txt b/requirements.txt index d8efa792e..8fdd901f4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -52,7 +52,7 @@ cffi==1.17.1 # -c requirements/common-constraints.txt # sounddevice # soundfile -charset-normalizer==3.4.1 +charset-normalizer==3.4.2 # via # -c requirements/common-constraints.txt # requests @@ -112,11 +112,11 @@ google-api-core[grpc]==2.24.2 # google-ai-generativelanguage # google-api-python-client # google-generativeai -google-api-python-client==2.168.0 +google-api-python-client==2.169.0 # via # -c requirements/common-constraints.txt # google-generativeai -google-auth==2.39.0 +google-auth==2.40.0 # via # -c requirements/common-constraints.txt # google-ai-generativelanguage @@ -209,7 +209,7 @@ jsonschema-specifications==2025.4.1 # via # -c requirements/common-constraints.txt # jsonschema -litellm==1.67.4.post1 +litellm==1.68.0 # via # -c requirements/common-constraints.txt # -r requirements/requirements.in @@ -233,10 +233,6 @@ mixpanel==4.10.1 # via # -c requirements/common-constraints.txt # -r requirements/requirements.in -monotonic==1.6 - # via - # -c requirements/common-constraints.txt - # posthog multidict==6.4.3 # via # -c requirements/common-constraints.txt @@ -251,7 +247,7 @@ numpy==1.26.4 # -c requirements/common-constraints.txt # scipy # soundfile -openai==1.76.0 +openai==1.75.0 # via # -c requirements/common-constraints.txt # litellm @@ -273,11 +269,11 @@ pillow==11.2.1 # via # -c requirements/common-constraints.txt # -r requirements/requirements.in -pip==25.1 +pip==25.1.1 # via # -c requirements/common-constraints.txt # -r requirements/requirements.in -posthog==4.0.0 +posthog==4.0.1 # via # -c requirements/common-constraints.txt # -r requirements/requirements.in @@ -329,13 +325,13 @@ pycparser==2.22 # via # -c requirements/common-constraints.txt # cffi -pydantic==2.11.3 +pydantic==2.11.4 # via # -c requirements/common-constraints.txt # google-generativeai # litellm # openai -pydantic-core==2.33.1 +pydantic-core==2.33.2 # via # -c requirements/common-constraints.txt # pydantic diff --git a/requirements/common-constraints.txt b/requirements/common-constraints.txt index dcaa773a3..0f0d09910 100644 --- a/requirements/common-constraints.txt +++ b/requirements/common-constraints.txt @@ -50,7 +50,7 @@ cffi==1.17.1 # soundfile cfgv==3.4.0 # via pre-commit -charset-normalizer==3.4.1 +charset-normalizer==3.4.2 # via requests click==8.1.8 # via @@ -129,9 +129,9 @@ google-api-core[grpc]==2.24.2 # google-cloud-bigquery # google-cloud-core # google-generativeai -google-api-python-client==2.168.0 +google-api-python-client==2.169.0 # via google-generativeai -google-auth==2.39.0 +google-auth==2.40.0 # via # google-ai-generativelanguage # google-api-core @@ -216,7 +216,7 @@ jinja2==3.1.6 # torch jiter==0.9.0 # via openai -joblib==1.4.2 +joblib==1.5.0 # via # nltk # scikit-learn @@ -231,7 +231,7 @@ jsonschema-specifications==2025.4.1 # via jsonschema kiwisolver==1.4.8 # via matplotlib -litellm==1.67.4.post1 +litellm==1.68.0 # via -r requirements/requirements.in llama-index-core==0.12.26 # via @@ -255,8 +255,6 @@ mdurl==0.1.2 # via markdown-it-py mixpanel==4.10.1 # via -r requirements/requirements.in -monotonic==1.6 - # via posthog mpmath==1.3.0 # via sympy multidict==6.4.3 @@ -267,7 +265,7 @@ multiprocess==0.70.18 # via pathos mypy-extensions==1.1.0 # via typing-inspect -narwhals==1.37.0 +narwhals==1.38.0 # via altair nest-asyncio==1.6.0 # via llama-index-core @@ -293,7 +291,7 @@ numpy==1.26.4 # soundfile # streamlit # transformers -openai==1.76.0 +openai==1.75.0 # via litellm packaging==24.2 # via @@ -326,7 +324,7 @@ pillow==11.2.1 # matplotlib # sentence-transformers # streamlit -pip==25.1 +pip==25.1.1 # via # -r requirements/requirements.in # pip-tools @@ -336,11 +334,11 @@ platformdirs==4.3.7 # via # banks # virtualenv -playwright==1.51.0 +playwright==1.52.0 # via -r requirements/requirements-playwright.in pluggy==1.5.0 # via pytest -posthog==4.0.0 +posthog==4.0.1 # via -r requirements/requirements.in pox==0.3.6 # via pathos @@ -383,20 +381,20 @@ pycodestyle==2.13.0 # via flake8 pycparser==2.22 # via cffi -pydantic==2.11.3 +pydantic==2.11.4 # via # banks # google-generativeai # litellm # llama-index-core # openai -pydantic-core==2.33.1 +pydantic-core==2.33.2 # via pydantic pydeck==0.9.1 # via streamlit pydub==0.25.1 # via -r requirements/requirements.in -pyee==12.1.1 +pyee==13.0.0 # via playwright pyflakes==3.3.2 # via flake8 @@ -480,7 +478,7 @@ semver==3.0.4 # via -r requirements/requirements-dev.in sentence-transformers==4.1.0 # via llama-index-embeddings-huggingface -setuptools==80.0.0 +setuptools==80.3.1 # via pip-tools shellingham==1.5.4 # via typer @@ -505,7 +503,7 @@ soupsieve==2.7 # via beautifulsoup4 sqlalchemy[asyncio]==2.0.40 # via llama-index-core -streamlit==1.44.1 +streamlit==1.45.0 # via -r requirements/requirements-browser.in sympy==1.14.0 # via torch @@ -552,7 +550,7 @@ tree-sitter-language-pack==0.7.2 # via grep-ast tree-sitter-yaml==0.7.0 # via tree-sitter-language-pack -typer==0.15.2 +typer==0.15.3 # via -r requirements/requirements-dev.in typing-extensions==4.13.2 # via @@ -588,9 +586,9 @@ urllib3==2.4.0 # via # mixpanel # requests -uv==0.6.17 +uv==0.7.2 # via -r requirements/requirements-dev.in -virtualenv==20.30.0 +virtualenv==20.31.1 # via pre-commit watchfiles==1.0.5 # via -r requirements/requirements.in diff --git a/requirements/requirements-browser.txt b/requirements/requirements-browser.txt index 2108cc2f8..4b8c880f0 100644 --- a/requirements/requirements-browser.txt +++ b/requirements/requirements-browser.txt @@ -21,7 +21,7 @@ certifi==2025.4.26 # via # -c requirements/common-constraints.txt # requests -charset-normalizer==3.4.1 +charset-normalizer==3.4.2 # via # -c requirements/common-constraints.txt # requests @@ -58,7 +58,7 @@ markupsafe==3.0.2 # via # -c requirements/common-constraints.txt # jinja2 -narwhals==1.37.0 +narwhals==1.38.0 # via # -c requirements/common-constraints.txt # altair @@ -123,7 +123,7 @@ smmap==5.0.2 # via # -c requirements/common-constraints.txt # gitdb -streamlit==1.44.1 +streamlit==1.45.0 # via # -c requirements/common-constraints.txt # -r requirements/requirements-browser.in diff --git a/requirements/requirements-dev.txt b/requirements/requirements-dev.txt index f34d35c97..b0cf358d1 100644 --- a/requirements/requirements-dev.txt +++ b/requirements/requirements-dev.txt @@ -16,7 +16,7 @@ cfgv==3.4.0 # via # -c requirements/common-constraints.txt # pre-commit -charset-normalizer==3.4.1 +charset-normalizer==3.4.2 # via # -c requirements/common-constraints.txt # requests @@ -63,7 +63,7 @@ google-api-core[grpc]==2.24.2 # -c requirements/common-constraints.txt # google-cloud-bigquery # google-cloud-core -google-auth==2.39.0 +google-auth==2.40.0 # via # -c requirements/common-constraints.txt # google-api-core @@ -168,7 +168,7 @@ pillow==11.2.1 # via # -c requirements/common-constraints.txt # matplotlib -pip==25.1 +pip==25.1.1 # via # -c requirements/common-constraints.txt # pip-tools @@ -269,7 +269,7 @@ semver==3.0.4 # via # -c requirements/common-constraints.txt # -r requirements/requirements-dev.in -setuptools==80.0.0 +setuptools==80.3.1 # via # -c requirements/common-constraints.txt # pip-tools @@ -281,7 +281,7 @@ six==1.17.0 # via # -c requirements/common-constraints.txt # python-dateutil -typer==0.15.2 +typer==0.15.3 # via # -c requirements/common-constraints.txt # -r requirements/requirements-dev.in @@ -297,11 +297,11 @@ urllib3==2.4.0 # via # -c requirements/common-constraints.txt # requests -uv==0.6.17 +uv==0.7.2 # via # -c requirements/common-constraints.txt # -r requirements/requirements-dev.in -virtualenv==20.30.0 +virtualenv==20.31.1 # via # -c requirements/common-constraints.txt # pre-commit diff --git a/requirements/requirements-help.txt b/requirements/requirements-help.txt index bac3da465..8305671fb 100644 --- a/requirements/requirements-help.txt +++ b/requirements/requirements-help.txt @@ -35,7 +35,7 @@ certifi==2025.4.26 # httpcore # httpx # requests -charset-normalizer==3.4.1 +charset-normalizer==3.4.2 # via # -c requirements/common-constraints.txt # requests @@ -120,7 +120,7 @@ jinja2==3.1.6 # -c requirements/common-constraints.txt # banks # torch -joblib==1.4.2 +joblib==1.5.0 # via # -c requirements/common-constraints.txt # nltk @@ -196,12 +196,12 @@ propcache==0.3.1 # -c requirements/common-constraints.txt # aiohttp # yarl -pydantic==2.11.3 +pydantic==2.11.4 # via # -c requirements/common-constraints.txt # banks # llama-index-core -pydantic-core==2.33.1 +pydantic-core==2.33.2 # via # -c requirements/common-constraints.txt # pydantic diff --git a/requirements/requirements-playwright.txt b/requirements/requirements-playwright.txt index 536775faa..e16058c8b 100644 --- a/requirements/requirements-playwright.txt +++ b/requirements/requirements-playwright.txt @@ -4,11 +4,11 @@ greenlet==3.2.1 # via # -c requirements/common-constraints.txt # playwright -playwright==1.51.0 +playwright==1.52.0 # via # -c requirements/common-constraints.txt # -r requirements/requirements-playwright.in -pyee==12.1.1 +pyee==13.0.0 # via # -c requirements/common-constraints.txt # playwright From 7773bbc9086b45a0e45ebd58e1db5054c8e4c575 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Mon, 5 May 2025 19:13:49 -0700 Subject: [PATCH 11/14] copy --- HISTORY.md | 10 ++++-- aider/website/HISTORY.md | 10 ++++-- aider/website/assets/sample-analytics.jsonl | 36 ++++++++++----------- aider/website/docs/faq.md | 6 ++-- 4 files changed, 37 insertions(+), 25 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 337a05e6c..f8160d5f3 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -3,10 +3,16 @@ ### main branch - Add support for `gemini-2.5-flash-preview-04-17` models. -- Improved "diff" format for Gemini 2.5 Flash by accepting filenames provided on the same line as the opening fence. +- Improved robustness of edit block parsing when filenames start with backticks or fences. - Add new `udiff-simple` edit format, for Gemini 2.5 Pro. - Update default weak/editor models for Gemini 2.5 Pro models to use `gemini-2.5-flash-preview-04-17`. -- Aider wrote 69% of the code in this release. +- Instruct models to reply in the user's detected system language. +- Fix parsing of diffs for newly created files (`--- /dev/null`). +- Add markdown syntax highlighting support when editing multi-line commit messages via `/commit`, by Kay Gosho. +- Set Gemini 2.5 Pro models to use the `overeager` prompt setting by default. +- Add common file types (`.svg`, `.pdf`) and IDE directories (`.idea/`, `.vscode/`, etc.) to the default list of ignored files for AI comment scanning (`--watch`). +- Skip scanning files larger than 1MB for AI comments (`--watch`). +- Aider wrote 67% of the code in this release. ### Aider v0.82.2 diff --git a/aider/website/HISTORY.md b/aider/website/HISTORY.md index abce8bd1d..b177cb8da 100644 --- a/aider/website/HISTORY.md +++ b/aider/website/HISTORY.md @@ -27,10 +27,16 @@ cog.out(text) ### main branch - Add support for `gemini-2.5-flash-preview-04-17` models. -- Improved "diff" format for Gemini 2.5 Flash by accepting filenames provided on the same line as the opening fence. +- Improved robustness of edit block parsing when filenames start with backticks or fences. - Add new `udiff-simple` edit format, for Gemini 2.5 Pro. - Update default weak/editor models for Gemini 2.5 Pro models to use `gemini-2.5-flash-preview-04-17`. -- Aider wrote 69% of the code in this release. +- Instruct models to reply in the user's detected system language. +- Fix parsing of diffs for newly created files (`--- /dev/null`). +- Add markdown syntax highlighting support when editing multi-line commit messages via `/commit`, by Kay Gosho. +- Set Gemini 2.5 Pro models to use the `overeager` prompt setting by default. +- Add common file types (`.svg`, `.pdf`) and IDE directories (`.idea/`, `.vscode/`, etc.) to the default list of ignored files for AI comment scanning (`--watch`). +- Skip scanning files larger than 1MB for AI comments (`--watch`). +- Aider wrote 67% of the code in this release. ### Aider v0.82.2 diff --git a/aider/website/assets/sample-analytics.jsonl b/aider/website/assets/sample-analytics.jsonl index d10bbad5f..7dadbe766 100644 --- a/aider/website/assets/sample-analytics.jsonl +++ b/aider/website/assets/sample-analytics.jsonl @@ -1,21 +1,3 @@ -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1744672990} -{"event": "repo", "properties": {"num_files": 611}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1744672992} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1744672992} -{"event": "exit", "properties": {"reason": "Exit flag set"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1744672992} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1744672992} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1744672993} -{"event": "repo", "properties": {"num_files": 611}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1744672993} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1744672993} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1744672993} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1744673037} -{"event": "gui session", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1744673038} -{"event": "exit", "properties": {"reason": "GUI session ended"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1744673038} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1744676838} -{"event": "repo", "properties": {"num_files": 611}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1744676839} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1744676839} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "diff-fenced"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1744676839} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1744678980} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1744690929} {"event": "repo", "properties": {"num_files": 611}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1744690930} {"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1744690930} {"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "diff-fenced"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1744690930} @@ -998,3 +980,21 @@ {"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746146014} {"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746146014} {"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 21508, "completion_tokens": 724, "total_tokens": 22232, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746146038} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497069} +{"event": "repo", "properties": {"num_files": 616}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497069} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497069} +{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497072} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497077} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497174} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497177} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 30848, "completion_tokens": 526, "total_tokens": 31374, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497198} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497235} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 31391, "completion_tokens": 528, "total_tokens": 31919, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497253} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497546} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497546} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497546} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497546} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 15562, "completion_tokens": 328, "total_tokens": 15890, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497569} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497569} +{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497571} +{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497574} diff --git a/aider/website/docs/faq.md b/aider/website/docs/faq.md index cc9e0ac2d..d19b10ceb 100644 --- a/aider/website/docs/faq.md +++ b/aider/website/docs/faq.md @@ -264,9 +264,9 @@ tr:hover { background-color: #f5f5f5; }
Model NameTotal TokensPercent
gemini/gemini-2.5-pro-exp-03-251,637,70083.1%
o3186,9539.5%
openrouter/anthropic/claude-3.7-sonnet76,2853.9%
gemini/gemini-2.5-pro-exp-03-251,746,98582.7%
o3239,61911.3%
openrouter/anthropic/claude-3.7-sonnet56,3182.7%
gemini/gemini-2.5-flash-preview-04-1718,6450.9%
gemini/gemini-2.5-pro-preview-03-2516,5240.8%
o4-mini16,4990.8%
- - - + + + From 2d9ea2527341b60456db07c5acf0e347ad98a44e Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Mon, 5 May 2025 19:17:36 -0700 Subject: [PATCH 12/14] fix: Add newline after "Reply in {user_lang}" reminder --- aider/coders/base_coder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index a9cd778bc..feaeab857 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -1146,7 +1146,7 @@ class Coder: user_lang = self.get_user_language() if user_lang: - final_reminders.append(f"Reply in {user_lang}.") + final_reminders.append(f"Reply in {user_lang}.\n") platform_text = self.get_platform_info() From c23e609902f2e161403dbd67a10c38ce7c924909 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Mon, 5 May 2025 20:23:43 -0700 Subject: [PATCH 13/14] version bump to 0.82.3 --- aider/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aider/__init__.py b/aider/__init__.py index 825bf0439..67296b5c4 100644 --- a/aider/__init__.py +++ b/aider/__init__.py @@ -1,6 +1,6 @@ from packaging import version -__version__ = "0.82.3.dev" +__version__ = "0.82.3" safe_version = __version__ try: From 8159cbf7d34c9e4d02d1558f619dc2c94049345e Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Mon, 5 May 2025 20:23:46 -0700 Subject: [PATCH 14/14] set version to 0.82.4.dev --- aider/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aider/__init__.py b/aider/__init__.py index 67296b5c4..5b4532b97 100644 --- a/aider/__init__.py +++ b/aider/__init__.py @@ -1,6 +1,6 @@ from packaging import version -__version__ = "0.82.3" +__version__ = "0.82.4.dev" safe_version = __version__ try:
Model NameTotal TokensPercent
gemini/gemini-2.5-pro-exp-03-251,746,98582.7%
o3239,61911.3%
openrouter/anthropic/claude-3.7-sonnet56,3182.7%
gemini/gemini-2.5-pro-exp-03-251,826,16883.3%
o3239,61910.9%
openrouter/anthropic/claude-3.7-sonnet56,3182.6%
gemini/gemini-2.5-flash-preview-04-1718,6450.9%
gemini/gemini-2.5-pro-preview-03-2516,5240.8%
o4-mini16,4990.8%