unfurlbot is versioned with semver. Dependencies are updated to the latest available version during each release, and aren't noted here.
Find changes for the upcoming release in the project's changelog.d directory.
- Unfurlbot now ignores trigger messages if they are older than
UNFURLBOT_SLACK_TRIGGER_MESSAGE_TTL
(a time in seconds). This prevents unfurling messages that are no longer relevant and mitigates circumstances where Unfurlbot may be processing old messages.
-
Refactored the
DomainUnfurler
base class so that theprocess_slack
method now calls two hooks that subclasses need to implement:extract_tokens
andcreate_slack_message
. With this structure the pipeline for processing Slack messages is more consistent and easier to implement for new unfurling domains. -
Improved logging. All log messages for a given token include context about the token, token type (e.g.
jira
), the channel ID, and the timestamps of the triggering message and thread (if applicable). Log messages are sent forSent unfurl
events, and warnings are logged forIgnoring stale trigger message
events.
- Allow configuration of the timeout when making requests to the Jira server instead of only using the 20s default.
- Require Jira ticket references start at a word boundary so that, for example,
LDM-1234
is not detected as ticketDM-1234
.
- Fix processing of bot messages by updating to the latest Kafka models.
- Unfurlbot now processes messages from other bots.
- Make
description
optional in the JiraIssueSummmary model. Rubin epics typically do not have descriptions in the same manner as regular issues. Since we don't use the description field in the unfurl, we can safely make it optional. - Normalize dates in the JiraIssueSummary so that they are consistently converted to the UTC timezone.
- Updated
ProcessContext
to callaclose
rather thanclose
on the Redis client.
- Unfurlbot is now formatted with Ruff.
- Adopt uv and tox-uv for package installation and dependency resolution.
- Stop using the mrkdwn quote in the main unfurled content because it down't present well in mobile views.
- Unfurlbot now uses Redis to store unfurl events and debounce unfurls to the same channel or thread. By default, Unfurlbot won't unfurl the same Jira issue to the same channel or thread more than once every 5 minutes. This can be configured with the
UNFURLBOT_SLACK_DEBOUNCE_TIME
environment variable.
-
This is the first release of Unfurlbot. Unfurlbot listens to messages from Squarebot over Kafka and unfurls information about identifiers back to the conversation. At release, Unfurlbot supports unfurling Jira issue keys mentioned in Slack. Unfurlbot works with the Jira Data Proxy to fetch Jira issue information. On release, Unfurlbot is missing the following features:
-
Unfurls are not debounced, so Unfurlbot will respond with the same unfurl message in a conversation if its mentioned several times.
-
Attachments are not scanned for content.
-