Summary:
fix(attachment): Bad filenames breaking icons
fix developer bar colors
fix critical bug with files
Render small attachments inline-block, without hover effect, and with nice dotted transparency background
Test Plan: No new tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1661
Summary:
Fixes T1927
- Allow email addresses to contain `_`
- Centralize logic for parsing string into Contact objects into ContactStore
- Always decode and then encode mailto links to ensure spaces, special characters are properly encoded and that the URL is valid
- Add specs for mailto:// behavior
Test Plan: Run wonderful new tests covering mailto://
Reviewers: evan
Reviewed By: evan
Maniphest Tasks: T1927
Differential Revision: https://phab.nylas.com/D1657
Summary:
Allow Database models to create indexes, but don't autocreate bad ones
fix minor bug in error-reporter
Fix index on message list to make thread list lookups use proper index
Developer bar ignores state changes unless it's open
DatabaseView now asks for metadata for a set of items rather than calling a function for every item. Promise.props was cute but we really needed to make a single database query for all message metadata.
New "in" matcher so you can say `thread_id IN (1,2,3)`
Add .scroll-region-content-inner which is larger than the viewport by 1 page size, and uses transform(0,0,0) trick
ScrollRegion exposes `onScrollEnd` so listTabular, et al don't need to re-implement it with more timers. Also removing requestAnimationFrame which was causing us to request scrollTop when it was not ready, and caching the values of...
...clientHeight/scrollHeight while scrolling is in-flight
Updating rendered content 10 rows at a time (RangeChunkSize) was a bad idea. Instead, add every row in a render: pass as it comes in (less work all the time vs more work intermittently). Also remove bad requestAnimationFrame, and prevent calls to...
...updateRangeState from triggering additional calls to updateRangeState by removing `componentDidUpdate => updateRangeState `
Turning off hover (pointer-events:none) is now standard in ScrollRegion
Loading text in the scroll tooltip, instead of random date shown
Handle query parse errors by catching error and throwing a better more explanatory error
Replace "quick action" retina images with background images to make React render easier
Replace hasTagId with a faster implementation which doesn't call functions and doesn't build a temporary array
Print query durations when printing to console instead of only in metadata
Remove headers from support from ListTabular, we'll never use it
Making columns part of state was a good idea but changing the array causes the entire ListTabular to re-render. To avoid this, be smarter about updating columns. This logic could potentially go in `componentDidReceiveProps` too.
Fix specs and add 6 more for new database store functionality
Test Plan: Run 6 new specs. More in the works?
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1651
Summary: Resolves T1984 fixes T1984 closes T1984
Test Plan: Run two new test cases
Reviewers: evan
Reviewed By: evan
Maniphest Tasks: T1984
Differential Revision: https://phab.nylas.com/D1654
Summary:
Add spinner and refactor container view to be router
add `NylasStore` as a global importable. specs for APIEnv
login page fixes
add old fixes to container view
finish extracting pages
fix onboarding flow
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D1652
Summary: We now show the inspirational quotes only when in list mode and viewing a tag. When you're viewing search results, or when you're in three-pane mode, you now see a more generic empty state.
Test Plan: No tests yet, may want to see if this refactor sticks when we start adding more empty states
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1642
Summary:
Silence buffered process spec
Clean up error reporter and spec bootup
fix errors in draft store spec
package manager spec and theme spec fixes
Fix memory leak in draft store
Test Plan: mmmmmm tests. Run all those green passing tests :)
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D1628
Summary:
Give DatabaseStore trigger payload a 'type' so that you can handle the deletion of objects (clear focus if the object is focused, know to remove it from database view)
Fix specs and add one for new DatabaseView => unpersist handler
Test Plan: Run new test case
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1639
Summary: Begins to fix T1866, but for now only doing a LIKE instead of FTS4, because there are many, many other things to think about there.
Test Plan: No new tests. I still want to rewrite the whole search bar.
Reviewers: evan
Reviewed By: evan
Maniphest Tasks: T1866
Differential Revision: https://phab.nylas.com/D1634
Summary:
Fixes T1868
The hidden sizing window was not getting whitespace properly and the width
was different because of different paddings
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Maniphest Tasks: T1868
Differential Revision: https://phab.nylas.com/D1623
Summary: Adds hover actions to threads in the thread list, uses overflow:hidden to improve thread list render times
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1621
Summary:
Fix bug in apm_wrapper
Refactor model selection so that it's easier to understand the logic for split vs list mode
Test Plan: Run new specs (WIP)
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1619
Summary:
There's now an `updateLevel` that can be set in the config file.
It has the valid values of "major", "minor", "patch", and "commit". By
default it upgrades on the "patch" level.
If you want to be on the bleeding edge, manually change the config file to
add `updateLevel: 'commit'`
Test Plan: A new `auto-update-manager-spec` :)
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D1567
Summary:
In order to create a Contact from a Lead you need to:
1. Create an Account
2. Create an Opportunity and link it to the newly created Account
3. Create a Contact and link it to the Account
4. Create an OpportunityContactRole and link it to both a Contact and an
Opportunity
Working on passing pending object ids around
add in window openers
create lead and check if lead got deleted
Saving form
conversion workflow syncs with opportunities now
Test Plan: manual
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D1599
Summary:
When two or more buttons are grouped together, cut the padding off one interior edge so they're spaced more appropriately
Remove source list graphics for active states we aren't using
Starred in the sidebar
Small fix to the feature that keeps the selected item visible as you scroll
Test Plan: No new tests yet
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1607
Summary: Fixes T1191
Test Plan: No new tests to see here.
Reviewers: evan
Reviewed By: evan
Maniphest Tasks: T1191
Differential Revision: https://phab.nylas.com/D1603
Summary:
ScrollRegion with support for tooltips shown as you scroll, custom tooltips for thread list and message list.
fix(specs): all other scrollbars hidden to prevent incompatibility
fix scrollbar sizing when used in conjunction with resizableregion
Test Plan: Need to write tests and docs for ScrollRegion - no tests yet
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1597
Summary: Add docs for new RetinaImg modes
Test Plan: Not much to test, except that it looks good!
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1595
Summary:
This diff attempts to improve the responsiveness of the app when you hit "Reply". This is achieved by being smarter about creating the draft and loading it into the draft store, and also by allowing the compose* actions to take objects instead of just IDs (resulting in a fetch of the object).
Allow Actions.composeReply,etc. to optionally be called with thread and message objects instead of IDs. This prevents a database lookup and the data is "right there."
Create DraftStoreProxy for new drafts optimistically—this allows us to hand it the draft model we just created and it doesn't have to go query for it
When we create a new Draft, immediately bind it to a LocalId. This means that when the MessageStore receives the trigger() event from the Database, it doesn't have to wait while a localId is created
When MessageStore sees a new Message come in which is on the current thread, a draft, and not in the localIds map, assume it's a new draft and shortcut fetchFromCaceh to manually add it to the items array and display. This means the user sees the...
...draft instantly.
Remove delays from focusing draft, scrolling to draft after content is ready. I actually removed these thinking it would break something, and it didn't break anything.... Maybe new Chromium handles better?
Fix specs
Test Plan: Run specs - more in progress right now
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1598
Summary:
Features:
- ThreadListParticipants ignores drafts when computing participants, renders "Draft" label, pending design
- Put the WorkspaceStore in every window—means they all get toolbars and custom gumdrop icons on Mac OS X
Bug Fixes:
- Never display notifications for email the user just sent
- Fix obscure issue with DatabaseView trying to update metadata on items it froze. This resolves issue with names remaining bold after marking as read, drafts not appearing in message list immediately.
- When you pop out a draft, save it first and *wait* for the commit() promise to succeed.
- If you scroll very fast, you node.contentWindow can be null in eventedIframe
Other:
Make it OK to re-register the same component
Make it possible to unregister a hot window
Break the Sheet Toolbar out into it's own file to make things manageable
Replace `package.windowPropsReceived` with a store-style model where anyone can listen for changes to `windowProps`
When I put the WorkspaceStore in every window, I ran into a problem because the package was no longer rendering an instance of the Composer, it was declaring a root sheet with a composer in it. This meant that it was actually a React component that needed to listen to window props, not the package itself.
`atom` is already an event emitter, so I added a `onWindowPropsReceived` hook so that components can listen to window props as if they were listening to a store. I think this might be more flexible than only broadcasting the props change event to packages.
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1592
Summary:
Update a few more packages to deactivate properly
Miscelaneous fixes
Initial commit of new settings package
WIP
WIP - can load and unload and install / uninstall
Click to create new boilerplate package, package updating
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1582
Summary: Remove debounce on initial view creation that was causing `retrievePage` to be called twice
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1587
Summary:
- ModelViewSelection shouldn't break if you accidentally call it with null
- ModelViewSelection methods should throw if you pass non-items, need to do this to narrow down other Sentry errors
Test Plan: Run new specs
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1589
Summary: This fixes T1766 and probably others as well, ensuring that commands not handled by the browser-side are still delivered to the main window even when it's hidden.
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Maniphest Tasks: T1766
Differential Revision: https://phab.nylas.com/D1586
Summary:
0.27.1? Nope webview still broken
Update atom-keymap
As of Chromium 42, you cannot subclass CustomEvent or Event using Object.create(event). This caused the CommandRegistry to break. Creating a new object with the properties of the event seems to work fine.
Resolves "Deprecated attempt to access property 'target' on a non-Event object.
dispatchEvent
fireCustomEventevent-test.html:8
global codeevent-test.html:21
event-test.html:8" in Safari and "TypeError: Illegal Invocation" in Chromium
Test Plan: Tests still pass
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1584
Summary: Fixed T1743. Adds the replyTo field to Message objects and handling to the DraftStore. Also adds specs to make sure we don't break it.
Test Plan: Run 3 new tests
Reviewers: evan
Reviewed By: evan
Maniphest Tasks: T1743
Differential Revision: https://phab.nylas.com/D1565
Summary:
Fixes T1741
The database was getting deleted on every quit!
Since the ~/.nylas/config.cson wasn't getting updated messages weren't
getting refetched.
Now we only delete on logout
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Maniphest Tasks: T1741
Differential Revision: https://phab.nylas.com/D1564
Summary:
teardown dblite on quit—if it faiels to exit, it blocks the main process from quitting on linux
fix edge case where the ".quit" sql command is queued to run and then doesn't run because closeRequested is true
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Maniphest Tasks: T1282
Differential Revision: https://phab.nylas.com/D1559
Test Plan: No new tests, need to figure out how to prevent regression here.
Reviewers: evan
Reviewed By: evan
Maniphest Tasks: T1210
Differential Revision: https://phab.nylas.com/D1558
Summary:
atom-window `sendMessage` was not the same as `browserWindow.webContents.send`. WTF.
Save current namespace to config.cson so that it is never null when window opens
Don't re-create thread view on namespace change unless the namespace has changed
Tests for NamespaceStore state
Push worker immediately in workerForNamcespace to avoid creating two connections per namespace
Allow \n to be put into sreaming buffer, but only one
Clear streaming buffer when we're reconnecting to avoid processing same deltas twice (because of 400msec throttle)
Make `onProcessBuffer` more elegant—No functional changes
Test Plan: Run tests!
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1551
Summary:
fix(task-queue): Repair the findTask function
Add "ship logs" and "open logs" to the developer menu
Patches for Chromium 42
Test Plan: Run tests!
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1547
Summary:
Additional references to the windowmanager
Improve some log messages to make them more clear
Make shipLogs the throttled version. Calling shipLogs over and over leads to crash
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1538
Summary: Fixes T1204 resolves T1204 closes T1204.
Test Plan: Run existing tests - need new tests for this, but will require tons of stubbing.
Reviewers: evan
Reviewed By: evan
Maniphest Tasks: T1204
Differential Revision: https://phab.nylas.com/D1530
Summary:
- We now make verbose log files continuously as you use the app
- We ship the logs to LogStash via S3 when an exception occurs
- We log the DatabaseStore, ActionBridge and Analytics packages
- We are now on the latest version of Electron 0.26.0
- We are now on Chrome 42 and io.js 1.4.3
- We should be setup to use ASAR soon.
Update atom.sh to reflect that we're now electron
oniguruma was unnecessary
correctly find log files that haven't been shipped yet
Fix a small issue with nodeIsVisible after upgrade to Chrome 42
Delete old logs, better logging from database store, don't ship empty logs
Test Plan: Run existing tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1531
Summary:
Fixes T1327
Fixes T1294
Fixes T1307
Fixes T1207
- More robus Undo Manager
- Scrolls to the most recent undo location
- Fixes a variety of bugs when the composer's cursor ends up in an unsupported
location
- Fixes auto-scroll detection at end of content
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Maniphest Tasks: T1207, T1294, T1307, T1327
Differential Revision: https://phab.nylas.com/D1529
Summary:
Fixes: T1334
remove final InboxApp references
move out all underscore-plus methods
Mass find and replace of underscore-plus
sed -i '' -- 's/underscore-plus/underscore/g' **/*.coffee
sed -i '' -- 's/underscore-plus/underscore/g' **/*.cjsx
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D1534
Summary:
Rename ActivityBar => DeveloperBar
Expose sync workers and make them observable
New activity sidebar that replaces momentary notifications
Updated specs
Test Plan: Run new specs!
Reviewers: evan
Reviewed By: evan
Maniphest Tasks: T1131
Differential Revision: https://phab.nylas.com/D1521
Summary: Re-order the header and toolbar so that the search dropdown appears correctly
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1524
Summary:
This is an effort to make the logic around the process of sending a draft
cleaner and easier to understand.
Fixes T1253
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Maniphest Tasks: T1253
Differential Revision: https://phab.nylas.com/D1518
Summary: Closes T1264: Drafts save when they close
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Maniphest Tasks: T1264
Differential Revision: https://review.inboxapp.com/D1515
Summary:
associating salesforce contacts and leads with Nylas contacts
adding fetcher form salesforce
shows conencted leads and contacts
auto associates acount
fixing salesforce forms
Salesforce composers are styled
fix opportunity association with account on object creation
fix specs
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://review.inboxapp.com/D1507
Summary:
Resolves T1200 and probably others.
This diff moves all the window management / hot loading into a new class called the WindowManager
and also changes the way the app transitions between onboarding and main window. When you log out,
the main window clears config and clearing the config causes the window manager to close the main
window and open the login window. When it detects a token again, it opens the main window.
This means you can't:
- Open the main window from the login window
- Open mailto: links and accidentally see the main window or a composer, since the draft store isn't
running anywhere.
- Don't need to worry about properly resetting thigns when namespaces change, since the window
is now actually re-created from scratch with the new auth token.
Be a little more defensive about namespace checks in draft-store
Move window code to window-manager
Rename AtomApplication to just `Application`
Specs fix
Test Plan: Run tests, would be good to have more for this.
Reviewers: evan
Reviewed By: evan
Maniphest Tasks: T1200
Differential Revision: https://review.inboxapp.com/D1501
Summary:
Debounce changes out of the DatabaseStore to prevent lots of calls to persistModel from flooding the app
Tasks must always call super so they get IDs
The task queue shouldn't save every time it adds/removes a task - there could be hundreds
ActivityBar package is actually surprisingly slow, re-rendering needlessly
setState in MultiselectList sometimes renders immediately. Don't do this, because sometimes we're rendering twice back to back
Remove dead references
Never allow duplicate tags in the tags array
Don't archive threads that already have the archive tag (it doesn't do anything bad, but why bother creating tasks?)
Update DB specs
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1506
Summary:
Focused Content Store should notify observers when focused items change, not just when they're reassigned
Popovers should have a `direction` and optional event onOpened
Menu divider documentation was wrong, menus should support checked items by default
Pressing escape in a popover's input should dismiss the popover
Other changes
Remove specs that make no sense anymore
Small tweak to report build breaking. Shouldn't happen often ;)
Test Plan: Run tests, which will now phone home if they break
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1493
Summary:
Load unread counts from database again, not tags
fix(multiselect-list): Clear selection on esc
fix(onboarding): Make target=_blank links work in onboarding pages
fix(workspace): Items in header and footer regions are in a single column
fix(layout): Critical issue for things not 100% height
fix(activity-bar): Show in dev mode so you know you're in dev mode
fix(quoted-text): Support for #divRplyFwdMsg quoted text marker
Test Plan: Run specs
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1484
Summary:
Loads the current user to pre-populate the Salesforce field in the
creators
add tabindex to tokenizing text fields
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://review.inboxapp.com/D1468
Summary:
This diff makes a couple changes:
- New drafts are no longer created in the composer component. Draft creation is back in the draft store where it belongs!
- This means that the Draft List doesn't *always* contain two extra drafts, which are the unopened hot windows.
- Windows never show until they're loaded, which means windows open slowly vs. opening empty. I think the former is preferable but it's easy to change.
- Login window is now sized *before* it's shown instead of afterwards
- The mailto: behavior is now handled by the DraftStore, which gets rid of the whole draftInitialJSON thing that never made any sense.
fix(login) Make login window show at the correct size
logout from edgehill completely
Fix draft delete issue
Don't show windows, hot or cold, until they've loaded
Move logic for responding to mailto links into the draft store
Always fire `windowPropsChanged` after packages load or the window is shown
Show more error codes in red in activity bar
Make sure DraftStoreProxy doesn't interrupt the rendering of the composer with a new draft
Fix account-sidebar scroll issue, maybe?
Test Plan: Run tests!
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1479
Summary:
This diff gives the ComponentRegistry a cleaner, smaller API. Instead of querying by name, location or role,
it's now just location and role, and you can register components for one or more location and one or more
roles without assigning the entries in the registry separate names.
When you register with the ComponentRegistry, the syntax is also cleaner and uses the component's displayName
instead of requiring you to provide a name. You also provide the actual component when unregistering, ensuring
that you can't unregister someone else's component.
InjectedComponent and InjectedComponentSet now wrap their children in UnsafeComponent, which prevents
render/component lifecycle problems from propogating.
Existing components have been updated:
1. maxWidth / minWidth are now containerStyles.maxWidth/minWidth
2. displayName is now required to use the CR.
3. containerRequired = false can be provided to exempt a component from being wrapped in an UnsafeComponent.
This is useful because it's slightly faster and keeps DOM flat.
This diff also makes the "Show Component Regions" more awesome. It displays column regions, since they now
use the InjectedComponentSet, and also shows for InjectedComponent as well as InjectedComponentSet.
Change ComponentRegistry syntax, lots more work on safely wrapping items. See description.
Fix for inline flexbox scenarios (message actions)
Allow ~/.inbox/packages to be symlinked to a github repo
Test Plan: Run tests!
Reviewers: evan
Reviewed By: evan
Differential Revision: https://review.inboxapp.com/D1457
Summary:
#### WIP! ####
This is making it all work with the association endpoint, putting
together the Salesforce Sidebar interfaces, and getting the nested
creators/updaters working.
I still need to do a bunch of UI work and actually debug the whole
workflow still
---
rename SalesforceContactStore to SalesforceSearchStore
rename SalesforceContact to SalesforceSearchResult
salesforce sidebar changes
salesforce association picker
object form store fixes
figuring out newFormItem instigators
Make SalesforceObjectFormStore declarative off SalesforceObjectStore
Make action basd handlers for SalesforceObjectStore
sidebar store create and associate
salesforce sidebar and picker fixes
association works and displays on sidebar
salesforce object form fixes
object form fixes
fix salesforce updating
Test Plan: TODO
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://review.inboxapp.com/D1440
Summary: mailto from cold start waits for window to open
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://review.inboxapp.com/D1453