Commit graph

89 commits

Author SHA1 Message Date
abp
601e5bbd31
fix dist build
Co-authored-by: map <mpfau@users.noreply.github.com>
Co-authored-by: das <das@tutao.de>
2025-10-24 10:07:04 +02:00
sug
f11e59672e
improve inbox rule handling and run spam prediction after inbox rules
Instead of applying inbox rules based on the unread mail state in the
inbox folder, we introduce the new ProcessingState enum on
the mail type. If a mail has been processed by the leader client, which
is checking for matching inbox rules, the ProcessingState is
updated. If there is a matching rule the flag is updated through the
MoveMailService, if there is no matching rule, the flag is updated
using the ClientClassifierResultService. Both requests are
throttled / debounced. After processing inbox rules, spam prediction
is conducted for mails that have not yet been moved by an inbox rule.
The ProcessingState for not matching ham mails is also updated using
the ClientClassifierResultService.

This new inbox rule handing solves the following two problems:
 - when clicking on a notification it could still happen,
   that sometimes the inbox rules where not applied
 - when the inbox folder had a lot of unread mails, the loading time did
   massively increase, since inbox rules were re-applied on every load

Co-authored-by: amm <amm@tutao.de>
Co-authored-by: Nick <nif@tutao.de>
Co-authored-by: das <das@tutao.de>
Co-authored-by: abp <abp@tutao.de>
Co-authored-by: jhm <17314077+jomapp@users.noreply.github.com>
Co-authored-by: map <mpfau@users.noreply.github.com>
Co-authored-by: Kinan <104761667+kibibytium@users.noreply.github.com>
2025-10-22 09:40:45 +02:00
das
d76fcc6775
Add tensorflow.js library
Reviewed by jhm, abp, das.

The library is added to support training a spam classification model on
client. A custom rollupTensorFlow was created to only use the needed
methods on the final file, which also has multiple stubs which remove
code which is unwanted such as Requests.

Co-authored-by: jhm <17314077+jomapp@users.noreply.github.com>
Co-authored-by: abp <abp@tutao.de>
2025-10-22 09:25:20 +02:00
bir
5592c69125 Use material 3 colors for whitelabel
- Remove the ability to customize all colors, instead only allowing the
user to choose the base theme (light/dark) and the source color from
which the theme will be generated.
- Adjust newToOldColorTokenMap to correctly render new Material 3 theme
on old clients.
- Generate new Material 3 theme from old whitelabel config for non admin
users.
- Migrate whitelabel to new Material 3 theme post login of admin.

Close #9459

Co-authored-by: paw <paw-hub@users.noreply.github.com>
Co-authored-by: hrb-hub <hrb-hub@users.noreply.github.com>
Co-authored-by: ivk <ivk@tutao.de>
2025-09-26 14:15:49 +02:00
toj
de1f33df1c [build] move ratings-related code from data-gui to settings chunk
we're using it from pretty much all apps and views. settings already
contains a lot of termination, upgrade and signup related code.
2025-09-08 16:21:14 +02:00
toj
fb0e3feb4b Add BotD Library and implement clientside webdriver detection.
Co-authored-by: yoy <yoy@tutao.de>
Co-authored-by: nig <nig@tutao.de>
Co-authored-by: toj <toj@tutao.de>
2025-09-08 16:21:14 +02:00
paw
1e53ef7c5e Remove winreg, use WindowsRegistryFacade
We use the REG command to manipulate/query the Windows registry.

Also adds CommandExecutor so that we have a nice, unit-testable way to
execute commands.

Closes #9398
2025-08-29 10:26:11 +02:00
toj
6206d033e2 [build] add pow worker bundle to buildWebapp
Co-authored-by: nig <nig@tutao.de>
2025-07-11 14:43:12 +02:00
and
24b6646fcc Fix imports and rename common/calendar/import to common/calendar/gui
Lazyload EventBannerImpl.ts to allow EventBanner.ts to stay with MailView
Adds a new directory mail-app/gui/date to date-gui chunk allowing calendar
related ui to stay inside mail-app folder structure.

Co-authored-by: ivk <ivk@tutao.de>
2025-07-10 14:14:02 +02:00
ivk
44cec5a9a3 Remove @types/linkifyjs
linkify ships with types, but we have to use correct package name
2025-06-05 14:03:52 +02:00
ivk
fba2b284ec [desktop] Use @signalapp/sqlcipher fork for db
Co-authored-by: paw <paw-hub@users.noreply.github.com>
2025-06-04 10:37:52 +02:00
wrd
90e5a239d9 Use date instead of number for OfflineTimeRange, connect to search
Search extends range on login based on the OfflineTimeRangeDate

Extending search range extends OfflineTimeRangeDate

Co-authored-by: ivk <ivk@tutao.de>

Close #8549
2025-06-04 10:36:46 +02:00
Julian Gödde
58c57736b6 fix bundling
Co-authored-by: yoy <yoy@tutao.de>
2025-05-15 10:36:31 +02:00
Kinan
edbf281b88
switch to typeIds and attrIds, add SystemMV126, TutanotaMV86, BaseMV2
Refactor our instance deserialization/serialization pipeline, both on
TypeScript and on Rust [sdk] to use typeId and attributeIds instead of
typeNames and attributeNames. We furthermore ignore cardinalities
on associations until the instance layer and always
store associations as arrays. This commit introduces **eventual
consistency** on the client, i.e. we are from now on always storing data
in the newest schema format (activeApplicationVersionsForWritingSum)
which ensures that all data is already available on the client after
updating the client to a newer version. This removes the need for
offline migrations on the client and also removes backward migrations
on the server. Furthermore, the server model types are now available
on the client, retrievable through the ApplicationTypesFacade. This is
our first step towards FastSync.

Co-authored-by: nig <nig@tutao.de>
Co-authored-by: abp <abp@tutao.de>
Co-authored-by: jomapp <17314077+jomapp@users.noreply.github.com>
Co-authored-by: map <mpfau@users.noreply.github.com>
Co-authored-by: sug <sug@tutao.de>
Co-authored-by: Kinan <104761667+kibibytium@users.noreply.github.com>
2025-04-28 12:44:35 +02:00
mab
7e78fccce1 Fix key verification dependencies for prod build 2025-03-19 15:01:40 +01:00
Julian
a3cc182413 feat: add Tuta's 11th birthday offer
To celebrate Tuta's eleventh birthday, there will be a special offer from 2025-03-26 10:00 CET until 2025-04-05 23:59 CEST. The Legend plan will be offered at the price of the Revolutionary plan.

- Tuta birthday offer added to theme engine
- Reintroduced Tuta Birthday promotion pricing for App Store subscriptions

Resolves #8623

Co-authored-by: cag <cag@tutao.de>
Co-authored-by: yoy <yoy@tutao.de>
Co-authored-by: jug <129423545+jgoedde@users.noreply.github.com>
Co-authored-by: arm <armhub@users.noreply.github.com>
2025-03-18 15:06:43 +01:00
yoy
7435f004ee Update allowed imports 2025-01-31 10:08:51 +01:00
ivk
b3147c23ed Mailbox export: downloading & persistence
Remove unused method from FileFacade

Co-authored-by: wrd <wrd@tutao.de>
2025-01-27 12:02:44 +01:00
ivk
7f15a755e3
Cache wasm2js output. Switch dist builds to esm. 2025-01-13 10:05:18 +01:00
jug
9a686a5aa6 Add iOS in-app rating mechanism
- Own dialog, then, if user is happy, open native iOS in app rating dialog
- Triggers:
-- After using the app for minimum 7 days, we can show the dialog after the user created three events / after three mails
-- When the user did 10 activities within a 28-day period. (sending and email creating event. )
-- After succeeding the paywall
- Use device config to store data needed to trigger the dialog
- Added tests
- Added method to get the native app's installation date (Android & iOS)
- Added comment about `SKStoreReviewController.requestReview()` deprecation

Co-authored-by: arm <armhub@users.noreply.github.com>
Co-authored-by: jat <jat@tutao.de>
2024-12-03 10:42:38 +01:00
jug
002d37172e Add cyber monday deal to pricing selector
- The legend plan shall be sold for the price of revolutionary during
the cyber monday week
- Added a golden color to the builtin themes
- Changed the order of plans to highlight the legend plan better

Co-authored-by: jat <jat@tutao.de>
Co-authored-by: arm <armhub@users.noreply.github.com>
Co-authored-by: jug <jug@tutao.de>
2024-11-12 10:55:27 +01:00
and
51fd8c1a3b [Calendar] Birthdays preview shows contact information
This commit makes birthday events preview show contact info as a pop-up
with pre-defined actions such as send email and call phone number.
2024-10-18 09:35:45 +02:00
and
498fb68ffa Fix RollupConfig to disallow date -> boot dependency 2024-10-17 11:08:48 +02:00
ivk
75f81ca582
Fix login after clicking on email notification
After rebase of restructuring for app split we were left with two
versions of `openMailbox()`. The one that supports opening mails was
not used anymore.

We swapped the implementation for a real one, moved it into the mail
part of the source tree and refactored both `openMailbox()` and
`openCalendar()` to be classes with injected dependencies.

Fix #7650

Co-authored-by: hrb-hub <181954414+hrb-hub@users.noreply.github.com>
2024-10-02 13:51:22 +02:00
wrd
f99bd69ff0 Move indexer and mail search to mail-app 2024-09-23 16:49:37 +02:00
mup
ce505ea8ca Adds import button to Calendar attachments
This commit adds the import action to attachments with the ics mime.
2024-09-23 16:49:06 +02:00
jat
846ad7cd49 [mobile] Ask for the permission when switching notification settings
This adds a dialog containing the contents of the notifications page
of the onboarding wizard. This new dialog is displayed when switching
the current extended notification setting via the rich notifications
news item or the settings page.

Co-authored-by: wec43 <162116343+wec43@users.noreply.github.com>
2024-08-06 16:00:36 +02:00
mup
bbb0b62e3b Moves common functions between worker and app
This commit moves some functions that are used in both App and Worker.
Also renames CommonMailUtils to SharedMailUtils.ts because there share
functionalities between both apps and creates a new file CommonMailUtils
to store functions that are common between app and worker.
2024-07-30 14:27:45 +02:00
mup
e5a284ed72 Add separated ESBuild for calendar build
This commit adds an argument to ESBuild allowing to choose between
mail app or calendar app
2024-07-29 14:44:20 +02:00
mup
b7d04d191b Adds RollUp config for Calendar build
This commit implements the production build script of Calendar's webapp.

Calendar app contains user management, so this commit also moves
settings page files that are related to it to the common chunk.
2024-07-29 14:44:19 +02:00
and
418b9bc3f9 [Calendar] Clean project code
Co-authored-by: Murilo Pereira <34790144+murilopereirame@users.noreply.github.com>

This commit fixes the Build scripts and missing imports
from rebase. Fixes tests after apps split, and This commit fixes the
Android project changing the gradle task used to build the Android app.
Also fixes some import errors caused by the rebase.
2024-07-26 16:43:00 +02:00
mup
2b61600397 [Calendar] Fix rollup and imports 2024-07-26 16:43:00 +02:00
wrd
d279d0b775 open calendar view on startup
Co-authored-by: rih <rih@tutao.de>
2024-07-26 16:42:15 +02:00
wrd
8ab3b14edd Move files to new folder structure
Co-authored-by: @rih-tutao
2024-07-26 16:42:13 +02:00
ivk
ad83f751b2 Extended notification preview, change credential encryption
Implemented extended notifications which include the sender.

Re-implemented credential encryption and storage, moved credential
data to the native storage, changed credential encryption on mobile to
always be device lock + implement app lock independently of encryption.

Re-implemented SSE on desktop in a more modular way.

Re-organized iOS app to share the code between the main app code and
app extensions.

Close #6608

Co-authored-by: wec43 <wec@tutao.de>
2024-05-22 14:10:08 +00:00
mup
4dd743dfa0 Fix Tests for Fallback
Adapt the tests to work with the new format of loading the fallback and
the wasm files. This commit also fixes the ESBuild function to correctly
resolve the fallback and generate it.

Remove the hardcoded make command and add the option to use a provided
command instead of make. Also adds the possibility to provide env vars
and a working dir for Wasm generation.
2024-05-22 08:47:10 +00:00
mup
74ebf6834d Add Wasm fallback generation to build process
This commit adds the generation of WASM files and their respective
fallback to the build process.
2024-05-22 08:47:10 +00:00
Murilo Rocha Pereira
443c0fd56f
Moves Setup Wizard to it owns chunk (#6879)
* Moves Setup Wizard to it owns chunk

Setup wizard is only needed on native devices such Android and iOS,
with that in mind, this commit moves the whole setup wizard to it owns
chunks, so it can be loaded on demand and isn't automatically loaded in
desktop or web app.

Closes #6844

* Add missing translation
2024-04-26 08:48:25 +00:00
nig
2f79e28bce split off invoice chunk
saves ~27kB (uncompressed) or ~13% off the worker chunk that we really
only need once we want to download an invoice.

tutadb issue 1458
2024-01-22 12:17:29 +01:00
nig
212ce6720f remove keytar 2024-01-18 14:23:01 +01:00
ivk
9b1e3edbae Reconcile CryptoErrors
Introduces a new package in order to avoid tutanota-crypto depending
on the whole tutanota-utils. With this package we can have one canonical
CryptoError.

We add another entry point to tutanota-crypto in order to be able to
import only error classes from any chunk.

We've adjusted moduleResolution for tsconfig to support export maps
for our new entry point.

We've updated @rollup/plugin-typescript to add support for export maps.

We have reorganized utils to adjust the chunking. Error utils are now
a part of the main chunk.

We have moved ServiceWorkerClient into the main chunk because we need
to handle the errors and also because it is anyway invoked only after
the other initialization is done.

close #6342
2024-01-18 14:23:01 +01:00
nig
0fb640f112 fix code chunking in calendar
main changes:
* split UI-related code off CalendarUtils into CalendarGuiUtils
* moved the ParserCombinator lib into common-min (mainly because of
ParserError which inherits from TutanotaError)
* moved UI-related calendar code that can be used from other places
  than calendar view into its own bundle date-gui.

date now contains common calendar code for worker/main, date-gui
depends on it and adds UI-related code.
2024-01-18 14:23:01 +01:00
nig
1beb65e537 inject date formatting into date parser 2024-01-18 14:23:01 +01:00
nig
78677f1b0f allow to import sharing chunk from the search
figuring out the name of a calendar is related
to getting information on shared groups
2024-01-18 14:23:01 +01:00
nig
26ebe34b07 allow to import date chunk in worker
it's used by the calendar search
2024-01-18 14:23:01 +01:00
mup
4bec472cc0 move search query tokenizer to @tutanota/utils 2024-01-18 14:23:01 +01:00
nig
1d4afc6891 vendor undici 5.27.2
fix 803bbf05b0
close #6150
#6053
2023-11-14 13:00:20 +01:00
nig
28ad7dc417 vendor winreg
fix #5836
2023-09-05 13:04:36 +02:00
nig
1adc36e08e [build] vendor electron-updater
* according to rollups type definitions, the output option property is
 ignored by rollup.rollup, so it moved to bundle.write
* we don't use commonjs deps in the desktop bundle anymore, so the
  commonjs plugin can go away from DesktopBuilder

[build] remove some unnecessary rollup plugins

[build] unify the native plugins

[build] vendor keytar

[build] vendor better-sqlite3 deps and restrict module resolution

it's now checked in and can be updated with buildSrc/updateLibs.js

close #4213
2023-08-30 16:38:00 +02:00
vaf
49449c426d Support Argon2id
Allow deriving keys with it if the server requests it, but do not use it
by default to create new keys.

tutadb#1559

Co-authored-by: @vitoreiji, @paw-hub, @charlag
2023-08-18 16:29:22 +02:00