Summary: See title
Test Plan: Run on the coffee machine
Reviewers: juan, evan, spang
Reviewed By: spang
Differential Revision: https://phab.nylas.com/D4368
Summary:
We want to be able to benchmark initial sync, so this diff adds two
scripts. The first, drop-stuff.sh, drops all data from the app and sync
databases that isn't related to account credentials. The second,
benchmark-initial-sync.sh, runs a fixed number of iterations (current 5) that
invokes drop-stuff.sh then opens the app, waits a fixed amount of time
(currently 120 seconds), and then kills the app and measures how many messages
it synced which it prints to the console. This is sufficient for us to start
measuring how quickly we can sync messages. This diff also includes the
sqlite3 amalgamation which drop-stuff.sh requires to function correctly
due to depending on the FTS5 extension which doesn't come built-in on
some platforms.
Test Plan: Run benchmark locally
Reviewers: evan, spang, juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D4275
Summary:
Put them in the client-app/spec folder instead of
client-app/internal_packages
Test Plan: Ran the tests
Reviewers: juan, evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D4080
Summary:
Move the base Jasmine spec runner into isomorphic-core to prevent
code duplication. Jasmine will look for the config file relative to
the directory it's being run in though, so we need to symlink the
config file into each package that will need it.
Test Plan: Run tests once the suites are integrated
Reviewers: evan, spang, juan
Reviewed By: spang, juan
Differential Revision: https://phab.nylas.com/D4056
Summary:
Convert the isomorphic-core specs to Jasmine 1 and symlink them into
client-app/internal_packages so they are run as part of the client
test suite.
Test Plan: Ran the suite with fdescribes in iso-core to ensure they were being called properly
Reviewers: evan, spang, juan
Reviewed By: spang, juan
Differential Revision: https://phab.nylas.com/D4055
Summary:
In client-app/node_modules Lerna symlinks isomorphic-core to '../../'.
When we copy everything over to our tmp directory when building, we copy
over the relative symlink! Damn you lerna.
We get around this by resolving the symlinks BEFORE copying and caching
them in the installer task. Then the file copy always works.
Also, for some reason the glob {absolute} param doesn't seem to work in
the latest version. I'm manually creating an absolute path for the compile
target since it's a bit more transparent what's happening anyway.
Test Plan: `npm run build-client`
Reviewers: spang, jerm, juan, halla
Reviewed By: juan, halla
Differential Revision: https://phab.nylas.com/D3988
[*] update babel
[client-app] remove flow-typed
[client-app] Move build/package.json to main package.json
[client-app] remove spec_integration
[client-app] fix babel support
Add client-private-plugins package.json
[client-app] add node_modules to global path for private-plugins
Move client-sync dependencies to client-app root
fix electron rebuild
[*] moved to monorepo
Summary: App now runs in monorepo
Test Plan: npm test
Reviewers: juan, mark, khamidou, halla, spang
Differential Revision: https://phab.nylas.com/D3947
Summary:
A prerequesite to integrating with `arc unit` or CI for each patchset is
being able to generate JUnit XML output for spec runs. This commit adds
this feature using the JUnitXMLReporter from jasmine-reporters. Invoke it like
this:
npm run test-junit
(We output to the terminal as well when this is run, so in the case that
you're doing `arc diff` you have some idea of what is going on.)
Test Plan: run it
Reviewers: halla, juan, evan
Reviewed By: juan, evan
Differential Revision: https://phab.nylas.com/D3891
Summary:
We need people to manually drag into their /Applications folders due to
OSX gatekeeper protections.
Test Plan: manual
Reviewers: juan, khamidou
Reviewed By: khamidou
Differential Revision: https://phab.nylas.com/D3756
Summary:
Adds babel to K2
Creates a simple build script so it'll run on prod.
Test Plan: manual
Reviewers: jackie, halla, juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3527
Summary:
This diff solves a few separate issues from T7313, T7316, T7282, and it refactors
the send code a little bit.
Initially, the problem that led to this diff was generating message ids that
wouldn't collide (which was causing errors in the message-processor). Collisions
in ids were being caused by messages that contained the exact same participants,
subject and date (most likely due bots or scripts sending emails in quick
succession)
To prevent collisions this commit adds the `message-id` header as part of the
database message id, and ensures that we set it correctly before sending, and
that it remains consistent through send, multi-send, and the sync loop.
During the refactor and review, I removed some code that assumed that we were
syncing drafts (which we aren't), and also fixes a few other known and
unknown issues around sending, message creation, and tracking, like assigning
the correct date header (we were previously assigning the draft creation date
from within N1), fixing the tracking regex, among other smaller bugs/typos.
Will address inline TODOs in a separate diff
Test Plan: TODO!!! I will add tests in another diff
Reviewers: evan, halla, jackie, khamidou
Reviewed By: halla, jackie
Differential Revision: https://phab.nylas.com/D3507
Summary:
Fixes T7283. We weren't creating deltas for contacts because we were inserting contacts using `UPSERT`, which requires us to add another sequelize hook. Unfortunately, support for this hook is only available on sequelize 4.x.
I didn't want to upgrade our sequelize version right now and cause of bunch of mysterious failures, so I've simply changed the `UPSERT` to be either an `INSERT`or `UPDATE`. We didn't really need it anyway.
Test Plan: Checked that N1 was receiving contact deltas.
Reviewers: bengotow
Reviewed By: bengotow
Maniphest Tasks: T7283
Differential Revision: https://phab.nylas.com/D3481
[cloud-api] move Dockerfile and pm2 files into cloud-api
[*] additions to .gitignore
[cloud-workers]: move pm2 file into cloud-workers
updates to readme
Revert "[cloud-workers]: move pm2 file into cloud-workers"
This reverts commit 952292124b6e8dfa304c5fbd945c0b00f427e154.
Revert "[cloud-api] move Dockerfile and pm2 files into cloud-api"
This reverts commit aa92f691bf991848a51c00a2d01a5848f20a35a2.
Update deploy readme
Summary:
This diff removes significant cruft from N1's compilation and build tooling:
- Electron-Packager replaces most of the code in build/tasks/* used to copy things,
bundle things, download electron, etc.
- script/bootstrap has been replaced with a much simpler script that does not use
APM, does not download Electron (we just use electron as an NPM dep) and does
not manully compile sqlite. It requires NPMv3, but I think that's safe.
- babel and eslint are now devDependencies of the main project. The main project
also supports optionalDependencies now.
- npm test and npm start replace ./N1.sh
- APM is still around, and is only put into N1 so it can install plugins at runtime.
It should be removed as soon as we notify package maintainers and have them provide zips.
- N1 no longer has it's own compile-cache or babel/typescript/coffeescript compilers.
It delegates to electron-compile and electron-compilers. Both of these packages had
to be forked and modified slightly, but I'm hopeful the modifications will make it back
in to the projects and you can still consult their documentation for more info.
+ In the near future, I think we should stop shipping electron-compilers with N1. This
would mean that all plugins would need to be compiled on pre-publish, just like NPM
packages, and would complicate the local development story a bit, but would make the
app smaller. electron-compile is not supposed to compile at runtime in the prod app,
just pull from the compile cache.
- I've re-organized Grunt according to Grunt best practices, where each tasks/* file
specifies it's own config and imports grunt tasks.
- Unfortunately, I was not able to use any open source projects for the deb and rpm builds,
because we have things like postinst hooks and start menu items which are not supported
by the electron installer-generators.
WIP
Turn off all LESS compilation, because themes. Doh.
Use Grunt for new build process too, just remove tasks
More changes
Add babel-eslint
Remove unused react-devtools
WIP
Add name
Ignore nonexistent
Switch to more modern approach to config for grunt
Move zipping to mac installer task
Restructure publish task so it aggregates first, can log useful info if publishing is disabled
Fix build dirs
Fix win installer
Fix linux installer
Fix linux installer
Try making linux
A few more
Updates
Upadtes
fixes
fixes
Get rid of non-meaningful variables
Resolve assets path
Insert nylas.sh
Clean up args more
Actually use description
Fix display name ugh
More tweaks
Expliclty write /usr/bin/nylas
Improve vars
Use old nylas.sh
Reinstate APM to better scope this diff
Test Plan: Test on Mac, Windows, Linux
Reviewers: evan, jackie, juan
Reviewed By: jackie, juan
Differential Revision: https://phab.nylas.com/D3411
Summary: Add reminders plugin which lets you set reminder if you don't get a reply for a message within a specified time in the future
Test Plan: TODO
Reviewers: halla, bengotow, evan
Reviewed By: halla, bengotow, evan
Differential Revision: https://phab.nylas.com/D3356
Fixes to generated form error handling
Remove console fix css
Styles with tokenizing field and generated form
Gen form fixes for required
Gen form styles
Fix datepicker in generated form
Can compute plain text for messages
Add resolvePath. Fix bug in sidebar scoring
Plaintext fixes
Use new syntax for global plugin actions
fix(styles): fix input[type='url'] syntax error in inputs.less
Remove sendToAllWindows action
Style fix to generated form
bump(SFDC): 0.4.100
Trigger AppVeyor
Trigger AppVeyor
Add ci-build to appveyor yml
Only build mac
Publish all builds that make it to AppVeyor or Travis
Bump submodule
Update submodule to init recursively for appveyor
feat(win): add getAllWindowDimensions
bump(SFDC): 0.4.101
fix(form): generated form handles disabled inputs
Make tokeizing field editable
bump(SFDC): 0.4.102
bump(SFDC): 0.4.103
bump(SFDC): 0.4.104
bump(SFDC): 0.4.105
🎨(salesforce): Highlight prefilled fields
Form fixes
Fix prefill class
Fix z-index of fieldsets
Refactor our BoldedSearchResult component
Move and split sidebar section into thread list and toolbar
Fixing referenceTo
bump(SFDC): 0.4.106
bump(SFDC): 0.4.107
bump(SFDC): 0.4.108
Fix delete object from form
Don't show tokenizing input field borders on window
Close popover after adding existing opportunity
Fix required fields
bump(SFDC): 0.4.109
Merge submodule with master
Only store raw data for full object fetches
Use Salesforce error reporter
Refactor form and smart fields
Fix form validation
Remove DOM form validation
bump(SFDC): 0.4.110
Fix mini month view
bump(SFDC): 0.4.111
Fix Record Type layouts
bump(SFDC): 0.4.113
Fix click target
bump(version): 0.4.53 and update Changelog
fix(changelog): Update changelog to reflect latest puublished release
fix(thread-sharing): Update popover style
bump(build)
fix(thread-sharing): Find-thread, incr timestamp delta to 1min in ms
🎨(thread-sharing): Prefer url and querystring modules to parse url
fix(mail-merge): Correctly handle empty column names
fix(thread-sharing): Throw error when thread is /not/ found
fix(thread-sharing): Timestamp range in seconds
fix(N1.sh): Allow path to working copy to have spaces
bump(electron): Electron 1.4, node-sqlite 3.1.4+fts
fix(keymaps): Correctly map mod+z to undo, instead of just z (#2663)
fix(tutorial): Minor tweaks, finalized styling
Add link for Darkish theme (#2854)
Fix typo: dependencesi > dependencies (#2838)
feat(channels): Choose an update channel! Limited time only!
Summary: Just a small select input.
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D3282
fix(logging): Fix query logging: escape '%' properly
fix(trial): Compute “days remaining” in timezone-aware way
fix(util): Utils.deepClone properly clones dates
Merge submodule with master
bump(SFDC): 0.4.114
fix(trial): Move”days left” bar to the sidebar, new design
fix(lint): import ui-variables for linter
Refactor object store and gen form updates
feat(msg-list): Don't make participants mailto links, add context menu
fix(long-connection): Throw error for reporting, instead of just logging
design tweaks, breaking css up into files, update readme (#2858)
fix(darkside): `script/grunt lint` requires explicit LESS includes
fix(specs): Display which tests are console.logging
fix(promise): Don't use deprecated Promise.longStackTraces()
fix(error): Let APIErrors have proper stack traces
Update submodule
Revert "fix(promise): Don't use deprecated Promise.longStackTraces()"
This reverts commit ac7602155c.
Bump submodule
bump(SFDC): 0.4.115
fix(specs): Fix tests that were console.logging, bump coffee-react
fix(drag-drop): Restore support for thread dragging
fix(thread-sharing): Fix unloading plugin
fix(auth): Update autofill for Fastmail.fm
fix(tooltips): Position relative to custom container for composer
lint(*): Fix issue breaking the build
bump(react): 15.3.x, warning removal, thread-sharing tweaks
es6(db): Convert attribute class declarations to ES2016
es6(db): Didn’t wait for NylasLint…
hack(channel-picker): Hide Salesforce for now
fix(accounts): Restore account re-ordering
fix(specs): attribute conversion fixed bugs, broke specs
fix(task-queue): performLocal now operates serially
Revert "fix(task-queue): performLocal now operates serially"
This reverts commit 5274ce3543.
Add back in `isSameDomainAsMe`
es6(db): Query-related classes moved to ES2016
fix(task-queue): task queue dependencies are only for preceding tasks
bump(SFDC): 0.4.116
Revert "fix(task-queue): task queue dependencies are only for preceding tasks"
This reverts commit e1e8c1cd9429b5aa20e19d4e2b8eca7215aa4a2c.
Add sequentialId check to tasks
Design pass on SF icons
fix(search/long-conn): Process results buffer before ending connection (#750)
NylasLongConnection ends the connection when the 'end' event is emitted
by the `request` object. When this happens, the global connection buffer is cleared.
Also, the global buffer holds the data we've received from the connection, and
whenever we receive new data, we accumulate it in the buffer and call a processBuffer function
which is throttled to 400ms.
Given that the buffer is global state, and processing occurs
asynchronously with a delay of up to 400ms, if the 'end' event on the connection is
fired before we actually get to process the buffer, we would clear it and show no results.
This scenario currently only affected search because if we accidentally
threw away some data when streaming deltas, we will get that data again
when we reopen the delta streaming connection.
fix(tray): Flipped logic in displaying unread count
Add section to Message footer
bump(SFDC): 0.4.117
fix linter
bump(electron): Update to 1.4.1 to fix intermittent Symbol() error
es6(db): Query builder converted to ES6
fix(long-connection): `close` instead of `end` on network end event
NylasLongConnection.Status.Ended means that we can't open the
connection again. When we get a network level 'end' event, that doesn't
map to our meaning of `Ended`, so we should just close it instead
Fix db setup
bump(SFDC): 0.4.118
feat(transforms): Replace regexp body transforms with DOM approach
Summary:
We originally didn't do this because creating a DOM tree was loading images.
Using range.createContextualFragment seems to do it without the tree ever
being attached.
Accompanying changes to src/pro are here:
https://phab.nylas.com/D3300https://github.com/nylas/edgehill/compare/bengotow/draft-dom-transformations?expand=1
Also rename applyTransformsToDraft => applyTransformsForSending. Needed
a new name because the function signature has changed. AFAIK there are no
open source plugins using the old functions.
Test Plan: All specs updated
Reviewers: evan, juan
Reviewed By: evan, juan
Differential Revision: https://phab.nylas.com/D3299
fix(tooltips): Defer display of background, ensure dot inside window
bump(SFDC): 0.4.119
Merged in latest master from N1
fix(attribute): fix es6 conversion error
bump(SFDC): 0.4.120
Include calendar fix
fix(warnings): Fix warnings for react unkown dom prop
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
fix(attribute): fix es6 conversion error
fix(mail-merge): fix `applyExtensionTransformsToDraft` rename
bump(SFDC): 0.4.121
Add welcome modal with video
Move close button to modal component and update styling
Fix linter errors
fix(help): Better help URL
fix(mail-merge): Add test coverage
Add jitter to BackoffTimer
Summary:
This should help us avoid the thundering herd problem if we have some
kind of API outage affecting a wide number of clients.
Test Plan: Tests
Reviewers: bengotow
Reviewed By: bengotow
Subscribers: juan
Differential Revision: https://phab.nylas.com/D3297
fix(contact-sidebar): Correctly update selected contact
Sometimes, when selecting a contact (with name, email) inside a thread,
the dropdown (`<select>`) did not correctly reflect the selected
contact.
This was because when focusing a contact, the FocusedContactStore
queried that contact from the database just by email, and the contact
retured from the database became the focused one. However, sometimes the
returned contact might have the same email but different email, and
given that the `<select>` component is keyed by both name,email, it
couldn't find the appropriate <option> to render, so it could not update
to reflect the newly selected contact
Now, the FocusedContactStore queries by email and name to prevent this
Fix broken test
Summary:
Fixes a test that was broken due to my unfamiliarity with
CoffeeScript :-/
Test Plan: Tests
Reviewers: bengotow
Reviewed By: bengotow
Subscribers: juan
Differential Revision: https://phab.nylas.com/D3302
feat(inline-images): Drag & drop or paste inline images
Summary: Initial support for inline images. Tests still forthcoming!
Test Plan: WIP
Reviewers: mark, juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3295
Revert "fix(task-queue): performLocal now operates serially"
This reverts commit 5274ce3543.
fix(lint)
es6(db): DatabaseTransaction & Query moved to ES6
fix(tasks): Add instrumentation to Task's performLocal
A slow performLocal may be one of the causes of #2725
update: Update CHANGELOG for v0.4.55
fix(whitespace)
fix(install-location): Update language and remove buggy regex
fix(tasks): Report slow performLocal only when it takes > 500ms
fix(mail-merge): Reduce max number of emails to 250
Almost always, you will get rate limited trying to send 500 emails.
Reduce to 250 to make it more reasonable
💄(sidebar): Github repos should not wrap
fix(sidebar): Command-click + href to open in background
Global window event handler should work when clicking elements /inside/ of an a tag with an href.
💄(mail-merge): Fix alignment and height of tokens
fix(composer): No need for overlaid z-index: 10, appearing over menus
fix(db): Add an index on Thread.client_id for modelify
fix(overlaid-comps): Check if supports preview only after we know exists
fix(warnings): Correctly remove all unknown props warnings
fix(thread-list): Use interaction handlers, don’t update selection directly
fix(drafts): Sanitize quoted text to avoid overlaid component issues [!!]
fix(lint): Change variable to const
fix(search): Update local search syntax to include more results
Add prefix search. Previously, if searching for a thread with a specific
subject, you had to type the entire subject. Searching for just a prefix
wouldn't return the result.
This should not affect any of the current search results, only add more results
fix(react): React refuses to add `partition` attr to webview
fix(identity): Always refresh accounts after identity
This fixes an issue where changing your Nylas ID didn’t refresh your accounts, and N1 would still think they were invalid.
fix(db): Messages with empty bodies always showing loading spinner due to ‘’ == null
Bump submodule
fix(composer): Dedupe registered key bindings to avoid double undo in composer
fix(calendar): CSS layout fix for Chromium 53
fix(mail-merge): Reduce limit to 150 messages, improve error handling
fix(composer): Add additional isMounted checks
Resolves this exception: https://gist.github.com/jstejada/a26dc6a7a2896dcef9be3cec60eaecdb
fix(perspectives): More robust validation of saved perspectives, never open to blank screen
fix(specs): Fix mail merge specs
🎨(thread-sharing): Fix icon
fix(lint): Fix coffeelint errors
fix(draft-list): Don't render html string in draft subject
fix(dev): Pretty print deltas
🎨(activity-list): punctuation
fix(window-state): Per electron#7278, save state in beforeunload
Related:
https://github.com/electron/electron/issues/7278https://github.com/atom/atom/pull/3223/files
As of Chromium 36, unload is async and @zcbenz does not think it happens reliabily in Electron. Move saving of window state to beforeunload, following suit with Atom.
fix(composer): Wrap composer instead of allowing overflow-x
fix(spec): remove unnecessary messages & prevent extra hot window
bump(SFDC): 0.4.123
fix(linter): fix linter error
fix(linter): fix linter error
rm(ship-logs): Remove unused log shipping, prevents many-processes bug on win32
feat(bios): Linkify twitter hashtags and mentions in bios
fix(composer): When pasting links that are tracked, extract actual link
fix(self-hosting) Don't load packages that don't support self-hosting
feat(self-hosting) Add onboarding page about self-hosting plugin restrictions
bump(verison): 0.4.56, more items in changelog
fix(data-source): Wait until the next cycle to cleanup
Fixes a crash when switching to the thread list from the draft list, where there are very briefly zero observers.
💄(share-thread): Fix positioning of share thread button
fix(tutorial-tips): Don't display when component is not visible
fix(participants): When copying, include space #2871
fix(spellcheck): Do not spellcheck <code>, <a>, <pre> tags
This fixes#2877. The templates feature becomes broken when variable names contain misspellings.
fix(specs): Minor spec fixes
fix(composer): enable click regions on margins of composer
Change padding, margins, and borders to allow you to click on the left
margin of to, cc, bcc, from, subject fields as well as the composer
margins both above, left, and to the right of the composer.
Ensured attachments and other assets show up in correct spots
Ensure subject looks correct for mail merge
fix(composer): can shift-tab more places
Allow shift-tab to go back to subject from anywhere except in front of a
tab character
fix(composer): fix margin when editing contact chip
fix(composer): tokenizing text field trigger logic moved to composer
Put acess tokens and refresh tokens in keychain
fix modal spacing
bump(SFDC): 0.4.125
fix tokenizing field margins
fix(tutorial-tips): Recompute pos when theme changes
fix(share-thread): Closed when blurred when blurred or new thread selected
fix(dev-mode): Don’t save to config.json, use flag instead
Turns out even the built, packaged version of the app can be restarted into dev mode by adding `—dev` to argv and using the new relaunch API.
es6(db): Move DatabaseStore to ES6
💄(outline-view): Add title attr for tooltips
fix+🎨(notifs): Cleanup, handle nonexistent thread when opening notification
Notifications now check to see the thread they are supposed to open
exists.
Also, clean up FocusedContentStore._onFocus so that it doesn't have the side
effect of dispatching another action and messay logic.
Instead, added Actions.ensureCategoryFocused, to focus any category, and which
should be used separately from focusing content (notifications now use
this action for "opening" the thread)
Also, convert FocusedPerspectiveStore to ES6
fix(specs): Activity List
fix(composer): enable click regions on margins of composer
Change padding, margins, and borders to allow you to click on the left
margin of to, cc, bcc, from, subject fields as well as the composer
margins both above, left, and to the right of the composer.
Ensured attachments and other assets show up in correct spots
Ensure subject looks correct for mail merge
fix(composer): can shift-tab more places
Allow shift-tab to go back to subject from anywhere except in front of a
tab character
fix(composer): fix margin when editing contact chip
fix(composer): tokenizing text field trigger logic moved to composer
🔪 Last remaining traces of coffeescript in submodule!
fix(tools): Make `arc lint` great again
Add proper arc config for linting ES6 files with eslint
fix(files): When download mode is “manual” prompt about inline attachments
Summary:
When you have your "Download attachments for new mail" setting set
to "manually", inline images always appear broken with no explanation.
This patch listens for the image load to fail and displays a button which
queues the fetchFile task on click. This seemed like the best approach because
it doesn't slow down the loading of the message with more fstats / lookups.
(Seeing if the file has already been downloaded is an async operation)
Test Plan: No specs atm
Reviewers: evan, juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3313
feat(sidebar-notifs) Create sidebar notifications to replace old bars
Summary:
Move the old bar notifications to the sidebar, and only display one notification
at a time using a priority-rating system. Remove all of the old notification
infrastructure.
Test Plan: Added specs, also reproduced notifications locally
Reviewers: bengotow
Reviewed By: bengotow
Subscribers: juan
Differential Revision: https://phab.nylas.com/D3310
bump(submodule)
fix(lint)
fix(phising): Handle scenarios where input is malformed (Sentry 51642)
https://sentry.nylas.com/sentry/edgehill/group/51642/
fix(templates): Handle error when scanning dir (Sentry 44351)
https://sentry.nylas.com/sentry/edgehill/group/44351/
fix(perspectives): Restore when only account cannot be found (Sentry 59061)
https://sentry.nylas.com/sentry/edgehill/group/59061/
refator(notification): move base notification to nylas-component-kit
Remove all salesforce objects on logout
Add syncing of salesforce objects
Summary:
Depends on D3327
- Also remove all coffeescript
- Make it so salesforce mail label grabs opportunity from database
- Make sure metadata is kept in sync when salesforce objects are deleted
- Set up stub for Salesforce Object cache via SalesforceObjectStore
- Cleanups here and there
Test Plan: Manual
Reviewers: jackie, evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D3328
fix(db): Switch to better-sqlite3, resolves offline issue
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
Fixing broken screenshot link (#2911)
Replacing with new screenshot
fix(onboarding): Fire event when user selects account type
bump(sqlite3): Fix issue with CI build / bindings location
fix(reporter): Handle errors cleaning log files (Sentry #6887)
Switch spellcheck libaries
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
Update Windows.md
fix(jquery): remove jquery
fix(spec): remove unused spec helpers
fix(specs) convert nylas-protocol-handler-spec to ES6 (#2886)
fix(win32): Still need custom sqlite3 build cmd for win32 😥
This also includes a bump of the better-sqlite3 module to support compilation on ia32.
feat(popout-threads) Add functionality to open threads in popout windows
Summary:
Threads can now be opened in separate windows. This can be done via the popout
icon next to the print icon, or by double-clicking the thread when in double-
pane mode. Note that the single-click action is still fired, which is why
double-clicking does not work in single-pane mode. The popout icon changes to a
pop-in icon while in the popout window, to allow users to collapse it back into
the main window.
Test Plan: Tested locally
Reviewers: evan, juan
Reviewed By: juan
Subscribers: sdw
Differential Revision: https://phab.nylas.com/D3332
fix(analytics): Add pgp encryption events
Email Encrypted
Email Encryption Errored
Email Decrypted
Email Decryption Errored
feat(win32): Allow N1 to become the system-wide mailto: handler
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
bump(version): 0.4.57
(0.4.58 was accidentally in prev commit)
fix(readme): Improve Win32 build instructions
fix(readme): More Win32-specific instructions
fix(spellchecker): Use cross-platform misspellings, fix lint error
feat(calendar): can pick which calendars you want displayed
Summary:
Adds a resizable column next to the calendar that lets you pick which
calendars you want to turn on and off.
The picker sidebar styling mimics that of the main account sidebar.
Calendars are grouped by account.
We store the disabled calendars in in your config.
I added a `notIn` SQL method so it'll perform `WHERE calendarId NOT IN
['a', 'b', ...]` instead of `NOT (WHERE calendarId IN ['a', 'b', 'c'])`
I wanted it to be an exclusion (instead of inclusion) list so the default
was "all on" and we didn't need to always fetch the full list of
calendarIds from the database to compare against.
This also fixed a test that was failing constantly: The Query Subscription
Pool Spec was not being properly reset on each test. As a result, the test
would fail with an instance of a query subscription that Jasmine would
attempt to pretty print. Jasmine would fail to pretty print it because of
a jasmine bug that fails to properly display Objects with null prototypes.
The DatabaseStore's EventEmitter has a property with a null prototyp
causing the error
Test Plan: manual
Reviewers: bengotow, juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3336
fix(linter)
Merge submodule with master
Bump submodule
Bump database version and submodule
fix(contact): add hasSameDomainAsMe method to Contact
Better email syncing with Salesforce
feat(dock): Automatically add N1 to the OS X dock upon install
Note - you need to `killall Dock` to see this after it happens
Add main window calendar package
Summary: Add tiny helper app for calendar goodness
Test Plan: No tests yet
Reviewers: juan, halla
Reviewed By: halla
Differential Revision: https://phab.nylas.com/D3346
cleanup(*): Remove dead .bowerrc, .gitignore files
es6(db): Convert the ORM specs to ES2016
bump(Electron): 1.4.3
fix(license): Swap ref to GPLv3 with the whole thing so GitHub picks it up
Clean up spec-bootstrap and jasmine-helper
Convert spec-suite to es6
Extract out jasmine reporters
Move global imports back to jasmine-helper
Extract to N1SpecRunner
Fold jasmine-helper into spec runner
Convert `spec-suite` to `n1-spec-loader`
Convert spec-helper to es6
Remove unused methods from spec-helper
Move waitsForPromise to jasmine-extensions
Move spec runner & deps into `n1-spec-runner` folder
Remove unused spec-helper-platform
Move specs into subfolders
Initial extraction of all methods out of of spec-helper
Fixes to spec-helper extraction
fix(spec):
Dramatically clean up and simply the spec bootup process.
Converting spec bootup system to es6 from coffee.
Converted old `jasmine-helper`, `spec-helper`, and `spec-suite` to a new
`n1-spec-runner` file.
Each of these old files had tons and tons of code related to various parts
of the spec bootup and running process.
Each of those parts have been extracted into individual files
Fix linter
Add icons to object types in picker
Remove opp references in popover
bump submodule
fix(spellchecker) Add a cache to improve performance
fix(notifs): Don’t render empty <img />
lint(*): Bump to ESLint 3.8
Update linter
bump submodule
bump submodule
bump submodule
bump submodule
bumpd submodule
Add sync thread toggles
Search focused contact by email
fix(mailto): Support body with \n or \r characters
Related to #2923
fix(thread-popout) Add missing packages to the 'thread-popout' window
Summary: Missed some non-composer packages that should be in the 'thread-popout' window
Test Plan: Tested locally
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D3352
fix(mailto): Missing return in URL handling
fix(beta): Add notif when on beta channel
fix(db): Return; preventing ThreadSearch indexing
bump(version): 0.4.58
fix(specs): Don’t run update channel check in specs
fix(search): React warns, convert to ES2016
fix(search): Missed a .default
fix(spellcheck): Don’t include cld sources in build
fix(tooltips): Prevent tooltips from breaking wrapped components
fix(overlaid): Preview button was just invisible?
fix(auth): Hide title when long acct. err present
fix(onboarding): Don’t display “Welcome Back” screen
fix(accounts): Return correct list of email addresses
bump submodule
fix(misc) React warnings, kill cjsx
fix(accounts): Return correct list of email addresses
💄(thread-window): Update pop-out icons
lint(react): InlineImages don’t get session at send-time
fix(mail-merge): Upload files per draft to fix inline images
fix(mail-rules): Allow recipient filters to contain names #2942
bump(version): 0.4.59
💄(thread-window): Add thread-popin icon
update(changelog): 0.4.59
fix(search): Use fts search index for typeahead results
Summary: This improves performance of the search typeahead
Test Plan: Manual
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D3363
fix(popover): 🔪 deprecated popover
fix(popover) Actually 🔪 deprecated popover
feat(flow): Add Flow to Nylas N1
Add flow-typed annotations
Ignore annoying submodules
Add /* @flow */ header to all js & es6 source files
Fix error about having number keys for objects
Remove @flow config from compile-support
Check es6 files
Add jasmine to flow
Revert "Add /* @flow */ header to all js & es6 source files"
This reverts commit c5a57bc402c53633b407b557f28ad12eaa8f27fe.
Update submodule
Add nylas global interface file
Fix generated form and bump
Fixes to generated form
Use customComponent in task
fix(warning): Don't render participant picker with null value
fix(thread-popout): Display the hidden message toggle in the thread-popout
Summary:
Also, maintain the perspective that the thread was opened in, so that the
proper messages are hidden (e.g. hide deleted messages when opened from the
inbox, but not when opened from the trash folder)
Test Plan: Tested locally
Reviewers: juan
Reviewed By: juan
Differential Revision: https://phab.nylas.com/D3366
rm(grim): We’re not using Grim for deprecations
feat(quick-replies): Reply from Mac notifications
use single regex exec for toEquivalentEmailForm (#2962)
Fix JSON spacing (#2958)
Match JSON style to rest of file
Fix issue #2758. Press Escape after a finished search to get back to … (#2939)
* Fix issue #2758. Press Escape after a finished search to get back to Inbox
Use a keydown event when search bar is in focus to capture escape key press
* fix(search): Convert to ES2016
🎨(notifications): Remove indent and left padding from notifications
Revert "Fix issue #2758. Press Escape after a finished search to get back to … (#2939)"
This reverts commit 6377da8291.
This was already fixed in a95c17bce3
fix(utils): Don’t overwrite _ in global scope
feat(tokens): Multi-select for tokenized text fields
Test Plan: Lots of tests, mostly updated to enzyme. Not many new ones.
Reviewers: evan, juan, jackie
Reviewed By: juan, jackie
Subscribers: juan
Differential Revision: https://phab.nylas.com/D3374
fix(tokenizing-text): Re-add shouldBreakOnKeydown prop
build: bump eslint-plugin-import version
feat(field): Let TokenizingTextFields be disabled and onEditMotion