The navigations collection has no top-level 'type' field — each tenant
has one document with mainMenu and footerMenu arrays. The previous
where[type][equals] query caused HTTP 400 on every call.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- forms + form-submissions now have tenant field
- ContactFormBlock: form relationship replaces recipientEmail
- New fields: successMessage, showContactInfo
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
tsx's esbuild postinstall fails in Plesk's nodenv sub-shell context
because npm git dep preparation spawns `sh -c node install.js` which
doesn't inherit the PATH set in deploy actions.
Fix: Remove tsx entirely (only needed on sv-payload for `pnpm extract`,
where it's available via npx). Also updates extracted types.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Shared TypeScript types, API client, and block registry for
coordinated CMS-to-frontend development across all tenants.
- Type extraction script from payload-types.ts (12,782 lines)
- 39 frontend collection types, 42 block types
- createPayloadClient() with tenant isolation
- createBlockRenderer() for type-safe block mapping
- Media helpers (getImageUrl, getSrcSet)
- Work order system for cross-server coordination
- Block catalog documentation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>