1b317d23fb
`list_sessions_rich` returns one recency-ordered window, so a pinned conversation that hadn't been touched in a while simply wasn't in the payload. The desktop's Pinned section resolves pins against the loaded rows, so the pin rendered as nothing until something dragged the row back onto the page. A pin is a "this must always be reachable" statement, which makes falling off the page a bug rather than a paging outcome. `include_pinned` adds one bounded query for the rows carrying `pinned = 1` that the window missed, reusing the page's own WHERE clause — an archived or filtered-out conversation stays out, and a pin is never a filter bypass. It runs before compression projection, so a back-filled root surfaces under its live tip exactly like a row that made the page on its own. Co-authored-by: hrnbld <260600092+hrnbld@users.noreply.github.com> Co-authored-by: liuhao1024 <11816344+liuhao1024@users.noreply.github.com> Co-authored-by: Tamaz-sujashvili <56168197+Tamaz-sujashvili@users.noreply.github.com> Co-authored-by: ferminquant <14808645+ferminquant@users.noreply.github.com>