feat: recurring tasks - auto-spawn next instance on completion
- Added recurrence field (daily/weekly/biweekly/monthly) to tasks schema
- Backend: auto-creates next task instance when recurring task completed
- Copies title, description, assignee, project, tags, subtasks (unchecked)
- Computes next due date based on frequency
- Optional autoActivate to immediately activate next instance
- Frontend: recurrence picker in CreateTaskModal and TaskDetailPanel
- Recurrence badges (🔄) on TaskCard, KanbanBoard, TaskPage, DashboardPage
- Schema uses JSONB column (no migration needed, db:push on deploy)
This commit is contained in:
@@ -248,6 +248,11 @@ export function TaskPage() {
|
||||
📁 {project.name}
|
||||
</span>
|
||||
)}
|
||||
{task.recurrence && (
|
||||
<span className="text-xs text-teal-600 dark:text-teal-400 bg-teal-100 dark:bg-teal-900/30 px-2 py-0.5 rounded-full font-medium">
|
||||
🔄 {task.recurrence.frequency === "biweekly" ? "Bi-weekly" : task.recurrence.frequency.charAt(0).toUpperCase() + task.recurrence.frequency.slice(1)}
|
||||
</span>
|
||||
)}
|
||||
{task.tags?.map(tag => (
|
||||
<span key={tag} className="text-xs text-violet-600 dark:text-violet-400 bg-violet-100 dark:bg-violet-900/30 px-2 py-0.5 rounded-full font-medium">
|
||||
🏷️ {tag}
|
||||
@@ -623,6 +628,14 @@ export function TaskPage() {
|
||||
<span className="text-gray-700 dark:text-gray-300 font-medium">⏱ {task.estimatedHours}h</span>
|
||||
</div>
|
||||
)}
|
||||
{task.recurrence && (
|
||||
<div className="flex justify-between">
|
||||
<span className="text-gray-500 dark:text-gray-400">Recurrence</span>
|
||||
<span className="text-teal-600 dark:text-teal-400 font-medium">
|
||||
🔄 {task.recurrence.frequency === "biweekly" ? "Bi-weekly" : task.recurrence.frequency.charAt(0).toUpperCase() + task.recurrence.frequency.slice(1)}
|
||||
</span>
|
||||
</div>
|
||||
)}
|
||||
{task.tags?.length > 0 && (
|
||||
<div>
|
||||
<span className="text-gray-500 dark:text-gray-400 block mb-1">Tags</span>
|
||||
|
||||
Reference in New Issue
Block a user