spicetify / spicetify/cli

[Major release] Spicetify v3

Open
#3,038 0 comments 22 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
JavaScript
Stars
24.6k
Forks
941
Avg merge
11h 31m
Merged PRs (30d)
24

Description

V3 comes with a major architectural shift, with goals of correctness and robustness.

📝 Provide a description of the new feature

V3 splits the project into a CLI/TUI, hooks, and modules:

  • The CLI will have built-in support for installing modules from GitHub URLs, a URI handler, and a daemon service. The CLI will only be responsible for extracting xpui.spa, setting up symlinks from xpui to spicetify's config folder, and patching index.html to load the hooks. The CLI is as minimally intrusive as possible.

  • The hooks are the first javascript that runs on the client, they mainly patch the webpack loading mechanism to allow runtime injections and transformations on the source files. They're also responsible for loading the modules after ensuring that all their versioned dependencies are met and have been loaded.

The CLI and the hooks are assumed to be universal, they should work on all Spotify versions.

  • Modules are the generalization of jsWrappers, extensions, themes, custom apps, and snippets. Every module has a metadata.json, containing information about the module and entry points for js, css, and mixins. Modules are identified by a string, and can "depend" on (version ranges of) other modules.

Modules can also "depend" on specific version ranges of Spotify itself.
Modules (including custom apps) have a lifecycle and can be loaded and unloaded without refreshing the page.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by mapping the proposed CLI/TUI, hooks, and modules boundaries described in the issue, including the CLI responsibilities and the hooks' loading flow. Done would require an agreed and implemented V3 architecture covering module metadata, dependencies, lifecycle, and Spotify version compatibility; no files or tests are named.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
cli, frontend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.