Add Sort Controls to Game List Entries #784
Labels
No labels
automated
code-quality
component: admin dashboard
component: backend
component: billing
component: content management
component: faqs
component: game genres
component: game lists
component: game reviews
component: game search
component: games
component: internal notifications
component: platforms
component: security
component: tests
component: user api
component: user badges
component: user blogs
component: user consoles
component: user favorites
component: user friends
component: user notifications
component: user profiles
component: user site notifications
component: user wishlists
component: web design
dependencies
javascript
php
priority
high
priority
low
priority
medium
security-hotspot
source: codex
source: sonarqube
status
awaiting feedback
status
backlog
status
done
status
in progress
status
in queue
status
in review
status
needs codex review
status
needs investigation
status
wontfix
type: bug
type: documentation
type: feature
type: improvement
type: regression
type: task
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MyVideoGameList/myvideogamelist.com#784
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Game list pages should let users sort entries the way the old site did, so members can quickly compare a list by name, rating, date added, priority, ownership type, or platform.
The current list view renders status sections from
GameListSectionsand orders each section by game-list name, then id. The table already displays the fields users want to sort by, but the headers are static and load-more URLs do not carry any sort state.Scope
GameListSections.Acceptance Criteria
Test Coverage Required
GameListPageTestto cover sorting by at least name, rating, date added, priority, ownership type, and platform.vendor/bin/pint --dirty --format agentbefore implementation closeout if PHP files change.Progress Checklist
GameListSectionsqueriesGameListPageTestcoveragevendor/bin/pint --dirty --format agentif PHP files changedImplementation verification and re-review (2026-10-16)
Re-reviewed the implementation against the description, all acceptance criteria, and required test coverage. All six sort fields work in both directions on owner and public routes, independently within status tabs and All-view sections. Sort state survives tab links, partial requests, cached/preloaded panels, browser history, and load-more URLs/responses. Desktop controls expose the active direction through chevrons and aria-sort; inactive chevrons appear on hover and keyboard focus. Mobile controls sort the same results. Existing status/replaying filtering, missing-platform fallback, owner-only actions, and authorization coverage remain intact.
The re-review found and fixed a browser-test portability issue: Forgejo sets MariaDB as the default connection, whereas the original browser renderer assumed an existing local SQLite database. Browser fixtures now migrate their own in-memory SQLite database and ignore inherited database connection names, URLs, and database names. No existing database or .env.testing file is required for those fixtures.
Added regression coverage for every status tab on both routes and for 201-entry replaying lists across three cursor pages in both directions for all six fields. These cases verify mixed sort values, missing values, exact row ordering without duplicates or omissions, All-section continuation, and subsequent next_url state.
A further review reproduced and fixed a browser-history bug: returning to the initial URL without a status hash could leave the previous tab visible. Tab restoration now handles native popstate events and resolves the selected status from both the hash and query string. Load-more also blocks repeated keyboard activation while a request is pending and ignores responses/errors for a panel that has since been replaced. The four browser scenarios now exercise these cases on owner/public routes at both widths.
Verification passed:
All eight progress checklist items are complete. PR #980 was merged by jimmyb as
b5df1dd36d91cb271b39f83c7a65473b41e55326. The issue is closed with status/done; local master has been pulled. Dev and production are deployed at the merged revision. Checksums, Blade caches, release manifests, live HTTP/assets, and read-only MariaDB sorting/pagination checks passed on both environments. Existing dev-only changes were preserved. See the deployment comment for rollback locations and verification details.Allow users to sort the entries on the listto Add Sort Controls to Game List Entrieshttps://features.myvideogamelist.com/posts/68/numbered-video-games-list
Merged in PR #980 as
b5df1dd36d91cb271b39f83c7a65473b41e55326; localmasterhas been fast-forwarded to that revision.Implementation notes:
Verification: 168 focused feature tests / 2,103 assertions, four desktop/mobile Chromium scenarios, Pint, PHPStan, asset build, and diff checks passed. Browser fixtures use isolated in-memory SQLite databases. The remaining progress checklist was already fully completed. Dev and production deployment is now being performed; deployment verification will be recorded separately.
Deployment completed to dev and production at merged master revision
b5df1dd36d91cb271b39f83c7a65473b41e55326.Rollback backups:
/home/mvgldev/deploy-backups/issue784-b5df1dd3-aaq2ra7i/home/mvgl/deploy-backups/issue784-b5df1dd3-tmzeqij7Each account has an artifact manifest, deployment receipt, and read-only smoke-test results under
releases/issue784-b5df1dd3. Issue #784 is closed withstatus/done, and all eight progress checklist items are checked. Owner-only preference persistence remains separate in #981.