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

@@ -9,6 +9,7 @@ import {
FindReleasesRepository,
FindTimelineRepository,
IssueFilter,
IssueSort,
Page,
} from '@task-stream/api/tracker/application';
import {
@@ -135,7 +136,11 @@ export class MongoFindIssuesRepository extends FindIssuesRepository {
const [docs, total] = await Promise.all([
this.issues
.find(query)
.sort({ updatedAt: -1 })
.sort(
filter.sort === IssueSort.RANK
? { rank: 1, number: 1 }
: { updatedAt: -1 },
)
.skip(filter.offset)
.limit(filter.limit)
.lean<IssueDoc[]>(),