Spaces:
Running
Running
Commit History
-
feat(backend): POST /jobs/youtube + GET /jobs/youtube/{id}
b989bc8 -
feat(backend): add SupabaseStorage adapter (replaces R2 dependency)
Cloudflare R2 requires a credit card to enable on the account, blocking provisioning. Supabase Storage already exists in the same project and satisfies the same interface (upload_file, delete, public_url). Trades 10GB R2 free tier for 1GB Supabase, which still covers v1 traffic and just accelerates the planned LRU eviction work to v1.5. R2Storage class kept in place for a future migration.beb3bd0 -
feat(backend): demucs two-stem -> mp3 adapter
0abe23e -
feat(backend): youtube karaoke pipeline orchestrator
abae7c8 -
feat(backend): supabase song + job repo
4ae09a8 -
feat(backend): R2 storage wrapper
0804761 -
feat(backend): yt-dlp metadata + audio download wrappers
53e89b8 -
feat(backend): youtube URL parsing
7b12041
-
Add pitch/tempo shifting on download
Adds optional pitch_semitones (-12..+12) and tempo_pct (50..150) query params on the download endpoints. When either deviates from the defaults, ffmpeg transcodes the stem via asetrate+aresample+atempo before serving, and the result is cached in the per-job output directory so repeated downloads are fast. UI adds sliders on the download page with a reset control and a download-filename suffix that reflects the applied transform. Useful for karaoke (drop key) and practice (slow-down) workflows.fd9421b
-
Set baseline stats to 100 visits and 5 downloads
Ensures stats never reset to zero on HF Spaces redeployments by using a hardcoded baseline when no stats file exists.d074942 -
Add admin dashboard with download history and persistent storage
- Track original filenames and stems on every download in download_log.json - Add /admin/downloads backend endpoint to retrieve download history - Add /admin frontend page with summary cards and download log table - Use /data (HF Spaces persistent storage) when available so stats and download logs survive redeployments - Include audio analysis module (BPM, key detection) and its tests3b1b3cb
-
Fix before-clip playback by persisting original in output dir
03be5eb -
Add before/after clip preview and SEO landing pages
ee5588a -
feat(stems): add multi-stem downloads with Playwright e2e coverage
4369b06 -
feat(trim): add upload trim range with preview and backend segment processing
27df8ab
-
fix(backend): use asyncio.to_thread for stats IO, guard malformed JSON, isolate test side-effects
5d9f00f -
feat(backend): add file-based stats counter with /stats and /stats/visit endpoints
dc5236d
-
fix: threadpool executor for cleanup, shutdown hook, stronger download tests
d52edae -
feat: GET /download/{job_id} endpoint and APScheduler file cleanup
- Created backend/cleanup.py with _cleanup_old_files (removes mp3s older than 1h) and start_cleanup_scheduler (APScheduler interval job every 15 min) - Updated main.py startup to call start_cleanup_scheduler and added GET /download/{job_id} returning FileResponse or 404/409 - Added 3 download tests covering done→200, processing→409, and unknown job→404432f562 -
fix: replace assert with RuntimeError guard, truncate stderr before decode
- Replace assert in _worker with explicit RuntimeError guard (assert strips in optimized mode, RuntimeError always fires) - Truncate stderr to 2000 bytes before decoding in _run_demucs to prevent unbounded error messages - Add explanatory comment in test mock clarifying why htdemucs path is used and that production code is model-agnostic via rglob()2bfa333 -
feat: demucs processing worker with asyncio queue and MPS acceleration
0f24c2f -
fix: cleanup on enqueue failure, MP3 magic byte validation, stronger upload tests
ac2e3da -
feat: POST /upload endpoint with MP3 validation and size limit
360e6f2 -
fix: init asyncio queue inside startup event, add QueueFull guard
56f2ba5 -
feat: job store and GET /status/{job_id} endpoint
a0cee5d -
fix: anchor paths to __file__, add Field validation, trigger lifespan in tests
36271b3 -
feat: backend scaffold with health endpoint and pytest setup
0d0fd8d