Upgrade all outbound Discord surfaces (personal webhooks, bot DMs, server channels, request events) from bare title/description embeds to rich ones: poster thumbnail, overview teaser, TMDB/IMDb/TVDB links, rating and genre fields, content-rating footer, and a clickable title URL. Artwork respects the v1 privacy contract via a new admin poster mode (notifications.discord.poster_mode): "provider" (default) only emits public provider-CDN URLs, "server" additionally presigns locally cached posters from this server's image storage, "off" drops images entirely. Builders never derive artwork URLs themselves; the sender layer resolves PosterURL through System.discordPosterURL. To keep provider-CDN URLs derivable after image caching rewrites poster_path to a local storage key, media_items gains poster_source_path, captured during cacheItemImages, preserved across refreshes that keep the cached poster, and cleared on explicit poster overrides. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
13 lines
646 B
SQL
13 lines
646 B
SQL
-- +goose Up
|
|
-- poster_source_path keeps the provider-origin artwork path (tmdb:// /
|
|
-- tvdb:// plugin scheme or absolute provider URL) when image caching rewrites
|
|
-- poster_path to a local storage key. Outbound notification embeds (Discord)
|
|
-- build public provider-CDN poster URLs from it, since local storage URLs
|
|
-- must never appear in outbound payloads. Empty for rows whose poster_path
|
|
-- still is the provider path, and for locally sourced artwork; populated on
|
|
-- the next metadata refresh after upgrade.
|
|
ALTER TABLE media_items ADD COLUMN poster_source_path text;
|
|
|
|
-- +goose Down
|
|
ALTER TABLE media_items DROP COLUMN poster_source_path;
|