Loki Studio v1.1.4

March 2026.

← All updates
Released: March 2026

Cleanup, UI refresh, GPU memory management overhaul, and stability improvements.

KNOWN ISSUE

  • After transcription or translation, the application may use slightly more CPU than expected at idle (~5-7%). This is caused by background threads from the transcription engine that remain active after the models are unloaded. It does not affect functionality or GPU memory. A fix is planned for a future update.

CHANGES

  • Removed Localize tab (voice cloning/dubbing). This feature will return as a standalone tool once it's ready for production use.
  • Finalize tab is now always visible. Removed the Power User Settings toggle that previously controlled its visibility.
  • Dashboard: Renamed header from "Valhalla - Hall of the Chosen" to "Video Profiles". Removed "Process All" and "Upload Ready" buttons.
  • Dashboard: Added "Video Tutorials" button linking to the Loki Studio YouTube tutorial playlist.
  • Help tab: Removed placeholder buttons (Open Docs, Contact Support, Report Bug). Kept "Visit Website" with the correct NordIQ AI URL.
  • Updated Getting Started video link in the welcome dialog and Quick Start help guide to point to the current tutorial video.
  • Updated help documentation to reference the profile's video directory instead of the hardcoded `toupload/` folder.

BUG FIXES

  • Transcription: Fixed a lockup that occurred when transcribing after a previous translation session. The translation model now stays loaded and is reused across videos in a batch, avoiding repeated load/unload cycles that could freeze the application.
  • Finalize tab: Now uses the bundled FFmpeg executable instead of expecting ffmpeg on the system PATH. Previously, finalize jobs would silently fail because ffmpeg.exe could not be found.
  • Metadata: Fixed AI Personality reverting to the first entry (alphabetically) when switching between tabs. A redundant profile reload with empty personality was resetting the dropdown on every tab visit.
  • Metadata: Title generation now preserves the video filename as the title base instead of replacing it with fully AI-generated text. Previously, a file named "Loki Studio Getting Started" might get a title like "AI Workflow Creation Guide" with the original name lost. Now the filename is kept and an AI subtitle is appended only if there's room (e.g., "Loki Studio Getting Started - Your First Video"). Episodic patterns (Ep01, S01E01, Part 1) continue to be detected and preserved as before.
  • Metadata: Thumbnail title/subtitle generation now stays grounded to the video's actual topic. The video filename is passed as context to the LLM so thumbnail text relates to the content with different wording rather than inventing unrelated hype.
  • Metadata: Added provider and device logging at the start of batch generation (e.g., "LLM Provider: Grimnir (Built-in) | Device: GPU (NVIDIA GeForce RTX 4090)").
  • GPU Memory: Whisper and NLLB translation models are now properly unloaded from GPU memory after transcription/translation completes. Previously, models stayed in VRAM indefinitely, starving the metadata generator (Grimnir) of GPU resources and forcing it to fall back to CPU. Metadata generation is now 5-10x faster as a result.
  • GPU Memory: Grimnir (local LLM) model is unloaded after metadata batch completes, freeing VRAM for other operations.
  • Metadata: Progress now updates in real-time during generation, showing the current stage (Preparing, Analyzing, Generating title, Chapters, Description, Tags) with percentage. Previously the UI showed "Queued" with no feedback until completion.
  • FAQ help: Fixed "Grimnar" typo (correct name: Grimnir).

GPU SUPPORT

  • Upgraded entirely to CUDA 13.2 — CUDA 12 has been dropped. This eliminates dual-runtime conflicts that caused GPU detection failures and reduces the installer size by approximately 770 MB.
  • Full RTX 50-series (Blackwell) GPU support. Transcription, translation, and local LLM inference (Grimnir) all run on RTX 5070/5080/5090 GPUs. Previously, GPU operations on Blackwell would silently produce empty results or fall back to CPU.
  • All GPU-enabled components rebuilt with CUDA 13.2:
  • Muninn/CTranslate2 (Whisper transcription + NLLB translation)
  • Skuld/llama.cpp (Grimnir local LLM inference) Both target sm_75 through sm_120 (RTX 20-series through RTX 50-series).
  • GPU detection now uses the CUDA Driver API (cuInit/cuDeviceGet) instead of the CUDA Runtime API (cudaGetDeviceCount). This prevents conflicts when multiple libraries load different CUDA runtime versions in the same process.
  • Minimum GPU requirement: NVIDIA Turing architecture (RTX 20-series) or newer with driver version 570+. Pascal (GTX 10-series) and older are no longer supported for GPU acceleration — they will automatically fall back to CPU.

STABILITY & SECURITY

---------------------

  • Settings files (app_settings.json, profile configs) now use atomic writes (write-to-temp-then-rename). Previously, a crash or power loss mid-write could corrupt and lose all settings.
  • Transcription: Model cleanup no longer destroys GPU models while the worker thread is still active. Previously, cancelling transcription with a 5-second timeout could delete the Whisper model out from under a running CUDA operation.
  • Transcription: Fixed potential worker thread double-delete during batch processing. Worker cleanup is now exclusively handled by the QThread::finished signal handler.
  • MuninnTranscriber: Added mutex protection to initialize(), cancel(), resetCancel(), isInitialized(), and getDeviceInfo() to prevent data races when these are called from different threads.
  • Finalize tab: Fixed signal connection accumulation — jobStarted, jobCompleted, and jobProgress signals are now properly disconnected on cancel and before reconnection. Previously, repeated cancel/restart cycles would cause callbacks to fire multiple times per event.
  • Finalize tab: Added double-submission guard. Clicking "Finalize Selected" or "Finalize All" while already processing now shows a message instead of corrupting batch state.
  • Profile names are now validated to reject path traversal characters (.., /, \, :) preventing potential directory escape via crafted profile names.

TECHNICAL DETAILS

  • CTranslate2: Updated from v4.6.1 to v4.7.1 (pure CUDA Conv1d for Blackwell, INT8 disabled for sm_120, Windows build fixes)
  • CTranslate2: VRAM release via detach_models() + release_gpu_memory() + clear_cache() — frees all GPU tensors without triggering ThreadPool destructor deadlock. Worker threads signaled via prepare_shutdown() to stop CPU spinning.
  • TranscribeTab: New releaseModels() method unloads all GPU models after batch completion — Whisper, NLLB (including static worker translator), allocator cache
  • MetadataTab: Skuld model unloaded after metadata batch via SkuldManager::unloadModel()
  • MetadataTab: Progress wired from MetadataGenerator::progressUpdate signal to Job
  • TranscribeTab: Worker cleanup ownership moved to QThread::finished handler only
  • FinalizeTab: Uses FFmpegUtils::getFfmpegPath() for bundled ffmpeg resolution
  • FinalizeTab: Disconnect-before-connect pattern prevents signal accumulation
  • JsonFileManager: Atomic write-to-temp-then-rename with copy fallback for Windows
  • ConfigManager: getConfigFilePath() validates config names against path traversal
  • MuninnTranscriber: QMutexLocker added to 5 methods (not transcribe() - long-running)
  • Removed LocalizeTab, LocalizeView.qml, and VarManager from build (source preserved)
  • Removed showFinalizeVideosTab setting from AppSettingsManager and PowerUserSettingsTab
  • Removed updateFinalizeTabVisibility() from OdinMainWindow
  • Removed processAllRequested/uploadReadyRequested signals from Dashboard
  • TranscribeTab: Translation completion now defers loadVideoList() via QTimer::singleShot(0) to prevent UI hang during model release + thread cleanup
  • Skuld: GPU detection uses CUDA Driver API (cuDeviceGet) instead of runtime API
  • Skuld: Rebuilt with CUDA 13.2, architectures 75/80/86/89/120, /Zc:preprocessor
  • Muninn: Rebuilt with CUDA 13.2, Driver API for GPU detection, no cudart dependency
  • CTranslate2: Rebuilt with CUDA 13.2, sm_120 Blackwell kernels
  • CUDA 12 DLLs (cublas64_12, cublasLt64_12, cudart64_12) removed from staging/installer
  • ONNX Runtime VAD runs on CPU only (Silero VAD <5ms, no GPU needed)
  • Tab indices renumbered (14 tabs including Finalize, down from 15)
  • Help content encoded files (.b64) regenerated from updated sources
  • Tab order: Profile Settings moved before Application Settings and Power User

UPGRADE NOTES

  • No breaking changes from v1.1.3
  • The `show_finalize_videos_tab` setting in app_settings.json is now ignored
  • The Finalize tab is always visible regardless of previous settings
  • CUDA 12 support has been dropped. GPU acceleration now requires NVIDIA driver 570+ and an RTX 20-series or newer GPU. Older GPUs fall back to CPU automatically.
  • Installer size reduced from ~1.2 GB to ~450 MB due to CUDA 12 removal

← All updates  ·  Source-of-truth changelog on GitHub

Latest version is the safer pick.

Updates are free for life.

Get the latest version Discord
Buy me a coffee