You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
V2: Left sidebar navigation links open the classic UI instead of V2 pages #1698
In the V2 interface, every primary link in the left navigation rail (Chats, Agents, My Workspace, Group Workspaces, Public Workspaces, Approval requests and Content review) leaves the V2 app. Clicking one opens the classic (V1) page instead of the V2 page.
Steps to Reproduce
Open /v2/chat.
Click My Workspace, or any other primary link, in the left rail.
Check the address bar and the page that loads.
Expected Behavior
The link stays inside the V2 app and opens /v2/workspace without a page reload. The rail stays on screen and highlights the item you clicked.
Actual Behavior
The browser does a full page load to /workspace, which is the classic interface. Each primary link does the same thing with its own route, for example /groups, /public, /approvals and /content-review. The rail's active highlight also never matches the current page.
Impact
This affects every V2 user. You cannot get around V2 with its primary navigation, because each click sends you back to the classic UI.
Notes
application/v2_ui/src/components/layout/Sidebar.tsx passes safeSameOriginUrl(item.to, window.location.origin) from lib/adminOperations.ts to NavLink to=. That helper returns an absolute URL, such as https://host/workspace.
In React Router 6.30, Link treats an absolute URL outside the router basename (/v2) as external. It renders a plain <a href> without the client-side click handler, so the browser loads the classic Flask route.
The bug was introduced when two parallel fixes for the XSS sink check edited the same line: 546194114 (Add V2 Terms of Use and Approval Requests pages #1687) added the relative safeNavHref allowlist helper, and 2d885b8ce added the absolute-URL helper. The merge kept the absolute-URL version. Both helper names pass the XSS checker, so CI did not catch it. The Playwright UI tests that would catch it skip when no deployment is configured.
Fix: bring back the relative safeNavHref helper, and add functional and UI regression tests.
Issue
In the V2 interface, every primary link in the left navigation rail (Chats, Agents, My Workspace, Group Workspaces, Public Workspaces, Approval requests and Content review) leaves the V2 app. Clicking one opens the classic (V1) page instead of the V2 page.
Steps to Reproduce
/v2/chat.Expected Behavior
The link stays inside the V2 app and opens
/v2/workspacewithout a page reload. The rail stays on screen and highlights the item you clicked.Actual Behavior
The browser does a full page load to
/workspace, which is the classic interface. Each primary link does the same thing with its own route, for example/groups,/public,/approvalsand/content-review. The rail's active highlight also never matches the current page.Impact
This affects every V2 user. You cannot get around V2 with its primary navigation, because each click sends you back to the classic UI.
Notes
application/v2_ui/src/components/layout/Sidebar.tsxpassessafeSameOriginUrl(item.to, window.location.origin)fromlib/adminOperations.tstoNavLink to=. That helper returns an absolute URL, such ashttps://host/workspace.Linktreats an absolute URL outside the router basename (/v2) as external. It renders a plain<a href>without the client-side click handler, so the browser loads the classic Flask route.546194114(Add V2 Terms of Use and Approval Requests pages #1687) added the relativesafeNavHrefallowlist helper, and2d885b8ceadded the absolute-URL helper. The merge kept the absolute-URL version. Both helper names pass the XSS checker, so CI did not catch it. The Playwright UI tests that would catch it skip when no deployment is configured.safeNavHrefhelper, and add functional and UI regression tests.