Network hiccups no longer crash estimate generation or photo sharing

Transport-level failures now gracefully fall back instead of crashing the app.

Bug Fixes

Estimate generation, photo sharing, and photo link management now handle network interruptions without crashing. Previously, transport-level failures (network drop, server error, deploy skew) in server actions would cause unhandled rejections that bubbled up to the app-wide error boundary. Now we catch these failures, show a user-friendly error toast, and keep the project UI intact so you can retry.

Additionally, the dashboard no longer issues a prefetch request for every recent project tile on load, eliminating unnecessary server load during pageload.