├── .editorconfig ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.yaml │ ├── config.yml │ └── translation.yaml ├── PULL_REQUEST_TEMPLATE │ └── translations.md ├── dependabot.yml └── workflows │ ├── auto-project.yml │ ├── cider-chores.yml │ ├── dev-chores.yml │ ├── stale-issues.yml │ └── support-notice.yml ├── .gitignore ├── .npmrc ├── .nvmrc ├── .prettierignore ├── .prettierrc ├── .yarnrc.yml ├── Assets ├── AppChromeBtn.afdesign ├── Cider Icons │ └── svg │ │ ├── cider-backward.svg │ │ ├── cider-forward.svg │ │ ├── cider-pause.svg │ │ └── cider-play.svg ├── Cider with text.svg ├── Install On Cider │ ├── install on cider.afdesign │ └── install on cider.svg ├── MissingArtwork.afdesign ├── MissingArtwork.svg ├── Release.svg ├── Sources │ ├── Cider with text.afdesign │ ├── Release.afdesign │ ├── cider-vinyl no raster.afdesign │ ├── cider-vinyl-no raster 2.afdesign │ └── cider-vinyl.afdesign └── Vinyl Logo │ ├── cider-vinyl no raster.svg │ └── cider-vinyl textured.svg ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── appx ├── Square150x150Logo.PNG ├── Square44x44Logo.PNG ├── Square44x44Logo.targetsize-44_altform-unplated.PNG ├── StoreLogo.PNG └── Wide310x150Logo.PNG ├── docs └── plugins │ ├── example │ └── examplePlugin.ts │ └── sendSongToTitlebar.ts ├── flatpak ├── cider-wrapper ├── flathub.json ├── org.cidercollective.cider.yml ├── sh.cider.Cider.metainfo.xml └── sh.cider.Cider.yml ├── msft-test.json ├── package.json ├── pnpm-lock.yaml ├── resources ├── afterPack.cjs ├── banner.png ├── bg.tiff ├── entitlements.mac.plist ├── icons │ ├── icon-old.icns │ ├── icon-test.ico │ ├── icon.icns │ ├── icon.ico │ ├── icon.png │ ├── icon.svg │ ├── thumbar │ │ ├── dark_next.png │ │ ├── dark_pause.png │ │ ├── dark_play.png │ │ ├── dark_previous.png │ │ ├── light_next.png │ │ ├── light_pause.png │ │ ├── light_play.png │ │ └── light_previous.png │ └── webui │ │ ├── cast.svg │ │ ├── cast_white.svg │ │ ├── close.svg │ │ ├── down.svg │ │ ├── miniplayer_hover.svg │ │ └── up.svg ├── license.json ├── license.txt ├── macPackager.cjs ├── notarize.cjs ├── verror-types └── version.sh ├── src ├── ciderkit │ └── public.js ├── main │ ├── base │ │ ├── app.ts │ │ ├── browserwindow.ts │ │ ├── castcontroller.ts │ │ ├── castreceiver.ts │ │ ├── plugins.ts │ │ ├── store.ts │ │ ├── utils.ts │ │ ├── vcomponents.json │ │ ├── vrouting.json │ │ └── wsapi.ts │ ├── index.ts │ ├── plugins │ │ ├── chromecast.ts │ │ ├── discordrpc.ts │ │ ├── lastfm.ts │ │ ├── menubar.ts │ │ ├── mpris.ts │ │ ├── playbackNotifications.ts │ │ ├── raop.ts │ │ ├── thumbar.ts │ │ └── webNowPlaying.ts │ └── providers │ │ └── local │ │ └── index.ts ├── preload │ └── cider-preload.js ├── renderer │ ├── apple-hls-old.js │ ├── apple-hls.js │ ├── assets │ │ ├── AppChromeBtn-Open.svg │ │ ├── AppChromeBtn.svg │ │ ├── CiderMenu.svg │ │ ├── MissingArtwork.svg │ │ ├── RatingsLove.png │ │ ├── angles-left.svg │ │ ├── angles-right.svg │ │ ├── arrow-bend-down.svg │ │ ├── arrow-bend-up.svg │ │ ├── arrow-left.svg │ │ ├── backward.svg │ │ ├── banner.png │ │ ├── banner2.png │ │ ├── c1-c2.png │ │ ├── cast_white.svg │ │ ├── check.svg │ │ ├── chevron-left.svg │ │ ├── chevron-right.svg │ │ ├── cider-icons │ │ │ ├── backward.svg │ │ │ ├── forward.svg │ │ │ ├── pause.svg │ │ │ ├── play.svg │ │ │ └── stop.svg │ │ ├── cider-round.svg │ │ ├── discord.svg │ │ ├── explicit.svg │ │ ├── feather │ │ │ ├── disc.svg │ │ │ ├── external-link.svg │ │ │ ├── folder.svg │ │ │ ├── globe.svg │ │ │ ├── hard-drive.svg │ │ │ ├── headphones.svg │ │ │ ├── heart-fill.svg │ │ │ ├── heart.svg │ │ │ ├── home.svg │ │ │ ├── list.svg │ │ │ ├── mic.svg │ │ │ ├── music.svg │ │ │ ├── pen-tool.svg │ │ │ ├── play-circle.svg │ │ │ ├── play.svg │ │ │ ├── plugins.svg │ │ │ ├── plus-circle-white.svg │ │ │ ├── plus-circle.svg │ │ │ ├── plus.svg │ │ │ ├── radio.svg │ │ │ ├── share-2.svg │ │ │ ├── share.svg │ │ │ ├── style.svg │ │ │ ├── thumbs-down.svg │ │ │ ├── thumbs-up.svg │ │ │ ├── unheart.svg │ │ │ ├── user.svg │ │ │ ├── video.svg │ │ │ ├── volume-2.svg │ │ │ ├── volume.svg │ │ │ ├── x-circle-white.svg │ │ │ ├── x-circle.svg │ │ │ ├── x-circlePng.png │ │ │ └── zap.svg │ │ ├── fonts │ │ │ ├── Inter │ │ │ │ ├── Inter-Black.woff │ │ │ │ ├── Inter-Black.woff2 │ │ │ │ ├── Inter-BlackItalic.woff │ │ │ │ ├── Inter-BlackItalic.woff2 │ │ │ │ ├── Inter-Bold.woff │ │ │ │ ├── Inter-Bold.woff2 │ │ │ │ ├── Inter-BoldItalic.woff │ │ │ │ ├── Inter-BoldItalic.woff2 │ │ │ │ ├── Inter-ExtraBold.woff │ │ │ │ ├── Inter-ExtraBold.woff2 │ │ │ │ ├── Inter-ExtraBoldItalic.woff │ │ │ │ ├── Inter-ExtraBoldItalic.woff2 │ │ │ │ ├── Inter-ExtraLight.woff │ │ │ │ ├── Inter-ExtraLight.woff2 │ │ │ │ ├── Inter-ExtraLightItalic.woff │ │ │ │ ├── Inter-ExtraLightItalic.woff2 │ │ │ │ ├── Inter-Italic.woff │ │ │ │ ├── Inter-Italic.woff2 │ │ │ │ ├── Inter-Light.woff │ │ │ │ ├── Inter-Light.woff2 │ │ │ │ ├── Inter-LightItalic.woff │ │ │ │ ├── Inter-LightItalic.woff2 │ │ │ │ ├── Inter-Medium.woff │ │ │ │ ├── Inter-Medium.woff2 │ │ │ │ ├── Inter-MediumItalic.woff │ │ │ │ ├── Inter-MediumItalic.woff2 │ │ │ │ ├── Inter-Regular.woff │ │ │ │ ├── Inter-Regular.woff2 │ │ │ │ ├── Inter-SemiBold.woff │ │ │ │ ├── Inter-SemiBold.woff2 │ │ │ │ ├── Inter-SemiBoldItalic.woff │ │ │ │ ├── Inter-SemiBoldItalic.woff2 │ │ │ │ ├── Inter-Thin.woff │ │ │ │ ├── Inter-Thin.woff2 │ │ │ │ ├── Inter-ThinItalic.woff │ │ │ │ ├── Inter-ThinItalic.woff2 │ │ │ │ ├── Inter-italic.var.woff2 │ │ │ │ ├── Inter-roman.var.woff2 │ │ │ │ ├── Inter.var.woff2 │ │ │ │ └── inter.css │ │ │ └── Pretendard │ │ │ │ ├── pretendardvariable.css │ │ │ │ └── woff2 │ │ │ │ └── PretendardVariable.woff2 │ │ ├── forward.svg │ │ ├── github.svg │ │ ├── hamborgar.svg │ │ ├── infinity.svg │ │ ├── ko_fi.svg │ │ ├── list.svg │ │ ├── logocut.png │ │ ├── lossless.svg │ │ ├── music.svg │ │ ├── oobe │ │ │ ├── maverick.png │ │ │ └── mojave.png │ │ ├── open_collective.svg │ │ ├── pause.svg │ │ ├── pip.svg │ │ ├── play.svg │ │ ├── ppe.svg │ │ ├── private.svg │ │ ├── qq.svg │ │ ├── quote-right.svg │ │ ├── repeat.svg │ │ ├── repeatOne.svg │ │ ├── search-alt.svg │ │ ├── search.svg │ │ ├── settings.svg │ │ ├── shuffle.svg │ │ ├── spatialization.svg │ │ ├── spinner-old.gif │ │ ├── spinner.svg │ │ ├── star.svg │ │ ├── transparent.png │ │ └── twitter.svg │ ├── audio │ │ ├── audio.js │ │ ├── cloud │ │ │ └── audio.js │ │ └── impulses │ │ │ ├── AtmosphereRealizer_BSCBM.wav │ │ │ ├── AtmosphereRealizer_Cuddle.wav │ │ │ ├── AtmosphereRealizer_E168_1.2.wav │ │ │ ├── AtmosphereRealizer_E68_1.5.wav │ │ │ ├── AtmosphereRealizer_E68_2.2.wav │ │ │ ├── AtmosphereRealizer_Natural+.wav │ │ │ ├── AtmosphereRealizer_NaturalStandard.wav │ │ │ ├── AtmosphereRealizer_Z3600.wav │ │ │ ├── AtmosphereRealizer_Z8500_A.wav │ │ │ ├── AtmosphereRealizer_Z8500_B.wav │ │ │ ├── AtmosphereRealizer_Z8500_C.wav │ │ │ ├── CAP_256_FINAL_48k.wav │ │ │ ├── CAP_64.wav │ │ │ ├── CAP_Maikiwi.wav │ │ │ ├── CAP_Natural.wav │ │ │ ├── CiderSpatial_BPLK.wav │ │ │ ├── CiderSpatial_Diffuse.wav │ │ │ ├── CiderSpatial_HW2K.wav │ │ │ ├── CiderSpatial_LIVE_2.wav │ │ │ ├── CiderSpatial_Maikiwi.wav │ │ │ ├── CiderSpatial_MaikiwiPlus.wav │ │ │ ├── CiderSpatial_Natural+.wav │ │ │ ├── CiderSpatial_Natural.wav │ │ │ ├── CiderSpatial_v69_Standard.wav │ │ │ ├── CiderSpatial_v70.422_Maikiwi.wav │ │ │ ├── CiderSpatial_v71.420_Maikiwi.wav │ │ │ └── MoondropCHU_Cider.wav │ ├── hlscider.js │ ├── index.js │ ├── less │ │ ├── ameframework.less │ │ ├── appvars.less │ │ ├── bootstrap-vue.min.less │ │ ├── bootstrap.less │ │ ├── codicon.css │ │ ├── codicon.svg │ │ ├── codicon.ttf │ │ ├── compact.less │ │ ├── directives.less │ │ ├── elements.less │ │ ├── fullscreen.less │ │ ├── helpers.css │ │ ├── helpers.less │ │ ├── linux.less │ │ ├── macos.less │ │ ├── macosemu.less │ │ ├── miniplayer.less │ │ ├── notyf.less │ │ ├── pages.css │ │ └── pages.less │ ├── lib │ │ ├── bootbox.min.js │ │ ├── bootstrap-vue.min.js │ │ ├── bootstrap.min.js │ │ ├── fast-plural-rules.js │ │ ├── jquery-3.2.1.slim.min.js │ │ ├── less.js │ │ ├── marked.js │ │ ├── notyf.min.js │ │ ├── popper.min.js │ │ ├── quasar │ │ │ ├── quasar.min.css │ │ │ └── quasar.umd.min.js │ │ ├── resonance-audio.min.js │ │ ├── smoothscroll.js │ │ ├── sortable.min.js │ │ ├── stackblur.min.js │ │ ├── velocity.min.js │ │ ├── vue-horizontal.js │ │ ├── vue-observe-visibility.min.js │ │ ├── vue.dev.js │ │ ├── vue.js │ │ ├── vuedraggable.umd.min.js │ │ └── vuex.min.js │ ├── main │ │ ├── app.js │ │ ├── cidercache.js │ │ ├── ciderfrontapi.js │ │ ├── components │ │ │ ├── i18n-editor.js │ │ │ ├── sidebar-library-item.js │ │ │ └── svg-icon.js │ │ ├── events.js │ │ ├── gamepad.js │ │ ├── html.js │ │ ├── mica.js │ │ ├── musickittools.js │ │ ├── vueapp.js │ │ ├── vuex-store.js │ │ └── wsapi_interop.js │ ├── sounds │ │ ├── btn1.ogg │ │ ├── confirm.ogg │ │ └── hover.ogg │ ├── style.less │ ├── sw.js │ ├── themes │ │ ├── WIP.md │ │ ├── compactui.less │ │ ├── dark.less │ │ ├── default.less │ │ ├── grain.less │ │ ├── inline_drawer.less │ │ ├── reduce_visuals.less │ │ └── sweetener.less │ ├── todo.js │ ├── views │ │ ├── app │ │ │ ├── app-navigation.ejs │ │ │ ├── chrome-bottom.ejs │ │ │ ├── chrome-top.ejs │ │ │ └── panels.ejs │ │ ├── components │ │ │ ├── add-to-playlist.ejs │ │ │ ├── airplay-modal.ejs │ │ │ ├── animatedartwork-view.ejs │ │ │ ├── app-content.ejs │ │ │ ├── artist-chip.ejs │ │ │ ├── artwork-material.ejs │ │ │ ├── audio-controls.ejs │ │ │ ├── audio-playbackrate.ejs │ │ │ ├── audio-settings.ejs │ │ │ ├── c2-upgrade.ejs │ │ │ ├── castmenu.ejs │ │ │ ├── cider-modal.ejs │ │ │ ├── editorialNotes.ejs │ │ │ ├── equalizer.ejs │ │ │ ├── fullscreen.ejs │ │ │ ├── hello-world.ejs │ │ │ ├── inline-collection-list.ejs │ │ │ ├── karaoke-in.ejs │ │ │ ├── libraryartist-item.ejs │ │ │ ├── listennow-child.ejs │ │ │ ├── listitem-horizontal.ejs │ │ │ ├── lyrics-view.ejs │ │ │ ├── mediaitem-artwork.ejs │ │ │ ├── mediaitem-hrect.ejs │ │ │ ├── mediaitem-info.ejs │ │ │ ├── mediaitem-list-item.ejs │ │ │ ├── mediaitem-mvview-sp.ejs │ │ │ ├── mediaitem-mvview.ejs │ │ │ ├── mediaitem-scroller-horizontal-large.ejs │ │ │ ├── mediaitem-scroller-horizontal-mvview.ejs │ │ │ ├── mediaitem-scroller-horizontal-sp.ejs │ │ │ ├── mediaitem-scroller-horizontal.ejs │ │ │ ├── mediaitem-square.ejs │ │ │ ├── menu-panel.ejs │ │ │ ├── miniplayer.ejs │ │ │ ├── moreinfo-modal.ejs │ │ │ ├── pagination.ejs │ │ │ ├── pathmenu.ejs │ │ │ ├── playlists.ejs │ │ │ ├── plugin-menu.ejs │ │ │ ├── qrcode-modal.ejs │ │ │ ├── queue.ejs │ │ │ ├── settings-keybinds.ejs │ │ │ ├── settings-plugins-github.ejs │ │ │ ├── settings-themes-github.ejs │ │ │ ├── settings-themes.ejs │ │ │ ├── settings-window.ejs │ │ │ ├── share-sheet.ejs │ │ │ ├── sidebar-playlist.ejs │ │ │ ├── sidebar.ejs │ │ │ └── smarthints.ejs │ │ ├── main.ejs │ │ ├── pages │ │ │ ├── about.ejs │ │ │ ├── apple-account-settings.ejs │ │ │ ├── apple-curator.ejs │ │ │ ├── artist-feed.ejs │ │ │ ├── artist.ejs │ │ │ ├── audiolabs.ejs │ │ │ ├── browse.ejs │ │ │ ├── charts.ejs │ │ │ ├── cider-multiroom.ejs │ │ │ ├── cider-playlist.ejs │ │ │ ├── cider-profile.ejs │ │ │ ├── collection-list.ejs │ │ │ ├── connect-linked.ejs │ │ │ ├── groupings.ejs │ │ │ ├── home.ejs │ │ │ ├── installed-themes.ejs │ │ │ ├── library-albums.ejs │ │ │ ├── library-artists.ejs │ │ │ ├── library-recentlyadded.ejs │ │ │ ├── library-songs.ejs │ │ │ ├── library-videos.ejs │ │ │ ├── listen_now.ejs │ │ │ ├── madeforyou.ejs │ │ │ ├── oobe.ejs │ │ │ ├── playlist-inline.ejs │ │ │ ├── plugin-renderer.ejs │ │ │ ├── podcasts.ejs │ │ │ ├── radio.ejs │ │ │ ├── recordLabel.ejs │ │ │ ├── remote-pair.ejs │ │ │ ├── replay.ejs │ │ │ ├── search.ejs │ │ │ ├── themes-github.ejs │ │ │ ├── webview.ejs │ │ │ └── zoo.ejs │ │ └── svg │ │ │ ├── arrow-up.svg │ │ │ ├── cast.svg │ │ │ ├── check.svg │ │ │ ├── chevron-left.svg │ │ │ ├── chevron-right.svg │ │ │ ├── explicit.svg │ │ │ ├── external-link.svg │ │ │ ├── fullscreen.svg │ │ │ ├── grid.svg │ │ │ ├── headphones.svg │ │ │ ├── in-library.svg │ │ │ ├── info.svg │ │ │ ├── list.svg │ │ │ ├── log-out.svg │ │ │ ├── more.svg │ │ │ ├── pip.svg │ │ │ ├── play.svg │ │ │ ├── playlist.svg │ │ │ ├── plus.svg │ │ │ ├── quote-right.svg │ │ │ ├── redo.svg │ │ │ ├── settings.svg │ │ │ ├── smartphone.svg │ │ │ ├── speaker.svg │ │ │ └── x.svg │ └── workbox-962786f2.js └── web-remote │ ├── assets │ ├── Grabber.svg │ ├── MissingArtwork.svg │ ├── arrow-left.svg │ ├── backward.svg │ ├── forward.svg │ ├── infinity.svg │ ├── list.svg │ ├── pause.svg │ ├── play.svg │ ├── quote-right.svg │ ├── repeat.svg │ ├── repeatOne.svg │ ├── search.svg │ ├── shuffle.svg │ ├── volume-down.svg │ ├── volume-up.svg │ └── x.svg │ ├── cider-icon.png │ ├── ciderframework.css │ ├── icon-192x192.png │ ├── icon-256x256.png │ ├── icon-384x384.png │ ├── icon-512x512.png │ ├── index.js │ ├── launch.png │ ├── manifest.json │ ├── sortable.min.js │ ├── style.css │ ├── views │ ├── components │ │ ├── animatedartwork-view.ejs │ │ ├── mediaitem-artwork.ejs │ │ └── mediaitem-square.ejs │ └── index.ejs │ ├── vue.js │ └── vuedraggable.umd.min.js ├── steam-deck.json ├── tsconfig.json ├── winget.json └── workbox-config.js /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | insert_final_newline = true 7 | indent_style = space 8 | indent_size = 2 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: ciderapp 2 | ko_fi: cryptofyre 3 | open_collective: ciderapp 4 | custom: "https://opencollective.com/ciderapp/donate/10/month/Support%20Development?redirect=https://cidercollective.dev/thanks" 5 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Support Disclaimer 4 | url: https://docs.cider.sh/support/disclaimer 5 | about: Please read this before creating any issue. 6 | - name: Feature Request 7 | url: https://github.com/ciderapp/Cider/discussions/new?category=feature-request 8 | about: Have a feature you would like to have in the app? Make a request. 9 | - name: Discord Support 10 | url: https://discord.com/invite/AppleMusic 11 | about: For quick support, make a ticket or ask for community support here. 12 | - name: Cider Documentation 13 | url: https://docs.cider.sh/support/faqs 14 | about: In most cases, these troubleshooting tips can resolve basic issues. Try them out before opening an issue. 15 | - name: GitHub Issues 16 | url: https://github.com/ciderapp/Cider/issues 17 | about: Check to make sure there is not an issues already open that is related to your issue. 18 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/translation.yaml: -------------------------------------------------------------------------------- 1 | name: Translation Report/Request 2 | description: Request a language or report an issue with one. 3 | title: "[Translation]: " 4 | labels: ["🌐 Translations"] 5 | assignees: [] 6 | body: 7 | - type: markdown 8 | attributes: 9 | value: | 10 | Thanks for taking the time to fill out this report! 11 | - type: input 12 | id: language 13 | attributes: 14 | label: Relevant Language 15 | description: The language you would like to request for or have an issue with. 16 | placeholder: en_US 17 | validations: 18 | required: true 19 | - type: dropdown 20 | id: requestType 21 | attributes: 22 | label: Change or Addition or Both 23 | multiple: true 24 | options: 25 | - Change a Language 26 | - Add a Language 27 | validations: 28 | required: true 29 | - type: textarea 30 | id: description 31 | attributes: 32 | label: Change Requested / Any Additional Information 33 | description: If you are requesting a change, place all the information here, or you can provide additional information to additions if you want. 34 | placeholder: I would like ... changed to ... 35 | validations: 36 | required: false 37 | - type: checkboxes 38 | id: terms 39 | attributes: 40 | label: Code of Conduct 41 | description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/ciderapp/Cider/blob/main/CODE_OF_CONDUCT.md) 42 | options: 43 | - label: I agree to follow this project's Code of Conduct 44 | required: true 45 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE/translations.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Translations 3 | about: Improvement to our tranlations 4 | title: "" 5 | labels: 🌐 Translations 6 | assignees: '' 7 | --- 8 | 9 | 10 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: "npm" # See documentation for possible values 9 | directory: "/" # Location of package manifests 10 | schedule: 11 | interval: "monthly" 12 | -------------------------------------------------------------------------------- /.github/workflows/auto-project.yml: -------------------------------------------------------------------------------- 1 | name: Add bugs to bugs project 2 | 3 | on: 4 | issues: 5 | types: 6 | - opened 7 | 8 | jobs: 9 | add-to-project: 10 | name: Add issue to project 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/add-to-project@main 14 | with: 15 | project-url: https://github.com/orgs/ciderapp/projects/5 16 | github-token: ${{ secrets.ADD_TO_PROJECT_PAT }} 17 | labeled: bug, needs-triage 18 | label-operator: OR 19 | -------------------------------------------------------------------------------- /.github/workflows/cider-chores.yml: -------------------------------------------------------------------------------- 1 | name: Cider Chores 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | jobs: 9 | compile-and-post: 10 | runs-on: ubuntu-latest 11 | 12 | container: 13 | image: electronuserland/builder:wine 14 | 15 | 16 | steps: 17 | - name: Checkout 🛎 18 | uses: actions/checkout@v4 19 | 20 | - uses: pnpm/action-setup@v4 21 | 22 | - name: Setup Node.js 23 | uses: actions/setup-node@v4 24 | with: 25 | node-version-file: '.nvmrc' 26 | 27 | - name: Install Dependencies 📦 28 | run: pnpm install 29 | 30 | - name: Build 🏗 31 | run: pnpm dist:all 32 | 33 | - name: Upload Release 🚀 34 | uses: softprops/action-gh-release@v2.0.5 35 | with: 36 | files: | 37 | ./dist/*.exe 38 | ./dist/*.deb 39 | ./dist/*.AppImage 40 | ./dist/*.rpm 41 | env: 42 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 43 | -------------------------------------------------------------------------------- /.github/workflows/dev-chores.yml: -------------------------------------------------------------------------------- 1 | name: Developer Chores 2 | 3 | on: [pull_request] 4 | 5 | jobs: 6 | linter-check: 7 | runs-on: ${{ matrix.os }} 8 | 9 | strategy: 10 | matrix: 11 | os: [ubuntu-latest] 12 | node: [18] 13 | 14 | steps: 15 | - name: Checkout 🛎 16 | uses: actions/checkout@v3 17 | 18 | - name: Setup node env 🏗 19 | uses: actions/setup-node@v3 20 | with: 21 | node-version: ${{ matrix.node }} 22 | check-latest: true 23 | 24 | - name: Install dependencies 👨🏻‍💻 25 | run: npm run bootstrap 26 | 27 | - name: Run linter 👀 28 | run: npm run format:write 29 | 30 | - name: Comment Suggestions 🗒️ 31 | uses: getsentry/action-git-diff-suggestions@main 32 | with: 33 | message: Prettier Suggestion 34 | -------------------------------------------------------------------------------- /.github/workflows/stale-issues.yml: -------------------------------------------------------------------------------- 1 | name: 'Close stale issues and PRs' 2 | on: 3 | schedule: 4 | - cron: '30 1 * * *' 5 | 6 | permissions: 7 | issues: write 8 | pull-requests: write 9 | 10 | jobs: 11 | stale: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/stale@v4 15 | with: 16 | stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days.' 17 | days-before-stale: 30 18 | days-before-close: 7 19 | stale-issue-label: "stale" 20 | stale-pr-label: "stale" 21 | exempt-all-assignees: true 22 | exempt-issue-labels: 'more-info,work-in-progress,accessibility-feature,help-wanted,persist/priority' 23 | -------------------------------------------------------------------------------- /.github/workflows/support-notice.yml: -------------------------------------------------------------------------------- 1 | name: Support Notice 2 | 3 | on: 4 | issues: 5 | types: [opened] 6 | 7 | jobs: 8 | post-notice: 9 | runs-on: ubuntu-latest 10 | 11 | steps: 12 | - uses: derekprior/add-autoresponse@master 13 | env: 14 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 15 | with: 16 | respondableId: ${{ github.event.issue.node_id }} 17 | response: "Cider 1.x is no longer actively maintained. We highly suggest moving to the newer version versions of the app available at https://cider.sh through official storefronts ex. Itch.io, or the Microsoft Store." 18 | author: ${{ github.event.issue.user.login }} 19 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | node-linker=hoisted 2 | public-hoist-pattern=* 3 | shamefully-hoist=true 4 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 20.2.0 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | src/renderer/*hls*.js 2 | build/* 3 | dist/* 4 | src/renderer/lib/* 5 | *.min.* 6 | .pnpm-store 7 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 600, 3 | "singleAttributePerLine": true, 4 | "bracketSameLine": true, 5 | "overrides": [ 6 | { 7 | "files": "src/renderer/main/**/*.js", 8 | "options": { 9 | "singleAttributePerLine": false 10 | } 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /.yarnrc.yml: -------------------------------------------------------------------------------- 1 | compressionLevel: mixed 2 | 3 | enableGlobalCache: false 4 | 5 | nodeLinker: node-modules 6 | -------------------------------------------------------------------------------- /Assets/AppChromeBtn.afdesign: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/Assets/AppChromeBtn.afdesign -------------------------------------------------------------------------------- /Assets/Cider Icons/svg/cider-backward.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Assets/Cider Icons/svg/cider-forward.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Assets/Cider Icons/svg/cider-pause.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Assets/Cider Icons/svg/cider-play.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Assets/Cider with text.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Cider 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Assets/Install On Cider/install on cider.afdesign: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/Assets/Install On Cider/install on cider.afdesign -------------------------------------------------------------------------------- /Assets/MissingArtwork.afdesign: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/Assets/MissingArtwork.afdesign -------------------------------------------------------------------------------- /Assets/MissingArtwork.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Assets/Release.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Assets/Sources/Cider with text.afdesign: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/Assets/Sources/Cider with text.afdesign -------------------------------------------------------------------------------- /Assets/Sources/Release.afdesign: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/Assets/Sources/Release.afdesign -------------------------------------------------------------------------------- /Assets/Sources/cider-vinyl no raster.afdesign: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/Assets/Sources/cider-vinyl no raster.afdesign -------------------------------------------------------------------------------- /Assets/Sources/cider-vinyl-no raster 2.afdesign: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/Assets/Sources/cider-vinyl-no raster 2.afdesign -------------------------------------------------------------------------------- /Assets/Sources/cider-vinyl.afdesign: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/Assets/Sources/cider-vinyl.afdesign -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 |
6 |

7 | Cider 1 8 |

9 | 10 | > [!WARNING] 11 | >This project has been archived, and no further updates or support will be provided under any circumstances. We highly recommend switching to [Cider v2](https://cider.sh/downloads/client) for the latest features, improvements, and continued support. 12 | 13 | This repository contains the source code for **Cider v1.x**, a cross-platform Apple Music client built from the ground up by the development team. 14 | 15 | Cider v1 was developed using [Electron.js](https://electronjs.org), [Vue.js 2](https://vuejs.org), and [Webpack](https://webpack.js.org). 16 | 17 | **Note:** While distributions may still be available through various third-party sources, first-party builds are no longer provided due to the high volume of support requests for v1. You can compile it following the [insructions outlined in our legacy documentation](https://cider.sh/docs) from our website. Support will not be provided for compiling. 18 | -------------------------------------------------------------------------------- /appx/Square150x150Logo.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/appx/Square150x150Logo.PNG -------------------------------------------------------------------------------- /appx/Square44x44Logo.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/appx/Square44x44Logo.PNG -------------------------------------------------------------------------------- /appx/Square44x44Logo.targetsize-44_altform-unplated.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/appx/Square44x44Logo.targetsize-44_altform-unplated.PNG -------------------------------------------------------------------------------- /appx/StoreLogo.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/appx/StoreLogo.PNG -------------------------------------------------------------------------------- /appx/Wide310x150Logo.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/appx/Wide310x150Logo.PNG -------------------------------------------------------------------------------- /docs/plugins/example/examplePlugin.ts: -------------------------------------------------------------------------------- 1 | let i = 1, 2 | k = 1; 3 | class ExamplePlugin { 4 | /** 5 | * Private variables for interaction in plugins 6 | */ 7 | private _win: any; 8 | private _app: any; 9 | private _store: any; 10 | 11 | /** 12 | * Base Plugin Details (Eventually implemented into a GUI in settings) 13 | */ 14 | public name: string = "examplePlugin"; 15 | public description: string = "Example plugin"; 16 | public version: string = "1.0.0"; 17 | public author: string = "Example author"; 18 | 19 | /** 20 | * Runs on plugin load (Currently run on application start) 21 | */ 22 | constructor(app: any, store: any) { 23 | this._app = app; 24 | this._store = store; 25 | console.debug(`[Plugin][${this.name}] Loading Complete.`); 26 | } 27 | 28 | /** 29 | * Runs on app ready 30 | */ 31 | onReady(win: any): void { 32 | this._win = win; 33 | console.debug(`[Plugin][${this.name}] Ready.`); 34 | } 35 | 36 | /** 37 | * Runs on app stop 38 | */ 39 | onBeforeQuit(): void { 40 | console.debug(`[Plugin][${this.name}] Stopped.`); 41 | } 42 | 43 | /** 44 | * Runs on playback State Change 45 | * @param attributes Music Attributes (attributes.status = current state) 46 | */ 47 | onPlaybackStateDidChange(attributes: object): void { 48 | console.log("onPlaybackStateDidChange has been called " + i + " times"); 49 | i++; 50 | } 51 | 52 | /** 53 | * Runs on song change 54 | * @param attributes Music Attributes 55 | */ 56 | onNowPlayingItemDidChange(attributes: object): void { 57 | console.log("onNowPlayingDidChange has been called " + k + " times"); 58 | k++; 59 | } 60 | } 61 | 62 | module.exports = ExamplePlugin; 63 | -------------------------------------------------------------------------------- /docs/plugins/sendSongToTitlebar.ts: -------------------------------------------------------------------------------- 1 | class sendSongToTitlebar { 2 | /** 3 | * Base Plugin Details (Eventually implemented into a GUI in settings) 4 | */ 5 | public name: string = "sendSongToTitlebar"; 6 | public description: string = "Sets the app's titlebar to the Song title"; 7 | public version: string = "0.0.1"; 8 | public author: string = "Cider Collective (credit to 8times9 via #147)"; 9 | /** 10 | * Runs on plugin load (Currently run on application start) 11 | */ 12 | private _win: any; 13 | private _app: any; 14 | constructor() {} 15 | /** 16 | * Runs on app ready 17 | */ 18 | onReady(win: any): void { 19 | this._win = win; 20 | } 21 | /** 22 | * Runs on app stop 23 | */ 24 | onBeforeQuit(): void {} 25 | /** 26 | * Runs on playback State Change 27 | * @param attributes Music Attributes (attributes.status = current state) 28 | */ 29 | onPlaybackStateDidChange(attributes: any): void { 30 | this._win.setTitle(`${attributes != null && attributes.name != null && attributes.name.length > 0 ? attributes.name + " - " : ""}Cider`); 31 | } 32 | /** 33 | * Runs on song change 34 | * @param attributes Music Attributes 35 | */ 36 | onNowPlayingItemDidChange(attributes: object): void {} 37 | } 38 | 39 | module.exports = sendSongToTitlebar; 40 | -------------------------------------------------------------------------------- /flatpak/cider-wrapper: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | for i in {0..9}; do 4 | test -S $XDG_RUNTIME_DIR/discord-ipc-$i || ln -sf {app/com.discordapp.Discord,$XDG_RUNTIME_DIR}/discord-ipc-$i; 5 | done 6 | 7 | cider "$@" -------------------------------------------------------------------------------- /flatpak/flathub.json: -------------------------------------------------------------------------------- 1 | { 2 | "only-arches": ["x86_64"], 3 | "publish-delay-hours": 2 4 | } 5 | -------------------------------------------------------------------------------- /flatpak/sh.cider.Cider.metainfo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sh.cider.Cider 5 | 6 | Cider 7 | An open source and community oriented Apple Music client 8 | 9 | CC0-1.0 10 | AGPL-1.0-or-later 11 | Cider Collective 12 | 13 | https://cider.sh/?utm_source=flathub%26utm_medium=link%26utm_campaign=product-page 14 | https://github.com/ciderapp/Cider/issues 15 | https://ko-fi.com/cryptofyre 16 | 17 | 18 |

19 | Project Cider. A new look into listening and enjoying Apple Music in style and performance with Features such as Discord and Last.fm integration, spatial audio support, equalizers, and remote controllable using companion app 20 |

21 |
22 | 23 | cider.desktop 24 | 25 | 26 | 27 | https://github.com/ciderapp/cider.sh/blob/main/assets/img/frontpage-scn.png?raw=true 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 |
39 | -------------------------------------------------------------------------------- /msft-test.json: -------------------------------------------------------------------------------- 1 | { 2 | "electronVersion": "16.2.8", 3 | "electronDownload": { 4 | "version": "16.2.8+wvcus", 5 | "mirror": "https://github.com/castlabs/electron-releases/releases/download/v" 6 | }, 7 | "appId": "cider", 8 | "protocols": [ 9 | { 10 | "name": "Cider", 11 | "schemes": ["ame", "cider", "itms", "itmss", "musics", "music"] 12 | } 13 | ], 14 | "extends": null, 15 | "files": ["**/*", "./src/**/*", "./resources/icons/icon.*"], 16 | "linux": { 17 | "target": ["AppImage", "deb", "snap", "rpm"], 18 | "synopsis": "A new look into listening and enjoying music in style and performance. ", 19 | "category": "AudioVideo", 20 | "icon": "cider", 21 | "executableName": "cider" 22 | }, 23 | "appx": { 24 | "applicationId": "CiderAlpha", 25 | "publisher": "CN=CiderCollective, OID.2.25.311729368913984317654407730594956997722=1", 26 | "displayName": "Cider", 27 | "identityName": "CiderCollective.CiderAlpha", 28 | "backgroundColor": "transparent", 29 | "setBuildNumber": true 30 | }, 31 | "win": { 32 | "target": ["appx"], 33 | "icon": "resources/icons/icon.ico" 34 | }, 35 | "directories": { 36 | "buildResources": ".", 37 | "output": "dist" 38 | }, 39 | "mac": { 40 | "icon": "./resources/icons/icon.icns", 41 | "category": "public.app-category.music", 42 | "entitlements": "resources/entitlements.mac.plist", 43 | "darkModeSupport": true 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /resources/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/resources/banner.png -------------------------------------------------------------------------------- /resources/bg.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/resources/bg.tiff -------------------------------------------------------------------------------- /resources/entitlements.mac.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | com.apple.security.cs.allow-jit 7 | 8 | com.apple.security.cs.allow-unsigned-executable-memory 9 | 10 | 11 | com.apple.security.cs.disable-library-validation 12 | 13 | 14 | -------------------------------------------------------------------------------- /resources/icons/icon-old.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/resources/icons/icon-old.icns -------------------------------------------------------------------------------- /resources/icons/icon-test.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/resources/icons/icon-test.ico -------------------------------------------------------------------------------- /resources/icons/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/resources/icons/icon.icns -------------------------------------------------------------------------------- /resources/icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/resources/icons/icon.ico -------------------------------------------------------------------------------- /resources/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/resources/icons/icon.png -------------------------------------------------------------------------------- /resources/icons/thumbar/dark_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/resources/icons/thumbar/dark_next.png -------------------------------------------------------------------------------- /resources/icons/thumbar/dark_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/resources/icons/thumbar/dark_pause.png -------------------------------------------------------------------------------- /resources/icons/thumbar/dark_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/resources/icons/thumbar/dark_play.png -------------------------------------------------------------------------------- /resources/icons/thumbar/dark_previous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/resources/icons/thumbar/dark_previous.png -------------------------------------------------------------------------------- /resources/icons/thumbar/light_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/resources/icons/thumbar/light_next.png -------------------------------------------------------------------------------- /resources/icons/thumbar/light_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/resources/icons/thumbar/light_pause.png -------------------------------------------------------------------------------- /resources/icons/thumbar/light_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/resources/icons/thumbar/light_play.png -------------------------------------------------------------------------------- /resources/icons/thumbar/light_previous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/resources/icons/thumbar/light_previous.png -------------------------------------------------------------------------------- /resources/icons/webui/cast.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ic_cast_black_24dp 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /resources/icons/webui/cast_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ic_cast_black_24dp 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /resources/icons/webui/close.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /resources/icons/webui/down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /resources/icons/webui/miniplayer_hover.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /resources/icons/webui/up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /resources/license.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://github.com/argv-minus-one/dmg-license/raw/master/schema.json", 3 | "body": [ 4 | { 5 | "file": "license.txt", 6 | "lang": ["en-US"] 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /resources/notarize.cjs: -------------------------------------------------------------------------------- 1 | require("dotenv").config(); 2 | const { notarize } = require("electron-notarize"); 3 | 4 | exports.default = async function notarizing(context) { 5 | const { electronPlatformName, appOutDir } = context; 6 | if (electronPlatformName !== "darwin") { 7 | return; 8 | } 9 | 10 | const appName = context.packager.appInfo.productFilename; 11 | 12 | return await notarize({ 13 | appBundleId: "com.ciderapp.cider", 14 | appPath: `${appOutDir}/${appName}.app`, 15 | appleId: process.env.APPLEID, 16 | appleIdPassword: process.env.APPLEIDPASS, 17 | }); 18 | }; 19 | -------------------------------------------------------------------------------- /resources/version.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Setup the variables needed 4 | if [[ $GH_REQUEST_TOKEN != "" ]]; then 5 | STABLE_SHA=$(curl -H "Authorization: token ${GH_REQUEST_TOKEN}" -s https://api.github.com/repos/ciderapp/Cider/branches/stable | grep '"sha"' | head -1 | cut -d '"' -f 4) 6 | elif [[ $GITHUB_TOKEN != "" ]]; then 7 | STABLE_SHA=$(curl -H "Authorization: token ${GITHUB_TOKEN}" -s https://api.github.com/repos/ciderapp/Cider/branches/stable | grep '"sha"' | head -1 | cut -d '"' -f 4) 8 | else 9 | STABLE_SHA=$(curl -s https://api.github.com/repos/ciderapp/Cider/branches/stable | grep '"sha"' | head -1 | cut -d '"' -f 4) 10 | fi 11 | 12 | SHA_DATE=$(git show -s --format=%ci $STABLE_SHA) 13 | VERSION_POSTFIX=$(git rev-list $STABLE_SHA..HEAD --count --since="$SHA_DATE") 14 | CURRENT_VERSION=$(node -p -e "require('./package.json').version" | cut -d '-' -f 1) 15 | 16 | # Set the version number for commits on main branch 17 | if [[ ($CIRCLE_BRANCH == "main" || $GITHUB_REF_NAME == "main") && $VERSION_POSTFIX -gt 0 ]]; then 18 | NEW_VERSION_NUMBERED="$CURRENT_VERSION-beta.$(printf "%03d\n" $VERSION_POSTFIX)" 19 | NEW_VERSION="${CURRENT_VERSION}-beta.${VERSION_POSTFIX}" 20 | 21 | # Update the version in package.json 22 | if [[ $NO_WRITE_VER == "" && $(node -p -e "require('./package.json').version" | cut -d '.' -f 4) != $VERSION_POSTFIX ]]; then 23 | if [[ $RUNNER_OS == "macOS" ]]; then 24 | sed -i "" -e "s/$CURRENT_VERSION/$NEW_VERSION/" package.json 25 | else 26 | sed -i "0,/$CURRENT_VERSION/s//$NEW_VERSION/" package.json 27 | fi 28 | fi 29 | else 30 | NEW_VERSION_NUMBERED=$CURRENT_VERSION 31 | NEW_VERSION=$CURRENT_VERSION 32 | fi 33 | 34 | echo $NEW_VERSION 35 | 36 | 37 | # Add the version to the environment for CI usage 38 | if [[ $GITHUB_REF_NAME != "" ]] && [[ "$GITHUB_ENV" ]]; then 39 | echo "APP_VERSION=$NEW_VERSION" >>$GITHUB_ENV 40 | echo "RELEASE_VERSION=$NEW_VERSION_NUMBERED" >>$GITHUB_ENV 41 | elif [[ $CIRCLE_BRANCH != "" ]] && [[ "$BASH_ENV" ]]; then 42 | echo "export APP_VERSION=$NEW_VERSION" >>$BASH_ENV 43 | echo "export RELEASE_VERSION=$NEW_VERSION_NUMBERED" >>$BASH_ENV 44 | fi 45 | -------------------------------------------------------------------------------- /src/ciderkit/public.js: -------------------------------------------------------------------------------- 1 | const CiderKit = { 2 | v1: { 3 | musickit: { 4 | async mkv3(route, body, options) { 5 | let opts = { 6 | method: "POST", 7 | cache: "no-cache", 8 | credentials: "same-origin", 9 | headers: { 10 | "Content-Type": "application/json", 11 | }, 12 | redirect: "follow", 13 | referrerPolicy: "no-referrer", 14 | body: {}, 15 | }; 16 | opts.body = JSON.stringify({ 17 | route: route, 18 | body: body, 19 | options: options, 20 | }); 21 | let response = await fetch("./api/musickit/v3", opts); 22 | return response.json(); 23 | }, 24 | }, 25 | }, 26 | }; 27 | -------------------------------------------------------------------------------- /src/main/base/castcontroller.ts: -------------------------------------------------------------------------------- 1 | // @ts-nocheck 2 | import castv2Cli from "castv2-client"; 3 | const RequestResponseController = castv2Cli.RequestResponseController; 4 | 5 | 6 | 7 | export class CiderCastController extends RequestResponseController { 8 | constructor(client: string, sourceId: string, destinationId: string) { 9 | super(client, sourceId, destinationId, "urn:x-cast:com.ciderapp.customdata"); 10 | this.once("close", onclose); 11 | var self = this; 12 | function onclose() { 13 | self.stop(); 14 | } 15 | } 16 | 17 | sendIp(ip: string) { 18 | // TODO: Implement Callback 19 | let data = { 20 | ip: ip, 21 | }; 22 | this.request(data); 23 | } 24 | 25 | kill() { 26 | // TODO: Implement Callback 27 | let data = { 28 | action: "stop", 29 | }; 30 | this.request(data); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/renderer/assets/CiderMenu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/renderer/assets/MissingArtwork.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/renderer/assets/RatingsLove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/RatingsLove.png -------------------------------------------------------------------------------- /src/renderer/assets/angles-left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/angles-right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/arrow-left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/backward.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/banner.png -------------------------------------------------------------------------------- /src/renderer/assets/banner2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/banner2.png -------------------------------------------------------------------------------- /src/renderer/assets/c1-c2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/c1-c2.png -------------------------------------------------------------------------------- /src/renderer/assets/cast_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ic_cast_black_24dp 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/renderer/assets/check.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/chevron-left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/chevron-right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/cider-icons/backward.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/renderer/assets/cider-icons/forward.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/renderer/assets/cider-icons/pause.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/renderer/assets/cider-icons/play.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/renderer/assets/cider-icons/stop.svg: -------------------------------------------------------------------------------- 1 | 2 | 37 | 38 | 46 | -------------------------------------------------------------------------------- /src/renderer/assets/cider-round.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/renderer/assets/explicit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Svg Vector Icons : http://www.onlinewebfonts.com/icon 6 | 7 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/disc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/external-link.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/folder.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/globe.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/hard-drive.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/headphones.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/heart-fill.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/heart.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/home.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/list.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/mic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/music.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/pen-tool.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/play-circle.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/play.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/plugins.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/plus-circle-white.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/plus-circle.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/plus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/radio.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/share-2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/share.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/thumbs-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/thumbs-up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/unheart.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/user.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/video.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/volume-2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/volume.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/x-circle-white.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/x-circle.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/feather/x-circlePng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/feather/x-circlePng.png -------------------------------------------------------------------------------- /src/renderer/assets/feather/zap.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-Black.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-Black.woff -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-Black.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-Black.woff2 -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-BlackItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-BlackItalic.woff -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-BlackItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-BlackItalic.woff2 -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-Bold.woff -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-Bold.woff2 -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-BoldItalic.woff -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-BoldItalic.woff2 -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-ExtraBold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-ExtraBold.woff -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-ExtraBold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-ExtraBold.woff2 -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-ExtraBoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-ExtraBoldItalic.woff -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-ExtraBoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-ExtraBoldItalic.woff2 -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-ExtraLight.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-ExtraLight.woff -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-ExtraLight.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-ExtraLight.woff2 -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-ExtraLightItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-ExtraLightItalic.woff -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-ExtraLightItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-ExtraLightItalic.woff2 -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-Italic.woff -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-Italic.woff2 -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-Light.woff -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-Light.woff2 -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-LightItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-LightItalic.woff -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-LightItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-LightItalic.woff2 -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-Medium.woff -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-Medium.woff2 -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-MediumItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-MediumItalic.woff -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-MediumItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-MediumItalic.woff2 -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-Regular.woff -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-Regular.woff2 -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-SemiBold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-SemiBold.woff -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-SemiBold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-SemiBold.woff2 -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-SemiBoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-SemiBoldItalic.woff -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-SemiBoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-SemiBoldItalic.woff2 -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-Thin.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-Thin.woff -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-Thin.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-Thin.woff2 -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-ThinItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-ThinItalic.woff -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-ThinItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-ThinItalic.woff2 -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-italic.var.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-italic.var.woff2 -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter-roman.var.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter-roman.var.woff2 -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Inter/Inter.var.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Inter/Inter.var.woff2 -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Pretendard/pretendardvariable.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2021 Kil Hyung-jin, with Reserved Font Name Pretendard. 3 | https://github.com/orioncactus/pretendard 4 | 5 | This Font Software is licensed under the SIL Open Font License, Version 1.1. 6 | This license is copied below, and is also available with a FAQ at: 7 | http://scripts.sil.org/OFL 8 | */ 9 | 10 | @font-face { 11 | font-family: "Pretendard Variable"; 12 | font-weight: 45 920; 13 | font-style: normal; 14 | font-display: swap; 15 | src: local("Pretendard Variable"), url("./woff2/PretendardVariable.woff2") format("woff2-variations"); 16 | } 17 | -------------------------------------------------------------------------------- /src/renderer/assets/fonts/Pretendard/woff2/PretendardVariable.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/fonts/Pretendard/woff2/PretendardVariable.woff2 -------------------------------------------------------------------------------- /src/renderer/assets/forward.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/github.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 37 | 41 | 42 | -------------------------------------------------------------------------------- /src/renderer/assets/hamborgar.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/infinity.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/ko_fi.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/renderer/assets/list.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/logocut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/logocut.png -------------------------------------------------------------------------------- /src/renderer/assets/music.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/oobe/maverick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/oobe/maverick.png -------------------------------------------------------------------------------- /src/renderer/assets/oobe/mojave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/oobe/mojave.png -------------------------------------------------------------------------------- /src/renderer/assets/pause.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/pip.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | -------------------------------------------------------------------------------- /src/renderer/assets/play.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/ppe.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/private.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/quote-right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/repeat.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 12 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /src/renderer/assets/repeatOne.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Layer 1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 1 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/renderer/assets/search-alt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/renderer/assets/search.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/settings.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/assets/shuffle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /src/renderer/assets/spatialization.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/renderer/assets/spinner-old.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/spinner-old.gif -------------------------------------------------------------------------------- /src/renderer/assets/spinner.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/renderer/assets/star.svg: -------------------------------------------------------------------------------- 1 | 2 | dark blue star 3 | 4 | 5 | Layer 1 6 | 7 | 8 | 9 | 10 | 11 | 12 | spear 13 | 14 | -------------------------------------------------------------------------------- /src/renderer/assets/transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/assets/transparent.png -------------------------------------------------------------------------------- /src/renderer/assets/twitter.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 37 | 41 | 42 | -------------------------------------------------------------------------------- /src/renderer/audio/impulses/AtmosphereRealizer_BSCBM.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/AtmosphereRealizer_BSCBM.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/AtmosphereRealizer_Cuddle.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/AtmosphereRealizer_Cuddle.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/AtmosphereRealizer_E168_1.2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/AtmosphereRealizer_E168_1.2.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/AtmosphereRealizer_E68_1.5.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/AtmosphereRealizer_E68_1.5.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/AtmosphereRealizer_E68_2.2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/AtmosphereRealizer_E68_2.2.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/AtmosphereRealizer_Natural+.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/AtmosphereRealizer_Natural+.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/AtmosphereRealizer_NaturalStandard.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/AtmosphereRealizer_NaturalStandard.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/AtmosphereRealizer_Z3600.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/AtmosphereRealizer_Z3600.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/AtmosphereRealizer_Z8500_A.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/AtmosphereRealizer_Z8500_A.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/AtmosphereRealizer_Z8500_B.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/AtmosphereRealizer_Z8500_B.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/AtmosphereRealizer_Z8500_C.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/AtmosphereRealizer_Z8500_C.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/CAP_256_FINAL_48k.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/CAP_256_FINAL_48k.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/CAP_64.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/CAP_64.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/CAP_Maikiwi.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/CAP_Maikiwi.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/CAP_Natural.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/CAP_Natural.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/CiderSpatial_BPLK.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/CiderSpatial_BPLK.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/CiderSpatial_Diffuse.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/CiderSpatial_Diffuse.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/CiderSpatial_HW2K.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/CiderSpatial_HW2K.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/CiderSpatial_LIVE_2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/CiderSpatial_LIVE_2.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/CiderSpatial_Maikiwi.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/CiderSpatial_Maikiwi.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/CiderSpatial_MaikiwiPlus.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/CiderSpatial_MaikiwiPlus.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/CiderSpatial_Natural+.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/CiderSpatial_Natural+.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/CiderSpatial_Natural.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/CiderSpatial_Natural.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/CiderSpatial_v69_Standard.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/CiderSpatial_v69_Standard.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/CiderSpatial_v70.422_Maikiwi.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/CiderSpatial_v70.422_Maikiwi.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/CiderSpatial_v71.420_Maikiwi.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/CiderSpatial_v71.420_Maikiwi.wav -------------------------------------------------------------------------------- /src/renderer/audio/impulses/MoondropCHU_Cider.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/audio/impulses/MoondropCHU_Cider.wav -------------------------------------------------------------------------------- /src/renderer/less/appvars.less: -------------------------------------------------------------------------------- 1 | @colorMixRate: 1%; 2 | @transparencyRate: 50%; 3 | 4 | @keyColor: #fc3c44; 5 | @ciderColor: #ff2654; 6 | @baseColor: #1e1e1e; 7 | @baseColorMix: mix(@baseColor, transparent, @transparencyRate); 8 | @sidebarColor: #2e2e2e; 9 | @sidebarColorMix: mix(@sidebarColor, transparent, @transparencyRate); 10 | @appOpacity: 0.15; 11 | 12 | :root { 13 | --baseColor: @baseColor; 14 | --baseColorMix: @baseColorMix; 15 | --sidebarColor: @sidebarColor; 16 | --sidebarColorMix: @sidebarColorMix; 17 | --ciderColor: @ciderColor; 18 | --appOpacity: @appOpacity; 19 | --transparencyRate: @transparencyRate; 20 | --macOSChromeColor: rgb(14 14 14 / 32%); 21 | } 22 | -------------------------------------------------------------------------------- /src/renderer/less/codicon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/less/codicon.ttf -------------------------------------------------------------------------------- /src/renderer/less/compact.less: -------------------------------------------------------------------------------- 1 | #app.compact { 2 | .content-inner { 3 | zoom: 0.95; 4 | } 5 | .app-sidebar-content { 6 | padding: 0px; 7 | 8 | .app-sidebar-header-text { 9 | padding: 6px 10px; 10 | margin: 0px; 11 | } 12 | .app-sidebar-item { 13 | display: flex; 14 | width: 100%; 15 | padding: 8px 12px; 16 | font-size: 13px; 17 | margin: 0px; 18 | border: 1px solid transparent; 19 | border-radius: 0px; 20 | transition: unset; 21 | transform: unset; 22 | 23 | &:active { 24 | background: var(--selected-click); 25 | } 26 | 27 | &::after { 28 | display: none; 29 | } 30 | 31 | &.active { 32 | background: var(--keyColor-disabled); 33 | } 34 | } 35 | .sidebar-icon { 36 | width: 14px; 37 | height: 16px; 38 | margin-right: 8px; 39 | } 40 | 41 | .folder-body { 42 | border-radius: 0px; 43 | padding: 0px; 44 | } 45 | } 46 | 47 | @media (max-width: 951px) { 48 | #app-content { 49 | // zoom: 0.8; 50 | } 51 | } 52 | } 53 | 54 | // if page width is less than 951px 55 | @media (max-width: 951px) { 56 | #app-content { 57 | // zoom: 0.8; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/renderer/less/linux.less: -------------------------------------------------------------------------------- 1 | // Linux 2 | body[platform="linux"] { 3 | #window-controls-container { 4 | //display: none; 5 | } 6 | 7 | .window-controls { 8 | justify-content: flex-end; 9 | align-items: center; 10 | padding-right: 6px; 11 | 12 | > div { 13 | --iconSize: 16px; 14 | 15 | &.close, 16 | &.minmax, 17 | &.minimize, 18 | &.minmax.restore { 19 | background-image: unset !important; 20 | position: relative; 21 | display: grid; 22 | align-content: center; 23 | text-align: center; 24 | height: 36px !important; 25 | width: 36px !important; 26 | border-radius: 50px; 27 | transition: background-color 0.1s ease-in-out; 28 | 29 | &:hover { 30 | background: rgb(200 200 200 / 10%) !important; 31 | } 32 | } 33 | 34 | &.close::before { 35 | font-family: "codicon"; 36 | font-size: var(--iconSize); 37 | content: ""; 38 | } 39 | 40 | &.minmax::before { 41 | font-family: "codicon"; 42 | font-size: var(--iconSize); 43 | content: ""; 44 | } 45 | 46 | &.minimize::before { 47 | font-family: "codicon"; 48 | font-size: var(--iconSize); 49 | content: ""; 50 | } 51 | 52 | &.restore::before { 53 | font-family: "codicon"; 54 | font-size: var(--iconSize); 55 | content: ""; 56 | } 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/renderer/less/macos.less: -------------------------------------------------------------------------------- 1 | body[platform="darwin"] { 2 | html { 3 | background: transparent !important; 4 | } 5 | 6 | &.notransparency::before { 7 | display: none; 8 | } 9 | 10 | #app { 11 | &.simplebg { 12 | background: transparent; 13 | } 14 | 15 | &::before { 16 | display: none; 17 | } 18 | 19 | .app-chrome { 20 | background-color: var(--macOSChromeColor); 21 | } 22 | 23 | &.twopanel { 24 | --chromeHeight1: 55px; 25 | --chromeHeight: calc(var(--chromeHeight1) + var(--chromeHeight2)); 26 | 27 | .app-chrome .app-chrome-item.search { 28 | margin-right: 12px; 29 | } 30 | 31 | .app-chrome .app-mainmenu { 32 | width: 46px; 33 | } 34 | 35 | .app-chrome.chrome-bottom { 36 | background-color: var(--macOSChromeColor); 37 | } 38 | } 39 | 40 | &[window-state="normal"] { 41 | &::after { 42 | position: fixed; 43 | top: 0; 44 | left: 0; 45 | right: 0; 46 | bottom: 0; 47 | box-shadow: inset 0px 0px 0.5px 1px rgb(200 200 200 / 40%); 48 | border-radius: 10px; 49 | content: " "; 50 | z-index: 999999; 51 | pointer-events: none; 52 | } 53 | } 54 | } 55 | 56 | #app-main { 57 | background-color: transparent; 58 | 59 | .app-navigation { 60 | background: transparent; 61 | } 62 | 63 | #app-content { 64 | background-color: #1e1e1e6b; 65 | } 66 | } 67 | 68 | .settings-window.maxed { 69 | .tabs > .col-auto { 70 | transition: padding-top 0.3s linear; 71 | padding-top: var(--chromeHeight1); 72 | } 73 | } 74 | 75 | #apple-music-video-player-controls #player-exit { 76 | margin-top: 18px; 77 | left: 70px; 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /src/renderer/less/macosemu.less: -------------------------------------------------------------------------------- 1 | #app.macosemu { 2 | .app-chrome .app-chrome-item > .window-controls-macos { 3 | @controlSize: 12px; 4 | display: flex; 5 | justify-content: center; 6 | align-items: center; 7 | width: 96px; 8 | @closeClr: rgb(255, 92, 92); 9 | @minmaxClr: rgb(77, 202, 77); 10 | @minClr: rgb(255, 189, 76); 11 | @borderDarken: 55%; 12 | 13 | div { 14 | margin: 4px; 15 | background-color: red; 16 | border-radius: 100%; 17 | flex: 0 0 auto; 18 | background-image: unset !important; 19 | //border: 1px solid white; 20 | &.close { 21 | box-shadow: 0px 0px 0px 1px darken(@closeClr, @borderDarken); 22 | background-color: @closeClr; 23 | width: @controlSize; 24 | height: @controlSize; 25 | } 26 | 27 | &.minimize { 28 | box-shadow: 0px 0px 0px 1px darken(@minClr, @borderDarken); 29 | background-color: @minClr; 30 | width: @controlSize; 31 | height: @controlSize; 32 | } 33 | 34 | &.minmax { 35 | box-shadow: 0px 0px 0px 1px darken(@minmaxClr, 45%); 36 | background-color: @minmaxClr; 37 | width: @controlSize; 38 | height: @controlSize; 39 | } 40 | } 41 | } 42 | .usermenu-body { 43 | left: calc(100vw - 260px); 44 | position: relative; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/renderer/main/app.js: -------------------------------------------------------------------------------- 1 | import { app } from "./vueapp.js"; 2 | import { CiderCache } from "./cidercache.js"; 3 | import { CiderFrontAPI } from "./ciderfrontapi.js"; 4 | import { simulateGamepad } from "./gamepad.js"; 5 | import { CiderAudio } from "../audio/cideraudio.js"; 6 | import { Events } from "./events.js"; 7 | import { wsapi } from "./wsapi_interop.js"; 8 | import { MusicKitTools } from "./musickittools.js"; 9 | import { spawnMica } from "./mica.js"; 10 | import { svgIcon } from "./components/svg-icon.js"; 11 | import { sidebarLibraryItem } from "./components/sidebar-library-item.js"; 12 | import { i18nEditor } from "./components/i18n-editor.js"; 13 | 14 | // Define window objects 15 | window.app = app; 16 | window.MusicKitTools = MusicKitTools; 17 | window.CiderAudio = CiderAudio; 18 | window.CiderCache = CiderCache; 19 | window.CiderFrontAPI = CiderFrontAPI; 20 | window.wsapi = wsapi; 21 | 22 | if (app.cfg.advanced.disableLogging === true) { 23 | window.console = { 24 | log: function () {}, 25 | error: function () {}, 26 | warn: function () {}, 27 | assert: function () {}, 28 | debug: function () {}, 29 | }; 30 | } 31 | 32 | // Mount Vue to #app 33 | app.$mount("#app"); 34 | 35 | // Init CiderAudio and force audiocontext 36 | if (app.cfg.advanced.AudioContext != true) { 37 | app.cfg.advanced.AudioContext = true; 38 | window.location.reload(); 39 | } 40 | 41 | CiderAudio.init(); 42 | 43 | // Import gamepad support 44 | app.simulateGamepad = simulateGamepad; 45 | app.spawnMica = spawnMica; 46 | 47 | Events.InitEvents(); 48 | -------------------------------------------------------------------------------- /src/renderer/main/cidercache.js: -------------------------------------------------------------------------------- 1 | const CiderCache = { 2 | async getCache(file) { 3 | let cache = await ipcRenderer.sendSync("get-cache", file); 4 | if (isJson(cache)) { 5 | cache = JSON.parse(cache); 6 | if (Object.keys(cache).length === 0) { 7 | cache = false; 8 | } 9 | } else { 10 | cache = false; 11 | } 12 | return cache; 13 | }, 14 | async putCache(file, data) { 15 | console.log(`Caching ${file}`); 16 | ipcRenderer.invoke("put-cache", { 17 | file: file, 18 | data: JSON.stringify(data), 19 | }); 20 | return true; 21 | }, 22 | }; 23 | 24 | export { CiderCache }; 25 | -------------------------------------------------------------------------------- /src/renderer/main/ciderfrontapi.js: -------------------------------------------------------------------------------- 1 | const CiderFrontAPI = { 2 | Objects: { 3 | MenuEntry: function () { 4 | this.id = ""; 5 | this.name = ""; 6 | this.onClick = () => {}; 7 | this.top = false; 8 | }, 9 | }, 10 | AddMenuEntry(entry) { 11 | if (entry?.top) { 12 | app.pluginMenuTopEntries.push(entry); 13 | } else { 14 | app.pluginMenuEntries.push(entry); 15 | } 16 | app.pluginInstalled = true; 17 | }, 18 | StyleSheets: { 19 | Add(href) { 20 | console.log("Adding stylesheet: " + href); 21 | let id = uuidv4(); 22 | let link = document.createElement("link"); 23 | link.rel = "stylesheet/less"; 24 | link.type = "text/css"; 25 | link.href = href; 26 | link.setAttribute("css-id", id); 27 | // insert the link before document.querySelector("#userTheme") in head 28 | document.querySelector("head").insertBefore(link, document.querySelector("#userTheme")); 29 | less.registerStylesheetsImmediately(); 30 | less.refresh(true, true, true); 31 | return link; 32 | }, 33 | }, 34 | }; 35 | 36 | export { CiderFrontAPI }; 37 | -------------------------------------------------------------------------------- /src/renderer/main/components/sidebar-library-item.js: -------------------------------------------------------------------------------- 1 | import { html } from "../html.js"; 2 | 3 | export const sidebarLibraryItem = Vue.component("sidebar-library-item", { 4 | template: html` 5 | 9 | `, 10 | props: { 11 | name: { 12 | type: String, 13 | required: true, 14 | }, 15 | page: { 16 | type: String, 17 | required: true, 18 | }, 19 | svgIcon: { 20 | type: String, 21 | required: false, 22 | default: "", 23 | }, 24 | svgIconName: { 25 | type: String, 26 | required: false, 27 | }, 28 | cdClick: { 29 | type: Function, 30 | required: false, 31 | }, 32 | }, 33 | data: function () { 34 | return { 35 | app: app, 36 | svgIconData: "", 37 | }; 38 | }, 39 | async mounted() { 40 | if (this.svgIcon) { 41 | this.svgIconData = this.svgIcon; 42 | } 43 | }, 44 | methods: {}, 45 | }); 46 | -------------------------------------------------------------------------------- /src/renderer/main/components/svg-icon.js: -------------------------------------------------------------------------------- 1 | import { html } from "../html.js"; 2 | 3 | export const svgIcon = Vue.component("svg-icon", { 4 | template: html`
`, 5 | props: { 6 | name: { 7 | type: String, 8 | required: false, 9 | }, 10 | classes: { 11 | type: String, 12 | required: false, 13 | }, 14 | url: { 15 | type: String, 16 | required: true, 17 | default: "./assets/repeat.svg", 18 | }, 19 | }, 20 | }); 21 | -------------------------------------------------------------------------------- /src/renderer/main/html.js: -------------------------------------------------------------------------------- 1 | export function html(str) { 2 | return str[0]; 3 | } 4 | -------------------------------------------------------------------------------- /src/renderer/main/musickittools.js: -------------------------------------------------------------------------------- 1 | const MusicKitTools = { 2 | async v3Backend({ route = "", getBody = {}, options = {} }) { 3 | return await await ipcRenderer.invoke("mkv3", { 4 | token: MusicKit.getInstance().developerToken, 5 | route: route, 6 | mediaToken: MusicKit.getInstance().musicUserToken, 7 | GETBody: getBody, 8 | }); 9 | }, 10 | async v3Continuous({ href, options = {}, reqOptions = {}, onProgress = () => {}, onError = () => {}, onSuccess = () => {} } = {}) { 11 | let returnData = []; 12 | 13 | async function sendReq(href, options) { 14 | const response = await app.mk.api.v3.music(href, options).catch((error) => onError); 15 | 16 | returnData = returnData.concat(response.data.data); 17 | if (response.data.next) { 18 | onProgress({ 19 | response: response, 20 | total: returnData.length, 21 | }); 22 | try { 23 | await sendReq(response.data.next, options); 24 | } catch (e) { 25 | await sendReq(response.data.next, options); 26 | } 27 | } 28 | } 29 | 30 | await sendReq(href, options); 31 | onSuccess(returnData); 32 | return returnData; 33 | }, 34 | getHeader() { 35 | return new Headers({ 36 | Authorization: "Bearer " + MusicKit.getInstance().developerToken, 37 | Accept: "application/json", 38 | "Content-Type": "application/json", 39 | "Music-User-Token": "" + MusicKit.getInstance().musicUserToken, 40 | }); 41 | }, 42 | }; 43 | 44 | export { MusicKitTools }; 45 | -------------------------------------------------------------------------------- /src/renderer/main/vuex-store.js: -------------------------------------------------------------------------------- 1 | const store = new Vuex.Store({ 2 | state: { 3 | windowRelativeScale: 1, 4 | library: { 5 | // songs: ipcRenderer.sendSync("get-library-songs"), 6 | // albums: ipcRenderer.sendSync("get-library-albums"), 7 | // recentlyAdded: ipcRenderer.sendSync("get-library-recentlyAdded"), 8 | // playlists: ipcRenderer.sendSync("get-library-playlists") 9 | }, 10 | pageState: { 11 | recentlyAdded: { 12 | loaded: false, 13 | nextUrl: null, 14 | items: [], 15 | size: "normal", 16 | }, 17 | settings: { 18 | currentTabIndex: 0, 19 | fullscreen: false, 20 | }, 21 | scrollPos: { 22 | limit: 10, 23 | pos: [], 24 | }, 25 | }, 26 | artwork: { 27 | playerLCD: "", 28 | }, 29 | }, 30 | mutations: { 31 | resetRecentlyAdded(state) { 32 | state.pageState.recentlyAdded.loaded = false; 33 | state.pageState.recentlyAdded.nextUrl = null; 34 | state.pageState.recentlyAdded.items = []; 35 | }, 36 | setLCDArtwork(state, artwork) { 37 | state.artwork.playerLCD = artwork; 38 | }, 39 | setPagePos(state, pageState = {}) { 40 | let cached = state.pageState.scrollPos.pos.find((page) => { 41 | return page.href === pageState.href; 42 | }); 43 | if (cached) { 44 | state.pageState.scrollPos.pos.find((page) => { 45 | if (page.href === pageState.href) { 46 | page.position = pageState.position; 47 | } 48 | }); 49 | return; 50 | } 51 | state.pageState.scrollPos.pos.push({ 52 | href: pageState.href, 53 | position: pageState.position, 54 | }); 55 | if (state.pageState.scrollPos.pos.length > state.pageState.scrollPos.limit) { 56 | pages.value.shift(); 57 | } 58 | return; 59 | }, 60 | }, 61 | }); 62 | 63 | export { store }; 64 | -------------------------------------------------------------------------------- /src/renderer/sounds/btn1.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/sounds/btn1.ogg -------------------------------------------------------------------------------- /src/renderer/sounds/confirm.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/sounds/confirm.ogg -------------------------------------------------------------------------------- /src/renderer/sounds/hover.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/sounds/hover.ogg -------------------------------------------------------------------------------- /src/renderer/themes/WIP.md: -------------------------------------------------------------------------------- 1 | # Themes (WIP) 2 | 3 | ## Making a theme 4 | * If one does not already exist, create a new theme directory in the user data folder. 5 | * **Windows:** `%appdata%/Cider/themes` 6 | * **Mac:** `~/Library/Application Support/Cider/themes` 7 | * **Linux:** `~/.config/Cider/themes` 8 | * Create a `theme.less` file with the name of the theme. 9 | * In Cider, select the theme in the settings. 10 | * To enable hot reloading for the theme, open the DevTools and enter `less.watch()` in the console. 11 | 12 | ## Resources 13 | * The default styles.less can be found in: [src/renderer/style.less](https://github.com/ciderapp/Cider/tree/main/src/renderer/style.less) 14 | * [Less.js documentation](https://lesscss.org/) -------------------------------------------------------------------------------- /src/renderer/themes/compactui.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/themes/compactui.less -------------------------------------------------------------------------------- /src/renderer/themes/dark.less: -------------------------------------------------------------------------------- 1 | #app { 2 | --color1: #111; 3 | } 4 | -------------------------------------------------------------------------------- /src/renderer/themes/default.less: -------------------------------------------------------------------------------- 1 | // Default theme 2 | -------------------------------------------------------------------------------- /src/renderer/themes/grain.less: -------------------------------------------------------------------------------- 1 | body.notransparency::before { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /src/renderer/themes/inline_drawer.less: -------------------------------------------------------------------------------- 1 | &:not(.modular-fs) { 2 | .app-drawer { 3 | border-radius: 0px; 4 | top: 0; 5 | right: 0; 6 | height: 100%; 7 | box-shadow: unset; 8 | border-left: 1px solid var(--color2); 9 | background: var(--color1); 10 | margin-right: 0px; 11 | position: relative; 12 | } 13 | 14 | .drawertransition-enter-active, 15 | .drawertransition-leave-active { 16 | transition: 17 | margin 0.25s var(--appleEase), 18 | opacity 0.25s var(--appleEase); 19 | } 20 | 21 | .drawertransition-enter, 22 | .drawertransition-leave-to { 23 | margin-right: -300px; 24 | } 25 | 26 | @media screen and (max-width: 1120px) { 27 | .app-drawer { 28 | margin-right: 0px; 29 | position: absolute; 30 | } 31 | 32 | .drawertransition-enter-active, 33 | .drawertransition-leave-active { 34 | transition: 35 | right 0.25s var(--appleEase), 36 | opacity 0.25s var(--appleEase); 37 | } 38 | 39 | .drawertransition-enter, 40 | .drawertransition-leave-to { 41 | right: -300px; 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/renderer/views/components/airplay-modal.ejs: -------------------------------------------------------------------------------- 1 | 24 | 46 | -------------------------------------------------------------------------------- /src/renderer/views/components/app-content.ejs: -------------------------------------------------------------------------------- 1 | 39 | 40 | 51 | -------------------------------------------------------------------------------- /src/renderer/views/components/artist-chip.ejs: -------------------------------------------------------------------------------- 1 | 19 | 20 | 54 | -------------------------------------------------------------------------------- /src/renderer/views/components/artwork-material.ejs: -------------------------------------------------------------------------------- 1 | 6 | 7 | 37 | -------------------------------------------------------------------------------- /src/renderer/views/components/editorialNotes.ejs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/renderer/views/components/hello-world.ejs: -------------------------------------------------------------------------------- 1 | 4 | 5 | 15 | -------------------------------------------------------------------------------- /src/renderer/views/components/karaoke-in.ejs: -------------------------------------------------------------------------------- 1 | 21 | -------------------------------------------------------------------------------- /src/renderer/views/components/mediaitem-hrect.ejs: -------------------------------------------------------------------------------- 1 | 25 | 26 | 38 | -------------------------------------------------------------------------------- /src/renderer/views/components/mediaitem-info.ejs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/views/components/mediaitem-info.ejs -------------------------------------------------------------------------------- /src/renderer/views/components/mediaitem-scroller-horizontal-large.ejs: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 15 | -------------------------------------------------------------------------------- /src/renderer/views/components/mediaitem-scroller-horizontal-mvview.ejs: -------------------------------------------------------------------------------- 1 | 21 | 22 | 23 | 55 | -------------------------------------------------------------------------------- /src/renderer/views/components/mediaitem-scroller-horizontal-sp.ejs: -------------------------------------------------------------------------------- 1 | 11 | 12 | 27 | -------------------------------------------------------------------------------- /src/renderer/views/components/mediaitem-scroller-horizontal.ejs: -------------------------------------------------------------------------------- 1 | 7 | 8 | 33 | -------------------------------------------------------------------------------- /src/renderer/views/components/moreinfo-modal.ejs: -------------------------------------------------------------------------------- 1 | 16 | 17 | 43 | -------------------------------------------------------------------------------- /src/renderer/views/components/playlists.ejs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/renderer/views/components/playlists.ejs -------------------------------------------------------------------------------- /src/renderer/views/components/plugin-menu.ejs: -------------------------------------------------------------------------------- 1 | 23 | 24 | 43 | -------------------------------------------------------------------------------- /src/renderer/views/components/qrcode-modal.ejs: -------------------------------------------------------------------------------- 1 | 14 | 15 | 35 | -------------------------------------------------------------------------------- /src/renderer/views/pages/apple-account-settings.ejs: -------------------------------------------------------------------------------- 1 | 8 | 19 | -------------------------------------------------------------------------------- /src/renderer/views/pages/connect-linked.ejs: -------------------------------------------------------------------------------- 1 | 6 | 20 | -------------------------------------------------------------------------------- /src/renderer/views/pages/library-videos.ejs: -------------------------------------------------------------------------------- 1 | 19 | 20 | 39 | -------------------------------------------------------------------------------- /src/renderer/views/pages/listen_now.ejs: -------------------------------------------------------------------------------- 1 | 9 | 10 | 24 | -------------------------------------------------------------------------------- /src/renderer/views/pages/madeforyou.ejs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

{{$root.getLz('home.madeForYou')}}

5 |
6 |
7 |
8 | 9 | 10 |
11 |
12 | -------------------------------------------------------------------------------- /src/renderer/views/pages/plugin-renderer.ejs: -------------------------------------------------------------------------------- 1 | 23 | -------------------------------------------------------------------------------- /src/renderer/views/pages/remote-pair.ejs: -------------------------------------------------------------------------------- 1 | 6 | 20 | -------------------------------------------------------------------------------- /src/renderer/views/pages/webview.ejs: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /src/renderer/views/pages/zoo.ejs: -------------------------------------------------------------------------------- 1 | 29 | 47 | -------------------------------------------------------------------------------- /src/renderer/views/svg/arrow-up.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/renderer/views/svg/cast.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/renderer/views/svg/check.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/renderer/views/svg/chevron-left.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/renderer/views/svg/chevron-right.svg: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /src/renderer/views/svg/explicit.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /src/renderer/views/svg/external-link.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/renderer/views/svg/fullscreen.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/renderer/views/svg/grid.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/renderer/views/svg/headphones.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /src/renderer/views/svg/info.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/renderer/views/svg/list.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/renderer/views/svg/log-out.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/renderer/views/svg/more.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /src/renderer/views/svg/pip.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /src/renderer/views/svg/play.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /src/renderer/views/svg/playlist.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/renderer/views/svg/plus.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/renderer/views/svg/quote-right.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/renderer/views/svg/redo.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/renderer/views/svg/settings.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /src/renderer/views/svg/smartphone.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/renderer/views/svg/speaker.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/renderer/views/svg/x.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/web-remote/assets/Grabber.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/web-remote/assets/MissingArtwork.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/web-remote/assets/arrow-left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/web-remote/assets/backward.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/web-remote/assets/forward.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/web-remote/assets/infinity.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/web-remote/assets/list.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/web-remote/assets/pause.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/web-remote/assets/play.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/web-remote/assets/quote-right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/web-remote/assets/repeat.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 12 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /src/web-remote/assets/repeatOne.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Layer 1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 1 26 | 27 | -------------------------------------------------------------------------------- /src/web-remote/assets/search.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/web-remote/assets/shuffle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /src/web-remote/assets/volume-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/web-remote/assets/volume-up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/web-remote/assets/x.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/web-remote/cider-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/web-remote/cider-icon.png -------------------------------------------------------------------------------- /src/web-remote/icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/web-remote/icon-192x192.png -------------------------------------------------------------------------------- /src/web-remote/icon-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/web-remote/icon-256x256.png -------------------------------------------------------------------------------- /src/web-remote/icon-384x384.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/web-remote/icon-384x384.png -------------------------------------------------------------------------------- /src/web-remote/icon-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/web-remote/icon-512x512.png -------------------------------------------------------------------------------- /src/web-remote/launch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ciderapp/Cider/953bb5a9e26080bba2bb20438f0ddf38b0a8b260/src/web-remote/launch.png -------------------------------------------------------------------------------- /src/web-remote/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "theme_color": "#000000", 3 | "background_color": "#000000", 4 | "display": "standalone", 5 | "scope": "/", 6 | "start_url": "/", 7 | "name": "Cider Remote", 8 | "short_name": "Cider Remote", 9 | "description": "Cider Remote", 10 | "developer": { 11 | "name": "Cider Collective", 12 | "url": "https://cider.sh?utm-source=manifest" 13 | }, 14 | "homepage_url": "https://cider.sh?utm-source=manifest", 15 | "icons": [ 16 | { 17 | "src": "/icon-192x192.png", 18 | "sizes": "192x192", 19 | "type": "image/png" 20 | }, 21 | { 22 | "src": "/icon-256x256.png", 23 | "sizes": "256x256", 24 | "type": "image/png" 25 | }, 26 | { 27 | "src": "/icon-384x384.png", 28 | "sizes": "384x384", 29 | "type": "image/png" 30 | }, 31 | { 32 | "src": "/icon-512x512.png", 33 | "sizes": "512x512", 34 | "type": "image/png" 35 | } 36 | ], 37 | "protocol_handlers": [ 38 | { 39 | "protocol": "ext+cider", 40 | "name": "Cider", 41 | "uriTemplate": "/?url=%s" 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /steam-deck.json: -------------------------------------------------------------------------------- 1 | { 2 | "electronVersion": "18.3.12", 3 | "electronDownload": { 4 | "version": "18.3.12+wvcus", 5 | "mirror": "https://github.com/castlabs/electron-releases/releases/download/v" 6 | }, 7 | "appId": "cider", 8 | "protocols": [ 9 | { 10 | "name": "Cider", 11 | "schemes": ["ame", "cider", "itms", "itmss", "musics", "music"] 12 | } 13 | ], 14 | "extends": null, 15 | "files": ["**/*", "./src/**/*", "./resources/icons/icon.*"], 16 | "linux": { 17 | "target": ["AppImage", "flatpak", "pacman"], 18 | "synopsis": "A new look into listening and enjoying music in style and performance. ", 19 | "category": "AudioVideo", 20 | "icon": "cider", 21 | "executableName": "cider" 22 | }, 23 | "appx": { 24 | "applicationId": "CiderAlpha", 25 | "publisher": "CN=CiderCollective, OID.2.25.311729368913984317654407730594956997722=1", 26 | "displayName": "Cider", 27 | "identityName": "CiderCollective.CiderAlpha", 28 | "backgroundColor": "transparent", 29 | "setBuildNumber": true 30 | }, 31 | "win": { 32 | "target": ["appx"], 33 | "icon": "resources/icons/icon.ico" 34 | }, 35 | "directories": { 36 | "buildResources": ".", 37 | "output": "dist" 38 | }, 39 | "mac": { 40 | "icon": "./resources/icons/icon.icns", 41 | "category": "public.app-category.music", 42 | "entitlements": "resources/entitlements.mac.plist", 43 | "darkModeSupport": true 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "outDir": "build", 4 | "inlineSources": true, 5 | "allowJs": true, 6 | "esModuleInterop": true, 7 | "module": "NodeNext", 8 | "moduleResolution": "NodeNext", 9 | // Needed to address https://github.com/quasarframework/app-extension-typescript/issues/36 10 | "noEmit": false, 11 | "resolveJsonModule": true, 12 | // Avoid cross-os errors due to inconsistent file casing 13 | "forceConsistentCasingInFileNames": true, 14 | "sourceMap": true, 15 | "strict": true, 16 | "target": "esnext", 17 | "isolatedModules": true, 18 | "useDefineForClassFields": true, 19 | // Fix Volar issue https://github.com/johnsoncodehk/volar/issues/1153 20 | "jsx": "preserve", 21 | "lib": ["esnext", "dom"], 22 | "experimentalDecorators": true, 23 | "baseUrl": "./", 24 | "allowSyntheticDefaultImports": true, 25 | "noImplicitThis": true, 26 | "skipLibCheck": true /* Skip type checking of declaration files. */, 27 | "typeRoots": ["node_modules/musickit-typescript", "node_modules/@types"], 28 | }, 29 | "include": ["src/**/*.ts"], 30 | } 31 | -------------------------------------------------------------------------------- /winget.json: -------------------------------------------------------------------------------- 1 | { 2 | "electronVersion": "24.3.0", 3 | "electronDownload": { 4 | "version": "24.3.0+wvcus", 5 | "mirror": "https://github.com/castlabs/electron-releases/releases/download/v" 6 | }, 7 | "appId": "cider", 8 | "afterPack": "./resources/afterPack.cjs", 9 | "afterSign": "./resources/notarize.cjs", 10 | "protocols": [ 11 | { 12 | "name": "Cider", 13 | "schemes": ["ame", "cider", "itms", "itmss", "musics", "music"] 14 | } 15 | ], 16 | "extends": null, 17 | "files": ["./build/**/*", "./src/**/*", "./resources/icons/**/*"], 18 | "nsis": { 19 | "oneClick": true, 20 | "perMachine": false, 21 | "deleteAppDataOnUninstall": true, 22 | "artifactName": "${productName}-Setup-winget-${version}.${ext}" 23 | }, 24 | "win": { 25 | "target": ["nsis"], 26 | "icon": "resources/icons/icon.ico" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /workbox-config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | globDirectory: "src/renderer/", 3 | swDest: "src/renderer/sw.js", 4 | // Define runtime caching rules. 5 | runtimeCaching: [ 6 | { 7 | // Match any request that ends with .png, .jpg, .jpeg or .svg. 8 | urlPattern: /\.(?:png|jpg|jpeg|svg|webp)$/, 9 | 10 | // Apply a cache-first strategy. 11 | handler: "CacheFirst", 12 | 13 | options: { 14 | // Use a custom cache name. 15 | cacheName: "imageinternet", 16 | // Only cache 10 images. 17 | }, 18 | }, 19 | { 20 | urlPattern: /https:\/\/is[0-9]-ssl\.mzstatic\.com\/image+/, 21 | handler: "CacheFirst", 22 | }, 23 | { 24 | urlPattern: /^https:\/\/store-\d{3}\.blobstore\.apple\.com\/.{65}\/image+/, 25 | handler: "CacheFirst", 26 | }, 27 | ], 28 | ignoreURLParametersMatching: [/^utm_/, /^fbclid$/, /^X-Amz-Algorithm/, /^X-Amz-Date/, /^X-Amz-SignedHeaders/, /^X-Amz-Expires/, /^X-Amz-Credential/, /^X-Amz-Signature/], 29 | }; 30 | --------------------------------------------------------------------------------