Issue board milestone lists
- Changes below for Web UI
- Associated list changes for API
Similar to #5784 (closed), but for milestones.
This is a solution to the implementing the Agile workflow of having an issue (story) backlog, and being able to manage/groom that backlog, and easily move issues (stories) between different milestones (sprints/iterations). Also you would be able to prioritize them within a sprint easily too.
Note that in this use case, the "milestones" are indeed sprints/iterations in Agile. But in the future, we want to extend milestones to also mean releases (gitlab-org&69). I.e. in GitLab currently we don't have a distinction between release vs iteration natively.
We add a third tab to the
Add list dropdown for Milestones where users can choose a milestone to create a list:
|Adding a milestone list||Milestone list|
The label of the new tab will be
Milestone. The labels of the other two tabs will need to be modified: 'Labellist' and 'Assigneelist'.
The help text for the Milestone tab will be:
Milestone lists show all issues from the selected milestone
The width of the dropdown will be increased to
312px to accommodate for the third tab.
Milestone lists will display the milestone's name next to the milestone icon,
See https://docs.gitlab.com/ee/user/project/issue_board.html#dragging-issues-between-lists for existing behavior.
For project-level boards, the
Add list dropdown will show all milestones from that project, from all milestones from its direct parent group, and from all milestones from ancestor groups beyond the parent.
For group-level boards, the
Add list dropdown will show all milestones from that group and all milestones from ancestor groups.
Since an issue can only have one milestone, moving a card to a milestone list will remove the previous value and replace it with the value of the list.
These are the attribute changes that will happen when moving issues between a milestone list and different one:
To an from the backlog
Milestone -> Backlog: Remove the milestone
Backlog -> Milestone: Assign the milestone
To and from a label list
Milestone -> Label: Add the label
Label -> Milestone: Assign the milestone
To and from an assignee list
Milestone -> Assignee: Assign the user
Assignee -> Milestone: Assign the milestone
To and from a milestone list
- Milestone -> Milestone: Remove the first milestone and assign the second one
To and from the Closed list
Milestone -> Closed: Close the issue
Closed -> Milestone: Open and assign the milestone