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
@@ -286,7 +286,7 @@ export const InstanceList = ({
: `${API_BASE_URL}${instance.url}`
}
target={`instance-${instance.id}`}
rel="noopener noreferrer"
rel="noreferrer"
className="secondary-button small"
>
<Icon name="external" size="sm" />