Before creating a new spam classifier retraining interval,
we need to clear any already existing retraining setInterval calls
in the SpamClassifier.ts.
All ProcessInboxData should have a valid classifierType, if classified
by our spam classification model. We always need to set
ClientClassifierType.CLIENT_CLASSIFICATION in this case.
Co-authored-by: jomapp <17314077+jomapp@users.noreply.github.com>
From now on, we save the trained SpamClassificationModel for each
mailGroup (mailbox) to the IndexedDB on the webApp. On devices where
OfflineStorage is available, we save it to the OfflineStorage. This
separation is handled by the SpamClassifierStorageFacade.
This commit furthermore fixes a bug, where the metadata, such
as lastTrainedFromScratchTime and lastTrainingDataIndexId were not saved
per mailGroup (mailbox), but instead only globally. We now bundle them
with the SpamClassificationModel as SpamClassificationModelMetaData.
When removing a group membership with GroupType.Mail the
CustomUserCacheHandler does now also remove any stored
SpamClassificationModel corresponding to this mailGroupId.
Co-authored-by: jomapp <17314077+jomapp@users.noreply.github.com>
Co-authored-by: das <das@tutao.de>
since we're removing the age checkbox from signup, we have
to add it to the usage test opt-in since we can't get consent
for that from someone that's 15 or younger (it has to be a legal
guardian).
We accomplish this by adding the checkbox as a required step to activate
usage tests from the news item and with a new dialog that asks for
confirmation after selecting "Activated" in the settings.
General
- Do auto-login after the signup completion
Only create persistent session after recovery code was shown
- Extend new account creation process to cover gift cards
Language
- Use the website's language when it is passed by the query param
- Add language selector in the login page
- Make dropdown to resize dynamically on filtering
- Replace dropdown filter input with `SingleLineTextField`
- Reverse dropdown content based on render-direction (up/down)
- Add a Link style dropdown selector for LoginInfoLinks
Plan selector
- Fix plan selector to remember the selected plan during the flow
Form
- Disable button when checkbox is missing in the signup form
- Remove age checkbox from signup form
- Remove privacy policy checkbox from the Terms of Service agreement
Payment page
- Refactor Payment Switcher and remove PaymentMethodInput.ts
- Auto-continue on Paypal account connection
- Save Paypal billing agreement as shares state after connecting
- Update Countrylist to be all in english Deutschland -> Germany
- Re-enable country locator service to show the correct country
Co-authored-by: nig <nig@tutao.de>
Co-authored-by: toj <toj@tutao.de>
Co-authored-by: yoy <yoy@tutao.de>
Co-authored-by: hak <hak@tutao.de>
Downloading all mail details of relevant mails were causing the Android
app to crash in case there are too many mails. Now we download the mail
details of the mails in chunks to make sure we don't consume too much
memory.
Co-authored-by: jomapp <17314077+jomapp@users.noreply.github.com>
From now on, we initialize the existing spam classification model
already onPartialLoginSuccess, to be able to do predictions as early
as possible. Additionally, while retraining a model, we keep the old
model to allow predictions while retraining is still ongoing.
Re-training as well as full training now happens only after the sync
is done, as indicated by the SyncTracker.
Co-authored-by: abp <abp@tutao.de>
Some local shortcuts (e.g., Ctrl+A) were overlapping with others because
we were checking shortcuts using keyCode, which differs across keyboard
layouts (e.g., the keyCode for 'A' on AZERTY is `KeyQ`). Fixed this by
checking the key instead of Keycode on latin keyboards.
Close#5179
Co-authored-by: hrb-hub <181954414+hrb-hub@users.noreply.github.com>
In case server delivers a mail to the spam folder, it was possible that
the client spam classifier classifies it as ham and moves it to the
inbox folder. In that case, those mails would end up staying in inbox
even if there are inbox rules suitable for them. This commit fixes that
and applies inbox rules to mails landing in spam.
Co-authored-by: jomapp <17314077+jomapp@users.noreply.github.com>
When the webgl backend is not available or unsupported,
we fall back to the tensorflow cpu backend.
Tensorflow cpu backend library review by abp and jhm.
Co-authored-by: jomapp <17314077+jomapp@users.noreply.github.com>
We want to make sure that all relevant clientSpamTrainingData is
uploaded correctly for each mailbox. Previously, if
clientSpamTrainingData was not empty for a mailbox, we would not upload
more training data. This led to cases where users do only have a
fraction of training data in comparison to mails available in their
mailbox. We now check if the length of the already existing
clientSpamTrainingData is smaller than the number of relevant mails
for training when training from scratch.
Co-authored-by: abp <abp@tutao.de>