From 702418f3b532e68cfc8426d1f105f7e7c7bae9b0 Mon Sep 17 00:00:00 2001 From: BurntToasters <61037367+BurntToasters@users.noreply.github.com> Date: Sat, 13 Jun 2026 21:22:28 -0700 Subject: [PATCH] push --- CHANGELOG.md | 12 +++++-- com.burnttoasters.rosi.metainfo.xml | 2 +- package-lock.json | 4 +-- package.json | 2 +- src/main/download/commandBuilders.ts | 25 +++++++++----- src/main/downloader.ts | 2 +- src/renderer/splash.html | 2 +- src/tests/commandBuilders.test.ts | 49 ++++++++++++++++++++++++++-- 8 files changed, 79 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c21da2d..ba6c907 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,9 +6,9 @@ | Windows | macOS | Linux | | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **EXE:** [x64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.0/ROSI-Windows-x64.exe) / [arm64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.0/ROSI-Windows-arm64.exe) | **[Universal DMG](https://github.com/BurntToasters/ROSI/releases/download/v4.1.0/ROSI-MacOS-universal.dmg)** | **AppImage:** [x64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.0/ROSI-Linux-x86_64.AppImage) / [arm64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.0/ROSI-Linux-arm64.AppImage) | -|
| **[Universal ZIP](https://github.com/BurntToasters/ROSI/releases/download/v4.1.0/ROSI-MacOS-universal.zip)** | **DEB:** [x64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.0/ROSI-Linux-amd64.deb) / [arm64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.0/ROSI-Linux-arm64.deb) | -| | | **RPM:** [x64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.0/ROSI-Linux-x86_64.rpm) / [arm64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.0/ROSI-Linux-aarch64.rpm) | +| **EXE:** [x64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.1/ROSI-Windows-x64.exe) / [arm64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.1/ROSI-Windows-arm64.exe) | **[Universal DMG](https://github.com/BurntToasters/ROSI/releases/download/v4.1.1/ROSI-MacOS-universal.dmg)** | **AppImage:** [x64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.1/ROSI-Linux-x86_64.AppImage) / [arm64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.1/ROSI-Linux-arm64.AppImage) | +|
| **[Universal ZIP](https://github.com/BurntToasters/ROSI/releases/download/v4.1.1/ROSI-MacOS-universal.zip)** | **DEB:** [x64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.1/ROSI-Linux-amd64.deb) / [arm64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.1/ROSI-Linux-arm64.deb) | +| | | **RPM:** [x64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.1/ROSI-Linux-x86_64.rpm) / [arm64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.1/ROSI-Linux-aarch64.rpm) | > [!IMPORTANT] > The `.sig` files in this repo are NOT normal GPG signatures — they are for ROSI's built-in updater to verify the integrity of updates before downloading and installing. @@ -30,6 +30,12 @@ --- +## Changes in `v4.1.1:` + +_What's a new feature update without a major bugfix am I right ;)_ + +- **FFMPEG/YT-DLP:** Fixed an issue where yt-dlp args were being passes with an extra `--`. + ## Changes in `v4.1.0:` - **NEW - Preview:** Added video preview before downloading so ROSI can show the title, uploader, duration, thumbnail, playlist info, and other basic metadata before saving. diff --git a/com.burnttoasters.rosi.metainfo.xml b/com.burnttoasters.rosi.metainfo.xml index 7e9f984..02e1655 100644 --- a/com.burnttoasters.rosi.metainfo.xml +++ b/com.burnttoasters.rosi.metainfo.xml @@ -33,7 +33,7 @@ - + diff --git a/package-lock.json b/package-lock.json index 1be3fca..30b52d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "rosi", - "version": "4.1.0", + "version": "4.1.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "rosi", - "version": "4.1.0", + "version": "4.1.1", "license": "MPL-2.0", "dependencies": { "electron-log": "^5.3.4", diff --git a/package.json b/package.json index 739e3d2..2626f2a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rosi", - "version": "4.1.0", + "version": "4.1.1", "private": true, "description": "Electron GUI for yt-dlp", "desktopName": "com.burnttoasters.rosi.desktop", diff --git a/src/main/download/commandBuilders.ts b/src/main/download/commandBuilders.ts index e32ca8c..0e94097 100644 --- a/src/main/download/commandBuilders.ts +++ b/src/main/download/commandBuilders.ts @@ -146,6 +146,15 @@ export interface BuildYtdlpArgsResult { statusMessages: string[]; } +function insertBeforeUrlSeparator(args: string[], ...items: string[]): void { + const separatorIndex = args.indexOf('--'); + if (separatorIndex === -1) { + args.splice(args.length - 1, 0, ...items); + return; + } + args.splice(separatorIndex, 0, ...items); +} + export function buildYtdlpArgs({ normalizedDownloadDir, url, @@ -172,11 +181,11 @@ export function buildYtdlpArgs({ const statusMessages: string[] = []; if (pathOutputFile) { - args.splice(args.indexOf('--'), 0, '--print-to-file', 'after_move:filepath', pathOutputFile); + insertBeforeUrlSeparator(args, '--print-to-file', 'after_move:filepath', pathOutputFile); } if (ffmpegLocation) { - args.splice(args.length - 1, 0, '--ffmpeg-location', ffmpegLocation); + insertBeforeUrlSeparator(args, '--ffmpeg-location', ffmpegLocation); } const formatFlagIndex = args.indexOf('-f'); @@ -200,14 +209,14 @@ export function buildYtdlpArgs({ const audioOutputFmt = ALLOWED_AUDIO_FORMATS.has(settings.audioFormat) ? settings.audioFormat : 'mp3'; - args.splice(-1, 0, '-x', '--audio-format', audioOutputFmt, '--audio-quality', '0'); + insertBeforeUrlSeparator(args, '-x', '--audio-format', audioOutputFmt, '--audio-quality', '0'); statusMessages.push(`🎵 Audio-only mode enabled (${audioOutputFmt.toUpperCase()})`); } if (settings.hookBrowser && settings.browserChoice) { const normalized = settings.browserChoice.toLowerCase(); if (ALLOWED_BROWSERS.has(normalized)) { - args.splice(-1, 0, '--cookies-from-browser', normalized); + insertBeforeUrlSeparator(args, '--cookies-from-browser', normalized); } } @@ -215,22 +224,22 @@ export function buildYtdlpArgs({ const langs = SUBTITLE_LANGS_PATTERN.test(settings.subtitleLangs) ? settings.subtitleLangs : 'en'; - args.splice(-1, 0, '--write-subs', '--embed-subs', '--sub-langs', langs); + insertBeforeUrlSeparator(args, '--write-subs', '--embed-subs', '--sub-langs', langs); statusMessages.push(`💬 Subtitles enabled (${langs})`); } if (settings.embedThumbnail) { - args.splice(-1, 0, '--embed-thumbnail'); + insertBeforeUrlSeparator(args, '--embed-thumbnail'); statusMessages.push('🖼️ Embedding thumbnail'); } if (settings.embedMetadata) { - args.splice(-1, 0, '--embed-metadata'); + insertBeforeUrlSeparator(args, '--embed-metadata'); statusMessages.push('🏷️ Embedding metadata'); } if (settings.sponsorblockRemove) { - args.splice(-1, 0, '--sponsorblock-remove', 'default'); + insertBeforeUrlSeparator(args, '--sponsorblock-remove', 'default'); statusMessages.push('⏭️ SponsorBlock: removing segments'); } diff --git a/src/main/downloader.ts b/src/main/downloader.ts index 5036466..ead654f 100644 --- a/src/main/downloader.ts +++ b/src/main/downloader.ts @@ -471,7 +471,7 @@ export function startDownload( const settings = loadSettings(); const effectiveSettings: Settings = { ...settings }; const ffmpegCommand = getEffectiveFfmpegPath(options.ffmpegPath || settings.ffmpegPath); - const ffmpegLocation = ffmpegCommand !== 'ffmpeg' ? ffmpegCommand : null; + const ffmpegLocation = ffmpegCommand !== 'ffmpeg' ? path.dirname(ffmpegCommand) : null; if (options.convertFormat !== undefined) { if (typeof options.convertFormat === 'string' && options.convertFormat.trim() !== '') { diff --git a/src/renderer/splash.html b/src/renderer/splash.html index 7ddbd15..41b8295 100644 --- a/src/renderer/splash.html +++ b/src/renderer/splash.html @@ -327,7 +327,7 @@

ROSI

Loading
-
v4.1.0
+
v4.1.1