Giter Club home page Giter Club logo

third-stats's Introduction

ThirdStats is a Thunderbird add-on for beautifully visualized email account stats.
Download from Thunderbird Add-ons repository. Contributions, corrections & requests can be made on GitHub.
Created by Andreas Müller.

release last commit CodeQL analysis license contributions welcome

Get started

Install ThirdStats from the Thunderbird Add-ons repository:

  1. Start Thunderbird, open the main menu and click on Add-ons
  2. Search for ThirdStats
  3. Click Add to Thunderbird and give necessary permissions
  4. Open the ThirdStats Popup in the upper right corner of the main toolbar and enjoy your email account stats

To properly recognize emails as sent, make sure to configure all email adresses you write from as Thunderbird identities for your email account. You can do so under account settings > select your account > click button more identities at the bottom and add or modify identities as you need.

Also keep in mind, that the processing of large mailboxes can take a lot of time.

Features

  • Check key numbers like total, received or sent emails per account
  • Analyze the progress of email counts per year, per month, per daytime, per weekday, per folder and many more
  • See your most busy hours during the week
  • Find out, which contacts are the ones sending most emails
  • Filter stats for a specific folder, date range or contact
  • Compare different email accounts with each other and define their color
  • Set Options for account selection, theme, caching system and a lot more customizations
  • Enjoy the responsive stats page adapting to different viewport sizes
  • Have language support for Brazilian Portuguese, Catalan, Chinese, Czech, Dutch, English, French, Galician, German, Hindi, Hungarian, Indonesian, Italian, Japanese, Polish, Portuguese, Russian, Slovak, Spanish, Swedish, Thai, Turkish and Ukrainian

Here is how ThirdStats looks like on the Thunderbird default dark theme and light theme on Windows:

thirdstats_screenshot_version_1.8.0

Privacy and Security

ThirdStats runs entirely locally and will never contact, send or sell data to, any third-parties.

ThirdStats features require Thunderbird permissions to function, but will always seeks to minimise permissions where possible, and use granular permissions where available (Example: Thunderbird Permissions API does not currently provide for reading only message headers, instead of the entire email, including the body):

  • Accounts: Access accounts and identities (read-only)
  • Downloads: Export and download data as a file
  • Messages: Access messages to create statistics (read-only)
  • Storage: Store processed data (cache) for performance. Can be cleared or disabled at any time.

See the Security Policy for details how ThirdStats values your privacy.

Support this project

Contributions are very welcome! See the Contribution Guidelines for more information, how to help making this add-on even better.

Spread the word

Become a tester

Cutting edge alpha releases of ThirdStats can be found on the dedicated ThirdStats CDN. You can manually install these alpha releases and test them as you like.

If you encounter any problem, please issue a bug report. If you have ideas for additional features, please issue a feature request.

Become a ThirdStats developer

Here is how you can set up a local development environment:

  1. Clone this project with Git
  2. Install dependencies by running npm install within the cloned directory third-stats/
  3. Start the development server with npm run dev
  4. Open development site by going to http://localhost:8080 in your browser

Note that this tool uses Thunderbirds WebExtension APIs. This means that some JavaScript objects won't be available in your browser as development environment. If you want to test your changes in Thunderbird, do the following:

  1. Save all your changes and run npm run build to create a production build in the dist/ directory
  2. Open Thunderbird, go to main menu > add-ons > gear menu > debug add-ons > This Thunderbird > Load temporary add-on
  3. Now choose the manifest file inside the dist/ directory and your modified add-on will be loaded for the current Thunderbird session. You can check the web console by clicking the button Inspect in the add-on tile.

Special Thanks

Many thanks especially to those who helped translating this add-on and making it more accessable for people around the globe:

Licence

This Thunderbird add-on is licensed under MIT License.


This add-on is completely free to use. If you enjoy it and don't have the time to contribute, please consider donating via Paypal or sponsoring me to support further development. 💚

third-stats's People

Contributors

ajyan avatar altmas5 avatar antoinevth avatar aurelienrouze avatar avejant0 avatar dependabot[bot] avatar devmount avatar dfoltynski avatar di3gocs avatar dillenger avatar eagle3386 avatar edmael avatar frejbjornsson avatar hsins avatar kerlon5 avatar kerlos avatar koobs avatar leobia avatar leos1113 avatar marcelstoer avatar martinsustek avatar martinsustek088 avatar mdfaizan7 avatar monucarpenter avatar ovari avatar roninjosue avatar sabrinafz avatar tosbaha avatar uveic avatar wikiyu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

third-stats's Issues

Add translation: Polish

Provide the name and the two-letter code of the new language
Polish, pl

Steps to add the translation

  • Add a folder public/_locales/pl/
  • Copy the file public/_locales/en/messages.json to your new folder
  • Translate all values of that file (please leave the keys untouched!) and create a pull request

Additional Heat Map: Last year

Is your feature request related to a problem? Please describe.
No problem. Just completing the already existing analytics.

Describe the solution you'd like
A heat map showing the number of emails for the last year per day (meaning the previous 365 days from today), similar to the contributions heat map of GitHub. Vertical axis is the day of week (7 values), horizontal axis is the week number (52-53 values).
Also there could be Buttons for every past year (again inspired by GitHub), to toggle the HeatMap data for the corresponding year.

Describe alternatives you've considered
A possible alternative is just showing number of emails for the last month, but for the last year would give a much better overview.

Additional context
None.

Most Contacted (Incoming and Outgoing)

The existing metrics don't give me as much insight into who I am contacting and who is contacting me. Additional graphs along these lines would be very interesting.

I would like to see a leaderboard style list of people I send email to and who sends email to me. It may be useful for identifying how your time is spent in your inbox and may allow for the user to change their behavior if, say, they are receiving a lot of email from a list or an individual but haven't realized just how much they are getting. They could then, in theory, say "Hey, I'm getting too much email from this person" and either address that or, in the case of a list, unsubscribe.

Porperly handle empty accounts

Describe the bug
If a Thunderbird account (for some reason) doesn't have any emails at all, there should be an indication for "empty account" instead of all charts showing no data.

To Reproduce
Steps to reproduce the behavior:

  1. Have an email account without any emails
  2. Open the stats page
  3. See empty charts

Expected behavior
No charts at all and a message saying something like "empty account".

Screenshots
image

System (please complete the following information):

  • OS: Windows 10
  • Thunderbird Version 78.3.1 (32-Bit)

Additional context
none

Add translation: French

Provide the name and the two-letter code of the new language
French, fr

Steps to add the translation

  • Add a folder public/_locales/fr/
  • Copy the file public/_locales/en/messages.json to your new folder
  • Translate all values of that file (please leave the keys untouched!) and create a pull request

Complete translation: Hindi

Provide the two-letter code of the existing language
hi

Provide the lines, that are still English and should be translated
24-25, 56-57, 60-61

Steps to complete the translation

  • Open the corresponding file, public/_locales/hi/messages.json
  • Translate all values of the given lines, that still have an English translation and create a pull request

Add translation: Hindi

Provide the name and the two-letter code of the new language
Hindi, hi

Steps to add the translation

  • Add a folder public/_locales/hi/
  • Copy the file public/_locales/en/messages.json to your new folder
  • Translate all values of that file (please leave the keys untouched!) and create a pull request

Add translation: Dutch

Provide the name and the two-letter code of the new language
Dutch, nl

Steps to add the translation

  • Add a folder public/_locales/nl/
  • Copy the file public/_locales/en/messages.json to your new folder
  • Translate all values of that file (please leave the keys untouched!) and create a pull request

Add translation: Czech

Provide the name and the two-letter code of the new language
Czech, cs

Steps to add the translation

  • Add a folder public/_locales/cs/
  • Copy the file public/_locales/en/messages.json to your new folder
  • Translate all values of that file (please leave the keys untouched!) and create a pull request

Enhance view for ultra-wide screens

Is your feature request related to a problem? Please describe.
There would be enough space on ultra-wide screens to show all charts, but currently you have to scroll down to see all stats.

Describe the solution you'd like
Utilize all available space, especially the horizontal space on ultra-wide screens. The current max container width is 1200px. Implement an addition breakpoint at e.g. 1600px or 1920px to show three charts per row.

Describe alternatives you've considered
Pagination would be an alternative, but this also has the problem that not all information can be seen at one glance.

Complete translation: Polish

Provide the two-letter code of the existing language
pl

Provide the lines, that are still English and should be translated
24-25, 56-57, 60-61

Steps to complete the translation

  • Open the corresponding file, public/_locales/pl/messages.json
  • Translate all values of the given lines, that still have an English translation and create a pull request

Show summarized stats of all accounts

Is your feature request related to a problem? Please describe.
Currently I can select a specific account, for which the stats are calculated. I use different accounts + local accounts for organizing all my mails, but still would love to have an overview on the overall stats.

Describe the solution you'd like
A simple solution could be to add an additional entry "all" to the "accounts"-dropdown (in case there is more than one account in the thunderbird profile) which generates statistics over all accounts.

Describe alternatives you've considered
The only alternative would be to switch to a different workflow mode and move all mails to a single account. But that would impact my productivity a lot.

Additional context
n/a

Additional note: Thanks for the great extension! I love it :-)

Why not Git-ignore the dist folder?

I was quite surprised to learn that dist is not Git-ignored. If you ever run yarn build locally you have to be super careful that you do not accidentally commit/push changes in your local dist folder upstream.

Complete translation: Spanish

Provide the two-letter code of the existing language
es

Provide the lines, that are still English and should be translated
24-25, 56-57, 60-61

Steps to complete the translation

  • Open the corresponding file, public/_locales/es/messages.json
  • Translate all values of the given lines, that still have an English translation and create a pull request

Add translation: Japanese

Provide the name and the two-letter code of the new language
Japanese, ja

Steps to add the translation

  • Add a folder public/_locales/ja/
  • Copy the file public/_locales/en/messages.json to your new folder
  • Translate all values of that file (please leave the keys untouched!) and create a pull request

Add Translation: Swedish

Provide the name and the two-letter code of the new language
Swedish, sv

Steps to add the translation

  • Add a folder public/_locales/sv/
  • Copy the file public/_locales/en/messages.json to the new folder
  • Translate all values of that file (please leave the keys untouched!) and create a pull request

Complete translation: French

Provide the two-letter code of the existing language
fr

Provide the lines, that are still English and should be translated
24-25, 56-57, 60-61

Steps to complete the translation

  • Open the corresponding file, public/_locales/fr/messages.json
  • Translate all values of the given lines, that still have an English translation and create a pull request

Translations - plural forms

Is your feature request related to a problem? Please describe.

There is a lot of languages with more than two forms - singular and plural. For example in polish (and most of slavic languages) we have
1 comment - 1 komentarz
2 comments - 2 komentarze
5 comments - 5 komentarzy
here we have two different forms of plurals. But ... there is much more fun in this area.
https://doc.qt.io/archives/qq/qq19-plurals.html - in QT library docs is quite nice example

Describe the solution you'd like

Best method that i even know about translations with support of many plural (and null) forms is gettext https://www.gnu.org/software/gettext/
with poEditor - tool to make very fast translations, and even online tool. As i found there is also javascript gettext implementation.
https://github.com/guillaumepotier/gettext.js/

Describe alternatives you've considered

Additional context

https://www.gnu.org/software/gettext/manual/gettext.html#Translating-plural-forms

Range of years is of questionable accuracy

For some accounts, the stat for Total Mail (X mails within Y.Z years) displays a year range that is highly improbable. In my case, it says 50.8, which — if correct — implies that I have received a mail from 1969… which would be 2 years before email was invented.

I can reproduce this behavior simply by navigating using the "Thunderbird Stats” button to the stats.html page for my IMAP-pulled Gmail account

What was expected is that the year range displayed is either the year the account was created (in Gmail it says 2/4/09), or the year of the oldest/first mail that was received into the account.

Maybe the header of one rotten-apple mail in my account was malformed that should be ignored by the extension because it is impossible, or another cause.

I am on MacOS Catalina 10.15.7, TB 78.3.3 (64-bit).

Complete translation: Russian

Provide the two-letter code of the existing language
ru

Provide the lines, that are still English and should be translated
24-25, 56-57, 60-61

Steps to complete the translation

  • Open the corresponding file, public/_locales/ru/messages.json
  • Translate all values of the given lines, that still have an English translation and create a pull request

Loading animations for charts

Is your feature request related to a problem? Please describe.
Especially on large inboxes with a lot of emails the stats creation can take a lot of time. It's confusing, when the chart labes/axes are already visible, but not the data.

Describe the solution you'd like
I suggest to add some loading animation/indicator for the chart area.

Describe alternatives you've considered

  • only show a loading icon on each chart area
  • don't show the charts at all until loading is finished

Additional context
none

Squared Heatmap cells

Is your feature request related to a problem? Please describe.
Cells in Heatmaps are rectangular not square.

Describe the solution you'd like
Heatmaps would appear more fitting, if they were square. Maybe with an additional component property for cell spacing.

Describe alternatives you've considered
Leave them rectangular would be ok too.

Additional context
none

Width of charts after resizing

Describe the bug
incorrect display width of charts after resizing on ultrawide screen

To Reproduce

  1. Open third stats window
  2. bump window to the left (or right) edge of the screen, so it uses half of the screen
  3. restore the window to fullscreen view
  4. See an error

Screenshots
If applicable, add screenshots to help explain your problem.
image

System:

  • OS: Windows 7
  • Thunderbird Version e.g. 78.3.2 (64-Bit)
  • 2560*1080 resolution

Complete translation: Catalan

Provide the two-letter code of the existing language
ca

Provide the lines, that are still English and should be translated
24-25, 56-57, 60-61

Steps to complete the translation

  • Open the corresponding file, public/_locales/ca/messages.json
  • Translate all values of the given lines, that still have an English translation and create a pull request

Add translation: Thai

Provide the name and the two-letter code of the new language
Thai, th

Steps to add the translation

  • Add a folder public/_locales/th/
  • Copy the file public/_locales/en/messages.json to your new folder
  • Translate all values of that file (please leave the keys untouched!) and create a pull request

Complete translation: Galician

Provide the two-letter code of the existing language
gl

Provide the lines, that are still English and should be translated

  • 24-25
  • 32-33
  • 40-41
  • 44
  • 46-47
  • 71-72
  • 75-76
  • 81-82
  • 85-86
  • 93-94
  • 97
  • 100-101
  • 104-105

Steps to complete the translation

  • Open the corresponding file, public/_locales/gl/messages.json
  • Translate all values of the given lines, that still have an English translation and create a pull request

Proper responsive behaviour for featured numbers on small viewports

Describe the bug
When making Thunderbird very small, a horizontal scrollbar appears and the featured numbers section doesn't break into a two-row layout. Also the descriptions text breaks into multiple lines.

To Reproduce
Steps to reproduce the behavior:

  1. Open Thunderbird
  2. Open ThirdStats
  3. Make the window small
  4. See the above behaviour

Expected behavior
There should be breaking points (e.g. for 960px or 640px) where the featured numbers section jumps from one into two-row layout.

Screenshots
image

System (please complete the following information):

  • OS: Windows 10
  • Thunderbird Version 78.3.0 (32-Bit)

Additional context
None.

Add translation: Catalan

Provide the name and the two-letter code of the new language
Catalan, ca

Steps to add the translation

  • Add a folder named like the two-letter code of the language you want to add under public/_locales/
  • Copy the file public/_locales/en/messages.json to your new folder
  • Translate all values of that file (please leave the keys untouched!) and create a pull request

I can add this translation

Proper responsive behaviour for charts on small viewports

Describe the bug
When making Thunderbird very small, a horizontal scrollbar appears and the two-column chart layout doesn't break into a one-column layout.

To Reproduce
Steps to reproduce the behavior:

  1. Open Thunderbird
  2. Open ThirdStats
  3. Make the window small
  4. See the above behaviour

Expected behavior
There should be breaking points (e.g. for 960px or 640px) where the chart layout jumps from two into one-column layout.

Screenshots
image

System (please complete the following information):

  • OS: Windows 10
  • Thunderbird Version 78.3.0 (32-Bit)

Additional context
None.

Expand account list for local accounts

Is your feature request related to a problem? Please describe.
An (he calls himself) old school user is using local accounts for their emails, which aren't listed in the accounts list of ThirdStats.

Describe the solution you'd like
Include local accounts as well.

Describe alternatives you've considered
None.

Additional context
None.

Add translation: Simplified Chinese

Provide the name and the two-letter code of the new language
Simplified Chinese, zh-cn

Steps to add the translation

  • Add a folder named public/_locales/zh-cn/
  • Copy the file public/_locales/en/messages.json to your new folder
  • Translate all values of that file (please leave the keys untouched!) and create a pull request

No sent email recognition in local accounts

Describe the bug
In the local account I'm not able to define identities, so no mail is recognised as "sent by me".

To Reproduce
Steps to reproduce the behavior:

  1. Open ThirdStats page
  2. Select a local account containing emails
  3. See only received emails and no sent emails in ThirdStats

Expected behavior
A possibility to define email addresses as "sent from" for local accounts

Screenshots
None

System (please complete the following information):

  • OS: any
  • Thunderbird Version: 78.3.2 (64-Bit)

Additional context
None

Complete translation: Czech

Provide the two-letter code of the existing language
cs

Provide the lines, that are still English and should be translated
24-25, 56-57, 60-61

Steps to complete the translation

  • Open the corresponding file, public/_locales/cs/messages.json
  • Translate all values of the given lines, that still have an English translation and create a pull request

Complete translation: Italian

Provide the two-letter code of the existing language
it

Provide the lines, that are still English and should be translated
24-25, 56-57, 60-61

Steps to complete the translation

  • Open the corresponding file, public/_locales/it/messages.json
  • Translate all values of the given lines, that still have an English translation and create a pull request

Chart Generation Taking a Long Time (or not happening at all)

Describe the bug
Generating charts for my inbox seem to take a very long time (I have yet to see the charts actually display). Have waited for charts to appear, assuming it is because of my large inbox. But have waited for likely an hour with the tab open at this point and still no charts. The spinner is spinning so I assume something is happening, but I'm not sure if I should continue to wait or if it's a bug,

To Reproduce

  1. I click on the button to display the stats dashboard.
  2. The top-line stats display, such as: Mails total, Mails unread, Mails received, etc
  3. None of the charts display information. Just black where the charts should show up, the titles however are there.

Expected behavior
Expected the charts to appear and update as more information was processed, or the charts to show up faster.

Screenshots
Screenshot from 2020-09-30 13-28-49

System (please complete the following information):

  • OS: elementaryOS 5.1.7
  • Thunderbird Version 78.3.1 (64-bit)

Disalignment of Heatmap cells

Describe the bug
Heatmap cells are not properly aligned.

To Reproduce
Steps to reproduce the behavior:

  1. Open ThirdStats with enough data to see the HeatMap cells
  2. See error

Expected behavior
Proper alignment of all cells (no stair effects)

Screenshots
image

System (please complete the following information):

  • OS: [e.g. Windows 10]
  • Thunderbird Version [e.g. 78.3.2 (64-Bit)]

Additional context
none

Complete translation: Portuguese

Provide the two-letter code of the existing language
pt

Provide the lines, that are still English and should be translated
24-25, 56-57, 60-61

Steps to complete the translation

  • Open the corresponding file, public/_locales/pt/messages.json
  • Translate all values of the given lines, that still have an English translation and create a pull request

Add translation: Chinese

Provide the name and the two-letter code of the new language
Chinese, zh

Steps to add the translation

  • Add a folder public/_locales/zh/
  • Copy the file public/_locales/en/messages.json to your new folder
  • Translate all values of that file (please leave the keys untouched!) and create a pull request

Add translation: Italian

Provide the name and the two-letter code of the new language
Italian, it

Steps to add the translation

  • Add a folder public/_locales/it/
  • Copy the file public/_locales/en/messages.json to your new folder
  • Translate all values of that file (please leave the keys untouched!) and create a pull request

Light Theme

Is your feature request related to a problem? Please describe.
Currently only a dark theme is implemented. An additional light theme for light environments would be great.

Describe the solution you'd like
Light or dark theme styles, based on the user preferred color scheme. Can be realized with the CSS media query @media (prefers-color-scheme: dark).

Describe alternatives you've considered
An alternative would be the themes API, but that seems to bee too complicated. See https://thunderbird.topicbox.com/groups/addons/Tcbce37425677928e

Additional context
none

Additional Bar Chart: Emails per Month of Year

Is your feature request related to a problem? Please describe.
No problem. Just completing the already existing analytics.

Describe the solution you'd like
A bar chart showing the number of emails that occurred in that month, showing a possible dependency of emails on seasons of the year.

Describe alternatives you've considered
A possible alternative is just showing email count per quarter of year, but months would be more precise.

Additional context
None.

Add translation: Russian

Provide the name and the two-letter code of the new language
Russian, ru

Steps to add the translation

  • Add a folder public/_locales/ru/
  • Copy the file public/_locales/en/messages.json to your new folder
  • Translate all values of that file (please leave the keys untouched!) and create a pull request

Add translation: Portuguese

Provide the name and the two-letter code of the new language
Portuguese, pt

Steps to add the translation

  • Add a folder public/_locales/pt/
  • Copy the file public/_locales/en/messages.json to your new folder
  • Translate all values of that file (please leave the keys untouched!) and create a pull request

Complete translation: Thai

Provide the two-letter code of the existing language
th

Provide the lines, that are still English and should be translated
24-25, 56-57, 60-61

Steps to complete the translation

  • Open the corresponding file, public/_locales/th/messages.json
  • Translate all values of the given lines, that still have an English translation and create a pull request

Stats for single folders

Is your feature request related to a problem? Please describe.
Currently accounts are analyzed as a whole, it's not possible to have an evaluation of single folders.

Describe the solution you'd like
An additional select field (which can live e.g. in a corresponding filter section) to select a specific folder for evaluation.

Describe alternatives you've considered
None

Additional context
None

Add translation: Spanish

Provide the name and the two-letter code of the new language
Spanish, es

Steps to add the translation

  • Add a folder public/_locales/es/
  • Copy the file public/_locales/en/messages.json to your new folder
  • Translate all values of that file (please leave the keys untouched!) and create a pull request

Add translation: Traditional Chinese

Provide the name and the two-letter code of the new language
Traditional Chinese, zh-tw

Steps to add the translation

  • Add a folder named public/_locales/zh-tw/
  • Copy the file public/_locales/en/messages.json to your new folder
  • Translate all values of that file (please leave the keys untouched!) and create a pull request

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.