Using this userscript I made : git.kaki87.net/KaKi87/userscripts/protonmailWithoutAnnoyances
ProtonMail allows scheduling and snoozing messages for free at preset times, e.g. tomorrow, next Monday, this weekend, etc., and always at 8, but makes people pay to choose a customized date and time.
I had a hunch that this restriction might only be implemented client-side, so I tried modifying the value in DevTools for the first time, and I couldn’t believe it : that worked !
So, in order to automate this, I created a userscript that replaces the button press handler for the “custom” option, then lets you input whatever value you need, e.g. (next) Wednesday, (in) 30 minutes, (today at) 8 PM, Thursday at 7 (AM), etc.
Then, it lets the app believe that we’re gonna schedule using the tomorrow preset, until it intercepts the request and swaps the time value with the user’s choice.
Enjoy !


Thank you !
What about stuff that runs everywhere, including email clients ?
uBO for example, is a much bigger codebase that no random user is gonna read, yet it does run on ProtonMail and there’s no way to be sure no malicious person injected something in there to read people’s emails.
In addition, I also have userscripts that technically do run everywhere, but only do something concrete on some websites, that I don’t have a finite list of URLs for.
For example, Fediverse redirector is a userscript that redirects any Fediverse app instance to the user’s choice. But, any URL may be a Fediverse app, and I need to check it first. Same with Enhancements for Forgejo, this one adds features to Forgejo instances, but any URL could be a Forgejo instance.
Yeah, maybe I should add some comments, and also highlight the import of
createFetchInterceptor(still my own code but in a separate file for reusability).* Piracy 😉