fix(frontend): keep root sessions landing unfiltered - #1368
Conversation
A bare local visit currently inherits the saved session filter and rewrites the URL to a filtered Sessions route. Document the intended root landing behavior so implementation keeps the root unfiltered without discarding saved preferences, while preserving explicit session deep links.
Close the root-route edge cases identified during review: suppress persistence for the full root lifetime, define sticky and filter-param URL semantics, restore saved filters on in-app Sessions navigation, and document promotion and Back-button history behavior.
The root landing reset must not overwrite the saved filter when a user opens a session, refreshes its detail view, or closes back to the list. Tie the temporary persistence hold to untouched root-reset filter state and document the intentionally unfiltered detail-exit path.
Document the router, store, and App changes needed to keep the root landing view unfiltered without overwriting saved filters.
The implementation is now represented by the router, store, and App changes; remove the task-specific planning artifacts so the branch carries only durable project documentation.
Keep the temporary unfiltered state associated with a root visit while the user moves through other pages. Restore the saved Sessions view when they later enter bare /sessions, while retaining the intentional unfiltered list after closing a session opened from root.
roborev: Combined Review (
|
Keep shared and retained analytics dates from reapplying to the unfiltered root after returning from another analytics page. Non-Sessions query parameters no longer consume the pending saved-session restoration, while a date selection at root creates a history entry so Back returns to the unfiltered landing.
roborev: Combined Review (
|
A root reset is temporary presentation state and must not erase shared date-yoke state. Detail provenance is likewise only needed to suppress the immediate close-to-list restore; leaving Sessions should allow a later bare Sessions visit to restore saved filters.
roborev: Combined Review (
|
The root landing is an unfiltered view, so refreshing its analytics must not turn the preserved date yoke into Sessions filters or overwrite the saved view. When a user opens a session from Usage after visiting root, restore the saved session view before detail closes so the later list does not lose it.
roborev: Combined Review (
|
Keep the saved Sessions view intact when a session opened from the root landing page is closed. The first list initialization must not turn the shared date yoke into session URL filters or overwrite the saved preference.
roborev: Combined Review (
|
Keep consecutive session opens from the temporary root-derived list unfiltered on exit. Without the pending-root classification, the second detail could restore the shared date yoke and overwrite the saved Sessions view.
roborev: Combined Review (
|
Do not let refreshing the unfiltered root-derived Sessions list turn a preserved date yoke into saved session filters. The refresh path must follow the pending root provenance until the user promotes or restores the view.
roborev: Combined Review (
|
Treat Starred only as a Sessions filter when determining whether the root landing is still unfiltered. Clear it on root entry and preserve it in the route when the user enables it so the sidebar and URL stay consistent.
roborev: Combined Review (
|
Keep Starred only active when users select a Sessions date or open a session from analytics. Session navigation must carry every recognized Sessions filter so a route change cannot silently disable the current view.
roborev: Combined Review (
|
Returning from a root-opened session through browser history must leave root entry state authoritative. Otherwise a later non-date filter promotion can skip the shared Sessions date range and produce an incomplete filtered view.
roborev: Combined Review (
|
A non-date filter must release the temporary root view with the same shared Sessions date range that a normal Sessions entry restores. Centralizing that release at filtered route entry keeps detail and list navigation consistent and prevents stale suppression state.
roborev: Combined Review (
|
Starred only is a real Sessions filter even though its state lives outside the main filter object. Treating it as divergence ensures a temporary root reset becomes the saved view after the user changes that filter, including when they turn it off again before leaving detail.
roborev: Combined Review (
|
Returning to the root landing must show the default analytics range, even after a narrower Sessions or Quality selection. Reset the analytics date state before the root fetch while leaving the shared date yoke available for later filtered views.
roborev: Combined Review (
|
|
Just giving this a last review before merging |
A bare local visit should show the unfiltered Sessions landing page, but the remembered filter state was being applied immediately and could be written back during refresh or session-detail navigation. That made the root URL surprising and risked erasing the user’s saved Sessions preference.
This change treats the root path as an unfiltered landing state while preserving the saved preference. Explicit filter URLs remain authoritative, direct or provenance-preserving navigation to bare /sessions can restore the remembered view, and opening a session from the root does not overwrite the preference when the detail view refreshes or closes. The task-specific design artifacts have also been removed now that the behavior is implemented.
The full frontend suite passes in serialized single-worker mode. The default parallel runner is resource-sensitive in this environment and previously timed out in an unrelated Playwright-config test; that focused test passes independently.