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
@@ -44,7 +44,7 @@ export function WorkspaceInstanceChips({
<a
href={inst.url}
target={`instance-${inst.id}`}
rel="noopener noreferrer"
rel="noreferrer"
onClick={(e) => e.stopPropagation()}
>