Showcase cadence tuning + cooldown-aware bulk retry #38
Reference in New Issue
Block a user
Delete Branch "dev"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Three UX-focused commits since PR #37.
9cd6d09— Showcase load felt "chunky" (per-batch API pauses) and infinite-scroll fired too late on tall masonry images. Parallel-then-trickle for the initial load (one-item-at-a-time at 80ms cadence); bumped MasonryGrid'suseInfiniteScrollrootMargin from 600px → 2400px so a tall single-column image can't push the sentinel below where the user's actually reading.e3a7aff— Replaced the all-parallel fetch with a pipeline: one fetch in flight at a time, but the next fires as soon as the current resolves (overlapping the next RTT with the visible trickle). In-order arrival guaranteed.PAGE5 → 3 +INITIAL_BATCHES12 → 20 (still 60 total) so the first chunk's items appear sooner.a510149— Manual/api/sources/<id>/checknow respects the platform cooldown by default; returns202 {status: 'deferred', platform, cooldown_until}instead of dispatching. Bulk retry (RETRY ALL + MaintenanceMenu "Retry failed") leaves cooldown on; single-source RETRY click sends?force=trueto override (operator-explicit, useful for rapid auth-fix testing). Toast talliesqueued/deferred (cooldown)/already runningso the deferred count answers "is rate-limit my dominant failure mode" at a glance.No alembic migrations. Rename:
_platforms_in_cooldown→active_platform_cooldowns(now a cross-module API used bysources.py).Test plan
/showcase. Items should trickle in one-at-a-time at a steady cadence, no per-batch bursts. Network panel shows pipelined/api/showcase?limit=3calls.download_eventrows on the deferred sources.🤖 Generated with Claude Code