Summary:
Package names must match directory names
Not going to use new Swithc component, but might as well be part of component kit
Move APMWrapper into core so it can be used from anywhere
Move manual package install coe to package-manager
Gray out window titles when in the background
Do not allow multiple onboarding windows at the same time
Finalize styling f initial-prefs and initial-packages, make it work (only github package atm)
Other nits
Change the welcome copy:
- Call it easy to extend vs easy to use
- Remove the subtitle from the first screen which doesn't really fit
- Make the second page emphasize that its created /for/ developers and easy to extend with Javascript.
- Explain what the sync engine is rather than saying it's "faster and more extensible" (??)
Test Plan: Run tests
Reviewers: evan, dillon
Reviewed By: evan
Maniphest Tasks: T3346
Differential Revision: https://phab.nylas.com/D2079
Summary: Adds a prominent blue button to email us feedback
Test Plan: Run tests
Reviewers: dillon, evan
Reviewed By: dillon, evan
Differential Revision: https://phab.nylas.com/D2081
Summary: Fixes in tabbing and css updates in composer
Test Plan: new tests
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D2075
- rm dead addAccount code that came back in a merge
- use command everywhere to open onboarding
- centralize close vs. quit logic in an OnboardingAction
- fix issue where the window size is calculated improperly because we have a padding value which is a fraction of height. In fact, remove no-top / padding-top 10% for good.
- Do not sort and then reverse the request history every time it's requested
- Do not allow the request history to grow forever (cap at 200)
- Do not stringify tasks until they're clicked
Otherwise, if you've ever previously authorized your account against Edgehill's
Google client ID but need to reconnect it, the consent page is bypassed and no
refresh token is returned to the callback URL, breaking the rest of the flow.
Summary:
Now with more CSS
Also fixed flow for when you're just adding an account
Fixes T3805
Test Plan: manual :(
Reviewers: drew, bengotow
Reviewed By: bengotow
Maniphest Tasks: T3805
Differential Revision: https://phab.nylas.com/D2071
- The FocusedContactStore was triggering too often, and leaving it up to the FullcontactStore to fetch the full Contact model for the focused contact (pulled from thread.)
The FocusedContactStore triggers more responsibly, and registering for the role "MessageListSidebar:ContactCard" now gives you the focused contact as a full database model. The whole ContactCard region also fades in and out.
Summary:
Better error handling in the account settings page and a loading spinner
Add Account... replaces "Link External Account", and it works
Clean dead code from onboarding pages, remove base class component
Always show the account switcher
rm dead EdgehillAPI code, AccountStore now manages accounts and credentials in config, not in database
Fix specs
Test Plan: Run tests
Reviewers: dillon, evan
Reviewed By: evan
Projects: #edgehill
Differential Revision: https://phab.nylas.com/D2059
Summary: Simplify the default window size, restore window size when the main window is loaded, fix serialization of packages in beforeunload.
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D2061
Summary:
Remove logout menu item and buttons, turn Link External Account to Add Account
Onboarding window starts hidden, is shown when react component is mounted and sized
Use get/setBounds to animate position and size at the same time smoothly
Fix specs, change 401 notice
Delay bouncing to Gmail to show users the Gmail screen momentarily
Make the animated resizing code defer so it doesn't run in a hard loop, and other animations can run at the same time
Bring back crossfade between screens, remove left/right shift on welcome screens
Test Plan: Run tests
Reviewers: drew, evan
Reviewed By: evan
Maniphest Tasks: T3529
Differential Revision: https://phab.nylas.com/D2054
Summary:
Depends on D2049
This change replaces the onboarding flow to include new graphics, copy, and
support for the new Nylas auth flow. New account choosing UI presents a list
of account types, rather than guessing based on an entered email. Pages before
and after introduce the user to different features of the client.
Known issue: Polling for gmail account connection works, but continues even if
you leave the page.
Test Plan: Manual testing.
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D2050
Summary:
Fixes T3510
Fixes T3509
Fixes T3508
Fixes T3549
Extracted clipboard service
Remove unused style prop
Begin extracting quoted text from composer. Spec for clipboard service
Fix contenteditable specs
Begin to extract floating toolbar
Extract out DOMUtils and further extract floating toolbar
Further extracting domutils and floating toolbar
composer floating toolbar extracted
Fixes to hover and link states
Collapse adjacent ul lists
Fix outdent when deleting on a bulleted list
Fix bullet controls
Fixes to list creation and deletion
Add underline keyboard shortcut
Test Plan: manual :(
Reviewers: dillon, bengotow
Reviewed By: bengotow
Maniphest Tasks: T3508, T3509, T3510, T3549
Differential Revision: https://phab.nylas.com/D2036
Summary:
Fixes T3568
The composer windows had the wrong cache in their `ContactStore`s. Since
it's VERY expensive to repopulate a ContactStore's cache, we now have a
`WindowBridge` that allow you to, with a Promise, invoke methods on the
main window instead.
(Still need to fix some tests)
Test Plan: Fixed tests
Reviewers: dillon, bengotow
Reviewed By: dillon, bengotow
Maniphest Tasks: T3568
Differential Revision: https://phab.nylas.com/D2045
Summary:
fixes T3725
changes:
- show the sync mail activity only if number of deltas received is greater than 10
- make the sync mail activity notification persist for longer, since large deltas (>1k) come in intervals of about 25 seconds, which was greater than our previous timeout interval of 15 seconds
- change to clearer copy
- minor style changes to match new copy
Test Plan: tested manually
Reviewers: bengotow
Maniphest Tasks: T3725
Differential Revision: https://phab.nylas.com/D2051
Summary:
fixes T3563
todo
[x] check with @bengotow and @evan -- does this solution make sense to you?
[x] decide on the actual visual cue to the user -- @bengotow you suggested a loader or spinner, but i was thinking that actual copy should be used so it doesn't look like an unhelpful spinner which goes indefinitely. what do you think of the copy here?
[ ] implement spinner similar to sending a draft
[ ] write tests
[ ] verify that we're showing progress in a helpful way
problem
- new users would see nothing in edgehill after they log in, with no indication on why they can't see any of their mail
- in actuality, our backend is actively pulling all their mail to serve it to edgehill
- new users think edgehill is broken because they're unaware of the work that our backend was doing
solution
- when the backend sends deltas to edgehill, we show a message in the activity bar saying that we're trying to get their mail
- we'll show the sync progress
Test Plan: still need to add tests. all previous tests still green.
Reviewers: bengotow, evan
Subscribers: sdw, bengotow, evan
Maniphest Tasks: T3563
Differential Revision: https://phab.nylas.com/D2032
Summary: Fixes T3625
Test Plan: Easy to test by opening/closing reply options dropdown as a large image attachment is downloaded
Reviewers: evan, dillon
Reviewed By: dillon
Maniphest Tasks: T3625
Differential Revision: https://phab.nylas.com/D2034
Summary:
fixes T3628
problem
- mark-as-read button was in most prominent location
- archive button is most used button, but unfortunately in less prominent location
- user is annoyed at inconvenient real estate allocation
Test Plan: tested manually for regressions. all previous tests still green.
Reviewers: bengotow
Maniphest Tasks: T3628
Differential Revision: https://phab.nylas.com/D2033
Summary:
still WIP, but functionality is there.
TODO:
[x] write tests
[x] swap out the current markasread icon for the correct markasread icon that @sdw is making
[x] figure out how to address this point by @bengotow: https://phab.nylas.com/D2024?id=19139#inline-12168
Test Plan: tested manually. still need to write tests though.
Reviewers: evan, bengotow
Reviewed By: bengotow
Subscribers: sdw
Maniphest Tasks: T3483
Differential Revision: https://phab.nylas.com/D2024
Summary: ready for final code review! @evan @bengotow
Test Plan: added some tests for the account switcher
Reviewers: evan, bengotow
Reviewed By: evan, bengotow
Maniphest Tasks: T3546
Differential Revision: https://phab.nylas.com/D2016
Summary:
Participants now collapse Gmail style in the composer field.
New, more declarative system for how we deal with "focusedFields" on the
composer.
Extracted a `CollapsedParticipants` and `ExpandedParticipants` component.
Test Plan: TODO
Reviewers: dillon, bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D2013
Summary: Minor tweaks so that the word is selected and spellcheck / replacement works
Test Plan: No test coverage at the moment - need to think about ways to test selection
Reviewers: evan, dillon
Reviewed By: dillon
Differential Revision: https://phab.nylas.com/D2006
Summary:
write tests for adding/removing existing labels and popover closing
add more tests
address code review comments
fix the tests
add test for creating label
add test for creating label and queueing change label task
add test for creating a folder
add syncback category task spec
make the rest of the tests pass
remove unnecessary parens
add a few more tests
add last test
Test Plan: added some tests. all tests green
Reviewers: bengotow, evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D2010
Summary: Small change that resets focus and keyboard selection after moving threads
Test Plan: Run existing tests, plan to overhaul this whole class so no additioanl tests atm
Reviewers: dillon, evan
Reviewed By: evan
Maniphest Tasks: T3382
Differential Revision: https://phab.nylas.com/D1996
Summary:
Fixes:
- Search bar dropdown doesn’t go away if you focus into a message
- If a search times out, it continues to display nothing
- Clicked “Inbox” from a search and it didn’t clear the search box
Test Plan: edgehill --test
Reviewers: dillon, bengotow
Reviewed By: dillon, bengotow
Differential Revision: https://phab.nylas.com/D2000
Summary:
This started when I noticed that drafts weren't dissapearing from the
draft list after send. This was a pretty big bug because if you ever
clicked on one again and tried to re-send it would throw a 400 error
saying the draft id doesn't exist.
This uncovered a few fundamental issues with the DB.
First of all, the reason the draft list wasn't updating was because the DB
trigger that happened when we got in a new message, was being ignored
since the diff contained no drafts (it's now a message).
The bigger issue was that if you had a draft with only a clientId, gave it
a serverId, and tried to call "save", the REPLACE INTO method would not
update the old object, but rather create a second duplicate. This is
because the `id` field was being used as the PRIMARY KEY, and in this
case, that `id` field changed! The fix was to change the PRIMARY KEY to be
the `cilent_id` instead of the `id` and use that as the REPLACE INTO
index.
We still need the `id` field; however, because all of our reads depend on
that field usually being the serverId
Fixes T3507
Test Plan: See new and updated tests
Reviewers: dillon, bengotow
Reviewed By: bengotow
Maniphest Tasks: T3507
Differential Revision: https://phab.nylas.com/D1992
Summary:
This diff fixes T3389 and makes it possible to define mail views which are not based on a category and focus them in the app.
I think that we need to create a new index on the starred attribute to make sure the query runs fast.
More tests WIP
Test Plan: Run tests, more coming soon!
Reviewers: dillon, evan
Reviewed By: evan
Maniphest Tasks: T3389
Differential Revision: https://phab.nylas.com/D1979
Summary: Fixed a bug bug with the quoted text clearing the bodies on replies
Test Plan: all the tests
Reviewers: dillon, bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D1981
Summary: Also enhancements to the developer toolbar
Test Plan: edgehill --test
Reviewers: dillon, bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D1976
Summary: New draft store extension that highlights misspelled words.
Test Plan: No test coverage yet
Reviewers: evan, dillon
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1972
Summary: Fixes T2095, iFrames resize when images load, when container is resized, etc.
Test Plan: Run tests
Reviewers: dillon, evan
Reviewed By: dillon, evan
Maniphest Tasks: T2095
Differential Revision: https://phab.nylas.com/D1964
Summary: NOTE: this ticket and this diff do not address turning the 'Important' label into a more user-friendly chevron. I created T3477 for that.
Test Plan: added more tests. however, seems like somebody merged some tests which are failing.
Reviewers: bengotow, evan
Reviewed By: evan
Maniphest Tasks: T3454
Differential Revision: https://phab.nylas.com/D1963
Summary: I think I might've broken this when I fixed T3402, but I didn't realize it because I had zero drafts at the time, so this component didn't render for me.
Test Plan: tested manually
Reviewers: bengotow
Maniphest Tasks: T3402, T3480
Differential Revision: https://phab.nylas.com/D1965
Summary:
Adding a simple GitHub plugin that shows a button on the thread view.
If we detect the "open in github" links, then we'll show the button on the
thread.
Test Plan: manual
Reviewers: dillon, bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D1959
A `*` as well as a `-` will start a list.
If you tab anywhere in plain text, it will insert a tab character.
If your shift-tab anywhere in plain text, and the character just before
the cursor is a "tab" character, it will delete that last tab character.
Fix a bug whereby shift-tab and tab will indent/outdent from anywhere
inside of a list.
Fixes T3409
Summary:
WIP: changing the rest of items to make them look correct
fix last draft item in sidebar
add more padding
Test Plan: tested manually. all tests remain green.
Reviewers: evan, bengotow
Reviewed By: bengotow
Maniphest Tasks: T3402
Differential Revision: https://phab.nylas.com/D1943
Summary:
Move sync workers and Edgehill token checks to work window
Move the task queue and database setup to the work window
Move ContactStore background refresh to work window
Store the task queue in the database
WIP
The TaskQueue now puts tasks in the database instead of in a file, which also means it can be observed
Move all delta sync and initial sync to a package, make NylasSyncStore which exposes read-only sync state
DraftStore no longer reads task status. Once you set the "sending" bit on a draft, it never gets unset. But that's fine actually.
If your package lists windowTypes, you *only* get loaded in those windowTypes. If you specify no windowTypes, you get loaded in the root window.
This means that onboarding, worker-ui, worker-sync, etc. no longer get loaded into the main window
ActivitySidebar has a special little store that observes the task queue since it's no longer in the window
Move "toggle component regions" / "toggle react remote" to the Developer menu
Move sync worker specs, update draft store specs to not rely on TaskQueue at all
Test Plan: Run existing tests, all pass
Reviewers: dillon, evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1936
It's possible that 400 characters isn't enough to get any plaintext (if the body begins with a style tag, for example.) Until we get a better solution in place, we need to do this to avoid parsing the king james bible in my draft.
Summary:
This diff replaces the Namespace object with the Account object, and changes all references to namespace_id => account_id, etc. The endpoints are now `/threads` instead of `/n/<id>/threads`.
This diff also adds preliminary support for multiple accounts. When you log in, we now log you in to all the attached accounts on edgehill server. From the preferences panel, you can auth with / unlink additional accounts. Shockingly, this all seems to pretty much work.
When replying to a thread, you cannot switch from addresses. However, when creating a new message in a popout composer, you can change the from address and the SaveDraftTask will delete/re-root the draft on the new account.
Search bar doesn't need to do full refresh on clear if it never committed
Allow drafts to be switched to a different account when not in reply to an existing thread
Fix edge case where ChangeMailTask throws exception if no models are modified during performLocal
Show many dots for many accounts in long polling status bar
add/remove accounts from prefs
Spec fixes!
Test Plan: Run tests, none broken!
Reviewers: evan, dillon
Reviewed By: evan, dillon
Differential Revision: https://phab.nylas.com/D1928
Summary: moved non-view logic outside of the render function, which also helped for testing purposes
Test Plan: added a test, but this also leaves the window open for testing the other use cases beyond T3377. not sure whether we should add tests for this patch or for another ticket.
Reviewers: evan
Reviewed By: evan
Maniphest Tasks: T3377
Differential Revision: https://phab.nylas.com/D1916
Summary: small fix
Test Plan: I didn't add any tests, but this should probably be tested. Not sure the best way to test though. Would love to discuss with somebody!
Reviewers: bengotow
Reviewed By: bengotow
Maniphest Tasks: T3388
Differential Revision: https://phab.nylas.com/D1919
Features:
- Preferences! You can now change all kinds of things from Menu > Preferences, including:
+ Key binding sets (Gmail, Outlook, Mail.app)
+ Theme (light or dark)
+ Mark-as-read delay
+ Attachment downloading policy
+ Sounds and notifications
+ Default reply behavior
- Layout and theme are now remembered when you re-launch Nylas Mail
- You can now star the message under the keyboard cursor by pressing 'S'
Performance:
- Creating drafts is now much faster on long threads
Fixes:
- "Hover and Archive" is now displayed correctly
- Signing in with an email with capitalization ("BEN@Nylas.com") no longer breaks subtle things
- Messages sent yesterday are now shown with relative time (2:31PM, 12 hours ago)
- NylasSyncWorker now backs off when it encounters network failure
- On Windows, the database is deleted properly when you log out
- Archiving now properly sends mail to All Mail in Gmail
- Images inside some emails now render without becoming distorted
- Mailto link handling is now case-insensitive
Summary:
Fix edge cases where _getRangeInScope is null, fix logic errors
fix(1932) Edge case where we can't find a container for the message Id we're asked to scroll to
Check view exists before trying to perform actions. Will be fixed once keybindings are a React container
Test Plan: Run specs
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1906
Summary: @evan -- would love to get your opinion on this approach!
Test Plan: add new tests
Reviewers: evan
Reviewed By: evan
Subscribers: evan
Maniphest Tasks: T3360
Differential Revision: https://phab.nylas.com/D1904
Summary:
"results.length" not "result.length".
Eventually I want MessageBodyProcessor to be the public interface to another process which asynchronously runs message body parsing? At the very least, caching the results means that miscelaneous refreshes to the message list don't incur significant string processing cost.
Test Plan: No new tests here
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1898