OK, getting somewhere:
if(isequal(groupcount(), 1, 2), [Name, 1], [Series, 1])
So if the count of items in a series is 1, it shows the name field, if not show the series field. So when a 1 item series is auto-zoomed, because it's showing the Name field at the first level, it shows the Name field at the top when it's auto-zoomed.
This works well for films and live shows, because they're based on the Series and Name fields.
The problem is, I can't work out how to get it to work for TV shows. Indeed, I don't think it can be done in a satisfactory manner, because they're based on the Series and Season fields. If I changed it to:
if(isequal(groupcount(), 1, 2), TVInfo(SeasonDisplay), [Series, 1])
It would simply just show 'Season n', which is meaningless on a Series level view. You'd have:
American Horror Story
Only Fools and Horses
Season 1 (for Homeland)
Season 1 (for Breaking Bad)
Using that expression also breaks Series and Season cover art.
So I think there are a couple of ways to 'fix' this:
1) Make auto-zoom selectable per root library item (or at all levels). Add a checkbox inside the 'Set rules for display' option. I could then turn it off for TV shows so it always shows the season level, even if there is only 1 season. This actually makes a lot of sense anyway to me.
2) Change the way auto-zoom works so when something is auto-zoomed it always uses the Name field for Movies and Other sub types, or Season field for TV show sub type, rather than the level where it's been auto-zoomed from.