Merge pull request #78 from micz/keep_format

Keeping the text formatting from ChatGPT and other minor improvements. Ready for version 1.1.4
This commit is contained in:
Mic 2024-06-28 21:39:10 +02:00 committed by GitHub
commit f273992d84
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 887 additions and 955 deletions

View file

@ -4,9 +4,17 @@
<h2>Version 1.1.4 - 28/06/2024</h2>
<ul>
<li>Added an option to import text with formatting from ChatGPT, set to false by default [<a href="https://github.com/micz/ThunderAI/issues/70">#70</a>], [<a href="https://github.com/micz/ThunderAI/issues/77">#77</a>].</li>
<li>Improve the message warning to choose the right model [<a href="https://github.com/micz/ThunderAI/issues/76">#76</a>].</li>
<li>Added a description in the Custom Prompts page about default prompts [<a href="https://github.com/micz/ThunderAI/issues/74">#74</a>].</li>
<li>Added a link to the <a href="https://micz.it/thunderbird-addon-thunderai/translate/">translate page</a> in the options window [<a href="https://github.com/micz/ThunderAI/issues/68">#68</a>].</li>
</ul>
<h2>Version 1.1.3 - 18/06/2024</h2>
<ul>
<li>Fixed a bug in replying to a message [<a href="https://github.com/micz/ThunderAI/issues/70">#70</a>].</li>
<li>Fixed a bug in replying to a message [<a href="https://github.com/micz/ThunderAI/issues/71">#71</a>].</li>
</ul>
<h2>Version 1.1.2 - 23/05/2024</h2>

View file

@ -13,7 +13,8 @@ Starting from version 1.1.0, you can also define your own **custom prompts**! Fi
<br>
## Translations
Do you want to help translating this addon?
Do you want to help translate this addon?
[Find out how!](https://micz.it/thunderbird-addon-thunderai/translate/)
<br>
@ -25,6 +26,6 @@ ThunderAI's changes are logged [here](CHANGELOG.md).
<br>Thanks to:
<ul><li><a href="https://github.com/KudoAI/chatgpt.js">chatgpt.js</a> for providing methods to interact with the ChatGTP frontend.</li>
<li><a href="https://github.com/ali-raheem/Aify">Aify</a> for inspiration and certains methods to process the text from ChatGPT.</li>
<li><a href="https://github.com/ali-raheem/Aify">Aify</a> for inspiration.</li>
</ul>
<i>The specific references are described in the corresponding source files.</i>

View file

@ -1,407 +1,346 @@
{
"extensionDescription": {
"message": "Verwenden Sie ChatGPT, um Ihre E-Mails zu verbessern!",
"description": "Beschreibung der Erweiterung."
},
"menu_title": {
"message": "KI",
"description": ""
},
"prompt_lang": {
"message": "Antwort in ",
"description": ""
},
"prompt_reply": {
"message": "Darauf antworten",
"description": ""
},
"prompt_rewrite_polite": {
"message": "Höflich umschreiben",
"description": ""
},
"prompt_rewrite_formal": {
"message": "Formal umschreiben",
"description": ""
},
"prompt_classify": {
"message": "Klassifizieren",
"description": ""
},
"prompt_summarize_this": {
"message": "Zusammenfassen",
"description": ""
},
"prompt_translate_this": {
"message": "Übersetzen",
"description": ""
},
"prompt_this": {
"message": "Auffordern",
"description": ""
},
"prompt_selection_needed": {
"message": "Um fortzufahren, müssen Sie einen Text auswählen!",
"description": ""
},
"customPrompts_managePrompts": {
"message": "Eingabeaufforderungen verwalten",
"description": ""
},
"customPrompts_managePrompts_help": {
"message": "Informationen",
"description": ""
},
"customPrompts_start_saving": {
"message": "Eingabeaufforderungen werden gespeichert...",
"description": ""
},
"customPrompts_reindexing_list": {
"message": "Liste wird neu indiziert...",
"description": ""
},
"customPrompts_filtering_prompts": {
"message": "Eingabeaufforderungen werden gefiltert...",
"description": ""
},
"customPrompts_saving_default_prompts": {
"message": "Standard-Eingabeaufforderungen werden gespeichert...",
"description": ""
},
"customPrompts_saving_custom_prompts": {
"message": "Benutzerdefinierte Eingabeaufforderungen werden gespeichert...",
"description": ""
},
"customPrompts_reloading_menus": {
"message": "Menüs werden neu geladen...",
"description": ""
},
"customPrompts_saved": {
"message": "Eingabeaufforderungen gespeichert!",
"description": ""
},
"customPrompts_form_label_ID": {
"message": "ID",
"description": ""
},
"customPrompts_form_label_ID_rules": {
"message": "Muss eindeutig, kleingeschrieben und ohne Leerzeichen sein",
"description": ""
},
"customPrompts_form_label_Name": {
"message": "Name",
"description": ""
},
"customPrompts_form_label_Text": {
"message": "Eingabeaufforderungstext",
"description": ""
},
"customPrompts_form_label_Action": {
"message": "Aktion",
"description": ""
},
"customPrompts_form_label_need_selected": {
"message": "Textauswahl erforderlich",
"description": ""
},
"customPrompts_form_label_need_signature": {
"message": "Immer die Signatur hinzufügen",
"description": ""
},
"customPrompts_form_label_need_custom_text": {
"message": "Nach zusätzlichem Text fragen",
"description": ""
},
"customPrompts_form_label_enabled": {
"message": "Aktiviert",
"description": ""
},
"customPrompts_form_required_fields": {
"message": "Erforderliche Felder",
"description": ""
},
"customPrompts_btnEdit": {
"message": "Bearbeiten",
"description": ""
},
"customPrompts_btnCancel": {
"message": "Abbrechen",
"description": ""
},
"customPrompts_btnOK": {
"message": "OK",
"description": ""
},
"customPrompts_btnDelete": {
"message": "Löschen",
"description": ""
},
"customPrompts_btnDelete_confirmText": {
"message": "Sind Sie sicher, dass Sie dieses Element löschen möchten?",
"description": ""
},
"customPrompts_unsaved_changes": {
"message": "Es gibt ungespeicherte Änderungen!",
"description": ""
},
"customPrompts_btnSaveAll": {
"message": "Alle speichern",
"description": ""
},
"customPrompts_save_button": {
"message": "Speichern",
"description": ""
},
"customPrompts_btnNew": {
"message": "Neu hinzufügen",
"description": ""
},
"customPrompts_btnAddNewCommit": {
"message": "Eingabeaufforderung hinzufügen",
"description": ""
},
"customPrompts_add_to_menu": {
"message": "Zum Menü hinzufügen",
"description": ""
},
"customPrompts_add_to_menu_always": {
"message": "Immer",
"description": ""
},
"customPrompts_add_to_menu_reading": {
"message": "E-Mail lesen",
"description": ""
},
"customPrompts_add_to_menu_composing": {
"message": "E-Mail verfassen",
"description": ""
},
"customPrompts_close_button": {
"message": "Schließen",
"description": ""
},
"customPrompts_do_reply": {
"message": "Antworten",
"description": ""
},
"customPrompts_substitute_text": {
"message": "Text ersetzen",
"description": ""
},
"chatgpt_win_working": {
"message": "Arbeit in Arbeit...",
"description": ""
},
"chatgpt_win_job_completed": {
"message": "Abgeschlossen!",
"description": ""
},
"chatgpt_win_get_answer": {
"message": "Letzte Antwort verwenden",
"description": ""
},
"chatgpt_win_close": {
"message": "Schließen",
"description": ""
},
"chatgpt_textarea_not_found_error": {
"message": "Es gibt einen Fehler beim Senden der Eingabeaufforderung an ChatGPT. Bitte versuchen Sie es erneut. Wenn das Problem weiterhin besteht, überprüfen Sie bitte den <a href=\"https://micz.it/thunderbird-addon-thunderai/status/\">Dienststatus</a>.",
"description": ""
},
"chatgpt_sendbutton_not_found_error": {
"message": "Klicken Sie auf die Schaltfläche „Senden“, um die Eingabeaufforderung zu übermitteln.",
"description": ""
},
"chatgpt_user_not_logged_in": {
"message": "Sie sind nicht bei ChatGPT angemeldet. Bitte melden Sie sich mit Ihren Anmeldeinformationen an, schließen Sie das ChatGPT-Fenster und wiederholen Sie dann die Aktion, die Sie versucht haben. Danach bleiben Sie angemeldet.",
"description": ""
},
"chatgpt_win_model_warning": {
"message": "Sie haben die Option zur Verwendung von ChatGPT-4 eingestellt, aber es scheint, dass es nicht korrekt geladen wird. Haben Sie das richtige Modell oben ausgewählt?",
"description": ""
},
"chatgpt_win_custom_text": {
"message": "Fügen Sie hier den zusätzlichen Text für die Eingabeaufforderung ein.",
"description": ""
},
"chatgpt_win_send": {
"message": "Senden",
"description": ""
},
"chatgpt_use_gpt35": {
"message": "Verwenden Sie GPT3.5",
"description": ""
},
"chatgpt_force_completion": {
"message": "Abschluss erzwingen",
"description": ""
},
"chatgpt_force_completion_title": {
"message": "Klicken Sie hier, um die Schaltfläche „Letzte Antwort verwenden“ anzuzeigen, wenn ChatGPT seine Arbeit abgeschlossen hat, die Schaltfläche jedoch nicht erschienen ist.",
"description": ""
},
"msg_prompt_too_long": {
"message": "Der eingegebene Text ist zu lang. Sie müssen ihn verkürzen, um ChatGPT zu verwenden.",
"description": ""
},
"prefs_OptionText_release_notes": {
"message": "Versionshinweise",
"description": ""
},
"prefs_status_page": {
"message": "Dienststatus",
"description": ""
},
"prefs_OptionText_chatgpt_win_text": {
"message": "ChatGPT-Fensterabmessungen",
"description": ""
},
"prefs_OptionText_chatgpt_win_height": {
"message": "Höhe",
"description": ""
},
"prefs_OptionText_chatgpt_win_width": {
"message": "Breite",
"description": ""
},
"prefs_OptionText_default_sign_name": {
"message": "Standard-Signaturname",
"description": ""
},
"prefs_OptionText_default_chatgpt_lang": {
"message": "Standardsprache für ChatGPT-Antworten",
"description": ""
},
"prefs_OptionText_reply_all": {
"message": "Allen antworten",
"description": ""
},
"prefs_OptionText_reply_sender": {
"message": "Absender antworten",
"description": ""
},
"prefs_OptionText_reply_type": {
"message": "Antworttyp",
"description": ""
},
"prefs_OptionText_chatpgt_use_gpt4": {
"message": "Verwenden Sie ChatGPT-4",
"description": ""
},
"prefs_OptionText_chatpgt_use_gpt4_info": {
"message": "Nachdem Sie diese Option geändert haben, müssen Sie beim ersten Gebrauch das richtige Modell auswählen.",
"description": ""
},
"prefs_OptionText_btnManagePrompts": {
"message": "Verwalten Sie Ihre Eingabeaufforderungen",
"description": ""
},
"prefsInfoTitle": {
"message": "Wichtige Informationen",
"description": ""
},
"prefsInfoDesc_1": {
"message": "Es ist nicht mehr möglich, den Verlauf der ChatGPT-Chats zu deaktivieren. Daher gibt es keine Möglichkeit, zu verhindern, dass Anfragen, die über dieses Addon gestellt werden, in Ihrem ChatGPT-Chatverlauf erscheinen.",
"description": ""
},
"prefsInfoDesc_2": {
"message": "Wenn eine weiße Seite erscheint, wenn das ChatGPT-Fenster geöffnet wird, bedeutet dies, dass es ein Problem beim Laden der ChatGPT-Seite gibt, das nicht mit der Verwendung dieses Add-Ons zusammenhängt.",
"description": ""
},
"prefsInfoDesc_3": {
"message": " ",
"description": ""
},
"prefsDonation_1": {
"message": "Gefällt Ihnen dieses Addon?",
"description": ""
},
"prefsDonation_2": {
"message": "Überlegen Sie, eine Spende zu machen!",
"description": ""
},
"backToOptionsText": {
"message": "Optionen",
"description": ""
}
"extensionDescription": {
"message": "Verwenden Sie ChatGPT, um Ihre E-Mails zu verbessern!",
"description": "Beschreibung der Erweiterung."
},
"menu_title": {
"message": "KI",
"description": ""
},
"prompt_lang": {
"message": "Antwort in ",
"description": ""
},
"prompt_reply": {
"message": "Darauf antworten",
"description": ""
},
"prompt_rewrite_polite": {
"message": "Höflich umschreiben",
"description": ""
},
"prompt_rewrite_formal": {
"message": "Formal umschreiben",
"description": ""
},
"prompt_classify": {
"message": "Klassifizieren",
"description": ""
},
"prompt_summarize_this": {
"message": "Zusammenfassen",
"description": ""
},
"prompt_translate_this": {
"message": "Übersetzen",
"description": ""
},
"prompt_this": {
"message": "Auffordern",
"description": ""
},
"prompt_selection_needed": {
"message": "Um fortzufahren, müssen Sie einen Text auswählen!",
"description": ""
},
"customPrompts_managePrompts": {
"message": "Eingabeaufforderungen verwalten",
"description": ""
},
"customPrompts_managePrompts_help": {
"message": "Informationen",
"description": ""
},
"customPrompts_managePrompts_info_default": {
"message": "Die Standard-Eingabeaufforderungen sind nicht bearbeitbar. Sie können sie deaktivieren, dann den Text der Eingabeaufforderung kopieren und in eine neue einfügen, um eine modifizierte Version zu erstellen.",
"description": ""
},
"customPrompts_start_saving": {
"message": "Eingabeaufforderungen werden gespeichert...",
"description": ""
},
"customPrompts_reindexing_list": {
"message": "Liste wird neu indiziert...",
"description": ""
},
"customPrompts_filtering_prompts": {
"message": "Eingabeaufforderungen werden gefiltert...",
"description": ""
},
"customPrompts_saving_default_prompts": {
"message": "Standard-Eingabeaufforderungen werden gespeichert...",
"description": ""
},
"customPrompts_saving_custom_prompts": {
"message": "Benutzerdefinierte Eingabeaufforderungen werden gespeichert...",
"description": ""
},
"customPrompts_reloading_menus": {
"message": "Menüs werden neu geladen...",
"description": ""
},
"customPrompts_saved": {
"message": "Eingabeaufforderungen gespeichert!",
"description": ""
},
"customPrompts_form_label_ID": {
"message": "ID",
"description": ""
},
"customPrompts_form_label_ID_rules": {
"message": "Muss eindeutig, kleingeschrieben und ohne Leerzeichen sein",
"description": ""
},
"customPrompts_form_label_Name": {
"message": "Name",
"description": ""
},
"customPrompts_form_label_Text": {
"message": "Eingabeaufforderungstext",
"description": ""
},
"customPrompts_form_label_Action": {
"message": "Aktion",
"description": ""
},
"customPrompts_form_label_need_selected": {
"message": "Textauswahl erforderlich",
"description": ""
},
"customPrompts_form_label_need_signature": {
"message": "Immer die Signatur hinzufügen",
"description": ""
},
"customPrompts_form_label_need_custom_text": {
"message": "Nach zusätzlichem Text fragen",
"description": ""
},
"customPrompts_form_label_enabled": {
"message": "Aktiviert",
"description": ""
},
"customPrompts_form_required_fields": {
"message": "Erforderliche Felder",
"description": ""
},
"customPrompts_btnEdit": {
"message": "Bearbeiten",
"description": ""
},
"customPrompts_btnCancel": {
"message": "Abbrechen",
"description": ""
},
"customPrompts_btnOK": {
"message": "OK",
"description": ""
},
"customPrompts_btnDelete": {
"message": "Löschen",
"description": ""
},
"customPrompts_btnDelete_confirmText": {
"message": "Sind Sie sicher, dass Sie dieses Element löschen möchten?",
"description": ""
},
"customPrompts_unsaved_changes": {
"message": "Es gibt ungespeicherte Änderungen!",
"description": ""
},
"customPrompts_btnSaveAll": {
"message": "Alle speichern",
"description": ""
},
"customPrompts_save_button": {
"message": "Speichern",
"description": ""
},
"customPrompts_btnNew": {
"message": "Neu hinzufügen",
"description": ""
},
"customPrompts_btnAddNewCommit": {
"message": "Eingabeaufforderung hinzufügen",
"description": ""
},
"customPrompts_add_to_menu": {
"message": "Zum Menü hinzufügen",
"description": ""
},
"customPrompts_add_to_menu_always": {
"message": "Immer",
"description": ""
},
"customPrompts_add_to_menu_reading": {
"message": "E-Mail lesen",
"description": ""
},
"customPrompts_add_to_menu_composing": {
"message": "E-Mail verfassen",
"description": ""
},
"customPrompts_close_button": {
"message": "Schließen",
"description": ""
},
"customPrompts_do_reply": {
"message": "Antworten",
"description": ""
},
"customPrompts_substitute_text": {
"message": "Text ersetzen",
"description": ""
},
"chatgpt_win_working": {
"message": "Arbeit in Arbeit...",
"description": ""
},
"chatgpt_win_job_completed": {
"message": "Abgeschlossen!",
"description": ""
},
"chatgpt_win_get_answer": {
"message": "Letzte Antwort verwenden",
"description": ""
},
"chatgpt_win_close": {
"message": "Schließen",
"description": ""
},
"chatgpt_textarea_not_found_error": {
"message": "Es gibt einen Fehler beim Senden der Eingabeaufforderung an ChatGPT. Bitte versuchen Sie es erneut. Wenn das Problem weiterhin besteht, überprüfen Sie bitte den <a href=\"https://micz.it/thunderbird-addon-thunderai/status/\">Dienststatus</a>.",
"description": ""
},
"chatgpt_sendbutton_not_found_error": {
"message": "Klicken Sie auf die Schaltfläche „Senden“, um die Eingabeaufforderung zu übermitteln.",
"description": ""
},
"chatgpt_user_not_logged_in": {
"message": "Sie sind nicht bei ChatGPT angemeldet. Bitte melden Sie sich mit Ihren Anmeldeinformationen an, schließen Sie das ChatGPT-Fenster und wiederholen Sie dann die Aktion, die Sie versucht haben. Danach bleiben Sie angemeldet.",
"description": ""
},
"chatgpt_win_model_warning": {
"message": "Sie haben die Option zur Verwendung von ChatGPT-4 eingestellt, aber es scheint, dass es nicht korrekt geladen wird. Haben Sie oben das Modell 4 oder 4o gewählt?",
"description": ""
},
"chatgpt_win_custom_text": {
"message": "Fügen Sie hier den zusätzlichen Text für die Eingabeaufforderung ein.",
"description": ""
},
"chatgpt_win_send": {
"message": "Senden",
"description": ""
},
"chatgpt_use_gpt35": {
"message": "Verwenden Sie GPT3.5",
"description": ""
},
"chatgpt_force_completion": {
"message": "Abschluss erzwingen",
"description": ""
},
"chatgpt_force_completion_title": {
"message": "Klicken Sie hier, um die Schaltfläche „Letzte Antwort verwenden“ anzuzeigen, wenn ChatGPT seine Arbeit abgeschlossen hat, die Schaltfläche jedoch nicht erschienen ist.",
"description": ""
},
"msg_prompt_too_long": {
"message": "Der eingegebene Text ist zu lang. Sie müssen ihn verkürzen, um ChatGPT zu verwenden.",
"description": ""
},
"prefs_OptionText_release_notes": {
"message": "Versionshinweise",
"description": ""
},
"prefs_status_page": {
"message": "Dienststatus",
"description": ""
},
"prefs_OptionText_chatgpt_win_text": {
"message": "ChatGPT-Fensterabmessungen",
"description": ""
},
"prefs_OptionText_chatgpt_win_height": {
"message": "Höhe",
"description": ""
},
"prefs_OptionText_chatgpt_win_width": {
"message": "Breite",
"description": ""
},
"prefs_OptionText_default_sign_name": {
"message": "Standard-Signaturname",
"description": ""
},
"prefs_OptionText_default_chatgpt_lang": {
"message": "Standardsprache für ChatGPT-Antworten",
"description": ""
},
"prefs_OptionText_reply_all": {
"message": "Allen antworten",
"description": ""
},
"prefs_OptionText_reply_sender": {
"message": "Absender antworten",
"description": ""
},
"prefs_OptionText_reply_type": {
"message": "Antworttyp",
"description": ""
},
"prefs_OptionText_chatpgt_keep_formatting": {
"message": "Behalte die Formatierung bei",
"description": ""
},
"prefs_OptionText_chatpgt_keep_formatting_info": {
"message": "Behalte die Formatierung und die Zahlen oder Aufzählungspunkte aus der ChatGPT-Antwort bei.",
"description": ""
},
"prefs_OptionText_chatpgt_use_gpt4": {
"message": "Verwenden Sie ChatGPT-4",
"description": ""
},
"prefs_OptionText_chatpgt_use_gpt4_info": {
"message": "Nachdem Sie diese Option geändert haben, müssen Sie beim ersten Gebrauch das richtige Modell auswählen.",
"description": ""
},
"prefs_OptionText_btnManagePrompts": {
"message": "Verwalten Sie Ihre Eingabeaufforderungen",
"description": ""
},
"prefsInfoTitle": {
"message": "Wichtige Informationen",
"description": ""
},
"prefsInfoDesc_1": {
"message": "Es ist nicht mehr möglich, den Verlauf der ChatGPT-Chats zu deaktivieren. Daher gibt es keine Möglichkeit, zu verhindern, dass Anfragen, die über dieses Addon gestellt werden, in Ihrem ChatGPT-Chatverlauf erscheinen.",
"description": ""
},
"prefsInfoDesc_2": {
"message": "Wenn eine weiße Seite erscheint, wenn das ChatGPT-Fenster geöffnet wird, bedeutet dies, dass es ein Problem beim Laden der ChatGPT-Seite gibt, das nicht mit der Verwendung dieses Add-Ons zusammenhängt.",
"description": ""
},
"prefsInfoDesc_3": {
"message": " ",
"description": ""
},
"prefsDonation_1": {
"message": "Gefällt Ihnen dieses Addon?",
"description": ""
},
"prefsDonation_2": {
"message": "Überlegen Sie, eine Spende zu machen!",
"description": ""
},
"backToOptionsText": {
"message": "Optionen",
"description": ""
},
"TranslateText": {
"message": "Möchtest du helfen, dieses Add-on zu übersetzen?",
"description": ""
},
"TranslateLink": {
"message": "Finde es heraus!",
"description": ""
}
}

View file

@ -3,404 +3,344 @@
"message": "Use ChatGPT to enhance you emails!",
"description": "Description of the extension."
},
"menu_title": {
"message": "AI",
"description": ""
},
"prompt_lang": {
"message": "Reply in ",
"description": ""
},
"prompt_reply": {
"message": "Reply to this",
"description": ""
},
"prompt_rewrite_polite": {
"message": "Rewrite polite",
"description": ""
},
"prompt_rewrite_formal": {
"message": "Rewrite formal",
"description": ""
},
"prompt_classify": {
"message": "Classify",
"description": ""
},
"prompt_summarize_this": {
"message": "Summarize this",
"description": ""
},
"prompt_translate_this": {
"message": "Translate this",
"description": ""
},
"prompt_this": {
"message": "Prompt this",
"description": ""
},
"prompt_selection_needed": {
"message": "To proceed, you need to select some text!",
"description": ""
},
"customPrompts_managePrompts": {
"message": "Manage Prompts",
"description": ""
},
"customPrompts_managePrompts_help": {
"message": "More info",
"description": ""
},
"customPrompts_managePrompts_info_default": {
"message": "The default prompts are not editable. You can disable them, then copy the prompt text and paste it into a new one to create a modified version.",
"description": ""
},
"customPrompts_start_saving": {
"message": "Saving prompts...",
"description": ""
},
"customPrompts_reindexing_list": {
"message": "Reindexing list...",
"description": ""
},
"customPrompts_filtering_prompts": {
"message": "Filtering prompts...",
"description": ""
},
"customPrompts_saving_default_prompts": {
"message": "Saving default prompts...",
"description": ""
},
"customPrompts_saving_custom_prompts": {
"message": "Saving custom prompts...",
"description": ""
},
"customPrompts_reloading_menus": {
"message": "Reloading menus...",
"description": ""
},
"customPrompts_saved": {
"message": "Prompts saved!",
"description": ""
},
"customPrompts_form_label_ID": {
"message": "ID",
"description": ""
},
"customPrompts_form_label_ID_rules": {
"message": "Must be unique, lowercase and without spaces",
"description": ""
},
"customPrompts_form_label_Name": {
"message": "Name",
"description": ""
},
"customPrompts_form_label_Text": {
"message": "Prompt Text",
"description": ""
},
"customPrompts_form_label_Action": {
"message": "Action",
"description": ""
},
"customPrompts_form_label_need_selected": {
"message": "Text selection needed",
"description": ""
},
"customPrompts_form_label_need_signature": {
"message": "Always add the signature",
"description": ""
},
"customPrompts_form_label_need_custom_text": {
"message": "Ask for additional text",
"description": ""
},
"customPrompts_form_label_enabled": {
"message": "Enabled",
"description": ""
},
"customPrompts_form_required_fields": {
"message": "Required fields",
"description": ""
},
"customPrompts_btnEdit": {
"message": "Edit",
"description": ""
},
"customPrompts_btnCancel": {
"message": "Cancel",
"description": ""
},
"customPrompts_btnOK": {
"message": "OK",
"description": ""
},
"customPrompts_btnDelete": {
"message": "Delete",
"description": ""
},
"customPrompts_btnDelete_confirmText": {
"message": "Are you sure you want to delete this item?",
"description": ""
},
"customPrompts_unsaved_changes": {
"message": "There are unsaved changes!",
"description": ""
},
"customPrompts_btnSaveAll": {
"message": "Save All",
"description": ""
},
"customPrompts_save_button": {
"message": "Save",
"description": ""
},
"customPrompts_btnNew": {
"message": "Add New",
"description": ""
},
"customPrompts_btnAddNewCommit": {
"message": "Add the Prompt",
"description": ""
},
"customPrompts_add_to_menu": {
"message": "Add to menu",
"description": ""
},
"customPrompts_add_to_menu_always": {
"message": "Always",
"description": ""
},
"customPrompts_add_to_menu_reading": {
"message": "Reading an email",
"description": ""
},
"customPrompts_add_to_menu_composing": {
"message": "Composing an email",
"description": ""
},
"customPrompts_close_button": {
"message": "Close button",
"description": ""
},
"customPrompts_do_reply": {
"message": "Do reply",
"description": ""
},
"customPrompts_substitute_text": {
"message": "Substitute text",
"description": ""
},
"chatgpt_win_working": {
"message": "Work in progress...",
"description": ""
},
"chatgpt_win_job_completed": {
"message": "Completed!",
"description": ""
},
"chatgpt_win_get_answer": {
"message": "Use last answer",
"description": ""
},
"chatgpt_win_close": {
"message": "Close",
"description": ""
},
"chatgpt_textarea_not_found_error": {
"message": "There is an error sending the prompt to ChatGPT, please retry. If the problem persists, please <a href=\"https://micz.it/thunderbird-addon-thunderai/status/\">check the service status</a>.",
"description": ""
},
"chatgpt_sendbutton_not_found_error": {
"message": "Click the send button to submit the prompt.",
"description": ""
},
"chatgpt_user_not_logged_in": {
"message": "You are not logged in to ChatGPT. Please log in with your credentials, close the ChatGPT window, and then repeat the action you attempted. You will remain logged in afterwards.",
"description": ""
},
"chatgpt_win_model_warning": {
"message": "You have set the option to use ChatGPT-4, but it seems that it is not loading correctly. Have you chosen the right model at the top?",
"message": "You have set the option to use ChatGPT-4, but it seems that it is not loading correctly. Have you chosen the model 4 or 4o at the top?",
"description": ""
},
"chatgpt_win_custom_text": {
"message": "Insert here the additional text for the prompt.",
"description": ""
},
"chatgpt_win_send": {
"message": "Send",
"description": ""
},
"chatgpt_use_gpt35": {
"message": "Use GPT3.5",
"description": ""
},
"chatgpt_force_completion": {
"message": "force completion",
"description": ""
},
"chatgpt_force_completion_title": {
"message": "Click here to display the 'Use last answer' button if ChatGPT has finished its work but the button has not appeared.",
"description": ""
},
"msg_prompt_too_long": {
"message": "The text you provided is too long. You need to reduce it to use ChatGPT.",
"description": ""
},
"prefs_OptionText_release_notes": {
"message": "Release Notes",
"description": ""
},
"prefs_status_page": {
"message": "service status",
"description": ""
},
"prefs_OptionText_chatgpt_win_text": {
"message": "ChatGPT window dimensions",
"description": ""
},
"prefs_OptionText_chatgpt_win_height": {
"message": "Height",
"description": ""
},
"prefs_OptionText_chatgpt_win_width": {
"message": "Width",
"description": ""
},
"prefs_OptionText_default_sign_name": {
"message": "Default signature name",
"description": ""
},
"prefs_OptionText_default_chatgpt_lang": {
"message": "Default language for ChatGPT responses",
"description": ""
},
"prefs_OptionText_reply_all": {
"message": "Reply to All",
"description": ""
},
"prefs_OptionText_reply_sender": {
"message": "Reply to Sender",
"description": ""
},
"prefs_OptionText_reply_type": {
"message": "Reply type",
"description": ""
},
"prefs_OptionText_chatpgt_keep_formatting": {
"message": "Keep formatting",
"description": ""
},
"prefs_OptionText_chatpgt_keep_formatting_info": {
"message": "Keep the formatting and numeral or bullet points from the ChatGPT response.",
"description": ""
},
"prefs_OptionText_chatpgt_use_gpt4": {
"message": "Use ChatGPT-4",
"description": ""
},
"prefs_OptionText_chatpgt_use_gpt4_info": {
"message": "After changing this option, you have to choose the right model the first time you use it.",
"description": ""
},
"prefs_OptionText_btnManagePrompts": {
"message": "Manage your prompts",
"description": ""
},
"prefsInfoTitle": {
"message": "Important Information",
"description": ""
},
"prefsInfoDesc_1": {
"message": "It is no longer possible to disable the history of ChatGPT chats. Therefore, there is no way to prevent requests made through this addon from appearing in your ChatGPT chat history.",
"description": ""
},
"prefsInfoDesc_2": {
"message": "If a white page appears when opening the ChatGPT window, it means there is a problem loading the ChatGPT page, not related to the use of this add-on.",
"description": ""
},
"prefsInfoDesc_3": {
"message": " ",
"description": ""
},
"prefsDonation_1": {
"message": "Do you like this addon?",
"description": ""
},
"prefsDonation_2": {
"message": "Consider to make a donation!",
"description": ""
},
"backToOptionsText": {
"message": "Options",
"description": ""
},
"TranslateText": {
"message": "Do you want to help translate this addon?",
"description": ""
},
"TranslateLink": {
"message": "Find out how!",
"description": ""
}
}
}

View file

@ -1,407 +1,346 @@
{
"extensionDescription": {
"message": "Utilisez ChatGPT pour améliorer vos emails!",
"description": "Description de l'extension."
},
"menu_title": {
"message": "IA",
"description": ""
},
"prompt_lang": {
"message": "Répondre en ",
"description": ""
},
"prompt_reply": {
"message": "Répondre à ceci",
"description": ""
},
"prompt_rewrite_polite": {
"message": "Réécrire de manière polie",
"description": ""
},
"prompt_rewrite_formal": {
"message": "Réécrire de manière formelle",
"description": ""
},
"prompt_classify": {
"message": "Classer",
"description": ""
},
"prompt_summarize_this": {
"message": "Résumer ceci",
"description": ""
},
"prompt_translate_this": {
"message": "Traduire ceci",
"description": ""
},
"prompt_this": {
"message": "Proposer ceci",
"description": ""
},
"prompt_selection_needed": {
"message": "Pour continuer, vous devez sélectionner du texte!",
"description": ""
},
"customPrompts_managePrompts": {
"message": "Gérer les prompts",
"description": ""
},
"customPrompts_managePrompts_help": {
"message": "Informations",
"description": ""
},
"customPrompts_start_saving": {
"message": "Enregistrement des prompts...",
"description": ""
},
"customPrompts_reindexing_list": {
"message": "Réindexation de la liste...",
"description": ""
},
"customPrompts_filtering_prompts": {
"message": "Filtrage des prompts...",
"description": ""
},
"customPrompts_saving_default_prompts": {
"message": "Enregistrement des prompts par défaut...",
"description": ""
},
"customPrompts_saving_custom_prompts": {
"message": "Enregistrement des prompts personnalisées...",
"description": ""
},
"customPrompts_reloading_menus": {
"message": "Rechargement des menus...",
"description": ""
},
"customPrompts_saved": {
"message": "prompts enregistrées!",
"description": ""
},
"customPrompts_form_label_ID": {
"message": "ID",
"description": ""
},
"customPrompts_form_label_ID_rules": {
"message": "Doit être unique, en minuscules et sans espaces",
"description": ""
},
"customPrompts_form_label_Name": {
"message": "Nom",
"description": ""
},
"customPrompts_form_label_Text": {
"message": "Texte de la proposition",
"description": ""
},
"customPrompts_form_label_Action": {
"message": "Action",
"description": ""
},
"customPrompts_form_label_need_selected": {
"message": "Sélection de texte nécessaire",
"description": ""
},
"customPrompts_form_label_need_signature": {
"message": "Toujours ajouter la signature",
"description": ""
},
"customPrompts_form_label_need_custom_text": {
"message": "Demander du texte supplémentaire",
"description": ""
},
"customPrompts_form_label_enabled": {
"message": "Activé",
"description": ""
},
"customPrompts_form_required_fields": {
"message": "Champs obligatoires",
"description": ""
},
"customPrompts_btnEdit": {
"message": "Modifier",
"description": ""
},
"customPrompts_btnCancel": {
"message": "Annuler",
"description": ""
},
"customPrompts_btnOK": {
"message": "OK",
"description": ""
},
"customPrompts_btnDelete": {
"message": "Supprimer",
"description": ""
},
"customPrompts_btnDelete_confirmText": {
"message": "Êtes-vous sûr de vouloir supprimer cet élément?",
"description": ""
},
"customPrompts_unsaved_changes": {
"message": "Il y a des modifications non enregistrées!",
"description": ""
},
"customPrompts_btnSaveAll": {
"message": "Tout enregistrer",
"description": ""
},
"customPrompts_save_button": {
"message": "Enregistrer",
"description": ""
},
"customPrompts_btnNew": {
"message": "Ajouter nouveau",
"description": ""
},
"customPrompts_btnAddNewCommit": {
"message": "Ajouter la proposition",
"description": ""
},
"customPrompts_add_to_menu": {
"message": "Ajouter au menu",
"description": ""
},
"customPrompts_add_to_menu_always": {
"message": "Toujours",
"description": ""
},
"customPrompts_add_to_menu_reading": {
"message": "Lors de la lecture d'un email",
"description": ""
},
"customPrompts_add_to_menu_composing": {
"message": "Lors de la rédaction d'un email",
"description": ""
},
"customPrompts_close_button": {
"message": "Bouton de fermeture",
"description": ""
},
"customPrompts_do_reply": {
"message": "Faire une réponse",
"description": ""
},
"customPrompts_substitute_text": {
"message": "Remplacer le texte",
"description": ""
},
"chatgpt_win_working": {
"message": "Travail en cours...",
"description": ""
},
"chatgpt_win_job_completed": {
"message": "Terminé!",
"description": ""
},
"chatgpt_win_get_answer": {
"message": "Utiliser la dernière réponse",
"description": ""
},
"chatgpt_win_close": {
"message": "Fermer",
"description": ""
},
"chatgpt_textarea_not_found_error": {
"message": "Il y a une erreur lors de l'envoi de la proposition à ChatGPT, veuillez réessayer. Si le problème persiste, veuillez <a href=\"https://micz.it/thunderbird-addon-thunderai/status/\">vérifier le statut du service</a>.",
"description": ""
},
"chatgpt_sendbutton_not_found_error": {
"message": "Cliquez sur le bouton d'envoi pour soumettre la proposition.",
"description": ""
},
"chatgpt_user_not_logged_in": {
"message": "Vous n'êtes pas connecté à ChatGPT. Veuillez vous connecter avec vos identifiants, fermer la fenêtre ChatGPT, puis répéter l'action que vous avez tentée. Vous resterez connecté par la suite.",
"description": ""
},
"chatgpt_win_model_warning": {
"message": "Vous avez choisi l'option d'utiliser ChatGPT-4, mais il semble qu'il ne se charge pas correctement. Avez-vous choisi le bon modèle en haut?",
"description": ""
},
"chatgpt_win_custom_text": {
"message": "Insérez ici le texte supplémentaire pour la proposition.",
"description": ""
},
"chatgpt_win_send": {
"message": "Envoyer",
"description": ""
},
"chatgpt_use_gpt35": {
"message": "Utiliser GPT3.5",
"description": ""
},
"chatgpt_force_completion": {
"message": "forcer l'achèvement",
"description": ""
},
"chatgpt_force_completion_title": {
"message": "Cliquez ici pour afficher le bouton 'Utiliser la dernière réponse' si ChatGPT a terminé son travail mais que le bouton n'est pas apparu.",
"description": ""
},
"msg_prompt_too_long": {
"message": "Le texte que vous avez fourni est trop long. Vous devez le réduire pour utiliser ChatGPT.",
"description": ""
},
"prefs_OptionText_release_notes": {
"message": "Notes de version",
"description": ""
},
"prefs_status_page": {
"message": "statut du service",
"description": ""
},
"prefs_OptionText_chatgpt_win_text": {
"message": "Dimensions de la fenêtre ChatGPT",
"description": ""
},
"prefs_OptionText_chatgpt_win_height": {
"message": "Hauteur",
"description": ""
},
"prefs_OptionText_chatgpt_win_width": {
"message": "Largeur",
"description": ""
},
"prefs_OptionText_default_sign_name": {
"message": "Nom de la signature par défaut",
"description": ""
},
"prefs_OptionText_default_chatgpt_lang": {
"message": "Langue par défaut pour les réponses de ChatGPT",
"description": ""
},
"prefs_OptionText_reply_all": {
"message": "Répondre à tous",
"description": ""
},
"prefs_OptionText_reply_sender": {
"message": "Répondre à l'expéditeur",
"description": ""
},
"prefs_OptionText_reply_type": {
"message": "Type de réponse",
"description": ""
},
"prefs_OptionText_chatpgt_use_gpt4": {
"message": "Utiliser ChatGPT-4",
"description": ""
},
"prefs_OptionText_chatpgt_use_gpt4_info": {
"message": "Après avoir changé cette option, vous devez choisir le bon modèle la première fois que vous l'utilisez.",
"description": ""
},
"prefs_OptionText_btnManagePrompts": {
"message": "Gérer vos prompts",
"description": ""
},
"prefsInfoTitle": {
"message": "Informations importantes",
"description": ""
},
"prefsInfoDesc_1": {
"message": "Il n'est plus possible de désactiver l'historique des chats ChatGPT. Par conséquent, il n'y a aucun moyen d'empêcher les demandes effectuées via cet addon d'apparaître dans l'historique de vos chats ChatGPT.",
"description": ""
},
"prefsInfoDesc_2": {
"message": "Si une page blanche apparaît lors de l'ouverture de la fenêtre ChatGPT, cela signifie qu'il y a un problème de chargement de la page ChatGPT, non lié à l'utilisation de cet addon.",
"description": ""
},
"prefsInfoDesc_3": {
"message": " ",
"description": ""
},
"prefsDonation_1": {
"message": "Aimez-vous cet addon?",
"description": ""
},
"prefsDonation_2": {
"message": "Envisagez de faire un don!",
"description": ""
},
"backToOptionsText": {
"message": "Options",
"description": ""
}
"extensionDescription": {
"message": "Utilisez ChatGPT pour améliorer vos emails !",
"description": "Description de l'extension."
},
"menu_title": {
"message": "IA",
"description": ""
},
"prompt_lang": {
"message": "Répondre en ",
"description": ""
},
"prompt_reply": {
"message": "Répondre à ceci",
"description": ""
},
"prompt_rewrite_polite": {
"message": "Réécrire de manière polie",
"description": ""
},
"prompt_rewrite_formal": {
"message": "Réécrire de manière formelle",
"description": ""
},
"prompt_classify": {
"message": "Classer",
"description": ""
},
"prompt_summarize_this": {
"message": "Résumer ceci",
"description": ""
},
"prompt_translate_this": {
"message": "Traduire ceci",
"description": ""
},
"prompt_this": {
"message": "Proposer ceci",
"description": ""
},
"prompt_selection_needed": {
"message": "Pour continuer, vous devez sélectionner du texte !",
"description": ""
},
"customPrompts_managePrompts": {
"message": "Gérer les prompts",
"description": ""
},
"customPrompts_managePrompts_help": {
"message": "Informations",
"description": ""
},
"customPrompts_managePrompts_info_default": {
"message": "Les invites par défaut ne sont pas modifiables. Vous pouvez les désactiver, puis copier le texte de l'invite et le coller dans une nouvelle pour créer une version modifiée.",
"description": ""
},
"customPrompts_start_saving": {
"message": "Enregistrement des prompts...",
"description": ""
},
"customPrompts_reindexing_list": {
"message": "Réindexation de la liste...",
"description": ""
},
"customPrompts_filtering_prompts": {
"message": "Filtrage des prompts...",
"description": ""
},
"customPrompts_saving_default_prompts": {
"message": "Enregistrement des prompts par défaut...",
"description": ""
},
"customPrompts_saving_custom_prompts": {
"message": "Enregistrement des prompts personnalisées...",
"description": ""
},
"customPrompts_reloading_menus": {
"message": "Rechargement des menus...",
"description": ""
},
"customPrompts_saved": {
"message": "prompts enregistrées !",
"description": ""
},
"customPrompts_form_label_ID": {
"message": "ID",
"description": ""
},
"customPrompts_form_label_ID_rules": {
"message": "Doit être unique, en minuscules et sans espaces",
"description": ""
},
"customPrompts_form_label_Name": {
"message": "Nom",
"description": ""
},
"customPrompts_form_label_Text": {
"message": "Texte de la proposition",
"description": ""
},
"customPrompts_form_label_Action": {
"message": "Action",
"description": ""
},
"customPrompts_form_label_need_selected": {
"message": "Sélection de texte nécessaire",
"description": ""
},
"customPrompts_form_label_need_signature": {
"message": "Toujours ajouter la signature",
"description": ""
},
"customPrompts_form_label_need_custom_text": {
"message": "Demander du texte supplémentaire",
"description": ""
},
"customPrompts_form_label_enabled": {
"message": "Activé",
"description": ""
},
"customPrompts_form_required_fields": {
"message": "Champs obligatoires",
"description": ""
},
"customPrompts_btnEdit": {
"message": "Modifier",
"description": ""
},
"customPrompts_btnCancel": {
"message": "Annuler",
"description": ""
},
"customPrompts_btnOK": {
"message": "OK",
"description": ""
},
"customPrompts_btnDelete": {
"message": "Supprimer",
"description": ""
},
"customPrompts_btnDelete_confirmText": {
"message": "Êtes-vous sûr de vouloir supprimer cet élément ?",
"description": ""
},
"customPrompts_unsaved_changes": {
"message": "Il y a des modifications non enregistrées !",
"description": ""
},
"customPrompts_btnSaveAll": {
"message": "Tout enregistrer",
"description": ""
},
"customPrompts_save_button": {
"message": "Enregistrer",
"description": ""
},
"customPrompts_btnNew": {
"message": "Ajouter nouveau",
"description": ""
},
"customPrompts_btnAddNewCommit": {
"message": "Ajouter la proposition",
"description": ""
},
"customPrompts_add_to_menu": {
"message": "Ajouter au menu",
"description": ""
},
"customPrompts_add_to_menu_always": {
"message": "Toujours",
"description": ""
},
"customPrompts_add_to_menu_reading": {
"message": "Lors de la lecture d'un email",
"description": ""
},
"customPrompts_add_to_menu_composing": {
"message": "Lors de la rédaction d'un email",
"description": ""
},
"customPrompts_close_button": {
"message": "Bouton de fermeture",
"description": ""
},
"customPrompts_do_reply": {
"message": "Faire une réponse",
"description": ""
},
"customPrompts_substitute_text": {
"message": "Remplacer le texte",
"description": ""
},
"chatgpt_win_working": {
"message": "Travail en cours...",
"description": ""
},
"chatgpt_win_job_completed": {
"message": "Terminé !",
"description": ""
},
"chatgpt_win_get_answer": {
"message": "Utiliser la dernière réponse",
"description": ""
},
"chatgpt_win_close": {
"message": "Fermer",
"description": ""
},
"chatgpt_textarea_not_found_error": {
"message": "Il y a une erreur lors de l'envoi de la proposition à ChatGPT, veuillez réessayer. Si le problème persiste, veuillez <a href=\"https://micz.it/thunderbird-addon-thunderai/status/\">vérifier le statut du service</a>.",
"description": ""
},
"chatgpt_sendbutton_not_found_error": {
"message": "Cliquez sur le bouton d'envoi pour soumettre la proposition.",
"description": ""
},
"chatgpt_user_not_logged_in": {
"message": "Vous n'êtes pas connecté à ChatGPT. Veuillez vous connecter avec vos identifiants, fermer la fenêtre ChatGPT, puis répéter l'action que vous avez tentée. Vous resterez connecté par la suite.",
"description": ""
},
"chatgpt_win_model_warning": {
"message": "Vous avez choisi l'option d'utiliser ChatGPT-4, mais il semble qu'il ne se charge pas correctement. Avez-vous choisi le modèle 4 ou 4o en haut ?",
"description": ""
},
"chatgpt_win_custom_text": {
"message": "Insérez ici le texte supplémentaire pour la proposition.",
"description": ""
},
"chatgpt_win_send": {
"message": "Envoyer",
"description": ""
},
"chatgpt_use_gpt35": {
"message": "Utiliser GPT3.5",
"description": ""
},
"chatgpt_force_completion": {
"message": "forcer l'achèvement",
"description": ""
},
"chatgpt_force_completion_title": {
"message": "Cliquez ici pour afficher le bouton 'Utiliser la dernière réponse' si ChatGPT a terminé son travail mais que le bouton n'est pas apparu.",
"description": ""
},
"msg_prompt_too_long": {
"message": "Le texte que vous avez fourni est trop long. Vous devez le réduire pour utiliser ChatGPT.",
"description": ""
},
"prefs_OptionText_release_notes": {
"message": "Notes de version",
"description": ""
},
"prefs_status_page": {
"message": "statut du service",
"description": ""
},
"prefs_OptionText_chatgpt_win_text": {
"message": "Dimensions de la fenêtre ChatGPT",
"description": ""
},
"prefs_OptionText_chatgpt_win_height": {
"message": "Hauteur",
"description": ""
},
"prefs_OptionText_chatgpt_win_width": {
"message": "Largeur",
"description": ""
},
"prefs_OptionText_default_sign_name": {
"message": "Nom de la signature par défaut",
"description": ""
},
"prefs_OptionText_default_chatgpt_lang": {
"message": "Langue par défaut pour les réponses de ChatGPT",
"description": ""
},
"prefs_OptionText_reply_all": {
"message": "Répondre à tous",
"description": ""
},
"prefs_OptionText_reply_sender": {
"message": "Répondre à l'expéditeur",
"description": ""
},
"prefs_OptionText_reply_type": {
"message": "Type de réponse",
"description": ""
},
"prefs_OptionText_chatpgt_keep_formatting": {
"message": "Conserver la mise en forme",
"description": ""
},
"prefs_OptionText_chatpgt_keep_formatting_info": {
"message": "Conservez la mise en forme et les numéros ou les puces de la réponse de ChatGPT.",
"description": ""
},
"prefs_OptionText_chatpgt_use_gpt4": {
"message": "Utiliser ChatGPT-4",
"description": ""
},
"prefs_OptionText_chatpgt_use_gpt4_info": {
"message": "Après avoir changé cette option, vous devez choisir le bon modèle la première fois que vous l'utilisez.",
"description": ""
},
"prefs_OptionText_btnManagePrompts": {
"message": "Gérer vos prompts",
"description": ""
},
"prefsInfoTitle": {
"message": "Informations importantes",
"description": ""
},
"prefsInfoDesc_1": {
"message": "Il n'est plus possible de désactiver l'historique des chats ChatGPT. Par conséquent, il n'y a aucun moyen d'empêcher les demandes effectuées via cet addon d'apparaître dans l'historique de vos chats ChatGPT.",
"description": ""
},
"prefsInfoDesc_2": {
"message": "Si une page blanche apparaît lors de l'ouverture de la fenêtre ChatGPT, cela signifie qu'il y a un problème de chargement de la page ChatGPT, non lié à l'utilisation de cet addon.",
"description": ""
},
"prefsInfoDesc_3": {
"message": " ",
"description": ""
},
"prefsDonation_1": {
"message": "Aimez-vous cet addon ?",
"description": ""
},
"prefsDonation_2": {
"message": "Envisagez de faire un don !",
"description": ""
},
"backToOptionsText": {
"message": "Options",
"description": ""
},
"TranslateText": {
"message": "Voulez-vous aider à traduire cet addon ?",
"description": ""
},
"TranslateLink": {
"message": "Découvrez comment !",
"description": ""
}
}

View file

@ -67,6 +67,10 @@
"message": "Salvataggio prompt di base...",
"description": ""
},
"customPrompts_managePrompts_info_default": {
"message": "I prompt predefiniti non sono modificabili. Puoi disattivarli, quindi copiare il testo del prompt e incollarlo in uno nuovo per crearne una versione modificata.",
"description": ""
},
"customPrompts_saving_custom_prompts": {
"message": "Salvataggio prompt personalizzati...",
"description": ""
@ -208,7 +212,7 @@
"description": ""
},
"chatgpt_win_model_warning": {
"message": "Hai impostato l'opzione per utilizzare ChatGPT-4, ma sembra che non si stia caricando. Hai selezionato correttamente il modello in alto?",
"message": "Hai impostato l'opzione per utilizzare ChatGPT-4, ma sembra che non si stia caricando. Hai selezionato il modello 4 o 4o in alto?",
"description": ""
},
"chatgpt_win_custom_text": {
@ -283,6 +287,14 @@
"message": "Modalità di risposta",
"description": ""
},
"prefs_OptionText_chatpgt_keep_formatting": {
"message": "Mantieni la formattazione",
"description": ""
},
"prefs_OptionText_chatpgt_keep_formatting_info": {
"message": "Mantieni la formattazione del testo e gli elenchi puntati e numerati della risposta di ChatGPT.",
"description": ""
},
"prefs_OptionText_chatpgt_use_gpt4": {
"message": "Usa il modello ChatGPT-4",
"description": ""
@ -322,5 +334,13 @@
"backToOptionsText": {
"message": "Opzioni",
"description": ""
},
"TranslateText": {
"message": "Vuoi aiutare a tradurre questo addon?",
"description": ""
},
"TranslateLink": {
"message": "Scopri come!",
"description": ""
}
}

View file

@ -8,7 +8,8 @@
<body>
<div>
<h1>__MSG_customPrompts_managePrompts__</h1>
<p><a href="https://micz.it/thunderbird-addon-thunderai/custom-prompts/">__MSG_customPrompts_managePrompts_help__</a></p>
<p>__MSG_customPrompts_managePrompts_info_default__
<br><a href="https://micz.it/thunderbird-addon-thunderai/custom-prompts/">__MSG_customPrompts_managePrompts_help__</a></p>
</div>
<div id="command_palette">
<button id="btnSaveAll" disabled>__MSG_customPrompts_btnSaveAll__</button>

View file

@ -72,17 +72,38 @@ async function chatgpt_getFromDOM(pos) {
// Removing the new buttons that let the user change model and insert a number (4 or 3.5 at the end of the text)
let parser = new DOMParser();
let doc = parser.parseFromString(responseDivs[responseDivs.length - 1].innerHTML, 'text/html');
if(!mztaKeepFormatting) { // Return only TEXT
// Select the div with class 'empty:hidden'
let divToRemove = doc.querySelector('div.empty\\\\:hidden');
if (divToRemove) {
divToRemove.remove();
let divToRemove = doc.querySelector('div.empty\\\\:hidden');
if (divToRemove) {
divToRemove.remove();
}
// Extract the new HTML string
responseDivs[responseDivs.length - 1].innerHTML = doc.body.innerHTML;
response = responseDivs[responseDivs.length - 1].textContent;
response = response.replace(/^ChatGPT(?:ChatGPT)?/, ''); // strip sender name
response = response.trim().replace(/^"|"$/g, ''); // strip quotation marks
response = "<body><p>" + response + "</p></body>";
//console.log(">>>>>>>>> response: " + JSON.stringify(response));
let parser_2 = new DOMParser();
let doc_response = parser_2.parseFromString(response, 'text/html');
//console.log(">>>>>>>>> doc_response: " + JSON.stringify(doc_response.body.innerHTML));
replaceNewlinesWithBr(doc_response.body)
response = doc_response.body.innerHTML;
// response = responseDivs[responseDivs.length - 1].innerHTML;
} else { // Return HTML
// Tags to exclude
//console.log(">>>>>>>>> doc.body.innerHTML original: " + doc.body.innerHTML);
const excludeTags = ['div', 'text', 'svg', 'path', 'button'];
const includeTags = ['p', 'ul'];
// removeTags(doc.body, excludeTags);
response = removeTagsAndReturnHTML(doc.body, excludeTags, includeTags)
//console.log(">>>>>>>>> doc.body.innerHTML final: " + doc.body.innerHTML);
// response = doc.body.innerHTML;
}
// Extract the new HTML string
responseDivs[responseDivs.length - 1].innerHTML = doc.body.innerHTML;
response = responseDivs[responseDivs.length - 1].textContent;
//console.log('chatgpt_getFromDOM: '+response);
//console.log('chatgpt_getFromDOM final response: '+response);
//console.log('chatgpt_getFromDOM: [HTML] ' + responseDivs[responseDivs.length - 1].innerHTML.replace(/<div[^>]*>/gi, '').replace(/<\\/div>/gi, '').replace(/<svg[^>]*>/gi, '').replace(/<\\/svg>/gi, '').replace(/<path[^>]*>/gi, '').replace(/<\\/path>/gi, '').replace(/<text[^>]*>/gi, '').replace(/<\\/text>/gi, '').replace(/<span[^>]*>/gi, '').replace(/<\\/span>/gi, '').replace(/<button[^>]*>/gi, '').replace(/<\\/button>/gi, ''));
} else { // get nth response
} else { // get nth response --- HERE ONLY TEXT FROM RESPONSE, NO HTML
const nthOfResponse = (
// Calculate base number
@ -107,9 +128,7 @@ async function chatgpt_getFromDOM(pos) {
);
response = responseDivs[nthOfResponse - 1].textContent;
}
response = response.replace(/^ChatGPT(?:ChatGPT)?/, ''); // strip sender name
response = response.trim().replace(/^"|"$/g, ''); // strip quotation marks
//console.log('chatgpt_getFromDOM: ' + response);
//console.log('>>>>>>>>>>>>>> chatgpt_getFromDOM: ' + JSON.stringify(response));
}
return response;
}
@ -337,6 +356,63 @@ async function doProceed(message, customText = ''){
operation_done();
}
function removeTagsAndReturnHTML(rootElement, removeTags, preserveTags) {
const fragment = document.createDocumentFragment();
function handleElement(element) {
let child = element.firstChild;
while (child) {
const nextSibling = child.nextSibling;
if (preserveTags.includes(child.nodeName.toLowerCase())) {
//console.log(">>>>>>>>>>>> preserve child: " + child.tagName.toLowerCase());
fragment.appendChild(child);
} else if (child.nodeType === Node.ELEMENT_NODE) {
//console.log(">>>>>>>>>>>> handleElement(child): " + child.tagName.toLowerCase());
handleElement(child);
}
child = nextSibling;
}
}
removeTags.forEach(tag => {
const elements = Array.from(rootElement.getElementsByTagName(tag));
elements.forEach(element => {
handleElement(element);
element.parentNode.insertBefore(fragment.cloneNode(true), element);
element.parentNode.removeChild(element);
//console.log(">>>>>>>>>>>> removeChild: " + element.tagName.toLowerCase());
});
});
replaceNewlinesWithBr(rootElement);
//console.log(">>>>>>>>>>>> rootElement.innerHTML: " + rootElement.innerHTML);
// Return the updated HTML as a string
return rootElement.innerHTML;
}
// Replace newline characters with <br> tags
function replaceNewlinesWithBr(node) {
for (let child of Array.from(node.childNodes)) {
if (child.nodeType === Node.TEXT_NODE) {
const parts = child.textContent.split('\\n');
if (parts.length > 1) {
const fragment = document.createDocumentFragment();
parts.forEach((part, index) => {
fragment.appendChild(document.createTextNode(part));
if (index < parts.length - 1) {
fragment.appendChild(document.createElement('br'));
}
});
child.parentNode.replaceChild(fragment, child);
}
} else if (child.nodeType === Node.ELEMENT_NODE) {
replaceNewlinesWithBr(child);
}
}
}
// In the content script
browser.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.command === "chatgpt_send") {

View file

@ -16,24 +16,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// Some methods are a modified version derived from https://github.com/ali-raheem/Aify/blob/13ff87583bc520fb80f555ab90a90c5c9df797a7/plugin/content_scripts/compose.js
const makeParagraphs = (text, func) => {
const chunks = text.split(/\n{2,}/);
if (chunks.length == 1) {
return func(document.createTextNode(text));
}
const paragraphs = chunks.map((t) => {
const p = document.createElement("p");
p.innerText = t;
return p;
});
for (let i = paragraphs.length - 1; i >= 0; i--) {
func(paragraphs[i]);
}
};
browser.runtime.onMessage.addListener(async (message) => {
switch (message.command) {
case "getSelectedText":
@ -50,9 +32,9 @@ switch (message.command) {
}
const r = sel.getRangeAt(0);
r.deleteContents();
makeParagraphs(message.text, function (p) {
r.insertNode(p);
});
const parser = new DOMParser();
const doc = parser.parseFromString(message.text, 'text/html');
r.insertNode(doc.body);
browser.runtime.sendMessage({command: "compose_reloadBody", tabId: message.tabId});
break;

View file

@ -78,11 +78,11 @@ export async function setBody(tabId, fullHtmlBody){
await messenger.compose.setComposeDetails(tabId, {body: fullHtmlBody});
}
export async function replaceBody(tabId, text){
export async function replaceBody(tabId, replyHtml) {
let composeDetails = await messenger.compose.getComposeDetails(tabId);
let originalHtmlBody = composeDetails.body;
//console.log('originalHtmlBody: ' + originalHtmlBody);
let fullBody = insertText(text, originalHtmlBody);
let fullBody = insertHtml(replyHtml, originalHtmlBody);
//console.log('fullBody: ' + fullBody);
await messenger.compose.setComposeDetails(tabId, {body: fullBody});
}
@ -90,9 +90,10 @@ export async function replaceBody(tabId, text){
// The following methods are a modified version derived from https://github.com/ali-raheem/Aify/blob/13ff87583bc520fb80f555ab90a90c5c9df797a7/plugin/content_scripts/compose.js
const insertText = function (text, fullBody_string) {
const insertHtml = function (replyHtml, fullBody_string) {
const parser = new DOMParser();
let fullBody = parser.parseFromString(fullBody_string, "text/html");
let reply = parser.parseFromString(replyHtml, "text/html");
// looking for the first quoted mail or the signature, which come first in case of "signature above the quote".
const prefix_quote = fullBody.getElementsByClassName("moz-cite-prefix");
@ -119,25 +120,18 @@ const insertText = function (text, fullBody_string) {
}
let final_p = document.createElement("p");
final_p.innerHTML = "<p><br/><br/></p>";
let br1 = document.createElement("br");
let br2 = document.createElement("br");
final_p.appendChild(br1);
final_p.appendChild(br2);
fullBody.body.insertBefore(final_p, fullBody.body.firstChild);
makeParagraphs(text, function (p) {
fullBody.body.insertBefore(p, fullBody.body.firstChild);
//fullBody.body.insertBefore(reply, fullBody.body.firstChild);
let fragment = document.createDocumentFragment();
Array.from(reply.body.childNodes).forEach(node => {
if (node.parentNode === reply.body) {
fragment.appendChild(node.cloneNode(true));
}
});
fullBody.body.insertBefore(fragment, fullBody.body.firstChild);
return fullBody.body.innerHTML;
}
const makeParagraphs = (text, func) => {
const chunks = text.split(/\n{2,}/);
if (chunks.length == 1) {
return func(document.createTextNode(text));
}
const paragraphs = chunks.map((t) => {
const p = document.createElement("p");
p.innerText = t;
return p;
});
for (let i = paragraphs.length - 1; i >= 0; i--) {
func(paragraphs[i]);
}
};
}

View file

@ -2,7 +2,7 @@
"manifest_version": 2,
"name": "ThunderAI",
"description": "__MSG_extensionDescription__",
"version": "1.1.3",
"version": "1.1.4",
"author": "Mic (m@micz.it)",
"homepage_url": "https://micz.it/thunderbird-addon-thunderai/",
"browser_specific_settings": {

View file

@ -19,7 +19,7 @@
import { mzta_script } from './js/mzta-chatgpt.js';
import { prefs_default } from './options/mzta-options-default.js';
import { mzta_Menus } from './js/mzta-menus.js';
import { getCurrentIdentity, getOriginalBody, reloadBody, replaceBody, setBody } from './js/mzta-utils.js';
import { getCurrentIdentity, getOriginalBody, replaceBody, setBody } from './js/mzta-utils.js';
var createdWindowID = null;
var original_html = '';
@ -69,6 +69,7 @@ messenger.runtime.onMessage.addListener(async (message, sender, sendResponse) =>
return true;
case 'chatgpt_replyMessage':
const paragraphsHtmlString = message.text;
//console.log(">>>>>>>>>>>> paragraphsHtmlString: " + paragraphsHtmlString);
let prefs = await browser.storage.sync.get({reply_type: 'reply_all'});
//console.log('reply_type: ' + prefs.reply_type);
let replyType = 'replyToAll';
@ -100,7 +101,7 @@ messenger.runtime.onMessage.addListener(async (message, sender, sendResponse) =>
const listener = (tabId, changeInfo, updatedTab) => {
if (tabIsLoaded(updatedTab)) {
browser.tabs.onUpdated.removeListener(listener);
console.log(">>>>>>>>>>>> reply_tab: " + tabId);
//console.log(">>>>>>>>>>>> reply_tab: " + tabId);
resolve();
}
}
@ -138,6 +139,7 @@ messenger.runtime.onMessage.addListener(async (message, sender, sendResponse) =>
async function openChatGPT(promptText, action, curr_tabId, do_custom_text = 0) {
let prefs = await browser.storage.sync.get(prefs_default);
prefs = checkScreenDimensions(prefs);
//console.log(">>>>>>>>>>>>>>>> prefs: " + JSON.stringify(prefs));
console.log('[ThunderAI] Prompt length: ' + promptText.length);
if(promptText.length > 30000 ){
// Prompt too long for ChatGPT
@ -178,6 +180,7 @@ async function openChatGPT(promptText, action, curr_tabId, do_custom_text = 0) {
let mztaForceCompletionDesc="`+ browser.i18n.getMessage("chatgpt_force_completion") +`";
let mztaForceCompletionTitle="`+ browser.i18n.getMessage("chatgpt_force_completion_title") +`";
let mztaDoCustomText=`+ do_custom_text +`;
let mztaKeepFormatting=`+ prefs.chatgpt_keep_formatting +`;
`;
browser.tabs.executeScript(createdTab.id, { code: pre_script + mzta_script, matchAboutBlank: false })

View file

@ -20,4 +20,5 @@ export const prefs_default = {
chatgpt_win_height: 800,
chatgpt_win_width: 700,
chatpgt_use_gpt4: false,
chatgpt_keep_formatting: false,
}

View file

@ -61,6 +61,7 @@ div#miczStatusPage{
left: 0px;
bottom: 2px;
padding: 2px 0px 0px 5px;
text-transform: capitalize;
}
div#miczDescription h1{
@ -90,4 +91,12 @@ span.dims_label{
text-align: center;
width: 100%;
margin: 10px 0px;
}
div#miczTranslate{
width: 100%;
text-align: center;
font-size: 14px;
font-weight: bold;
margin-bottom: 1em;
}

View file

@ -59,6 +59,17 @@
</label>
</td>
</tr>
<tr>
<td><label>
<span>__MSG_prefs_OptionText_chatpgt_keep_formatting__</span>
</label></td>
<td>
<label>
<input type="checkbox" id="chatgpt_keep_formatting" name="chatgpt_keep_formatting" class="option-input" />
&nbsp;<span>__MSG_prefs_OptionText_chatpgt_keep_formatting_info__</span>
</label>
</td>
</tr>
<tr>
<td><label>
<span>__MSG_prefs_OptionText_chatpgt_use_gpt4__</span>
@ -80,6 +91,7 @@
__MSG_prefsInfoDesc_2__<br/>
__MSG_prefsInfoDesc_3__</p>
</div>
<div id="miczTranslate">__MSG_TranslateText__ <a href="https://micz.it/thunderbird-addon-thunderai/translate/">__MSG_TranslateLink__</a></div>
<div id="miczDonation">__MSG_prefsDonation_1__<br/><a href="http://micz.it/thunderbird-addon-thunderai/donate/">__MSG_prefsDonation_2__</a></div>
<script src="mzta-options.js" type="module"></script>
<script src="../js/mzta-i18n.js"></script>

View file

@ -7,7 +7,14 @@
<body>
<div id="miczBackPrefs"><a href="mzta-options.html">__MSG_backToOptionsText__</a></div>
<div id="miczRelNotes"><h1>ThunderAI Release Notes</h1>
<h2>Version 1.1.3 - 18/06/2024</h2>
<h2>Version 1.1.4 - 28/06/2024</h2>
<ul>
<li>Added an option to import text with formatting from ChatGPT, set to false by default [<a href="https://github.com/micz/ThunderAI/issues/70">#70</a>], [<a href="https://github.com/micz/ThunderAI/issues/77">#77</a>].</li>
<li>Improve the message warning to choose the right model [<a href="https://github.com/micz/ThunderAI/issues/76">#76</a>].</li>
<li>Added a description in the Custom Prompts page about default prompts [<a href="https://github.com/micz/ThunderAI/issues/74">#74</a>].</li>
<li>Added a link to the <a href="https://micz.it/thunderbird-addon-thunderai/translate/">translate page</a> in the options window [<a href="https://github.com/micz/ThunderAI/issues/68">#68</a>].</li>
</ul>
<h2>Version 1.1.3 - 18/06/2024</h2>
<ul>
<li>Fixed a bug in replying to a message [<a href="https://github.com/micz/ThunderAI/issues/70">#70</a>].</li>
</ul>