I also thought you could use .nvmrc to set node version within a project. You can even have your bash/zsh/fish automatically run nvm use on cd commands so it automatically picks up the version.
While you say that n is even more limited, it does work with fish, which is why I use it over all others and have for years. It also has some support for .nvmrc so that you can use n auto while others use nvm use.