21 Commits (main)
 

Author SHA1 Message Date
Raynoxis 46cb4e98d8 Add Docker image publish workflow 1 month ago
Raynoxis d6db94a329 Add spacing between command display and download button
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 month ago
Raynoxis ee5726513e Fix language switching for dynamic dropdown options (Issue #1)
- Add missing translations: bestAuto, fix copyOriginal to French
- Update toggleAudioOnlyMode() to use translated strings
- Add updateFormatDropdownsTranslations() function to refresh dynamic options
- Enhance setLanguage() to update all dynamic elements on language change

Fixes: Audio dropdown and audio-only mode options now properly translate
when switching between French and English.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 month ago
Raynoxis 9aa9515e66
Update README.md 2 months ago
Raynoxis d1845f444b
Update README.md 2 months ago
Raynoxis a4bef47106 clean 2 months ago
Raynoxis a2a672ae68 language selector 2 months ago
Raynoxis 8109a4db77 Add YouTube channel footer 2 months ago
Raynoxis 42790c6850 Fix Podman rootless permissions and improve setup
- Remove downloads folder creation from Dockerfile to avoid permission conflicts
- Remove user directive from docker-compose.yml (incompatible with rootless)
- Add :Z flag to volume mount for proper SELinux labeling
- Add fix-permissions.sh script for easy Podman setup
- Update documentation with correct Podman rootless instructions
- Update changelog for v2.0.2

This fixes the "Permission denied" error when downloading files in Podman
rootless mode by properly configuring UID mapping.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2 months ago
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