Repository navigation
Copy a set of tasks once per interview or dataset - #565
Merged
Merged
Conversation
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This was referenced Oct 9, 2026
Closed
doomlab
added a commit
that referenced
this pull request
Oct 9, 2026
Copy a set of tasks once per interview or dataset (gets #565 onto dev)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #534
Stacked on #564 (copy milestone), which is stacked on #563 (server-side access checks). It reuses the access helper and a task-copy helper that #564's copy already uses (now shared). Merge in order #563, #564, then this; each must reach
dev, not just the branch below it (that is how #559 to #561 earlier merged into each other without reachingdev). Retarget todevas each merges if GitHub does not.What
A Copy Set of Tasks button next to "Create New Task" on the project's Tasks page (project managers only). It opens a dialog:
Interview 2,Interview 3.Each label gets its own full copy of the set, named
<task> - <label>(e.g.Transcribe - Interview 2). Tasks are copied in the order they were created, so step 1, 2, 3, 4 stays in that order, and the copies go to the end of their column on the board. The boards and lists refresh afterwards.How copies behave
Same rules as copying a milestone with its tasks (now one shared helper,
taskCopyData): same details, dates, tags, form, roles, column and settings, back to "not completed", created by the person copying, nobody assigned and no logs, responses, comments or notifications. Without the milestone option the copies are not in any milestone (rather than guessing the original's). Everything happens in one transaction.Limits and access
Testing
copyTaskSet.test.ts(8): names and ordering across labels and columns, new unassigned tasks, milestone per set, cross-project task refused, missing task / no member row, non-managers refused, size limit, empty input.CopyTaskSetButton.test.tsx(7): the dialog, enabling rules, preview text, the exact payload sent, milestone option, too many, cancel, failure stays open.copyTaskSetInput.test.ts(4): label parsing and naming.copyMilestonestill passes unchanged after moving to the shared helper.getJsonSchema.test.tserrors), lint and the full suite (314 tests, run twice) pass.Not included: saving a set as a reusable template to apply later (that would be a larger feature of its own).
🤖 Generated with Claude Code