Loki Studio v1.3.0

Security and reliability. July 2026.

← All updates
Released: July 2026

A security and reliability release, out of a full audit of the codebase. Your stored YouTube tokens and API keys are now encrypted against your Windows account, the YouTube sign-in flow got the standard CSRF and PKCE protections, and the bug that quietly swept unrelated videos into your done/ folder is fixed. Worth updating even if nothing has gone wrong for you.

Your stored credentials

  • YouTube tokens, LLM API keys and the OAuth client secret are now encrypted with Windows DPAPI, which ties the key to your Windows user account. A copy of those files taken to another machine can't be decrypted there, and the stored blobs are tamper-evident.
  • Nothing to re-do. Data written by the previous version is still read normally and quietly re-encrypted with the new scheme the next time it's saved. You don't need to sign in again or re-enter your keys.
  • One caveat, and it's the point of the change: because the key is tied to your Windows account, copying your Loki settings folder to a different machine or a different Windows user won't carry your saved logins with it. You'd add the channel again there.

YouTube sign-in

  • Adding a channel now sends a random state value and verifies it on the way back, and uses PKCE (RFC 7636). Together these close a theoretical window where another web page open during sign-in could interfere with the exchange.
  • The callback rejects any response whose state doesn't match the request that started it.

What was going into the logs

  • Removed the verbose request logging that wrote full LLM prompts and transcript content into your local log file at DEBUG level.
  • The resumable-upload session token is stripped from upload log lines.
  • Error text coming back from an upstream service is length-capped and scrubbed of anything shaped like a key before it's shown to you.
  • Assorted crypto hygiene: malformed padding is rejected rather than tolerated, and the upload initiation request has a consistent redirect policy.

The upload bug behind "it said it uploaded"

If your videos share a name prefix - "Episode 1", "Episode 10", "Episode 11" - uploading one of them could sweep the others into done/ without uploading them.

  • A video's companion files were matched by prefix with no name boundary, so "Episode 1" also captured "Episode 10" and everything past it.
  • This is the actual cause of the "uploaded but never showed up on the channel" reports. The ghost-drop verification added in 1.2.1 was catching some of it after the fact; this fixes it at the source.

Reliability

  • "No Tags" and "Top Summary" on the Metadata tab persist across restarts. They were never being written to the profile file, so they reverted every launch.
  • Fixed two crashes from dividing by zero on a 0-byte video file, during upload progress and thumbnail progress. Empty files are now rejected up front with a message that says so.
  • A failed tag-generation step no longer throws away an otherwise finished video. It ships with the title, description and chapters it already has.
  • Fixed a "generation failed" dialog that appeared even when metadata had succeeded through the automatic English-fallback path.
  • A blank or refused response from OpenAI is treated as an error so the retry kicks in, instead of silently writing empty metadata.
  • "Improve" on the Metadata tab can't apply its result to the wrong video any more if you click a different one before it finishes. The result is discarded with a note.
  • Upload batches no longer hang when a playlist lookup fails or matches nothing - they carry on without a playlist.
  • Transcription batches no longer stall on an unexpected worker result.
  • Fixed a leak where every processed job stayed in memory for the whole session.

Cleanup

  • About 10,000 lines of dead code removed - the retired Localize tab, superseded transcription-engine wrappers, unused helpers, and backup files from before the QML migration. No behavior change; there's just less of it to get wrong next time.

← Newer: v1.3.1·Older: v1.2.2 →·All releases

Ready to update?

If you've already paid, this version is free. Just download and reinstall.

Download v1.3.0 Discord
Buy me a coffee