feat: a roadmap of epics over time
Tickets get a start date next to their due date, both editable on the ticket page. The Hoja de ruta tab lays the epics out over the months as bars filled with their progress, with sprints and releases as landmarks and a line for today. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -81,13 +81,14 @@ fragment IssueSummaryFields on Issue {
|
||||
}
|
||||
rank
|
||||
storyPoints
|
||||
startDate
|
||||
dueDate
|
||||
}
|
||||
|
||||
fragment IssueFields on Issue {
|
||||
...IssueSummaryFields
|
||||
description
|
||||
figmaUrl
|
||||
dueDate
|
||||
createdAt
|
||||
allowedTransitions
|
||||
reporter {
|
||||
|
||||
@@ -40,6 +40,8 @@ export type CreateIssueInput = {
|
||||
priority?: IssuePriority | null | undefined;
|
||||
projectId: string;
|
||||
releaseId?: string | null | undefined;
|
||||
/** When work should start (roadmap), YYYY-MM-DD */
|
||||
startDate?: string | null | undefined;
|
||||
storyPoints?: number | null | undefined;
|
||||
title: string;
|
||||
/** A ticket type id */
|
||||
@@ -212,6 +214,8 @@ export type UpdateIssueInput = {
|
||||
issueId: string;
|
||||
labels?: Array<string> | null | undefined;
|
||||
priority?: IssuePriority | null | undefined;
|
||||
/** When work should start (roadmap), YYYY-MM-DD */
|
||||
startDate?: string | null | undefined;
|
||||
storyPoints?: number | null | undefined;
|
||||
title?: string | null | undefined;
|
||||
type?: string | null | undefined;
|
||||
@@ -293,6 +297,8 @@ export type IssueSummaryFieldsFragment = {
|
||||
version: number;
|
||||
rank: string;
|
||||
storyPoints: number | null;
|
||||
startDate: string | null;
|
||||
dueDate: string | null;
|
||||
assignee: { id: string; name: string } | null;
|
||||
release: { id: string; name: string } | null;
|
||||
sprint: { id: string; name: string } | null;
|
||||
@@ -302,7 +308,6 @@ export type IssueSummaryFieldsFragment = {
|
||||
export type IssueFieldsFragment = {
|
||||
description: string | null;
|
||||
figmaUrl: string | null;
|
||||
dueDate: string | null;
|
||||
createdAt: string;
|
||||
allowedTransitions: Array<string>;
|
||||
id: string;
|
||||
@@ -320,6 +325,8 @@ export type IssueFieldsFragment = {
|
||||
version: number;
|
||||
rank: string;
|
||||
storyPoints: number | null;
|
||||
startDate: string | null;
|
||||
dueDate: string | null;
|
||||
reporter: { id: string; name: string };
|
||||
links: Array<{
|
||||
type: IssueLinkType;
|
||||
@@ -414,6 +421,8 @@ export type BoardQuery = {
|
||||
version: number;
|
||||
rank: string;
|
||||
storyPoints: number | null;
|
||||
startDate: string | null;
|
||||
dueDate: string | null;
|
||||
assignee: { id: string; name: string } | null;
|
||||
release: { id: string; name: string } | null;
|
||||
sprint: { id: string; name: string } | null;
|
||||
@@ -431,7 +440,6 @@ export type IssueQuery = {
|
||||
issue: {
|
||||
description: string | null;
|
||||
figmaUrl: string | null;
|
||||
dueDate: string | null;
|
||||
createdAt: string;
|
||||
allowedTransitions: Array<string>;
|
||||
id: string;
|
||||
@@ -449,6 +457,8 @@ export type IssueQuery = {
|
||||
version: number;
|
||||
rank: string;
|
||||
storyPoints: number | null;
|
||||
startDate: string | null;
|
||||
dueDate: string | null;
|
||||
reporter: { id: string; name: string };
|
||||
links: Array<{
|
||||
type: IssueLinkType;
|
||||
@@ -496,6 +506,8 @@ export type SearchIssuesQuery = {
|
||||
version: number;
|
||||
rank: string;
|
||||
storyPoints: number | null;
|
||||
startDate: string | null;
|
||||
dueDate: string | null;
|
||||
assignee: { id: string; name: string } | null;
|
||||
release: { id: string; name: string } | null;
|
||||
sprint: { id: string; name: string } | null;
|
||||
@@ -649,6 +661,8 @@ export type MyIssuesQuery = {
|
||||
version: number;
|
||||
rank: string;
|
||||
storyPoints: number | null;
|
||||
startDate: string | null;
|
||||
dueDate: string | null;
|
||||
assignee: { id: string; name: string } | null;
|
||||
release: { id: string; name: string } | null;
|
||||
sprint: { id: string; name: string } | null;
|
||||
@@ -679,6 +693,8 @@ export type IssueChildrenQuery = {
|
||||
version: number;
|
||||
rank: string;
|
||||
storyPoints: number | null;
|
||||
startDate: string | null;
|
||||
dueDate: string | null;
|
||||
assignee: { id: string; name: string } | null;
|
||||
release: { id: string; name: string } | null;
|
||||
sprint: { id: string; name: string } | null;
|
||||
@@ -709,6 +725,8 @@ export type EpicsQuery = {
|
||||
version: number;
|
||||
rank: string;
|
||||
storyPoints: number | null;
|
||||
startDate: string | null;
|
||||
dueDate: string | null;
|
||||
assignee: { id: string; name: string } | null;
|
||||
release: { id: string; name: string } | null;
|
||||
sprint: { id: string; name: string } | null;
|
||||
@@ -781,6 +799,8 @@ export type BacklogQuery = {
|
||||
version: number;
|
||||
rank: string;
|
||||
storyPoints: number | null;
|
||||
startDate: string | null;
|
||||
dueDate: string | null;
|
||||
assignee: { id: string; name: string } | null;
|
||||
release: { id: string; name: string } | null;
|
||||
sprint: { id: string; name: string } | null;
|
||||
@@ -1410,6 +1430,8 @@ export type IssueChangedSubscription = {
|
||||
version: number;
|
||||
rank: string;
|
||||
storyPoints: number | null;
|
||||
startDate: string | null;
|
||||
dueDate: string | null;
|
||||
assignee: { id: string; name: string } | null;
|
||||
release: { id: string; name: string } | null;
|
||||
sprint: { id: string; name: string } | null;
|
||||
@@ -1804,6 +1826,8 @@ export const IssueSummaryFieldsFragmentDoc = {
|
||||
},
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'rank' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'storyPoints' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'startDate' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'dueDate' } },
|
||||
],
|
||||
},
|
||||
},
|
||||
@@ -1843,7 +1867,6 @@ export const IssueFieldsFragmentDoc = {
|
||||
},
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'description' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'figmaUrl' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'dueDate' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'createdAt' } },
|
||||
{
|
||||
kind: 'Field',
|
||||
@@ -2018,6 +2041,8 @@ export const IssueFieldsFragmentDoc = {
|
||||
},
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'rank' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'storyPoints' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'startDate' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'dueDate' } },
|
||||
],
|
||||
},
|
||||
},
|
||||
@@ -2680,6 +2705,8 @@ export const BoardDocument = {
|
||||
},
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'rank' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'storyPoints' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'startDate' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'dueDate' } },
|
||||
],
|
||||
},
|
||||
},
|
||||
@@ -2824,6 +2851,8 @@ export const IssueDocument = {
|
||||
},
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'rank' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'storyPoints' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'startDate' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'dueDate' } },
|
||||
],
|
||||
},
|
||||
},
|
||||
@@ -2843,7 +2872,6 @@ export const IssueDocument = {
|
||||
},
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'description' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'figmaUrl' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'dueDate' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'createdAt' } },
|
||||
{
|
||||
kind: 'Field',
|
||||
@@ -3086,6 +3114,8 @@ export const SearchIssuesDocument = {
|
||||
},
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'rank' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'storyPoints' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'startDate' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'dueDate' } },
|
||||
],
|
||||
},
|
||||
},
|
||||
@@ -4314,6 +4344,8 @@ export const MyIssuesDocument = {
|
||||
},
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'rank' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'storyPoints' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'startDate' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'dueDate' } },
|
||||
],
|
||||
},
|
||||
},
|
||||
@@ -4472,6 +4504,8 @@ export const IssueChildrenDocument = {
|
||||
},
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'rank' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'storyPoints' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'startDate' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'dueDate' } },
|
||||
],
|
||||
},
|
||||
},
|
||||
@@ -4648,6 +4682,8 @@ export const EpicsDocument = {
|
||||
},
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'rank' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'storyPoints' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'startDate' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'dueDate' } },
|
||||
],
|
||||
},
|
||||
},
|
||||
@@ -5128,6 +5164,8 @@ export const BacklogDocument = {
|
||||
},
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'rank' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'storyPoints' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'startDate' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'dueDate' } },
|
||||
],
|
||||
},
|
||||
},
|
||||
@@ -8788,6 +8826,8 @@ export const IssueChangedDocument = {
|
||||
},
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'rank' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'storyPoints' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'startDate' } },
|
||||
{ kind: 'Field', name: { kind: 'Name', value: 'dueDate' } },
|
||||
],
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user