Add a Pools browser backed by e621's /pools endpoint

- /pools: search by name, category/active filters, sort options and
  pagination per the OpenAPI spec, with covers taken from each pool's
  first post in one batched post call; blacklisted covers fall back to a
  placeholder and deleted pools get an archive marker.
- /pools/<id>: DText description, post grid kept in the pool's own order
  with chunked loading, in-library badges, a blacklist reveal toggle and
  a Follow pool button wired into the follows API.
- e621 client gains fetchPools/fetchPool; Pools nav entry added.
This commit is contained in:
2026-09-17 14:26:20 -05:00
parent c396c368dc
commit 0a7dc5a991
7 changed files with 817 additions and 0 deletions
+1
View File
@@ -60,6 +60,7 @@ export function AppShell() {
const navItems = [
{ to: "/", label: "Library" },
{ to: "/online", label: "Online" },
{ to: "/pools", label: "Pools" },
...(user ? [{ to: "/followed", label: "Followed" }] : []),
...(user?.can_upload
? [