Switchbordswitchbord
v0.18.132

v0.18.132 — durable inbox template header media plane

Stop blank WhatsApp template header images in /inbox when Meta media ids expire; unify object-storage env re-pointing for MinIO/S3/Blob.

Fixed


  • Inbox template header images blank when Meta media ids expire (BORD-999). The template-header proxy now reads durable media_* columns, prefers payload headerImageUrl / header image.link, and falls back to the approved template IMAGE header_handle sample when Graph media GET fails — caching bytes into the object store so subsequent views never re-hit Facebook.
  • Assets route bucket env override. Workspace asset uploads resolve STORAGE_BUCKET_ASSETS instead of a hard-coded bucket name.

Features


  • Unified object-storage driver surface. @repo/storage understands STORAGE_DRIVER (s3_compatible | aws_s3 | vercel_blob reserved), path-style toggle, and logical bucket env vars so Railway+MinIO / AWS S3 / R2 / Supabase S3 installs re-point via config. Documented in self-hosting env tables.

Verification


  • pnpm --filter app exec vitest run app/api/inbox/messages/[messageId]/template-header-image/route.test.ts app/api/settings/assets/route.test.ts
  • pnpm --filter @repo/database exec vitest run src/adapters/conversations.test.ts
  • pnpm exec vitest run packages/storage/src/keys.test.ts
  • pnpm --filter @repo/storage typecheck