feat: show per-video YouTube playlist ingestion across WebUI and extension - #2738
feat: show per-video YouTube playlist ingestion across WebUI and extension#2738rmusser01 wants to merge 85 commits into
Conversation
Require MEDIA_READ and media.read rate limits on owner-scoped GET routes. Normalize empty, oversized, malformed, and tampered cursors to a generic 404 without echoing input. Verify 25 endpoint tests and 141 broad regressions (6 PostgreSQL fixture-policy skips); Black, Ruff, compileall, diff-check, and Bandit pass.
Publish validated sentinel-scheduled jobs with backend database time, enforce exact queue/payload/job identity, and reconcile old unbound jobs through JobManager cancellation. Use database-clock admission and SQLite-safe expiry predicates, expose bounded OpenAPI request schemas, derive root-path-aware links, and return Retry-After on admission pressure. Verification: 211 non-property tests passed with 9 PostgreSQL policy skips; 2 property tests passed in isolation; Black, Ruff, compileall, diff-check, and Bandit passed with zero findings.
Compare SQLite cleanup cutoffs through julianday for preflights, materializations, runs, and their child resources while preserving PostgreSQL timestamp predicates. Regression coverage keeps active DB-time reservations linked to acquirable jobs and deletes both historical ISO and DB-native timestamp formats. Verification: 214 Task 1-4 tests passed with 9 PostgreSQL policy skips; property assertions passed on isolated retry; Black, Ruff, compileall, diff-check, and Bandit passed.
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: ASSERTIVE Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Code Review
This pull request implements a comprehensive backend and frontend system for per-item YouTube playlist ingestion. The changes introduce durable owner-scoped storage, asynchronous inspection, and atomic run creation, ensuring that playlist items are tracked individually rather than as opaque jobs. The review feedback correctly identifies that the implementation plan contains hardcoded local file paths, which reduces portability and should be corrected to use relative paths or environment variables.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
PR Summary by QodoPer-video YouTube playlist ingestion across WebUI and extension (v2 contract)
AI Description
Diagram
High-Level Assessment
Files changed (114)
|
Code Review by Qodo
Context used✅ Compliance rules (platform):
74 rules 1.
|
Change summary
Pending human-written summary.
Summary
Validation
UX Audit Checklist (v2 Stage 5)
Watchlists Accessibility and Scale Checklists
Risk & Rollback
Tracking
Summary by cubic
Adds per-video YouTube playlist ingestion across the WebUI and extension with server-side inspection, virtualized review, per-item metadata, and per-video lifecycle. Includes submission idempotency, strict PostgreSQL RLS, durable IndexedDB recovery, and review-driven accessibility and handoff fixes; requires server DB migrations while older servers keep existing ingest.
New Features
@tanstack/react-virtual; users can select/deselect, set per-item metadata, and choose duplicate handling.dexie) with submission leases enables recovery after refresh or extension restarts; extension handoff opens Quick Ingest directly from playlist URLs.Bug Fixes
julianday), publish jobs with DB-clock admission, return Retry-After on pressure, and require MEDIA_READ plus rate limits on owner-scoped GETs; normalize bad cursors to 404.Written for commit f303f5e. Summary will update on new commits.