Skip to content

Upcoming screen: day-grouped task list #138

Open

Description

@MessiasLima

Description

Create the Upcoming screen that displays all tasks grouped by day. The groups are, in order: Overdue, Today, Tomorrow, then specific dates (e.g., "June 5"), and finally "No Date" for tasks without a due date.

Each group shows a header with the day label and the count of tasks in that group, followed by the task rows. Tapping a task row navigates to the Task Detail screen.

The task rows reuse the shared task row component (from #128). Tasks within each group are sorted by priority (highest first).

Depends on #120 (Task domain model and data layer), #128 (Task row component), #137 (Navigation redesign).

Scope

In scope: UpcomingScreen composable, UpcomingViewModel, day-grouped task list with headers (Overdue, Today, Tomorrow, specific dates, No Date), task count per group, priority sorting within groups, navigation to Task Detail on tap, and string resources.

Out of scope: filter dropdowns (separate ticket #16), inline quick-add (separate ticket #20), swipe actions (separate tickets #21, #22).

Acceptance criteria

  • GIVEN the user navigates to the Upcoming tab
    WHEN the screen renders
    THEN all tasks are displayed grouped by day
  • GIVEN tasks exist with overdue due dates
    WHEN the Upcoming screen renders
    THEN an "Overdue" group is shown at the top
  • GIVEN tasks exist with today's due date
    WHEN the Upcoming screen renders
    THEN a "Today" group is shown after Overdue
  • GIVEN tasks exist with tomorrow's due date
    WHEN the Upcoming screen renders
    THEN a "Tomorrow" group is shown after Today
  • GIVEN tasks exist with future due dates beyond tomorrow
    WHEN the Upcoming screen renders
    THEN groups for each specific date are shown in chronological order
  • GIVEN tasks exist without a due date
    WHEN the Upcoming screen renders
    THEN a "No Date" group is shown at the bottom
  • GIVEN a day group is displayed
    WHEN the group header renders
    THEN it shows the day label and the count of tasks in that group
  • GIVEN tasks exist within a group
    WHEN the group renders
    THEN tasks are sorted by priority with highest priority first
  • GIVEN the user taps a task row on the Upcoming screen
    WHEN the action occurs
    THEN the user navigates to the Task Detail screen for that task
  • GIVEN the user has no tasks at all
    WHEN the Upcoming screen renders
    THEN an appropriate empty state is shown
  • GIVEN user-visible text appears on the Upcoming screen
    WHEN the app renders the screen
    THEN all visible text comes from string resources

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions