feat: sprints with burndown and carry-over

Plan sprints with dates and a goal, run one at a time per project, and
put tickets in them from the ticket page. The Sprints tab follows the one
under way with its progress and a burndown in tickets or points against
the ideal line. Closing a sprint sends what was left to the next one or
back to the backlog; the board can be filtered by sprint.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-08 14:59:01 +02:00
parent d2e31789a7
commit 50d3ffd1dd
104 changed files with 7209 additions and 33 deletions

View File

@@ -12,6 +12,7 @@ import {
NotificationGql,
ProjectChangeGql,
ReleaseChangeGql,
SprintChangeGql,
} from './types';
const asIs = { resolve: <T>(payload: T) => payload };
@@ -66,6 +67,14 @@ export class SubscriptionResolver {
return this.changes.watchReleases(me.id, projectId);
}
@Subscription(() => SprintChangeGql, asIs)
sprintChanged(
@CurrentUser() me: User,
@Args('projectId', { type: () => ID }) projectId: string,
) {
return this.changes.watchSprints(me.id, projectId);
}
@Subscription(() => ProjectChangeGql, asIs)
projectChanged(
@CurrentUser() me: User,