{"repo":"nukeop/nuclear","free":true,"listed":false,"github":"https://github.com/nukeop/nuclear","clone":"git clone https://github.com/nukeop/nuclear.git","description":"Streaming music player that finds free music for you","language":"TypeScript","stars":18291,"topics":["agent","ai","desktop-app","linux","mac","mcp","mcp-server","music","music-player","react","rust","spotify","streaming","tauri","typescript","windows"],"license":"AGPL-3.0","category":"media_platform","readme_excerpt":"<p align=\"center\">\n  <picture>\n    <source alt=\"Nuclear Music Player\"  srcset=\"packages/docs/.gitbook/assets/readme-banner.png\">\n    <img alt=\"Nuclear Music Player\"  srcset=\"packages/docs/.gitbook/assets/readme-banner.png\">\n  </picture>\n\n\n</p>\n\n<div align=\"center\">\n\n# Nuclear \n\n</div>\n\n<div align=\"center\">\n\n  Nuclear is a free, open-source music player without ads or tracking. Search for any song or artist, build playlists, and start listening.<br>\n  Runs on Windows, macOS, and Linux.\n  \n</div>\n\n## Screenshots\n\n<p align=\"center\">\n  <img src=\"packages/docs/.gitbook/assets/dashboard-main.png\" alt=\"Nuclear Music Player - Dashboard\" width=\"100%\">\n</p>\n\nNuclear comes with multiple built-in themes:\n\n<p align=\"center\">\n  <img src=\"packages/docs/.gitbook/assets/dashboard-green.png\" alt=\"Green theme\" width=\"32%\">\n  <img src=\"packages/docs/.gitbook/assets/dashboard-aqua.png\" alt=\"Aqua theme\" width=\"32%\">\n  <img src=\"packages/docs/.gitbook/assets/dashboard-mint.png\" alt=\"Mint theme\" width=\"32%\">\n</p>\n<p align=\"center\">\n  <img src=\"packages/docs/.gitbook/assets/dashboard-orange.png\" alt=\"Orange theme\" width=\"32%\">\n  <img src=\"packages/docs/.gitbook/assets/dashboard-red.png\" alt=\"Red theme\" width=\"32%\">\n  <img src=\"packages/docs/.gitbook/assets/dashboard-violet.png\" alt=\"Violet theme\" width=\"32%\">\n</p>\n\n| | |\n|:---:|:---:|\n| ![Search artists](packages/docs/.gitbook/assets/search-artists.png) | ![Search albums](packages/docs/.gitbook/assets/search-albums.png) |\n| Artist search | Album search |\n| ![Playlists](packages/docs/.gitbook/assets/playlists.png) | ![Plugin store](packages/docs/.gitbook/assets/plugin-store.png) |\n| Playlists | Plugin store |\n| ![Installed plugins](packages/docs/.gitbook/assets/installed-plugins.png) | ![Preferences](packages/docs/.gitbook/assets/preferences.png) |\n| Installed plugins | Preferences |\n| ![What's new](packages/docs/.gitbook/assets/whats-new.png) | ![Log viewer](packages/docs/.gitbook/assets/log-viewer.png) |\n| What's new | Log viewer |\n\n## Download\n\nGrab the latest release for your platform from the [Releases page](https://github.com/nukeop/nuclear/releases).\n\n| Platform | Formats |\n|----------|---------|\n| Windows | `.exe` installer, `.msi` |\n| macOS | `.dmg` (Apple Silicon and Intel) |\n| Linux | `.AppImage`, `.deb`, `.rpm`, `.flatpak` |\n\n## Features\n\n- Search for music and stream it from any source\n- Browse artist pages with biographies, discographies, and similar artists\n- Browse album pages with track listings\n- Queue management with shuffle, repeat, and drag-and-drop reordering\n- Favorites (albums, artists, and tracks)\n- Playlists (create, import, export, import from varous services)\n- Powerful plugin system with a built-in plugin store\n- Themes (built-in and custom CSS themes)\n- MCP server lets your AI agent drive the player\n- Auto-updates\n- Keyboard shortcuts\n- Localized in multiple languages\n\n## Plugins\n\nNuclear has a powerful plugin system now! Every functionality has been redesigned to be driven by plugins.\n\nPlugins can provide streaming sources, metadata, playlists, dashboard content, and more. Browse and install plugins from the built-in plugin store, or write your own using the [@nuclearplayer/plugin-sdk](https://www.npmjs.com/package/@nuclearplayer/plugin-sdk).\n\n## MCP\n\nYou can enable the MCP server in Settings → Integrations.\n\nThen to add it to **Claude Code:**\n\n```bash\nclaude mcp add nuclear --transport http http://127.0.0.1:8800/mcp\n```\n\n**Codex CLI:**\n\n```bash\ncodex mcp add nuclear --url http://127.0.0.1:8800/mcp\n```\n\n**OpenCode:**\n\n```json\n{\n  \"mcp\": {\n    \"nuclear\": {\n      \"type\": \"remote\",\n      \"url\": \"http://127.0.0.1:8800/mcp\"\n    }\n  }\n}\n```\n\n**Claude Desktop / Cursor / Windsurf:**\n\n```json\n{\n  \"mcpServers\": {\n    \"nuclear\": {\n      \"url\": \"http://127.0.0.1:8800/mcp\"\n    }\n  }\n}\n```\n\nThe MCP is designed to be discoverable, but there's a skill you can load to get your AI up to speed: [Nuclear MCP Skill](./packages/docs/public/skills/nuclear-mcp.zip)\n\n## Development\n\nNuclear is a pnpm monorepo managed with Turborepo. The main app is built with Tauri (Rust + React).\n\n### Prerequisites\n\n- Node.js >= 22\n- pnpm >= 9\n- Rust (stable)\n- Platform-specific Tauri dependencies ([see Tauri docs](https://v2.tauri.app/start/prerequisites/))\n\n### Getting started\n\n```bash\ngit clone https://github.com/nukeop/nuclear.git\ncd nuclear\npnpm install\npnpm dev\n```\n\n### Useful commands\n\n```bash\npnpm dev            # Run the player in dev mode\npnpm dev:remote     # Same, but binds Vite to 0.0.0.0 so you can open the remote control UI from other devices on your LAN\npnpm build          # Build all packages\npnpm test           # Run all tests\npnpm lint           # Lint all packages\npnpm type-check     # TypeScript checks\npnpm storybook      # Run Storybook\n```\n\n## Community\n\n- [Discord](https://discord.gg/JqPjKxE)\n- [Mastodon](https://fosstodon.org/@nuclearplayer)\n- [Discussions](https://github.com/nukeop/nuclear/discussions)\n\n## License\n\nAGPL-3.0. See [LICENSE](LICENSE).\n","default_branch":"master","files":1354,"tree":[".agents/skills/creating-components/SKILL.md",".agents/skills/host-pattern/SKILL.md",".agents/skills/writing-docs/SKILL.md",".agents/skills/writing-plugins/SKILL.md",".gitattributes",".github/FUNDING.yml",".github/ISSUE_TEMPLATE/config.yml",".github/PULL_REQUEST_TEMPLATE/default.md",".github/copilot-instructions.md",".github/scripts/close-external-issue.cjs",".github/scripts/close-external-pr.cjs",".github/workflows/ci.yml",".github/workflows/close-external-issues.yml",".github/workflows/close-external-prs.yml",".github/workflows/coverage.yml",".github/workflows/deploy-website.yml",".github/workflows/release-player.yml",".github/workflows/release-plugin-sdk.yml",".github/workflows/release-snap.yml",".github/workflows/update-aur.yml",".github/workflows/update-flathub.yml",".github/workflows/update-winget.yml",".gitignore",".husky/pre-commit",".node-version",".prettierignore",".vscode/settings.json","AGENTS.md","CONTRIBUTING.md","LICENSE","README.md","aur/nuclear-player-bin/PKGBUILD.template","aur/update-aur.sh","codecov.yml","crowdin.yml","eslint.config.ts","flatpak/com.nuclearplayer.Nuclear.yml","flatpak/com.nuclearplayer.Nuclear.yml.template","flatpak/generate-sources.sh","flatpak/icons/128x128.png","flatpak/icons/256x256.png","flatpak/icons/32x32.png","flatpak/icons/512x512.png","flatpak/icons/64x64.png","flatpak/update-flathub.sh","package.json","packages/docs/.gitbook.yaml","packages/docs/.gitbook/assets/album.png","packages/docs/.gitbook/assets/app-layout-overview.png","packages/docs/.gitbook/assets/applied-store-theme.png","packages/docs/.gitbook/assets/dashboard-aqua.png","packages/docs/.gitbook/assets/dashboard-green.png","packages/docs/.gitbook/assets/dashboard-main.png","packages/docs/.gitbook/assets/dashboard-mint.png","packages/docs/.gitbook/assets/dashboard-orange.png","packages/docs/.gitbook/assets/dashboard-red.png","packages/docs/.gitbook/assets/dashboard-violet.png","packages/docs/.gitbook/assets/installed-plugins.png","packages/docs/.gitbook/assets/jam-qr-button.png","packages/docs/.gitbook/assets/jam-qr-popover.png","packages/docs/.gitbook/assets/jam-queue-remove.png","packages/docs/.gitbook/assets/jam-remote.png","packages/docs/.gitbook/assets/jam-search.png","packages/docs/.gitbook/assets/jam-settings.png","packages/docs/.gitbook/assets/log-viewer.png","packages/docs/.gitbook/assets/my-themes.png","packages/docs/.gitbook/assets/nuclear-mcp.zip","packages/docs/.gitbook/assets/playlist-detail-view.png","packages/docs/.gitbook/assets/playlists.png","packages/docs/.gitbook/assets/plugin-store.png","packages/docs/.gitbook/assets/preferences.png","packages/docs/.gitbook/assets/queue-panel.png","packages/docs/.gitbook/assets/readme-banner.png","packages/docs/.gitbook/assets/search-albums.png","packages/docs/.gitbook/assets/search-artists.png","packages/docs/.gitbook/assets/search-tracks.png","packages/docs/.gitbook/assets/sources-view.png","packages/docs/.gitbook/assets/theme store.png","packages/docs/.gitbook/assets/theme-store.png","packages/docs/.gitbook/assets/track-context-menu.png","packages/docs/.gitbook/assets/whats-new.png","packages/docs/README.md","packages/docs/SUMMARY.md","packages/docs/core-concepts/favorites.md","packages/docs/core-concepts/how-nuclear-works.md","packages/docs/core-concepts/listening-history.md","packages/docs/core-concepts/listening-stats.md","packages/docs/core-concepts/playlists.md","packages/docs/core-concepts/plugins-and-providers.md","packages/docs/core-concepts/the-queue.md","packages/docs/development/contributing.md","packages/docs/development/host-pattern.md","packages/docs/development/logging.md","packages/docs/development/mcp-architecture.md","packages/docs/integrations/http-api.md","packages/docs/integrations/mcp-server.md","packages/docs/integrations/mpd-server.md","packages/docs/misc/discovery.md","packages/docs/misc/keyboard-shortcuts.md","packages/docs/misc/platform-specific.md","packages/docs/package.json","packages/docs/plugins/dashboard.md","packages/docs/plugins/discovery.md","packages/docs/plugins/events.md","packages/docs/plugins/favorites.md","packages/docs/plugins/getting-started.md","packages/docs/plugins/http.md","packages/docs/plugins/logger.md","packages/docs/plugins/metadata.md","packages/docs/plugins/playback.md","packages/docs/plugins/playlists.md","packages/docs/plugins/plugin-store.md","packages/docs/plugins/plugin-system.md","packages/docs/plugins/providers.md","packages/docs/plugins/publishing.md","packages/docs/plugins/queue.md","packages/docs/plugins/settings.md","packages/docs/plugins/shell.md","packages/docs/plugins/streaming.md","packages/docs/plugins/ytdlp.md","packages/docs/themes/theme-store.md","packages/docs/themes/themes-advanced.md","packages/docs/themes/themes-basic.md","packages/docs/themes/themes.md","packages/docs/user-manual/getting-started.md","packages/docs/user-manual/installation.md","packages/docs/user-manual/remote-control.md","packages/eslint-config/eslint.config.ts","packages/eslint-config/package.json","packages/eslint-config/tsconfig.json","packages/hifi/package.json","packages/hifi/src/CrossfadeSound.tsx","packages/hifi/src/LoggerProvider.ts","packages/hifi/src/Oscilloscope.tsx","packages/hifi/src/Sound.tsx","packages/hifi/src/SoundError.ts","packages/hifi/src/fmp4/BinaryReader.test.ts","packages/hifi/src/fmp4/BinaryReader.ts","packages/hifi/src/fmp4/BufferOperationQueue.ts","packages/hifi/src/fmp4/FetchBackoff.ts","packages/hifi/src/fmp4/GapJumpController.test.ts","packages/hifi/src/fmp4/GapJumpController.ts","packages/hifi/src/fmp4/MediaSourceAttachment.ts","packages/hifi/src/fmp4/MseBackend.ts","packages/hifi/src/fmp4/MseController.test-fixture.ts","packages/hifi/src/fmp4/MseController.test.ts","packages/hifi/src/fmp4/MseController.ts","packages/hifi/src/fmp4/MseSession.ts","packages/hifi/src/fmp4/RetryPolicy.ts","packages/hifi/src/fmp4/SegmentFetcher.ts","packages/hifi/src/fmp4/SegmentTimeline.ts","packages/hifi/src/fmp4/StallDetector.test.ts","packages/hifi/src/fmp4/StallDetector.ts","packages/hifi/src/fmp4/index.ts","packages/hifi/src/fmp4/mse-test-mocks.ts","packages/hifi/src/fmp4/openMseSession.ts","packages/hifi/src/fmp4/parser.test.ts","packages/hifi/src/fmp4/parser.ts","packages/hifi/src/hooks/useAudioContext.ts","packages/hifi/src/hooks/useAudioElementSource.ts","packages/hifi/src/hooks/useAudioEvents.ts","packages/hifi/src/hooks/useAudioLoader.ts","packages/hifi/src/hooks/useAudioSeek.ts","packages/hifi/src/hooks/useHlsSource.ts","packages/hifi/src/hooks/useMseSource.ts","packages/hifi/src/hooks/usePlaybackStatus.ts","packages/hifi/src/hooks/useStartPosition.ts","packages/hifi/src/index.ts","packages/hifi/src/pluginFactory.ts","packages/hifi/src/plugins/BiQuadFilter.tsx","packages/hifi/src/plugins/Destination.tsx","packages/hifi/src/plugins/Equalizer.tsx","packages/hifi/src/plugins/Stereo.tsx","packages/hifi/src/plugins/Volume.tsx","packages/hifi/src/test/BiQuadFilter.test.tsx","packages/hifi/src/test/CrossfadeSound.test.tsx","packages/hifi/src/test/Equalizer.test.tsx","packages/hifi/src/test/Oscilloscope.test.tsx","packages/hifi/src/test/Sound.test.tsx","packages/hifi/src/test/Stereo.test.tsx","packages/hifi/src/test/Volume.test.tsx","packages/hifi/src/test/__snapshots__/Oscilloscope.test.tsx.snap","packages/hifi/src/test/builders/Fmp4TrackBuilder.ts","packages/hifi/src/test/builders/boxes.ts","packages/hifi/src/test/fakes/FakeStreamServer.ts","packages/hifi/src/test/fixtures/fmp4Stream.ts","packages/hifi/src/test/mocks/mockLogger.ts","packages/hifi/src/test/pluginFactory.test.tsx","packages/hifi/src/test/setup.ts","packages/hifi/src/test/test-utils.ts","packages/hifi/src/test/useHlsSource.test.tsx","packages/hifi/src/types.ts","packages/hifi/src/utils/errorMessage.ts","packages/hifi/tsconfig.json","packages/hifi/vite.config.ts","packages/i18n/package.json","packages/i18n/src/i18n.ts","packages/i18n/src/index.ts","packages/i18n/src/locales/de_DE.json","packages/i18n/src/locales/en_US.json","packages/i18n/src/locales/es_ES.json","packages/i18n/src/locales/fr_FR.json","packages/i18n/src/locales/it_IT.json","packages/i18n/src/locales/ja_JP.json","packages/i18n/src/locales/pl_PL.json","packages/i18n/src/locales/pt_BR.json","packages/i18n/src/locales/ru_RU.json","packages/i18n/src/locales/zh_CN.json","packages/i18n/src/types.ts","packages/i18n/tsconfig.json","packages/i18n/vite.config.ts","packages/model/package.json","packages/model/src/artwork.test.ts","packages/model/src/artwork.ts","packages/model/src/index.ts","packages/model/src/playlists.ts","packages/model/src/queue.ts","packages/model/src/schemas/index.ts","packages/model/src/schemas/parseLegacyDuration.ts","packages/model/src/schemas/playlists.ts","packages/model/src/search.ts","packages/model/src/streaming.ts","packages/model/tsconfig.json","packages/model/vite.config.ts","packages/player/changelog.json","packages/player/index.html","packages/player/package.json","packages/player/public/logo-icon-on-white.png","packages/player/src-tauri/.gitignore","packages/player/src-tauri/Cargo.lock","packages/player/src-tauri/Cargo.toml","packages/player/src-tauri/build.rs","packages/player/src-tauri/capabilities/default.json","packages/player/src-tauri/capabilities/desktop.json","packages/player/src-tauri/icons/icon.icns","packages/player/src-tauri/icons/icon.ico","packages/player/src-tauri/icons/icon.png","packages/player/src-tauri/migrations/history/0001_init.sql","packages/player/src-tauri/migrations/history/0002_play_listening_time.sql","packages/player/src-tauri/resources/com.nuclearplayer.Nuclear.desktop","packages/player/src-tauri/resources/com.nuclearplayer.Nuclear.metainfo.xml","packages/player/src-tauri/src/appimage_wayland.rs","packages/player/src-tauri/src/bridge/bridge.rs","packages/player/src-tauri/src/bridge/mod.rs","packages/player/src-tauri/src/bridge/types.rs","packages/player/src-tauri/src/commands.rs","packages/player/src-tauri/src/db.rs","packages/player/src-tauri/src/discord.rs","packages/player/src-tauri/src/history/commands.rs","packages/player/src-tauri/src/history/fingerprint.rs","packages/player/src-tauri/src/history/fixtures.rs","packages/player/src-tauri/src/history/mod.rs","packages/player/src-tauri/src/history/reads.rs","packages/player/src-tauri/src/history/stats/listening_time.rs","packages/player/src-tauri/src/history/stats/listening_time.test.rs","packages/player/src-tauri/src/history/stats/mod.rs","packages/player/src-tauri/src/history/stats/top_lists.rs","packages/player/src-tauri/src/history/stats/top_lists.test.rs","packages/player/src-tauri/src/history/types.rs","packages/player/src-tauri/src/history/writes.rs","packages/player/src-tauri/src/http.rs","packages/player/src-tauri/src/http_api/actions.rs","packages/player/src-tauri/src/http_api/frontend.rs","packages/player/src-tauri/src/http_api/mod.rs","packages/player/src-tauri/src/http_api/routes.rs","packages/player/src-tauri/src/http_api/search.rs","packages/player/src-tauri/src/lib.rs","packages/player/src-tauri/src/logging.rs","packages/player/src-tauri/src/main.rs","packages/player/src-tauri/src/mcp/metadata.rs","packages/player/src-tauri/src/mcp/mod.rs","packages/player/src-tauri/src/mcp/tools.rs","packages/player/src-tauri/src/mpd/commands.rs","packages/player/src-tauri/src/mpd/connection.rs","packages/player/src-tauri/src/mpd/idle.rs","packages/player/src-tauri/src/mpd/mod.rs","packages/player/src-tauri/src/mpd/protocol.rs","packages/player/src-tauri/src/net.rs","packages/player/src-tauri/src/pagination.rs","packages/player/src-tauri/src/setup.rs","packages/player/src-tauri/src/stream_server.rs","packages/player/src-tauri/src/ytdlp.rs","packages/player/src-tauri/src/ytdlp_setup.rs","packages/player/src-tauri/tauri.conf.json","packages/player/src/App.hydration.test.tsx","packages/player/src/App.test-wrapper.tsx","packages/player/src/App.test.tsx","packages/player/src/App.tsx","packages/player/src/__snapshots__/App.test.tsx.snap","packages/player/src/apis/ApiClient.ts","packages/player/src/apis/index.ts","packages/player/src/apis/pluginMarketplaceApi.ts","packages/player/src/apis/themeRegistryApi.ts","packages/player/src/components/ConnectedFavoriteButton.tsx","packages/player/src/components/ConnectedPlayerBar/ConnectedControls.tsx","packages/player/src/components/ConnectedPlayerBar/ConnectedNowPlaying.tsx","packages/player/src/components/ConnectedPlayerBar/ConnectedPlayerBar.test-wrapper.tsx","packages/player/src/components/ConnectedPlayerBar/ConnectedPlayerBar.test.tsx","packages/player/src/components/ConnectedPlayerBar/ConnectedPlayerBar.tsx","packages/player/src/components/ConnectedPlayerBar/ConnectedSeekBar.tsx","packages/player/src/components/ConnectedPlayerBar/ConnectedVolume.tsx","packages/player/src/components/ConnectedPlayerBar/index.ts","packages/player/src/components/ConnectedQueuePanel.tsx","packages/player/src/components/ConnectedSettingsModal.tsx","packages/player/src/components/ConnectedThemeController.tsx","packages/player/src/components/ConnectedTitleBar.tsx","packages/player/src/components/ConnectedTopBar.tsx","packages/player/src/components/ConnectedTrackContextMenu.test-wrapper.tsx","packages/player/src/components/ConnectedTrackContextMenu.test.tsx","packages/player/src/components/ConnectedTrackContextMenu.tsx","packages/player/src/components/ConnectedTrackTable.tsx","packages/player/src/components/DevTools.tsx","packages/player/src/components/FlatpakWarningBanner.tsx","packages/player/src/components/JamQrCodeButton.tsx","packages/player/src/components/PluginIcon.tsx","packages/player/src/components/SearchBox/SearchBox.tsx","packages/player/src/components/SearchBox/SearchBoxPopover.tsx","packages/player/src/components/SearchBox/index.ts","packages/player/src/components/SearchBox/useRecentSearches.ts","packages/player/src/components/SearchBox/useSearchBox.ts","packages/player/src/components/SearchBox/useSearchPopover.ts","packages/player/src/components/SearchBox/useSearchQuery.ts","packages/player/src/components/SocialLinks.test.tsx","packages/player/src/components/SocialLinks.tsx","packages/player/src/components/SoundProvider.tsx","packages/player/src/components/StreamResolver.tsx","packages/player/src/components/UpdateBadge.tsx","packages/player/src/components/VersionString.tsx","packages/player/src/components/__snapshots__/SocialLinks.test.tsx.snap","packages/player/src/components/devtools/ZustandDevtoolsPanel.tsx","packages/player/src/devtools/registerZustandStores.ts","packages/player/src/devtools/zustandRegistry.ts","packages/player/src/env.d.ts","packages/player/src/hooks/useActiveProvider.ts","packages/player/src/hooks/useAdvancedThemeOptions.ts","packages/player/src/hooks/useAppVersion.ts","packages/player/src/hooks/useCanGoForward.ts","packages/player/src/hooks/useCoreSetting.ts","packages/player/src/hooks/useCurrentQueueItem.ts","packages/player/src/hooks/useDebouncedValue.ts","packages/player/src/hooks/useFilteredMarketplaceThemes.ts","packages/player/src/hooks/useFramelessWindow.ts","packages/player/src/hooks/useInstallPlugin.ts","packages/player/src/hooks/useInstallTheme.ts","packages/player/src/hooks/useLogExport.ts","packages/player/src/hooks/useLogStream.test.ts","packages/player/src/hooks/useLogStream.ts","packages/player/src/hooks/useMarketplacePlugins.ts","packages/player/src/hooks/useMarketplaceThemeOptions.ts","packages/player/src/hooks/useNavigateToPlaylist.ts","packages/player/src/hooks/usePagination.ts","packages/player/src/hooks/usePlaylistExport.ts","packages/player/src/hooks/usePlaylistImport.ts","packages/player/src/hooks/usePlaylistSubmenu.ts","packages/player/src/hooks/useProviders.ts","packages/player/src/hooks/useQueue.ts","packages/player/src/hooks/useQueueActions.ts","packages/player/src/hooks/useStreamRecovery.ts","packages/player/src/hooks/useStreamResolution.ts","packages/player/src/hooks/useThemeRegistry.ts","packages/player/src/hooks/useTrackActions.ts","packages/player/src/hooks/useTrackTableLabels.ts","packages/player/src/hooks/useUninstallTheme.ts","packages/player/src/initPlayerApp.tsx","packages/player/src/integration-tests/ListeningHistory.test-wrapper.tsx","packages/player/src/integration-tests/PlayerBar.test-wrapper.tsx","packages/player/src/integration-tests/Queue.test-wrapper.tsx","packages/player/src/integration-tests/Sound.test-wrapper.tsx","packages/player/src/integration-tests/Sound.test.tsx","packages/player/src/integration-tests/StreamResolution.test-wrapper.tsx","packages/player/src/integration-tests/Update.test-wrapper.tsx","packages/player/src/integration-tests/active-provider-selection.test.tsx","packages/player/src/integration-tests/candidate-selection.test.tsx","packages/player/src/integration-tests/custom-title-bar.test-wrapper.tsx","packages/player/src/integration-tests/custom-title-bar.test.tsx","packages/player/src/integration-tests/discovery.test.tsx","packages/player/src/integration-tests/listening-history.test.tsx","packages/player/src/integration-tests/playlist-export-import.test.tsx","packages/player/src/integration-tests/plugin-events.test.tsx","packages/player/src/integration-tests/queue.test.tsx","packages/player/src/integration-tests/settings.test.tsx","packages/player/src/integration-tests/stream-resolution.test.tsx","packages/player/src/integration-tests/update.test.tsx","packages/player/src/main.tsx","packages/player/src/remoteControl/RemoteApp.tsx","packages/player/src/remoteControl/RemoteControl.test-wrapper.tsx","packages/player/src/remoteControl/RemoteControl.test.tsx","packages/player/src/remoteControl/RemoteControl.tsx","packages/player/src/remoteControl/SearchDrawerContent.tsx","packages/player/src/remoteControl/index.ts","packages/player/src/remoteControl/initRemoteApp.tsx","packages/player/src/remoteControl/remoteStore.ts","packages/player/src/remoteControl/useEventSource.ts","packages/player/src/remoteControl/useInitialSync.ts","packages/player/src/remoteControl/useRemoteActions.ts","packages/player/src/remoteControl/useRemoteSearch.ts","packages/player/src/remoteControl/useRemoteState.ts","packages/player/src/remoteControl/useSSESync.ts","packages/player/src/routeTree.gen.ts","packages/player/src/routes/__root.tsx"],"storefront":"/r/nukeop","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/nukeop/nuclear/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}