Summary: This will address the longstanding concern in #417
Test Plan: No new tests
Reviewers: juan, evan
Reviewed By: juan, evan
Maniphest Tasks: T7065
Differential Revision: https://phab.nylas.com/D3322
Summary:
Switch to electron-spellchecker, which will allow N1 to
spellcheck more intelligently across languages. It auto-
detects languages and downloads dictionaries on the fly.
Test Plan: Specs, manual testing
Reviewers: bengotow, evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D3319
Summary:
Better-SQLite3 is a fork of node-sqlite3 which includes a re-written JavaScript interface. It’s more synchronous, but better reflects what is actually sync vs. async in sqlite’s C++ API. (Not much is really async under the hood.) This diff uses a branch of better-sqlite3 I’ve edited to support Node 6.
In my tests, this branch spends 3.24x less time executing queries than `master`. (Measured time spent in calls to `this._db[run|all|get]` over the first 5000 queries of initial sync. It also increased the performance of starring a thread in the thread list by 28%.
This library also allows us to use a prepared statement cache, which is great because we often make the same queries repeatedly as query subscriptions refresh the UI and deltas are dumped into the app. The old interface didn’t expose statements (cached query plans) to JS.
better-sqlite3 advertises that it uses the JS garbage collector instead of lower level C++ memory management. I tested syncing my entire mailbox to verify that memory usage is not significantly different on this branch after a lot of queries have been made.
Finally, it looks like we can finally stop building sqlite3 from scratch in `script/bootstrap`. This library builds properly with `apm install`. 🎉
We might want to change the DatabaseStore and DatabaseTransaction classes more, now that it’s possible to execute queries synchronously. It could make things cleaner and get us out of promise-hell in a few places. In this diff I tried to change as little as possible.
Test Plan: Run tests, everything still works
Reviewers: juan, jackie
Reviewed By: juan, jackie
Differential Revision: https://phab.nylas.com/D3315
When using the pattern `{...extraProps}` to transfer props in the render method,
if rendering a native dom element, react will issue a new warning if we
end up passing invalid dom props:
https://facebook.github.io/react/warnings/unknown-prop.html
This adds a helper library to exclude invalid fom props instead of
manually excluding props inside each render method
- With the Metrics module inside nylas-core, and bc of our current lerna
setup, we required other modules like sequelize and redis before requiring
newrelic, thus preventing them from being properly instrumented
- Bunyan logs json output, and added a stream to send our logs to
cloudwatch
- Replaces /all/ instances of console.log. Turned eslint rule back on,
so we don't use console.log ever again.
- Added npm scripts to view pretty logs
commit 50d0cfb87c
Author: Ben Gotow <bengotow@gmail.com>
Date: Fri May 27 14:01:49 2016 -0700
IdentityStore conveniene methods for subscription state
commit 80c3c7b956
Author: Ben Gotow <bengotow@gmail.com>
Date: Fri May 27 12:03:53 2016 -0700
Periodically refresh identity, show expired notice in top bar
commit 5dc39efe98
Merge: 4c4f463906ea74
Author: Juan Tejada <juans.tejada@gmail.com>
Date: Thu May 26 15:17:46 2016 -0700
Merge branch 'bengotow/n1-pro' of github.com:nylas/N1 into bengotow/n1-pro
commit 4c4f463f4b
Author: Juan Tejada <juans.tejada@gmail.com>
Date: Thu May 26 15:16:48 2016 -0700
Hijack links inside email that go to billing site and add SSO to them
commit 906ea74807
Author: Ben Gotow <bengotow@gmail.com>
Date: Thu May 26 12:02:29 2016 -0700
Add custom welcome page for upgrading users
commit 2ba9aedfe9
Author: Juan Tejada <juans.tejada@gmail.com>
Date: Wed May 25 17:27:12 2016 -0700
Add styling to Subscription tab in prefs
commit 384433a338
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed May 25 16:21:18 2016 -0700
Add better style reset, more IdentityStore changes
commit c4f9dfb4e4
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed May 25 15:29:41 2016 -0700
Add subscription tab
commit bd4c25405a
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed May 25 14:18:40 2016 -0700
Point to billing-staging for now
commit 578e808bfc
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed May 25 13:30:13 2016 -0700
Rename account helpers > onboarding helpers
commit dfea0a9861
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed May 25 13:26:46 2016 -0700
A few minor fixes
commit 7110217fd4
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed May 25 12:58:21 2016 -0700
feat(onboarding): Nylas Pro onboarding overhaul
Summary:
Rip out all invite-related code
Enable Templates and Translate by default
Scrub packages page, unused code in onboarding pkg
Remove resizing
New onboarding screens
IMAP provider list, validation
Call success with response object as well
Renaming and tweaks
Test Plan: No tests yet
Reviewers: evan, juan, jackie
Differential Revision: https://phab.nylas.com/D2985
commit dc9ea45ca9
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed May 25 12:52:39 2016 -0700
Renaming and tweaks
commit 5ca4cd31ce
Author: Ben Gotow <bengotow@gmail.com>
Date: Wed May 25 11:03:57 2016 -0700
Call success with response object as well
commit 45f14f9b00
Author: Ben Gotow <bengotow@gmail.com>
Date: Tue May 24 18:26:38 2016 -0700
IMAP provider list, validation
commit c6ca124e6e
Author: Ben Gotow <bengotow@gmail.com>
Date: Sat May 21 11:14:44 2016 -0700
New onboarding screens
commit dad918d926
Author: Ben Gotow <bengotow@gmail.com>
Date: Thu May 19 16:37:31 2016 -0700
Remove resizing
commit ecb1a569e2
Author: Ben Gotow <bengotow@gmail.com>
Date: Thu May 19 16:36:04 2016 -0700
Scrub packages page, unused code in onboarding pkg
commit 3e0a44156c
Author: Ben Gotow <bengotow@gmail.com>
Date: Thu May 19 16:33:12 2016 -0700
Enable Templates and Translate by default
commit 0d218bc86f
Author: Ben Gotow <bengotow@gmail.com>
Date: Thu May 19 16:30:47 2016 -0700
Rip out all invite-related code
Summary:
- Add some docs to Table components
- Updates Table components to use a TableDataSource instead of accessing arrays, cleans up code a bit
- Add enzyme lib to have a cleaner and simpler api to write tests for React Components
- Updates decorators to extend from the BaseComponent instead of vanilla Component, this way instance methods are still available on composed components
Test Plan: - Unit tests
Reviewers: evan, bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D2941
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
When you hold down the meta key (⌘), and click on a link in a message,
the target application will not activate, so N1 will stay in the
foreground.
Electron only supports this for OS X
* Add PNGs and JSON file
* Add Apple and Twitter emoji
* Fix linter issues and tests
* Get correct path from EmojiStore
* Add emoji regex and update extensions
* Remove the scary regex
Summary:
This diff replaces "finalizeSessionBeforeSending" with a
plugin hook that is bidirectional and allows us to put the draft in
the "ready to send" state every time we save it, and restore it to
the "ready to edit" state every time a draft session is created to
edit it.
This diff also significantly restructures the draft tasks:
1. SyncbackDraftUploadsTask:
- ensures that `uploads` are converted to `files` and that any
existing files on the draft are part of the correct account.
1. SyncbackDraftTask:
- saves the draft, nothing else.
3. SendDraftTask
- sends the draft, nothing else.
- deletes the entire uploads directory for the draft
Test Plan: WIP
Reviewers: juan, evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D2753
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
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
Summary:
adds new option to launch on system start
Also adds the `--background` flag to launch N1 in the background (aka not
show the main window).
Test Plan: Manual
Reviewers: bengotow, juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D2474
- This fixes a bug present in the earlier version where stopPropagation and
preventDefault were not correctly defined in the custom event
- Updates clear-cut dependency and initialization of CommandRegistry in
NylasEnv
Summary:
- You can now pass `--config-dir-path=/some/custom/path` to `./N1.sh`
- `main.coffee` cleaned up a bit. A lot of unused params from legacy Atom
stuff were still being used
- Integration specs now set the config dir before booting.
- New spec to check for the autoupdater in the app and make sure it's
pointing at the right place.
Test Plan: script/grunt run-integration-tests
Reviewers: juan, bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D2331
Summary:
Add concept of "final" to Query, clean up internals
Tiny bug fixes
RxJs Observables!
WIP
Test Plan: Run tests
Reviewers: evan, juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D2319
comment
Adding test harness
Using key strokes in main window test
Tests work now
Clean up argument variables
Rename list manager and get rid of old spec-helper methods
Extract out time overrides from spec-helper
Spectron test for contenteditable
fix spec exit codes and boot mode
fix(spec): cleanup N1.sh and make specs fail with exit code 1
Revert tests and get it working in window
Move to spec_integration and add window load tester
Specs pass. Console logs still in
Remove console logs
Extract N1 Launcher ready method
Make integrated unit test runner
feat(tests): adding integration tests
Summary:
The /spectron folder got moved to /spec_integration
There are now unit tests (the old ones) run via the renamed
`script/grunt run-unit-tests`
There are now integration tests run via the command `script/grunt
run-integration-tests`.
There are two types of integration tests:
1. Tests that operate on the whole app via Selenium/Chromedriver. These
tests have access to Spectron APIs but do NOT have access to any JS object
running inside the application. See the `app-boot-spec.es6` for an example
of these tests. This is tricky because we want to test the Main window,
but Spectron may latch onto any other of our loading windows. Code in
`integration-helper` give us an API that finds and loads the main window
so we can test it
2. Tests that run in the unit test suite that need Spectron to perform
integration-like behavior. These are the contentedtiable specs. The
Spectron server is accessed from the app and can be used to trigger
actions on the running app, from the app. These tests use the
windowed-test runner so Spectron can identify whether the tests have
completed, passed, or failed. Unfortunately Spectron can't access the logs
, nor the exit code of the test script thereby forcing us to parse the
HTML DOM. (Note this is still a WIP)
I also revamped the `N1.sh` file when getting the launch arguments to work
properly. It's much cleaner. We didn't need most of the data.
Test Plan: new tests
Reviewers: juan, bengotow
Differential Revision: https://phab.nylas.com/D2289
Fix composer specs
Tests can properly detect when Spectron is in the environment
Report plain text output in specs
fixing contenteditable specs
Testing slow keymaps on contenteditable specs
Move to DOm mutation
Spell as `subtree` not `subTree`
Summary:
This diff:
- Improves the styling of the tabs in the preferences sidebar.
- Adds an optional param to section cofnig that puts an "account" submenu beneath the tab item.
- Renames preferences "sections" => "tabs", and renames the PreferencesSectionStore to PreferencesUIStore. I think we should include "UI" in more of our stores, and I think "tabs" is a good idea because it's unambigious—there's no way you could confuse it for a "section" of the NylasEnv.config tree or think it deals with actually saving prefs.
Test Plan: Inspect visually
Reviewers: evan, juan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D2296
Electron 0.35.1 includes the tray fixes we contributed last week but also includes API restructuring and improvements. Most importantly, modules from electron are now imported via `require('electron')`
vm-compatibility-layer was designed to support obsolete APIs in node
v0.11.x of node v0.10.x. It is only used in the build Gruntfile and
nowhere else in the project.
- move babelrc to static so that it can be used during the build process and also whenever the app is transpiling things on the fly.
- move babel back to version 5, which is compatible with `apm install`. (babel 6 seems to require the "dedupe" behavior of NPM3)
- update harmony-collections to use an unpublished commit that fixes the "WeakMap is not generic" issue