Commit graph

226 commits

Author SHA1 Message Date
Ben Gotow
da2c9145b4 bump(asar): Re-create ordering hint 2016-05-03 16:25:52 -07:00
Ben Gotow
6d2755329b fix(send-later): Simplify logic, use changes.addPluginMetadata 2016-05-03 14:01:06 -07:00
Ben Gotow
67fcba6769 fix(read-receipts): Remove tracking pixels when composing drafts 2016-04-28 17:08:54 -07:00
Akshar Patel
a69266a75d Show under Internet Category in Linux (#2083)
* Update title for system tray

Using only Menu Bar confuses Linux users because ''Menu Bar'' word is only used withing Mac OS. So, also use "System Tray" word.

* Show under Internet Category in Linux

Right now, N1 is showing under Programming Category. "Network" should be added to show under Internet Category.
2016-04-28 10:28:41 -07:00
Ben Gotow
c543de9e81 cleanup(specs): Remove space-pen. Goodbye, jQuery! 2016-04-26 13:14:07 -07:00
Ben Gotow
80c8d733c8 cleanup(config): Remove unused features, dependencies 2016-04-26 13:14:06 -07:00
Evan Morikawa
c416731d35 fix(build): fix lstatSync throwing 2016-04-25 16:18:23 -07:00
Evan Morikawa
6a55717157 feat(package): fix build-resources-task and move submodule 2016-04-25 16:01:56 -07:00
Evan Morikawa
25dea6a136 feat(package): require 'engines': {'nylas': '*'} in package.json 2016-04-25 15:06:37 -07:00
Ben Gotow
4d38ac6310 cson(cleanup): Remove imports, only used for config.cson now 2016-04-24 20:33:34 -05:00
Ben Gotow
ba16a71777 fix(build): CSON => JSON no longer necessary for /keymaps, /menus 2016-04-24 20:27:29 -05:00
Ben Gotow
b98a3bae60 fix(build): Run eslint on files inside submodule 2016-04-24 19:32:37 -05:00
Ben Gotow
3bfad0c9e1 fix(*): spec failures related to moment-round again 2016-04-24 15:21:29 -05:00
Ben Gotow
aab39a12da mv(packages): move plugins that are incompatible with open source sync engine 2016-04-24 14:53:12 -05:00
Ben Gotow
a46bad4eb7 refactor(menus): Major prune of keymaps/commands, real conditional menus
Summary:
Keymaps & menus CSON => JSON, remove AtomKeymaps, CommandRegistry use of CSS selectors, use Mousetrap instead

Important Notes:

- The `application:` prefix is reserved for commands which are handled in the application process. Don't use it for other things. You will not receive the events in the window.

- Maintaining dynamic menus seems to come with quite an overhead, because Electron updates the entire menu every time. In the future, we'll need https://github.com/electron/electron/issues/528 to really make things nice. I will be tracking this upstream.

- The format for keyboard shortcuts has changed. `cmd-X` is now `command+shift+x`

Test Plan: Run tests

Reviewers: juan, evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D2917
2016-04-24 12:16:25 -05:00
Evan Morikawa
e90735ed6e feat(win): faster popout windows
Summary:
This diff is designed to dramatically speed up new window load time for
all window types and reduce memory consumption of our hot windows.

Before this diff, windows loaded in ~3 seconds. They now boot in a couple
hundred milliseconds without requiring to keep hot windows around for
each and every type of popout window we want to load quickly.

One of the largest bottlenecks was the `require`ing and initializing of
everything in `NylasExports`.

I changed `NylasExports` to be entirely lazily-loaded. Drafts and tasks
now register their constructors with a `StoreRegistry` and the
`TaskRegistry`. This lets us explicitly choose a time to activate these
stores in the window initalization instead of whenever nylas-exports
happens to be required first.

Before, NylasExports was required first when components were first
rendering. This made initial render extremely slow and made the proposed
time picker popout slow.

By moving require into the very initial window boot, we can create a new
scheme of hot windows that are "half loaded". All of the expensive
require-ing and store initialization is done. All we need to do is
activate the packages for just the one window.

This means that the hot window scheme needs to fundamentally change from
have fully pre-loaded windows, to having half-loaded empty hot windows
that can get their window props overridden again.

This led to a major refactor of the WindowManager to support this new
window scheme.

Along the way the API of WindowManager was significantly simplifed.
Instead of a bunch of special-cased windows, there are now consistent
interfaces to get and `ensure` windows are created and displayed. This
DRYed up a lot of repeated logic around showing or creating core windows.

This also allowed the consolidation of the core window configurations into
one place for much easier reasoning about what's getting booted up.

When a hot window goes "live" and gets populated, we simply change the
`windowType`. This now re-triggers the loading of all of the packages for
the window. All of the loading time is now just for the packages that
window requires since core Nylas is there thanks to the hot window
mechanism.

Unfortunately loading all of the packages for the composer was still
unnaceptably slow. The major issue was that all of the composer plugins
were taking a long time to process and initialize. The solution was to
have the main composer load first, then trigger another window load
settings change to change the `windowType` that loads in all of the
plugins.

Another major bottleneck was the `RetinaImg` name lookup on disk. This
requires traversing the entire static folder synchronously on boot. This
is now done once when the main window loads and saved in a cache in the
browser process. Any secondary windows simply ask the backend for this
cache and save the filesystem access time.

The Paper Doc below is the current set of manual tests I'm doing to make
sure no window interactions (there are a lot of them!) regressed.

Test Plan: https://paper.dropbox.com/doc/Window-Refactor-UYsgvjgdXgVlTw8nXTr9h

Reviewers: juan, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2916
2016-04-22 13:30:42 -07:00
Ben Gotow
0174b4d20f bump(resources): Updates to submodule 2016-04-22 10:53:11 -07:00
Ben Gotow
ca24fc31e9 rename(drafts) DraftStoreProxy => DraftEditingSession 2016-04-19 16:08:58 -07:00
Ben Gotow
217af8d77c bump(electron): 0.36.7 => 0.37.5 2016-04-12 18:42:57 -07:00
Ben Gotow
324296eb1c fix(drafts): Use the appropriate account and alias 2016-03-24 19:35:24 -07:00
Ben Gotow
412a228ba1 fix(mixpanel): Consolidate reply / replyAll actions 2016-03-23 16:02:30 -07:00
Ben Gotow
510e417cb3 fix(tray): Use total count, not unread count, for tray icon 2016-03-21 17:36:18 -07:00
Ben Gotow
b515a5e0e2 feat(dock-icon): Drop files to attach them to new msg
Summary:
Fix specs

Fix responding to mailto, files at launch

It's super important that `window:loaded` is /not/ sent from index.js because `loadSettings.bootstrapScript` is async and nothing is actually loaded yet. This was causing the app to dispatch the mailto:// links into the main window before a DraftStore existed.

I think this was necessary at one point because we had NylasWindows not using a bootstrapScript? Should not be here anymore...

Test Plan: Run a few new tests

Reviewers: juan, evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D2737
2016-03-17 13:14:55 -07:00
Ben Gotow
1a50a535a9 fix(icon): update assets to fix #1747 2016-03-15 12:46:03 -07:00
Ben Gotow
cff2f71d18 fix(signatures): Adds default signature, convert to ES6 2016-03-14 17:05:49 -07:00
Juan Tejada
cfbbcd23d3 fix(snooze): Correctly query and create snooze categories per account
Summary:
- Was not properly updating the references to snoozed categories when
  accounts were added or removed
- Update whenCategoriesReady to make sure we listen until category syncing has concluded (Move inside CategoryStore)
- #1676, #1658

Test Plan: - TODO

Reviewers: evan, drew, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2723
2016-03-14 15:36:39 -07:00
Ben Gotow
734a52aa6a fix(config): Move account tokens to system keychain
Summary:
This diff also adds an account version number to the config so that the AccountStore can tell whether it should reload accounts (depending on whether it was the instance making tthe changes.)

This diff also fixes a tiny issue where un-opened composers threw an exception if you changed accounts.

Test Plan: New tests

Reviewers: evan, drew, juan

Reviewed By: juan

Subscribers: juan

Differential Revision: https://phab.nylas.com/D2726
2016-03-14 15:14:08 -07:00
Ben Gotow
465831175a rm(autolinker): Use our own very simple autolinker
Summary:
Autolinker is a great open source project but it attempts to parse HTML with regexp, is quite slow, and hangs on specific emails https://github.com/nylas/N1/issues/1540

This is super bad, and also super unnecessary. I think this should do the trick.

Note: I changed the urlRegex in our Utils to be much more liberal. It now matches anything that looks like a URL, not just things with the http:// and https:// prefixes. It's used in the LinkEditor and onboarding screen (detecting auth errors with urls) and I think it should be ok?

Test Plan: Need to write some tests

Reviewers: evan, juan

Reviewed By: juan

Differential Revision: https://phab.nylas.com/D2725
2016-03-14 12:30:54 -07:00
Ben Gotow
0c430a470c bump(asar): 0.10, use ordering feature we PR'd [TEST CI] 2016-03-08 15:21:28 -08:00
Juan Tejada
02ca6ff73e bump(submodule): Add eslint to arc 2016-03-06 14:47:49 -08:00
Ben Gotow
422f2f08e5 build(32-bit): Move a few docker files out of root of repo 2016-03-03 17:03:14 -08:00
Ben Gotow
6a190f36f8 Merge pull request #1342 from mbilker/linux-32bit-docker
[RFC] Linux 32-bit Docker build
2016-03-03 14:10:41 -08:00
Juan Tejada
0fd2d107b2 test(plugins): Add snooze and send later specs
Summary:
- Also refactors the code a bit for testability and maintainability
- Fixes #1515

Test Plan: - Unit tests

Reviewers: evan, drew, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2651
2016-03-03 12:38:42 -08:00
mbilker
cc328e8906 fix(startup): remove beta references 2016-03-02 17:47:47 -08:00
mbilker
385931ca9e fix(launch): convert Atom's launch script for N1
Addresses #411

The `N1.sh` launch script fails to account for running from
`/usr/{local/}bin/nylas` where it would throw an error saying
it couldn't find the electron binary.

The Atom launch script works just fine and takes that into account.
The installed launch script here is a reflactored Atom launch script
that properly accounts for running the `nylas` executable and locates
the actual binary accordingly.
2016-03-02 17:47:47 -08:00
Ben Gotow
f413386b80 feat(hidden-messages): Filter trash/spam messages. Fixes #1135
Summary:
By default, the messages in a thread are now filtered to exclude
ones moved to trash or spam. You can choose to view those messages by clicking
the new bar in the message list.

When you view your spam or trash, we only show the messages on those threads
that have been marked as spam/trash.

Test Plan: Run a couple new tests

Reviewers: juan, evan

Reviewed By: evan

Differential Revision: https://phab.nylas.com/D2662
2016-03-02 10:05:17 -08:00
Ben Gotow
3fc6582718 es6(*): convert 20+ source files used in example packages to ES2016
There could be a few lurking bugs. Please test!
2016-02-29 18:47:22 -08:00
Ben Gotow
3fe03000cf bump(submodule): theme and plugin installation reporting fixes 2016-02-26 13:28:42 -08:00
Evan Morikawa
3edec42f06 fix(analytics): clean up events 2016-02-25 13:32:09 -08:00
Ben Gotow
162aac4943 fix(build): Don't delete plugin package.json files, restore ellipsis (@sdw consulted HIG!) 2016-02-24 18:15:55 -08:00
Ben Gotow
7e96a169a2 💄(plugins): Updated assets and a bit of error handling 2016-02-23 17:51:10 -08:00
Ben Gotow
6eed3ce054 fix(composer): Redo toolbar styling with theme variables + minor fixes 2016-02-23 15:40:44 -08:00
Ben Gotow
8ed28f76d1 💄(icon): A delightful seafoam green icon 2016-02-23 10:35:08 -08:00
Ben Gotow
840b48c2df 💄: Experimental app icon, fix for merge conflict 2016-02-19 18:52:49 -08:00
Juan Tejada
a841417011 feat(snooze/send-later): Add snooze and send later plugins
Summary:
- Add initial version of snooze and send later plugins
- Tests are missing since this will probably heavily change before we are done with them

Test Plan: - TODO

Reviewers: drew, bengotow, evan

Reviewed By: bengotow, evan

Differential Revision: https://phab.nylas.com/D2578
2016-02-18 10:06:21 -08:00
mbilker
fd162ac4da fix(publish-nylas-build): return undefined to prevent grunt interpreting as failed build 2016-02-15 21:12:17 -05:00
mbilker
0fcd9d0a22 fix(build): use special docker build file to run appropriate build tasks 2016-02-15 19:41:13 -05:00
Evan Morikawa
10564db50a fix(analytics): no longer track tasks 2016-02-12 13:52:06 -08:00
Evan Morikawa
42204ddecf fix(composer): allow link paste without tooltip
Also fix style issues with link text.

Fix cmd+k link editing when nothing is selected.

Make confirm button only appear when there are changes to be made
2016-02-12 13:50:20 -08:00
Evan Morikawa
ac52589de5 fix(analytics): add onboarding welcome event 2016-02-12 10:25:28 -08:00