Betterbird Blog

What’s going on in the project

What are you going to break next?

- Posted in Ranting by

After a string of bad design decisions, like turning the default view to threaded and removing connecting thread lines, moving the main menu bar to underneath the unified toolbar, and the recent folder naming disaster, the new kids on the block are now moving to the implementation of a feature that allows filtering on untagged messages. This was requested in 2011.

Betterbird had an initial implementation in version 91 in 2021 with a second button, called the "two button solution": enter image description here where a second button allowed selecting untagged messages additionally. This was replaced in version 115 by the ability to negate not only tags, but also the other filter buttons (unread, starred, in-address-book, etc.) as well as text filters: enter image description here

Thunderbird's director bagged on this implementation, as reported in an earlier post.

Now watching the now Thunderbird kids trying to implement the feature is a real disaster. At first, the suggestion to add a third selector to Any of / All of is put forward: Screenshot of untagged only

When a reviewer voices objection (quote):

I don't think this is the way to implement this. "None" is totally a different thing from AND/OR, and totally mess with the mental data model of the filtering.

he is swiftly removed. The patch author, now impersonates the UX team and replies:

The UX team analyzed this and they agree that this is an acceptable first implementation to add a very simple feature..

And then a well-meaning clueless employee suggests:

But I have a second idea: A virtual "untagged" tag. This additional tag is shown alongside the others and its default state is "not", to match the current behavior when tags mode is enabled, but users can flip it to show only messages without tags.

Wow, wow, wow, such genius. Only that this very same solution was considered and rejected in 2016. And there is more brilliance:

What was that sentence? "Perfection is the enemy of good" 😄 That's a long-standing Thunderbird principle: Wait (forever) until the perfect solution comes alone.

And then, in reply to a comment, You are aware that exclusions work today via right-click and that the excluded tag(s) is/are struck out? we have:

I don't see a strike out when I use shift

Dazzling, for sure, from someone who has been on the project from 24 years.

What's up next?

As you may know, the is a Betterbird subreddit at https://www.reddit.com/r/Betterbird/. Reddit offers to deliver content via RSS feeds by simply appending .rss to the end of a URL. So we're subscribed to two feeds:

  • https://www.reddit.com/r/Betterbird/.rss
  • https://www.reddit.com/r/Betterbird/comments/.rss

not because we love it so much, but to monitor support queries coming in via the channel.

A while ago we noticed that those Reddit feeds were in error, see picture above. So we went to debug this. Reddit was in fact replying to the request to fetch the feed with a 403 error "Forbidden". First we compared the behaviour with Thunderbird on a different profile, which actually worked. Goodness gracious, Betterbird wasn't better than Thunderbird? We couldn't rest until the issue was solved.

Carefully analysing the code changes in the Feeds code, we didn't see anything that would explain the different behaviour. So we went in with Mozilla's very helpful error console and looked at the requests. Here they are:

GET /r/Betterbird/comments/.rss HTTP/2
Host: www.reddit.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Thunderbird/140.6.0
Accept: application/atom+xml,application/rss+xml;q=0.9,application/feed+json;q=0.9,application/rdf+xml;q=0.8,application/xml;q=0.7,text/xml;q=0.7,application/json;q=0.7,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br, zstd
If-Modified-Since: Sat, 01 Jan 2000 00:00:00 GMT
DNT: 1
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

On our test with Thunderbird, we noticed that it sent:

GET /r/Betterbird/comments/.rss HTTP/2
Host: www.reddit.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Thunderbird/140.5.0
Accept: application/atom+xml,application/rss+xml;q=0.9,application/rdf+xml;q=0.8,application/xml;q=0.7,text/xml;q=0.7,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br, zstd
If-Modified-Since: Sat, 01 Jan 2000 00:00:00 GMT
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

Spot the difference? Yes, Betterbird also accepts application/feed+json and application/json since it supports JSON feeds, but more importantly the DNT: 1 header. That's the "do not track" header which gets sent when preference privacy.donottrackheader.enabled is enabled. And lo and behold, that preference was set in the profile that showed the error, but was not set in the profile used for testing with Thunderbird.

More information on Mozilla's "Do Not Track" an be found here.

So what's the take-away? Well, If something doesn't work, try it on a new profile first. You many have set a preference years ago and forgotten about it, and suddenly this preference becomes the determining factor of a new malfunction. But why suddenly a new malfunction? This is what AI had to say:

Reddit applies heuristic request filtering to unauthenticated RSS feed access. Depending on request headers, such as the presence of the DNT (Do Not Track) header, otherwise valid feed requests may be classified as automated traffic and rejected with HTTP 403. This appears to be part of Reddit’s general effort to limit uncontrolled scraping by non-browser clients, while still allowing access from regular browsers and well-known search engine crawlers.

In continuation of this post:

For decades, IMAP folder names were shown in Thunderbird with their name on the server, with the exception of localised versions, where standard IMAP folder names for special folders (Inbox, Sent, Drafts, Templates, Trash, Junk) were localised.

Every since the folder naming strategy has chancd in this ticket, users have been running a riot. The latest action is happening in this ticket. After Thunderbird's director lectured users why his way is the right way, and what was happening for more than two decades was wrong, users are getting increasingly frustrated. Here some quotes:

Director:

Regarding the folder names changing, that was a conscious decision and a wanted change to mitigate the problem of inconsistent naming from different servers.

Users:

Censorship already killed this comment: Like myself and my wife and my associates and we have have being doing it since email was invented. Many of us have multiple work, personal, family, etc, etc accounts and the braindead change just makes our lives a little bit more miserable. Thank-you for making decisions for us. It really helps. NOT!

When clicking that Spam folder, what I do see in the status bar is 'Opening folder Bulk'. Also, the Folder Properties for the folder now called 'Spam' show a 'Bulk' folder in the Location field. How is this consistent?

Not to mention the subscribe panel.

Sarcasm: Thanks for "mitigating" all my problems. Much improved user experience. 10/10 ⭐ multiple folders with the same name

I [...] hope this useless change will be reverted.

More sarcasm: what a mess! fantastic idea, really genius ...

This is an idiotic change, more dev-nanny assumptions about what users want. [...] This is not at all useful. Please fix this BACK!

multiple folders with the same name

Latest update: Now the proposal is to go back to the original state, see this ticket. Do they know what they're doing?

In this Bugzilla comment, Thunderbird's "Director, Desktop & Mobile Apps" Mr. Alessandro Castellani, writes (quote):

"Apologies for dropping the ball on this, we were working on a million other things 😅"

Let's see what other balls he or the project dropped in no particular order:

just to name a few from the last few years.

He goes on to bad-mouth Betterbird features, like the advanced "Quick Filter" which allows not only to invert tags, but also other buttons (unread, starred, in-address-book, etc.) as well as text filters. He calls that (quote):

"weird hidden CTRL+click and ugly red bars UI".

Well, Alex, we will see how well your proposed solution will work when it arrives in 2037. Apparently you're dusting off the original solution from 2016, which was rejected back then. Have you realised that "weird hidden Ctrl+Click" UI is already present today when negating individual tags? And the strike-trough already exists, too.

As for his (quote): "I will also add a bunch of tests for this feature". Perfect, also, please instruct your release management to actually look at test results before shipping a release. Many time releases get shipped without analysing permanent test failures.

And what are the million things you've been working on? To the deliver the second rewrite of account creation, that was so bad that it had to be disabled in the ESR version? Or rewriting the calendar UI yet again? How about making sure that Thunderbird users will live long enough to see features that have been requested for 20+ years, some going back to the past millennium.

So funny that our project's CEO actually took part in hiring Alex for the project back in 2018.

We already talked about ghost menus in this article. Here is some more information.

For some users these ghost menus (occasionally) happen, when this Windows performance option is selected: enter image description here

This setting determines the internal value of preference ui.prefersReducedMotion, for those interested in code, this can be found here. The problem in Betterbird was that we exposed the preference, and set its value to 0 with the effect that the system behaved as if the Windows performance option were set. Since Betterbird 140.6.0 the preference is no longer set and its internal value depends on the Windows option again.

To get rid of the ghost menus there are three options:

  • Switch off the Windows performance option
  • Set preference ui.prefersReducedMotion to a value of 1
  • Set preference widget.windows.mica.popups to a value of 0.

The root cause of the issue is that the newly introduced translucent mica menus aren't stable enough in the Mozilla platform code at version 140. Users who wish to have animation should switch off those menus. In later versions of the Mozilla platform code, the problem appears to be fixed.

Thunderbird Release channel version 146 brings fresh regressions directly to your desktop. Check them out, blank parts of the UI and inconsistent naming:

Blank labels

Blank labels

This bug was reported by Thunderbird's internal QA team, good on them, a volunteer developer fixed the issue, and Thunderbird's release manager refused to ship the fix in the Release version. It's a bit like in this Dilbert cartoon:

enter image description here

And the folder name saga continues, this was already covered here. Mileage varies depending on mail provider and localisation. Here shown for a Gmail account. On the left, the folder tree, on the right, the folder name in the Subscribe panel, which is typically the folder name shown in the provider's web UI: Gmail folder names

Follow-up here.

Mozilla Profiles

- Posted in Support by

(Disclaimer: Parts of this article are copied from our support page.)

Profiles are by far the most misunderstood features of all Mozilla-based software, like Firefox, Thunderbird and Betterbird. A profile contains the configuration data for these programs; for Firefox, for example, booksmarks, browsing history, cookies, website passwords, add-ons, etc.; for Thunderbird and Betterbird, all mail data, account configuration and other conficuration data, passwords, calendar and chat data, add-ons, etc.

Thunderbird and Betterbird store the profiles in the following locations:

  • Windows: C:\Users\<user>\AppData\Roaming\Thunderbird\
  • Linux: ~/.thunderbird/. Flatpak installations use so-called sandboxing and the profile is stored under ~/.var/app/eu.betterbird.Betterbird/.thunderbird. Please refer to the Flatpak documentation for details, there you can also find how to allow a Flatpak installation access to ~/.thunderbird/.
  • Mac: /Users/<user>/Library/Thunderbird/

To manage profiles, you can use the Profile Manager, which is launched when starting Betterbird with the -p option. This is different for the various operating systems:

  • Windows: "C:\Program Files\Betterbird\betterbird.exe" -p, or simply use Windows+R:
    Windows Run
  • Linux: /path/to/the/executable/betterbird -p
  • Mac: /Applications/Betterbird.app/Contents/MacOS/betterbird -p

Another option is to view all profiles via Help > Troubleshooting Information. Click on the about:profiles link which will take you to a tab where you can select a different default profile or create a new profile. In Troubleshooting Information you also find a button to open the profile folder in your configured file explorer: enter image description here

The next thing you need to understand that Firefox/Thunderbird 68 introduced the principle of "Profile per installation", that means if you install the software into a different location, it will no recognise a previously used profile, but you can still select it in the profile manager. Also, if you run a higher version of the software, a lower version will then refuse to open the same profile. This error is shown: older version error This can be overridden by using the command line option -allow-downgrade which is best combined with -purgecaches, resulting in a total of: betterbird -p -purgecaches -allow-downgrade. Alternatively you can delete compatibility.ini from your profile. If you intend to used the Developer Toolbox, you must delete chrome_debugger_profile/compatibility.ini.

Warning: Higher versions of Thunderbird/Betterbird make irreversible upgrades to the profile which may cause malfunction when opening the profile with a lower version. For example, Thunderbird 146 migrates password storage from logins.json to logins.db, so when downgrading you need to re-enter all your passwords (or restore the previous logins.json file).

Further tips

The "profile registry" is contained in the file profiles.ini in the directory given in the start of the article. This directory also stores a file installs.ini which is used to enforce the "Profile per installation" principle. Deleting installs.ini and compatibility.ini with allow you to select any profile in the Profile Manager without additional command line switches.

Reading profiles.ini: You can open the file in a text editor. Take great care editing the file, since on single mistake will make all profiles inoperational. We're just mentioning it, so users can inspect the file and become aware of profiles stored with a relative or absolute path. The former looks like this:

[Profile2]
Name=Testing
IsRelative=1
Path=Profiles/0l426a83.Testing

The latter looks like this:

[Profile3]
Name=Testing2
IsRelative=0
Path=D:\Mail-storage\h8fmflf2.Testing2

In conjunction with deleting installs.ini it is also possible to delete all [Install....] sections from profiles.ini.

Portable "Installations"

Portable installations don't take part in the overall profile management. Their profile is stored next to the executable (core folder), and the executable is launched with the -profile switch to use the portable profile. Do not intent to use portable profiles with an installed executable, or "registered" profiles with the portable executable. Do not launch the portable executable with the -p switch.

Release 140.6.0esr-bb15

- Posted in Releases by

We've shipped Betterbird 140.6.0esr-bb15 today. Please refer to the Release Notes for full details.

Update 8th December 2025: We had to replace the entire release with "build2" since advancing the Thunderbird "fix" for an IMAP bug introduced random crashes. On closer inspection, that code change is likely to have undesired effects, including crashes.

We've addressed issues reported by users in the last four weeks and implemented some new features.

First and foremost, to fund the project, when launching this version for the first time, it will open the end-of-year donation drive page in your browser. Unlike Thunderbird, which is constantly nagging, we're asking for donations this way only once a year in December.

A user who is migrating from Postbox motivated some improvements to the search functionality, see this post for details.

Some of the fixed bugs that were related to searching, for example we rectified and issue that prevented encrypted S/MIME messages to be indexed; a feature introduced in Betterbird 115.

Miscellaneous fixes include missing localisations, where the program talked about Thunderbird instead of Betterbird, and a fix for the much-dreaded "phantom menus" mentioned here. Users of "attachments on top" in the compose window can now reduce the height of the addressing header when many files are attached.

Feature: CardDAV categories

- Posted in Feature Requests by

Categories in the address book have been requested since 2001, however, they were never implemented. Outlook has them, the CardBook add-on provides them, but an implementation attempt of 2022 stalled over some UI discussion.

Some noteworthy quotes:

Just goes to show what promises by the Thunderbird folks are worth.

We've dusted off the solution that was presented back in 2022, but it's only 40% finished. You can capture categories, as the image shows, but there are not visible elsewhere, like in the list view or in search results (Edit > Find > Search Addresses...). So if you're interested in the feature, please get in touch and pledge your financial support.

Update: We added the missing bits: List view, both as cards and table; search, both quick and advanced.

List view

Advanced search

Download: Use "latest build" from the Release Notes page. It will ship officially in version 140.7.0.

Update 11th Dec. 2025: We've tested this now on a real CardDAV server at our hosting provider Hetzner with NextCloud using vCard 4.0. It works. Just for general information, here a table of what works and what doesn't:

Provider / Server CardDAV Support vCard Version Categories Support Notes / Caveats
Google Yes vCard 4.0 (server-side labels) ❌ `CATEGORIES` ignored Uses “labels” internally; any `CATEGORIES` sent by client are dropped; not visible in web UI
Apple iCloud Yes vCard 4.0 ✅ Preserved Supports multiple categories per contact; fully visible in web UI and macOS/iOS clients
Nextcloud (old versions) Yes vCard 3.0 ❌ `CATEGORIES` dropped vCard 3.0 doesn’t formally support `CATEGORIES`; any `CATEGORIES` sent by client are likely dropped
Nextcloud, SabreDAV Yes vCard 4.0 ✅ Preserved Supports multiple categories per contact
Outlook.com / Microsoft 365 ❌ No native CardDAV vCard export only ✅ Inside Microsoft ecosystem Categories exist in Outlook desktop/web/mobile, but not exposed via CardDAV/vCard; not interoperable

Thunderbird 140.6.0 ESR is due next week, so the Thunderbird folks are building it. Surely, something went wrong again, as the picture shows. But that's not what we're there to talk about. We're here to talk about software quality.

Question: How make fixes are included in their version 140.6.0 ESR compared to the previous version 140.5.0 ESR? Answer: Zero, nothing at all. Despite 72% of users still using the ESR version as compared to 25% of users on the buggy "Release" version (source: Desktop ADI: 72% on 140esr, 25% on Release, 3% on other), the ESR version is largely neglected while they keep flogging the regression-ridden "Release" version, see here, here and here. Betterbird on the other hand is including about 80 fixes in Betterbird 140 which the Thunderbird folks could easily ship in their version, too. But they established this ridiculous "backport" policy, where only fixes for severe issues are backported, so all the annoying regressions are left unfixed, and this applies to their "Release" version, too.