Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 18 additions & 10 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.5.0] - 2026-02-18

### Added

- **Seqera Platform Deep Links**: Automatically adds a "View in Seqera Platform" button to all Slack notifications when running through Seqera Platform ([#36](https://github.com/seqeralabs/nf-slack/issues/36))
- **Seqera Platform Deep Links**: Automatically adds a "View in Seqera Platform" button to all Slack notifications when running through Seqera Platform. Reads `watchUrl` from TowerClient, auto-detected and configurable via `slack.seqeraPlatform.enabled`. Start message updated asynchronously once URL is available ([#43](https://github.com/seqeralabs/nf-slack/pull/43))
- **Progress Updates**: Real-time progress during pipeline execution via in-place start message updates using `chat.update`. Event-driven with rate limiting. Configure via `slack.onProgress { enabled = true; interval = '5m' }`. Tracks submitted, completed, cached, and failed tasks ([#44](https://github.com/seqeralabs/nf-slack/pull/44))
- **Emoji Reactions**: Automatic emoji reactions on start message for workflow status (🚀 start, ✅ success, ❌ error). Configure via `slack.reactions { enabled = true }`. Requires bot token, fire-and-forget ([#41](https://github.com/seqeralabs/nf-slack/pull/41))
- **Connection Validation**: Validates Slack credentials on startup using `auth.test` and `conversations.info`. Enabled by default via `slack.validateOnStartup = true`. Warns on failure, never blocks pipeline execution ([#40](https://github.com/seqeralabs/nf-slack/pull/40))

### Fixed

- **Cancelled Workflow Notifications**: Cancelled workflows (via Seqera Platform) now correctly send error notifications instead of success. Checks `session.workflowMetadata.success` in `onFlowComplete()` ([#50](https://github.com/seqeralabs/nf-slack/pull/50))
- **`includeFields` Config Bug**: Config-level `onStart/onComplete/onError.includeFields` was silently ignored by default message builders. Added `includeFields` property to config classes and `shouldIncludeField()` helper ([#48](https://github.com/seqeralabs/nf-slack/pull/48))
- **Spurious Reaction Warning**: Fixed "Failed to remove reaction" warning when `onStart.enabled = false` by tracking `startReactionAdded` flag. Downgraded `no_reaction` from WARN to DEBUG ([#48](https://github.com/seqeralabs/nf-slack/pull/48))

### Changed

- **Documentation Simplification**: Consolidated from 11 pages to 6 (~2300 to ~1300 lines). Standardized examples to bot tokens. Removed 7 obsolete configs and 8 unreferenced screenshots. Fixed broken links ([#48](https://github.com/seqeralabs/nf-slack/pull/48))

## [0.4.0] - 2026-02-11

Expand Down Expand Up @@ -220,19 +235,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

- **CI/CD**: Updated Claude Code review workflow for improved PR automation ([#20](https://github.com/seqeralabs/nf-slack/pull/20), [#19](https://github.com/seqeralabs/nf-slack/pull/19))

## [Unreleased]

### Planned

- Asynchronous message sending with ExecutorService
- Retry logic with exponential backoff (429, 5xx errors)
- Rate limiting (1 message/second with burst capacity)
- Webhook URL validation (HTTPS enforcement, format checking)

---

## Version History

- **[0.5.0]** - Seqera Platform deep links, progress updates, emoji reactions, connection validation, bug fixes
- **[0.4.0]** - File upload support, config-based uploads, remote file support
- **[0.3.1]** - Documentation updates for bot support and threading features
- **[0.3.0]** - Slack Bot integration, message threading, and organization migration
Expand All @@ -241,6 +248,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- **[0.1.1]** - Release automation and documentation improvements
- **[0.1.0]** - Initial release with automatic notifications, custom messages, and progressive configuration examples

[0.5.0]: https://github.com/seqeralabs/nf-slack/releases/tag/v0.5.0
[0.4.0]: https://github.com/seqeralabs/nf-slack/releases/tag/v0.4.0
[0.3.1]: https://github.com/seqeralabs/nf-slack/releases/tag/v0.3.1
[0.3.0]: https://github.com/seqeralabs/nf-slack/releases/tag/v0.3.0
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Add to your `nextflow.config`:

```groovy
plugins {
id 'nf-slack@0.4.0'
id 'nf-slack@0.5.0'
}

slack {
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ plugins {
id 'io.nextflow.nextflow-plugin' version '1.0.0-beta.12'
}

version = '0.4.1'
version = '0.5.0'

nextflowPlugin {
nextflowVersion = '24.10.0'
Expand Down
2 changes: 1 addition & 1 deletion docs/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ Thank you for your interest in contributing to nf-slack! This document provides
5. **Test with Nextflow**

```bash
nextflow run hello -plugins nf-slack@0.4.0 // Make sure to have the correct version!
nextflow run hello -plugins nf-slack@0.5.0 // Make sure to have the correct version!
```

## Development Workflow
Expand Down
13 changes: 7 additions & 6 deletions docs/examples/gallery.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,16 @@

Complete, runnable examples that demonstrate nf-slack features. Each example can be run directly from the `example/` directory.

<!-- prettier-ignore -->
!!! tip "Running Examples"
All config examples can be run with:
`bash
All config examples can be run with:
```bash
nextflow run main.nf -c configs/<example>.config
`
Script examples run directly:
`bash
```
Script examples run directly:
```bash
nextflow run scripts/<example>.nf -c configs/01-minimal.config
`
```

---

Expand Down
4 changes: 3 additions & 1 deletion docs/getting-started/setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ nf-slack supports two authentication methods. **Bot User is recommended** — it
2. Under **"Bot Token Scopes"**, add:
- `chat:write` — Send messages
- `chat:write.public` — Post to channels without joining *(optional)*
- `reactions:write` — Add emoji reactions *(optional — required for [emoji reactions](../usage/guide.md#emoji-reactions))*
- `files:write` — Upload files *(optional — required for [file uploads](../usage/guide.md#file-uploads))*

**Install and copy token:**

Expand Down Expand Up @@ -98,7 +100,7 @@ Add nf-slack to your `nextflow.config`:

```groovy
plugins {
id 'nf-slack@0.4.0'
id 'nf-slack@0.5.0'
}
```

Expand Down
5 changes: 3 additions & 2 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Slack notifications for your Nextflow workflows. Get notified when pipelines sta

```groovy
plugins {
id 'nf-slack@0.4.0'
id 'nf-slack@0.5.0'
}

slack {
Expand All @@ -31,8 +31,9 @@ slack {

**2. Run your pipeline** — that's it! You'll get Slack notifications automatically.

<!-- prettier-ignore -->
!!! tip "Need help setting up Slack?"
See the **[Setup Guide](getting-started/setup.md)** for step-by-step instructions on creating a Slack app and choosing between Bot and Webhook modes.
See the **[Setup Guide](getting-started/setup.md)** for step-by-step instructions on creating a Slack app and choosing between Bot and Webhook modes.

## What Can You Do?

Expand Down
4 changes: 3 additions & 1 deletion docs/reference/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,9 @@ Configuration for workflow completion notifications.
| `showFooter` | Boolean | `true` | Show timestamp footer in message |
| `files` | `List<String>` | `[]` | File paths to upload after completion notification (Bot only) |

> [!NOTE] > `includeResourceUsage` is **only available** in the `onComplete` scope.
<!-- prettier-ignore -->
!!! note
`includeResourceUsage` is **only available** in the `onComplete` scope.

#### Message Available Fields

Expand Down
12 changes: 8 additions & 4 deletions docs/usage/guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -149,8 +149,9 @@ slack {

## Threading

<!-- prettier-ignore -->
!!! note "Bot User only"
Threading requires a Bot User. Webhooks do not support this feature.
Threading requires a Bot User. Webhooks do not support this feature.

Group all notifications from a single pipeline run into one Slack thread:

Expand All @@ -168,8 +169,9 @@ The start notification becomes the parent message. Complete, error, and any cust

## Emoji Reactions

<!-- prettier-ignore -->
!!! note "Bot User only"
Emoji reactions require a Bot User. Webhooks do not support this feature.
Emoji reactions require a Bot User. Webhooks do not support this feature.

Add emoji reactions to the start notification to show pipeline status at a glance:

Expand All @@ -190,8 +192,9 @@ slack {

## Progress Updates

<!-- prettier-ignore -->
!!! note "Bot User only"
Progress updates require a Bot User with threading enabled.
Progress updates require a Bot User with threading enabled.

Get periodic progress updates during long-running pipelines:

Expand All @@ -213,8 +216,9 @@ Progress messages are posted as replies in the pipeline's thread.

## File Uploads

<!-- prettier-ignore -->
!!! note "Bot User only"
File uploads require a Bot User.
File uploads require a Bot User.

Attach files (logs, reports, plots) to completion or error notifications:

Expand Down
2 changes: 1 addition & 1 deletion example/configs/01-minimal.config
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id 'nf-slack@0.4.1'
id 'nf-slack@0.5.0'
}

slack {
Expand Down
2 changes: 1 addition & 1 deletion example/configs/02-notification-control.config
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id 'nf-slack@0.4.1'
id 'nf-slack@0.5.0'
}

slack {
Expand Down
2 changes: 1 addition & 1 deletion example/configs/03-message-text.config
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id 'nf-slack@0.4.1'
id 'nf-slack@0.5.0'
}

slack {
Expand Down
2 changes: 1 addition & 1 deletion example/configs/04-custom-fields.config
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id 'nf-slack@0.4.1'
id 'nf-slack@0.5.0'
}

slack {
Expand Down
2 changes: 1 addition & 1 deletion example/configs/05-selective-fields.config
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id 'nf-slack@0.4.1'
id 'nf-slack@0.5.0'
}

slack {
Expand Down
2 changes: 1 addition & 1 deletion example/configs/06-threaded-messages.config
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id 'nf-slack@0.4.0'
id 'nf-slack@0.5.0'
}

slack {
Expand Down
2 changes: 1 addition & 1 deletion example/configs/07-file-upload.config
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id 'nf-slack@0.4.1'
id 'nf-slack@0.5.0'
}

slack {
Expand Down
2 changes: 1 addition & 1 deletion example/nextflow.config
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
*/

plugins {
id 'nf-slack@0.4.0'
id 'nf-slack@0.5.0'
}

// Slack configuration
Expand Down