Merge branch 'ciderapp:main' into main
This commit is contained in:
commit
a174cb9d32
19 changed files with 338 additions and 184 deletions
|
@ -3,7 +3,7 @@ version: 2.1
|
||||||
executors:
|
executors:
|
||||||
cider-ci:
|
cider-ci:
|
||||||
docker:
|
docker:
|
||||||
- image: circleci/node:16
|
- image: cimg/node:lts-browsers
|
||||||
working_directory: ~/Cider
|
working_directory: ~/Cider
|
||||||
|
|
||||||
orbs: # Add orbs to your configuration
|
orbs: # Add orbs to your configuration
|
||||||
|
@ -15,15 +15,9 @@ jobs:
|
||||||
executor: cider-ci
|
executor: cider-ci
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
# - run:
|
|
||||||
# name: Rename Repository
|
|
||||||
# command: sed -i 's/github:ciderapp\/Cider/github:ciderapp\/cider-releases/' package.json
|
|
||||||
- run:
|
- run:
|
||||||
name: Update Version Number of App
|
name: Update Version Number of App
|
||||||
command: sudo chmod +x resources/version.sh && ./resources/version.sh || true
|
command: sudo chmod +x resources/version.sh && ./resources/version.sh || true
|
||||||
- run:
|
|
||||||
name: Update Package Managers
|
|
||||||
command: sudo npm update -g npm yarn
|
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
name: Restore Yarn Package Cache
|
name: Restore Yarn Package Cache
|
||||||
keys:
|
keys:
|
||||||
|
@ -60,9 +54,6 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- attach_workspace:
|
- attach_workspace:
|
||||||
at: ~/Cider
|
at: ~/Cider
|
||||||
# - run:
|
|
||||||
# name: Fix Versioning and Add Channel
|
|
||||||
# command: yarn circle:script
|
|
||||||
- run:
|
- run:
|
||||||
name: Generate Builds (Linux)
|
name: Generate Builds (Linux)
|
||||||
command: yarn electron-builder -l -p never
|
command: yarn electron-builder -l -p never
|
||||||
|
@ -89,9 +80,6 @@ jobs:
|
||||||
sudo dpkg --add-architecture i386
|
sudo dpkg --add-architecture i386
|
||||||
sudo apt-get update -y
|
sudo apt-get update -y
|
||||||
sudo apt-get install -y wine32
|
sudo apt-get install -y wine32
|
||||||
# - run:
|
|
||||||
# name: Fix Versioning and Add Channel
|
|
||||||
# command: yarn circle:script
|
|
||||||
- run:
|
- run:
|
||||||
name: Generate Builds (Windows)
|
name: Generate Builds (Windows)
|
||||||
command: yarn electron-builder -w --x64 -p never
|
command: yarn electron-builder -w --x64 -p never
|
||||||
|
@ -117,9 +105,6 @@ jobs:
|
||||||
sudo dpkg --add-architecture i386
|
sudo dpkg --add-architecture i386
|
||||||
sudo apt-get update -y
|
sudo apt-get update -y
|
||||||
sudo apt-get install -y wine32
|
sudo apt-get install -y wine32
|
||||||
# - run:
|
|
||||||
# name: Fix Versioning and Add Channel
|
|
||||||
# command: yarn circle:script
|
|
||||||
- run:
|
- run:
|
||||||
name: Generate Builds (Winget)
|
name: Generate Builds (Winget)
|
||||||
command: yarn electron-builder --win -c winget.json -p never
|
command: yarn electron-builder --win -c winget.json -p never
|
||||||
|
@ -156,9 +141,6 @@ jobs:
|
||||||
mv ~/Cider/dist/*.blockmap ~/Cider/dist/artifacts
|
mv ~/Cider/dist/*.blockmap ~/Cider/dist/artifacts
|
||||||
- store_artifacts:
|
- store_artifacts:
|
||||||
path: ~/Cider/dist/artifacts
|
path: ~/Cider/dist/artifacts
|
||||||
# - run:
|
|
||||||
# name: Fix Versioning and Add Channel
|
|
||||||
# command: yarn circle:script
|
|
||||||
- run:
|
- run:
|
||||||
name: Update Version Number of App
|
name: Update Version Number of App
|
||||||
command: sudo chmod +x resources/version.sh && ./resources/version.sh || true
|
command: sudo chmod +x resources/version.sh && ./resources/version.sh || true
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"i18n.languageName": "English (UK)",
|
"i18n.languageName": "English (UK)",
|
||||||
"i18n.languageNameEnglish": "English (UK)",
|
"i18n.languageNameEnglish": "English (UK)",
|
||||||
"i18n.category": "main",
|
"i18n.category": "main",
|
||||||
"i18n.authors": "Core, inalone, nosh118",
|
"i18n.authors": "Core, inalone, nosh118, booploops",
|
||||||
"date.format": "${d} ${m}, ${y}",
|
"date.format": "${d} ${m}, ${y}",
|
||||||
"term.equalizer": "Equaliser",
|
"term.equalizer": "Equaliser",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "Enabling AudioContext functionality will allow for extended audio features like Audio Normalisation, Equalisers and Visualisers - however on some systems this may cause stuttering in audio tracks.",
|
"settings.option.audio.enableAdvancedFunctionality.description": "Enabling AudioContext functionality will allow for extended audio features like Audio Normalisation, Equalisers and Visualisers - however on some systems this may cause stuttering in audio tracks.",
|
||||||
|
@ -14,5 +14,14 @@
|
||||||
"term.track": {
|
"term.track": {
|
||||||
"one" : "song",
|
"one" : "song",
|
||||||
"other" : "songs"
|
"other" : "songs"
|
||||||
}
|
},
|
||||||
|
"home.syncFavorites": "Sync Favourites",
|
||||||
|
"home.syncFavorites.gettingArtists": "Getting Favourited Artists...",
|
||||||
|
"action.addToFavorites": "Add to Favourites",
|
||||||
|
"action.favorite": "Favourite",
|
||||||
|
"action.removeFavorite": "Remove Favourite",
|
||||||
|
"settings.option.visual.customAccentColor": "Custom Accent Colour",
|
||||||
|
"settings.option.visual.accentColor": "Accent Colour",
|
||||||
|
"settings.option.visual.windowColor": "Window Tint Colour",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.color": "Colour Tint"
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,6 +53,7 @@ export class BrowserWindow {
|
||||||
dev: app.isPackaged,
|
dev: app.isPackaged,
|
||||||
osRelease: os.release(),
|
osRelease: os.release(),
|
||||||
updatable: !process.windowsStore || !process.mas,
|
updatable: !process.windowsStore || !process.mas,
|
||||||
|
useV3: utils.getStoreValue('advanced.experiments').includes("ampv3"),
|
||||||
components: [
|
components: [
|
||||||
"pages/podcasts",
|
"pages/podcasts",
|
||||||
"pages/apple-account-settings",
|
"pages/apple-account-settings",
|
||||||
|
@ -849,6 +850,7 @@ export class BrowserWindow {
|
||||||
})
|
})
|
||||||
|
|
||||||
ipcMain.handle("get-github-plugin", async (event, url) => {
|
ipcMain.handle("get-github-plugin", async (event, url) => {
|
||||||
|
await this.StopWatcher()
|
||||||
const returnVal = {
|
const returnVal = {
|
||||||
success: true,
|
success: true,
|
||||||
theme: null,
|
theme: null,
|
||||||
|
@ -893,9 +895,11 @@ export class BrowserWindow {
|
||||||
returnVal.success = false;
|
returnVal.success = false;
|
||||||
}
|
}
|
||||||
BrowserWindow.win.webContents.send("plugin-installed", returnVal);
|
BrowserWindow.win.webContents.send("plugin-installed", returnVal);
|
||||||
|
this.StartWatcher(utils.getPath('themes'));
|
||||||
});
|
});
|
||||||
|
|
||||||
ipcMain.handle("get-github-theme", async (event, url) => {
|
ipcMain.handle("get-github-theme", async (event, url) => {
|
||||||
|
await this.StopWatcher()
|
||||||
const returnVal = {
|
const returnVal = {
|
||||||
success: true,
|
success: true,
|
||||||
theme: null,
|
theme: null,
|
||||||
|
@ -940,6 +944,8 @@ export class BrowserWindow {
|
||||||
returnVal.success = false;
|
returnVal.success = false;
|
||||||
}
|
}
|
||||||
BrowserWindow.win.webContents.send("theme-installed", returnVal);
|
BrowserWindow.win.webContents.send("theme-installed", returnVal);
|
||||||
|
this.StartWatcher(utils.getPath('themes'));
|
||||||
|
BrowserWindow.win.webContents.send("theme-update", "")
|
||||||
});
|
});
|
||||||
|
|
||||||
ipcMain.on("get-themes", (event, _key) => {
|
ipcMain.on("get-themes", (event, _key) => {
|
||||||
|
|
|
@ -444,6 +444,7 @@
|
||||||
.mediaitem-artwork {
|
.mediaitem-artwork {
|
||||||
border-radius: var(--mediaItemRadiusSmall);
|
border-radius: var(--mediaItemRadiusSmall);
|
||||||
}
|
}
|
||||||
|
|
||||||
.overlay-play {
|
.overlay-play {
|
||||||
background: rgba(0, 0, 0, 0.5);
|
background: rgba(0, 0, 0, 0.5);
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
|
@ -957,6 +958,7 @@
|
||||||
|
|
||||||
/* mediaitem-square */
|
/* mediaitem-square */
|
||||||
.cd-mediaitem-square {
|
.cd-mediaitem-square {
|
||||||
|
--transitionDuration: .25s;
|
||||||
--scaleRate: 1.25;
|
--scaleRate: 1.25;
|
||||||
--scaleRateArtwork: 1;
|
--scaleRateArtwork: 1;
|
||||||
width: 200px;
|
width: 200px;
|
||||||
|
@ -968,6 +970,7 @@
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
|
transition: width var(--transitionDuration) linear, height var(--transitionDuration) linear;
|
||||||
|
|
||||||
.artwork-container {
|
.artwork-container {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
@ -982,6 +985,7 @@
|
||||||
flex: 0 0 auto;
|
flex: 0 0 auto;
|
||||||
margin: 6px;
|
margin: 6px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
transition: width var(--transitionDuration) linear, height var(--transitionDuration) linear;
|
||||||
|
|
||||||
.mediaitem-artwork {
|
.mediaitem-artwork {
|
||||||
box-shadow: unset;
|
box-shadow: unset;
|
||||||
|
@ -1055,7 +1059,10 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 1600px) {
|
&:not(.mediaitem-card):not(.mediaitem-brick):not(.mediaitem-video):not(.noscale) {
|
||||||
|
@media (min-width: 1460px) {
|
||||||
|
--scaleRate: 1.1;
|
||||||
|
--scaleRateArtwork: 0.9;
|
||||||
width: calc(200px * var(--scaleRate));
|
width: calc(200px * var(--scaleRate));
|
||||||
height: calc(200px * var(--scaleRate));
|
height: calc(200px * var(--scaleRate));
|
||||||
|
|
||||||
|
@ -1065,6 +1072,20 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1550px) {
|
||||||
|
--scaleRate: 1.25;
|
||||||
|
--scaleRateArtwork: 1;
|
||||||
|
width: calc(200px * var(--scaleRate));
|
||||||
|
height: calc(200px * var(--scaleRate));
|
||||||
|
|
||||||
|
.artwork-container > .artwork {
|
||||||
|
width: calc(190px * var(--scaleRateArtwork));
|
||||||
|
height: calc(190px * var(--scaleRateArtwork));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
.info-rect {
|
.info-rect {
|
||||||
width: 90%;
|
width: 90%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
@ -1112,8 +1133,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
&.mediaitem-video {
|
&.mediaitem-video {
|
||||||
--scaleRate: 1.25;
|
|
||||||
--scaleRateArtwork: 1.25;
|
|
||||||
height: 200px;
|
height: 200px;
|
||||||
width: 240px;
|
width: 240px;
|
||||||
|
|
||||||
|
@ -1122,13 +1141,29 @@
|
||||||
width: 212px;
|
width: 212px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 1600px) {
|
&:not(.noscale) {
|
||||||
|
@media (min-width: 1460px) {
|
||||||
|
--scaleRate: 1.1;
|
||||||
|
--scaleRateArtwork: 1.1;
|
||||||
width: calc(240px * var(--scaleRate));
|
width: calc(240px * var(--scaleRate));
|
||||||
height: calc(200px * var(--scaleRate));
|
height: calc(200px * var(--scaleRate));
|
||||||
|
|
||||||
.artwork-container > .artwork {
|
.artwork-container > .artwork {
|
||||||
width: calc(212px * var(--scaleRateArtwork));
|
width: calc(220px * var(--scaleRateArtwork));
|
||||||
height: calc(120px * var(--scaleRateArtwork));
|
height: calc(123px * var(--scaleRateArtwork));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1550px) {
|
||||||
|
--scaleRate: 1.25;
|
||||||
|
--scaleRateArtwork: 1.25;
|
||||||
|
width: calc(240px * var(--scaleRate));
|
||||||
|
height: calc(200px * var(--scaleRate));
|
||||||
|
|
||||||
|
.artwork-container > .artwork {
|
||||||
|
width: calc(220px * var(--scaleRateArtwork));
|
||||||
|
height: calc(123px * var(--scaleRateArtwork));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1141,6 +1176,32 @@
|
||||||
height: 123px;
|
height: 123px;
|
||||||
width: 220px;
|
width: 220px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&:not(.noscale) {
|
||||||
|
@media (min-width: 1460px) {
|
||||||
|
--scaleRate: 1.1;
|
||||||
|
--scaleRateArtwork: 1.1;
|
||||||
|
width: calc(240px * var(--scaleRate));
|
||||||
|
height: calc(200px * var(--scaleRate));
|
||||||
|
|
||||||
|
.artwork-container > .artwork {
|
||||||
|
width: calc(220px * var(--scaleRateArtwork));
|
||||||
|
height: calc(123px * var(--scaleRateArtwork));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1550px) {
|
||||||
|
--scaleRate: 1.25;
|
||||||
|
--scaleRateArtwork: 1.25;
|
||||||
|
width: calc(240px * var(--scaleRate));
|
||||||
|
height: calc(200px * var(--scaleRate));
|
||||||
|
|
||||||
|
.artwork-container > .artwork {
|
||||||
|
width: calc(220px * var(--scaleRateArtwork));
|
||||||
|
height: calc(123px * var(--scaleRateArtwork));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.mediaitem-small {
|
&.mediaitem-small {
|
||||||
|
@ -1169,7 +1230,7 @@
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
border-radius: 0px;
|
border-radius: 0px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
transition: width var(--transitionDuration) linear, height var(--transitionDuration) linear, filter 0.2s ease-in-out;
|
||||||
.mediaitem-artwork {
|
.mediaitem-artwork {
|
||||||
border-radius: 0px;
|
border-radius: 0px;
|
||||||
|
|
||||||
|
@ -1183,6 +1244,8 @@
|
||||||
padding: 10px 10px 14px;
|
padding: 10px 10px 14px;
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
display: grid;
|
||||||
|
align-content: center;
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
background: var(--bgartwork);
|
background: var(--bgartwork);
|
||||||
|
@ -1197,6 +1260,7 @@
|
||||||
z-index: 0;
|
z-index: 0;
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
filter: brightness(0.5) blur(50px) saturate(180%);
|
filter: brightness(0.5) blur(50px) saturate(180%);
|
||||||
|
transition: filter 0.2s ease-in-out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1211,7 +1275,7 @@
|
||||||
|
|
||||||
& + .subtitle {
|
& + .subtitle {
|
||||||
max-height: none !important;
|
max-height: none !important;
|
||||||
margin-top: -0.5em;
|
// margin-top: -0.5em;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1241,14 +1305,34 @@
|
||||||
border-radius: inherit;
|
border-radius: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
//@media (min-width: 1600px) {
|
&:hover {
|
||||||
// width: calc(230px * 1.25);
|
.artwork{
|
||||||
// height: calc(298px * 1.25);
|
filter: brightness(0.8);
|
||||||
// .artwork-container>.artwork {
|
}
|
||||||
// width: calc(230px * 1.25);
|
.info-rect-card::before {
|
||||||
// height: calc(230px * 1.25);
|
filter: brightness(0.3) blur(50px) saturate(180%);
|
||||||
// }
|
}
|
||||||
//}
|
}
|
||||||
|
|
||||||
|
&:not(.noscale) {
|
||||||
|
@media (min-width: 1460px) {
|
||||||
|
width: calc(230px * 1.1);
|
||||||
|
height: calc(298px * 1.1);
|
||||||
|
.artwork-container > .artwork {
|
||||||
|
width: calc(230px * 1.1);
|
||||||
|
height: calc(230px * 1.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1550px) {
|
||||||
|
width: calc(230px * 1.25);
|
||||||
|
height: calc(298px * 1.25);
|
||||||
|
.artwork-container > .artwork {
|
||||||
|
width: calc(230px * 1.25);
|
||||||
|
height: calc(230px * 1.25);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -153,22 +153,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.close-btn {
|
.close-btn {
|
||||||
width : 50px;
|
.menu-panel.menu-header-text.close-btn
|
||||||
height : 100%;
|
|
||||||
background-image : var(--gfx-closeBtn);
|
|
||||||
background-position: center;
|
|
||||||
background-repeat : no-repeat;
|
|
||||||
-webkit-app-region : no-drag;
|
|
||||||
appearance : none;
|
|
||||||
border : 0;
|
|
||||||
background-color : transparent;
|
|
||||||
position : absolute;
|
|
||||||
top : 0;
|
|
||||||
right : 0;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: rgb(196, 43, 28)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -191,22 +177,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.close-btn {
|
.close-btn {
|
||||||
width : 50px;
|
.menu-panel.menu-header-text.close-btn
|
||||||
height : 100%;
|
|
||||||
background-image : var(--gfx-closeBtn);
|
|
||||||
background-position: center;
|
|
||||||
background-repeat : no-repeat;
|
|
||||||
-webkit-app-region : no-drag;
|
|
||||||
appearance : none;
|
|
||||||
border : 0;
|
|
||||||
background-color : transparent;
|
|
||||||
position : absolute;
|
|
||||||
top : 0;
|
|
||||||
right : 0;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: rgb(196, 43, 28)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -371,23 +342,31 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.menu-header-text {
|
.menu-header-text {
|
||||||
margin: 18px 6px;
|
margin: 18px 6px;
|
||||||
|
|
||||||
.close-btn {
|
.close-btn {
|
||||||
width : 50px;
|
width: 36px;
|
||||||
height : 42px;
|
height: 36px;
|
||||||
background-image : var(--gfx-closeBtn);
|
|
||||||
background-position: center;
|
background-position: center;
|
||||||
background-repeat : no-repeat;
|
background-repeat: no-repeat;
|
||||||
-webkit-app-region : no-drag;
|
-webkit-app-region: no-drag;
|
||||||
appearance : none;
|
appearance: none;
|
||||||
border : 0;
|
border: 0;
|
||||||
background-color : transparent;
|
background-color: transparent;
|
||||||
position : absolute;
|
position: absolute;
|
||||||
top : 0;
|
top: 10px;
|
||||||
right : 0;
|
right: 10px;
|
||||||
|
border-radius: 50px;
|
||||||
|
display: grid;
|
||||||
|
align-content: center;
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
content: "";
|
||||||
|
font-family: "codicon";
|
||||||
|
color: var(--textColor);
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: rgb(196, 43, 28)
|
background-color: rgb(196, 43, 28)
|
||||||
|
@ -505,7 +484,8 @@
|
||||||
.popover-artwork {
|
.popover-artwork {
|
||||||
width: 200px;
|
width: 200px;
|
||||||
height: 200px;
|
height: 200px;
|
||||||
margin: 0 0 20px 0;
|
margin: 0 auto;
|
||||||
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.song-name {
|
.song-name {
|
||||||
|
|
|
@ -3,4 +3,57 @@ body[platform="linux"] {
|
||||||
#window-controls-container {
|
#window-controls-container {
|
||||||
//display: none;
|
//display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.window-controls {
|
||||||
|
justify-content: flex-end;
|
||||||
|
align-items : center;
|
||||||
|
padding-right : 6px;
|
||||||
|
|
||||||
|
>div {
|
||||||
|
--iconSize: 16px;
|
||||||
|
|
||||||
|
&.close,
|
||||||
|
&.minmax,
|
||||||
|
&.minimize,
|
||||||
|
&.minmax.restore {
|
||||||
|
background-image: unset!important;
|
||||||
|
position : relative;
|
||||||
|
display : grid;
|
||||||
|
align-content : center;
|
||||||
|
text-align : center;
|
||||||
|
height : 36px!important;
|
||||||
|
width : 36px!important;
|
||||||
|
border-radius : 50px;
|
||||||
|
transition: background-color .1s ease-in-out;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: rgb(200 200 200 / 10%)!important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.close::before {
|
||||||
|
font-family: "codicon";
|
||||||
|
font-size : var(--iconSize);
|
||||||
|
content : "";
|
||||||
|
}
|
||||||
|
|
||||||
|
&.minmax::before {
|
||||||
|
font-family: "codicon";
|
||||||
|
font-size : var(--iconSize);
|
||||||
|
content : "";
|
||||||
|
}
|
||||||
|
|
||||||
|
&.minimize::before {
|
||||||
|
font-family: "codicon";
|
||||||
|
font-size : var(--iconSize);
|
||||||
|
content : "";
|
||||||
|
}
|
||||||
|
|
||||||
|
&.restore::before {
|
||||||
|
font-family: "codicon";
|
||||||
|
font-size : var(--iconSize);
|
||||||
|
content : "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -634,7 +634,7 @@
|
||||||
opacity : .7;
|
opacity : .7;
|
||||||
animation : playlistArtworkFadeIn 1s var(--appleEase);
|
animation : playlistArtworkFadeIn 1s var(--appleEase);
|
||||||
|
|
||||||
.artworkMaterial>img {
|
.artworkMaterial img {
|
||||||
filter : brightness(100%) blur(80px) saturate(100%) contrast(1);
|
filter : brightness(100%) blur(80px) saturate(100%) contrast(1);
|
||||||
object-position: center;
|
object-position: center;
|
||||||
object-fit : cover;
|
object-fit : cover;
|
||||||
|
@ -990,7 +990,7 @@
|
||||||
opacity : .7;
|
opacity : .7;
|
||||||
animation : playlistArtworkFadeIn 1s var(--appleEase);
|
animation : playlistArtworkFadeIn 1s var(--appleEase);
|
||||||
|
|
||||||
.artworkMaterial>img {
|
.artworkMaterial img {
|
||||||
filter : brightness(100%) blur(80px) saturate(100%) contrast(1);
|
filter : brightness(100%) blur(80px) saturate(100%) contrast(1);
|
||||||
object-position: center;
|
object-position: center;
|
||||||
object-fit : cover;
|
object-fit : cover;
|
||||||
|
|
|
@ -311,19 +311,19 @@ a.dropdown-item {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
|
|
||||||
> img {
|
img {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: 200%;
|
width: 200%;
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
filter: brightness(200%) blur(180px) saturate(280%) contrast(2);
|
filter: brightness(200%) blur(180px) saturate(280%) contrast(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
> img:first-child {
|
img:first-child {
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
> img:last-child {
|
img:last-child {
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
transform: rotate(180deg);
|
transform: rotate(180deg);
|
||||||
|
@ -1163,18 +1163,14 @@ input[type=range].web-slider::-webkit-slider-runnable-track {
|
||||||
&-macos {
|
&-macos {
|
||||||
width: 100px;
|
width: 100px;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.app-chrome .app-chrome-item > .window-controls > div {
|
> div {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 32px;
|
width: 32px;
|
||||||
}
|
&:hover {
|
||||||
|
|
||||||
.app-chrome .app-chrome-item > .window-controls > div:hover {
|
|
||||||
background: rgb(200 200 200 / 10%);
|
background: rgb(200 200 200 / 10%);
|
||||||
}
|
}
|
||||||
|
&.close {
|
||||||
.app-chrome .app-chrome-item > .window-controls > div.close {
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
background-image: var(--gfx-closeBtn);
|
background-image: var(--gfx-closeBtn);
|
||||||
|
@ -1185,28 +1181,27 @@ input[type=range].web-slider::-webkit-slider-runnable-track {
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: rgb(196, 43, 28)
|
background-color: rgb(196, 43, 28)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
&.minmax {
|
||||||
.app-chrome .app-chrome-item > .window-controls > div.minmax {
|
|
||||||
background-image: var(--gfx-maxBtn);
|
background-image: var(--gfx-maxBtn);
|
||||||
background-position: center;
|
background-position: center;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
-webkit-app-region: no-drag;
|
-webkit-app-region: no-drag;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
&.minmax.restore {
|
||||||
.app-chrome .app-chrome-item > .window-controls > div.minmax.restore {
|
|
||||||
background-image: var(--gfx-restoreBtn);
|
background-image: var(--gfx-restoreBtn);
|
||||||
}
|
}
|
||||||
|
&.minimize {
|
||||||
.app-chrome .app-chrome-item > .window-controls > div.minimize {
|
|
||||||
background-image: var(--gfx-minBtn);
|
background-image: var(--gfx-minBtn);
|
||||||
background-position: center;
|
background-position: center;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
-webkit-app-region: no-drag;
|
-webkit-app-region: no-drag;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
body[platform="darwin"] .app-chrome .app-chrome-item > .window-controls > div.minimize {
|
body[platform="darwin"] .app-chrome .app-chrome-item > .window-controls > div.minimize {
|
||||||
|
@ -1452,10 +1447,13 @@ div[data-type="musicVideo"] .info-rect .title::before {
|
||||||
background-position: center;
|
background-position: center;
|
||||||
background-size: contain;
|
background-size: contain;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
border-radius: 4px;
|
border-radius: var(--mediaItemRadiusSmall);
|
||||||
flex: 0 0 auto;
|
flex: 0 0 auto;
|
||||||
margin: 6px;
|
margin: 6px;
|
||||||
image-rendering: -webkit-optimize-contrast;
|
image-rendering: -webkit-optimize-contrast;
|
||||||
|
.mediaitem-artwork {
|
||||||
|
border-radius: var(--mediaItemRadiusSmall);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.app-chrome .app-chrome-item > .app-playback-controls .actions {
|
.app-chrome .app-chrome-item > .app-playback-controls .actions {
|
||||||
|
@ -3475,22 +3473,7 @@ body.no-gpu {
|
||||||
}
|
}
|
||||||
|
|
||||||
.close-btn {
|
.close-btn {
|
||||||
width: 50px;
|
.menu-panel.menu-header-text.close-btn
|
||||||
height: 100%;
|
|
||||||
background-image: var(--gfx-closeBtn);
|
|
||||||
background-position: center;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
-webkit-app-region: no-drag;
|
|
||||||
appearance: none;
|
|
||||||
border: 0;
|
|
||||||
background-color: transparent;
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: rgb(196, 43, 28)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -57,10 +57,6 @@
|
||||||
.cd-mediaitem-square:not(.mediaitem-card) {
|
.cd-mediaitem-square:not(.mediaitem-card) {
|
||||||
transition : transform .2s var(--appleEase);
|
transition : transform .2s var(--appleEase);
|
||||||
transition-delay: .1s;
|
transition-delay: .1s;
|
||||||
padding : 12px;
|
|
||||||
|
|
||||||
// background-color: red;
|
|
||||||
height: 220px;
|
|
||||||
|
|
||||||
|
|
||||||
.artwork-container {}
|
.artwork-container {}
|
||||||
|
@ -73,9 +69,16 @@
|
||||||
transition-delay: .05s;
|
transition-delay: .05s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.artwork-container {
|
||||||
|
transform : scale(0.962) translateZ(0);
|
||||||
|
transition : transform .1s var(--appleEase);
|
||||||
|
transition-delay: 0s;
|
||||||
|
transform-origin: center;
|
||||||
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
.artwork-container {
|
.artwork-container {
|
||||||
transform : scale(1.1);
|
transform : scale(1.0);
|
||||||
transition : transform .1s var(--appleEase);
|
transition : transform .1s var(--appleEase);
|
||||||
transition-delay: 0s;
|
transition-delay: 0s;
|
||||||
transform-origin: center;
|
transform-origin: center;
|
||||||
|
|
|
@ -10,10 +10,10 @@
|
||||||
<b-popover custom-class="mediainfo-popover" target="artworkLCD" triggers="hover" placement="right">
|
<b-popover custom-class="mediainfo-popover" target="artworkLCD" triggers="hover" placement="right">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="shadow-artwork">
|
<div class="shadow-artwork">
|
||||||
<mediaitem-artwork :url="currentArtUrl" :url="currentArtUrlRaw"></mediaitem-artwork>
|
<mediaitem-artwork :url="currentArtUrl"></mediaitem-artwork>
|
||||||
</div>
|
</div>
|
||||||
<div class="popover-artwork">
|
<div class="popover-artwork">
|
||||||
<mediaitem-artwork :size="210" :url="currentArtUrlRaw"></mediaitem-artwork>
|
<mediaitem-artwork :url="currentArtUrl"></mediaitem-artwork>
|
||||||
</div>
|
</div>
|
||||||
<div class="song-name">{{ mk.nowPlayingItem["attributes"]["name"] }}</div>
|
<div class="song-name">{{ mk.nowPlayingItem["attributes"]["name"] }}</div>
|
||||||
<div class="song-artist" @click="getNowPlayingItemDetailed(`artist`)">{{ mk.nowPlayingItem["attributes"]["artistName"] }}</div>
|
<div class="song-artist" @click="getNowPlayingItemDetailed(`artist`)">{{ mk.nowPlayingItem["attributes"]["artistName"] }}</div>
|
||||||
|
@ -60,6 +60,19 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<template v-else>
|
||||||
|
<div class="app-playback-controls">
|
||||||
|
<div class="artwork" id="artworkLCD" style="pointer-events: none;">
|
||||||
|
<mediaitem-artwork :url="currentArtUrl"></mediaitem-artwork>
|
||||||
|
</div>
|
||||||
|
<div class="playback-info">
|
||||||
|
<div class="song-name">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -89,10 +89,10 @@
|
||||||
<b-popover custom-class="mediainfo-popover" target="artworkLCD" triggers="hover" placement="bottom">
|
<b-popover custom-class="mediainfo-popover" target="artworkLCD" triggers="hover" placement="bottom">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="shadow-artwork">
|
<div class="shadow-artwork">
|
||||||
<mediaitem-artwork :url="currentArtUrl" :url="currentArtUrlRaw"></mediaitem-artwork>
|
<mediaitem-artwork :url="currentArtUrl"></mediaitem-artwork>
|
||||||
</div>
|
</div>
|
||||||
<div class="popover-artwork">
|
<div class="popover-artwork">
|
||||||
<mediaitem-artwork :size="210" :url="currentArtUrlRaw"></mediaitem-artwork>
|
<mediaitem-artwork :size="210" :url="currentArtUrl"></mediaitem-artwork>
|
||||||
</div>
|
</div>
|
||||||
<div class="song-name">
|
<div class="song-name">
|
||||||
{{ mk.nowPlayingItem["attributes"]["name"] }}
|
{{ mk.nowPlayingItem["attributes"]["name"] }}
|
||||||
|
@ -183,6 +183,18 @@
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
<div class="app-playback-controls">
|
||||||
|
<div class="artwork" id="artworkLCD" style="pointer-events: none;">
|
||||||
|
<mediaitem-artwork :url="currentArtUrl"></mediaitem-artwork>
|
||||||
|
</div>
|
||||||
|
<div class="playback-info">
|
||||||
|
<div class="info-rect">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
</div>
|
</div>
|
||||||
<div class="app-chrome-item" v-else>
|
<div class="app-chrome-item" v-else>
|
||||||
<div class="top-nav-group">
|
<div class="top-nav-group">
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
<script type="text/x-template" id="artist-chip">
|
<script type="text/x-template" id="artist-chip">
|
||||||
<div class="artist-chip" @click.self="route" tabindex="0">
|
<div class="artist-chip" @click.self="route" tabindex="0">
|
||||||
<div class="artist-chip__image">
|
<div class="artist-chip__image" v-if="image" :style="{backgroundColor: '#' + (artist.attributes.artwork?.bgColor ?? '000')}">
|
||||||
<mediaitem-artwork v-if="artist.id != null" :url="artist.attributes.artwork.url" :size="32"></mediaitem-artwork>
|
<mediaitem-artwork v-if="artist.id != null" :url="artist.attributes.artwork.url" :size="80"></mediaitem-artwork>
|
||||||
|
</div>
|
||||||
|
<div class="artist-chip__image" v-else>
|
||||||
</div>
|
</div>
|
||||||
<div class="artist-chip__name">
|
<div class="artist-chip__name">
|
||||||
<span>{{ item.attributes.name }}</span>
|
<span>{{ item.attributes.name }}</span>
|
||||||
|
@ -21,6 +23,7 @@
|
||||||
},
|
},
|
||||||
data: function() {
|
data: function() {
|
||||||
return {
|
return {
|
||||||
|
image: false,
|
||||||
artist: {
|
artist: {
|
||||||
id: null
|
id: null
|
||||||
}
|
}
|
||||||
|
@ -34,6 +37,7 @@
|
||||||
}
|
}
|
||||||
app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/artists/${artistId}`).then(response => {
|
app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/artists/${artistId}`).then(response => {
|
||||||
this.artist = response.data.data[0];
|
this.artist = response.data.data[0];
|
||||||
|
this.image = true;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<script type="text/x-template" id="artwork-material">
|
<script type="text/x-template" id="artwork-material">
|
||||||
<div class="artworkMaterial">
|
<div class="artworkMaterial">
|
||||||
<img :src="src" v-for="image in images"/>
|
<mediaitem-artwork :url="src" :size="500" v-for="image in images"/>
|
||||||
</div>
|
</div>
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -87,6 +87,11 @@
|
||||||
default: false,
|
default: false,
|
||||||
required: false
|
required: false
|
||||||
},
|
},
|
||||||
|
noScale: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
required: false
|
||||||
|
},
|
||||||
'contextExt': { type: Object, required: false },
|
'contextExt': { type: Object, required: false },
|
||||||
},
|
},
|
||||||
data: function () {
|
data: function () {
|
||||||
|
@ -251,6 +256,10 @@
|
||||||
},
|
},
|
||||||
getClasses() {
|
getClasses() {
|
||||||
let type = []
|
let type = []
|
||||||
|
let classes = []
|
||||||
|
if(this.noScale) {
|
||||||
|
classes.push("noscale")
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
type = this.item.type
|
type = this.item.type
|
||||||
|
|
||||||
|
@ -263,25 +272,26 @@
|
||||||
}
|
}
|
||||||
switch (type) {
|
switch (type) {
|
||||||
default:
|
default:
|
||||||
return []
|
|
||||||
break;
|
break;
|
||||||
case "editorial-elements":
|
case "editorial-elements":
|
||||||
case "card":
|
case "card":
|
||||||
return ["mediaitem-card"]
|
classes.push("mediaitem-card")
|
||||||
break;
|
break;
|
||||||
case "385": // editorial
|
case "385": // editorial
|
||||||
return ["mediaitem-brick"]
|
classes.push("mediaitem-brick")
|
||||||
break;
|
break;
|
||||||
case "small":
|
case "small":
|
||||||
return ["mediaitem-small"]
|
classes.push("mediaitem-small")
|
||||||
break;
|
break;
|
||||||
case "music-videos":
|
case "music-videos":
|
||||||
case "uploadedVideo":
|
case "uploadedVideo":
|
||||||
case "uploaded-videos":
|
case "uploaded-videos":
|
||||||
case "library-music-videos":
|
case "library-music-videos":
|
||||||
return "mediaitem-video";
|
classes.push("mediaitem-video")
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
return classes
|
||||||
},
|
},
|
||||||
visibilityChanged: function (isVisible, entry) {
|
visibilityChanged: function (isVisible, entry) {
|
||||||
this.isVisible = isVisible
|
this.isVisible = isVisible
|
||||||
|
|
|
@ -105,7 +105,8 @@
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
|
|
||||||
<script async src="https://js-cdn.music.apple.com/musickit/v3/amp/musickit.js" data-web-components></script>
|
<script async src="<%- (env.useV3 ? "https://js-cdn.music.apple.com/musickit/v3/amp/musickit.js" : "https://js-cdn.music.apple.com/musickit/v2/amp/musickit.js" ) %>" data-web-components>
|
||||||
|
</script>
|
||||||
<script src="index.js?v=1"></script>
|
<script src="index.js?v=1"></script>
|
||||||
|
|
||||||
<script type="text/x-template" id="am-musiccovershelf">
|
<script type="text/x-template" id="am-musiccovershelf">
|
||||||
|
|
|
@ -69,7 +69,7 @@
|
||||||
<div class="latestRelease" v-if="data.views['latest-release'].data.length != 0">
|
<div class="latestRelease" v-if="data.views['latest-release'].data.length != 0">
|
||||||
<h3>{{app.getLz('term.latestReleases')}}</h3>
|
<h3>{{app.getLz('term.latestReleases')}}</h3>
|
||||||
<div style="width: auto;margin: 0 auto;">
|
<div style="width: auto;margin: 0 auto;">
|
||||||
<mediaitem-square kind="card" v-for="song in data.views['latest-release'].data"
|
<mediaitem-square kind="card" :no-scale="true" v-for="song in data.views['latest-release'].data"
|
||||||
:item="song">
|
:item="song">
|
||||||
</mediaitem-square>
|
</mediaitem-square>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -121,7 +121,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="artworkContainer" v-if="data.attributes.artwork != null">
|
<div class="artworkContainer" v-if="data.attributes.artwork != null">
|
||||||
<artwork-material :url="data.attributes.artwork.url" size="260" images="1"></artwork-material>
|
<artwork-material :url="data.attributes.artwork.url" size="500" images="1"></artwork-material>
|
||||||
</div>
|
</div>
|
||||||
<button class="md-btn md-btn-small editTracksBtn" v-if="(data.attributes.canEdit && data.type == 'library-playlists')" @click="editing = !editing">
|
<button class="md-btn md-btn-small editTracksBtn" v-if="(data.attributes.canEdit && data.type == 'library-playlists')" @click="editing = !editing">
|
||||||
<span v-if="!editing">
|
<span v-if="!editing">
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
<h4>{{ loaded.attributes.uniqueSongCount }} {{$root.getLz('term.uniqueSongs')}}</h4>
|
<h4>{{ loaded.attributes.uniqueSongCount }} {{$root.getLz('term.uniqueSongs')}}</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto replay-playlist-container">
|
<div class="col-auto replay-playlist-container">
|
||||||
<mediaitem-square kind="card" :force-video="true" :item="loaded.playlist"></mediaitem-square>
|
<mediaitem-square kind="card" :no-scale="true" :force-video="true" :item="loaded.playlist"></mediaitem-square>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Top Artists-->
|
<!-- Top Artists-->
|
||||||
|
|
|
@ -1185,6 +1185,20 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="md-option-line">
|
||||||
|
<div class="md-option-segment">
|
||||||
|
Use MusicKit V3
|
||||||
|
<small>Requires relaunch</small>
|
||||||
|
</div>
|
||||||
|
<div class="md-option-segment md-option-segment_auto">
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" v-model="app.cfg.advanced.experiments.includes('ampv3')"
|
||||||
|
@click="app.cfg.advanced.experiments.includes('ampv3') ? removeExperiment('ampv3') : addExperiment('ampv3')"
|
||||||
|
switch/>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="md-option-line">
|
<div class="md-option-line">
|
||||||
<div class="md-option-segment">
|
<div class="md-option-segment">
|
||||||
{{$root.getLz('settings.option.advanced.playlistTrackMapping')}}
|
{{$root.getLz('settings.option.advanced.playlistTrackMapping')}}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue