|
Some checks are pending
Backend tests / test (push) Waiting to run
Addresses the ultra-review findings on this branch:
Player (PlayerScreen.tsx): the new recoveryPending mirrored the fallback-chain guards
by hand and could deadlock into a permanent "Reconnecting" spinner with no way to Mark
broken — for gone (410) sources on IP-bound tubes (re-resolve bails before setting
reResolveDone) and for any post-load error on those tubes (re-resolve is initial-load
only). Derive one reResolveApplicable flag (IP-bound AND initial-load AND not-gone) and
use it for both the chain gate and the spinner, so gone/post-load errors fall through to
proxy/WebView or the terminal error card. Seek-recovery now falls through to the chain
when player.replace() throws instead of returning.
Quick-play (SceneDetail): the autoplay route param persisted and autoPlay={i===0} re-fired
when the source list reordered (e.g. after Mark broken drops the dead source), bouncing the
user into the player. Consume it once via onAutoPlayConsumed -> nav.setParams({autoplay:false}).
Backfill semantics: performer-driven direct-scraper "backward fill" now tags scenes
backfill=True (search-by-name pulls the whole old catalog); merge coalesces backfill
(keep AND drop) so a fresh scene merged into a dead dup keeps NEW; deep-crawl only tags
backfill on a tube's FIRST sweep (swept_once) so re-sweep catalog growth stays genuine;
pilot script tags backfill.
Perf/migration: migration 0026 is now idempotent (IF NOT EXISTS; prod got the column via
manual ALTER) and adds ix_scene_performers_performer_id (favorites count filtered
performer_id with no index); index also created on prod.
Cleanup: deleted dead FavoriteSceneRow (unused import in two screens, stale isNew without
the backfill guard); removed em-dashes from all lines this branch added (user CLAUDE.md
rule), including the user-facing changelog / Settings / player-overlay strings.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| 20260502_0001_initial.py | ||
| 20260502_0002_playback_sources.py | ||
| 20260503_0003_playback_dead.py | ||
| 20260504_0004_animated_thumbnail.py | ||
| 20260504_0005_favorite_performers.py | ||
| 20260504_0006_blacklists.py | ||
| 20260504_0007_play_progress.py | ||
| 20260506_0008_performer_search_meta.py | ||
| 20260506_0009_movies.py | ||
| 20260506_0010_favorite_scenes.py | ||
| 20260507_0011_origin_pornapp_to_tube.py | ||
| 20260508_0012_favorite_studios.py | ||
| 20260509_0013_bug_reports.py | ||
| 20260509_0014_favorite_movies.py | ||
| 20260510_0015_bug_reports_movie_id.py | ||
| 20260512_0016_realdebrid_cache.py | ||
| 20260512_0017_drop_realdebrid_cache.py | ||
| 20260528_0018_movie_play_progress.py | ||
| 20260531_0019_taxonomy_scene_counts.py | ||
| 20260602_0020_scene_tags_tag_id_index.py | ||
| 20260607_0021_scene_tags_tag_id_stats.py | ||
| 20260608_0022_device_scoped_user_state.py | ||
| 20260612_0023_bug_report_replies.py | ||
| 20260616_0024_saved_searches.py | ||
| 20260622_0025_source_ranking.py | ||
| 20260702_0026_scene_backfill_flag.py | ||