Skip to content

Commit 064ec19

Browse files
committed
init
0 parents  commit 064ec19

30 files changed

+3528
-0
lines changed

LICENSE

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
The MIT License (MIT)
2+
3+
Copyright © 2024
4+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
5+
6+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
7+
8+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

README.md

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# PrioMailbox
2+
3+
PrioMailbox is a simple, powerful email organization add-on for Thunderbird that helps you manage your inbox efficiently by automatically tagging (highlighting) important emails and dimming less important ones. With PrioMailbox, prioritize your communication effortlessly and keep your focus where it matters most.
4+
5+
## Features
6+
7+
- **Automatic Email Prioritization**: Leverages trainable filters to prioritize important emails and dim non-priority emails.
8+
- **Privacy-Focused**: All data is processed and stored locally, ensuring your privacy is never compromised.
9+
- **Customizable Filters**: Train filters based on your email habits and preferences.
10+
- **User-Friendly Interface**: Easy to use with a minimal learning curve.
11+
12+
## Installation
13+
14+
To install PrioMailbox on your Thunderbird client:
15+
16+
1. Download the latest release from the [Releases]page.
17+
2. Open Thunderbird and go to `Add-ons and Themes`.
18+
3. Click on the gear icon and select `Install Add-on From File`.
19+
4. Navigate to the downloaded `.xpi` file and select it.
20+
5. Follow the prompts to install the add-on.
21+
22+
## Usage
23+
24+
Here's how to get started with PrioMailbox after installation:
25+
26+
### Training Filters
27+
28+
1. Navigate to the PrioMailbox settings panel.
29+
2. Choose the keywords that you want to be automatically tagged.
30+
3. Train the filters by right-clicking on emails and selecting the appropriate keyword under the PrioMailbox menu.
31+
32+
### Checking Email Classification
33+
34+
To test the filter's effectiveness:
35+
36+
- Select several emails that have not been used for training.
37+
- Right-click and choose `Classify Email` from the PrioMailbox menu to see the automatic classification in action.
38+
39+
### Screenshots
40+
41+
Here are some visuals of PrioMailbox in action:
42+
43+
**Email list showing applied keywords.**
44+
<a href="assets/screen1.png"><img src="assets/screen1.png" alt="Email list showing applied keywords" width="80%"></a>
45+
46+
**Addon settings panel.**
47+
<a href="assets/screen2.png"><img src="assets/screen2.png" alt="Addon settings panel" width="80%"></a>
48+
49+
**Statistical information on email classification.**
50+
<a href="assets/screen3.png"><img src="assets/screen3.png" alt="Statistical information on email classification" width="80%"></a>
51+
52+
**Training an email with PrioMailbox.**
53+
<a href="assets/screen4.png"><img src="assets/screen4.png" alt="Training an email with PrioMailbox" width="80%"></a>
54+
55+
## Contributing
56+
57+
Contributions to PrioMailbox are welcome! Here are a few ways you can help:
58+
59+
- **Report Bugs**: Submit bug reports and feature requests through [GitHub Issues](https://github.com/yourusername/priomailbox/issues).
60+
- **Submit Pull Requests**: Feel free to fork the repository and submit pull requests with new features or improvements.
61+
62+
## License
63+
64+
PrioMailbox is released under the [MIT License](LICENSE).

assets/screen1.png

45.3 KB
Loading

assets/screen2.png

17.5 KB
Loading

assets/screen3.png

22.7 KB
Loading

assets/screen4.png

50.3 KB
Loading

src/_locales/de/help.json

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
{
2+
"help_title": "PrioMailbox - Hilfe",
3+
"instructions_title": "Anleitung:",
4+
"instructions_text_1": "Wähle in den PrioMailbox-Einstellungen Schlagwörter (z.B. „Wichtig“, „Persönlich“) aus, die automatisch (basierend auf deinem Training) gesetzt werden sollen. Trainiere jedes Schlagwort, indem du einige Mails auswählst, die zu diesem Schlagwort passen, und einige, die nicht passen. Klicke dazu in der Mailliste mit der rechten Maustaste auf die jeweilige Mail, gehe im Menü auf „PrioMailbox“, wähle das entsprechende Schlagwort und trainiere die Mail.",
5+
"instructions_text_2": "Zum schnellen Testen der Erkennung markiere einige Mails (mit denen noch nicht trainiert wurde) und klicke im PrioMailbox-Menü auf „Klassifiziere E-Mail“. Diese Mails werden dann überprüft, und wenn die Schlagwörter basierend auf den Trainingsdaten zutreffen, werden sie automatisch gesetzt.",
6+
"instructions_text_3": "Um weitere Informationen zu einer Mail zu erhalten, klicke im PrioMailbox-Menü auf „E-Mail Infos“.",
7+
8+
"usage_ideas_title": "Nutzungsideen:",
9+
"usage_idea_1_title": "Unwichtige Mails automatisch abschwächen:",
10+
"usage_idea_1_text": "Erstelle ein neues Schlagwort wie „Werbung“ oder „Unwichtig“ und gib ihm eine graue Farbe. Wähle das Schlagwort in PrioMailbox aus und trainiere den Filter. So kannst du Mails, die zwar kein Spam, aber nicht wichtig sind, farblich unauffälliger machen und ihre Aufmerksamkeit minimieren.",
11+
"usage_idea_2_title": "Wichtige Mails hervorheben:",
12+
"usage_idea_2_text": "Erstelle ein Schlagwort für wichtige Mails, z.B. „Dringend“, und wähle eine auffällige Farbe. Trainiere den Filter in PrioMailbox, um wichtige Mails sofort hervorzuheben und sicherzustellen, dass sie nicht untergehen.",
13+
"usage_idea_3_title": "Schlagwörter für To-Do-Aufgaben:",
14+
"usage_idea_3_text": "Verwende automatische Schlagwörter, um Mails zu markieren, bei denen noch Handlungsbedarf besteht. Wenn du beispielsweise für die Bearbeitung von Rechnungen zuständig bist, erstelle das Schlagwort „Rechnung“ und trainiere es. Nach dem Training werden Mails mit Rechnungen automatisch markiert. Nach dem Bezahlen kannst du das Schlagwort entfernen, um den Überblick zu behalten.",
15+
16+
"good_training_notes_title": "Hinweise für gutes Training:",
17+
"good_training_text_1": "Hier am Beispiel des Schlagworts „Wichtig“:",
18+
"good_training_text_2": "Trainiere zu Beginn einige Mails, die als „Wichtig“ gelten, und einige, die nicht „Wichtig“ sind. Später reicht es aus, nur noch die Mails zu trainieren, bei denen das Schlagwort „Wichtig“ fälschlicherweise gesetzt wurde (Falsch-Positiv) oder die nicht als „Wichtig“ markiert wurden, obwohl sie es sein sollten (Falsch-Negativ).",
19+
20+
"poor_training_title": "Schlechtes Training (Überanpassung vermeiden):",
21+
"poor_training_text_1": "Achte darauf, Mails nicht falsch zu trainieren. Es ist nicht sinnvoll, bereits richtig erkannte Mails weiterhin zu trainieren. Wenn eine Mail korrekt als „Wichtig“ markiert wurde, sollte sie nicht erneut als „Wichtig“ trainiert werden. Gleiches gilt für Mails, die korrekt als „NICHT-Wichtig“ erkannt wurden – diese sollten nicht erneut als „NICHT-Wichtig“ trainiert werden.",
22+
"poor_training_text_2": "Wiederholtes falsches Training kann zu Überanpassung (Overfitting) führen, was die Lernfähigkeit des Filters verschlechtert. Kurz gesagt: Trainiere am besten nur die Falsch-Positiv- und Falsch-Negativ-Mails, um die besten Ergebnisse zu erzielen.",
23+
24+
"additional_notes_title": "Hinweise:",
25+
"note_1": "Die Schlagwörter werden unabhängig voneinander trainiert. Es ist normal, dass Mails mit mehreren Schlagwörtern markiert werden. Dies ist so beabsichtigt.",
26+
"note_2": "Manuelles Setzen oder Entfernen von Schlagwörtern ändert die Trainingsdaten nicht. Trainiert wird ausschließlich über das PrioMailbox-Menü.",
27+
"note_3": "Bereits trainierte Mails können für eine gewisse Zeit nicht erneut trainiert werden, um Überanpassung zu vermeiden.",
28+
29+
"questions_title": "Fragen:",
30+
"question_1_title": "Wo werden die Daten gespeichert?",
31+
"question_1_text": "Die Trainingsdaten werden lokal auf deinem Gerät in deinem Thunderbird-Profil gespeichert. Deine Daten sind also vollständig in deiner Hand und werden nicht extern übertragen.",
32+
33+
"question_2_title": "Wie funktioniert die Erkennung?",
34+
"question_2_text": "Die Erkennung basiert auf einem sogenannten Bayes-Filter. Aus den von dir trainierten Mails wird gezählt, welche Tokens (Wörter / Wortpaare) in Mails vorkommen, die zu deinem Schlagwort passen, und welche nicht. Bei neuen Mails kann durch die Analyse der enthaltenen Tokens die Wahrscheinlichkeit berechnet werden, ob diese Mail zu deinem Schlagwort passt. Wenn der Wahrscheinlichkeitswert über einem bestimmten Schwellwert liegt, wird das Schlagwort automatisch gesetzt.",
35+
36+
"question_3_title": "Welche Inhalte einer Mail werden beim Training / der Klassifizierung beachtet?",
37+
"question_3_text": "PrioMailbox analysiert die ersten 150 Tokens (Wörter) einer Mail sowie den Betreff, den Absender, den Empfänger, CC und die Dateinamen der Anhänge."
38+
}

src/_locales/de/messages.json

+247
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,247 @@
1+
{
2+
"emailInfoMenu": {
3+
"message": "🔍 E-Mail-Infos",
4+
"description": "Kontextmenüeintrag für das Anzeigen von E-Mail-Informationen"
5+
},
6+
"classifyMenu": {
7+
"message": "📄 Klassifiziere E-Mail",
8+
"description": "Kontextmenüeintrag für das Klassifizieren einer E-Mail"
9+
},
10+
"trainTagMenu": {
11+
"message": "Trainiere: $1",
12+
"description": "Kontextmenüeintrag für das Trainieren einer E-Mail mit einem bestimmten Tag"
13+
},
14+
"learnTagMenu": {
15+
"message": "✔️ Lerne als $1",
16+
"description": "Untermenüeintrag für das Markieren einer E-Mail als ein bestimmtes Tag"
17+
},
18+
"unlearnTagMenu": {
19+
"message": "❌ Lerne als nicht $1",
20+
"description": "Untermenüeintrag für das Markieren einer E-Mail als nicht ein bestimmtes Tag"
21+
},
22+
"trainingCompleteMessage": {
23+
"message": "Trainiert als: $1",
24+
"description": "Popup-Nachricht nach abgeschlossenem Training für ein Tag"
25+
},
26+
"untrainingCompleteMessage": {
27+
"message": "Trainiert als: NICHT-$1",
28+
"description": "Popup-Nachricht nach abgeschlossenem Nicht-Training für ein Tag"
29+
},
30+
"classificationCompleteMessage": {
31+
"message": "Klassifizierung abgeschlossen",
32+
"description": "Popup-Nachricht nach abgeschlossener Klassifizierung"
33+
},
34+
"popup_settingsButton": {
35+
"message": "Einstellungen",
36+
"description": "Text für den Einstellungen-Button im Popup"
37+
},
38+
"popup_helpButton": {
39+
"message": "Hilfe",
40+
"description": "Text für den Hilfe-Button im Popup"
41+
},
42+
"setting_title": {
43+
"message": "PrioMailbox Einstellungen",
44+
"description": "Titel der Einstellungsseite"
45+
},
46+
"setting_autoTagTitle": {
47+
"message": "Automatisches Taggen neuer E-Mails",
48+
"description": "Titel für das automatische Taggen von E-Mails"
49+
},
50+
"setting_autoTagTooltip": {
51+
"message": "Neue E-Mails auf die gelernten Schlagwörter prüfen und taggen.",
52+
"description": "Tooltip für automatisches Taggen"
53+
},
54+
"setting_allAccountsLabel": {
55+
"message": "Für alle Konten aktiviert",
56+
"description": "Label für die Checkbox 'Alle Konten'"
57+
},
58+
"setting_selectTagsTitle": {
59+
"message": "Schlagwörter auswählen",
60+
"description": "Titel für die Auswahl der Schlagwörter"
61+
},
62+
"setting_selectTagsTooltip": {
63+
"message": "Wählen Sie die Schlagwörter aus, die zum Trainieren und automatischen Taggen verwendet werden.",
64+
"description": "Tooltip für die Auswahl der Schlagwörter"
65+
},
66+
"setting_thresholdTitle": {
67+
"message": "Schwellwert für automatisches Taggen",
68+
"description": "Titel für den Schwellwert"
69+
},
70+
"setting_thresholdTooltip": {
71+
"message": "Dieser Wert legt die Wahrscheinlichkeit fest, ab der ein Tag gesetzt wird. Es wird empfohlen, den Wert bei 99% zu belassen.",
72+
"description": "Tooltip für den Schwellwert"
73+
},
74+
"setting_thresholdLabel": {
75+
"message": "Schwellwert (%)",
76+
"description": "Label für das Schwellwert-Feld"
77+
},
78+
"setting_setTagsTitle": {
79+
"message": "Schlagwörter setzen",
80+
"description": "Titel für das Setzen von Schlagwörtern"
81+
},
82+
"setting_tagOnTrainingLabel": {
83+
"message": "Schlagwort beim Trainieren setzen/entfernen",
84+
"description": "Label für das automatische Setzen von Schlagwörtern beim Trainieren"
85+
},
86+
"setting_tagOnTrainingTooltip": {
87+
"message": "Wenn aktiviert, wird beim Trainieren das entsprechende Schlagwort gesetzt oder entfernt.",
88+
"description": "Tooltip für das Setzen von Schlagwörtern beim Trainieren"
89+
},
90+
"setting_removeOnClassifyLabel": {
91+
"message": "Entferne gesetzte Schlagwörter beim Klassifizieren wenn Wahrscheinlichkeit unter Schwellwert",
92+
"description": "Label für das Entfernen von Schlagwörtern"
93+
},
94+
"setting_removeOnClassifyTooltip": {
95+
"message": "Wenn aktiviert, werden gesetzte Schlagwörter entfernt, wenn die Wahrscheinlichkeit unter dem Schwellwert liegt.",
96+
"description": "Tooltip für das Entfernen von Schlagwörtern beim Klassifizieren"
97+
},
98+
"setting_backupRestoreTitle": {
99+
"message": "Trainingsdaten sichern und wiederherstellen",
100+
"description": "Titel für den Backup- und Wiederherstellungsbereich"
101+
},
102+
"setting_backupButton": {
103+
"message": "Trainingsdaten sichern",
104+
"description": "Button für das Sichern von Trainingsdaten"
105+
},
106+
"setting_restoreButton": {
107+
"message": "Trainingsdaten wiederherstellen",
108+
"description": "Button für das Wiederherstellen von Trainingsdaten"
109+
},
110+
"setting_saveButton": {
111+
"message": "Speichern",
112+
"description": "Button für das Speichern von Einstellungen"
113+
},
114+
"settings_defaultOption": {
115+
"message": "--- Bitte wählen ---",
116+
"description": "Standardoption in der Dropdown-Liste"
117+
},
118+
"settings_deleteTrainingData": {
119+
"message": "Trainingsdaten löschen",
120+
"description": "Button zum Löschen der Trainingsdaten"
121+
},
122+
"settings_stopDeletion": {
123+
"message": "Löschen stoppen ($1s)",
124+
"description": "Buttontext während des Lösch-Countdowns"
125+
},
126+
"settings_noTrainingData": {
127+
"message": "Keine Trainingsdaten für $1 vorhanden.",
128+
"description": "Warnung, wenn keine Trainingsdaten für ein ausgewähltes Tag existieren"
129+
},
130+
"settings_loadTrainingDataError": {
131+
"message": "Fehler beim Laden der Trainingsdaten. Bitte versuchen Sie es erneut.",
132+
"description": "Fehlermeldung beim Laden der Trainingsdaten"
133+
},
134+
"settings_trainingDataDeleted": {
135+
"message": "Trainingsdaten für $1 wurden gelöscht.",
136+
"description": "Bestätigungsmeldung nach dem Löschen der Trainingsdaten"
137+
},
138+
"settings_deleteTrainingDataError": {
139+
"message": "Fehler beim Löschen der Trainingsdaten für $1.",
140+
"description": "Fehlermeldung beim Löschen der Trainingsdaten"
141+
},
142+
"settings_invalidThreshold": {
143+
"message": "Bitte geben Sie einen gültigen Schwellwert zwischen 1 und 99 ein.",
144+
"description": "Warnung bei ungültigem Schwellwert"
145+
},
146+
"settings_saved": {
147+
"message": "Einstellungen gespeichert.",
148+
"description": "Bestätigungsmeldung nach dem Speichern der Einstellungen"
149+
},
150+
"settings_saveError": {
151+
"message": "Fehler beim Speichern der Einstellungen. Bitte versuchen Sie es erneut.",
152+
"description": "Fehlermeldung beim Speichern der Einstellungen"
153+
},
154+
"settingsx_defaultOption": {
155+
"message": "--- Bitte wählen ---",
156+
"description": "Standardoption in der Dropdown-Liste"
157+
},
158+
"settingsx_deleteTrainingData": {
159+
"message": "Trainingsdaten löschen",
160+
"description": "Button zum Löschen der Trainingsdaten"
161+
},
162+
"settingsx_stopDeletion": {
163+
"message": "Löschen stoppen ($1s)",
164+
"description": "Buttontext während des Lösch-Countdowns"
165+
},
166+
"settingsx_backupSuccess": {
167+
"message": "Trainingsdaten wurden erfolgreich gesichert.",
168+
"description": "Bestätigungsmeldung nach erfolgreicher Sicherung der Trainingsdaten"
169+
},
170+
"settingsx_backupError": {
171+
"message": "Fehler beim Sichern der Trainingsdaten. Bitte versuchen Sie es erneut.",
172+
"description": "Fehlermeldung bei einem Backup-Fehler"
173+
},
174+
"settingsx_restoreSuccess": {
175+
"message": "Trainingsdaten wurden erfolgreich wiederhergestellt.",
176+
"description": "Bestätigungsmeldung nach erfolgreicher Wiederherstellung der Trainingsdaten"
177+
},
178+
"settingsx_restoreError": {
179+
"message": "Fehler beim Wiederherstellen der Trainingsdaten. Bitte versuchen Sie es erneut.",
180+
"description": "Fehlermeldung bei einem Wiederherstellungs-Fehler"
181+
},
182+
"settingsx_invalidDataError": {
183+
"message": "Ungültige Datenstruktur.",
184+
"description": "Fehlermeldung bei ungültiger Datenstruktur in der wiederhergestellten Datei"
185+
},
186+
"settingsx_invalidZipError": {
187+
"message": "Fehler beim Verarbeiten der ZIP-Datei. Bitte stellen Sie sicher, dass es sich um eine gültige ZIP-Datei handelt.",
188+
"description": "Fehlermeldung bei einer ungültigen ZIP-Datei"
189+
},
190+
"settingsx_noTrainingData": {
191+
"message": "Keine Trainingsdaten für $1 vorhanden.",
192+
"description": "Warnung, wenn keine Trainingsdaten für ein ausgewähltes Tag existieren"
193+
},
194+
"settingsx_loadTrainingDataError": {
195+
"message": "Fehler beim Laden der Trainingsdaten. Bitte versuchen Sie es erneut.",
196+
"description": "Fehlermeldung beim Laden der Trainingsdaten"
197+
},
198+
"settingsx_trainingDataDeleted": {
199+
"message": "Trainingsdaten für $1 wurden gelöscht.",
200+
"description": "Bestätigungsmeldung nach dem Löschen der Trainingsdaten"
201+
},
202+
"settingsx_deleteTrainingDataError": {
203+
"message": "Fehler beim Löschen der Trainingsdaten für $1.",
204+
"description": "Fehlermeldung beim Löschen der Trainingsdaten"
205+
},
206+
"emailinfo_title": {
207+
"message": "PrioMailbox - E-Mail Info",
208+
"description": "Titel für die E-Mail Info Seite"
209+
},
210+
"emailinfo_label_tag": {
211+
"message": "Schlagwort",
212+
"description": "Label für die Spalte mit den Tags"
213+
},
214+
"emailinfo_label_probability": {
215+
"message": "Wahrscheinlichkeit",
216+
"description": "Label für die Spalte mit der Wahrscheinlichkeit"
217+
},
218+
"emailinfo_label_known_tokens": {
219+
"message": "Bekannte Tokens",
220+
"description": "Label für die Spalte mit dem Prozentsatz der bekannten Tokens"
221+
},
222+
"emailinfo_top_tokens": {
223+
"message": "Top Tokens für Schlagwort \"$1\"",
224+
"description": "Titel der Token-Tabelle für ein bestimmtes Schlagwort"
225+
},
226+
"emailinfo_token": {
227+
"message": "Token",
228+
"description": "Spaltenüberschrift für die Token-Spalte"
229+
},
230+
"emailinfo_probability": {
231+
"message": "Wahrscheinlichkeit",
232+
"description": "Spaltenüberschrift für die Wahrscheinlichkeitsspalte"
233+
},
234+
"emailinfo_type": {
235+
"message": "Typ",
236+
"description": "Spaltenüberschrift für den Typ (Positiv/Negativ)"
237+
},
238+
"emailinfo_positive": {
239+
"message": "Positiv",
240+
"description": "Label für positive Tokens"
241+
},
242+
"emailinfo_negative": {
243+
"message": "Negativ",
244+
"description": "Label für negative Tokens"
245+
}
246+
}
247+

0 commit comments

Comments
 (0)