fix(og): handle-based project-og URL + exact JPEG bytes for link previews
Project pages now set og:image to `/api/registry/project-og/{handle}` instead
of og-banner with an encoded DID, so Cardyb’s nested URL encoding stays
simpler and matches patterns that unfurl reliably.
- Add `lib/og-banner-serve.ts` with shared `buildOgBannerResponse`, exact
ArrayBuffer slicing for Content-Length bodies, JPEG magic validation on
DB cache (invalid rows fall back to PDS resize + overwrite)
- Store tight `Uint8Array` copies (`.slice()`) before writing og_jpeg to Turso
- Keep `/api/registry/og-banner/{did}` as a thin wrapper for compatibility
Made-with: Cursor