Skip to content

Commit

Permalink
update dependencies
Browse files Browse the repository at this point in the history
  • Loading branch information
vladimiry committed May 27, 2022
1 parent 8d8a4b9 commit b13d824
Show file tree
Hide file tree
Showing 23 changed files with 1,192 additions and 1,728 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

name: "GitHub Actions CI"
on: { push: { branches: [ master ] }, pull_request: { branches: [ master ] } }
env: { ELECTRON_MAIL_NODE_VERSION: 16.13.x, PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 }
env: { ELECTRON_MAIL_NODE_VERSION: 16, PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 }
jobs:
build-proton-clients:
if: github.event_name == 'push'
Expand Down
2 changes: 1 addition & 1 deletion .lintstagedrc.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"*.ts": [
"format-imports",
"pnpm run lint:ts:base:eslint -- --fix"
"pnpm run lint:ts:base:eslint --fix"
]
}
38 changes: 19 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<img src="src/assets/og-image/github-og-image-readme.png">
</p>

ElectronMail is an [Electron](https://electronjs.org)-based unofficial desktop client for [ProtonMail](https://protonmail.com/). The app aims to provide enhanced desktop user experience enabling features that are not supported by the official in-browser web clients.
ElectronMail is an [Electron](https://electronjs.org)-based unofficial desktop client for [ProtonMail](https://protonmail.com/). The app aims to provide enhanced desktop user experience enabling features that are not supported by the official in-browser web clients.
It is written in [TypeScript](http://www.typescriptlang.org) and uses [Angular](https://angular.io).

[![GitHub Actions CI](https://img.shields.io/github/workflow/status/vladimiry/ElectronMail/GitHub%20Actions%20CI?branch=master&style=flat-square&logo=github&label=GitHub%20Actions%20CI)](https://github.com/vladimiry/ElectronMail/actions)
Expand All @@ -21,7 +21,7 @@ Some package types are available for installing from the repositories (`AUR/Pacm

[![Get it from the AUR](images/aurlogo.png)](https://aur.archlinux.org/packages/electronmail-bin)

[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/electron-mail)
[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/electron-mail)

<a href="https://flathub.org/apps/details/com.github.vladimiry.ElectronMail"><img width="182" alt="Get it from the Flathub" src="https://flathub.org/assets/badges/flathub-badge-en.png"/></a>

Expand All @@ -36,9 +36,9 @@ Some package types are available for installing from the repositories (`AUR/Pacm
- :gear: **Cross platform**. The app works on Linux/OSX/Windows platforms. Binary installation packages located [here](https://github.com/vladimiry/ElectronMail/releases).
- :mag_right: **Full-text search**. Including email **body content** scanning capability. Enabled with [v2.2.0](https://github.com/vladimiry/ElectronMail/releases/tag/v2.2.0) release. See the respective [issue](https://github.com/vladimiry/ElectronMail/issues/92) for details.
- :mag_right: **JavaScript-based/unlimited messages filtering**. Enabled since [v4.11.0](https://github.com/vladimiry/ElectronMail/releases/tag/v4.11.0) release. See the respective [#257](https://github.com/vladimiry/ElectronMail/issues/257) for details. Requires [local store](https://github.com/vladimiry/ElectronMail/wiki/FAQ) feature to be enabled.
- :package: **Offline access to the email messages** (attachments content not stored locally, but emails body content). The [local store](https://github.com/vladimiry/ElectronMail/wiki/FAQ) feature enables storing your messages in the encrypted `database.bin` file (see [FAQ](https://github.com/vladimiry/ElectronMail/wiki/FAQ) for file purpose details). So the app allows you to view your messages offline, running full-text search against them, exporting them to EML/JSON files. etc. Enabled since [v2.0.0](https://github.com/vladimiry/ElectronMail/releases/tag/v2.0.0) release.
- :package: **Offline access to the email messages** (attachments content not stored locally, but emails body content). The [local store](https://github.com/vladimiry/ElectronMail/wiki/FAQ) feature enables storing your messages in the encrypted `database.bin` file (see [FAQ](https://github.com/vladimiry/ElectronMail/wiki/FAQ) for file purpose details). So the app allows you to view your messages offline, running full-text search against them, exporting them to EML/JSON files. etc. Enabled since [v2.0.0](https://github.com/vladimiry/ElectronMail/releases/tag/v2.0.0) release.
- :mailbox: **Multi accounts** support including supporting individual [API entry points](https://github.com/vladimiry/ElectronMail/issues/29). For example, you can force the specific email account added in the app connect to the email provider via the [Tor](https://www.torproject.org/) only by selecting the `Tor version 3 address` API entry point in the dropdown list and configuring a proxy as described in [this](https://github.com/vladimiry/ElectronMail/issues/113#issuecomment-529130116) message.
- :unlock: **Automatic login into the app** with a remembered the system keychain remembered master ([keep me signed in](images/keep-me-signed-in.png) feature). Integration with as a system keychain is done with the [keytar](https://github.com/atom/node-keytar) module. By the way, on Linux [KeePassXC](https://github.com/keepassxreboot/keepassxc) implements the [Secret Service](https://specifications.freedesktop.org/secret-service/latest/) interface and so it can be acting as a system keychain (for details, see the "automatic login into the app"-related point in the [FAQ](https://github.com/vladimiry/ElectronMail/wiki/FAQ)).
- :unlock: **Automatic login into the app** with a remembered the system keychain remembered master ([keep me signed in](images/keep-me-signed-in.png) feature). Integration with as a system keychain is done with the [keytar](https://github.com/atom/node-keytar) module. By the way, on Linux [KeePassXC](https://github.com/keepassxreboot/keepassxc) implements the [Secret Service](https://specifications.freedesktop.org/secret-service/latest/) interface and so it can be acting as a system keychain (for details, see the "automatic login into the app"-related point in the [FAQ](https://github.com/vladimiry/ElectronMail/wiki/FAQ)).
- :unlock: **Automatic login into the email accounts**, including filling [2FA tokens](https://github.com/vladimiry/ElectronMail/issues/10). Two auto-login delay scenarios supported in order to make it harder to correlate the identities, see the respective [issue](https://github.com/vladimiry/ElectronMail/issues/121).
- :unlock: **Persistent email account sessions**. The feature introduced since [v4.2.0](https://github.com/vladimiry/ElectronMail/releases/tag/v4.2.0) version with the `experimental` label, [#227](https://github.com/vladimiry/ElectronMail/issues/227). The feature enables the scenario when you to enter the account credentials on the login form only once, manually or automatically by the app, and then you never see the login form anymore for this email account even if you restart the app (unless you explicitly dropped the session in the admin area or it got dropped by the service due to the inactivity/expiration). If this feature is enabled for the account, manual credentials filling is the preferred option as a more secure option since you don't save the account credentials anywhere (`credentials` are encrypted though even if saved, see `settings.bin` file description in the [FAQ](https://github.com/vladimiry/ElectronMail/wiki/FAQ)).
- :closed_lock_with_key: **Encrypted local storage** with switchable predefined key derivation and encryption presets. Argon2 is used as the default key derivation function.
Expand Down Expand Up @@ -71,28 +71,28 @@ The [reproducible builds](https://en.wikipedia.org/wiki/Reproducible_builds) ide

### Building locally

- Regardless of the platform you are working on, you will need to have Node.js v16.13.x installed. You might want to use [Node Version Manager](https://github.com/creationix/nvm) to be able to switch between the Node.js versions:
- Install [NVM](https://github.com/creationix/nvm).
- Run `nvm install 16.13.2`.
- Run `nvm use 16.13.2`.
- Make sure you are using `npm` v7+, not the v6 (run `npm -v` to see the version).
- Regardless of the platform you are working on, you will need to have Node.js v16/lts installed. You might want to use [Node Version Manager](https://github.com/creationix/nvm) to be able to switch between the Node.js versions:
- Install [NVM](https://github.com/creationix/nvm).
- Run `nvm install 16`.
- Run `nvm use 16`.
- Make sure you are using `npm` v7+, not the v6 (run `npm -v` to see the version).
- Some native modules require compiling process to be involved and for that Python and C++ compiler need to be installed on the system:
- On `Windows`: the simplest way to install all the needed stuff on Windows is to run `npm install --global --production windows-build-tools` CLI command.
- On `Linux`: `python`, `make` and a C/C++ compiler toolchain, like `GCC` are most likely already installed. Besides [keytar](https://github.com/atom/node-keytar) needs `libsecret` library to be installed.
- On `macOS`: `python` and [Xcode](https://developer.apple.com/xcode/download/) need to be installed. You also need to install the `Command Line Tools` via Xcode, can be found under the `Xcode -> Preferences -> Downloads` menu.
- ProtonMail's [WebClient](https://github.com/ProtonMail/WebClient) requires addition environment setup if you run Windows, [see](https://github.com/ProtonMail/proton-shared/wiki/setup-windows).
- On `Windows`: the simplest way to install all the needed stuff on Windows is to run `npm install --global --production windows-build-tools` CLI command.
- On `Linux`: `python`, `make` and a C/C++ compiler toolchain, like `GCC` are most likely already installed. Besides [keytar](https://github.com/atom/node-keytar) needs `libsecret` library to be installed.
- On `macOS`: `python` and [Xcode](https://developer.apple.com/xcode/download/) need to be installed. You also need to install the `Command Line Tools` via Xcode, can be found under the `Xcode -> Preferences -> Downloads` menu.
- ProtonMail's [WebClient](https://github.com/ProtonMail/WebClient) requires `yarn` to be available on your system. Additional setup is required if you run Windows, [see](https://github.com/ProtonMail/proton-shared/wiki/setup-windows).
- Make sure you have [Rust](https://www.rust-lang.org/) installed on the system.
- [Clone](https://help.github.com/articles/cloning-a-repository/) this project to your local device. If you are going to contribute, consider cloning the [forked](https://help.github.com/articles/fork-a-repo/) into your own GitHub account project.
- Install [pnpm](https://pnpm.io/installation).
- Install dependencies running `pnpm install --frozen-lockfile` (setting `PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1` environment variable might speed up the process).
- Build app running `pnpm run app:dist`.
- Build a package to install running `pnpm run electron-builder:dist` command to build Windows/Mac OS X package and one of the following commands to build Linux package:
- `pnpm run electron-builder:dist:linux:appimage`
- `pnpm run electron-builder:dist:linux:deb`
- `pnpm run electron-builder:dist:linux:freebsd`
- `pnpm run electron-builder:dist:linux:pacman`
- `pnpm run electron-builder:dist:linux:rpm`
- `pnpm run electron-builder:dist:linux:snap`
- `pnpm run electron-builder:dist:linux:appimage`
- `pnpm run electron-builder:dist:linux:deb`
- `pnpm run electron-builder:dist:linux:freebsd`
- `pnpm run electron-builder:dist:linux:pacman`
- `pnpm run electron-builder:dist:linux:rpm`
- `pnpm run electron-builder:dist:linux:snap`
- The assembled installation package comes into the `./dist` folder.

To recap, considering that all the described build requirements are met, the short command to build let's say Arch Linux package will be `pnpm install --frozen-lockfile && pnpm run app:dist && pnpm run electron-builder:dist:linux:pacman`.
Expand Down
12 changes: 5 additions & 7 deletions electron-builder.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,11 @@ files:
compression: normal
asar: true
asarUnpack:
- 'electron-main/**/*.node'
- '**/node_modules/desktop-idle/**/*'
- '**/node_modules/keytar/**/*'
- '**/node_modules/msgpackr-extract/**/*'
- '**/node_modules/msgpackr-extract-*/**/*'
- '**/node_modules/sodium-native/**/*'
- '**/node_modules/spellchecker/**/*'
- './app/electron-main/*.node'
- './node_modules/keytar/**/*'
- './node_modules/msgpackr-extract/**/*'
- './node_modules/sodium-native/**/*'
- './node_modules/spellchecker/**/*'
afterPack: './scripts/electron-builder/hooks/afterPack/index.cjs'

mac:
Expand Down
Loading

0 comments on commit b13d824

Please sign in to comment.