Encryption and HMAC key derivation
Does input truncation using SHA-256 expose any potential weaknesses?


No, hashing the passphrase with SHA-256 will be no stronger or weaker than feeding it in directly.  If you go with Scrypt (which I would recommend you do), there are no restrictions on the size of the passphrase... and Scrypt consumes it internally with one round of PBKDF2-HMAC-SHA256 anyway.


  When generating the HMAC authentication and encryption keys, would I benefit at all from using SHA-512?


No, you wouldn't. In fact, this step is unnecessary.  Just use the output of Scrypt directly... randomBytes = Scrypt(passphrase); encKey = randomBytes[0, 31];  authKey = randomBytes[32, 63]