v2.17.28

semaphoreui/semaphorev2.17.28Mar 22, 2026by github-actions[bot]

AI Summary

Improves internal task tracking by persisting the runner association and correcting status validation logic in the runner update flow.

Key Highlights

  • Added `runner_id` field to task records to persist runner association
  • Fixed runner task status validation to use the actual task status field

New Features

  • Added `runner_id` field to task records

Full Release Notes

## Release v2.17.28

This release improves runner-to-task tracking and fixes task status handling in the runner update flow.

A new `runner_id` field was added to tasks in the database, which makes it possible to persist the association between a task and the runner executing it. This improves internal task tracking and lays the groundwork for more reliable runner state handling. 

This release also fixes a bug in the runner update logic where the current task state was checked using the wrong field. In `api/runners/runners.go`, the status check was corrected from `job.Status.IsFinished()` to `tsk.Task.Status.IsFinished()`, ensuring the system evaluates the actual stored task state before applying runner updates. This makes task state transitions more accurate during runner execution.

### What's changed

* Added `runner_id` to the task record in the database for better runner-to-task association. ([#3712](https://github.com/semaphoreui/semaphore/pull/3712))
* Fixed runner task status validation to use the actual task status field instead of the job status field.

### Full Changelog

[https://github.com/semaphoreui/semaphore/compare/v2.17.27...v2.17.28](https://github.com/semaphoreui/semaphore/compare/v2.17.27...v2.17.28)