Severity: medium — cosmetic regression on every paginated page after a like-for-like swap.
Surfaced by: titan Phase 2.4 (Wheels 4.0 upgrade), 2026-05-15.
Description
paginationNav() exposes showFirst / showLast / showPrevious / showNext as booleans — they're either on or off for every page. The default is on.
paginationLinks(alwaysShowAnchors=false) (3.x default behavior) only emits the first / last anchors when the visible page-number window doesn't reach the boundary. So on page 4 of 4, it doesn't render "Last »" because the window already includes the last page.
This is the standard Bootstrap pagination UX. A 3.x app that swaps to paginationNav() will start showing "Last »" / "First «" on every page, including pages where they're redundant.
The arg surface to express "only show first/last when the window doesn't reach the ends" doesn't exist on paginationNav.
Suggested fix
Add an enum-style arg to paginationNav() and to the four primitive *PageLink helpers:
anchorDisplayMode = \"windowMisses\" | \"always\" | \"never\"
or equivalently:
showFirstWhen = \"windowMisses\" | \"always\" | \"never\"
showLastWhen = \"windowMisses\" | \"always\" | \"never\"
Default to windowMisses to match legacy 3.x behavior.
cc @bpamiri
Severity: medium — cosmetic regression on every paginated page after a like-for-like swap.
Surfaced by: titan Phase 2.4 (Wheels 4.0 upgrade), 2026-05-15.
Description
paginationNav()exposesshowFirst/showLast/showPrevious/showNextas booleans — they're either on or off for every page. The default is on.paginationLinks(alwaysShowAnchors=false)(3.x default behavior) only emits the first / last anchors when the visible page-number window doesn't reach the boundary. So on page 4 of 4, it doesn't render "Last »" because the window already includes the last page.This is the standard Bootstrap pagination UX. A 3.x app that swaps to
paginationNav()will start showing "Last »" / "First «" on every page, including pages where they're redundant.The arg surface to express "only show first/last when the window doesn't reach the ends" doesn't exist on
paginationNav.Suggested fix
Add an enum-style arg to
paginationNav()and to the four primitive*PageLinkhelpers:or equivalently:
Default to
windowMissesto match legacy 3.x behavior.cc @bpamiri