feat: move unfinished tickets between releases
- Bulk editing gets «Release…» (open releases or none), and the list view a release filter, also reachable from each release («Ver en la lista», ?release=). - Archiving a release asks where its unfinished tickets go, as closing a sprint does: ReleaseArchivedEvent carries `moveTo` (an open release of the same project, or none) and the saga moves them there; finished ones stay. In GraphQL, REST and the MCP's archive_release. - Chapter 10 lists the next features and the ideas to weigh. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -34,6 +34,7 @@ import {
|
||||
import {
|
||||
CreateReleaseDto,
|
||||
PageQueryDto,
|
||||
ArchiveReleaseDto,
|
||||
PublishReleaseDto,
|
||||
ReleaseNotesDto,
|
||||
UpcomingReleasesQueryDto,
|
||||
@@ -234,10 +235,18 @@ export class ReleasesController {
|
||||
|
||||
@Post('releases/:releaseId/archive')
|
||||
@HttpCode(200)
|
||||
@ApiOperation({ summary: 'Archive a planned release (its tickets leave it)' })
|
||||
@ApiOperation({
|
||||
summary: 'Archive a planned release',
|
||||
description:
|
||||
'Its unfinished tickets move to `moveTo` (an open release of the same project) or leave it.',
|
||||
})
|
||||
@ApiOkResponse({ type: CommandResultDto })
|
||||
@ApiCommandErrors()
|
||||
archive(@CurrentUser() me: User, @Param('releaseId') releaseId: string) {
|
||||
return this.releases.archive(me.id, releaseId);
|
||||
archive(
|
||||
@CurrentUser() me: User,
|
||||
@Param('releaseId') releaseId: string,
|
||||
@Body() body: ArchiveReleaseDto,
|
||||
) {
|
||||
return this.releases.archive(me.id, releaseId, body?.moveTo ?? null);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user