Skip to content

Releases: spicetify/cli

spicetify v2 official release

15 May 12:58
294ba11
Compare
Choose a tag to compare

Release note

Spotify version 1.1.59 recently is rolled out for all users and it not longer contains legacy apps assets. If your Spotify is automatically upgraded and you wish to continue using legacy interface, downgrade using installer from third party source, then turn off auto-update. And you can continue to use spicetify v1.2.1 with community theme, extensions and custom apps support.

  • From v2.0, spicetify only supports new Spotify (v1.1.56 or later). Because of new design infrastructure, all themes made for legacy Spotify are incompatible and nothing I can do about it.

  • Elements and CSS class names are translated to readable and consistent form. You can start making new theme if you want to. Default theme "SpicetifyDefault" included in package consists of various color schemes, try them out and make your own.
    image

  • Spicetify APIs are mostly compatible with previous version. Please revise existing extensions and global.d.ts for updated documentation.

  • Default extensions include in package:

    • autoSkipExplicit.js: Auto skip explicit tracks. Turn on in profile menu.

    • autoSkipVideo.js: Auto skip videos

    • fullAppDisplay.js: Full app artwork display. Access display mode via icon on top bar.
      Right click while in display mode to open config menu. Double anywhere to close.

    • keyboardShortcut.js: Add a few convenient keyboard shortcut and Vim navigation mode (hit F)

    • loopyLoop.js: Loop over a portion of track. Right click at progress bar to open up menu.
      image

    • NEW popupLyrics.js: Picture-in-picture window displays lyrics.
      Click at microphone icon on top bar to open the window. Right click at same icon to open config menu.
      Turn off service that you're not comfortable to use or not available in your region. Swap their positions to priotise which service to try first.
      image

    • shuffle+.js: True shuffle with no bias.
      Right click at playlist/album/artist/podcast and choose "Play with Shuffle+".
      NEW You can turn on "Auto shuffle" to automatically play with shuffle+, no need to right click anymore. Just hit play button while browsing for playlists, albums, shows.
      NEW By default, Shuffle+ plays artist's top 10 tracks. Turn on "Shuffle artist discography" to play their entire album discography.
      image

    • trashbin.js: Throw artists and tracks to trash bin and never hear them ever again (automatically skip).
      Right click at artist or track and choose "Throw to Trashbin" in context menu. You can take them out of trash bin also via right click menu.

    • webnowplaying.js: Specifically made for Rainmeter community. Send track metadata and control player.

  • Custom app: it's still possible to make and inject custom app with spicetify. But app has to built from ground up and app developer has to be familiar with React JS.
    Previous version default app "reddit" and "genius-spicetify" are not possible to port over at the moment.

  • New config file name is "config-xpui.ini". Please run spicetify -c to know where it is.

To install, please follow instructions in wiki
If you already had spicetify before, please run spicetify upgrade.
Note: Windows user, please just use Powershell method. I don't have management over Choco and Scoop packages to update them right now.

v2.0.1

12 May 00:33
35a0ab6
Compare
Choose a tag to compare
v2.0.1 Pre-release
Pre-release

Fix

  • webnowplaying.js: Fix misspelt API name
  • popupLyrics.js credit

Previous release note: v2.0.0

To install, please use the same install script but annotate version parameter:
Windows:

Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/khanhas/spicetify-cli/master/install.ps1" -OutFile $env:TEMP\install.ps1
Invoke-Expression "$env:TEMP\install.ps1 2.0.1"

Linux/MacOS:

curl -fsSL https://raw.githubusercontent.com/khanhas/spicetify-cli/master/install.sh -o /tmp/install.sh
sh /tmp/install.sh 2.0.1

Initial support for XPUI

11 May 13:37
e6a9ab9
Compare
Choose a tag to compare
Pre-release

From v2.0.0, Spicetify solely works on XPUI interface only and is incompatible with legacy one. If you prefer legacy Spotify with fully themes, extensions, custom app support, please use Spicetify v1.2.1. This version is still experimental and there are a lot of work in progress:

  • Spicetify APIs are mostly implemented and are somewhat compatible with previous version. There are a few important changes you should know:

    • Spicetify.CosmosAPI is replaced with Spicetify.CosmosAsync. Please take a look at existing extensions and documentation in global.d.ts file to know how to use and modify your extensions accordingly.
    • Spicetify.ContextMenu is partly implemented, only Item is usable.
    • Spicetify.Menu is not implemented.
    • Spicetify.BridgeAPI, Spicetify.LiveAPI are deprecated.
    • Spicetify.getAblumArtColors is deprecated, please use Spicetify.colorExtractor instead.
    • Spicetify.PlaybackControl has completely new functions set. They are straight forward, easier to use and requires less parameters. Please revise global.d.ts for its new documentation.
  • New APIs:

    • Spicetify.Mousetrap: Keyboard shortcut library. Documentation: https://craig.is/killing/mice
    • Spicetify.Platform: Contains vast array of Spotify internal API, I don't have time to document them, please explore in devtool Console.
  • Elements class names are translated to more readable forms, hopefully they are consistent across versions. You can start working on your theme. But I have to remind you that your theme from legacy Spotify will not be compatible, hence you have to build new one from ground up.

  • Default extensions are partly working. Not working ones are temporarily removed, they are probably added later if I have time to update them.

  • Reddit app is removed. I haven't found a replacement for custom apps since new Spotify does not rely on iframe anymore.

  • New config file should locate at same place as your previous config file but its name now is config-xpui.ini

To install, please use the same install script but annotate version parameter:
Windows:

Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/khanhas/spicetify-cli/master/install.ps1" -OutFile $env:TEMP\install.ps1
Invoke-Expression "$env:TEMP\install.ps1 2.0.0"

Linux/MacOS:

curl -fsSL https://raw.githubusercontent.com/khanhas/spicetify-cli/master/install.sh -o /tmp/install.sh
sh /tmp/install.sh 2.0.0

v1.2.1

28 Feb 06:08
Compare
Choose a tag to compare

Fix

  • Lyrics app bug

Add

  • Provide binary package for MacOS ARM-64 platform (M1 chip)

v1.2.0

03 Feb 07:29
Compare
Choose a tag to compare

Add:

  • FullAppDisplay extension: Options to display album title, icons (thanks @JulienMaille), show all artists (@OlegWock) and switch to full screen mode (thanks @diegodalbosco).
    Full screen mode can be activate with hotkey F11 (thanks @mendelsimon).

  • NewReleases extension: Options to show podcast only and ignore all new release (thanks @yougotwill).

  • Shuffle+ extension: Support for nested folders (thanks @iurimateus).

  • Huge improvement on Vim mode of KeyboardShortcut extensions: Keystroke popups is positioned correctly, play buttons in album pages are now recognised (they used to be hidden and therefore unrecognized by the extension).

  • New extension LoopyLoop: File name: loopyLoop.js
    Provide ability to mark start and end points on progress bar and automatically loop over that track's portion.

image
To install, run:

spicetify config extensions loopyLoop.js
spicetify apply

Fix:

  • FullAppDisplay: Undefined artist bug (thanks @kion).

  • FullAppDisplay: Wrong song duration after skipping (thanks @LambArchie).

  • NewRelease: Fix issue when podacast wasn't marked as listened (thanks @OlegWock).

  • Clean up redundant code (thanks @bakesnake).

  • Automatically recognize new Windows Store Spotify location.

  • Stop color command proceeding when there is no theme configured.

  • Ignore fatal error from fetching new spicetify-cli release and proceed.

v1.1.0

06 Aug 14:39
Compare
Choose a tag to compare

Add:

  • Command upgrade: automatically fetch and upgrade spicetify to latest release.
  • Config setting check_spicetify_upgrade: notify user whenever there is new spicetify release.
    It's off by default so please run spicetify config check_spicetify_upgrade 1 to turn on.
  • XDG_CONFIG_HOME support for MacOS
  • Extension bookmark.js: Now store track context. When user open track link, they will be navigated to playlist/album context that track was played from. #233
  • Extension newRelease.js: Now show release type (Album/EP/Single/Episode) #247

Command backup and apply now work slightly faster thanks to goroutine implementation.

v1.0.2

07 Jul 11:20
Compare
Choose a tag to compare

Add:

  • API Spicetify.colorExtractor: More generic version of Spicetify.getAblumArtColor, it accepts all type of URI that have artwork (playlist, album, track, artist, show, ...)

Fix:

v1.0.1

06 Jul 13:39
Compare
Choose a tag to compare

Nothing changed from last release, I just forgot to push 2 last commits before making new release.
Changelog v1.0.0

v1.0.0

06 Jul 09:14
Compare
Choose a tag to compare

Add

  • Windows Store Spotify support: For users who have trouble installing normal Spotify version. If you are already using normal Spotify, there is no reason to install Windows Store Spotify because of this.

  • Disable Web UI permanently by default. Since Web UI is impossible to theme or expose API, I prevent it to load completely. If you are fell into A/B Testing group by Spotify, this spicetify update would revert you back to normal UI. Please run spicetify restore backup apply to apply the change.

  • Preprocess disable_upgrade_check: Prevent Spotify checking new version status and notifying visually. It is useful for users who deleted SpotifyMigrator.exe and SpotifyUpdate.exe to stop Spotify automatic update.

  • Live update: Automatically reload Spotify on change. Please add flag -l when running "watch":

spicetify watch -l
spicetify watch -e -l
  • Extension New Release: Aggregate all new releases from favorite artists, podcasts. Setting menu could be opened by right clicking at Bell icon. To install, please run:
spicetify config extensions newRelease.js
spicetify apply

image

  • Extension Bookmark: New version, no longer need companion custom app. To install, please run:
spicetify config extensions bookmark.js
spicetify apply

image

  • Extension Full App Display: Minimal album cover art display with beautiful blur effect background. To install, please run:
spicetify config extensions fullAppDisplay.js
spicetify apply

Activating button locates in top bar. While in display mode, double click anywhere to exit. Right click anywhere to open setting menu.

image

  • Config spotify_launch_flags: Specify commandline flags to launch/restart Spotify. Separate flags by | character.
[Setting]
...
spotify_launch_flags = --transparent-window-controls | --remote-debugging-port=9222
  • Javascript module path mapping: While developing extension as JS module, we had to specify path to compiled, transpiled JS file that is compatible with browser. Although it works completely fine in Spotify browser, it's hard for IDE like VSCode to know what does module contain and suggest developers usable functions or classes. So I added this niche little feature to automatically map package name to its correct path in final script. In your script, instead of using path to file like before, just use package name and add a comment before import line with this syntax for Spicetify to map it correctly. For example
import "./node_modules/match-sorter/dist/match-sorter.umd.js";

to

//spicetify_map{matchSorter from "match-sorter"}{"./node_modules/match-sorter/dist/match-sorter.umd.min.js"}
import matchSorter from "match-sorter";

Fix

#223
#226

Remove

  • Custom app Bookmark: No long needed.

v0.9.9

03 May 10:04
Compare
Choose a tag to compare

Add

  • Support custom colour key in color.ini:
    Example:
    In my color.ini, I make a new key header_bg with value FF0000 under Base color scheme:
[Base]
main_fg                               = FE6F61
secondary_fg                          = 3D3D3D
main_bg                               = FAFAFA
...
header_bg = FF0000

Then in user.css, CSS variable --modspotify_header_bg will be available to use:

.glue-page-header__full-description-overlay {
	background-color: var(--modspotify_header_bg) !important;
}
  • API Spicetify.Abba: Fetch and overrides your A/B test flags. Documentation.

  • Command-line flag -n or --no-restart: Tell spicetify to not restart your Spotify client after finishing apply or restore command.

Update

  • Exposed Spicetify to window.Spicetify: When making custom apps, you can access Spicetify API via window.top.Spicetify.

Fix

  • Spicetify.Menu had cleaner injection. Items won't show up on other popup menus beside profile menu.
  • PLAYLIST_V2 not supported error in shuffle+.js

I just added integration with Musixmatch for my genius-spicetify app. Try it out if you want to have synced lyric to sing along: https://github.com/khanhas/genius-spicetify