File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -98,7 +98,25 @@ export interface HouseAdCreative {
9898 imageUrl ?: string
9999}
100100
101- const FAVICON = `${ FREEBUFF_WEB_URL_PROD } /favicon/favicon-32x32.ico`
101+ /**
102+ * Our own mark, on BOTH mechanisms.
103+ *
104+ * Exported because the campaign needs it too, and cannot carry it any other
105+ * way: a creative's icon comes from `image_public_token`, which resolves to
106+ * `/api/ads/first-party/creative-image/{token}` and serves UPLOADED BYTES, so
107+ * a static path is not expressible there. Uploading is also not a workable
108+ * substitute -- the upload endpoint accepts only a campaign in `draft`, the
109+ * console refuses to edit a paused one at all ("Campaign is no longer
110+ * editable"), and the upload resets every creative on the campaign to
111+ * `pending_review`. Measured on 2026-08-28 against the live console: three of
112+ * four house campaigns could not be given a logo by any product path.
113+ *
114+ * The materializer falls back to this instead, which also means the promotion
115+ * looks the same whichever mechanism filled the slot.
116+ */
117+ export const HOUSE_AD_FAVICON_URL = `${ FREEBUFF_WEB_URL_PROD } /favicon/favicon-32x32.ico`
118+
119+ const FAVICON = HOUSE_AD_FAVICON_URL
102120
103121/**
104122 * What the inline renderer actually gives a creative, in characters.
You can’t perform that action at this time.
0 commit comments