Skip to content

fix(browse): dedupe continue-watching cards by media item#92

Merged
detain merged 1 commit into
masterfrom
ai/continue-watching-dedup
Jun 27, 2026
Merged

fix(browse): dedupe continue-watching cards by media item#92
detain merged 1 commit into
masterfrom
ai/continue-watching-dedup

Conversation

@detain

@detain detain commented Jun 27, 2026

Copy link
Copy Markdown
Owner

Problem

The home Continue Watching rail showed the same title many times, and only the first duplicate displayed a poster — the rest stayed blank.

The continue-watching payload can contain the same media item more than once (a title watched across several sessions/devices). Duplicate cards share a media-item id, and Rail::withCard() only updates the first card with a given id when its poster loads — so the duplicates never get a poster.

Fix

BrowseScreen::onContinueWatching() now dedupes by item id, keeping the first (most-recent) occurrence the server returned, before building cards.

This is defence in depth alongside the server-side SQL dedup (phlix-server#315) — either alone fixes the visible bug; together they keep the rail correct even if a duplicate ever slips through.

Tests

testContinueWatchingDeduplicatesByMediaItem: three entries (two sharing an id) collapse to two cards, in order, keeping the higher-progress first occurrence. Full suite green (2203 tests); src PHPStan L9-clean.

🤖 Generated with Claude Code

A title watched across several sessions/devices can arrive in the
continue-watching payload more than once. Duplicate cards share a media-item
id, and a rail only updates the FIRST card with a given id when its poster
loads (the rest keep the placeholder) — so the home rail showed the same item
repeatedly with empty posters on all but the first.

Dedupe in onContinueWatching() by item id, keeping the first (most-recent)
occurrence the server returned. This is defence in depth alongside the
server-side SQL dedup; either alone fixes the visible bug, together they keep
the rail correct even if a duplicate ever slips through.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@detain detain merged commit 1cd2636 into master Jun 27, 2026
2 checks passed
@detain detain deleted the ai/continue-watching-dedup branch June 27, 2026 15:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant