* Adds tests for the TargetDetails component
* Adds tests for Select Targets Menu
* Rename target_stub to target_mock
* Adds tests for the SelectTargetsDropdown & minor refactor
* Isolate each API entity
* Improve code structure in API client and request mocks
* Standardize on a request mock structure
* Use helper for creating request mocks
* Adds Request class to handle API requests
* API client for patching a scheduled query
* Change select to check on ScheduledQueriesLists
* Clicking a scheduled query list item selects the scheduled query
* Helpers to format scheduled queries for client/server
* Allow updating a scheduled query
* Form cancel button
* Stop rendering results when query hasn’t been run
* Adds QueryPageSelectTargets component
* Re-arranges target select input on Query Page
* Adds label to KolideAce component
* Re-arrange inputs on the Query Form component
* API client to create and get an app license
* Fixes unhandled promise rejection errors in redux config
* License Page and Form
* Adds getLicense action
* Adds License key area to App Settings Form
* Use license.token instead of license.license
* Implement API client
* Adds key icon to License Form
* Adds License Success component
* Render License Success on License Page when there is a license
* Adds persistent flash actions and reducer to redux
* Adds nag message middleware
* Moves FlashMessage component to flash_message directory
* Adds Persistent Flash component
* Renders Persistent Flash component from Core Layout
* Adds Kyle's styles
* Change license validation message
* Finishing touches for app config form license area
* Handle revoked licenses
* License Page hits setup endpoint
* Display server errors on license form
* Changes 0 allowed hosts to unlimited
* Trims JWT token before sending to the server
* GET setup page after submitting license
* Update admin API client
* updateAdmin redux action
* Changes UserManagementPage actions for update admin
* Enable user API client
* Enable user redux actions
* Change UserManagementPage to dispatch enable user actions
* Connect change password to API
* PATCH packs with updated attributes only
* PATCH queries with updated attributes only
* PATCH user updates with updated attributes only
* Prevent setting state on unmounted component
* Load all packs on the manage packs page
* Do not send target info to server if unchanged
* Allow form field values to be an array
* Send the server host and label ids on create
* Get and display the targets in a pack
* Adds target_type to labels and hosts
* Allow updating a pack’s targets as well as name and description
* Adds select targets dropdown to edit pack page
* Adds targets to dropdown when pack is edited
* consistent error handling
* Display server errors in InviteUserForm
* Handle errors in Form component
* Refactors query form
* creates KolideAce component
* Renders QueryForm from query page and manage hosts page
* Moves ace editor and select targets dropdown to query form
* Render base errors in Form HOC
* LoginPage and ForgotPasswordPage server errors
* Ensure unique key for user blocks
* Adds base error to login form and forgot password form
* Adds base error to query form
* Adds base error to Pack Form
* Adds errors to confirm invite form
* Adds clearErrors action
* clear errors when confirm invite page unmounts
* Handle errors in the App Setting page
* Handle server errors in the User Settings Page
* Handle server errors in the User Management Page
* Display packs page at /packs/manage
* Adds NumberPill component
* Filter packs list
* Render the pack info side panel when no packs are selected
* Adds packs list
* Moves state management to page component
* Display selected pack count
* Render bulk action buttons
* API client - update pack
* API client - destroy pack
* Adds update/destroy functions to packs redux config
* Bulk actions (enable, disable, delete)
* Selecting a pack updates state
* PackDetailsSidePanel updates pack status
* Link to edit pack on side panel
* sets selected pack in URL
* Sets color for unsettled buttons
* Loads scheduled queries for selected pack in All Packs Page
* PackDetailsSidePanel component
* PackDetailsSidePanel styles
* styles PacksList component
* Stop rendering flash when pack status is updated
* Makes full row clickable
* highlight selected pack
* AppSettingsPage at /admin/settings
* Adds App Settings to site nav items
* SMTP not configured warning
* Creates AppConfigForm
* Avatar preview
* API client to update app config
* Creates OrgLogoIcon component
* Hide username/password when no auth type
* Creates new PackComposerPage at /packs/new
* Creates PackForm component
* Adds PackForm to PackComposerPage
* Creates QueriesListItem
* Creates QueriesList
* Creates QueriesListWrapper
* Get all queries when the Packs Composer Page loads
* Form HOC handles updates to formData prop
* Creates form to configure scheduled queries
* QueriesListWrapper renders ConfigurePackQueryForm
* search queries input filters queries list
* Empty state text
* create pack when user submits the new pack form
* Adds Edit pack page to /packs/:pack_id/edit
* API client - get scheduled queries for a pack
* API client - create scheduled query
* Redux config for scheduled queries
* Remove scheduled queries from packs
* Add labels to pack on create
* Add disabled state to the select targets dropdown
* Adds edit route and pushes to new route on edit click
* Adds cancel button to edit pack form
* Adds Checkbox that selects all scheduled queries in table
* Adds campaigns to redux state
* Update campaign with web socket data
* Destroy the current campaign when creating a new one
* close the socket when leaving the page or creating a new campaign
* Allow stopping a running query
* Update campaign with query results
* Adds QueryResultsTable
* Display flash message if campaign can't be created
* Allow filtering query results
* Adds filter icon
* Prevent query text updates when the query is running
* Host side panel
* Query form handles labels
* QueryComposer handles labels
* ManageHostsPage add label transitions
* Stop preventing default on click outside of ellipsis menu
* get labels from API
* use real label data in hosts side panel
* create label on label form submit
* adds platform dropdown
* Validate query text
* Label header
* validate presence of query text
* API client getTargets
* change label to display_text
* filters options
* send selected targets to server
* get targets when selected targets are added or removed
* show 0 unique hosts when no targets have been selected
* API call to create queries
* Add queries to redux
* create query when query form is submitted
* Redirect to ShowQueryPage after creating query
* Removes theme dropdown and NewQuery component header
* Extract NewQueryPage component state to redux state
* Pass logic down to NewQuery component as props
* Changes NewQuery component name to QueryComposer
* Render NewQueryPage for /queries/:id route
* Update ReduxConfig for loading a single resource
* QueryPage tests
* Get query when the query page loads
* catch errors when query is invalid
* Renames UpdateQueryForm to QueryForm to re-usability
* Changes InputField to a controlled component
* Always render the Query Form on Query Pages
* Removes SaveQuerySection
* Updates to NewQuery & SaveQueryForm
* SaveQueryFormModal
* Load the SaveQueryFormModal on "Save Query" click
* Run query button
* hide modal form after submit
* Disable run query btn without selected targets
* Adds manage hosts page and improves side bar functionality
* API client get hosts
* Adds hosts to redux state
* Adds host details component
* Manage hosts page renders host details
* ElipsisMenu component
* Add ElipsisMenu to HostDetails
* Adds HOC to detect clicks outside component
* clicks outside ElipsisMenu close the tooltip
* Adds icons to host details component
* Adds loadAll action to redux entity config
* API Client get invites
* Add invites to the user management page
* Updates user block styles on user management page
* Submit modal form on enter
* Modify details form styles
* Enter submits edit user form
* Removes unused admin dashboard page
* API Client - revoke invites
* Delete invite entities in redux
* Revoke invites from admin manage users page
* Show success flash message after user invite is revoked
* QuerySidePanel component
* Adds all osquery table names to ace editor mode
* kolide theme for strings
* Detect OS from browser
* Show utility and specs availability as 'All Platforms'
* Show column description as alt text
* moves login page styles to reusable component
* Redirects successful login to homepage after 3s
* Adds logout form
* Adds logout page
* Adds logout link to homepage
* Adds gravatarURL to logged in user
* Configure API Client to hit /me endpoint
* Fetch user when the app loads
* Configured API Client to make logout requests
* Handle logout flow in redux
* Logout form styles
* Logout user when the logout form is submitted
* Authentication middleware
* API client refactor
* Configure API client to make forgot_password requests
* Successfully submit forgot password form
* Display server errors for unknown email address
* API client utility
* moves test helpers to the test directory
* Utility to namespace local storage keys
* LoginSuccessfulPage component
* Check icon
* adds auth to redux state
* successful form submission
* Allow tests to load dummy SVG static images & test fixes