Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package spicetify-cli for openSUSE:Factory checked in at 2025-05-20 09:39:15 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/spicetify-cli (Old) and /work/SRC/openSUSE:Factory/.spicetify-cli.new.30101 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "spicetify-cli" Tue May 20 09:39:15 2025 rev:14 rq:1278428 version:2.40.9 Changes: -------- --- /work/SRC/openSUSE:Factory/spicetify-cli/spicetify-cli.changes 2025-05-12 16:56:07.742906550 +0200 +++ /work/SRC/openSUSE:Factory/.spicetify-cli.new.30101/spicetify-cli.changes 2025-05-20 09:40:35.035990660 +0200 @@ -1,0 +2,10 @@ +Mon May 19 17:15:24 UTC 2025 - Jan Kužílek <[email protected]> + +- Update to version 2.40.9: + * fix: correctly apply search bug fix + * chore: change info msg + * fix(wrapper): use `type` regex for menus + * feat: add partial support for Spotify 1.2.64 + * feat(css-map): update `lyrics-lyricsContent-lyric` (#3411) + +------------------------------------------------------------------- Old: ---- cli-2.40.7.obscpio New: ---- cli-2.40.9.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ spicetify-cli.spec ++++++ --- /var/tmp/diff_new_pack.qDaNwc/_old 2025-05-20 09:40:35.604014846 +0200 +++ /var/tmp/diff_new_pack.qDaNwc/_new 2025-05-20 09:40:35.608015016 +0200 @@ -19,7 +19,7 @@ %define sname cli %define binname spicetify Name: spicetify-cli -Version: 2.40.7 +Version: 2.40.9 Release: 0 Summary: Command-line tool to customize Spotify client License: LGPL-2.1-or-later ++++++ _service ++++++ --- /var/tmp/diff_new_pack.qDaNwc/_old 2025-05-20 09:40:35.640016379 +0200 +++ /var/tmp/diff_new_pack.qDaNwc/_new 2025-05-20 09:40:35.640016379 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/spicetify/cli</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v2.40.7</param> + <param name="revision">v2.40.9</param> <param name="versionformat">@PARENT_TAG@</param> <param name="changesgenerate">enable</param> <param name="versionrewrite-pattern">v(.*)</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.qDaNwc/_old 2025-05-20 09:40:35.660017231 +0200 +++ /var/tmp/diff_new_pack.qDaNwc/_new 2025-05-20 09:40:35.664017401 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/spicetify/cli</param> - <param name="changesrevision">68f41d51303ed690e2fb0cf077350ffc512080d8</param></service></servicedata> + <param name="changesrevision">d66dff6f9e4f027802252be0146337fa3fedb37d</param></service></servicedata> (No newline at EOF) ++++++ cli-2.40.7.obscpio -> cli-2.40.9.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cli-2.40.7/css-map.json new/cli-2.40.9/css-map.json --- old/cli-2.40.7/css-map.json 2025-05-10 18:05:39.000000000 +0200 +++ new/cli-2.40.9/css-map.json 2025-05-19 16:52:09.000000000 +0200 @@ -150,6 +150,7 @@ "vapgYYF2HMEeLJuOWGq5": "lyrics-lyricsContent-isInteractive", "NiCdLCpp3o2z6nBrayOn": "lyrics-lyricsContent-lyric", "nw6rbs8R08fpPn7RWW2w": "lyrics-lyricsContent-lyric", + "BJ1zQ_ReY3QPaS7SW46s": "lyrics-lyricsContent-lyric", "kGR_hu4tdj9PnUlSPaRL": "lyrics-lyricsContent-provider", "LomBcMvfM8AEmZGquAdj": "lyrics-lyricsContent-provider", "A3ohAQNHsDIMv2EM3Ytp": "lyrics-lyricsContent-text", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cli-2.40.7/jsHelper/spicetifyWrapper.js new/cli-2.40.9/jsHelper/spicetifyWrapper.js --- old/cli-2.40.7/jsHelper/spicetifyWrapper.js 2025-05-10 18:05:39.000000000 +0200 +++ new/cli-2.40.9/jsHelper/spicetifyWrapper.js 2025-05-19 16:52:09.000000000 +0200 @@ -569,13 +569,19 @@ }; const reactComponentsUI = exposeReactComponentsUI({ modules, functionModules, exportedForwardRefs }); - const knownMenuTypes = ["album", "show", "artist", "track"]; + const knownMenuTypes = ["album", "show", "artist", "track", "playlist"]; const menus = modules - .map((m) => m?.type?.toString().match(/value:"[\w-]+"/g) && [m, ...m.type.toString().match(/value:"[\w-]+"/g)]) + .map((m) => { + const valueMatch = m?.type?.toString().match(/value:"([\w-]+)"/); + if (valueMatch) return [m, valueMatch[1]]; + const typeMatch = m?.type?.toString().match(/type:[\w$]+\.[\w$]+\.([A-Z_]+)/); + if (typeMatch) return [m, typeMatch[1].toLowerCase()]; + return null; + }) .filter(Boolean) .filter((m) => m[1] !== 'value:"row"') .map(([module, type]) => { - type = type.match(/value:"([\w-]+)"/)[1]; + type = type.match(/value:"([\w-]+)"/)?.[1] ?? type; if (!knownMenuTypes.includes(type)) return; if (type === "show") type = "podcast-show"; @@ -732,6 +738,7 @@ const listOfComponents = [ "ScrollableContainer", "Slider", + "Dropdown", "Toggle", "Cards.Artist", "Cards.Audiobook", @@ -782,6 +789,18 @@ ); Object.assign(Spicetify.ReactComponent.Cards, Object.fromEntries(cards)); + // chunks + const dropdownChunk = chunks.find(([, value]) => value.toString().includes("dropDown") && value.toString().includes("isSafari")); + if (dropdownChunk) { + Spicetify.ReactComponent.Dropdown = + Object.values(require(dropdownChunk[0]))?.[0]?.render ?? Object.values(require(dropdownChunk[0])).find((m) => typeof m === "function"); + } + + const toggleChunk = chunks.find(([, value]) => value.toString().includes("onSelected") && value.toString().includes('type:"checkbox"')); + if (toggleChunk && !Spicetify.ReactComponent.Toggle) { + Spicetify.ReactComponent.Toggle = Object.values(require(toggleChunk[0]))[0].render; + } + if (!listOfComponents.every((component) => Spicetify.ReactComponent[component] !== undefined)) { setTimeout(waitForChunks, 100); return; @@ -882,17 +901,12 @@ const playlistMenuChunk = chunks.find( ([, value]) => value.toString().includes('value:"playlist"') && value.toString().includes("canView") && value.toString().includes("permissions") ); - if (playlistMenuChunk) { + if (playlistMenuChunk && !Spicetify.ReactComponent?.PlaylistMenu) { Spicetify.ReactComponent.PlaylistMenu = Object.values(require(playlistMenuChunk[0])).find( (m) => typeof m === "function" || typeof m === "object" ); } - const dropdownChunk = chunks.find(([, value]) => value.toString().includes("dropDown") && value.toString().includes("isSafari")); - if (dropdownChunk) { - Spicetify.ReactComponent.Dropdown = Object.values(require(dropdownChunk[0])).find((m) => typeof m === "function"); - } - const infiniteQueryChunk = chunks.find( ([_, value]) => value.toString().includes("fetchPreviousPage") && value.toString().includes("getOptimisticResult") ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cli-2.40.7/src/preprocess/preprocess.go new/cli-2.40.9/src/preprocess/preprocess.go --- old/cli-2.40.7/src/preprocess/preprocess.go 2025-05-10 18:05:39.000000000 +0200 +++ new/cli-2.40.9/src/preprocess/preprocess.go 2025-05-19 16:52:09.000000000 +0200 @@ -145,7 +145,7 @@ embeddedString, _, _, err := utils.ReadStringFromUTF16Binary(binFilePath, startMarker, endMarker) if err != nil { utils.PrintWarning(fmt.Sprintf("Could not process %s: %v", binFilePath, err)) - utils.PrintInfo("If above warning says 'could not find start marker', you can safely ignore that error. It's for the future spotify release that might add xpui to the snapshot.") + utils.PrintInfo("If above warning says 'could not find start marker', you can safely ignore that error if you're on Spotify 1.2.63 or lower. However, if you're on 1.2.64 or higher, please report this issue") continue } @@ -215,7 +215,12 @@ content = exposeAPIs_vendor(content, printPatch) } - content = exposeGraphQL(content, printPatch) + if spotifyMajor >= 1 && spotifyMinor >= 2 && (spotifyPatch >= 28 && spotifyPatch <= 57) { + utils.ReplaceOnce(&content, `(typeName\])`, func(submatches ...string) string { + return fmt.Sprintf(`%s || []`, submatches[1]) + }) + } + content = additionalPatches(content, printPatch) } printPatch("CSS (JS): Patching our mappings into file") for k, v := range cssTranslationMap { @@ -239,7 +244,7 @@ printPatch("Remove RTL") content = removeRTL(content) } - if fileName == "xpui.css" { + if fileName == "xpui.css" || fileName == "xpui-snapshot.css" { printPatch("Extra CSS Patch") content = content + ` .main-gridContainer-fixedWidth{grid-template-columns: repeat(auto-fill, var(--column-width));width: calc((var(--column-count) - 1) * var(--grid-gap)) + var(--column-count) * var(--column-width));}.main-cardImage-imageWrapper{background-color: var(--card-color, #333);border-radius: 6px;-webkit-box-shadow: 0 8px 24px rgba(0, 0, 0, .5);box-shadow: 0 8px 24px rgba(0, 0, 0, .5);padding-bottom: 100%;position: relative;width:100%;}.main-cardImage-image,.main-card-imagePlaceholder{height: 100%;left: 0;position: absolute;top: 0;width: 100%};.main-content-view{height:100%;} @@ -798,7 +803,7 @@ return applyPatches(input, rtlPatches) } -func exposeGraphQL(input string, report logPatch) string { +func additionalPatches(input string, report logPatch) string { graphQLPatches := []Patch{ { Name: "GraphQL definitions (<=1.2.30)", @@ -820,7 +825,7 @@ } func exposeAPIs_main(input string, report logPatch) string { - inputContextMenu := utils.FindFirstMatch(input, `.*value:"contextmenu"`) + inputContextMenu := utils.FindFirstMatch(input, `.*(?:value:"contextmenu"|"[^"]*":"context-menu")`) if len(inputContextMenu) > 0 { croppedInput := inputContextMenu[0] react := utils.FindLastMatch(croppedInput, `([a-zA-Z_\$][\w\$]*)\.useRef`)[1] @@ -841,7 +846,7 @@ target = "e.triggerRef" } - utils.Replace(&input, `\(0,([\w_$]+)\.jsx\)\([\w_$]+\.[\w_$]+,\{value:"contextmenu"[^\}]+\}\)\}\)`, func(submatches ...string) string { + utils.Replace(&input, `\(0,([\w_$]+)\.jsx\)\((?:[\w_$]+\.[\w_$]+,\{value:"contextmenu"[^}]+\}\)\}\)|"[\w-]+",\{[^}]+:"context-menu"[^}]+\}\))`, func(submatches ...string) string { return fmt.Sprintf("(0,%s.jsx)((Spicetify.ContextMenuV2._context||(Spicetify.ContextMenuV2._context=%s.createContext(null))).Provider,{value:{props:%s?.props,trigger:%s,target:%s},children:%s})", submatches[1], react, menu, trigger, target, submatches[0]) }) } ++++++ cli.obsinfo ++++++ --- /var/tmp/diff_new_pack.qDaNwc/_old 2025-05-20 09:40:35.828024384 +0200 +++ /var/tmp/diff_new_pack.qDaNwc/_new 2025-05-20 09:40:35.832024555 +0200 @@ -1,5 +1,5 @@ name: cli -version: 2.40.7 -mtime: 1746893139 -commit: 68f41d51303ed690e2fb0cf077350ffc512080d8 +version: 2.40.9 +mtime: 1747666329 +commit: d66dff6f9e4f027802252be0146337fa3fedb37d ++++++ vendor.tar.gz ++++++
