💌 A beautiful, fast and fully open source mail client for Mac, Windows and Linux.
Find a file
Ben Gotow 0b84942051 perf(db): Lazily deserialize models on the other side of the action bridge
Summary:
We send database `trigger()` events through the ActionBrige to all windows of the app. This means that during initial sync, we're serializing, IPCing and unserializing thousands of models a minute x "N" windows.

This diff converts the payload of the trigger method into an actual class that implements a custom toJSON. It converts the impacted `objects` into a string, and doesn't deserialize them until it's asked.

Bottom line: this means that in many scenarios, we can avoid creating Contact models, etc. in composer windows only to broadcast them and then gc them.

Test Plan: No new tests yet, but this should definitel be tested. #willfix.

Reviewers: juan, evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D2236
2015-11-06 11:15:20 -08:00
apm Update APM to 1.1.1 2015-10-06 23:35:03 -04:00
build fix(packaging): Resolve codesign issue on 10.11 due to bad symlink 2015-10-30 15:27:39 -07:00
docs feat(windows): updated docs and fix for building on 64-bit 2015-10-23 12:55:44 -07:00
dot-nylas fix(onboarding): Invitation code system, just in case 2015-10-04 16:49:41 -07:00
examples feat(tooltip): use native tooltip style 2015-10-21 11:27:57 -07:00
internal_packages feat(system-tray): add system-tray package 2015-11-06 11:12:38 -08:00
keymaps feat(shortcuts): Pageup/dn in message list, shift+pageup/dn in thread list 2015-10-29 20:34:43 -07:00
menus fix(*): Packages => Plugins in a few more places 2015-10-22 14:55:30 -07:00
script fix(paths): Flatten npm inside of apm to cut 20 chars from max path length 2015-11-03 12:00:43 -08:00
spec perf(db): Lazily deserialize models on the other side of the action bridge 2015-11-06 11:15:20 -08:00
src perf(db): Lazily deserialize models on the other side of the action bridge 2015-11-06 11:15:20 -08:00
static feat(system-tray): add system-tray package 2015-11-06 11:12:38 -08:00
.gitignore
.travis.yml fix(travis): disable node 4 for now 2015-10-07 22:52:20 -04:00
CHANGELOG.md changelog: 0.3.20 release notes 2015-10-28 14:38:48 -07:00
CONTRIBUTING.md Update CONTRIBUTING.md 2015-10-29 16:58:46 -07:00
LICENSE.md
N1.sh Properly exit out of N1.sh if script/bootstrap hasn't been run yet. 2015-10-04 12:30:37 -07:00
package.json feat(system-tray): add system-tray package 2015-11-06 11:12:38 -08:00
README.md fix(sp): It's => its 2015-10-29 19:35:31 -07:00

N1 Logo

N1 Screenshot

N1 is an open-source mail client built on the modern web with Electron, React, and Flux. It is designed to be extensible, so it's easy to create new experiences and workflows around email. N1 is built on the Nylas Sync Engine which is also open source free software.

Build Status Slack Invite Button

Download N1

You can download compiled versions of N1 for Windows, Mac OS X, and Linux (.deb) from https://nylas.com/N1. You can also build and run N1 on Fedora. A Fedora distribution is coming soon!

Build A Plugin

Plugins lie at the heart of N1 and give it its powerful features. Building your own plugins allows you to integrate the app with other tools, experiment with new workflows, and more. Follow the Getting Started guide to write your first plugin in 5 minutes.

If you would like to run the N1 source and contribute, check out our contributing guide

Running Locally

By default the N1 source points to our hosted version of the Nylas Sync Engine; however, the Sync Engine is open source and you can run it yourself.

Feature Requests / Package Ideas

Have an idea for a package, or a feature you'd love to see in N1? Check out our public Trello board to contribute your thoughts and vote on existing ideas.