Update the layout of Special:EditWatchlist so that pages from each namespace are in their own table. Create the table using CodexPHP
Columns are:
- checkbox
- page title
- expiry (if it exists)
The design has sorting, but we do not want sorting - we can only sort by page title, and with pagination clicking to go to the last page is functionally equivalent to reverse-sorting by title
We can't implement the "Page x-y of z" part shown in the design on the backend, so that will be missing
Don't change the buttons in this ticket - we need to talk to design first
Don't put this behind our WatchlistLabels feature flag
If there's refactoring on Special:EditWatchlist to be done (and there is), do it under this ticket
Derived Requirements
- Special:EditWatchlist must be updated to use a table-based layout, with pages grouped into separate tables per namespace.
- Each namespace table must be implemented using CodexPHP components.
- Each table must include the following columns only:
- Selection checkbox
- Page title
- Expiry, displayed only when an expiry exists
- Page title ordering must follow the existing behavior and must not introduce new sorting controls or sortable headers.
- No additional sorting mechanisms beyond the current page title ordering may be introduced.
- Pagination behavior must remain unchanged, and no pagination controls may imply or introduce sorting functionality.
- Existing action buttons on Special:EditWatchlist must remain unchanged in placement, behavior, and appearance.
- The table-based layout must not be gated behind the WatchlistLabels feature flag.
- Any required refactoring of Special:EditWatchlist necessary to support the new layout must be included as part of this change without altering user-facing behavior beyond the layout update.
Test Steps
Test Case 1: Namespace-Based Table Layout
Preconditions
- The user is logged in.
- The watchlist contains pages from multiple namespaces.
- Navigate to Special:EditWatchlist.
- Observe the overall page layout.
- Identify how watchlist items are grouped.
- ✅❓❌⬜ AC1: Verify that watchlist items are displayed in separate tables per namespace and that each table clearly corresponds to a single namespace.
Test Case 2: Table Structure and Columns
Preconditions
- Same as Test Case 1.
- At least one watchlist item has an expiry set.
- Inspect any namespace table on Special:EditWatchlist.
- Review the column headers and row structure.
- Locate a row with an expiry and one without.
- ✅❓❌⬜ AC2: Verify that each table contains only the checkbox, page title, and expiry columns, and that the expiry column displays values only when an expiry exists.
Test Case 3: No Sorting Controls Introduced
Preconditions
- Same as Test Case 1.
- Inspect table headers for interactive elements.
- Attempt to click on column headers.
- Observe page behavior.
- ✅❓❌⬜ AC3: Verify that no sortable headers or sorting controls are present and that clicking column headers does not change item order.
Test Case 4: Pagination Behavior Remains Unchanged
Preconditions
- The watchlist contains enough items to trigger pagination.
- Navigate to the first page of Special:EditWatchlist.
- Use pagination controls to move between pages.
- Navigate to the last page using pagination.
- ✅❓❌⬜ AC4: Verify that pagination behaves as before, with no new sorting implications and that navigating to the last page functions equivalently to existing behavior.
QA Results - Meta Beta
| AC | Status | Details |
|---|---|---|
| 1 | ✅ | T411596#11554981 |
| 2 | ❓ | T411596#11592857 |
| 3 | ✅ | T411596#11549865 |
| 4 | ✅ | T411596#11554981 |











