Files
silo-server/migrations/sql/20260612121800_add_media_items_poster_source_path.sql
T
QuickandClaude Fable 5 799754dde7 feat(notifications): rich Discord embeds with posters, provider links, and ratings
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>
2026-06-12 09:32:53 -04:00

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;