fix: remove rel=noopener from all session/instance links to enable tab reuse

rel=noopener forces a fresh browsing context, breaking target name matching
and window reference tracking across browsers.

Changes:
- use-instance-actions.ts: track opened tabs in Map, call .focus() on existing
- session-card.tsx: all Open buttons now go through handleOpen callback
- app-shell.tsx: sidebar session links use target='session-{id}' + noreferrer
- workspace-instance-chips.tsx: remove noopener from chip links
- instance-list.tsx: remove noopener from Open links
- WorkspaceDetailPage.tsx: use named target + noreferrer

Quality gates: tsc --noEmit pass, npm run build pass, 80/80 tests pass
This commit is contained in:
Developer
2026-06-09 12:39:32 +00:00
parent e5e29aca49
commit 680417a0a2
6 changed files with 47 additions and 67 deletions
+2 -2
View File
@@ -50,8 +50,8 @@ const SessionItem = ({ session }: { session: Session }) => {
return (
<a
href={href}
target="_blank"
rel="noopener noreferrer"
target={`session-${session.id}`}
rel="noreferrer"
className="nav-item session-item"
title={`${session.display_name} (${session.status})`}
>