All notable changes to this project will be documented in this file. See standard-version for commit guidelines.
1.9.5 (2020-04-29)
1.9.4 (2020-04-29)
1.9.3 (2020-04-29)
1.9.2 (2020-04-29)
1.9.1 (2020-04-29)
1.9.0 (2020-04-23)
- settings: fix capitalization of auto-approve type (#643) (c18d71e)
- remove afterCreate hook (#638) (75c6744)
1.8.5 (2020-04-15)
- fix permission check (#631) (b549f9d)
- remove auth query param from segments helpdesk url (#637) (29512aa)
- require owner permissions to query settings (#632) (03c9890)
- use the same knex client throughout query builder (#640) (43aba59)
1.8.4 (2020-04-10)
- prevent conversation overflow (7098c25)
1.8.3 (2020-04-10)
1.8.2 (2020-04-08)
1.8.1 (2020-04-07)
1.8.0 (2020-04-06)
- export config as commonjs module to support knex cli (1edba6b)
- ux: make pencil icon size dynamic (take 2) (#583) (d85d648)
1.7.1 (2020-03-30)
1.7.0 (2020-03-30)
- add promote-on-assign button (#611) (9cb2943)
- default texter approval status (#614) (b12a35f)
- expose texter auto-approval status (#610) (f0a7e1c)
- message review action resolver errors (#613) (649192d)
- throw error only if ineligible for access check (770336c)
- ux: avoid flashing background between texts (#608) (0a605a2)
1.6.1 (2020-03-23)
1.6.0 (2020-03-21)
- message-review: prevent duplicate fetches of users (#605) (a02295e)
- reset texter loading UI state on refetch (#602) (cf07e59)
1.5.1 (2020-03-13)
- expose validation stats to user (#600) (9b147d7)
- edit-campaign: autodetect file encoding (#599) (620609d)
1.5.0 (2020-03-12)
- 404 like page for bad campaign id (6868efd)
- accept firstname, first_name, lastname, last_name (5038d07)
- add apply tags helper text (b1373be)
- add auto assign toggle to operations dialog (8d3c66b)
- add delete selected button to campaign overlap module (d0066a1)
- add error handling (639b8c5)
- add progress and new campaign id to copy campaign (9ab3241)
- add reply count on release (251ef14)
- add segment counter (2e0618d)
- add symmetric decrypt script (1cc1a99)
- add withOperations HOC (6e3fb47)
- allow disabling the badge counts (5043a44)
- allow disabling the Texters section of campaign edit (7078a91)
- allow inserting Switchboard LRN API key (809b357)
- auto approve / reject basics (8478ad2)
- cache and invalidate campaigns list (4b3bdf4)
- cache assignment.campaign (f6c7383)
- cache get users for 5 minutes (dd24beb)
- cache information for get contacts (77fc0a8)
- cache my current assignment targets for one minute (b2b5f0d)
- campaign html preview (6d190d0)
- communicate texters loading (dee43d5)
- copy blocks (5e67451)
- disable dynamic assignment (2e0a405)
- env var for auto handle request concurrency (ed2b10d)
- execute easy unicode -> gsm replacements (7a54d66)
- flag to hide contact info (2f96e41)
- handle shutdown gracefully (a8ca156)
- hide auto handle behind yaev (3d8f810)
- improve release all unnhandled replies (0bccfb8)
- include campaign in tag webhook payload (6bb94b5)
- limit notifications to once per 30 seconds per team (8645017)
- make exclude recently contacted contacts have a default of true on mark for second pass (bc49230)
- make search for texters fast (802f184)
- more cautious second passes (b961069)
- optimize get assignment contacts (d745488)
- optimize get todos (9e319b9)
- optimize getContactMessagingService (cf5cf12)
- optimize overlap deletion - no reason to materialize distinct cell (d9cce3a)
- page size changes in contact overlap deletion (866d1b7)
- perform encryption of auth token in script (e6c282a)
- process contact csvs server-side (1e6eb99)
- reassign my replies button (6cfad65)
- release all unhandled replies (e868dcb)
- release replies on textable contacts only (ba37ba4)
- remove unnecessary polling (6ae129a)
- seach in overlap deletion (f2ac6a8)
- shorten texter poll interval (2a9301c)
- show hidden contact fields if super volunteer (9a2a066)
- speed up overlap deletion (6faed80)
- switch to file drop (e5ec8d7)
- tear down kue on shutdown (ee29ce4)
- treat 4 digit zips as 0 padded (61715b7)
- update texter name in external assignment manager db cron job (ce09838)
- upgrade memoredis (4c4a97b)
- use empty mode if env var not present to bypass caching (b458879)
- use function to cache plans (b265213)
- use group by instead of many queries (08fdb71)
- use sped up memoredis (924de74)
- validate phone number in the correct place (c616dd9)
- ci: install npm dependencies (b2a0b0a)
-
= texting hours start (32d7daa)
- add an upload button to the file drop (a513cc1)
- add back express basic auth (35cff82)
- add missing ownProps to signature (d9fa177)
- add missing resolvers (704c650)
- await invalidation on campaign list modifications (9f81a55)
- break props/callbacks cycles (c937488), closes /github.com/apollographql/apollo-feature-requests/issues/40#issuecomment-489487888
- clean up state, add docs link (f22adc7)
- current assignment targets returning multiple pairings per team (7708250)
- fix mutation signature (d26cb93)
- fix nextUrl and submit button type (cdb3feb)
- fix UserEdit (a80aa9d)
- handle custom fields properly (1b4b4e9)
- hide postgres error details in production (15f0127)
- just check if the record exists (546da49)
- limit request to current assignment max_request_count (cf87d07)
- make insert-invite idempotent (05b4375)
- only add SP prefix once (85fb2a8)
- order by system tags on top (02ec36a)
- page size back to 1000 (b3fde43)
- pass preferred team id on manual approval (73d2279)
- pr requests (af2a5e6)
- pr review requests (9c7a914)
- prevent circular network requests (838780f)
- remove extraneous line (7501f74)
- remove pending job polling (6e013a0)
- render component correctly (2b950a2)
- requested changes (8e6a022)
- restrict numbers to 10 digit US numbers (fbeb836)
- return promise rejection (52afe21)
- say type to search tags and require typing before displaying tags (6a8c51f)
- select auth_user.first_name (4d20906)
- shorten script invalidation (d8ec6de)
- strip __typename property from mutation payloads (09cbffa)
- unpack router props correctly (3308877)
- update conversation total count on component mount (8ccf90f)
- update network policy (e0e9ed9), closes /github.com/apollographql/apollo-client/issues/3633#issuecomment-406483894
- ux: make pencil icon size dynamic (ef81d23)
- actually add the counts (81fa352)
- add upgrade in yarn.lock (11ae676)
- await invalidation (343e512)
- change to comment style (bfb0a9a)
- correct params access (48f56d0)
- exit the process when script has completed (7088000)
- fetch contact cell from database (7725dca)
- find the top parent by checking for a null parent ID (2cf80ee)
- fix join link behavior (ab38858)
- fix STATIC_BASE_URL support (c5b46b6)
- get react-hot-loader working (1288ef5)
- include all escalation tags in escalated convos (6295c2a)
- invalidate campaigns list on copy campaign (d8922ae)
- invalidate organization on save teams (96ead5c)
- MEMOREDIS_URL is str, not url (74a284d)
- merge conflicts (915dc28)
- pass correct key to invalidate (05ab6ee)
- pass deduped assignment ids (5277295)
- pass error object to winston correctly (c1922bd)
- pr requests (f39d667)
- pr review (adcaafe)
- prefer const (db1c7ea)
- proper config import (d21b47f)
- refetch the current people page (5cd2c94)
- remove accidental paste (8ce1a4d)
- restrict access to currentAssignmentTargets query (12b4bb7)
- return array to match expected signature (098af3e)
- return null rather than undefined (6a3a6f3)
- return null rather than undefined (b24f07f)
- return updated user record (f92bb54)
- select from correct table (14d974d)
- shorten interaction step ttl (5e57965)
- tweak todos queries (36a21d9)
- update docker build context (255af04)
- upgrade memoredis to fix scan all bug (826b3ec)
- upgrade memoredis to support json date deserialization (529eed2)
- upgrade numbers client to support mms (449a67f)
- use dedicated password reset component (4354512)
- use h1 with slight text modifications (67efcfe)
- use redis lock to prevent possibility of double assignment (7d55822)
- validate invite correctly (6b7967d)
1.4.2 (2020-01-20)
- add missing preferredTeamId argument (63fe02c)
- avoid archived as bidning (a2e086a)
- avoid union with for update skip locked (ff1b88c)
- bail on submit if already submitting (b569c20)
- bypass overly complex timezone evaluation (4acc8e7)
- clarify that arg is unused (c28b2ea)
- comment, simplify queryArgs (88f89af)
- dont aggregate messaging services at send time (f724913)
- dont change message status when escalating (c087da3)
- dont fetch count of messaging services (424c0c7)
- extend HTTP request timeout and log errors (ea2f593)
- fix dataloader implementation (b996bff)
- fix error when changing password (cd90ccc)
- fix return type for returning("id") (8044e25)
- fix service selection behavior (fa49557)
- ignore the mocked ID added to CannedResponseInput (d473624)
- include required numberAssigned property (b40f3c4)
- index and query change necessary for search by tag (39ab3b3)
- let delivered override error (fdbaa8a)
- messages export blank (13fd5f2)
- only update if not delivered (f0068a8)
- order by messaged first (e9da7f7)
- perform notify in separate delayed transaction (7c943d5)
- pick json response property based on status (f768df4)
- pr changes (fd064d8)
- pr review cleanup (f630d99)
- proper index use archived = false (365c50c)
- remove campaign team requirement for custom escalation tags assignment pathway (9d26fe7)
- rename to last updated at (bdf5f20)
- replace final .save() calls (7d05190)
- report anticipated autoassignment errors as successes (1593cd5)
- return updated campaign from resolver (e279aee)
- return values where appropriate (85e0d6c)
- review requests (a6cc75f)
- review requests (f1aa8bb)
- scope opt-out check correctly (18c1c8e)
- send message opt out query should respect global opt out env var toggle (9e8df70)
- send null instead of empty string for contact zip code (4edb5a7)
- setting assignment controls for first time (1fef9f2)
- skip locked on link domain subquery (72a9498)
- supply aws credentials explicitly (c430720)
- syntax error on mark for second pass (9331b36)
- use correct date comparison (8d36f45)
- use correct table name for zip_code (4f454af)
- use modal dialog (a8e5224)
- use subshell (8b16415)
- exports: handle error from stream creation (a78f73c)
- external-assignment-request: dont hold transaction (de49e36)
- message-review: remove contact name filter when text is empty (a37893c)
- s3: use async method to support role-based auth (c32a400), closes aws/aws-sdk-js#2166
- add count_left back to allCurrentAssignmentTargets (dba9580)
- add escalate tag without confirmation steps (8654101)
- add option to disable has unassigned contacts query (92a0223)
- assemble numbers inbound message handling (b56e2b3)
- at time zone unknown; docs: add conservative comment (19ff9fb)
- check for null values not empty object (072495f)
- contact is textable function (3848c0b)
- contact_is_textable function (14c96fa)
- contact_is_textable_now can return null (9546ab1)
- correct sign direction on assignable_needs_message and reply (0eb28c7)
- correct variable name (80064f3)
- dont set max contacts in auto assign loop; default MAX_CONTACTS_PER_TEXTER of 500 (8415d02)
- dont set sent after other message (0fc2bde)
- drop count_left subqueries (42e96ca)
- enable assignment request by supervolunteer (ff80750)
- filter by organization correctly (1f15608)
- fix syntax error (ab3eafc)
- fix typo in opt-out query (ad913ef)
- handle case where responsesString is undefined (68dadda)
- include insert invite in dockerfile (49cd0ce)
- include unmessaged contacts in message review queries (fe02fd4)
- index campaign contact id (0e72b6e)
- limit on update (effa5d0)
- make dynamic assignment toggle truly controlled (b94dd46)
- make requested changes for review (618cc77)
- make test more robust to future DDL (48578c3)
- order by coalesce (01ae8fa)
- properly conservatively handle contacts with missing time zones (aa172b4)
- return location (17ae3f6)
- tweaks to backfill script and migrations non index option (c97fa09)
- use is (not) distinct from (fce87da)
- pg: catch missing knex<>reader swaps (58ff0ff)
- fix ordering of view drops (23b8836)
- get title of overlapping campaign (4ec68f6)
- message locking from assignment queries (67a0c13)
- move where clauses to join conditions (88f3dc7)
- order by last messaged at rather than updated_at (3a65d70)
- prevent empty tagConversation mutations (28c5956)
- restrict contact upload to 75% of db pool size (9a1db5e)
- scope bulkScriptUpdate to organization (bf6f0cb)
- simple less than for texting hour end (3089c50)
- standardize conversion from timezone name to UTC offset (6acbbc5)
- use assignable contact views for assignLoop (168c85b)
- knex: return count as number (8a24126)
- local-login: expect user object not array of users (01b900b)
- message-review: move key prop to correct location (5a5bbfa)
- session: use passport for non-Auth0 logout (1f3c076)
- switchboard: fix switchboard response handling (b7d607c)
- tags: allow admins to bypass assignment requirement for tag management (e20df00)
- tags: reset tags each time dialog is opened (c5f9041)
- tags: update method name (0a41d79)
- teams: fix campaign team comparison (553696e)
- teams: remove unnecessary authRequired check (a4f1608)
- teams: simplify team update logic (f9ffe30)
- 0 index into null (9a97cfd)
- account for fake organization team (2e926f2)
- forms: prevent submit button from being full-width (1f1ba37)
- add default background color (58451ca)
- add message, sensible defaults for updated_at (99c0162)
- allCurrentAssignmentTargets should show everyone else with first campaign without limit contraint (c7ee88c)
- assignment queries organization scope (9adbfcf)
- default now for migration (763b688)
- dont allow non team members to get campaigns as a result of default (d6b99f7)
- find a campaign that is potentially lower id for limited assignment (05c7510)
- fix column names in down migration (03c0770)
- fix the production path (e168bfa)
- flexible return from myCurrentAssignmentTarget (4628f5e)
- general assignment returning multiple results and final ordering not by id (4dd5b04)
- global regex replace (bb1847a)
- more to controlled component, allow setting null (0189cdf)
- move to static imports instead of dynamic require (9c1aa8b)
- my current assignment target selection - create priority column (e7e591e)
- nulling and editing numbersApiKey (e262820)
- organization scoped opt outs (f1348e1)
- proper .then calls (b31a0b9)
- rejecting assignment requests when general is disabled (e065e01)
- requested permission changes (db24bb3)
- return array from myCurrentAssignmentTargets (065bbfc)
- return empty array rather than null (11bb011)
- return full messaging service correctly (d9d4692)
- return values from saveTeams (4f3dd7a)
- slack team update - fully paginate slack channels (8afe903)
- tag application blocking message sending (0e0188b)
- tag editing (fd03409)
- timezone issues (f9b8786)
- unassigned contacts respects opt outs and escalation tag (5d0af87)
- update cache with new values (bfc01d7)
- use campaign texting hours instead of hardcoded 12 and 21 (a2bd049)
- use idiomatic approach to state update (afe8287)
- use null instead of unknown - at time zone null is null (fde17eb)
- use raw archived = instead of knex binding (dcd40bb)
- use SpokeSendStatus.Delivered (287f37d)
- wrong number of vars for unsent assignments (3243bef)
- apollo: remove buggy custom dataIdFromObject function (39e9504)
- assignment: fix createdAt resolver (bdabaca)
- assignment-requests: scope results to organization (ab7f156)
- campaigns-list: add early return for All results case (666f5e4)
- campaigns-list: skip limit/offset application for 'All' pageSize (fdbac58)
- config: add ASSIGNMENT_COMPLETE_NOTIFICATION_URL (b946c75)
- config: change STATIC_BASE_URL to str type (e245ce7)
- config: create missing reference (76d473a)
- config: fix envalid options (a54f2e2)
- config: remove trailing dot in IP address (e6818a4)
- config: switch config to process.env (25ecf33)
- exports: order cte (a1dd25f)
- lambda: load config file from correct location (9715086)
- logging: fix config import (6d5c97d)
- logging: fix rollbar setup (f9db668)
- logging: remove errorCatcher (14b388c)
- logging: remove log object complexity (655700a)
- logging: remove unused client-side reference to server function (5ee63c3)
- logging: use console for remaining client-side logs (e24f173)
- metrics: pass custom StatsD to connect-datadog (5909678)
- metrics: use standard connect-datadog library (fca59df)
- teams: add column default (4c1f0ca)
- teams: fetch organization's teams (2e00584)
- teams: fix assignment_priority column name (9858387)
- teams: manage teams and toggle independently (c87e1b0)
- twilio: pass emtpy array rather than undefined to twilio (c9dde44)
- util: return copy rather than mutating (5aed874)
- utils: return offset (7574cf7)
- add missing PasswordResetLink import (fdc3a0a)
- apollo client singletown window reference (134655f)
- assignment query (708fe7a)
- assignment query subquery instead of left join (30660d0)
- campaign contact tag.id (a98ff06)
- construct and use RegEx correctly (794db0e)
- invert incorrect boolean logic (426e6e0)
- invite to organization creation (1205497)
- order by old style (64ccf71)
- question response in export (9c36f3a)
- reduce scope of regex to specific domain (4e03e92)
- reference knex correctly (630815d)
- remove all config imports from client (6812062)
- remove all config imports from client (843dc72)
- remove apollo singleton from server (9cb939c)
- remove order by (9cdb1d8)
- requested pr changes (6b0719c)
- return id field from insert and correct variable name. (95e75f1)
- serve public dir if envvar is defined (07d9a0b)
- set default of empty array for service_response (89dd361)
- signing up with invite, button placement (41c6654)
- signup (2f94693)
- simplify renderIndex (2c1469c)
- slack user team cron job (c776ce8)
- standardize service_response (3909b0e)
- test client correctly (ef86631)
- tz.zone().utcOffset (077bbeb)
- logging: use console everywhere (6f2348a)
- unassign on escalate (7b49403)
- use console instead of undefined log (6d45fb6)
- use independent webpack envalid config file (745a5ae)
- message-review: request userId when sending admin message (fb5d036)
- tags: create new tagsFilter object (57efc8f)
- update fakeservice sendMessage signature (6494627)
- update numbers client usage (84815c2)
- use reject within AuthHasher callbacks (5534a8a)
- view definition (migrations already run in production) (d804570)
- tags: reset tags every time the selection dialog is opened (e62a584)
- tags: wrap PG lower function in knex.raw (d7ece37)
- teams: add onDelete statements (76e3e0d)
- teams: apply code review suggestions (04faf4a)
- user: fix UserEdit required fields (7dad66e)
- user: prevent password change for non-local login (2eda21f)
- switch ordering of moment.diff arguments (e313914)
- trim leading/trailing spaces in custom fields. (1d7fd94)
- use timezone-aware logic everywhere (5d55156)
- add additional logging for assemble numbers (4fe865b)
- add archived=false to assignment views (67818bc)
- add campaign title to texter todo (132a433), closes #355
- add client-side authentication check (3630383)
- add early return if there are no cells to assign (06ba3d1)
- add error handling for editCampaign (303ff8a)
- add fine-grained control of notifications (b040b85)
- add script to sync all active and recent campaigns (c6fada4)
- add support for invite payloads (9d2aa57)
- add team columns (ea9c177)
- add timeouts to outbound http requests (4bdd699)
- allow texters to choose assignment (de61f0b)
- apply tags on skip reply (1180e95)
- assign messaging service in sendMessage resolver (ce1a8bb)
- cache authorization and some campaign fetches (3debbb3)
- change team assignment column name; add AssignmentTarget.enabled (bb04b09)
- contact level time zone assignment (17fe36c)
- custom escalation tags gui (2bf21cf)
- display authentication errors (a276099)
- display authentication errors (8fcd440)
- drop column should be same as up column; new team based assignment queries (12b62c9)
- expose new team properties (dc45103)
- filter by tags in incoming message review (2338794)
- formalize enforced texting hours (fc4b90d)
- generalize all message service assignment functionality (278d2a6)
- implement unmarkforsecondpass and deleteneedsmessage (e08453c)
- improve assignment request error handling (31c2fcf)
- include archived condition on incoming message review query (6475be1)
- include texter email address in search UI/params (d0584ea)
- include timezone among campaign fields copied (9d1c48f)
- increase password reset period to 1 day (5ab7912)
- move assignment control flow to its own admin page (c7366d2)
- move texting hours section to just after basics (95c7752)
- notify client when Spoke is out of date (2811beb)
- optimize search by texter (494b891)
- order by campaign id, not due date (e41390a)
- partial todos index (1a08628)
- per contact messaging service types (39baad1)
- refactor assignment queries to respect team_escalation_tags (9dad5f0)
- search by unassigned (null texter) (3b15869)
- show message.created_at if exists above campaign_contact.updated_at (741a2da)
- show teams on campaign list (f95c1c4)
- silence expected errors (f991105)
- store md5 hash of script before variable substitution (aad419b)
- support passing knex session (6f5df84)
- support read replicas for a few key queries (6ea8a89)
- support soft delete of tags view trigger and view (105419a)
- support team-scoped assignment complete notifications (99ca099)
- update knex migration signatures (cca0015)
- update mutation to take multiple teams (6890f25)
- update password reset text (a31f400)
- update UI for new fields (bea031f)
- use case insensitive search (f619144)
- use cte style query chains for custom escalation tags assignment path (4ab83d6)
- assemble-numbers: add assemble-numbers sending service (62b5ccd)
- auth: limit password reset to local login (1abd2d4)
- export: create export drivers for AWS and GCS (409049c)
- exports: create export driver for GCS w/ HMAC auth (3ba3b0c)
- exports: disable GCS with HMAC (4c5ea89)
- exports: export texter information (510df6b)
- exports: flesh out hmac signing for GCS (fd434bf)
- exports: support mulitple export drivers (5e49d0d)
- graphql: add mocks only in non-production environments (c34e8fb)
- graphql: disable batched graphql requests (b537608)
- graphql: restrict graphiql to non-production env (3808a21)
- immutable-question-response: migration (b889d82)
- local-login: capture login modes in enum (27714ea)
- logging: add timestamps to log format (6d8b8b8)
- logging: enable Rollbar the right way (0e33448)
- logging: switch to connect-datadog-graphql (4bc517d)
- logging: use console for client-side logging (ef091df)
- logging: use most verbose logging level in development (5597462)
- logging: use winston for server-side logging (042bf09)
- message-review: allow admin sending to unassigned contact (0431022)
- message-sending: add service_type column to messaging_service table (9ab6953)
- monitoring: add healthcheck endpoint (aa91aa5)
- pg: use reader for conversations query (5925c0a)
- pg: use reader pool everywhere (f32d056)
- pg: use trx over .transacting (ec726e6)
- teams: add Assignment Request Controls component (d1275bf)
- teams: add campaign<->team association (3be2c8e)
- teams: add CrUD mutations for teams (09908e5)
- teams: add organization<->team association (ac4f814)
- teams: add team resolver (688ad29)
- teams: add team selection to campaign edit page (4e35ad0)
- teams: add teams migration (8002862)
- teams: add UI for managing teams (72e0b6e)
- teams: allow specifying teams to campaign (ffdfb32)
- teams: clarify wording of instructions (26b9712)
- teams: include type in current assignment HUD (fc81eb3)
- ux: add overdue tag to overdue campaigns (2f07de9)
- ux: add overdue warning to campaign edit page (970caa4)
- ux: show overdue warning on stats page (cb7261f)
- add currentAssignmentTargets and update campaign list ui (c2a6bdc)
- allow opt-out without assignment ID (4d83c60)
- cron job to sync teams with slack channel memberships (9701d1e)
- option to apply tags without sending message (5a93d84)
- upgrade assemble-numbers-client (300b931)
- use DISABLE_TEXTER_NOTIFICATIONS to disable texter notifications (77e8f15)
- use LocalAuthError type (2d7e0a3)
- sweeping: add previous/next conversation navigation (def7c34)
- tag: add tag management to sweeper view (22838b9)
- tags: add reusable TagSelector component (ab798c0)
- tags: handle tagConversation error (c3b3253)
- teams: add member management page (e09e43d)
- teams: add team member management mutations (a5bdf82)
- teams: add team root query (c926d1a)
- twilio: add defensive fix for null characters in database (2cefe70)
- ux: add overflow menu to mobile texter view (997ee98)
- remove text form block from settings (8d96db6)
- remove updated_at calls from code (02f5e6b)
- universal trigger based updated_at (6d4563a)
- use LocalAuthError type (45f7752)
- use myCurrentAssignmentTarget for form controls (b33ca1f)
- write and use myAssignmentTarget for giveUserMoreTexts and form display decisions (d6ac7e2)
- teams: add user<->team association (63c7e76)
- teams: use live campaign values (1a2c145)
- default assignment priority of 500 (19e1810)
- open tags selector on focus (58065b3)
- persist tag state between dialog opens (93d7f49)
- separate out escalate tag (6f23b78)
- config: add config file (3f4233a)
- config: export separate client and server config objects (773d9b8)
- config: migrate knex config (5e64d2a)
- config: use envalid config everywhere (cff9e2a)
- config: use envalid config for webpack (145899f)
- exports: allow alternate AWS endpoint (df7b305)
- tags: add ability to support tag colors in the future (5f0bfd3)
- tags: add additional fields (08e7514)
- tags: add admin UI for editing tags (eb40bef)
- tags: add columns (be1d1b5)
- tags: add error dialog for saveTag (0d15163)
- tags: add tag management UI (d11978f)
- tags: remove separate message editing field for tags (d61b3f3)
- tags: switch to tagConversation mutation (81d5c88)
- tags: update sendMessage payload for tags (db448f1)
- add ability to set organization.features.numbersApiKey via organization settings (10594b1)
- add datadog support via dogstatsd (df0c7df)
- add release stage to Heroku Procfile (bbf004e)
- cosmetic changes for local login. (9d44d65), closes MoveOnOrg/Spoke#1059
- filter landlines on upload if numbersApiKey defined (5fcb6df)
- if percent is more than 100 on upload, we are filtering (f044515)
- implement local login (80ba1b5), closes MoveOnOrg/Spoke#658
- include tags as list of titles in export (70ef3a1)
- lock contacts tagged with tags.is_assignable = f out of assignment (46a54f5)
- make incoming message review and esclated conversations review use tags (a50721e)
- migration script (87d0160)
- remove escalationUserId from resolvers (e793bd3)
- tags: add GraphQL queries and mutations for tags (ca6d0e2)
- tags: add migration for tags (ede1fba)
- tags: create default tags during organization creation (8e90fc8)
- tags: resolve naming collision for tags properties (1e88ef7)
- reject numbers api keys with * (4cdd30a)
- remove migration management (d2d0659)
- support running knex from the command line (4a3149b)
- use knex-style database seeding (8e15dd2)
- Revert "fix: truthy check on array" (fb8f52a)
- revert pull request #265 - feat/no-mocks-in-prod (c5ec88e)
- Revert "feat: add rollbar version" (e0420e6)
- Revert "build(docker): include git in Docker image" (a089447)
- Revert "fix(docker): account for git potentially being unavailable" (ad8f516)
- Revert "Update Twilio TwiML usage." (1df8e51)
- Revert "Sort messaging service SIDs, not the env var keys." (241a0f7)
- Revert "Add field for specifying reply age." (6673cf8)
- Revert "just return true for now" (73bd991)
- Revert "Revert "Moveon main plus reassign all plus message review optout plus set message validity"" (01f7e2e)
- Revert "Ability to return roles from campaign.texters" (c7713cf)
- Revert "Avoid error if no campaign is found" (8a7aa7c)
- Revert "Revert "Upgrade webpack and related deps to latest."" (d78c9d2)
- Revert "Upgrade webpack and related deps to latest." (7befef7)
- Revert "Removes fixed height for message fields for smaller screens" (2c887e5)
- Revert "Revert "adds sqs message processing function"" (492e89c)
- Revert "dependencies" (cefc3c9)
- Revert "some ideas for how to mitigate campaign-contact QuestionResponses resolver" (72e5be6)
- Revert "A few fixes for not finding organization settings. Revert after mig." (b2fd454)
- Revert "One more commit to revert" (efb2b8a)
- Revert "Hide sections and don't use unmigrated fields yet. Revert after migration." (07976c3)
- Revert "Comment out making fields required. Revert after migration" (2e8b012)
- Revert "Commit #2 to revert post-migration" (7020f0e), closes #2
- Revert "Commit for deploy - revert after migration" (be9a62e)
- Revert "Temporarily allow admin access instead of owner access -- revert after migration" (07edbfc)