Skip to content

V2: Left sidebar navigation links open the classic UI instead of V2 pages #1698

Description

@paullizer

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

  1. Open /v2/chat.
  2. Click My Workspace, or any other primary link, in the left rail.
  3. 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.

Activity

  1. added
    bugSomething isn't working
    P1Priority 1: urgent, address before P2 work
    on Oct 7, 2026
  2. added 2 commits that reference this issue on Oct 7, 2026
    4d0bb79
    e9bdb59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

P1Priority 1: urgent, address before P2 workbugSomething isn't working

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions