You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Show a celebration illustration when all tasks due today (including overdue) are completed. This reinforces the app's calm, rewarding tone and gives users a moment of satisfaction.
The Today screen has three states:
Filled — there is at least one unfinished task due today or overdue. The task list is displayed.
Empty — there are no tasks due today and none overdue (not even completed ones). A regular empty state is shown.
Celebration — at least one task exists that is due today or overdue, and all such tasks are completed. A celebration illustration replaces the task list.
When the user enters the Today screen, the state is either Filled or Empty. The Celebration state is only reachable when the user marks the last unfinished task as done from within the screen.
Scope
In scope: three screen states (Filled, Empty, Celebration) with correct transitions, celebration illustration asset, string resources, and ViewModel state management for the celebration condition.
Out of scope: confetti animation, sound effects, sharing functionality, and mark-as-done interaction logic (covered by a separate ticket).
Acceptance criteria
GIVEN at least one task is due today or overdue and not all are completed
WHEN the user opens the Today screen
THEN the Filled state is shown displaying the unfinished task list
GIVEN there are no tasks due today and none overdue
WHEN the user opens the Today screen
THEN the Empty state is shown with a regular empty state message
GIVEN the user is on the Today screen in the Filled state
WHEN they mark the last unfinished task as done
THEN the screen transitions to the Celebration state showing the celebration illustration
GIVEN the Celebration state is shown
WHEN a new uncompleted task becomes due today
THEN the screen transitions back to the Filled state
GIVEN user-visible text accompanies the celebration
WHEN the app renders the Celebration state
THEN all visible text comes from string resources
Activity