12 Commits (1fcf32223e67fce573df46d2de1777458ee7de14)
 

Author SHA1 Message Date
Raynoxis 1fcf32223e Fix permissions issue for WSL2 and rootless containers
This update prevents the need to run containers with root privileges by
properly configuring user permissions.

Changes:
- Add user: "${UID:-1000}:${GID:-1000}" to docker-compose.yml
- Create .env file with UID/GID configuration
- Add .env.example template for users
- Update .gitignore to exclude downloads.old/
- Add comprehensive troubleshooting section in README.md
- Document 3 solutions for permission issues (recommended vs avoid)
- Explicitly warn against using user: root

This configuration works perfectly with Docker and Docker Compose.
For Podman rootless, additional step may be needed:
  podman unshare chown -R 1000:1000 downloads/

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2 months ago
Raynoxis 0ad2e22cd0 Update documentation with all new features
Documentation updates:
- Add comprehensive feature list (security, performance, UX)
- Document real-time progress bar with SSE
- Add security section with hardening measures
- Document API endpoints (analyze, download, progress, cleanup)
- Add architecture overview with UUID sessions
- Add troubleshooting section
- Add file management documentation
- Add changelog with v2.0.0 release notes
- Update badges (added security badge)
- Add detailed usage steps with progress bar
- Document non-blocking downloads
- Add best practices for production deployment

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2 months ago
Raynoxis e94f9637b6 Add real-time download progress bar with SSE
Backend improvements:
- Add Server-Sent Events endpoint (/api/progress/<session_id>)
- Implement _do_download_with_progress() to track yt-dlp progress in real-time
- Parse yt-dlp output to extract percentage, speed, and ETA
- Run downloads in background threads (non-blocking)
- Store progress in download_sessions dict with thread-safe locks
- Download API now returns immediately with session_id

Frontend improvements:
- Add beautiful animated progress bar with gradient
- Display real-time percentage, speed, and ETA
- Connect to SSE stream for live updates
- Show progress section during download
- Auto-hide progress and show results when completed
- Handle errors gracefully with proper cleanup

User experience:
- No more blocking downloads - instant response
- See live progress as video downloads
- Visual feedback with smooth animations
- Clean transition from progress to download results

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2 months ago
Raynoxis 837abcdf44 Restore yt-dlp command display feature
- Add command string back to download API response
- Display executed yt-dlp command in frontend
- Keep command display for transparency and debugging

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2 months ago
Raynoxis a745ceeafb Major security and concurrency improvements
Security fixes:
- Add YouTube URL validation with regex to prevent command injection
- Fix path traversal vulnerability in download-file endpoint
- Add input validation for containers and audio codecs
- Initialize postproc_added variable to prevent undefined errors
- Run Docker container as non-root user (appuser:1000)
- Add curl to Docker image for healthcheck support
- Remove flask-cors (unused dependency)

Concurrency improvements:
- Implement UUID-based session directories for downloads
- Prevent race conditions between concurrent requests
- Add automatic cleanup of old sessions (>1h)
- Each download now isolated in its own directory

Code quality improvements:
- Add comprehensive logging throughout the application
- Add type hints for validation functions
- Improve error handling with specific exceptions
- Add constants for configuration (TIMEOUT, BYTES_PER_MB, etc.)
- Better documentation with docstrings

API changes:
- download endpoint now returns session_id
- download-file endpoint now requires session_id and filename
- New cleanup endpoints for session management

Frontend updates:
- Updated to use new session-based download URLs
- Remove command display for security (showed internal paths)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2 months ago
Raynoxis be368e8463 Update default YouTube URL to new video
Changed the default video URL from HixGrIOBE0U to EBwD0RPO1IM in the web interface.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2 months ago
Raynoxis 2e40cb00a5
Update README.md 2 months ago
Raynoxis f23f08cb92 ajust3 2 months ago
Raynoxis 249db53609
Update docker-compose.yml 2 months ago
Raynoxis 6d65231dc0 ajust2 2 months ago
Raynoxis 8660287916 ajust1 2 months ago
Raynoxis 7050c6fe56 initial commit 2 months ago