Conversation
Anchor on the last visible row and use lookahead for the terminal page. Preserve recovery and filters when cursors expire or requests fail, and rebuild forward edges when the previous page changes. Requires API44.
Reuse the committed-URL pagination fix from PR496 so browser history cannot race a local cursor transition.
Make the API44 and UI496 requirements explicit and retain the isolated API/UI integration gate separately from fixture browser evidence.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
English
Addresses #208 and the IP-history part of #189. The audit used the minimum ID
as its next cursor even though assignments are ordered by time; this can skip
or repeat rows. It now anchors on the last visible row and fetches one hidden
lookahead so a full final page disables Next. Changed earlier pages rebuild
forward cursors; errors offer retry and a first-page restart retaining filters,
and empty cursor pages retain backward navigation.
Dependencies: stacked on UI #496 for its committed-URL history fix. Requires
vpsAdmin API #44,
320af0e15, for(from_date,id)server cursor ordering and scoped invalid-cursorerrors. Do not promote against the old server contract. Actual joint VM/API
pagination remains an explicit beta gate; these browser tests use fixtures.
Validation on the combined current release + #496 + this change:
three pages with tied dates and nonmonotonic IDs, exact end, history/reload,
stale forward edges, HTTP400 recovery, empty pages and member route denial.
The localized cases cover cs/en, desktop/mobile.
smoke cases passed before integrating the unchanged Align user-data search and pagination with HaveAPI #496 adapter.
wrongly expected member redirects instead of the access-denied page; corrected
to assert visible denial and zero reads. An ancillary browser invocation lost
its owned dev server and was rerun with proper server lifecycle. Final suites
pass without retries; no checks were disabled.
Pages remain separate requests, not an atomic snapshot. No permission changes,
merge or shared deployment. See
docs/contracts/ip-assignment-pagination.md.Česky
Řeší historii IP z #208/#189. Kurzor se nyní bere z posledního zobrazeného
záznamu místo minimálního ID. Jeden skrytý řádek určuje dostupnost další
stránky; poslední plná stránka už nenabízí falešné pokračování. Po změně starší
stránky se obnoví navazující kurzor. Chyby mají opakování i návrat na první
stránku se zachováním filtrů, prázdná stránka ponechá možnost návratu.
PR navazuje na frontend #496 a vyžaduje backend #44. Nesmí se nasadit proti
starému cursor kontraktu; skutečné společné VM/API ověření ještě zbývá.
Prošlo 20 browser scénářů historie IP, 14 user-data scénářů, 44 unit testů,
typecheck, lint, i18n a build. Jde o fixture testy včetně cs/en a mobilu/desktopu,
nikoli certifikaci skutečné API paginace. Předchozí chyby testů i nalezená
navigační chyba jsou popsané výše, finální sady prošly bez retry.