tsconfig.json had no noEmit option: every caller passed --noEmit on the
CLI (typecheck, scripts/build/desktop.mjs), but one bare `tsc --build
tsconfig.json` emitted 2194 .js twins in-place across src/ and electron/,
and module resolution then preferred those stale .js files over the .ts
sources — tests ran against dead code until the twins were deleted.
Make it structural: noEmit true in the renderer base; the composite
electron/e2e children (which legally emit declarations into
build/electron-types / scratch) opt back out with noEmit false. Verified:
the typecheck trio stays clean, a bare tsc --build of the renderer now
emits nothing, and the electron dev build still produces its
build/electron-types declarations with zero in-place files.