feat: an ordered backlog

A Backlog tab lists the tickets still to start in the order the team will
take them; drag them, or use the arrows, to reorder. Moving a ticket only
rewrites that ticket's rank, read from the event store, and board columns
follow the same order.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-08 14:01:44 +02:00
parent d4da33d4e8
commit 0606f53026
53 changed files with 1599 additions and 32 deletions

View File

@@ -28,6 +28,7 @@ import {
CreateIssueInput,
IssueFilterInput,
LinkIssuesInput,
RankIssueInput,
UpdateChecklistItemInput,
UpdateIssueInput,
} from './inputs';
@@ -266,6 +267,19 @@ export class IssueResolver {
return this.issuesService.setParent(me.id, issueId, parentId ?? null);
}
@Mutation(() => CommandResultGql, {
description:
'Move a ticket in the backlog, between two others of the same project',
})
rankIssue(@CurrentUser() me: User, @Args('input') input: RankIssueInput) {
return this.issuesService.rank(
me.id,
input.issueId,
input.aboveIssueId ?? null,
input.belowIssueId ?? null,
);
}
@Mutation(() => CommandResultGql, {
description: "Add a step to a ticket's checklist",
})