From b22bebdab5a04abf0fb8d589ef5df2d122ab873f Mon Sep 17 00:00:00 2001 From: amd64fox <62529699+amd64fox@users.noreply.github.com> Date: Sat, 28 Mar 2026 22:09:43 +0300 Subject: [PATCH] version bump to 1.2.86.502 - added an option in the settings to enable/disable music videos, etc - added a Share button with a new modal window - added the ability to include local patches.json --- patches/patches.json | 88 ++++++++++++++++++++++++++++++++++++++++---- run.ps1 | 40 ++++++++++++++++++-- 2 files changed, 117 insertions(+), 11 deletions(-) diff --git a/patches/patches.json b/patches/patches.json index 8d4717e..3449cb7 100644 --- a/patches/patches.json +++ b/patches/patches.json @@ -273,7 +273,7 @@ "native_description": "Enable Audiobook Ad Formats Exclusivity", "version": { "fr": "1.2.19", - "to": "" + "to": "1.2.84" } }, "NewAdsNpvNewVideoTakeoverSlot": { @@ -363,7 +363,7 @@ "native_description": "Enable Fist Impression Takeover ads on Home Page", "version": { "fr": "1.2.31", - "to": "" + "to": "1.2.84" } }, "LearningHomeCard": { @@ -420,6 +420,38 @@ "to": "" } }, + "LimitedAdsLabelsOnPlaylistCards": { + "name": "enableLimitedAdsLabelsOnPlaylistCards", + "native_description": "Enables Limited Ads label rendering on playlist cards across Home, Browse, and Recents surfaces", + "version": { + "fr": "1.2.86", + "to": "" + } + }, + "LimitedAdsLabelsOnSearch": { + "name": "enableLimitedAdsLabelsOnSearch", + "native_description": "Enables Limited Ads label rendering on Search surfaces", + "version": { + "fr": "1.2.86", + "to": "" + } + }, + "AdFeedbackMilestone1": { + "name": "enable_ad_feedback_milestone_1", + "native_description": "Enable ad feedback milestone 1 feature", + "version": { + "fr": "1.2.86", + "to": "" + } + }, + "LeaderboardCrossOriginIframe": { + "name": "enableLeaderboardCrossOriginIframe", + "native_description": "Enables cross-origin iframe rendering for leaderboard ads via CDN template", + "version": { + "fr": "1.2.86", + "to": "" + } + }, "LyricsUpsell": { "name": "enableLyricsUpsell", "description": "Enable Lyrics Upsell", @@ -731,7 +763,7 @@ "native_description": "If enabled, we do consider percent visibility when logging the display ad impression", "version": { "fr": "1.2.78", - "to": "" + "to": "1.2.84" } }, "MadeForYou": { @@ -1585,7 +1617,7 @@ "native_description": "Enable backend search history", "version": { "fr": "1.2.60", - "to": "" + "to": "1.2.85" } }, "SyncingSearchHistoryToBackend": { @@ -1594,7 +1626,7 @@ "native_description": "Enables syncing search history to the backend", "version": { "fr": "1.2.75", - "to": "" + "to": "1.2.85" } }, "WatchFeedEntityPages": { @@ -1711,7 +1743,7 @@ "native_description": "Enable profile visibility controls in the settings & profile page", "version": { "fr": "1.2.74", - "to": "" + "to": "1.2.85" } }, "ShuffleSettings": { @@ -1817,6 +1849,46 @@ "fr": "1.2.82", "to": "" } + }, + "ShareActionBarButton": { + "name": "enableShareActionBarButton", + "native_description": "Shows a share button in entity page action bars that opens the share dialog", + "version": { + "fr": "1.2.86", + "to": "" + } + }, + "ShareDialog": { + "name": "enableShareDialog", + "native_description": "Enables the share dialog modal instead of the share submenu", + "version": { + "fr": "1.2.86", + "to": "" + } + }, + "UserVideoSettings": { + "name": "enableUserVideoSettings", + "native_description": "Show video preference settings for users to control video playback types", + "version": { + "fr": "1.2.86", + "to": "" + } + }, + "AdFeedbackEmbeddedNpvCarouselKillSwitch": { + "name": "enable_ad_feedback_embedded_npv_carousel", + "native_description": "Kill switch for ad feedback on embedded NPV carousel format", + "version": { + "fr": "1.2.86", + "to": "" + } + }, + "AdFeedbackEmbeddedNpvDisplayKillSwitch": { + "name": "enable_ad_feedback_embedded_npv_display", + "native_description": "Kill switch for ad feedback on embedded NPV display format", + "version": { + "fr": "1.2.86", + "to": "" + } } }, "CustomExp": { @@ -1957,7 +2029,7 @@ "value": "0", "version": { "fr": "1.2.59", - "to": "" + "to": "1.2.84" } }, "AdsRefreshTimeInterval": { @@ -2017,7 +2089,7 @@ "value": "enabled", "version": { "fr": "1.2.73", - "to": "" + "to": "1.2.85" } }, "SearchResultsAsList": { diff --git a/run.ps1 b/run.ps1 index c74de46..0c0c1ef 100644 --- a/run.ps1 +++ b/run.ps1 @@ -2,7 +2,7 @@ param ( [Parameter(HelpMessage = 'Latest recommended Spotify version for Windows 10+.')] - [string]$latest_full = "1.2.85.519.g549a528b", + [string]$latest_full = "1.2.86.502.g8cd7fb22", [Parameter(HelpMessage = 'Latest supported Spotify version for Windows 7-8.1')] [string]$last_win7_full = "1.2.5.1006.g22820f93", @@ -23,6 +23,10 @@ param [Parameter(HelpMessage = 'Custom path to Spotify installation directory. Default is %APPDATA%\Spotify.')] [string]$SpotifyPath, + [Parameter(HelpMessage = 'Custom local path to patches.json')] + [Alias('cp')] + [string]$CustomPatchesPath, + [Parameter(HelpMessage = "Use github.io mirror instead of raw.githubusercontent.")] [Alias("m")] [switch]$mirror, @@ -566,6 +570,36 @@ function Get { return $null } +function Get-PatchesJson { + param ( + [string]$LocalPath + ) + + if ($LocalPath) { + try { + $resolvedPath = Resolve-Path -LiteralPath $LocalPath -ErrorAction Stop | Select-Object -ExpandProperty Path + + if (-not (Test-Path -LiteralPath $resolvedPath -PathType Leaf)) { + throw "File not found: $resolvedPath" + } + + Write-Host ("Using local patches.json: {0}" -f $resolvedPath) + + $jsonContent = [System.IO.File]::ReadAllText($resolvedPath, [System.Text.Encoding]::UTF8) + return $jsonContent | ConvertFrom-Json -ErrorAction Stop + } + catch { + Write-Host + Write-Host "Failed to load local patches.json" -ForegroundColor Red + Write-Host $_.Exception.Message -ForegroundColor Red + Write-Host + return $null + } + } + + return Get -Url (Get-Link -e "/patches/patches.json") -RetrySeconds 5 +} + function incorrectValue { @@ -1656,11 +1690,11 @@ if ($ch -eq 'n') { $ch = $null -$webjson = Get -Url (Get-Link -e "/patches/patches.json") -RetrySeconds 5 +$webjson = Get-PatchesJson -LocalPath $CustomPatchesPath if ($webjson -eq $null) { Write-Host - Write-Host "Failed to get patches.json" -ForegroundColor Red + Write-Host "Failed to load patches.json" -ForegroundColor Red Remove-TempDirectory -Directory $tempDirectory Stop-Script }