feat: work-in-progress limits and swimlanes on the board
Each status can carry a WIP limit in the project settings; the board shows it next to the count, marks a column that goes over it and says so when a card is dropped there. The board can also be grouped in rows by person, epic, priority or type, remembered per browser. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -239,6 +239,8 @@ export type WorkflowStatusInput = {
|
||||
id: string;
|
||||
name: string;
|
||||
requiresReason?: boolean;
|
||||
/** Work-in-progress limit (null: none) */
|
||||
wipLimit?: number | null | undefined;
|
||||
};
|
||||
|
||||
export type UserRefFieldsFragment = { id: string; name: string };
|
||||
@@ -261,6 +263,7 @@ export type ProjectFieldsFragment = {
|
||||
color: string;
|
||||
requiresReason: boolean;
|
||||
archived: boolean;
|
||||
wipLimit: number | null;
|
||||
}>;
|
||||
transitions: Array<{ from: string; to: Array<string> }>;
|
||||
issueTypes: Array<{
|
||||
@@ -892,6 +895,7 @@ export type MyProjectsQuery = {
|
||||
color: string;
|
||||
requiresReason: boolean;
|
||||
archived: boolean;
|
||||
wipLimit: number | null;
|
||||
}>;
|
||||
transitions: Array<{ from: string; to: Array<string> }>;
|
||||
issueTypes: Array<{
|
||||
@@ -929,6 +933,7 @@ export type ProjectQuery = {
|
||||
color: string;
|
||||
requiresReason: boolean;
|
||||
archived: boolean;
|
||||
wipLimit: number | null;
|
||||
}>;
|
||||
transitions: Array<{ from: string; to: Array<string> }>;
|
||||
issueTypes: Array<{
|
||||
@@ -1076,6 +1081,7 @@ export type PublicProjectsQuery = {
|
||||
color: string;
|
||||
requiresReason: boolean;
|
||||
archived: boolean;
|
||||
wipLimit: number | null;
|
||||
}>;
|
||||
transitions: Array<{ from: string; to: Array<string> }>;
|
||||
issueTypes: Array<{
|
||||
@@ -1490,6 +1496,7 @@ export type ProjectChangedSubscription = {
|
||||
color: string;
|
||||
requiresReason: boolean;
|
||||
archived: boolean;
|
||||
wipLimit: number | null;
|
||||
}>;
|
||||
transitions: Array<{ from: string; to: Array<string> }>;
|
||||
issueTypes: Array<{
|
||||
@@ -1530,6 +1537,7 @@ export type MyProjectsChangedSubscription = {
|
||||
color: string;
|
||||
requiresReason: boolean;
|
||||
archived: boolean;
|
||||
wipLimit: number | null;
|
||||
}>;
|
||||
transitions: Array<{ from: string; to: Array<string> }>;
|
||||
issueTypes: Array<{
|
||||
@@ -1648,6 +1656,10 @@ export const ProjectFieldsFragmentDoc = {
|
||||
kind: 'Field',
|
||||
name: { kind: 'Name', value: 'archived' },
|
||||
},
|
||||
{
|
||||
kind: 'Field',
|
||||
name: { kind: 'Name', value: 'wipLimit' },
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
@@ -5664,6 +5676,10 @@ export const MyProjectsDocument = {
|
||||
kind: 'Field',
|
||||
name: { kind: 'Name', value: 'archived' },
|
||||
},
|
||||
{
|
||||
kind: 'Field',
|
||||
name: { kind: 'Name', value: 'wipLimit' },
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
@@ -5865,6 +5881,10 @@ export const ProjectDocument = {
|
||||
kind: 'Field',
|
||||
name: { kind: 'Name', value: 'archived' },
|
||||
},
|
||||
{
|
||||
kind: 'Field',
|
||||
name: { kind: 'Name', value: 'wipLimit' },
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
@@ -6917,6 +6937,10 @@ export const PublicProjectsDocument = {
|
||||
kind: 'Field',
|
||||
name: { kind: 'Name', value: 'archived' },
|
||||
},
|
||||
{
|
||||
kind: 'Field',
|
||||
name: { kind: 'Name', value: 'wipLimit' },
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
@@ -9221,6 +9245,10 @@ export const ProjectChangedDocument = {
|
||||
kind: 'Field',
|
||||
name: { kind: 'Name', value: 'archived' },
|
||||
},
|
||||
{
|
||||
kind: 'Field',
|
||||
name: { kind: 'Name', value: 'wipLimit' },
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
@@ -9409,6 +9437,10 @@ export const MyProjectsChangedDocument = {
|
||||
kind: 'Field',
|
||||
name: { kind: 'Name', value: 'archived' },
|
||||
},
|
||||
{
|
||||
kind: 'Field',
|
||||
name: { kind: 'Name', value: 'wipLimit' },
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user