Is it possible to create a new library from a subfolder of an existing library?

Pretty much what the subject says. Is it possible?

I have a subfolder that has grown to contain a lot of files and would like to make a separate library out of it but would like to avoid doing it manually which would reupload everything. I’d also like to keep the existing history of all the changed files.

You could create a new library and move all the files in the subfolder to the new library.
If you do it in the web interface, you could avoid downloading and re-uploading all the files.
In this way, the old history of those files will be still kept in the old library. The history of new modification after the movement will be in the new library.

This is the best way that I can come up with to do this.

That would cause all the clients to download everything, correct? Or is the client be smart enough to see the files are the same (via hash?) and just move them locally?

The PC client won’t automatically move your data, and they will download it from the server instead. However, if you manually move the data in your PC and keep the same layout as in the server side, seafile will check the consistency of each data block and may avoid re-downloading.

Thanks for the answers. You say “may” which suggests you’re not sure though.

Can one of the devs confirm the above behavior?

Yes, I am not 100% sure because I haven’t done it before. I just provide the suggestion here according to my understanding of it.
Why don’t try with some testing files yourself? Then you will know for sure. I am glad to know your testing result too.