Redesign the moderation extensions view as a filterable, searchable list - #323
Conversation
Replaces the old id-typing "View an extension" / "Delist a published extension" forms with a single list of every extension, filterable by status (defaults to published), searchable by id, with a Delist button inline on each eligible row. Also adds real Previous/Next pagination (a cursor back-stack, not just Next) to both this list and the revision queue. Backed by FOSSBilling/api#216's new GET /moderation/all-extensions.
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
extensions | f84e164 | Commit Preview URL Branch Preview URL |
Sep 04 2026, 09:50 PM |
There was a problem hiding this comment.
All reported issues were addressed across 8 files
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
…input The back-stack query param grew without bound over a long paging session; now caps at 20 entries, dropping the oldest first (Previous beyond that depth is a worse trade-off than an unbounded URL). Also gives the search input name="q" so a no-JS form submission still lands on the same query param the page reads, instead of being silently dropped.
There was a problem hiding this comment.
All reported issues were addressed across 3 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
…ence Capping doesn't stop Previous from reaching page 1 - it still gets there via the same empty-stack fallback that page 2 uses. What actually happens once an entry has been evicted is that walking all the way back skips the page whose cursor was dropped, landing on page 1 one step early. Corrected the comment to say that, and added a test that pins the accepted trade-off explicitly.
There was a problem hiding this comment.
All reported issues were addressed across 2 files (changes from recent commits).
Tip: Review your code locally with the cubic CLI to iterate faster.
Re-trigger cubic
The previous version of this test used cursor=page-3 with an empty back-stack, which is the same generic empty-stack fallback already covered by the "pops the back-stack" test - it never built a capped 20-entry stack, so it added no coverage of the eviction trade-off it claimed to pin. Reproduce the exact state cursorPageUrl leaves behind once the stack is capped (page-0's cursor evicted, cursors holds page-1..page-20), walk Previous back through all 20 entries verifying each lands on the expected page, then confirm the final step from page-1 skips straight to the first page instead of stopping on the evicted page-0. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TSwWn5bB9QZYq75vusX95f
There was a problem hiding this comment.
0 issues found across 1 file (changes from recent commits).
Auto-approved: Adds a filterable/searchable list view for moderation extensions with back-stack pagination, plus a new client API call. Bounded UI improvement with tests; no changes to auth or data policy.
Re-trigger cubic
What
Replaces the old id-typing "View an extension" / "Delist a published extension" forms on
/account/moderatewith a single list of every extension:Requires FOSSBilling/api#216 (
GET /moderation/all-extensions), which this PR's generated client is already regenerated against.