Current behavior
The session rail is sorted by most-recent activity, live. sortSessionsByActivity (packages/web/src/session/order.ts) orders rows by a client-side lastActiveAt stamp that is bumped both when you select a session and on every inbound frame, with sessions awaiting input pinned to the top.
This is intentional, not a bug — introduced in 8ed4932 ("feat(web): session rail — recent-first order… Make the session rail behave like a chat app") and refined in PR #10 (awaiting-you sessions float to top).
Problem
With several concurrently running sessions, the list reshuffles on its own as agents stream output:
- Lost spatial memory — a session you located a second ago is no longer where it was; you re-scan the list every time.
- Misclicks — a row can move at the moment you tap it (especially painful on mobile), opening the wrong session.
- Ordering reflects agent activity, not my priority — a chatty background session leapfrogs the one I'm actually managing.
The chat-app metaphor fits when activity means "a human wrote to you", but here activity is mostly machine-generated output, so recency carries much less signal and much more churn.
Suggested direction (any of, or combination)
- Ordering setting — Settings → rail order:
Recent activity (current) / Created / Manual.
- Bump on user interaction only — keep recent-first, but only
setActive (and maybe awaiting-you) bumps lastActiveAt; inbound frames don't. Kills most of the churn while keeping the metaphor.
- Pinning — let me pin sessions to the top in a fixed order; unpinned ones keep the current behavior.
Keeping the "awaiting you" group pinned to the top makes sense in all variants.
References
Current behavior
The session rail is sorted by most-recent activity, live.
sortSessionsByActivity(packages/web/src/session/order.ts) orders rows by a client-sidelastActiveAtstamp that is bumped both when you select a session and on every inbound frame, with sessions awaiting input pinned to the top.This is intentional, not a bug — introduced in 8ed4932 ("feat(web): session rail — recent-first order… Make the session rail behave like a chat app") and refined in PR #10 (awaiting-you sessions float to top).
Problem
With several concurrently running sessions, the list reshuffles on its own as agents stream output:
The chat-app metaphor fits when activity means "a human wrote to you", but here activity is mostly machine-generated output, so recency carries much less signal and much more churn.
Suggested direction (any of, or combination)
Recent activity(current) /Created/Manual.setActive(and maybe awaiting-you) bumpslastActiveAt; inbound frames don't. Kills most of the churn while keeping the metaphor.Keeping the "awaiting you" group pinned to the top makes sense in all variants.
References
packages/web/src/session/order.ts,packages/web/src/store/store.ts(lastActiveAtbumps insetActive+applyFrame)