mirror of
https://github.com/Foundry376/Mailspring.git
synced 2025-12-09 06:01:09 +08:00
💌 A beautiful, fast and fully open source mail client for Mac, Windows and Linux.
Summary: This commit makes it so our syncback tasks send as few imap commands as possible by passing a set of UIDs whenever possible. Previously, we would send 1 command per message, with a single UID, which was very wasteful given that we can pass a set of UIDs. This is especially helpful for operating on threads with a large number of messages. Syncback actions will now group all messages in a thread by the folder they belong to, and issue a single operation on the folder box. When removing all labels from a thread (setting labels to []), we need to issue a command of the form `box.delLabels(uids, labels)`, so we also group messages by set their set of labels to issue as few commands as possible. This commit only batches imap commands, but we can still batch syncback actions themselves, which can be implemented in a separate patch. Test Plan: manual Reviewers: evan, mark, spang Reviewed By: spang Subscribers: halla, mg Differential Revision: https://phab.nylas.com/D3719 |
||
|---|---|---|
| .ebextensions | ||
| arclib | ||
| packages | ||
| scripts | ||
| .arcconfig | ||
| .arclint | ||
| .babelrc | ||
| .dockerignore | ||
| .eslintrc | ||
| .gitignore | ||
| .tern-project | ||
| Dockerfile | ||
| lerna.json | ||
| package.json | ||
| pm2-debug-cloud-api.yml | ||
| pm2-dev.yml | ||
| pm2-prod-api.yml | ||
| pm2-prod-workers.yml | ||
| README.md | ||
| test_accounts.txt | ||
K2 - Local Sync Engine & Cloud Services for Nylas Mail
This is a collection of all sync and cloud components required to run N1.
- Cloud API: The cloud-based auth and metadata APIs for N1
- Cloud Core: Shared code used in all remote cloud services
- Cloud Workers: Cloud workers for services like send later
- Isomorphic Core: Shared code across local client and cloud servers
- Local Sync: The local mailsync engine integreated in Nylas Mail
See /packages for the separate pieces. Each folder in /packages is
designed to be its own stand-alone repositoriy. They are all bundled here
for the ease of source control management.
Initial Setup for All Local & Cloud Services:
New Computer (Mac):
- Install Homebrew
- Install NVM
brew install nvm - Install Node 6 via NVM:
nvm install 6 - Install Redis locally
brew install redis
New Computer (Linux - Debian/Ubuntu):
- Install Node 6+ via NodeSource (trusted):
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -sudo apt-get install -y nodejs- Install Redis locally
sudo apt-get install -y redis-server redis-toolsbenefit of letting us use subdomains.