gitextract_ctpw5b9v/ ├── .devcontainer/ │ └── devcontainer.json ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ └── feature_request.yml │ └── workflows/ │ ├── build.yml │ ├── dependency-review.yml │ ├── pr-build-artifacts.yml │ ├── reviewdog.yml │ ├── winget-cla.yml │ └── winget-submission.yml ├── .gitignore ├── .npmrc ├── .prettierrc ├── .vscode/ │ └── launch.json ├── README.md ├── assets/ │ ├── error.html │ ├── generated/ │ │ └── icons/ │ │ └── mac/ │ │ └── icon.icon/ │ │ └── icon.json │ └── mdui.css ├── changelog.md ├── electron-builder.yml ├── electron.vite.config.mts ├── eslint.config.mjs ├── license ├── package.json ├── patches/ │ ├── @malept__flatpak-bundler@0.4.0.patch │ ├── electron-is@3.0.0.patch │ ├── file-type@16.5.4.patch │ ├── kuromoji@0.1.2.patch │ ├── mdui@2.1.4.patch │ └── vudio@2.1.1.patch ├── renovate.json ├── src/ │ ├── config/ │ │ ├── defaults.ts │ │ ├── index.ts │ │ ├── plugins.ts │ │ └── store.ts │ ├── custom-electron-prompt.d.ts │ ├── i18n/ │ │ ├── index.ts │ │ └── resources/ │ │ ├── @types/ │ │ │ └── index.ts │ │ ├── ar.json │ │ ├── az.json │ │ ├── be.json │ │ ├── bg.json │ │ ├── bn.json │ │ ├── bs.json │ │ ├── ca.json │ │ ├── cs.json │ │ ├── da.json │ │ ├── de.json │ │ ├── el.json │ │ ├── en.json │ │ ├── es.json │ │ ├── et.json │ │ ├── eu.json │ │ ├── fa.json │ │ ├── fi.json │ │ ├── fil.json │ │ ├── fr.json │ │ ├── gl.json │ │ ├── he.json │ │ ├── hi.json │ │ ├── hr.json │ │ ├── hu.json │ │ ├── id.json │ │ ├── is.json │ │ ├── it.json │ │ ├── ja.json │ │ ├── ka.json │ │ ├── kmr.json │ │ ├── kn.json │ │ ├── ko.json │ │ ├── lt.json │ │ ├── lv.json │ │ ├── ml.json │ │ ├── ms.json │ │ ├── nb.json │ │ ├── ne.json │ │ ├── nl.json │ │ ├── pl.json │ │ ├── pt-BR.json │ │ ├── pt.json │ │ ├── qu.json │ │ ├── ro.json │ │ ├── ru.json │ │ ├── sah.json │ │ ├── si.json │ │ ├── sk.json │ │ ├── sl.json │ │ ├── sq.json │ │ ├── sr.json │ │ ├── sv.json │ │ ├── ta.json │ │ ├── te.json │ │ ├── th.json │ │ ├── tr.json │ │ ├── uk.json │ │ ├── ur.json │ │ ├── vi.json │ │ ├── zh-CN.json │ │ └── zh-TW.json │ ├── index.html │ ├── index.ts │ ├── loader/ │ │ ├── main.ts │ │ ├── menu.ts │ │ ├── preload.ts │ │ └── renderer.ts │ ├── menu.ts │ ├── music-player.css │ ├── navigation.d.ts │ ├── pear-desktop.ts │ ├── plugins/ │ │ ├── album-actions/ │ │ │ ├── index.tsx │ │ │ └── templates/ │ │ │ ├── dislike-button.tsx │ │ │ ├── index.ts │ │ │ ├── like-button.tsx │ │ │ ├── undislike-button.tsx │ │ │ └── unlike-button.tsx │ │ ├── album-color-theme/ │ │ │ ├── index.ts │ │ │ └── style.css │ │ ├── ambient-mode/ │ │ │ ├── index.ts │ │ │ ├── menu.ts │ │ │ ├── style.css │ │ │ └── types.ts │ │ ├── amuse/ │ │ │ ├── backend.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── api-server/ │ │ │ ├── backend/ │ │ │ │ ├── api-version.ts │ │ │ │ ├── index.ts │ │ │ │ ├── main.ts │ │ │ │ ├── routes/ │ │ │ │ │ ├── auth.ts │ │ │ │ │ ├── control.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── websocket.ts │ │ │ │ ├── scheme/ │ │ │ │ │ ├── auth.ts │ │ │ │ │ ├── go-back.ts │ │ │ │ │ ├── go-forward.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── queue.ts │ │ │ │ │ ├── search.ts │ │ │ │ │ ├── seek.ts │ │ │ │ │ ├── set-fullscreen.ts │ │ │ │ │ ├── set-volume.ts │ │ │ │ │ ├── song-info.ts │ │ │ │ │ └── switch-repeat.ts │ │ │ │ └── types.ts │ │ │ ├── config.ts │ │ │ ├── index.ts │ │ │ └── menu.ts │ │ ├── audio-compressor.ts │ │ ├── auth-proxy-adapter/ │ │ │ ├── backend/ │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── config.ts │ │ │ ├── index.ts │ │ │ └── menu.ts │ │ ├── blur-nav-bar/ │ │ │ ├── index.ts │ │ │ └── style.css │ │ ├── captions-selector/ │ │ │ ├── back.ts │ │ │ ├── index.ts │ │ │ ├── renderer.tsx │ │ │ └── templates/ │ │ │ └── captions-settings-template.tsx │ │ ├── clock/ │ │ │ ├── index.tsx │ │ │ ├── style.css │ │ │ └── types.ts │ │ ├── compact-sidebar/ │ │ │ └── index.ts │ │ ├── crossfade/ │ │ │ ├── fader.ts │ │ │ └── index.ts │ │ ├── custom-output-device/ │ │ │ ├── index.ts │ │ │ └── renderer.ts │ │ ├── disable-autoplay/ │ │ │ └── index.ts │ │ ├── discord/ │ │ │ ├── constants.ts │ │ │ ├── discord-service.ts │ │ │ ├── index.ts │ │ │ ├── main.ts │ │ │ ├── menu.ts │ │ │ ├── timer-manager.ts │ │ │ └── utils.ts │ │ ├── downloader/ │ │ │ ├── index.ts │ │ │ ├── main/ │ │ │ │ ├── index.ts │ │ │ │ └── utils.ts │ │ │ ├── menu.ts │ │ │ ├── renderer.tsx │ │ │ ├── style.css │ │ │ ├── templates/ │ │ │ │ └── download.tsx │ │ │ └── types.ts │ │ ├── equalizer/ │ │ │ ├── index.ts │ │ │ └── presets.ts │ │ ├── exponential-volume/ │ │ │ └── index.ts │ │ ├── in-app-menu/ │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── main.ts │ │ │ ├── menu.ts │ │ │ ├── renderer/ │ │ │ │ ├── IconButton.tsx │ │ │ │ ├── MenuButton.tsx │ │ │ │ ├── Panel.tsx │ │ │ │ ├── PanelItem.tsx │ │ │ │ ├── TitleBar.tsx │ │ │ │ └── WindowController.tsx │ │ │ ├── renderer.tsx │ │ │ └── titlebar.css │ │ ├── lumiastream/ │ │ │ └── index.ts │ │ ├── music-together/ │ │ │ ├── connection.ts │ │ │ ├── element.ts │ │ │ ├── index.ts │ │ │ ├── queue/ │ │ │ │ ├── client.ts │ │ │ │ ├── index.ts │ │ │ │ ├── queue.ts │ │ │ │ ├── sha1hash.ts │ │ │ │ ├── song.ts │ │ │ │ └── utils.ts │ │ │ ├── style.css │ │ │ ├── templates/ │ │ │ │ ├── item.html │ │ │ │ ├── popup.html │ │ │ │ ├── setting.html │ │ │ │ └── status.html │ │ │ ├── types.ts │ │ │ └── ui/ │ │ │ ├── guest.ts │ │ │ ├── host.ts │ │ │ ├── setting.ts │ │ │ └── status.ts │ │ ├── navigation/ │ │ │ └── index.tsx │ │ ├── notifications/ │ │ │ ├── index.ts │ │ │ ├── interactive.ts │ │ │ ├── main.ts │ │ │ ├── menu.ts │ │ │ └── utils.ts │ │ ├── performance-improvement/ │ │ │ ├── index.ts │ │ │ └── scripts/ │ │ │ ├── cpu-tamer/ │ │ │ │ ├── cpu-tamer-by-animationframe.d.ts │ │ │ │ ├── cpu-tamer-by-animationframe.js │ │ │ │ ├── cpu-tamer-by-dom-mutation.d.ts │ │ │ │ ├── cpu-tamer-by-dom-mutation.js │ │ │ │ └── index.ts │ │ │ └── rm3/ │ │ │ ├── index.ts │ │ │ ├── rm3.d.ts │ │ │ └── rm3.js │ │ ├── picture-in-picture/ │ │ │ ├── index.ts │ │ │ ├── keyboardevent-from-electron-accelerator.d.ts │ │ │ ├── keyboardevents-areequal.d.ts │ │ │ ├── main.ts │ │ │ ├── menu.ts │ │ │ ├── renderer.tsx │ │ │ ├── style.css │ │ │ └── templates/ │ │ │ └── picture-in-picture-button.tsx │ │ ├── playback-speed/ │ │ │ ├── components/ │ │ │ │ └── slider.tsx │ │ │ ├── index.ts │ │ │ └── renderer.tsx │ │ ├── precise-volume/ │ │ │ ├── index.ts │ │ │ ├── override.ts │ │ │ ├── renderer.ts │ │ │ └── volume-hud.css │ │ ├── quality-changer/ │ │ │ ├── index.tsx │ │ │ └── templates/ │ │ │ └── quality-setting-button.tsx │ │ ├── scrobbler/ │ │ │ ├── index.ts │ │ │ ├── main.ts │ │ │ ├── menu.ts │ │ │ └── services/ │ │ │ ├── base.ts │ │ │ ├── lastfm.ts │ │ │ └── listenbrainz.ts │ │ ├── shortcuts/ │ │ │ ├── index.ts │ │ │ ├── main.ts │ │ │ ├── menu.ts │ │ │ ├── mpris-service.d.ts │ │ │ └── mpris.ts │ │ ├── skip-disliked-songs/ │ │ │ └── index.ts │ │ ├── skip-silences/ │ │ │ ├── index.ts │ │ │ └── renderer.ts │ │ ├── sponsorblock/ │ │ │ ├── index.ts │ │ │ ├── segments.ts │ │ │ ├── tests/ │ │ │ │ └── segments.test.js │ │ │ └── types.ts │ │ ├── synced-lyrics/ │ │ │ ├── backend.ts │ │ │ ├── index.ts │ │ │ ├── menu.ts │ │ │ ├── parsers/ │ │ │ │ ├── lrc.test.ts │ │ │ │ └── lrc.ts │ │ │ ├── providers/ │ │ │ │ ├── LRCLib.ts │ │ │ │ ├── LyricsGenius.ts │ │ │ │ ├── Megalobiz.ts │ │ │ │ ├── MusixMatch.ts │ │ │ │ ├── YTMusic.ts │ │ │ │ ├── index.ts │ │ │ │ └── renderer.ts │ │ │ ├── renderer/ │ │ │ │ ├── components/ │ │ │ │ │ ├── ErrorDisplay.tsx │ │ │ │ │ ├── LoadingKaomoji.tsx │ │ │ │ │ ├── LyricsPicker.tsx │ │ │ │ │ ├── NotFoundKaomoji.tsx │ │ │ │ │ ├── PlainLyrics.tsx │ │ │ │ │ ├── SyncedLine.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── renderer.tsx │ │ │ │ ├── store.ts │ │ │ │ └── utils.tsx │ │ │ ├── style.css │ │ │ └── types.ts │ │ ├── taskbar-mediacontrol/ │ │ │ └── index.ts │ │ ├── touchbar/ │ │ │ └── index.ts │ │ ├── transparent-player/ │ │ │ ├── index.ts │ │ │ ├── style.css │ │ │ └── types.ts │ │ ├── tuna-obs/ │ │ │ └── index.ts │ │ ├── unobtrusive-player/ │ │ │ ├── index.ts │ │ │ └── style.css │ │ ├── utils/ │ │ │ ├── common/ │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── main/ │ │ │ │ ├── css.ts │ │ │ │ ├── fetch.ts │ │ │ │ ├── fs.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ └── renderer/ │ │ │ ├── check.ts │ │ │ ├── html.ts │ │ │ └── index.ts │ │ ├── video-toggle/ │ │ │ ├── button-switcher.css │ │ │ ├── force-hide.css │ │ │ ├── index.tsx │ │ │ └── templates/ │ │ │ └── video-switch-button.tsx │ │ └── visualizer/ │ │ ├── butterchurn.d.ts │ │ ├── empty-player.css │ │ ├── index.ts │ │ ├── visualizers/ │ │ │ ├── butterchurn.ts │ │ │ ├── index.ts │ │ │ ├── visualizer.ts │ │ │ ├── vudio.ts │ │ │ └── wave.ts │ │ └── vudio.d.ts │ ├── preload.ts │ ├── providers/ │ │ ├── app-controls.ts │ │ ├── decorators.ts │ │ ├── dom-elements.ts │ │ ├── extracted-data.ts │ │ ├── prompt-options.ts │ │ ├── protocol-handler.ts │ │ ├── song-controls.ts │ │ ├── song-info-front.ts │ │ └── song-info.ts │ ├── renderer.ts │ ├── reset.d.ts │ ├── solit.tsx │ ├── tray.ts │ ├── ts-declarations/ │ │ ├── kuroshiro-analyzer-kuromoji.d.ts │ │ └── kuroshiro.d.ts │ ├── types/ │ │ ├── contexts.ts │ │ ├── datahost-get-state.ts │ │ ├── get-player-response.ts │ │ ├── icons.ts │ │ ├── media-icons.ts │ │ ├── music-player-app-element.ts │ │ ├── music-player-desktop-internal.ts │ │ ├── music-player.ts │ │ ├── player-api-events.ts │ │ ├── plugins.ts │ │ ├── queue.ts │ │ ├── search-box-element.ts │ │ ├── video-data-changed.ts │ │ └── video-details.ts │ ├── utils/ │ │ ├── custom-element.ts │ │ ├── index.ts │ │ ├── testing.ts │ │ ├── trusted-types.ts │ │ ├── type-utils.ts │ │ └── wait-for-element.ts │ ├── virtual-module.d.ts │ └── yt-web-components.d.ts ├── tests/ │ └── index.test.js ├── tsconfig.json ├── tsconfig.test.json └── vite-plugins/ ├── i18n-importer.mts ├── plugin-importer.mts └── plugin-loader.mts