Skip to content

Sprint management, task archiving, search, and UX improvements#24

Open
clawdina wants to merge 9 commits intoKeeeeeeeks:mainfrom
clawdina:fix/kanban-card-layout
Open

Sprint management, task archiving, search, and UX improvements#24
clawdina wants to merge 9 commits intoKeeeeeeeks:mainfrom
clawdina:fix/kanban-card-layout

Conversation

@clawdina
Copy link
Contributor

@clawdina clawdina commented Mar 7, 2026

Summary

  • Default to active sprint: Landing page now auto-selects the active (or most recent) sprint instead of showing all tasks across all sprints
  • Configurable sprint lengths: Sprint creation modal has duration presets (1w/2w/3w/4w/custom), defaulting to 1 week. SprintHeader uses actual end_date instead of hardcoded 14 days
  • Task archiving: Soft-delete via archived_at timestamp. Archive/unarchive actions on cards and detail modal. "Show archived" toggle in Kanban toolbar. API excludes archived by default
  • Sprint review UX: Non-dismissible banner when a sprint ends without review. "Review Sprint" links to analytics page pre-filtered to that sprint, auto-marking it as reviewed and completed
  • Task search: Search bar in Kanban toolbar filters cards by name, content, agent, or project
  • Sprint auto-rotation: When the active sprint's end date passes, a successor sprint is auto-created with the same duration and incremented name
  • Auto-assign to sprint: New tasks (both single and batch create) are auto-assigned to the active sprint

Changes

DB / Backend

  • ux_audits table migration (archived_at on todos, reviewed_at on sprints)
  • rotateSprintIfNeeded() — idempotent sprint succession on poll
  • getUnreviewedEndedSprints() for review banner detection
  • archiveTodo() / unarchiveTodo() operations
  • GET /api/sprints/needs-review endpoint
  • Batch PUT auto-assigns new todos to active sprint

Frontend

  • SprintReviewBanner component (amber, non-dismissible)
  • CreateSprintModal duration presets
  • KanbanBoard search input + filteredTodos memo
  • Archive toggle, archive actions on cards/detail modal
  • Analytics page review mode with auto-complete + toast
  • Landing page auto-selects active sprint on mount

clawdina and others added 9 commits February 21, 2026 07:51
…ent dropdowns, delete

- Add clickable status badge on TaskCard with dropdown to change status without opening modal
- Add Sprint, Project, and Agent dropdowns to TaskDetailModal
- Add sprint_id column to tasks table with migration
- Update API schema and update handler to support sprint_id
- Thread onStatusChange through TaskBoard → TaskColumn → TaskCard
- Fetch sprints/agents data in v2 page and pass to modal
- Add duration preset buttons (1w/2w/3w/4w/custom) to CreateSprintModal
- Auto-compute end date from start date + selected duration
- End date field locked unless custom duration is selected
- Fix SprintHeader to use actual sprint end_date instead of hardcoded 14 days
- DB migration adds archived_at column to todos table
- getAllTodos excludes archived by default, opt-in via include_archived param
- Archive/unarchive actions on KanbanCard and TaskDetailModal
- Show archived toggle in Kanban toolbar
- Polling hook respects showArchived state
- DB: add reviewed_at column to sprints, getUnreviewedEndedSprints() method
- API: new /api/sprints/needs-review endpoint, PATCH accepts reviewed_at
- Banner: non-dismissible SprintReviewBanner on landing page for ended sprints
- Analytics: review mode auto-selects sprint, marks as reviewed + completed
- Review CTA links to /analytics?sprint_id=X&review=true
- Add rotateSprintIfNeeded() to DB: when no active sprint exists and the
  latest sprint has ended, auto-creates a successor with the same duration,
  incremented name, and status 'active'
- Call rotation from GET /api/sprints so it triggers on every poll cycle
- Add auto-assign to batch PUT /api/todos for newly created tasks (was
  already done for single POST, now consistent)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant