refactor(electron): delete extensionHostWindow + host HTML + broadcaster v1 branch (Phase 3.10)
Per v1-removal plan phase 3.10 (follows phase 3.9 which made extensionHostWindow a
dead empty shell — all built-ins migrated to v2 tiles via *-glue.ts).
Source deletes:
- Remove `extensionHostWindow` variable + `createExtensionHostWindow()` + `getExtensionHostWindow()` from main.ts
- Remove `await createExtensionHostWindow()` call from `loadExtensions()`
- Delete v1 iframe iteration loop from `extensionBroadcaster` (keep only v2 tile path)
- Simplify `loadLazyExtension()` to a no-op + warning (host gone; all v2 tiles load eagerly)
- Remove `getExtensionHostWindow` import from ipc.ts
- Drop `extension-host.html` entry from `INTERNAL_URLS` in ipc.ts
- Remove `extension-host.html` filter from `trackVisibleWindowFocus` + overlay hide loop in ipc.ts
- Delete `app/extension-host.html` file
Smoke test cleanup (per 3.1 audit recommendations):
- Delete tests: "extension host window exists for built-in extensions" (was 4174-4179)
- Delete tests: "built-in extensions load as iframes in extension host" (was 4181-4217)
- Delete tests: "local shortcut from extension-host iframe roundtrip" (was 5291-5371)
- Delete tests: "global shortcut from extension-host iframe roundtrip" (was 5373-5433)
- Rewrite "correct window count for hybrid mode" — drop hostWindows filter/assertion
- Remove host-window wait from startup block (was 1380-1386)
- Rewrite `waitForHybridExtensions` fixture helper — gate on extensions API, not host DOM
- Update tests/README.md hybrid mode section to reflect v2 tile topology
Validation: tsc --noEmit clean. Electron tests skipped (budget).