Releases: Netflix/dispatch
v20241220
Hi Dispatch users!
This is the last release of 2024. As we wrap up the year, we want to take a moment to express our heartfelt gratitude to our community, contributors, and users. This update introduces a variety of new features, alongside numerous bug fixes and enhancements, as we continue to improve the stability of Dispatch. Explore some of the highlights and the complete details below.
-
Primary Branch Name Update: We have updated our primary branch name from "master" to "main," aligning with modern naming conventions.
-
Project Display Name Customization: Projects can now have a display name separate from their key, allowing for customization in the user interface without breaking existing API calls.
-
Export of Incident/Case Tags: Users can now export incident and case tags, improving data management and reporting capabilities.
-
Incident Reports Tab: A new "Reports" tab for incidents includes a list of tactical reports and, if enabled, the genAI-produced incident summary when the incident closes. We hope this provides users with quick access to key information.
-
MFA Challenge in Case Threads: Users can now be MFA challenged within case threads.
-
Incident Title in Ticket Names: Admins can now set the default ticket plug-in to use the incident title in the incident ticket name.
A big thank you to all our contributors for their invaluable support and collaboration, including @roblambell, @bashbreakpoint, @rialg, and @nimaxin.
Enhancements:
- fix: updating main branch name (#5645) by @whitdog47
- fix(case): close escalated case when associated incident is closed (#5618) by @whitdog47
- feat(ui): allow project to have a display name separate from its key (#5616) by @whitdog47
- Allow export of incident/case tags (#5613) by @metroid-samus
- feat(ui): adds button to go to legacy edit pane (#5605) by @whitdog47
- feat(aws sqs plugin): adds exception handling for ResourceClosedError errors (#5601) by @mvilanova
- feat(dispatch-aws-plugin): better logging (#5594) by @mvilanova
- feat(signal processing): adds better logging for troubleshooting purposes (#5592) by @mvilanova
- chore(ci): test docker build on pull request (#5588) by @roblambell
- feat(ui): add incident summary to Reports tab (#5582) by @whitdog47
- feat(auth): aws application load balancer plugin (#5581) by @roblambell
- feat(ui): show message if no tactical reports (#5576) by @whitdog47
- feat(ticket): update ticket metadata on change of incident type (#5575) by @whitdog47
- feat(mfa): change mfa prompt link to button (#5565) by @whitdog47
- Add tags and tickets fields to get cases request (#5564) by @metroid-samus
- feat(slack): add users to threaded case on mention (#5530) by @whitdog47
- feat(dispatch aws plugin): adds support for decompressing zlib compressed signals (#5523) by @mvilanova
- feat(slack): remove signal text from manual mfa engage and add user to channel (#5506) by @whitdog47
- feat(slack plugin): improve user experience when resolving cases via Slack (#5485) by @mvilanova
- Removes ability to delete signal definitions in Web UI (#5484) by @mvilanova
- ui(case): fix misaligned instance selector (#5473) by @wssheldon
- ui: remove 'incident participant' string from report tab (#5470) by @wssheldon
- feat(scheduler): keep participant list in sync (#5460) by @whitdog47
- feat(ui): add dedicated status tab for can report in incident edit sheet (#5459) by @wssheldon
- tests(incident): Increase test coverage for report flows and incident severity service. (#5453) by @metroid-samus
- feat(case): add ability to MFA challenge user in case thread (#5450) by @whitdog47
- ui(mfa): dont require button click to validate mfa, do automatically (#5448) by @wssheldon
- enhancement(ui): allow multiple assignee and participants (#5443) by @whitdog47
- Enables usage of welcome message template for creating case ephemeral welcome messages (#5439) by @metroid-samus
- chore(slack): update mfa fail messages to not reference specific providers (#5437) by @wssheldon
- enhancement(slack): adding slash command and button to manually engage user for mfa prompt (#5429) by @whitdog47
- feat(slack): add signal snooze channel notification for visibility (#5421) by @wssheldon
- feat(genai): elevates GenAI feature to its own service library (#5416) by @mvilanova
- feat(case): update conversation on case auto close (#5412) by @mvilanova
- feat(case type): adds support for auto closing cases (#5409) by @mvilanova
- feat(incident): Show the last update time of response costs in the UI (#5408) by @metroid-samus
- feat(ticket): allows incident title in ticket name (#5397) by @whitdog47
- feat(case): add case feedback daily email (#5395) by @whitdog47
- chore(node): Upgrade to node lts (#5394) by @bashbreakpoint
- Speeds up case resolution (#5384) by @mvilanova
- Handles JSONDecodeError exception when parsing GenAI JSON string (#5359) by @mvilanova
- feat(case): adding case feedback (#5356) by @whitdog47
- feat(jira): add Dispatch link in Jira ticket (#5352) by @whitdog47
Bug Fixes:
- fix(slack): fixing regression in update incident modal (#5640) by @whitdog47
- Adds additional permissions and switches to minimal (#5639) by @kevgliss
- fix(slack): email not in profile dict (#5638) by @whitdog47
- fix(ui): remove html from summary before display (#5637) by @whitdog47
- End polling for case details after conversation has been created. (#5632) by @metroid-samus
- fix(ui): default incident project should be null (#5626) by @whitdog47
- fix(db): make migration statement conditional (#5625) by @roblambell
- fix(cli): use new entry point method (#5623) by @whitdog47
- fix(models): reducing information for duplicates or associated incidents and cases (#5619) by @whitdog47
- fix(ui): fixes property access error (#5617) by @whitdog47
- fix(genai): incident summary generate takes only kw args (#5607) by @whitdog47
- fix(ui): show error in UI if signal filter name already exists (#5606) by @whitdog47
- fix(case): log warning instead of throw exception (#5604) by @whitdog47
- fix(ui): only show enabled incident types (#5598) by @whitdog47
- fix(signal): get name from raw dictionary (#5597) by @whitdog47
- fix(signal): retrieve kv with get (#5596) by @whitdog47
- bugfix(signal service): fixes logging message (#5595) by @mvilanova
- bugfix(aws-plugin-signal-consume): always json.loads() message body message (#5593) by @mvilanova
- bugfix(aws-sqs-signal-consumer-plugin): fixes logic (#5589) by @mvilanova
- fix(ui): filter incident type by selected project (#5583) by @whitdog47
- fix(groups): limit group_key username to first 60 characters (#5554) by @whitdog47
- fix(task): be sure to add user to incident before sending ephemeral message ([#5553](https://github.com/Netflix/dispatch...
v20241011
Hi Dispatch users!
This is the third release of 2024. This release comes with many new features as well as bug fixes and improvements. See below for some highlights and the full list.
- Expanded use of GenAI: if enabled, users can see a summary of analysis for alert cases including historical context and a weekly summary of closed incidents.
- Migration of case thread to dedicated channel: users can now migrate a threaded alert case into a dedicated case channel.
- Cost model improvements: new joiners to an incident (whether through adding themselves or by another or by auto-engagement) come in as an observer and are promoted to a participant on their third interaction in the conversation. This updates the cost model as observers do not count towards the incident cost. Exceptions include the incident commander, reporter, and other dedicated roles.
- Improved case type selector: when reporting a case, the case types are now sorted by the on-call service name presented as headers in the selector.
- Improved search filter editor: admins can now edit the search filter json directly in Dispatch.
Big thanks to @Ant0wan for their contributions!
Security Fixes:
- Only use sanitized jPaths (#5299) by @metroid-samus
Enhancements:
- Improves warning text when there are no users to engage (#5314) by @mvilanova
- Display GenAI analysis in the case page in the Web UI (#5301) by @mvilanova
- Stores GenAI case analysis in JSON format in the database while preserving format on the Slack side (#5300) by @mvilanova
- feat(ui/ux): add oncall service name to oncall shift feedback table (#5298) by @whitdog47
- feat(GenAI): only include Slack user messages in historical context (#5296) by @mvilanova
- feat(slack): Expose create case slash command (#5295) by @bashbreakpoint
- Allows to update a signal engagement (#5293) by @mvilanova
- Improves error handling, logging, and messaging in Slack plugin (#5288) by @mvilanova
- Adds a command to perform signals testing to the CLI (#5285) by @mvilanova
- Improves messaging in case threaded alert message (#5284) by @mvilanova
- Uses a representative sample of related cases for the GenAI analysis (#5283) by @mvilanova
- Improves the messaging and error handling in the Dispatch Slack plugin (#5282) by @mvilanova
- Adds pyrightconfig.json to gitignore (#5278) by @mvilanova
- Updates pre-commit hooks versions and fixes typos and formatting (#5277) by @mvilanova
- Enhances Slack Case Handling and Messaging for Improved Clarity and User Interaction (#5267) by @mvilanova
- update(ci): version bumps (#5266) by @Ant0wan
- feat(ui/ux): adds incident report card text customizations to project settings (#5259) by @whitdog47
- ux/fix(slack): move snooze mfa to new mfa, add emoji to case message,… (#5242) by @wssheldon
- Enable users to create tasks from Slack (#5240) by @metroid-samus
- enhancement(slack): update assignee if case type changes (#5239) by @wssheldon
- feat(genai): add llm case summary and historical summary to slack plugin (#5237) by @wssheldon
- Adds a new genai field to signal definition model to store the prompt (#5232) by @mvilanova
- Adds genai fields to signal definition model (#5229) by @mvilanova
- Updates AI plugin (#5227) by @mvilanova
- Enable users to migrate a Case thread to a Case dedicated channel. (#5207) by @metroid-samus
- Adding additional oncall metrics (#5204) by @whitdog47
- ux(slack): improve case report modal type to assignee and oncall resolution (#5197) by @wssheldon
- Restrict select incident severities to active incidents only (#5185) by @whitdog47
- Adds project to comboboxes in dashboard filters (#5183) by @whitdog47
- feat(mfa/plugin): add dispatch mfa plugin (#5175) by @wssheldon
- feat(plugins/aws): check for dupe instance id (#5174) by @wssheldon
- Add new joiners as observers and promote to participant on activity in channel (#5160) by @whitdog47
- Case cost model - frontend (#5140) by @metroid-samus
- Asks user to type database hostname and name before asking for confirmation to drop database (#5132) by @mvilanova
- Adding project setting to allow visibility selection of incident command (#5129) by @ashleytolbert
- enhancement(cli/consume): improve thread exception handling in cli consumer (#5118) by @wssheldon
- refactor(plugins/aws): error handling, logging, types, and early returns (#5117) by @wssheldon
- Refact(signals)/create instance (#5114) by @kevgliss
- Create AI-generated weekly summary (#5074) by @whitdog47
- Organize case select by oncall team (#5065) by @whitdog47
- Makes lifecycle v-text field readonly (#5039) by @mvilanova
- Adds detection lifecyle to signal model (#5037) by @mvilanova
- Adding structured data (#5034) by @jschroth
- Add logging for case status transitions (#5032) by @jschroth
- Enable users to view and update existing search filter expressions (#5003) by @metroid-samus
Bug Fixes:
- Update Docker images from Buster to Bullseye. (#5326) by @forestmonster
- Fixing case and incident form fill from url (#5323) by @kevgliss
- fix(scheduler): weekly reports should run weekly (#5317) by @whitdog47
- fix(ui/ux): use the custom incident severity color and the custom priority and severity colors for cases (#5303) by @whitdog47
- Use the incident priority colors. (#5302) by @metroid-samus
- Fixes get_signal_engagement_by_name call in signals create module and several type annotations (#5292) by @mvilanova
- fix(slack): don't use snooze ack, refactor engagement ack to generalized mfa ack (#5291) by @wssheldon
- Updates case.signal_thread_ts after creating the alerts section (#5290) by @mvilanova
- Show GenAI signal analysis errors in Slack message. (#5287) by @metroid-samus
- If an error is already handled and logged, do not re-log that same error. (#5286) by @metroid-samus
- Undoes changes made by typos pre-commit hook (#5279) by @mvilanova
- Creates the modal immediately after invocation. Update the modal with the task fields after. (#5276) by @metroid-samus
- fix(scheduler): use ast instead of json library to load string data (#5275) by @whitdog47
- fix(scheduler): adapting weekly summary to new ai parameters (#5268) by @whitdog47
- fix(scheduler): correcting import for datetime (#5261) by @whitdog47
- fix(ui): ensure empty details doesn't throw error (#5246) by @whitdog47
- fix(scheduler): use correct metadata indexing (#5245) by @whitdog47
- Fixes access to local variable 'thread_conversation_weblink' (#5244) by @metroid-samus
- ux/fix(slack): move snooze mfa to new mfa, add emoji to case message,… (#5242) by @wssheldon
- fix(scheduler): corrects endpoint for weekly summary (#5238) by @whitdog47
- Fixes calls to get incident participants. ...
v20240731
This release contains the following changes:
Security Fixes:
- Sandbox Jinja message templates (#5002)
Bug Fixes:
- Adds session context manager (#4819)
- Fixes participant announcement message (#4826)
- Update Duo plugin to perform preauth (#4794)
- Handle conflict error in Google group member removal. (#4821)
- Ensure channel renames are to lower case (#4831)
- Don't pass email to Case Table UI (#4844)
- Adds check for capabilities in device list (#4848)
- Only allow one participant in filter form (#4742)
- Do not update channel topic if channel has threaded conversations (#4855)
- Ensure attorney form schema is non-empty (#4850)
- Adds TimeoutError handling (#4856)
- Use
send_success_modal
pattern on case escalation, resolve early close exception (#4861) - Explicitly add incident particpants, rename conversation flow to be explicit (#4862)
- Check for incident member before re-adding (#4863)
- Reporter is optional on update flow, reporter can be None (#4866)
- Adds additional checks to the "self_join" feature to include other places where we create self join buttons (#4865)
- Silence slack sdk errors (#4877)
- Case participants added to incidents should be participant role not observer (#4881)
- Ensure participant updates are commited to db. (#4883)
- Adds additional bot check. (#4884)
- Enables removal of signal filters from signal definition. (#4885)
- Fixes bug that would not allow setting item metadata for plugins added to case and incident types. (#4879)
- Ensure all middleware sessions are closed (#4882)
- Fixes handling message db connections (#4886)
- Ensure that previous case members are added to incident tactical group when escalating (#4887)
- Fixes
get_session()
contextmgr usage inconsume_signals()
(#4888) - Update
slack_wait_strategy
return type hint (#4893) - Don't retry adding users if they are already in the channel. (#4906)
- Adds Slack error code skip retry (#4912)
- Skip retries for defined
SlackAPIErrorCode
(#4913) - Don't update channel topic on assignee role change for thread cases (#4930)
- no
__contains__
onStrEnum
until 3.12 (#4933) - Updates case resources whenever a case thread is updated via Slack UI. (#4937)
- Only update signal message if case conversation is not None (#4939)
- Turns off unfurling links and adds conversation link to help tips (#4938)
- Do not overwrite incident description field with original case description during case escalation (#4949)
- Fixes issue where ephemeral welcome message was sent every time someone is @ mentioned (#4966)
- Revert
process_signals()
to the previous version while keeping new functions (#4980) - Removes ability to reassign task to another incident (#4981)
- Fixes issue with join case button (#5001)
- Only allow case escalation on case page, not edit sheet (#5007)
- Do not show escalate status option in the Slack update case dialog (#5008)
- Fixes case escalation dialog's load states (#5021)
Enhancements:
- Allow user to keep typing date time in PreciseDateTimePicker (#4814)
- Adds custom description to new incident Slack channels (#4830)
- Set owner column as optional when exporting timeline (#4849)
- Update Duo plugin code (#4860)
- Adding incident cost to the attorney review form (#4864)
- Adds gzip compression to HTTP responses (#4709)
- Improve our slack api error handling and backoff (#4878)
- Create case costs, case cost types, and case cost models (#4899)
- Simplifies slack make_call tenacity strategies (#4904)
- Adds self-join button and api to cases (#4907)
- Adds notifications to dedicated channel cases (#4916)
- Adds form scoring based on scoring schema (#4958)
- Provides option of an alternative folder structure (#4908)
- Adds tags to runbooks (#4998)
-- Avery, David, Jason, Kevin, Marc, Mike, Will
First release of 2024
Hi Dispatch users!
This is the first release of 2024. This release comes with a ton of new features and lots of bug fixes and improvements. See below for some highlights and the full list.
- Update to Vue 3: We have updated to the latest version of Vue for improved performance, better support, and enhanced features.
- Full-width Case page: We've introduced a new full-width Case page which can be found under "View" from the Case table. Please be aware that this page is currently under development, and the original page can still be accessed under the "Edit" menu option. We welcome your feedback and suggestions on this update.
- Activity-based cost models: This feature introduces customizable cost models, allowing users to estimate incident response costs based on their unique organization’s workflow, tools, and participant activity. This update provides plugin-based tracking, effort assignment for each tracked activity, and incident cost calculation based on the cost model and effort assignment.
- Custom incident forms: Custom forms inside Dispatch allow admins to develop any number of assessments that can be completed for each incident, such as for legal assessment. Additionally, this improvement includes a mechanism for attorney notification, assessment evaluation and status.
- Enhanced incident timeline entry and exporting: This change allows the incident commander to add custom events to the timeline and introduces more powerful filtering of timeline events. Moreover, a new export feature allows the timeline to be exported directly into the incident or post-incident document(s).
- All new tag selector component: This new tag selector component allows for searching by tag name, has collapsable/expandable tag type sections, allows for required tag types, and enforces exclusivity. Tags are now shown as removable color chips with tag type icons. A clipboard copy button allows users to easily copy the tag list in the legacy format.
- Dedicated case channels: When created from the UI or through the conversation tool (e.g., Slack), cases now default to creating a separate private, dedicated channel.
Big thanks to @Meandmybadself, @KaelWD, @mattayes, and @zetxek for their contributions!
Enhancements:
- Adds test cases for the case views (#4745) by @metroid-samus
- Change topic in case channel on update (#4726) by @whitdog47
- [Case] - Improves case ephemeral welcome message to include additional details (#4725) by @wssheldon
- Initial assignee not populated for case update command modal (#4724) by @wssheldon
- [Enhancement] - Case participant slack functions, ephemeral message, and escalate bug fix (#4708) by @wssheldon
- Adding ability to filter cases by participant and assignee (#4707) by @whitdog47
- Add welcome ephemeral message to dedicated channel cases (#4700) by @wssheldon
- [Refactor] - Default dedicated case channel, no tags on report form (#4684) by @wssheldon
- Adding new project-level setting to enable/disable self join (#4675) by @milavent
- Adds optional attorney form to attorney review (#4649) by @whitdog47
- Increases code coverage requirement. (#4648) by @metroid-samus
- Move cost models from incident to incident types (#4647) by @metroid-samus
- Send ephemeral message when participant is added to an incident due to an assigned task (#4586) by @whitdog47
- Adds enabled to project to hide disabled projects from new incidents and cases (#4572) by @whitdog47
- Enforces minimum code coverage. (#4560) by @metroid-samus
- Updates classic cost model to append new response costs instead of overwriting them. (#4552) by @metroid-samus
- [Enhancement] - Cases, but they can be Slack channels (#4551) by @wssheldon
- Adding new form type that allows new values (#4540) by @whitdog47
- Allows for custom email templates (#4498) by @whitdog47
- Adds code coverage recommendations in GitHub workflow. (#4489) by @metroid-samus
- Add alert data to JSON file in Case thread, remove Raw Data button (#4474) by @wssheldon
- Allow filtering of incidents that have all of a selected set of tags (#4462) by @whitdog47
- Add a Required column to the TagType table (#4448) by @wssheldon
- Add required as a tag type attribute (#4430) by @whitdog47
- Adding back new button for Admin and above and sets default project on report forms (#4429) by @whitdog47
- handle network timeouts in slack make_call (#4428) by @jschroth
- Changes signals ingestion from opt in to opt out approach (#4396) by @mvilanova
- Adds routing to an incident's forms tab. (#4376) by @metroid-samus
- Replaces hyperlinks in a specified Google Doc. (#4375) by @metroid-samus
- Change new button on incident and case pages to point to report form (#4374) by @whitdog47
- Changing HttpUrl to AnyHttpUrl (#4360) by @whitdog47
- Only show copy button in tag picker if prop is set (#4358) by @whitdog47
- Validate project-specific fields in UI (#4336) by @whitdog47
- Adding copy button to tag picker (#4326) by @whitdog47
- Reduce logging noise for incident cost calculation. (#4305) by @metroid-samus
- Send email to oncall when form is completed (#4264) by @whitdog47
- New tag selector component (#4243) by @whitdog47
- Adds new Entity Type Creation dialog on case page and minor page polish (#4181) by @wssheldon
- Updated Feature: Activity-based Incident Cost Model (#4172) by @metroid-samus
- Moves deleted documents to trash instead of immediately deleting them (#4158) by @kevgliss
- Enhancement/timeline export (#4153) by @jneelamekam
- Adds custom incident forms (#4151) by @whitdog47
- Polish CaseStatusSelectGroup dialog when changing status (#4145) by @wssheldon
- Restricting oncall feedback permission (#4144) by @whitdog47
- [Case] - Refactor table to use script setup v3 api (#4131) by @wssheldon
- Allows for an incident commander to be specified when reporting an incident (#4101) by @whitdog47
- Add next oncall incident commander as observer (#4100) by @whitdog47
- Move "Signal too large" message to top of
Raw Data
modal, change messaging (#4094) by @wssheldon - Change View Case button to Open in Dispatch (#4093) by @wssheldon
- Only install chrome for playwright since we only test on chrome (#4091) by @wssheldon
- Adds filtering support by signal definition to signal instance table (#4074) by @mvilanova
- Adds vitest proof-of-concept for LockButton component (#4070) by @wssheldon
- Renames Investigation Write-Up to Resolution and move button to top (#4063) by @wssheldon
- Show default participant icon and fix label for reporter (#4060) by @wssheldon
- debounce
tiptatp
editor save to not interfere with typing (#4057) by @wssheldon - Add UTC hover to relative times in timeline (#4056) by @wssheldon
- Polish row/col sizing of signal tab and move resolution up in drawer (#4054) by @wssheldon
- Set a saving indicator and save status to Case Page Header (#4048) by @wssheldon
- Removes signal instance fingerprint column (#4047) by @mvilanova
- Setup
eslint
for TypeScript and resolve all errors ([#4046](https://github.com/Net...
v20230817c
Hi Dispatch users!
This is the first release of the month of August. This release comes with some new features and lots of bug fixes and improvements. One enhancement that is particularly noteworthy is a copyable URL to your global search results.
Big thanks to @aidn-tommy for their contribution!
Enhancements:
- Checks if the incident tactical group exists before adding it to the case storage (#3707) by @mvilanova
- Enhancement/adding case resolution to thread (#3691) by @whitdog47
- Add the Dispatch UI bookmark to incident channel (#3680) by @whitdog47
- Adds support for opening access and marking incident review documents as readonly (#3679) by @mvilanova
- Add ability to turn off daily reports (#3664) by @whitdog47
- Adding ability to report incident from shortcut (#3655) by @whitdog47
- Adds ability to expand case attributes via the api (#3653) by @kevgliss
- Allow a signal definition to be referenced by it's external id (#3646) by @kevgliss
- Allows users to conduct global search via the URL (#3633) by @whitdog47
- Adds triage button (#3632) by @kevgliss
- Refactors pagination fields and allows cases to be expanded. (#3631) by @kevgliss
- Shows version in help dialog and toast for full version info (#3618) by @whitdog47
- Support for PagerDuty EU (#3605) by @aidn-tommy
- Autofill the tactical report's action section with opened tasks (#3554) by @metroid-samus
Bug Fixes:
- Fixes issue with case escalation dialog (#3706) by @mvilanova
- Do not add the incident's tactical email as a member of the case storage if it doesn't exist (#3705) by @mvilanova
- Fixes issue with adding a participant to an incident conversation from an escalated case (#3704) by @mvilanova
- Adds missing pagination-related fields to users endpoint (#3698) by @mvilanova
- Removes error message for malformed JWT tokens (#3695) by @kevgliss
- Checking for manual snooze on report reminder before sending regularly scheduled one (#3690) by @whitdog47
- Fixes an issue where some filter fields did not have the correct model set (#3681) by @kevgliss
- Fixes issues with old signal.get (#3671) by @kevgliss
- Putting a cap on the number of threads a scheduler can create (#3669) by @kevgliss
- Disambiguates between incident threads, case threads, and incident messages (#3663) by @wssheldon
- Use the correct filter (#3662) by @kevgliss
- Fix banned threads by checking for case_id is not null in middleware (#3661) by @wssheldon
- Allows the signal api to process an external id (#3656) by @kevgliss
- Fixes issue with new signal filters clobbering old values. (#3654) by @kevgliss
- Bugfix/conversation UI (#3652) by @kevgliss
- Missing db_session (#3648) by @kevgliss
- Moving avatar URL template to configuration file (#3647) by @whitdog47
- Fixes bug were case conversation is not returned by api (#3643) by @kevgliss
- Replaces avatar URL with correct format (#3642) by @whitdog47
- Fixes a bug were triage at was being overridden (#3641) by @kevgliss
- Uses a scoped session for scheduler objects. (#3634) by @kevgliss
- Fixing issue where global search wouldn't return restricted visibility incidents (#3630) by @whitdog47
- Allows searching by incident number for Jira-created incident names (#3628) by @whitdog47
- Enabled assignee updating via case modal (#3625) by @kevgliss
- Handle missing MFA user in Snooze auth flow (#3622) by @wssheldon
- Fixing wrong var name in import (#3619) by @whitdog47
- Fixes error when plugin table failed to load if one had a configuration error (#3608) by @whitdog47
- Fetch SignalInstance UUID from
raw
key inupdate_signal_instance
(#3604) by @wssheldon
-- Avery, David, Kevin, Marc, Will
v20230606
Hi Dispatch users!
This is the first release of the month of June, This release comes with new features and lots of improvements. One enhancement that is particularly noteworthy is an improvement to the way we manage search filters; we now provide a distinct UI in the project settings in order to help manage these filters at a higher level.
Enhancements:
- Allows pre-population of the incident title, description, and tags in the incident intake form by including them in the URL path. (#3444) by @metroid-samus
- Adds timer decorator to scheduled job functions (#3427) by @mvilanova
- Improves alert text in search filter UI table (#3424) by @mvilanova
- Uses colors to visually differentiate between used and unused filters in search filter table (#3423) by @mvilanova
- Build incident tag models once a day (#3422) by @mvilanova
- Increases items per page to 25 in incidents table (#3413) by @mvilanova
- Adds a new permissions class for editing and deleting search filters (#3412) by @mvilanova
- Adds a new project settings section for managing search filters (#3398) by @mvilanova
- Adds the ability to create users via the UI (#3397) by @kevgliss
- Reducing the amount of data returned by the signal instance api (#3390) by @kevgliss
- Allow customizing notification templates per project (#3369) by @vindex10
- Optimize ORM usage, db_session instantiation, and tuning (#3365) by @wssheldon
Bug Fixes:
- Guard against null/empty entity values in entity select (#3469) by @wssheldon
- Ensuring that the assignee override is respected (#3468) by @kevgliss
- Add pagination to mini signal table tab (#3463) by @wssheldon
- Fixes side bar loading (#3459) by @kevgliss
- Fixes deleteable chips in various elements (#3458) by @kevgliss
- Makes the entity type select have a type ahead (#3457) by @kevgliss
- Fixes issue were a new type would replace old types (#3456) by @kevgliss
- Allowing entity type chips to be removable (#3455) by @kevgliss
- db_session needs to be passed to
case_new_create_flow
(#3447) by @wssheldon - Re scoping the database session close (#3445) by @kevgliss
- Fix a bug where db_session is not passed in Slack Case creation (#3443) by @wssheldon
- Checks if conversation is archived before trying to archive it (#3428) by @mvilanova
- Fixes an issue where we were using the name instead of id for tag select (#3421) by @kevgliss
- Fixes an issue where the wrong enum was associated (#3420) by @kevgliss
- Aligns schedule job and function names and fixes some bugs (#3414) by @mvilanova
- Fixes an issue with the way tags are checked for their exclusivity (#3407) by @kevgliss
- Signals aren't required to have IDs (#3399) by @kevgliss
- Rolls back session changes in #3365 (#3396) by @kevgliss
- Adds extact matching on name column when searching (#3395) by @kevgliss
- Removing non-uuid id (#3394) by @kevgliss
- rolling back #3368 (#3386) by @kevgliss
- Modifying the way the editor is imported (#3385) by @kevgliss
- Adding optional external id (#3384) by @kevgliss
- set explicit build dir in Vite to resolve
Expected a JavaScript module on rebuild
error (#3368) by @wssheldon - Add common modal for success that catches not_found exception (#3367) by @wssheldon
Documentation:
- Adds documentation for Signals (#3461) by @wssheldon
- Updates documentation about prerequisites (#3419) by @metroid-samus
- Remove
gitter
from README.md (#3376) by @wssheldon
v20230505
Hi Dispatch users!
This is the first release of the month of May. This release comes with new features and lots of improvements and fixes across the app to provide a better UI/UX experience and continue to keep things running smoothly and reliably.
Enhancements:
- Improves task syncing scheduled job (#3356) by @mvilanova
- Improves incident auto-tagger scheduled job (#3355) by @mvilanova
- Adds project and organization name to warning messages (#3352) by @mvilanova
- Adds variant to case message if there's a signal instance (#3351) by @wssheldon
- Downgrades error levels and improves some logic (#3340) by @mvilanova
- Adds 250/minute rate limit to SignalInstance POST API endpoint using
slowapi
(#3338) by @wssheldon - Optimizes signal ingestion pipeline and creates perf-test CLI util (#3337) by @wssheldon
- Conditional creation of case resources for perf improvement on signal ingest (#3331) by @wssheldon
- Adds a default 1 hour window deduplication check on signal filter flow (#3329) by @wssheldon
- Add custom items-per-page to Signal and Case tables (#3312) by @wssheldon
- Changes related_case_count conditional to 1 for first seen (#3305) by @wssheldon
- Converts snooze filter MFA to use
last_mfa_time
and other cleanup (#3293) by @wssheldon - Adds CLI to register a user from the command line (#3292) by @kevgliss
- Aggregates signal instance messages in Case thread (#3290) by @wssheldon
- Allowing signals to override case types and case priorities (#3289) by @kevgliss
- Uses
email_validator
in SignalEngagement flow instead of regular expression (#3286) by @wssheldon - Automatically engage users in Signal data with Signal Engagements and confirm behavior (#3274) by @wssheldon
- Makes entities optional for snoozing (#3273) by @kevgliss
- Adds bulk closed resolution (#3258) by @kevgliss
Bug Fixes:
- Fixes issue when querying all workflow running instances (#3359) by @mvilanova
- Disables tag recommendations in TagFilterAutoComplete UI component (#3357) by @mvilanova
- Fixes typo in signal edit sheet (#3350) by @wssheldon
- Filters out Slack events from USLACKBOT (#3345) by @mvilanova
- Handles cases where the Email Display setting is unchecked in Slack Admin settings (#3344) by @wssheldon
- Resolves ruff
B017
intest_signal_flow.py
(#3342) by @wssheldon - Handles missing user in after hours message (#3341) by @wssheldon
- Limits entity select to 100 and only show entities for signal (#3339) by @wssheldon
- Changes signal not enabled log from warning to info (#3330) by @wssheldon
- Fixes breaking changes impacting incident ban threads feature (#3321) by @mvilanova
- Fixes relative (days) time option for snooze filter creation in Slack plugin (#3313) by @wssheldon
- Fixes a bug in case reporting slack shortcut (#3297) by @kevgliss
- Fixes incorrect attribute lookup for
signal.id
and 24 char blockkit limit (#3288) by @wssheldon - Ensures looped in users are in the channel (#3272) by @kevgliss
- Aligns ui with the defaults in slack close. (#3271) by @kevgliss
- Fixes an issue were the entity type dialog wasn't closing (#3270) by @kevgliss
- Adds more granularity to the relative dates (#3269) by @kevgliss
- Limits the number of instances we hope to processes within the 1 min window. (#3267) by @kevgliss
- Re-orders case creation check so signals are still associated with existing cases (#3266) by @kevgliss
- Resolves bug on Case Escalate button when
incident_type
not set for Case (#3263) by @wssheldon - Fixes the
engage-oncall
command when page checkbox is not selected (#3262) by @wssheldon - Allowes for case type select with typeahead (#3257) by @kevgliss
- Adds missing search triggers (#3256) by @kevgliss
- For larger sheets with ensure that they are not hidden (#3255) by @kevgliss
- Fixes issue with mini width when submenu is displayed (#3254) by @kevgliss
- Bugfix signal case (#3253) by @kevgliss
v20230409
Hi Dispatch users!
This is the first release of the month of April. The following are some enhancements we think are worth highlighting:
- We moved our documentation to https://netflix.github.io/dispatch/ and migrated to Docusaurus in the process (There is still quite a bit of polish left to do but feedback is welcome!).
- The Entities tab on the Case page will now group distinct entities across all signal instances that have been aggregated in a case
- A
Filter Action
column was added to the Signal Instance table to provide better visibility into what Signals were deduplicated or snoozed via a Signal Filter
Thanks to @Phazz for their contributions!
Enhancements:
- Add footer and pagination to summary tables to fix global search (#3247) by @wssheldon
- Minor improvements to tag scheduler (#3244) by @mvilanova
- add a button to visit a case in the case popover (#3241) by @wssheldon
- Add Filter Action column to SignalInstance table (#3226) by @wssheldon
- Adds new command for bulk PR merging and improves release notes command (#3225) by @mvilanova
- Addresses some techdebt and improves Slack plugin service module (#3209) by @mvilanova
- Improvements to tag recommender logging (#3208) by @mvilanova
- Remove unnecessary
*
parameter in views, createCommonParameters
andCurrentIncident
Annotated types (#3200) by @wssheldon - Use Annotated types for FastAPI
db_session
,get_current_user
parameter (#3192) by @wssheldon - Pins cryptography and bumps some package versions (#3173) by @mvilanova
- Allowing for signal case override (#3168) by @kevgliss
- add .pre-commit.config.yaml for
black
,ruff
, andpytest
(#3162) by @wssheldon - Updates more Python requirements (#3161) by @mvilanova
- Adds openai Python requirement and updates others (#3160) by @mvilanova
- Adds plugin for OpenAI's Generative Artificial Intelligence platform (#3159) by @mvilanova
- Minor improvements to case and signal slack messages (#3157) by @kevgliss
- improve no entity error message and return early after modal open (#3151) by @wssheldon
- Adds more detailed error messages and codes to base permissions (#3148) by @mvilanova
- Adds flow method for signal instance creation (#3131) by @kevgliss
- Auto-run workflows associated with Signals and auto-parameterize with Entity Type values (#3128) by @wssheldon
- move components.d.ts to .gitignore (#3126) by @wssheldon
- Adds event handler to ignore not configured Slack reactions (#3124) by @mvilanova
- Associate Signals w/ Workflows and add UI elements to bind them in Definition and run in Instance tab (#3116) by @wssheldon
- Improve scheduler shutdown procedure during deployments. (#3115) by @kevgliss
- Add case popover/dialog to entity tab correlation card (#3106) by @wssheldon
- FormData argument is redundant in _create_snooze_filter function (#3104) by @wssheldon
- only show Correlation context element if there are entities in message (#3100) by @wssheldon
Bug Fixes:
- Show correct cases in Case Dialog on Entity Card (#3245) by @wssheldon
- Group entities and display a counter in the card (#3243) by @wssheldon
- Fixes an potential race condition when multiple signals were sent at the same time. (#3239) by @kevgliss
- Only show entities for the subject Signal type on snooze button Slack modal (#3234) by @wssheldon
- Fixes issue where the model would not save. (#3227) by @kevgliss
- Fixing case creation logic (#3224) by @kevgliss
- Fixing issue with filter actions (#3210) by @kevgliss
- Fixes an issue where filter action was not being saved (#3201) by @kevgliss
- Fixes a bug where the case type was not being correctly looked up (#3194) by @kevgliss
- Change input width of resolution reason to span entire Case edit sheet (#3191) by @kevgliss
- Fixing an issue with case creation (#3190) by @kevgliss
- Fixing publish path (#3186) by @kevgliss
- Fixing publish action (#3185) by @kevgliss
- Fixing an issue with case creation (#3184) by @kevgliss
- Fixes error with creating signal definition workflows (#3183) by @kevgliss
- Adds missing project id to document flow (#3178) by @kevgliss
- Fixes bug in oncall service paging via Slack command (#3177) by @mvilanova
- Ensure case assignee always gets looped in (#3172) by @kevgliss
- Adds email individual search (#3167) by @kevgliss
- improve no entity error message and return early after modal open (#3151) by @wssheldon
- Fixing an issue with case group add (#3150) by @kevgliss
- add support for errors in threads (#3149) by @wssheldon
- display an error message if no entities are found on a signal when snoozing (#3146) by @wssheldon
- Fixes an issue with select missing project scope (#3140) by @kevgliss
- Returns empty list if Google group has no members (#3132) by @mvilanova
- Fixes call to update external ticket on incident role change (#3127) by @mvilanova
- Adds util function to deslug and capitalize a resource type string and fixes name for incident review document Slack bookmark name (#3125) by @mvilanova
- Fixes issue with timeline event Slack-based reaction by using a listener matcher (#3121) by @mvilanova
- Upgrade Python to
3.11.2
inDockerfile
andsetup.py
(#3120) by @wssheldon - name_or_raise for workflow doesn't require project_id (#3119) by @wssheldon
- Providing better user input on long signals. (#3113) by @kevgliss
- Updates case document when the case is moved to escalated or closed status (#3109) by @mvilanova
- Minor fixes to case participant slack plugin (#3105) by @kevgliss
- Adding the resolution reason to the resolve modal and adding a label (#3103) by @kevgliss
Tech Debt:
- Removes more dead code from Slack plugin (#3218) by @mvilanova
- Addresses some techdebt and improves Slack plugin service module (#3209) by @mvilanova
- FormData argument is redundant in _create_snooze_filter function (#3104) by @wssheldon
Tests:
Documentation:
v20230309
Hi Dispatch users!
This is the first release of the month of March. The following are some enhancements we think are worth highlighting:
- External incident resources created via plugins such as Jira issues, Google groups, drive folders, and documents, etc. will be deleted when an incident is deleted to help with keeping things clean in SaaS products. This has been the case for cases since support for them was released.
- Visibility and a description for it has been included in incident welcome messages to ensure expectations are communicated to all incident participants.
- Incident report at and stable at times can be included in incident document templates.
- A new muti-factor authentication (MFA) plugin type adds support for additional multi-factor authentication checks within the application and ships with support for Duo.
- Signals can be snoozed directly from Slack and optionally requires multi-factor authentication using the new MFA plugin.
- The entity type creation dialog includes a playground editor that highlights sample signals with valid matches in real time.
- You can search findings in the Entity tab with a relative date range picker.
Thanks to @nshefeek and @Cinojose for their contributions!
Enhancements:
- Adds support for deleting external incident-related resources (#3084) by @mvilanova
- Add snooze button to signal instance message in Slack plugin and add Case/Signal subject enum (#3073) by @wssheldon
- Modifies CLI drop database to handle the case where the database doesn't exist (#3064) by @nshefeek
- Adds signal entities to case notifications and support for viewing raw signal data (#3062) by @kevgliss
- Improves the signal filter UI (#3052) by @kevgliss
- Enhances searchable variant (#3051) by @kevgliss
- Adds a new Slack slash command /dispatch-list-signals and allows creation of snooze filter w/ MFA (#3050) by @wssheldon
- Adds the ability for signal definitions to be disabled (#3042) by @kevgliss
- Enhances the entity create playground (#3041) by @kevgliss
- Creates a new plugin for Duo that provides on-demand MFA across Dispatch (#3035) by @wssheldon
- Adds support for incident report at and stable at timestamps in documents (#3030) by @Cinojose
- Allows tags to have external IDs (#3028) by @kevgliss
- Adds incident visibility to welcome messages (#3019) by @jneelamekam
- Adds Entity Type create dialog and Entity Type playground editor (#3008) by @wssheldon
- Speeds up installation of plugins on database initialization (#3007) by @mvilanova
- Adds a relative date chip group to entity tab (#3001) by @wssheldon
Bug Fixes:
- Removes entities from signal instance table (#3088) by @wssheldon
- Adds ondelete cascades to foreign keys in the participant and case tables to allow project deletion (#3082) by @mvilanova
- Removing all references to raw data (#3075, #3076) by @kevgliss
- Checks for entity types when we create a signal (#3074) by @wssheldon
- Bugfixes to signal instance raw (#3072) by @kevgliss
- Resolves conversation is None exception (#3071) by @wssheldon
- Fixes an incorrect enum (#3070) by @kevgliss
- Waits for selected signal data before rendering signal tab (#3069) by @wssheldon
- Waits for prop data before rendering Entity Tab data (#3068) by @wssheldon
- Fixes bug where signal sheet save button is disabled on entity dialog open (#3067) by @wssheldon
- Correctly pass response data back after saving entity type to display as chip in combobox (#3061) by @wssheldon
- Fixes issues with case messaging (#3060) by @kevgliss
- Enhances signal definition UI (#3059) by @kevgliss
- Converts timestamps to strings before passing them to the document plugin (#3053) by @mvilanova
- Ensures all case and incident priorities and severities are returned for rendering dashboard charts (#3048) by @mvilanova
- Fixes issue with global search (#3047) by @kevgliss
- Fixes pagination (#3046) by @kevgliss
- Fixes an issue with the generation of signal API Documentation (#3045) by @kevgliss
- Adds protection to prevent the creation of duplicate tasks (#3043) by @mvilanova
- Adds and initializes default project during database initialization to allow user registration (#3006) by @mvilanova
- Fixing associated signal tables (#2999) by @kevgliss
Tech Debt:
- Refactors incident flows and adds more resource-based flow modules (#3063) by @mvilanova
Tests:
- Adds testing to signal instance creation (#3077) by @kevgliss
- Fixes playwrite e2e tests (#3058) by @kevgliss
Documentation:
- Duo plugin documentation (#3081) by @wssheldon
- Confluence plugin documentation (#3054) by @Cinojose
v20230215
Hi Dispatch users!
This is the second release of the year and month of February, which includes new features, enhancements, and bug fixes.
Highlights:
- We added support for creating custom entity types and associating them with signal definitions in Dispatch. Users can create custom entity types using regular expressions and key-value pairs to automatically extract an entity from signal data upon ingestion. Finally, a new "Entity" tab has been added to the Case view that displays entities associated with the case and provides additional enrichment such as how many times an entity has been seen across different signals and cases.
- We added support for handing off cases and incidents in bulk, and a new task tab in incident details, so you can quickly view all tasks associated with an incident.
- We also added an Atlassian Confluence storage and document plugin. Thanks @Cinojose!
Enhancements:
- Adds tab for incident tasks in incident details view (#2989) by @mvilanova
- Resets incident priority to default priority when incident is marked as stable (#2986) by @mvilanova
- Adds support for handing off cases and incidents in bulk (#2984, #2985) by @mvilanova
- Adds base concept of entities to signals (#2977) by @wssheldon
- Adds support for specifying an entity type key/field without a pattern (#2988) by @wssheldon
- Adds Atlassian Confluence storage and document plugin (#2940) by @Cinojose
- Bookmarks Incident Review document in the conversation after its creation (#2937) by @mvilanova
Bug Fixes:
- Fixes issue with all bulk actions and removes dupe duplicates in IncidentRead Pydantic model (#2997) by @mvilanova
- Temporarily disables calls to the Dispatch document resolver plugin until we figure out what's wrong with it (#2968) by @mvilanova
- Direct add participants and allow for new participants via messages. (#2952) by @kevgliss
- Migrate case assignees to participants who aren't individuals (#2951) by @wssheldon
- Allow cases to be re-assigned after addition of participant model (#2949) by @wssheldon
- Updates entity tab to display a card for no entities and fix typo in route (#2987) by @wssheldon
- Fixes bug in Signal schema (#2948) by @kevgliss
- Adds a query param that expands incident pagination to return the fully populated object (#2938) by @kevgliss
- Removes minimal models from pagination endpoints (#2932, #2933) by @kevgliss
- Fixes an issue with the search menu not being rendered correctly (#2930) by @kevgliss
- Fixes issue where tags list expected a project field (#2929) by @kevgliss
- Fixes issue when selects have null values (#2927) by @kevgliss
- Re-adds added by and added reason to list participants modal (#2924) by @mvilanova
- Better error handling when creating executive reports via Slack plugin (#2923) by @mvilanova
- Adds participant base data (#2922) by @kevgliss
- Fixes signal slack message (#2920) by @kevgliss
Tech Debt:
- Deprecates Slack slash command dispatch-list-resources in favor of channel bookmarks (#2969) by @mvilanova
- Removes dispatch-list-resources command code (#2946, #2993) by @mvilanova
- Removes unused Individual VueJS components (#2947) by @mvilanova
Tests:
- Adds timers to func calls in add_or_reactivate_participant (#2967) by @wssheldon
- Only display active roles in CaseParticipantsTab component, add Vitest, and unit test(s) (#2960) by @wssheldon
- Refactor E2E tests to use Page Object Model (POM), fixtures, and add additional tests (#2945) by @wssheldon
- tests/end-to-end-test-for-report-submission-using-playwright-in-ci (#2936) by @wssheldon
- testing/case-tests (#2921) by @wssheldon