feat: follow an epic with everything under it

«Seguir todo» on a ticket with subtasks (and on each epic of the Epics
page) tells you of it and of every ticket hanging from it, at any depth,
also the ones added later: their moves, assignments, comments and plan
changes, as a follower of each, plus when a ticket is placed under it.
Guests of a private project are left out. Personal, no history (Mongo
`tree_follows`).

API: followTree / unfollowTree, Issue.followingTree, PUT/DELETE
/api/issues/{issue}/follow-tree. MCP: watch_issue with tree.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-20 19:59:04 +02:00
parent 179d6a5e94
commit d79ef418d3
31 changed files with 1072 additions and 62 deletions

View File

@@ -691,6 +691,9 @@ type Issue {
dueDate: String
figmaUrl: String
"""Whether I follow it with everything under it (false without a token)"""
followingTree: Boolean!
"""History of this ticket"""
history(limit: Int! = 50): [Activity!]!
id: ID!
@@ -1016,6 +1019,11 @@ type Mutation {
duplicateIssue(issueId: ID!): CommandResult!
editComment(body: String!, commentId: ID!): CommandResult!
"""
Follow a ticket with everything under it (an epic): its changes and those of every ticket hanging from it, also future ones
"""
followTree(issueId: ID!): Boolean!
"""I left this ticket's page"""
leavePresence(issueId: ID!): Boolean!
@@ -1129,6 +1137,9 @@ type Mutation {
"""Bring an archived project back (owner only)"""
unarchiveProject(projectId: ID!): CommandResult!
"""Stop following a ticket with everything under it"""
unfollowTree(issueId: ID!): Boolean!
unlinkIssues(input: LinkIssuesInput!): CommandResult!
"""Unpin a ticket"""