💌 A beautiful, fast and fully open source mail client for Mac, Windows and Linux.
Find a file
Juan Tejada d8e139764a fix(electron): Update beforeunload event handler (see details):
- This fixes unresponsive draft items in the draft list, i.e. draft
  windows would not reopen after opening them the first time.
- The `beforeunload` handler will no longer hide a window before its
  actually closed. To reduce visible latency when closing, we moved
  saving window state to the `unload` event handler.
- Before unload was hiding the window before actually closing it. A
  hidden window causes chromium to throttle its renderer process for
  performance, even though `pageVisibility` was set to true (see
  https://github.com/atom/electron/issues/3225 for more detils).

  NylasEnv.finishUnload is used in this context: When a `beforeunload`
  callback prevents the window from closing, it can close it at some point
  in the future using finishUnload. NylasEnv.finishUnload uses _.defer to make
  sure we don't call `close` inside the `beforeunload` call stack so the
  window doesn't go crazy.

  However, since _.defer was being called in the renderer process of a
  hidden window, the deferred callback execution could end up delayed by
  a second or more, which effectively delayed closing the window by a
  second.

  If we tried to reopen a window with the same window props, e.g. a
  draft window, before it was actually closed, the app would go crazy
  and wouldn't open it.

  So now we just don't hide windows on beforeunload
2016-01-29 14:24:33 -08:00
apm refactor(env): new NylasEnv global 2015-11-17 16:41:20 -08:00
build fix(resources): update build resources link 2016-01-28 12:03:23 -08:00
docs DataView => ListDataSource 2016-01-14 12:26:54 -08:00
dot-nylas feat(keymap): add new <KeymapHandlers /> 2015-11-06 11:47:06 -08:00
examples rm(mispelled): Stranded package.json file 2016-01-07 14:59:10 -08:00
internal_packages fix(focus): Don't clear when item is scrolled out of retained range 2016-01-29 12:34:58 -08:00
keymaps fix(keymap): don't use alt key in Windows keymaps 2016-01-28 14:26:56 -08:00
menus fix(menu): Toggle Menu Bar doesn't do anything #606 2015-12-09 16:27:47 -08:00
script build(linux): Ensure that target files are not group writable 2016-01-13 16:09:53 -08:00
spec feat(me): Display "Me (Account Label)" in unified inbox 2016-01-29 09:29:25 -08:00
spec_integration fix(composer): list creation edge case fixes and tests 2016-01-22 10:36:15 -08:00
src fix(electron): Update beforeunload event handler (see details): 2016-01-29 14:24:33 -08:00
static fix(styles): Cleanup less files for account sidebar and switcher 2016-01-29 11:03:52 -08:00
.eslintrc Update grunt tasks to lint and transpile es6 code using babel 2015-11-06 17:40:42 -08:00
.gitignore feat(spec): add config dir to integration specs 2015-12-10 10:52:20 -05:00
.gitmodules feat(build): add nylas build resources 2015-12-02 13:59:54 -08:00
.travis.yml feat(build): new rpm builds 2016-01-04 09:56:14 -08:00
appveyor.yml fix(appveyor): check if the decryption password env variable is set 2015-12-21 20:51:04 -05:00
CHANGELOG.md Update CHANGELOG.md 2016-01-21 14:31:27 -08:00
CONTRIBUTING.md fix(contributing): Mention syncEngine.APIRoot 2016-01-21 10:42:31 -08:00
LICENSE.md
N1.sh fix(N1.sh): allow additional parameters specified on command line 2016-01-15 12:14:07 -05:00
package.json bump(version): 0.4.0 beta 2016-01-28 15:48:08 -08:00
README.md add levelup theme 2016-01-28 13:23:10 -08: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.

Plugin List

We're working on building a plugin index that makes it super easy to add them to N1. For now, check out the list below! (Feel free to submit a PR if you build a plugin and want it featured here.)

Themes
Composer
Sidebar
Navbar
Threadlist
Message View

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 / Plugin 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.