Add support for NVIDIA RTX 50-series GPUs (Blackwell architecture) which
require CUDA 12.8+ and PyTorch cu128 wheels due to the new sm_120 compute
capability.
Changes:
- Add configurable PYTORCH_CUDA_VERSION environment variable to control
PyTorch wheel version at runtime (cu126 for legacy, cu128 for Blackwell)
- Update all model adapters to use dynamic CUDA version instead of
hardcoded cu126 URLs
- Update Dockerfile.cuda.12.9 for Blackwell with CUDA 12.9.1 base image,
PYTORCH_CUDA_VERSION=cu128, and missing WHISPERX_ENV/yt-dlp
- Update Dockerfile.cuda with explicit PYTORCH_CUDA_VERSION=cu126
- Add docker-compose.blackwell.yml for pre-built Blackwell image
- Add docker-compose.build.blackwell.yml for local Blackwell builds
- Add GPU compatibility documentation to README
Fixes: rishikanthc/Scriberr#104
- Fix refresh token cookie Secure flag bug (was hardcoded to false)
- Wire up AllowedOrigins config in CORS middleware (router, handlers, chat, SSE)
- Add APP_ENV=production to Dockerfile and Dockerfile.cuda
- Update all docker-compose files with APP_ENV and ALLOWED_ORIGINS examples
- CORS now validates origins in production, allows all in development
- Increase gocyclo threshold from 20 to 25 for complex handlers
The CUDA fix was previously only applied to transcribe_buffered() function
(for audio >300s), but not to transcribe_audio() function (for audio <300s).
This caused short audio files to fail with CUDA Error 35.
Changes:
- Add CUDA graph disable fix to transcribe_audio() using change_decoding_strategy()
- Add unzip package to Dockerfile.cuda for Deno installation
The fix disables CUDA graphs in the TDT decoder by setting use_cuda_graph_decoder: False
via OmegaConf's open_dict() and applying with change_decoding_strategy(). This prevents
CUDA Error 35 (CUDA_ERROR_ILLEGAL_ADDRESS) on RTX 2000e Ada GPU during graph compilation.
Tested with short audio files - transcription now works correctly with Parakeet + Sortformer.
YouTube downloads were failing with "exit status 1" error. Root cause:
YouTube now requires yt-dlp to use a JavaScript runtime for video cipher
decryption.
Changes:
- Install Deno runtime in both Dockerfiles (standard and CUDA)
- Upgrade from yt-dlp to yt-dlp[default] to include all optional dependencies
- Add stderr capture to YouTube download handler for better error diagnostics
- Add performance logging for YouTube downloads (timing and file size)
Fixes#224
See: https://github.com/yt-dlp/yt-dlp/issues/14404