Review of "Spotify Lyrics Ext" version 1

Details Page Preview

Displays synchronized lyrics, track duration, and live audio stream metrics for Spotify in the top bar. Improvements & Features: * Accurate Lyrics Finder: LRCLIB search with ±5s duration drift matching and closest-duration sorting * Resilient Retry Polling: Staggered backup retries (1s, 3s, 6s, 12s up to 30s) gracefully handle transient API 503/network errors for every song * Added Quality Inspector: Zero-debug stream bitrate & payload calculation directly from active Spotify cache via Linux /proc * Scrolling Animation: Right-to-left slide transition from title to lyrics, smooth vertical rolling between lines * Live Duration & Bitrate: Shows track duration, measured bitrate, and stream size in the menu * Clean Panel Presence: Automatically appears only when Spotify is running

Extension Homepage
https://github.com/devic1/Spotline-with-quality-sync

No comments.

FAQ

Files

Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.

Shexli (experimental) warning 3

Shexli found 3 issues that may need reviewer attention.

EGO-X-004 warning

extensions should avoid synchronous file IO in shell code

Shell code should avoid synchronous file IO APIs like `GLib.file_get_contents()` and `Gio.File.load_contents()`.

File Operations

  • extension.js:43
    GLib.file_get_contents(`/proc/${pid}/fdinfo/${fd}`)

EGO-X-002 warning

extensions should not use synchronous subprocess APIs in shell code

Shell code should avoid synchronous subprocess APIs like `GLib.spawn_command_line_sync()` and `GLib.spawn_sync()`.

Complete Examples

  • extension.js:57
    GLib.spawn_command_line_sync(`pgrep -u ${username} -x spotify`)
  • extension.js:59
    GLib.spawn_command_line_sync(`pgrep -u ${username} -f usr/share/spotify/spotify`)

EGO-L-007 warning

main loop sources should be removed before being recreated

Main loop sources should be removed before creating a new source on the same field.

Remove main loop sources

  • extension.js:444
                this._qualitySampleTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 1000, () => {
                    this._qualitySampleTimeoutId = null;
    
                    // Make sure track didn't change while waiting
                    if (!this._currentTrack || this._currentTrack.title !== trackTitle) {
    

All Versions

Version Status
1 Unreviewed

Previous Reviews on this Version

devic1 posted a review
devic1 posted a review