Page MenuHomePhabricator

[User story] Daily reading
Closed, ResolvedPublic1 Estimated Story Points

Description

User Stories

  • As a participant, I want to open any Wikipedia article to log my daily read, so that participation feels natural and fits how I already use Wikipedia.
  • As a participant, I want to see my current streak count and whether I've read today on the widget, so that I can check my progress and have a reason to open the app daily.

Requirements:

Adding to your streak:

  • ✅ The streak counter increments by 1 each calendar day that a read is logged
  • ✅ Any article open by an enrolled user is automatically counted as their daily read: there is no minimum time-on-page requirement
  • ✅ Only the first article open per calendar day triggers the state transition: subsequent opens on the same day have no effect
  • Calendar days are determined by the user's local timezone
    • Example updates
      • 00:01 in local time Day 1: Reader hasn't opened the app yet, Widget is in State: Streak ongoing: not yet read today
      • 12:00 local time Day 1: Reader opens the app and reads an article
      • 12:05 local time Day 1: Reader goes to home screen and Widget has updated to State: Streak ongoing: read today
      • 10pm local time Day 1: State: Streak ongoing: read today
      • 00:00 in local time Day 2: Widget resets to State: Streak ongoing: not yet read today
  • ✅Article opens while logged out may count toward the streak, if the user’s device is enrolled
  • ✅ The Widget should transition as soon as possible once the daily read is logged
  • ✅ For users who joined while logged-in, and then logged-out, progress tracking for their streak and on the Widget can continue, but they must log back in to view Activity/Claim prizes

Tracking progress

  • ✅ Widget displays the user's current streak count at all times in State: Streak ongoing: not yet read today and State: Streak ongoing: read today
  • ✅ In State: Streak ongoing: not yet read today, display an active CTA prompting the user to read an article
    • ✅ Widget: Search and Random CTAs in larger widget
    • ✅ Tapping anywhere else on the widget leads to Explore (Or Search if Explore is disabled)
  • ✅ In State: Streak ongoing: read today, display a confirmation that today's read is complete: the CTA is removed and the streak number is featured
  • ✅ Widget should most current state without requiring a manual refresh
  • Subtitle text below heading with encouragement https://docs.google.com/document/d/1GDtGFcIC_wUg_YVBwoN0WvN5_m7zVKNOOHkM7qdXR6g/edit?tab=t.0#bookmark=id.6rfzgbv25dgy
  • ✅ [Nice to have] Progress bar from 1-25, automatically updates when the user moves from States not read today, to read today). Note: If we are able to add the progress bar, we should remove the subtitle text

Losing your streak will be completed on separate tasks

Designs

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes
Seddon raised the priority of this task from Medium to High.Mar 7 2026, 1:33 PM
Seddon changed the point value for this task from 3 to 1.Mar 24 2026, 5:46 PM
Seddon set Final Story Points to 3.
SChekfa-WMF subscribed.

@GOlson-WMF the widget isn't loading for me on build 324, is there something i need to do to trigger it? i don't see any configurations available in settings.

@SChekfa-WMF Sorry about that!

You'll have to change the device date to be within the range (May) and then you should be able to install! (Settings come in a later ticket)

Developer settings now merged in Experimental build will be 8.0.0 (326).

Test steps

  1. Navigate to developer settings
  2. All the way at the bottom, you can toggle use relative dates or reset. Use relative dates allows you to pretend it's May and the challenge is ongoing, and reset pretends you haven't enrolled in the challenge, but does not reset your reading counter.
  3. Once you have enrolled (see enrollment steps on that ticket), you can read, and increment your device date as needed. Make sure you get various states, not read today, read, etc. Make sure different size widgets work.

the widget still isn't appearing, even though i toggled the relative date setting on, and have my device set to May 2. @GOlson-WMF

what i'm seeing: https://drive.google.com/file/d/1sGZkJseaJND-jP_cXhvbVz_JhZVSVGjP/view?usp=sharing

SChekfa-WMF added a subscriber: WRai-WMF.

@GOlson-WMF please provide additional information as to how i can fake "day 2," "day 3," etc, otherwise i will not be able to review this ticket in full. @WRai-WMF implemented a configuration screen that lets me do this for Android that allowed me to review adequately:

Screenshot 2026-04-02 at 3.53.45 PM.png (916×2,060 px, 264 KB)

@SChekfa-WMF You should be able to update your device date manually and read per day in order to fake the days. I'm adding in some configuration as I go but to get everything like that would be a large lift. I could also show you how to fake it in code, let me know what your preference is!

^ resolved over slack

moving to blocked and waiting while @GOlson-WMF incorporates a fix for the widget's being stuck in "challenge not live yet"

p0 to fix post punchlist sync:

  • progress bar too wide, possibly due to the large calendar icons, pushing baby globe too far up
  • day count being truncated on ipad (both read today and not read yet stages)

https://docs.google.com/spreadsheets/d/12FFRe-O1lr1lJN8Ogq-nBnKqFcyeCd2_FElvI21biFM/edit?gid=1038154178#gid=1038154178

342 should be available now while we fix this!

Baby globe asset fix is in 8.0.1 (353).

@Tsevener the issue is fixed but i feel like there was a regression to the large variant where the flame icon is very close to the "X days" now.. do you think this fix might be related?

IMG_4927.PNG (1,179×2,556 px, 2 MB)

Fixes will be in main (not Experimental) TestFlight 8.1.0 (6045).

ABorbaWMF subscribed.

Working for me on 8.1.0 (6045)
Tested on using developer settings:
iPhone 16, iOS 26.4.2
iPhone SE, iOS 26.4.2
iPad Air 11 inch, iPadOS 26.3.1