Closed nbeaver closed 3 years ago
Oh my, that looks dire 😱 - we weren't even fully working with the current Thunderbird haha. Would be nice if it was just like a couple APIs moving, but it always seems to be structural
I'm pretty swamped right now so if you or anyone has any takes on forward-porting, I'm more than happy to merge work / delegate commit power etc etc
I'd hate to see this add-on lose compatibility with the next release, but unfortunately I can't commit to spending a lot of time right now either and frankly the work looks daunting. The MailExtension API appears to lack equivalents to crucial functions like [handleFlagWithParam()
](https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsICommandLine#handleFlagWithParam()) and getMsgHdrForMessageID()
. A cursory look at the documentation is not encouraging:
When the term
messageId
is used in these documents, it doesn’t refer to the Message-ID email header. It is an internal tracking number that does not remain after a restart. Nor does it follow an email that has been moved to a different folder.
There is a place to ask for WebExtension API support:
but I doubt they would be implemented in time for the next release.
On the bright side, it looks like at one time there wasn't even an API for opening messages:
While you can query and manipulate emails quite well through the messages API, there is currently no way to just display/open an email returned by those APIs. There should be a WebExtension API to open a specific email, either in the current 3-pane page, in a new tab, or separate popup window [ . . . ] Since the messageId returned by browser.messages.query is internal and doesn't appear to relate to anything XUL or IMAP knows, there doesn't seem to be a way to work around this by using a custom Web Experiments API.
but it seems to be fixed now (maybe, I haven't checked):
A message can be displayed in either a 3-pane tab, a tab of its own, or in a window of its own.
https://thunderbird-webextensions.readthedocs.io/en/latest/messageDisplay.html
There's more information here:
The changes are for the general public only going to come into effect in the next ESR release, Thunderbird 78 in mid 2020. For developers, in beta and nightly support will start to disappear from core once we're ready do so, probably during 2019. Some notable things that will be removed are the custom overlay loader (Overlays.jsm), and support for add-ons requiring restart.
For add-on authors going forwards, there is of course also an option C (depending on what the add-on does): work with us to integrate the functionality into core. If the add-on is under the bug-fix category this is certainly the way to go as no API for a bug-fix would be in sight. In general we're happy to include functionality provided it's of general usefulness.
MailExtension Experiments is one way to go (and that's not deprecated), but should not be seen as a long term solution. It may be a short term solution though. It means you need to follow changes closely and things will often break. Sometimes in ways that could be hard to solve. They simply need to be understood to be seen as experiments, with no warranties.
https://mail.mozilla.org/pipermail/tb-planning/2019-October/007167.html
and here:
As earlier announced, the support for traditional add-ons has today been removed from Thunderbird nightly builds, going to beta soon.
Going forwards, add-ons need to be written as either MailExtensions, or MailExtension Experiments. The latter allows using XPCOM and other technologies used in traditional add-ons, but will be prone to breakage if you're not willing to keep up with what's happening in core development.
There are no changes for the 68.x series.
https://groups.google.com/forum/#!topic/tb-planning/f84qRnYgYLo
I've posted in the forum that seems to have the most active Thunderbird addon developers, and it looks like it will be possible to adapt the existing code:
this should be possible with experiments. I do think, the commandLine API would be a nice thing to have, so filing a bug would also be a good option.
Using an experiment would look like this: After you have created an experiment with some methods, you can call your own experiment in your background.js. Inside the experiment you have full "legacy" / privileged access.
Still looks like a big job, though.
Seems like just building it into core might be easier. It's not the most complicated thing (find this message-id...) it's not a far-out idea (Mail.app implements it natively) and it's useful (installed base here at least).
What would it take for this to be in core just as "open thunderbird with the message-id and it'll open the message in your default view" ?
All the fancy "configure how your link looks" is neat but not the important bit really, it could be handled some other way maybe
It would be great to get this functionality integrated into the core Thunderbird code. However, a feature request for mid:
and cid:
URL support has been in the bug tracker since 2004:
https://bugzilla.mozilla.org/show_bug.cgi?id=264270
so it's been on the todo list for a while. There's also backwards compatibility to consider: mid:
and cid:
support alone wouldn't make the thunderlink://
URLs work, and might not be activated via a -thunderlink
flag, which would break all the desktop integration. I've generated a lot of thunderlink://
URLs that I'd rather not have to convert, even if it would be a relatively mechanical process.
On the bright side, one of the lead developers has shown an interest in mid:
URLs as recently as November 2019:
https://bugzilla.mozilla.org/show_bug.cgi?id=457177#c17
However, I'm guessing we wouldn't get direct assistance from the maintainers and the onus would be on us to come up with a pull request that the maintainers would be willing to merge. That said, it wouldn't hurt to ask. My general impression is that the maintainers are less focused on adding features and more focused on bug fixes to the existing code and keeping up with Firefox releases, but if you know anyone who has a friend-of-a-friend that's a core Thunderbird developer, they might be able to help this along somehow.
Hello, I am also hit by this issue after upgrading to TB78. I'm afraid I don't have any useful skill to help, I just saw the extension "Copy Message ID" (https://github.com/garoose/copy-message-id) that does work with TB78. But I suppose opening TB with a specific message is the hard part.
I believe that's correct - this extension goes both directions - generating the links, and using the links. Trivial to get the message id to generate the link but getting thunderbird to "know" about a message id and resolve it, that's apparently broken
There's also backwards compatibility to consider: mid: and cid: support alone wouldn't make the thunderlink:// URLs work, and might not be activated via a -thunderlink flag, which would break all the desktop integration. I've generated a lot of thunderlink:// URLs that I'd rather not have to convert, even if it would be a relatively mechanical process.
Perhaps this can be solved at the thunderlink://
protocol registration step?
I dropped thunderlink several months ago and because of that mostly now use mu in emacs/orgmode to manage links since T78 upgrade. I find everytime I try to downgrade it upgrades itself again annoyingly. In the end I came to conclusion I have other options and can live without thunderbird.
I found two problems after upgrading T. One was the settings window became black on black and unusable and the second is links are not working.
I did take a pop at editing the configs as in the helpful thread of advice at the time but I did not get links to emails from T78 usable in orgmode as before.
I've sort of assumed that thunderlink is now "legacy" and can't be fixed for the way mozilla is organising things. If that is wrong and I should try again I'd certainly give it a go as Thunderlink is a utility that outshines its host app.
Christian
Mike Hardy writes:
I believe that's correct - this extension goes both directions - generating the links, and using the links. Trivial to get the message id to generate the link but getting thunderbird to "know" about a message id and resolve it, that's apparently broken
-- Christian de Larrinaga https://firsthand.net mu4e tool
I am, sadly, of the same opinion. It's a great loss for me but now instead of linking to mails with a click I effectively "mentally link" them by leaving enough breadcrumbs to search when I reference email, and then doing the search. It's basically crap and only works if I'm not sharing the links but I'm working solo right now so it works for me.
I wish it weren't so, and am still open to anything that would revive it but I have no ideas at present
Having only just discovered thunderlink, I'm reluctant to give it up. Is there a bug filed in bugzilla requesting the specific functionality required for thunderlinks? If not, that bug should be filed.
I'm not tracking anything, I haven't had time to be a good counterparty on an issue so didn't want to waste their time. If you do so that would be great though!
I am a very happy user of thunderlink for thunderbird. In fact it is a deeply embedded part of my day-to-day workflow. I am now on Thunderbird 68.12.0 but I will be forced very soon to 78.2.2 (due to OAuth2 authentication).
So I absolutely need this functionality in some form or shape.
Is there a way I can help? I have some overall program experience in C/C++/Python/Perl/javascript but nothing in the thunderbird add-on area.
Did somebody find out if there is any command line switch to open a specific message? (even if it is with an other identifier than the current one in thunderlink)
Any other ideas or ongoing actions to save this? Frankly spoken thunderlink is one of the major reasons sticking to thunderbird over the Outlook I am gently forced to.
I believe this issue contains everything we know. Which is sort of unfortunate because it means no one has found a way to open a specific message from the command line that I/we know of.
What's missing is the development effort (and coordination) to bring one of these home I think:
https://bugzilla.mozilla.org/show_bug.cgi?id=264270 https://bugzilla.mozilla.org/show_bug.cgi?id=457177#c17
Until thunderbird supports deep links to messages by id (somehow, anyhow...) we can generate all the links we want, but we can't open them
Has this been requested to the thunderbird team to address? I would need this thunderlink functionality as well!
I'm not sure this is of any help but this page:
https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Creating_a_Gloda_message_query
gives me the hope that it might be possible for an extension to trigger a global search using an id
or headerMessageID
attribute. I don't understand much of it though so I could clearly be wrong, but if this is indeed the case then a workaround could perhaps be to:
It wouldn't be as fast as having everything done at once when following the link, but perhaps good enough to be usable. The org-mode part shouldn't be very hard and I'd happily help with this.
This is just brainstorming ... I am not familiar with thunderbird add-ons
Suppose we know the 'Date' and 'Subject' (I suggest both to minimalize collisions), does the https://thunderbird-webextensions.readthedocs.io/en/latest/messages.html#query-queryinfo allow, along with https://thunderbird-webextensions.readthedocs.io/en/latest/messageDisplay.html allow to retrieve the message?
If so I can imagine building a db of ID=>(Date, Subject) to support such query+display.
Or isn't this the issue after all?
Very interesting, we're fixated on message-id's but abstractly stated what we need is "precise location of a specific message". message-id is obviously made for this, but I imagine if you use most of the query-able fields to generate a message fingerprint, it would serve just fine. You can pack a lot of textual data into a little gzip string that is then base64'd so you have the fingerprint as reversible ASCII for the link. They links would still be a little nasty in that form but they would work... in my workflow the link itself is the href behind an html A anchor so I wouldn't even mind the link nastiness.
I am open to any of these things, but I'll continue to be clear that I don't have to implement much at the moment, my apologies
I was playing around a bit with thunderbird and the webextensions. Locating messages on the basis of "date" and "sender".
I guess I only now fully appreciate the blocking issue : even if you do have the internals of a message through the webextensions interfaces, there seems to be no way to "go to the folder and display" the message.
You can dump it, you can get it in a pop-up, all fine, but just "going to it" seems to be blocking me.
Further hints, observations ?
@CamielBouchier if it's indeed possible to start a search that will display the message then wouldn't that be good enough?
Re my previous comment it had slipped out of my mind that using thunderlink with emacs' org-mode is not the only (or even the main) use case, sorry about that!
@ericdanan It would be already something, but not really good enough for my workflow. When it is displayed in the folder, you are seeing at once all the context (like when it is part of an email thread). Also, you can pick up the message immediately for forwarding, replying etc.... When just displaying it in a kind of popup this is all lost.
But when I start a global search it open a tab with the results like so:
Then I can click on the message to view it and it will display the conversation, allow to reply etc:
Perhaps your setup is different?
@ericdanan That is a different approach than I take. But assuming I can get the search result tab as you show it is some kind of an alternative. Currently I have nothing to show, just the internal structures (json) describing the message, the message-id, the folder etc ...
An update!
I have now a complete proof of concept working on my machine. It is still very rough, it is not as nice as 'thunderlink', but it does the job.
The principle is that I identify a message by the 'date', 'author' tuple. Both of which can be queried in the standard API. That tuple goes into a base64 string that is the identifier.
I have than a simple 'browser_action' (=button on thunderlink) that copies the identifier for the selected email-message to the clipboard. The implementation thereof is through an "experiment-api" (that name!) as such functionality is not in the API.
At the same time a python script is launched by the extension ('native messaging') that sits there listening to a socket and piping the message it might receive through to the web-extension. That message would be he above identifier. When the web-extension receives the message it navigates to the corresponding mail in thunderbird. This is again done through an "experiment api".
Finally that same script can be launched as command line (equivalent to thunderbird -thunderlink) with the identifier as argument. It then would send the identifier into the socket I mentioned above and that closes the loop.
At now it is preliminary and for sure not ready for showtime (neither does it have any configuration ... anyone knows how to do in the current API?).
If more interest and/or additional ideas, please let me know while I am working further on this.
The old 'thunderlinks' would not work, but I have a strong idea as how to script the conversion from old 'thunderlinks' to new 'cb_thunderlink'.
The biggest drawback against the old solution is for sure the additional need for Python. So it is not really a stand-alone add-on.
In any case, personally I am back in business with this functionality!
Camiel B.
Edit: I wrote this before seeing @CamielBouchier's last comment, which looks much more promising!
I see. There is a "sample extension" here:
https://github.com/thundernest/sample-extensions
that is able to open the search dialog, but it's the classic search not the global one, and I don't if it could be opened with a predefined search query, so may not be helpful.
Another idea perhaps could be to create a local folder folder and have the extension copy the message there when following a link. I suppose that would allow to reply etc, but not sure if it would break the conversation.
But feel of course free to disregard all of this, as I said I don't understand how things work internally at all.
Are you guys mostly Windows, Mac or Linux users? I am on Windows and now fixing some installer for Windows. Should my effort go into that, or into other OS'es? Linux I might manage somehow, Mac will be for someone else ;)
Camiel B.
@CamielBouchier thanks a lot for your effort! I am personally on Windows. If it can help that I test anything I'll be happy to do it.
@ericdanan (and other windows users).
In attachment you will find a zip file. Extract it to whatever place you want, I will call it /foo/cb_thunderlink
.
Open a dos command window as administrator and change directory to /foo/cb_thunderlink
and issue :
> cb_thunderlink.exe register
This will update your registry to connect thunderbird extensions with the python application and enable links such as cbthunderlink://SomeStringWithManyChars
Then, go to thunderbird and add the cb_thunderlink.xpi
file that is under /foo/cb_thunderlink
.
You should now be all set ... Select a message, hit the cb_thunderlink button, paste the link to a wiki or whatever. Click the link to check it works.
If any issue or problem, just let me know. All sources are included as well, case you wouldn't trust or want to give feedback.
Camiel B
@CamielBouchier thanks! A couple of questions before I test:
register
command will it be enough that I open the registry and delete everything matching "cb_thunderlink" or "cbthunderlink"? (I'm guessing that from cb_thunderlink.py
but am not sure)@ericdanan
Camiel B
OK. I gave it a try and am unable to register. When I issue cb_thunderlink.exe register
(your message says cb_thunderbird.exe
but that's a typo I guess) from an admin command prompt I get a popup "This app can't run on your PC. To find a version for your PC, check with the software publisher." I'm on Windows 10 version 2004.
Indeed the cb_thunderbird
was a typo.
The not starting is weird ... Any chance you are on a 32 bit windows? https://support.microsoft.com/en-us/help/15056/windows-32-64-bit-faq
No it's 64-bit.
That's puzzling. And the message clear as mud ;)
If you run as a normal user cb_thunderlink.exe register
, does that work?
That made no difference but I then downloaded and extracted the zip file again and that solved the issue. I was able to register and install the extension from the xpi file. I can confirm that copying a link works for me. Opening a link also works if Thunderbird is already running, otherwise nothing happens. Also opening the link doesn't give focus to Thunderbird if it doesn't have it already. But definitely usable!
@ericdanan Thanks for the feedback. The two 'issues' you mention do not come as a surprise. Solving them might be way more complex than it is worth ... Personally I have thunderbird always open when starting to use those links. Getting the focus might be possible to solve.
Oh, yes, what I forgot to say : I am now concentrating in the first place on automating the conversion from thunderlink to cbthunderlink. That is more important to me.
Camiel B.
Sure these are not really issues. I also have TB always running. I wonder though, since opening the link won't automatically start / switch to TB, wouldn't it be almost as fast to copy the link (including the cbthunderlink://
prefix), switch to TB, and have a keyboard shortcut or button to trigger decoding the link and showing the message? That would allow to get rid of the python script if I understand correctly.
Other comments after experimenting a bit with the code:
I noticed tat the "Copy Message ID" extension (https://github.com/garoose/copy-message-id) is able to copy to the clipboard without having an experimental API and I tested that it works here as well: I replaced messenger.cb_api.cb_copy_to_clipboard(link)
with navigator.clipboard.writeText(link)
in cb_bacground.js
and removed the code relating to cb_copy_to_clipboard
in cb_api.js
and cb_api_schema.js
.
Also from the "Copy Message ID" extension I got the idea that it might be clearer to have the thunderlink button with the other message buttons (reply, forward, etc). In particular this hides the button when no message is selected. I also tested that it works by replacing messenger.browserAction.onClicked.addListener
with messenger.messageDisplayAction.onClicked.addListener
in cb_background.js
.
For my purposes I needed to customize the link string that is copied to the clipboard. I am using the following for emacs: let link = "[[cbthunderlink://" + btoa(message.date.toJSON() + ";" + message.author) + "][Email from " + message.author + " on " + message.date + "]]"
. It is not perfect but usable.
Being able to convert thunderlinks to cbthunderlinks would be great (although I have no clue how this can be done if we are not able to retreive a message from its messageID). Again I am happy to help with testing if needed.
@ericdanan
Those are actually a bunch of interesting suggestions!
On the approach copy-the-link + shortcut : that more than likely would work and would get rid of the script. I am not going to work on it though:
On "Copy Message ID" : Thanks for the input, this is obviously the better approach to take.
On the link-string: Could be part of 'preference' settings, if and when I find out how to do ...
For converting the links I am taking following approach (which is nearly proof-of-concept ready): dumping all mailheaders (yes, that includes MessageID) in a sqlite database. Use that sqlite database in a Python script that runs over a file.
The latter has now priority for me as very soon I will be forced to a later TB version and I want to have a solution for my workflow by then. And time is limited ;)
Camiel B
@CamielBouchier @ericdanan
Actually, concerning the script, I think I could create an XPI that does your copy-paste approach ánd uses the script case it is there. Probably addresses all concerns. But meanwhile my todo-list around this little utility is growing faster than anticipated ...
Camiel B,
@CamielBouchier sure I understand your priorities. I could try to help with some easy bits if you want. For instance I can probably try implementing the copy-paste approach. Then I'm not sure how to test whether the script is there (I imagine perhaps checking whether the protocol is registered?) but if you have any idea on that I could again try to work it out. On options, I could again try to take inspiration from the "Copy Message ID" extension for instance. I can't promise I'll manage as I'm mostly imitating what I see without really understanding things, but happy to give it a go.
Are you thinking of distributing a separate "cb_thunderlink" extension, in which case you would perhaps put your code in another repo and I could send you PRs? Or do you see it more as a replacement for the current thunderlink that should perhaps live on another branch of this repo for the time being? Obviously that would also depend on what @mikehardy thinks.
Finally, I am still wondering whether now you have found a way to display the message once identified, it would be possible to keep identifying it by its Message-ID. As I posted above this page:
https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Creating_a_Gloda_message_query
suggests that it's possible to create a gloda search query for a Message-ID. But when I tried I couldn't even manage the preliminary step of importing gloda. I get an error "file does not exist" from:
Components.utils.import("resource:///modules/gloda/public.js");
I don't know if I'm doing something wrong or perhaps the information on that page doesn't apply anymore. I asked at https://github.com/thundernest/sample-extensions/issues/20 but I'm not sure if it's the right place.
@CamielBouchier sure I understand your priorities. I could try to help with some easy bits if you want. For instance I can probably try implementing the copy-paste approach. Then I'm not sure how to test whether the script is there (I imagine perhaps checking whether the protocol is registered?) but if you have any idea on that I could again try to work it out. On options, I could again try to take inspiration from the "Copy Message ID" extension for instance. I can't promise I'll manage as I'm mostly imitating what I see without really understanding things, but happy to give it a go.
Are you thinking of distributing a separate "cb_thunderlink" extension, in which case you would perhaps put your code in another repo and I could send you PRs? Or do you see it more as a replacement for the current thunderlink that should perhaps live on another branch of this repo for the time being? Obviously that would also depend on what @mikehardy thinks.
Finally, I am still wondering whether now you have found a way to display the message once identified, it would be possible to keep identifying it by its Message-ID. As I posted above this page:
https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Creating_a_Gloda_message_query
suggests that it's possible to create a gloda search query for a Message-ID. But when I tried I couldn't even manage the preliminary step of importing gloda. I get an error "file does not exist" from:
Components.utils.import("resource:///modules/gloda/public.js");
I don't know if I'm doing something wrong or perhaps the information on that page doesn't apply anymore. I asked at https://github.com/thundernest/sample-extensions/issues/20 but I'm not sure if it's the right place.
@ericdanan
Actually I do have the copy/paste approach ready over here in draft. Seems to work well. There is even no need to check the script. I just pretend it is there and if not it just gracefully fails on that part (and consequently it does not listen to incoming request for going to a link).
This one I can share by say tonight or latest tomorrow.
Subsequently I will look into configuration as well (particularly to address your [[link][blahblah]] thing. I have some ideas as how to do this a bit of generic. But if you would have working stuff on configuration that would be helpful!
On the distribution I have no idea yet. My last project I did really open-source was still on subversion ;-) But I guess I should set-up a public git repository indeed and learn a bit of git. Personally I am using mercurial on my PC, so that should be not too big of a leap.
On the Message-ID search I gave up and I am taking a different approach : convert message-id to cbthunderlink. So all my thunderlink://... will be replaced script-wise by cbthunderlink://... . I am now already able to generate a file with following entries:
cbthunderlink_id;message-ID
for all messages in thunderbird. Using that one the script for converting files is rather trivial.
CamielB
This is different enough from thunderlink that I think a separate repo would be best then I would subscribe to that one :-). I am listening either way, for my part I would focus as much as possible on not having external dependencies (e.g. python) as in my experience those turn into maintenance / user support generators, but that's just an opinion worth what you paid for it ($0 haha). Cheers
Well I think I have perhaps managed to make it work with a global search for the Message-ID (the one from the message header) so that there is no need to modify the link format and convert the old links. Here is my adaptation of @CamielBouchier's code:
I don't know how to generate the xpi
file so I just go to Add-on manager > Debug add-ons > Load temporary add-on and select the manifest.json
file. If you copy one of your old thunderlinks to the clipboard and then click on the cb_thunderlink
button, it should hopefully open it. @CamielBouchier I think it should work too when clicking an old thunderlink if you modify your script to simply send the thunderlink to TB.
@ericdanan
This is actually the way to go! (provided that this 'Gloda' is still some time around on the interfaces, someone knows?)
At first test it works with some minor tweaks to be done : thunderlink://messageid=xyz does not work due to messageid, but those are minor ones.
Also the ChromeUtils.import("resource:///modules/gloda/GlodaPublic.jsm")
does not work on my 67.12.0. Some later version is needed, we need to find out the minimum therefore.
The xpi is just a renamed zip. No issue.
Finally, how are we going to organise this? Are you taking over? Do I continue with your approach (+ my optional launch script)? Just let me know what you prefer and which copyright notice I should include in case I am using yours.
Camiel B.
Generating links (with a context menu on selected message) as well for cbthunderlink as thunderlink should work. Also accepting cbthunderlink and thunderlink should work. XPI only at this moment, no integration with python script to 'follow the links' yet.
https://github.com/CamielBouchier/cb_thunderlink/releases/tag/Release_0_2_0
Camiel B,
@CamielBouchier that's great! Generating and opening both thunderlinks and cbthunderlinks works for me on TB 78.3.1. Many thanks!
I was actually trying to put things together to be able to generate the links as well but I don't know anything about javascript so it would probably have taken me quite some time to craft some code not nearly as neat as yours.
So I don't think it would have been reasonable for me to maintain the addon by myself, but I am definitely subscribing to yours and will be glad to help with anything I can.
The first thing I can try to do is to send you a PR to impelment a settings page. There would only be the open_mode
at first but that would at least be a starting point to then add other settings (in particular customizing the copied link). Let me know if you'd like me to do that.
Oh well I see you already have a commit implementing the options page. I'll try to contribute in another way then.
@ericdanan
Thanks for your feedback!
Yes, I am locally done with the options page for the open_mode
.
Now working on configurable strings for your [[somelinke][some other stuff]] links.
Release will be however for tomorrow ... ;)
Camiel B.
@CamielBouchier how do you feel about me making an update to the docs here pointing at what appears to be the future of thunderlink? I was just barely keeping the old implementation on life support and more than anything just want more people to get more stuff done - seems like cbthunderlink is the ticket and is already a completed version of the total re-think and re-write I feared :-)
While testing out the OAuth2 support in the current beta version (77.0b3), I noticed that Thunderlink was no longer working. It looks like legacy webextensions are going away in the next release, based on other addon bug reports:
https://github.com/RealRaven2000/FiltaQuilla/issues/58
so making the jump to this next release might be challenging. I got console messages like this:
It looks like the next Firefox ESR release won't be until 2020-09-22. However, the update page for Thunderbird 78 says the next major release of Thunderbird will be in June 2020 (i.e. now), so I'm uncertain as to how urgent this is.
Warning: If you want to try out the new beta version, either make a new profile to use it with or make a backup of your profile (or both). Merely running the beta version will make the profile incompatible with Thunderbird version 68.