- Now it's possible to automatically save the AI window position [#685].
- [OpenAI API] Fix: Correctly showing failed response errors during streaming [#690].
- Fix: Correctly adding tags with non-ASCII characters [#689].
- Improved the spacing between lines when displaying the AI response in the API webchat [#686].
- Some minor improvments.
- Fix: Correctly handling additional text without a placeholder [#681].
- ThunderAI is now compatible only with Thunderbird 140 and later [#616].
- [All APIs] It's now possibile to define a specific API integration for calendar and task recognition [#498].
- Added a new model selector with a search functionality to dynamically filter the list [#603].
- [All APIs] Added a special prompt to summarize one or more emails, using a context menu command [#615]. Thanks to Guido Kraemer for his great work on this feature.
- [All APIs] "Analyze for spam" and "Add tags" context menu items are always shown when the corresponding feature is enabled [#609].
- [OpenAI Comp API][Ollama API] Asking for the single host for permission to avoid CORS errors, instead of all_urls, as requested by the Thunderbird Review Team [#524].
- Fix: Using also the mail folder owner to search for the right identity to use when composing a reply [#627].
- Context menu items are always ordered alfabetically [#630].
- The prompt export now includes an option to incorporate specific API settings, when present [#624].
- Added the {%mail_text_body_or_selected%} placeholder to retrieve the selected text or the full text body of the email if no selection is present [#641].
- Added the {%mail_html_body_or_selected%} placeholder to retrieve the selected HTML or the full HTML body of the email if no selection is present [#641].
- [All APIs] Added an option to get a calendar event without selecting some text, but using the full text body of the email [#518].
- [All APIs] Added a new menu item to create a calendar event from the text saved in the clipboard [#362].
- Added a button to copy a prompt in the Custom Prompts page [#598].
- [All APIs] Showing the spam filter info at the top of the message. The data is saved only for the session in which the message has been checked for spam [#506, #658].
- Fix: Now it's possibile to use multiple additional_text placeholders in a single prompt, also using custom placeholders [#554].
- When using the additional_text placeholder is now possibile to specify an ID that will be shown in the form asking for the text [#525].
- [ChatGPT Web] Added an option to define a custom time to wait for the page load. Sometimes, on slow PCs, the ChatGPT page loads slowly and ThunderAI inject its content too early. With this option you can adjust the waiting time [#634].
- Fix: Correctly showing email addresses when using mail headers in data placeholders [#672].
- [ChatGPT Web] Fix: Correctly importing the selected text into the compose windows also when ChatGPT shows the advanced mail editor in the response [#646].
- Fix: Correctly saving the API settings in new custom prompts [#623].
- Japanese (ja) translation added, thanks to Taichi Ito.
- Fix: Correctly saving the enabled status in custom prompts [#621].
- [OpenAI API] Fix: Correctly sending the prompt after opening the chat window [#620].
- [All APIs] Now it is possible to define an API and its settings for any custom prompt. This allows anyone to use different AI providers for different prompts [#102].
- [All APIs] When using special prompts (like automatically adding tags or the spam filter) with a specific API integration, all the settings for that integration can be specific. In this way you can use different api keys for the same integration, or different system prompt or temperature [#590].
- [All APIs] Added the temperature parameter [#561].
- [OpenAI API] Model filtering improved when choosing a model in the options page.
- [OpenAI API] Now using the new Responses API [#407].
- It is now possible to define a custom placeholder with dynamic data to retrieve any header present in the current email [#527].
- [All APIs] The configuration information reported in the webchat API has been improved for all integrations.
- Spanish (es) translation added, thanks to Gerardo Sobarzo, Andrés Rendón Hernández, Erick Limon.
- Swedish (sv) translation added, thanks to Andreas Pettersson.
- Various fixes.
- [ChatGPT Web] Fix: Correctly getting the job completion [#607].
- Greek (el) translation added, thanks to ChristosK..
- [Claude API][OpenAI API] Fix: asking required permissions before fetching models [#558].
- [Google Gemini API][Ollama API][OpenAI API][OpenAI Comp API] Fix: improved error handling when parsing responses [#550].
- [Claude API] Added the System Prompt configuration option [#549].
- [ChatGPT Web] Fix: correctly showing the input field after an update in the HTML page from OpenAI [#556].
- [OpenAI API] Fixed a bug when handling responses without choices [#535].
- [ChatGPT Web] Fixed a bug preventing the ChatGPT web interface from working in new installs [#534].
- [ChatGPT Web] Fix: Correctly managing custom projects in any condition [#520].
- [OpenAI API] Added an optional permission for the OpenAI API endpoint to avoid a CORS errors [#529].
- [ChatGPT Web] Fix: Not showing the force complete hint if the prompt has not been sent.
- [ChatGPT Web] Fix: Correctly getting when ChatGPT has finished sending the response even when using custom projects.
- [ChatGPT Web] Fix: Under certain conditions, asking for additional text prevents ThunderAI from sending the prompt to ChatGPT [#522].
- [Google Gemini API] Fix: Correctly handling empty responses [#514].
- [All APIs] It's now possibile to define a list of tags to be used when autotagging received emails [#436]. The tags are are now shown in the information header in the AI API chat [#289].
- [All APIs] The prompt id and name are now shown in the information header in the AI API chat [#436].
- [All APIs] It's now possibile to define a specific API integration for spamfilter and auto tagging [#438].
- Added the {%mail_attachments_info%} placeholder to retrieve the name, type and file size of the mail attachments [#446].
- [Google Gemini API] Support for the thinkingBudget parameter has been added [#494].
- [OpenAI Comp API] Added DeepSeek configuration [#486].
- [ChatGPT Web] Added a message to explain to click on "Force completion" if the ChatGPT job is not done after 7 seconds [#419].
- Anthropic API renamed to Claude API [#510].
- Various code improvements and minor bugs fixed.
- [OpenAI Comp API] Perplexity configuration fixed [#461].
- [OpenAI Comp API] Added a button to clear the models list [#472].
- [ChatGPT Web] Fix: Any <br> tag in the response is now replaced with a line break [#462].
- [ChatGPT Web] Models list updated. [#464].
- [ChatGPT Web] Improved how the line breaks are rendered in the ChatGPT web page [#482].
- [All APIs] Fix: If the incoming email has no text only part, the html part is used [#470].
- [All APIs] Fix: Improved the extraction of the plain text from html emails [#469].
- [All APIs] Fix: Improved how the line breaks are rendered in the AI chat [#469].
- [All APIs] If the option to use only existing tags is enabled, this now works also when adding tags manually using the ThunderAI menu [#475].
- [All APIs][ChatGPT Web] Fix: Correctly showing and hiding the context menu when changing connection type.
- Now it's possibile to define custom data placeholders to be used in custom prompts [#156].
- Improved the handling of HTML and line breaks between the email text and the AI Chat.
- When replying, it's now possibile to choose a different reply type (between "all" or "sender only") directly in the AI chat window [#372].
- Added a new default prompt for replying to emails, which asks for a custom command each time it's used [#444].
- [All APIs] Added an option to choose to exclude a tag only with an exact match in the excluded words list [#395].
- [OpenAI API] Added an option to enable the OpenAI storage for API requests [#406].
- [OpenAI API] In the AI chat page, the initial configuration now also displays the storage setting and the "Developer Messages" [#430].
- [Ollama API] Added an option to enable the thinking feature [#398].
- [Google Gemini API] In the AI chat page, the initial configuration now also displays the "System Instructions". [#429].
- [OpenAI Comp API] Handling responses without choices when using RAG [#416].
- [OpenAI Comp API] Added Perplexity configuration [#405].
- [OpenAI Comp API] Added OpenRouter configuration [#401].
- Traditional Chinese (zh_Hant) translation added, thanks to evez.
- Russian (ru) translation added, thanks to Maksim.
- Some English typing errors have been fixed [#422].
- [All APIs] Fix: Autotag and Antispam filter working again [#449].
- [ChatGPT Web] Fix: Changed again how to detect when the response is completed.
- [ChatGPT Web] Fix: Auto scroll to bottom works again.
- [ChatGPT Web] Fix: Correctly detecting when the response is completed.
- [ChatGPT Web] Fix: Correctly hiding the model warning message when forcing to send the prompt [#410].
- [ChatGPT Web] Fix: ThunderAI is now working also with a free account [#408].
- [ChatGPT Web] Fix: Correctly showing a warning message to a not logged in user [#411].
- [ChatGPT Web] Improved the model not found message [#413].
- [All APIs] Fix: The selection info message in the API WebChat is shown only when needed [#412].
- Czech (cs) translation updated, thanks to Jaroslav Staněk.
- Fix: correctly saving text options [#400].
- Added Anthropic API support [#349].
- Added the {%selected_html%} placeholder to retrieve the HTML portion of the selected text [#368].
- [OpenAI Comp API] Added a shortcut to select configurations for known AI services. Currently, Grok AI and Mistral AI are available [#378]. Open an issue to request additional services.
- [All APIs] In the API WebChat is now possibile to select a part of the answer and use only that [#356].
- [All APIs] Setting the "Max prompt length" to zero on the options page will disable the length check when sending a prompt to the AI. [#380].
- [All APIs] Added a button to the options page to reset the 'Max prompt length' value to its default.
- [All APIs] Adding tags automatically or with the context menu will now use also tags not created by ThunderAI [#390].
- Fix: in the Spamfilter page the unsaved changes warning is now correctly shown.
- Fix: The default keyboard shortcut is no longer enforced at every Thunderbird startup [#384].
- Fix: Incoming email processing now works correctly when auto-tagging is enabled and the full tagging feature is subsequently disabled.
- Fix: The reply type is correctly saved in the options. [#387].
- [All APIs] Added a special prompt to get tasks data from emails [#333]. To use this feature, you must install also the Sparks add-on.
- [ChatGPT Web] It is now possible to define a Custom GPT or a Project in the options page to be used by default, or directly in a custom prompt to be used only for that prompt [#168, #277].
- The chatgpt.com access permission is no more requested when installing the addon. It's mandatory to give this permission to use the ChatGPT Web Interface integration [#293].
- Added the {%mail_quoted_text%} placeholder to get the quoted text when composing a new message [#324].
- Fix: correctly choosing the right account when replying [#369].
- Fix: In the {%mail_typed_text%} placeholder text on different lines is now separated by a space.
- Fix: correctly showing text differences when using {%mail_typed_text%} placeholder.
- Added a default proofread prompt [#21].
- Added the {%empty%} placeholder to prevent the email body from being automatically appended at the end of the prompt [#345].
- Added a check for the presence of the correct version of ThunderAI Sparks [#315].
- [All APIs] Improved the form asking for additional text [#97].
- [All APIs] Fix: Ensure HTML body is generated from plain text if no parts are available when processing incoming messages for tags or spam.
- Fix a condition when using a prompt from the compose window with a "Do reply" action that is changed in "Substitute Text" [#353].
- Custom Prompts form improved.
- Various improvements.
- Using a prompt from the compose window with a "Do reply" action is changed in "Substitute Text", asking also to insert text if none is selected [#353].
- Added an option when composing in plain text to remove the extra empty lines [#350].
- [Ollama API] It's now possibile to define the default context length (the num_ctx parameter) in the options page [#351].
- [ChatGPT Web] Updated the list of available models in the option page.
- [ChatGPT Web] Opening the ChatGPT webpage from the options now enforce the selected model, if any.
- [All APIs] Fix: Really correctly getting the message body even in multilevel subpart messages when processing incoming messages for tags or spam [#335].
- Minor improvements.
- [ChatGPT Web] Fixed a blocking error with the " character in the mail text [#344].
- [All APIs] Fix: Correctly getting the message body even in multilevel subpart messages when processing incoming messages for tags or spam [#335].
- Minor improvements.
- [Ollama API][OpenAI Comp API] Added an info panel to the options page about CORS, along with a button to request the "All URLs" optional permission to avoid potential CORS issues. [#330, #331]. Thanks to John Bieling for the hint.
- [ChatGPT Web] The "Show diff" button is now shown only when correctly set up [#321].
- [ChatGPT Web] The additional text field is now focused [#323].
- Added a warning in the options page for linux users [#318].
- [All APIs] Fix: Correctly not showing the "Add tags menu" soon after installation if the option is not checked [#329].
- Czech (cs) translation updated, thanks to Jaroslav Staněk.
- Added the {%mail_folder_name%} placeholder to get the mail folder name [#253].
- Added the {%mail_folder_path%} placeholder to get the mail folder path [#253].
- Added the {%account_email_address%} placeholder to get the current account mail address [#272].
- [ChatGPT Web][All APIs] Added a diff viewer to compare the old and new text. This feature could be activated at prompt level, and it's useful for "rewrite" prompts [#109].
- [All APIs] Added a context menu to automatically add tags and run the spam filter on selected messages. [#262].
- [All APIs] It's now possibile to define a timezone in the calendar event settings page [#250].
- [All APIs] It's now possibile to add the attendees in the calendar event, be sure to update the prompt in the settings [#258].
- The button icon now shows a loading indicator when ThunderAI is performing an operation [#295].
- Improved the handling of null or undefined placeholders [#288].
- Czech (cs) translation added, thanks to Jaroslav Staněk and Fjuro.
- Simplified Chinese (zh_Hans) translation added, thanks to jeklau.
- Some old strings are now translated in the API webchat [#298].
- [ChatGPT Web] Fixed hiding the Spam Filter options [#284].
- Unchecking the "Add tags" and "Spam Filter" options if the user revokes the related optional permissions [#286].
- The permission to 'List message tags' is now mandatory; otherwise, the tags-related placeholder won't be usable. The permission to modify tags is optional and required to tag emails.
- Various improvements.
- Fixed compatibility with Thunderbird 115 [#281].
- Fixed a bug with the optional permissions not retained at startup [#279]
- Fixed a race condition in saving the report data of the Spam Filter.
- Fix calling a prompt without giving tags related permissions [#275].
- Deactivating the add tags feature if the related permissions are revoked [#276].
- Minor bugs fixed.
- [All APIs] Added an option to automatically tag incoming emails [#237].
- [All APIs] Added an configurable antispam filter for incoming emails [#231].
- Tags related permissions are now optional and asked for only when the user activates the tags feature [#259].
- Added the {%thunderai_def_sign%} placeholder to get the default signature as defined in the options [#248].
- Added the {%thunderai_def_lang%} placeholder to get the default language as defined in the options [#248].
- Croatian (hr) translation added, thanks to Petar Jedvaj.
- German (de) translation errors fixed.
- Translations improved thanks to Hosted Weblate. Help translating ThunderAI!.
- Various minor improvements.
- [ChatGPT Web] Correctly hiding the "Download Sparks" message when using [#245].
- [ChatGPT Web] Added support to autochoose the new o1, o3-mini and o3-mini-high models [#244].
- Forcing ThunderAI menu reload when installing Sparks [#240].
- Fixed a bug in translating special prompts.
- Polish (pl) translation improved, thanks to neexpl.
- Fixed the text in the add calendar event settings page.
- [All APIs] Added a special prompt to get calendar events data from emails [#182]. To use this feature, you must install also the Sparks add-on.
- Added Google Gemini API support [#204, #217].
- Added the {%mail_typed_text%} placeholder to get the text inserted before the quoted mail body when replying [#196].
- Using the {%mail_typed_text%} placeholder the typed text inserted before the quoted mail body will be selected automatically to be replaced afterwards with the AI response [#229].
- Added the {%mail_datetime%} placeholder to get the date and time of the email [#223].
- Added the {%current_datetime%} data placeholder to get the current date and time [#224].
- Added an info text about using the new {%tags_full_list%} placeholder in the "Add Tags Prompt" page [#215].
- [All APIs] Added a special prompt to apply tags to emails [#183].
- Default prompts text has been translated [#185].
- Added the {%tags_full_list%} data placeholder for the full available tags list added [#197].
- Added the {%tags_current_email%} data placeholder for the single mail tags list added [#198].
- User survey link added [#202].
- [OpenAI Comp API] Added a button in the options page to manually insert the model [#205].
- Polish (pl) translation added, thanks to neexpl.
- The Custom Prompts tab has now an icon.
- The red border in the Custom Prompts configuration page that highlights a needed prompt configuration that is not selected is now removed when the corresponding placeholder is removed [#201].
- Minor bugs fixed.
- [ChatGPT API] Correctly showwing an error message received from the ChatGPT API [#191].
- [ChatGPT Web] Correctly sending the prompt even if the audio button is present on the web interface [#188].
- [ChatGPT Web] The input field is always visibile [#189].
- [ChatGPT Web] Clicking on one of the allowed model values in the options page, sets the corresponding field value.
- [ChatGPT Web] Debug log improved.
- [ChatGPT Web] Improved the default value for model enforcing [#176].
- Reverted the position of the action button in the compose window [#175].
- The action button in the compose window has been moved to the formatting toolbar [#173].
- On the custom prompts page, when editing a prompt, pressing the cancel button will revert any modified values in the form to their saved state.
- Implemented placeholders to add additional data to prompts [More info] [#146, #153].
- Text improved for the "Reply to this" prompt.
- Added an option to set the maximum number of characters in the prompt [#165].
- Added a workaround to show an alert message when needed [#166].
- [ChatGPT Web] Added an option to set the model to use [#171].
- [ChatGPT Web] Added an option to use the temporary chat [#169].
- A few typos fixed [#170].
- Added a loading indicator in the menu when sending a prompt.
- Added a new default prompt that uses the placeholders and allows replying to an email thread. It requires selecting the text of the first email to identify which is the one to reply to and the others in the thread [#150].
- APIs error handling improved.
- [OpenAI Comp API] Added an option to remove the v1 segment in the API calls path [#161].
- [ChatGPT Web] Added a workaround to login in ChatGPT. See the new button in the options page.
- Brazilian Portuguese (pt-br) translation updated, thanks to Bruno Pereira de Souza.
- [ChatGPT Web] Removed the option to force the ChatGPT4 model over ChatGPT3.5, since it was useless now.
- [ChatGPT Web] Minor internal improvements.
- [OpenAI Comp API] Added a new integration method to use a local LLM via an API compatible with OpenAI's API specifications [#126].
- Custom Prompts storage space incremented to 5MB, using storage.local. Added also the total occupied space at the bottom of the Custom Prompts page [#129].
- [ChatGPT Web] Updated the information in the option page.
- A new dynamic menu for selecting prompts has been added. In addition to clicking the ThunderAI button, you can now use the CTRL+ALT+A keyboard shortcut [More info] [#130].
- Added an option to order alphabetically the prompts in the menu.
- Allow 0 as the dimensions for the chat window in the options page to prevent issues, such as those encountered with NixOS/Hyprland [#137].
- Is now possible to ask for additional text before sending the prompts also for default prompts [#135].
- Fixed a bug that occurred when importing prompts after an export without closing the Custom Prompts page.
- Brazilian Portuguese (pt-br) translation added, thanks to Bruno Pereira de Souza.
- [Ollama API] Added a link to the CORS information page.
- [All APIs] Improved handling of streaming responses even in case of broken chunks [#147].
- Fixed a race condition that occurred when opening the chat window under certain circumstances. Thanks to @jobisoft for helping refine the code, and to @Mikilio and @mattcaron for the extensive testing [#143].
- [ChatGPT Web] Working again in Thunderbird 115. Implemented a workaround for Intl.Segmenter [#139].
- [ChatGPT API][Ollama API] Fixed the colors of the light theme in the chat window status logger.
- [ChatGPT Web] Correctly handling a change in the web interface [#133].
- [ChatGPT Web] Removed a link to the status page in an error message as requested by Thunderbird Addon Reviewer. Reverted [#123].
- [ChatGPT Web] The URL in the prompt sending error message is now correctly clickable [#123].
- [ChatGPT Web] If the web interface loads slowly, a button is now shown to retry sending the prompt [#122].
- [ChatGPT Web] Improved the methods to open the ChatGPT window and interact with it.
- [ChatGPT API] Fixed a bug in handling the chat window.
- [Ollama API] It's now possible to use a local LMM using Ollama [#79].
- [ChatGPT API][Ollama API] Added a "Stop" button to stop the current elaboration [#113].
- [ChatGPT API] If the configuration is missing the model or the API key, an error message is now provided, and there is no more fallback to the ChatGPT web interface [#111].
- [ChatGPT API][Ollama API] Improved chat colors scheme for darkmode.
- [ChatGPT API][Ollama API] Added a status message to give feedback to the user about the current operation [#119].
- Improved the internal messaging system between the background script and the chat windows [#117].
- Improved error messages for connection errors.
- [ChatGPT Web] Fixed an issue with automatically sending the prompt.
- Some minor improvements.
- [ChatGPT Web] Modified the permissions for the ChatGPT web interface, now requiring only the
https://*.chatgpt.com/*and not all sites. - [ChatGPT Web] Fixed a problem loading the web interface on Thunderbird 115 under some circumstances.
- [ChatGPT API] Fixed the vertical scroolbar with long reponses [#108].
- [ChatGPT API] Fixed a loading bug in Thunderbird 128+ [#107].
- [ChatGPT Web] Now, the ChatGPT response must be selected by the user to be retrieved by ThunderAI. A single click on the text should work, but it's also possible to select the text manually [#104].
- Added a better error message when there is an error fetching models.
- When selecting a correct model in the options page, the field is no more highlighted in red [#100].
- When using the ChatGPT API, the double quotes at the beginning and end of the response are removed [#99].
- [ChatGPT Web] "Keep formatting" option removed.
- [ChatGPT Web] No more notifying a missing API Key or model when using the web interface.
- Added OpenAI ChatGPT API connection [#40].
- Information text in the options page improved.
- Fixed changes in the ChatGPT web interface when importing in plain text [#87].
- Added an option to the prompts to specify the default language for the response [#86].
- Not adding to the prompt the statement about using the default language if asking for a translation [#85].
- [Thunderbird 128+ only] Added a warning message when closing the Custom Prompts page with unsaved changes [#88].
- If no default language is set in the options, the language present in the text sent to ChatGPT will be used [#53].
- Added the functionality to import and export custom prompts [#65].
- Showing the currently used prompt name in the ChatGPT window [#20].
- Added an option to import text with formatting from ChatGPT, set to false by default [#70], [#77].
- Improve the message warning to choose the right model [#76].
- Added a description in the Custom Prompts page about default prompts [#74].
- Added a link to the translate page in the options window [#68].
- Fixed a bug in replying to a message [#71].
- Minor improvements.
- Improved handling of CSS in the ChatGPT web interface.
- A prompt can be configured to request additional text from the user.
- Added custom prompts. See more info here.
- Dark mode added.
- Added some error messages to handle potential changes in the ChatGPT web interface.
- German translation added.
- French translation added.
- Log messages improved.
- Now using the new URL chatgpt.com.
- More improvements in handling the ChatGPT web interface.
- Improved handling of different versions of the ChatGPT web interface.
- Improved the reply prompt to exclude comments and other text beside the mail text.
- Correctly keeping the signature in a reply even if it's above the quoted email [#45].
- Correctly handling a change in the ChatGPT web interface [#43].
- Added a button to force the completion to display the 'Use last answer' button if ChatGPT has finished its work but the button has not appeared.
- Fixed the handling of ChatGPT-4 in a large window [#38].
- Stripping the quotation marks from the response.
- Now it is possible to undo text modifications implemented by ChatGPT (CTRL+Z on Windows) [#34].
- Now closing the compose window after unsaved text modifications implemented by ChatGPT triggers the usual warning message [#30].
- Updated the "Important Information" section on the options page, as it is no longer possible to disable the ChatGPT chat history.
- Using the right identity when replying to a message [#31].
- New standard menus.
- Fixed a bug in importing replies text.
- Fixed the handling of the new change model button in the ChatGPT interface.
- Added an option to choose between GPT-3.5 and GPT-4 Models [#27].
- Added a link to the Status Page, to check if there are known issues in interacting with the ChatGPT web interface.
- Italian addon description fixed.
- Improved the method to open the ChatGPT window. Thanks to John Bieling.
- Fixed a bug in replying to a message. Now the quoted text is correctly displayed.
- Fixed a bug in the compose window. Now is correctly used only the selected text.
- If the prompt is more than 30.000 characters, do not proceed and give a message to the user.
- First release.