This release makes automatic cover selection for CI-generated release-blog drafts smarter so future drafts should avoid reusing the same Unsplash photo IDs used recently. That matters because jobseekers and readers will see more varied cover images on our release posts; no action is required from most readers. If you manage release drafts in the CMS, you can regenerate or manually update the two already-affected drafts (2026.06.09.4 and 2026.06.09.5) to ensure they use distinct photos.
Under the hood, the release automation now excludes recently-used Unsplash photo IDs when choosing a cover, increases the search candidate depth to give the selector more fresh options, and exposes a small service-token CMS endpoint that returns recent photo IDs for CI use. The explicit manual override field blogImagePhotoId is still honored, so reviewed image choices continue to take precedence even if that photo was used previously.
Production impact: future CI-generated release blog drafts should avoid selecting the same Unsplash photo id already used by recent release-generated posts. Existing draft posts for 2026.06.09.4 and 2026.06.09.5 will need to be regenerated or updated manually if you want distinct cover images now.
This is an operational/backend-focused change; there are no visible UI changes to the public site as part of this release. Validation: the relevant automated tests passed.
What changed: recent-photo exclusion for automatic Unsplash cover selection, deeper search candidate pool, a CI-facing service-token endpoint exposing recent photo IDs, and preservation of the blogImagePhotoId manual override.
