Serve_site() creates index of site, rather than site preview - blogdown

The academic theme is structured in a manner that's quite different from other themes (I don't use it, but I've helped a few people troubleshoot with it). I'm not sure if it will help your issue, but there was a recent blog post with tips specific to dealing with academic that you might take a look at:
https://lmyint.github.io/post/hugo-academic-tips/

Is it possible that you haven't set up your config to point to the desired directory correctly? Also, blogdown::serve_site() is a perfectly fine way to do your build (I've never actually hit the "Build website" button), so if that's working fine, then using serve_site() might be the way to go.

It sounds like you've tried most options, but see also my response here:

You can see what artifacts you may have created by looking in the git pane.