Projects now save successfully with invisible characters

Project creation no longer fails on invisible bytes from paste/autofill. Server-action errors always surface in logs and Sentry.

Bug Fixes

Project creation was silently failing when text fields or JSON data contained invisible bytes—NUL characters, C0 control codes, or lone UTF-16 surrogates that slip in through paste, browser autofill, or address autocomplete. The app now strips these bytes automatically before writing to the database, so your project data saves successfully and user-visible text remains intact.

Server-action errors were also going invisible in production: a database error would vanish without reaching logs or Sentry, surfacing only as a generic "An unexpected error occurred" to the user. The error handler now logs the real error class and message (so you can see exactly what broke) and reports 5xx and unexpected errors to Sentry, making debugging possible again.