feat: saved views of my work, across my projects
A person saves named views of «my work»: projects, assigned to me, that I follow, status categories, priorities, bugs only, overdue and text. They are private (Mongo my_views, no history), listed and deleted by their owner (GraphQL myViews / saveMyView / deleteMyView, REST /api/me/views), and run as the cross-project search, which gains project, priority, bugsOnly and overdue filters (also in MCP my_issues). The home page shows them as a bar above «my work», with a drawer to save a new one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -836,6 +836,9 @@ type Mutation {
|
||||
"""Author or project admin"""
|
||||
deleteComment(commentId: ID!): CommandResult!
|
||||
|
||||
"""Delete one of my views"""
|
||||
deleteMyView(id: ID!): Boolean!
|
||||
|
||||
"""
|
||||
Delete the project (owner only), with its tickets, comments and releases. `confirmKey` must be the project key.
|
||||
"""
|
||||
@@ -893,6 +896,9 @@ type Mutation {
|
||||
"""Save the current board filters under a name (members of the project)"""
|
||||
saveFilter(input: SaveFilterInput!): ID!
|
||||
|
||||
"""Save a view of my work under a name"""
|
||||
saveMyView(input: SaveMyViewInput!): ID!
|
||||
|
||||
"""
|
||||
Place a ticket under an epic or another ticket of the same project (null: back to the top). Three levels at most: epic → ticket → subtask.
|
||||
"""
|
||||
@@ -965,6 +971,45 @@ type MyNotifications {
|
||||
unread: Int!
|
||||
}
|
||||
|
||||
"""A named view of my work (private)"""
|
||||
type MyView {
|
||||
createdAt: String!
|
||||
criteria: MyViewCriteria!
|
||||
id: ID!
|
||||
name: String!
|
||||
}
|
||||
|
||||
"""What a view of my work narrows to; empty: every ticket of my projects"""
|
||||
type MyViewCriteria {
|
||||
assignedToMe: Boolean
|
||||
|
||||
"""Only types with the bug icon"""
|
||||
bugsOnly: Boolean
|
||||
categories: [StatusCategory!]
|
||||
|
||||
"""Only open tickets past due"""
|
||||
overdue: Boolean
|
||||
priorities: [IssuePriority!]
|
||||
|
||||
"""Empty: all my projects"""
|
||||
projectIds: [ID!]
|
||||
search: String
|
||||
watching: Boolean
|
||||
}
|
||||
|
||||
input MyViewCriteriaInput {
|
||||
assignedToMe: Boolean
|
||||
bugsOnly: Boolean
|
||||
categories: [StatusCategory!]
|
||||
overdue: Boolean
|
||||
priorities: [IssuePriority!]
|
||||
|
||||
"""Empty: all my projects"""
|
||||
projectIds: [ID!]
|
||||
search: String
|
||||
watching: Boolean
|
||||
}
|
||||
|
||||
type Notification {
|
||||
actor: UserRef!
|
||||
createdAt: String!
|
||||
@@ -1234,10 +1279,20 @@ type Query {
|
||||
"""
|
||||
myIssues(
|
||||
assignedToMe: Boolean! = true
|
||||
|
||||
"""Only types drawn with the bug icon"""
|
||||
bugsOnly: Boolean
|
||||
categories: [StatusCategory!]
|
||||
limit: Int! = 50
|
||||
offset: Int! = 0
|
||||
|
||||
"""Only open tickets past their due date"""
|
||||
overdue: Boolean
|
||||
priorities: [IssuePriority!]
|
||||
|
||||
"""Only these of my projects"""
|
||||
projectIds: [ID!]
|
||||
|
||||
"""Matches key, title or description (global search)"""
|
||||
search: String
|
||||
statuses: [String!]
|
||||
@@ -1251,6 +1306,9 @@ type Query {
|
||||
|
||||
"""Projects where I am a member"""
|
||||
myProjects: [Project!]!
|
||||
|
||||
"""My saved views of my work, across my projects"""
|
||||
myViews: [MyView!]!
|
||||
notificationSettings: NotificationSettings!
|
||||
|
||||
"""A project of mine, or any public one (no sign-in needed)"""
|
||||
@@ -1399,6 +1457,11 @@ input SaveFilterInput {
|
||||
shared: Boolean! = false
|
||||
}
|
||||
|
||||
input SaveMyViewInput {
|
||||
criteria: MyViewCriteriaInput!
|
||||
name: String!
|
||||
}
|
||||
|
||||
"""
|
||||
A named view of the board: private to whoever saved it, or shared with the project
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user