Page MenuHomePhabricator

Shareable Reading list items should not be visible on the Special:ReadingLists page
Closed, ResolvedPublic3 Estimated Story PointsBUG REPORT

Description

Steps to replicate the issue (include links if applicable):

  • Open the Android or iOS Wikipedia app
  • Export a reading list and copy the link
  • Log in to Wikipedia on desktop
  • Open the link in a web browser

What happens?:
The Special:ReadingLists page opens with a modal to export the list on iOS or Android.
Behind the modal, the imported list is visible.

Screenshot 2025-08-15 at 3.01.26 PM.png (1,426×1,506 px, 339 KB)

What should have happened instead?:

Shareable lists should not be visible on web. Previously, the page looked like this.

When ReadingListsAnonymizedPreviews is disabled:

  • The page should appear as currently (no blur and a cancel+close button)

When ReadingListsAnonymizedPreviews is enabled:

  • It should not be possible to close the Codex dialog - no cancel or close button
  • The title of the list should not be visible at all for legal reasons
  • The description of the list should not be visible at all for legal reasons
  • The contents of the list should not be visible at all for legal reasons

Desired result

Screenshot 2025-08-15 at 4.48.44 PM.png (901×945 px, 73 KB)

Considered and rejected solutions

Screenshot 2025-08-15 at 10.30.20 AM (1).png (987×378 px, 51 KB)

However, the patch that caused this issue maybe too large to revert, so we should explore forward fixes to this problem.
[rejected: too large to revert]

Blur the results

Untitled.jpg (1,335×1,550 px, 167 KB)

This is not sufficient from a legal POV according to Jaz. Legal team gave us a set of terms and conditions for releasing the feature.

Possible but we'd also need to ensure the dialog was not closeable as it would look strange to have a blank page.

Render the users default list in place of the shareable list

Rejected: would be confusing for users as it looks like they are importing their own list or something broke in the workflow.

Requirement

On desktop web, opening a shareable Reading List link must not reveal the list contents.

  • When ReadingListsAnonymizedPreviews is disabled: the page shows the current Codex export dialog (no blur) with Cancel and Close buttons, and no list details visible.
  • When ReadingListsAnonymizedPreviews is enabled: the Codex dialog has no Cancel or Close buttons, and the list title, description, and items must not be visible or present in the DOM.

BDD

Feature: Prevent visibility of shareable Reading List contents on desktop

  Scenario: Flag disabled – show export dialog with Cancel and Close, no list details visible
    Given I open a shareable Reading List link on desktop
    When ReadingListsAnonymizedPreviews is disabled
    Then the Codex export dialog is displayed with Cancel and Close buttons
    And no list title, description, or items are present in the page

  Scenario: Flag enabled – show blocking export dialog, no list details visible
    Given I open a shareable Reading List link on desktop
    When ReadingListsAnonymizedPreviews is enabled
    Then the Codex export dialog is displayed without Cancel or Close buttons
    And no list title, description, or items are present in the page

Test Steps

Test Case 1: Flag disabled – export dialog shows with Cancel/Close and no list data

  1. Open a shareable Reading List link in desktop browser with ReadingListsAnonymizedPreviews disabled.
  2. Inspect the page in the browser and DevTools.
  3. AC1: The export dialog is shown with Cancel and Close buttons visible in the DOM.
  4. AC2: The list contents (title, description, items) are not visible and not present in the DOM.

Test Case 2: Flag enabled – export dialog is blocking with no list data

  1. Open a shareable Reading List link in desktop browser with ReadingListsAnonymizedPreviews enabled.
  2. Inspect the page in the browser and DevTools.
  3. AC3: The export dialog is shown without Cancel or Close buttons (not present in DOM).
  4. AC4: The list title and description are not visible and not present in the DOM.
  5. AC5: The list items are not visible and not present in the DOM.

QA Results - Prod

Software version (on Special:Version page; skip for WMF-hosted wikis like Wikipedia):
This change was introduced as part of a large patch to refactor the Special:ReadingLists page.

Other information (browser name/version, screenshots, etc.):

Event Timeline

Jdrewniak triaged this task as Unbreak Now! priority.Aug 15 2025, 7:03 PM
Jdrewniak lowered the priority of this task from Unbreak Now! to High.
Jdlrobson-WMF subscribed.

I would recommend fixing the feature flag ReadingListsAnonymizedPreviews per the acceptance criteria I just added to the description.
When it's enabled we would add a JS variable / class to facilitate the following:

  • Remove (or hide) the close and cancel buttons on the dialog
  • Add the following CSS
.readinglists-anonymized-previews .readinglists-container > * {
    filter: blur(2px);
}

I think this could be a 2 pointer and a good opportunity for me to pair with somebody to transfer knowledge.

Change #1179700 had a related patch set uploaded (by Aude; author: Aude):

[mediawiki/extensions/ReadingLists@master] Restore $wgReadingListsAnonymizedPreviews feature flag for shared lists

https://gerrit.wikimedia.org/r/1179700

Patch above looks good but needs minor change. I should be able to backport it this week once addressed.

Change #1180205 had a related patch set uploaded (by Jdlrobson; author: Aude):

[mediawiki/extensions/ReadingLists@wmf/1.45.0-wmf.14] Restore $wgReadingListsAnonymizedPreviews feature flag for shared lists

https://gerrit.wikimedia.org/r/1180205

Change #1179700 merged by jenkins-bot:

[mediawiki/extensions/ReadingLists@master] Restore $wgReadingListsAnonymizedPreviews feature flag for shared lists

https://gerrit.wikimedia.org/r/1179700

Change #1180205 abandoned by Jdlrobson:

[mediawiki/extensions/ReadingLists@wmf/1.45.0-wmf.14] Restore $wgReadingListsAnonymizedPreviews feature flag for shared lists

Reason:

Checked in with Jaz and we might need to make a few additional changes here.

https://gerrit.wikimedia.org/r/1180205

Change #1180237 had a related patch set uploaded (by Aude; author: Aude):

[mediawiki/extensions/ReadingLists@master] Hide content for wgReadingListsAnonymizedPreviews = true

https://gerrit.wikimedia.org/r/1180237

Change #1180237 merged by jenkins-bot:

[mediawiki/extensions/ReadingLists@master] Hide content for wgReadingListsAnonymizedPreviews = true

https://gerrit.wikimedia.org/r/1180237

Change #1180205 restored by Jdlrobson:

[mediawiki/extensions/ReadingLists@wmf/1.45.0-wmf.14] Restore $wgReadingListsAnonymizedPreviews feature flag for shared lists

https://gerrit.wikimedia.org/r/1180205

Change #1180244 had a related patch set uploaded (by Jdlrobson; author: Aude):

[mediawiki/extensions/ReadingLists@wmf/1.45.0-wmf.15] Restore $wgReadingListsAnonymizedPreviews feature flag for shared lists

https://gerrit.wikimedia.org/r/1180244

Jdlrobson-WMF added a subscriber: aude.

I'll block this today.

Change #1180244 merged by jenkins-bot:

[mediawiki/extensions/ReadingLists@wmf/1.45.0-wmf.15] Restore $wgReadingListsAnonymizedPreviews feature flag for shared lists

https://gerrit.wikimedia.org/r/1180244

Change #1180205 merged by jenkins-bot:

[mediawiki/extensions/ReadingLists@wmf/1.45.0-wmf.14] Restore $wgReadingListsAnonymizedPreviews feature flag for shared lists

https://gerrit.wikimedia.org/r/1180205

Mentioned in SAL (#wikimedia-operations) [2025-08-20T22:14:08Z] <jdlrobson@deploy1003> Started scap sync-world: Backport for [[gerrit:1180244|Restore $wgReadingListsAnonymizedPreviews feature flag for shared lists (T402050)]], [[gerrit:1180205|Restore $wgReadingListsAnonymizedPreviews feature flag for shared lists (T402050)]]

Change #1180670 had a related patch set uploaded (by Jdlrobson; author: Aude):

[mediawiki/extensions/ReadingLists@wmf/1.45.0-wmf.15] Hide content for wgReadingListsAnonymizedPreviews = true

https://gerrit.wikimedia.org/r/1180670

Change #1180671 had a related patch set uploaded (by Jdlrobson; author: Aude):

[mediawiki/extensions/ReadingLists@wmf/1.45.0-wmf.14] Hide content for wgReadingListsAnonymizedPreviews = true

https://gerrit.wikimedia.org/r/1180671

Mentioned in SAL (#wikimedia-operations) [2025-08-20T22:18:33Z] <jdlrobson@deploy1003> jdlrobson: Backport for [[gerrit:1180244|Restore $wgReadingListsAnonymizedPreviews feature flag for shared lists (T402050)]], [[gerrit:1180205|Restore $wgReadingListsAnonymizedPreviews feature flag for shared lists (T402050)]] synced to the testservers (see https://wikitech.wikimedia.org/wiki/Mwdebug). Changes can now be verified there.

Mentioned in SAL (#wikimedia-operations) [2025-08-20T22:25:15Z] <jdlrobson@deploy1003> Finished scap sync-world: Backport for [[gerrit:1180244|Restore $wgReadingListsAnonymizedPreviews feature flag for shared lists (T402050)]], [[gerrit:1180205|Restore $wgReadingListsAnonymizedPreviews feature flag for shared lists (T402050)]] (duration: 11m 07s)

Change #1180670 merged by jenkins-bot:

[mediawiki/extensions/ReadingLists@wmf/1.45.0-wmf.15] Hide content for wgReadingListsAnonymizedPreviews = true

https://gerrit.wikimedia.org/r/1180670

Change #1180671 merged by jenkins-bot:

[mediawiki/extensions/ReadingLists@wmf/1.45.0-wmf.14] Hide content for wgReadingListsAnonymizedPreviews = true

https://gerrit.wikimedia.org/r/1180671

Mentioned in SAL (#wikimedia-operations) [2025-08-20T22:34:27Z] <jdlrobson@deploy1003> Started scap sync-world: Backport for [[gerrit:1180670|Hide content for wgReadingListsAnonymizedPreviews = true (T402050)]], [[gerrit:1180671|Hide content for wgReadingListsAnonymizedPreviews = true (T402050)]]

Mentioned in SAL (#wikimedia-operations) [2025-08-20T22:38:51Z] <jdlrobson@deploy1003> jdlrobson: Backport for [[gerrit:1180670|Hide content for wgReadingListsAnonymizedPreviews = true (T402050)]], [[gerrit:1180671|Hide content for wgReadingListsAnonymizedPreviews = true (T402050)]] synced to the testservers (see https://wikitech.wikimedia.org/wiki/Mwdebug). Changes can now be verified there.

Mentioned in SAL (#wikimedia-operations) [2025-08-20T22:45:21Z] <jdlrobson@deploy1003> Finished scap sync-world: Backport for [[gerrit:1180670|Hide content for wgReadingListsAnonymizedPreviews = true (T402050)]], [[gerrit:1180671|Hide content for wgReadingListsAnonymizedPreviews = true (T402050)]] (duration: 10m 54s)

Edward could you QA? This has been deployed to production now.

@Jdlrobson-WMF / @Jdrewniak I can't seem to find a way to export a reading list from the iOS app. Any tips/instructions?

@Edtadros reading list export functionality is only on the Android app. It should be possible to import the list on the iOS app but not export.

Test Result - Prod

Status:❓Need More Info
Environment: enwiki
OS: macOS Sequoia 15.6
Browser: Chrome Canary (latest as of test date)
Device: MS
Emulated Device: NA

Test Case 1: Flag disabled – export dialog shows with Cancel/Close and no list data

  1. Open a shareable Reading List link in desktop browser with ReadingListsAnonymizedPreviews disabled.
  2. Inspect the page in the browser and DevTools.
  3. AC1: The export dialog is shown with Cancel and Close buttons visible in the DOM.
  4. AC2: The list contents (title, description, items) are not visible and not present in the DOM.

Not sure how to test the case where the flag is disabled for this test.

Test Case 2: Flag enabled – export dialog is blocking with no list data

  1. Open a shareable Reading List link in desktop browser with ReadingListsAnonymizedPreviews enabled.
  2. Inspect the page in the browser and DevTools.
  3. AC3: The export dialog is shown without Cancel or Close buttons (not present in DOM).
  4. AC4: The list title and description are not visible and not present in the DOM.
  5. AC5: The list items are not visible and not present in the DOM.

screenshot 42.png (1,837×975 px, 100 KB)

Edtadros subscribed.

Did you want me to validate in Beta as well? Take a look at the Prod test. I'm not sure how to test the case where the flag is disabled.

Not sure if/how we need to validate with the flag disabled, but with the flag disabled, afaik the list with title, description and list items can be visible on the page.

All that is remaining is AC2. I don't think it's testable, but let me know.