diff --git a/cli/src/image/generator.test.ts b/cli/src/image/generator.test.ts index 6981fe6..b008b36 100644 --- a/cli/src/image/generator.test.ts +++ b/cli/src/image/generator.test.ts @@ -59,7 +59,7 @@ describe('generateImage (gemini)', () => { contents: 'the prompt', config: { responseModalities: ['TEXT', 'IMAGE'], - imageConfig: { aspectRatio: '3:2', imageSize: '2K' }, + imageConfig: { aspectRatio: '3:2', imageSize: '1K' }, }, }); }); diff --git a/cli/src/image/generator.ts b/cli/src/image/generator.ts index 4a64b53..28389db 100644 --- a/cli/src/image/generator.ts +++ b/cli/src/image/generator.ts @@ -33,7 +33,11 @@ export async function generateImage( contents: prompt, config: { responseModalities: ['TEXT', 'IMAGE'], - imageConfig: { aspectRatio: '3:2', imageSize: '2K' }, + // 1K (~1024px) covers our largest render — the feed hero at 720px CSS + // (~1440px on a 2x display) and the ~480px side panel. 2K (~2048px) is + // bigger than anything we show and costs ~50% more per image + // ($0.101 vs $0.067), so it's wasted resolution + heavier Blob uploads. + imageConfig: { aspectRatio: '3:2', imageSize: '1K' }, }, }), GEMINI_TIMEOUT_MS, diff --git a/site/src/app/commit/[sha]/[slug]/page.tsx b/site/src/app/commit/[sha]/[slug]/page.tsx index b1d3a5f..f572aaf 100644 --- a/site/src/app/commit/[sha]/[slug]/page.tsx +++ b/site/src/app/commit/[sha]/[slug]/page.tsx @@ -1,6 +1,7 @@ import type { Metadata } from 'next'; import { notFound } from 'next/navigation'; import Link from 'next/link'; +import Image from 'next/image'; import { primaryCategory, categoryDisplayName } from '@/lib/stories'; import { loadStories, loadStoryBySha } from '@/lib/stories-loader'; import { buildStoryMetadata, canonicalUrl } from '@/lib/seo'; @@ -89,6 +90,23 @@ export default async function CommitStoryPage({
{story.standfirst}
+ {story.imageUrl && ( +{story.standfirst}
+ {story.imageUrl && ( +