diff --git a/_locales/en/messages.json b/_locales/en/messages.json
index d77738c4..81ba831e 100644
--- a/_locales/en/messages.json
+++ b/_locales/en/messages.json
@@ -1127,6 +1127,18 @@
"message": "If checked, the AI will add only existing tags and won't create new tags.",
"description": ""
},
+ "prefs_OptionText_add_tags_auto_uselist": {
+ "message": "Use only these tags",
+ "description": ""
+ },
+ "prefs_OptionText_add_tags_auto_uselist_Info": {
+ "message": "If checked, the AI will add only tags from the list below. The list must contain comma separated list of allowed tags.",
+ "description": ""
+ },
+ "prefs_OptionText_add_tags_auto_uselist_list_Info": {
+ "message": "The list must contain at least one tag. The tags must be separated by a comma.",
+ "description": ""
+ },
"prefs_OptionText_add_tags_auto_only_inbox": {
"message": "Only add tags to inbox emails",
"description": ""
diff --git a/options/mzta-options-default.js b/options/mzta-options-default.js
index 16530072..e1aeb908 100644
--- a/options/mzta-options-default.js
+++ b/options/mzta-options-default.js
@@ -62,6 +62,8 @@ export const prefs_default = {
add_tags_auto: false,
add_tags_auto_force_existing: false,
add_tags_auto_only_inbox: true,
+ add_tags_auto_uselist: false,
+ add_tags_auto_uselist_list: '',
add_tags_context_menu: true,
add_tags_enabled_accounts: [],
get_calendar_event: true,
diff --git a/pages/addtags/mzta-add-tags.css b/pages/addtags/mzta-add-tags.css
index 198b6896..070f3bdf 100644
--- a/pages/addtags/mzta-add-tags.css
+++ b/pages/addtags/mzta-add-tags.css
@@ -17,10 +17,16 @@
margin: 40px auto;
}
-#addtags_excl_list{
+#addtags_excl_list, #add_tags_auto_uselist_list{
width: 30em;
}
+#add_tags_auto_uselist_list:disabled {
+ background-color: #eee;
+ color: #888;
+ cursor: not-allowed;
+}
+
#account_selector_container{
display: none;
}
@@ -37,13 +43,17 @@
background-color: #e9ffdf;
}
+tr.add_tags_auto_sub td{
+ padding-left: 0.8em !important;
+}
+
.btn_div{
width: 100%;
display: flex;
justify-content: space-between;
}
-#addtags_info_additional_statements, #add_tags_auto_only_inbox_tr{
+#addtags_info_additional_statements, #add_tags_auto_only_inbox_tr, #add_tags_auto_uselist_tr{
display: none;
}
diff --git a/pages/addtags/mzta-add-tags.html b/pages/addtags/mzta-add-tags.html
index ef5d2488..f7178469 100644
--- a/pages/addtags/mzta-add-tags.html
+++ b/pages/addtags/mzta-add-tags.html
@@ -68,7 +68,7 @@
-
+
| __MSG_prefs_OptionText_add_tags_auto_only_inbox__ |
|
+
+ | __MSG_prefs_OptionText_add_tags_auto_uselist__ |
+
+
+ |
+
| __MSG_prefs_OptionText_add_tags_context_menu__ |
diff --git a/pages/addtags/mzta-add-tags.js b/pages/addtags/mzta-add-tags.js
index 8da2bae2..c52e6583 100644
--- a/pages/addtags/mzta-add-tags.js
+++ b/pages/addtags/mzta-add-tags.js
@@ -57,14 +57,25 @@ document.addEventListener('DOMContentLoaded', async () => {
let add_tags_auto_only_inbox_tr = document.getElementById('add_tags_auto_only_inbox_tr');
let account_selector_container = document.getElementById('account_selector_container');
let add_tags_auto_infoline = document.getElementById('add_tags_auto_infoline');
+ let add_tags_auto_uselist_tr = document.getElementById('add_tags_auto_uselist_tr');
add_tags_auto_el.addEventListener('click', (event) => {
add_tags_auto_only_inbox_tr.style.display = event.target.checked ? 'table-row' : 'none';
account_selector_container.style.display = event.target.checked ? 'block' : 'none';
add_tags_auto_infoline.style.display = event.target.checked ? 'inline' : 'none';
+ add_tags_auto_uselist_tr.style.display = event.target.checked ? 'table-row' : 'none';
+
});
add_tags_auto_only_inbox_tr.style.display = add_tags_auto_el.checked ? 'table-row' : 'none';
account_selector_container.style.display = add_tags_auto_el.checked ? 'block' : 'none';
add_tags_auto_infoline.style.display = add_tags_auto_el.checked ? 'inline' : 'none';
+ add_tags_auto_uselist_tr.style.display = add_tags_auto_el.checked ? 'table-row' : 'none';
+
+ let add_tags_auto_uselist = document.getElementById('add_tags_auto_uselist');
+ let add_tags_auto_uselist_list = document.getElementById('add_tags_auto_uselist_list');
+ add_tags_auto_uselist.addEventListener('click', (event) => {
+ add_tags_auto_uselist_list.disabled = !event.target.checked;
+ });
+ add_tags_auto_uselist_list.disabled = !add_tags_auto_uselist.checked;
addtags_reset_btn.addEventListener('click', () => {
addtags_textarea.value = browser.i18n.getMessage('prompt_add_tags_full_text');
@@ -221,6 +232,9 @@ function saveOptions(e) {
case 'select-one':
options[element.id] = element.value;
break;
+ case 'textarea':
+ options[element.id] = element.value.trim();
+ break;
default:
console.error("[ThunderAI] Unhandled input type:", element.type);
}
@@ -243,6 +257,7 @@ async function restoreOptions() {
element.value = result[element.id] ?? default_number_value;
break;
case 'text':
+ case 'textarea':
case 'password':
let default_text_value = '';
if(element.id == 'default_chatgpt_lang') default_text_value = prefs_default.default_chatgpt_lang;
|