a (#1334)
* Update ru_RU.json keeping russian lang actual * ok * Add gradient to lyric-footer * *Commit en español Ñ (#1304) * i hate my life (#1307) * world is now a better place * meltdown avoided * meltdown avoided * stylize new listen now childs * full scale artwork, finally * dynamic width for search categories * hd all album work * Update afterPack.js * force hq quality * oops * attempt to fix * misc cleanup * why what * what was i thinking * fix duplicated text in listen now childs * Paginate/infinite scroll for albums, playlists (#1234) * Infinite scroll, pagination to album, playlists * move pagination below tracks * Make page size configurable * remove renderer * Mitigate songs / album slow app issue. * add ratings, library change to web remote (#1285) * Add compact artist header option (#1308) * Support compact artist header (optional) * Add required term * pain e19 still bugged * improve pagination styling * el16 fix * up 1.5.2 * Disable Fullscreen view when artist/album name is clicked. (#1315) * Disable Fullscreen view when artist/album name is clicked. idk why this change didn't exist * Seperate dash from album name * Replace `$root.showSearch()` with `app.appRoute('search')` `$root.showSearch()` prevents going back to previous page from sidebar. * Fix Anim (#1316) * make tracks tab active (#1318) * welp that wasn't it. * Thnks (#1319) * Thnks * i need sleep * Update cider-playlist.ejs * remove v-ripple * attempt to fix flatpak * Update config.yml * minimize categories names * fix versioning * fix versioning v2 * version fix v3 - final * fix categories name for other storefronts * ident unparsed title * center fullscreen * fix share * Add protocol for playpause and nextitem (#1329) * Moved to minimize hide window instead of close * Moved state saving to before quit * build test * fix ci * sudo * ci * use old branch fn * d * revert * Exposed songid in attributes, reimplemented lastfm primary artist scrobbling, cleaned up mkinterop * Moved it back * im over this * attempt airts * use new airtunes branch * *eye roll* * Moved time conversion to built-in MK function * Moved to Electron Notifications * Swapped to array index * keeping this here until for now * debuggin * run ci * allow noti button on macs * No image for now * revert space * Latest releases -> Latest Release * Artwork caching (sorta) * holy balls optimization * save sentry from this Co-authored-by: h0ckerman <35598335+h0ckerman@users.noreply.github.com> Co-authored-by: vapormusic <vietanhfat@gmail.com> Co-authored-by: Monochromish <chillygamer7@gmail.com> Co-authored-by: Gabriel Davila <56521591+mefsaal@users.noreply.github.com> Co-authored-by: Core <64542347+coredev-uk@users.noreply.github.com> Co-authored-by: Maikiwi <stella@mai.kiwi> Co-authored-by: yazninja <yazlesean@gmail.com> Co-authored-by: booploops <49113086+booploops@users.noreply.github.com> Co-authored-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com> Co-authored-by: Pedro Galhardo <pgalhardo@icloud.com> Co-authored-by: Monochromish <79590499+Monochromish@users.noreply.github.com> Co-authored-by: Core <core@c0r3.uk>
This commit is contained in:
parent
a99dddf2b6
commit
5ed045aad1
27 changed files with 298 additions and 183 deletions
|
@ -480,6 +480,7 @@
|
|||
display: inline-flex;
|
||||
width: 100%;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -33,11 +33,14 @@ if (app.cfg.advanced.disableLogging === true) {
|
|||
// Mount Vue to #app
|
||||
app.$mount("#app")
|
||||
|
||||
// Init CiderAudio
|
||||
if (app.cfg.advanced.AudioContext === true) {
|
||||
CiderAudio.init()
|
||||
// Init CiderAudio and force audiocontext
|
||||
if (app.cfg.advanced.AudioContext != true) {
|
||||
app.cfg.advanced.AudioContext = true;
|
||||
window.location.reload();
|
||||
}
|
||||
|
||||
CiderAudio.init()
|
||||
|
||||
// Import gamepad support
|
||||
app.simulateGamepad = simulateGamepad
|
||||
app.spawnMica = spawnMica
|
||||
|
|
|
@ -949,12 +949,6 @@ const app = new Vue({
|
|||
}
|
||||
});
|
||||
|
||||
this.mk.addEventListener(MusicKit.Events.playbackProgressDidChange, () => {
|
||||
if (self.mk.currentPlaybackProgress === (app.cfg.connectivity.lastfm.scrobble_after / 100)) {
|
||||
ipcRenderer.send('lastfm:scrobbleTrack', MusicKitInterop.getAttributes());
|
||||
}
|
||||
})
|
||||
|
||||
this.mk.addEventListener(MusicKit.Events.playbackStateDidChange, (event) => {
|
||||
ipcRenderer.send('wsapi-updatePlaybackState', wsapi.getAttributes());
|
||||
document.body.setAttribute("playback-state", event.state == 2 ? "playing" : "paused")
|
||||
|
@ -1013,8 +1007,8 @@ const app = new Vue({
|
|||
try {localStorage.setItem("playingBitrate", app.mk.nowPlayingItem.flavor)}
|
||||
catch(e) {}
|
||||
}
|
||||
if (!app.cfg.audio.normalization && app.cfg.advanced.AudioContext === false) { CiderAudio.hierarchical_loading(); }
|
||||
|
||||
|
||||
if (app.cfg.audio.normalization === false) { CiderAudio.hierarchical_loading(); } // Just Reload for Adaptive CAP if norm is off
|
||||
else {
|
||||
// get unencrypted audio previews to get SoundCheck's normalization tag
|
||||
try {
|
||||
|
@ -1080,17 +1074,6 @@ const app = new Vue({
|
|||
app.getNowPlayingArtworkBG(32);
|
||||
app.loadLyrics();
|
||||
|
||||
// Playback Notifications
|
||||
if (this.cfg.general.playbackNotifications && !document.hasFocus() && a.artistName && a.artwork && a.name) {
|
||||
if (this.notification) {
|
||||
this.notification.close()
|
||||
}
|
||||
this.notification = new Notification(a.name, {
|
||||
body: `${a.artistName} — ${a.albumName}`,
|
||||
icon: a.artwork.url.replace('/{w}x{h}bb', '/512x512bb').replace('/2000x2000bb', '/35x35bb'),
|
||||
silent: true,
|
||||
});
|
||||
}
|
||||
setTimeout(() => {
|
||||
let i = (document.querySelector('#apple-music-player')?.src ?? "")
|
||||
if (i.endsWith(".m3u8") || i.endsWith(".m3u")) {
|
||||
|
@ -1887,27 +1870,7 @@ const app = new Vue({
|
|||
|
||||
return dDisplay + (dDisplay && hDisplay ? ", " : "") + hDisplay + (hDisplay && mDisplay ? ", " : "") + mDisplay;
|
||||
} else {
|
||||
let returnTime = datetime.toISOString().substring(11, 19);
|
||||
|
||||
const timeGates = {
|
||||
600: 15, // 10 Minutes
|
||||
3600: 14, // Hour
|
||||
36000: 12, // 10 Hours
|
||||
}
|
||||
|
||||
for (let key in timeGates) {
|
||||
if (seconds < key) {
|
||||
returnTime = datetime.toISOString().substring(timeGates[key], 19)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
// Add the days on the front
|
||||
if (seconds >= 86400) {
|
||||
returnTime = parseInt(datetime.toISOString().substring(8, 10)) - 1 + ":" + returnTime
|
||||
}
|
||||
|
||||
return returnTime
|
||||
return MusicKit.formatMediaTime(seconds);
|
||||
}
|
||||
},
|
||||
hashCode(str) {
|
||||
|
@ -4391,7 +4354,7 @@ const app = new Vue({
|
|||
"id": "equalizer",
|
||||
"icon": "../views/svg/speaker.svg",
|
||||
"name": app.getLz('term.equalizer'),
|
||||
"hidden": true,
|
||||
"hidden": false,
|
||||
"action": function () {
|
||||
app.modals.equalizer = true
|
||||
app.modals.audioSettings = false
|
||||
|
@ -4401,7 +4364,7 @@ const app = new Vue({
|
|||
"id": "audioLab",
|
||||
"icon": "../views/svg/speaker.svg",
|
||||
"name": app.getLz('settings.option.audio.audioLab'),
|
||||
"hidden": true,
|
||||
"hidden": false,
|
||||
"action": function () {
|
||||
app.openSettingsPage('audiolabs')
|
||||
}
|
||||
|
@ -4409,10 +4372,12 @@ const app = new Vue({
|
|||
]
|
||||
}
|
||||
}
|
||||
/*
|
||||
if (this.cfg.advanced.AudioContext) {
|
||||
menus.normal.items.find(i => i.id === 'audioLab').hidden = false
|
||||
menus.normal.items.find(i => i.id === 'equalizer').hidden = false
|
||||
}
|
||||
*/
|
||||
if (this.contextExt) {
|
||||
if (this.contextExt.normal) {
|
||||
menus.normal.items = menus.normal.items.concat(this.contextExt.normal)
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
</button>
|
||||
<button
|
||||
class="usermenu-item"
|
||||
@click="cfg.advanced.AudioContext ? modals.castMenu = true :(cfg.advanced.AudioContext = true, modals.castMenu = true)"
|
||||
@click="modals.castMenu = true"
|
||||
>
|
||||
<span class="usermenu-item-icon">
|
||||
<%- include("../svg/cast.svg") %>
|
||||
|
@ -76,7 +76,7 @@
|
|||
</button>
|
||||
<button
|
||||
class="usermenu-item"
|
||||
@click="cfg.advanced.AudioContext ? modals.audioSettings = true : (cfg.advanced.AudioContext = true, modals.audioSettings = true)"
|
||||
@click="modals.audioSettings = true"
|
||||
>
|
||||
<span class="usermenu-item-icon">
|
||||
<%- include("../svg/headphones.svg") %>
|
||||
|
|
|
@ -152,7 +152,7 @@
|
|||
<button class="playback-button--small cast"
|
||||
:title="$root.getLz('term.cast')"
|
||||
v-b-tooltip.hover
|
||||
@click="cfg.advanced.AudioContext ? modals.castMenu = true : (cfg.advanced.AudioContext = true, modals.castMenu = true)"></button>
|
||||
@click="modals.castMenu = true"></button>
|
||||
</div>
|
||||
<div class="app-chrome-item generic">
|
||||
<button class="playback-button--small queue" :class="{'active': drawer.panel == 'queue'}"
|
||||
|
|
|
@ -231,7 +231,7 @@
|
|||
</div>
|
||||
<div class="app-chrome-item generic">
|
||||
<button class="playback-button--small cast" :title="$root.getLz('term.cast')"
|
||||
@click="cfg.advanced.AudioContext ? modals.castMenu = true : (cfg.advanced.AudioContext = true, modals.castMenu = true)"
|
||||
@click="modals.castMenu = true"
|
||||
v-b-tooltip.hover></button>
|
||||
</div>
|
||||
<div class="app-chrome-item generic">
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<div class="modal-window airplay-modal">
|
||||
<div class="modal-header">
|
||||
<div class="modal-title">{{'Enter password'}}</div>
|
||||
<button class="close-btn" @click="close()" :aria-label="app.getLz('action.close')"></button>
|
||||
<button class="close-btn" @click="close()" :aria-label="this.$root.getLz('action.close')"></button>
|
||||
</div>
|
||||
<div class="modal-content" style="overflow-y: overlay; padding: 3%">
|
||||
<input type="text" v-model="passcode"/>
|
||||
|
|
|
@ -116,7 +116,7 @@
|
|||
},
|
||||
setAirPlayCast(device) {
|
||||
this.activeCasts.push(device);
|
||||
ipcRenderer.send("performAirplayPCM",device.host,device.port,null,"","","","",device.txt)
|
||||
ipcRenderer.send("performAirplayPCM",device.host,device.port,null,"","","","",device.txt,device.airplay2)
|
||||
},
|
||||
stopCasting() {
|
||||
CiderAudio.stopAudio();
|
||||
|
|
|
@ -143,7 +143,7 @@
|
|||
return color
|
||||
},
|
||||
async checkLibrary() {
|
||||
if ((this.item?.id ?? '').toString().startsWith('ciderlocal')){
|
||||
if ((this.item?.id ?? '').toString().startsWith('ciderlocal')) {
|
||||
return true
|
||||
}
|
||||
if (this.addedToLibrary) { return this.addedToLibrary }
|
||||
|
@ -408,7 +408,7 @@
|
|||
"icon": "./assets/arrow-bend-up.svg",
|
||||
"action": function () {
|
||||
let type = self.item.attributes.playParams?.kind ?? self.item.type
|
||||
if (type == "podcast-episodes") {type = "episode"}
|
||||
if (type == "podcast-episodes") { type = "episode" }
|
||||
app.mk.playNext({ [type]: self.item.attributes.playParams?.id ?? self.item.id })
|
||||
app.mk.queue._reindex()
|
||||
app.selectedMediaItems = []
|
||||
|
@ -419,7 +419,7 @@
|
|||
"icon": "./assets/arrow-bend-down.svg",
|
||||
"action": function () {
|
||||
let type = self.item.attributes.playParams?.kind ?? self.item.type
|
||||
if (type == "podcast-episodes") {type = "episode"}
|
||||
if (type == "podcast-episodes") { type = "episode" }
|
||||
app.mk.playLater({ [type]: self.item.attributes.playParams?.id ?? self.item.id })
|
||||
app.mk.queue._reindex()
|
||||
app.selectedMediaItems = []
|
||||
|
@ -452,10 +452,16 @@
|
|||
{
|
||||
"icon": "./assets/feather/share.svg",
|
||||
"name": app.getLz('action.share'),
|
||||
"action": function () {
|
||||
if (!self.item.attributes.url && self.item.relationships) {
|
||||
if (self.item.relationships.catalog) {
|
||||
app.mkapi(self.item.attributes.playParams?.kind, false, self.item.relationships.catalog.data[0].id).then(u => { self.app.copyToClipboard((u.data.data.length && u.data.data.length > 0) ? u.data.data[0].attributes.url : u.data.data.attributes.url) })
|
||||
"action": async function () {
|
||||
let item = self.item
|
||||
if (!item.attributes.url) {
|
||||
if (item.type.includes("library")) {
|
||||
let result = (await app.mk.api.v3.music(`/v1/me/library/${item.type.replace("library-", '')}/${item.id}/catalog`)).data.data[0]
|
||||
if(result.attributes.url) {
|
||||
self.app.copyToClipboard(result.attributes.url)
|
||||
}else{
|
||||
notyf.error("Failed to get share URL")
|
||||
}
|
||||
}
|
||||
} else {
|
||||
self.app.copyToClipboard(self.item.attributes.url)
|
||||
|
@ -465,10 +471,16 @@
|
|||
{
|
||||
"icon": "./assets/feather/share.svg",
|
||||
"name": `${app.getLz('action.share')} (song.link)`,
|
||||
"action": function () {
|
||||
if (!self.item.attributes.url && self.item.relationships) {
|
||||
if (self.item.relationships.catalog) {
|
||||
app.mkapi(self.item.attributes.playParams?.kind, false, self.item.relationships.catalog.data[0].id).then(u => { self.app.songLinkShare((u.data.data.length && u.data.data.length > 0) ? u.data.data[0].attributes.url : u.data.data.attributes.url) })
|
||||
"action": async function () {
|
||||
let item = self.item
|
||||
if (!item.attributes.url) {
|
||||
if (item.type.includes("library")) {
|
||||
let result = (await app.mk.api.v3.music(`/v1/me/library/${item.type.replace("library-", '')}/${item.id}/catalog`)).data.data[0]
|
||||
if(result.attributes.url) {
|
||||
self.app.copyToClipboard(result.attributes.url)
|
||||
}else{
|
||||
notyf.error("Failed to get share URL")
|
||||
}
|
||||
}
|
||||
} else {
|
||||
self.app.songLinkShare(self.item.attributes.url)
|
||||
|
@ -649,4 +661,4 @@
|
|||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</script>
|
|
@ -45,7 +45,7 @@
|
|||
<div class="title"
|
||||
:title="item.attributes?.name ?? (item.relationships?.contents?.data[0]?.attributes?.name ?? (item.attributes?.editorialNotes?.name ?? ''))"
|
||||
v-if="item.attributes.artistNames == null || kind != 'card'" @click='app.routeView(item)'>
|
||||
<div class="item-navigate text-overflow-elipsis">{{ item.attributes?.name ??
|
||||
<div class="item-navigate text-overflow-elipsis">{{ item.attributes?.name.replace(/ /g, ' ').replace(/Apple Music |^Apple |/g, '') ??
|
||||
(item.relationships?.contents?.data[0]?.attributes?.name ??
|
||||
(item.attributes?.editorialNotes?.name ?? '')) }}
|
||||
</div>
|
||||
|
|
|
@ -348,20 +348,6 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="md-option-line">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality')}}
|
||||
<br>
|
||||
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.description')}}</small>
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<label>
|
||||
<input type="checkbox" v-model="app.cfg.advanced.AudioContext"
|
||||
v-on:change="toggleAudioContext"
|
||||
switch/>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('term.equalizer')}}
|
||||
</div>
|
||||
|
@ -371,7 +357,7 @@
|
|||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext">
|
||||
<div class="md-option-line">
|
||||
<div class="md-option-segment" style="white-space: pre-line;">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioNormalization')}}
|
||||
<small>{{app.cfg.audio.equalizer.vibrantBass != 0 ||
|
||||
|
@ -391,7 +377,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="md-option-line"
|
||||
v-show="app.cfg.advanced.AudioContext && app.cfg.audio.normalization && app.cfg.audio.advanced">
|
||||
v-show="app.cfg.audio.normalization && app.cfg.audio.advanced">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.audio.dbspl.display')}}
|
||||
<br>
|
||||
|
@ -419,7 +405,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</b-tab>
|
||||
<b-tab v-if="app.cfg.advanced.AudioContext">
|
||||
<b-tab>
|
||||
<template #title>
|
||||
<div>
|
||||
<svg-icon url="./assets/feather/zap.svg" classes="svg-md" name="settings-audiolabs"/>
|
||||
|
@ -1062,6 +1048,17 @@
|
|||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.connectivity.lastfm.enabled">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.connectivity.lastfmScrobble.removeFeatured')}}
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<label>
|
||||
<input type="checkbox" v-model="app.cfg.connectivity.lastfm.remove_featured"
|
||||
switch/>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.connectivity.lastfm.enabled">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.connectivity.lastfmScrobble.filterTypes')}}
|
||||
|
@ -1462,21 +1459,6 @@
|
|||
removeExperiment(flag) {
|
||||
app.cfg.advanced.experiments.splice(app.cfg.advanced.experiments.indexOf(flag), 1);
|
||||
},
|
||||
toggleAudioContext: function () {
|
||||
if (app.cfg.advanced.AudioContext === true) {
|
||||
if (navigator.hardwareConcurrency < 6) {
|
||||
app.confirm(app.getLz("settings.warn.audio.enableAdvancedFunctionality.lowcores"), function (result) {
|
||||
if (result) {
|
||||
window.location.reload();
|
||||
}
|
||||
})
|
||||
} else {
|
||||
window.location.reload()
|
||||
}
|
||||
} else {
|
||||
window.location.reload()
|
||||
}
|
||||
},
|
||||
toggleNormalization: function () {
|
||||
if (app.cfg.audio.normalization) {
|
||||
CiderAudio.normalizerOn()
|
||||
|
|
|
@ -6,15 +6,7 @@
|
|||
<b-jumbotron :header="$root.getLz('settings.option.audio.audioLab')"
|
||||
lead="Designed by Cider Acoustic Technologies in California"></b-jumbotron>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === false">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.warn.audioLab.withoutAF')}}
|
||||
</div>
|
||||
<button class="md-btn" style="margin-top: 5px;" onclick="app.appRoute('settings')">
|
||||
{{$root.getLz('term.settings')}}
|
||||
</button>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
|
||||
<div class="md-option-line">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPE')}}
|
||||
<br>
|
||||
|
@ -44,7 +36,7 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
|
||||
<div class="md-option-line">
|
||||
<div class="md-option-segment">
|
||||
Cider Opportunistic Correction System
|
||||
<br>
|
||||
|
@ -59,7 +51,7 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
|
||||
<div class="md-option-line">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.atmosphereRealizer')}} [1]
|
||||
<br>
|
||||
|
@ -84,7 +76,7 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
|
||||
<div class="md-option-line">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.atmosphereRealizer')}} [2]
|
||||
<br>
|
||||
|
@ -109,7 +101,7 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
|
||||
<div class="md-option-line">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization')}}
|
||||
<br>
|
||||
|
@ -139,7 +131,7 @@
|
|||
<div class="md-option-header">
|
||||
<span>{{$root.getLz('settings.header.unfinished')}}</span>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext === true">
|
||||
<div class="md-option-line">
|
||||
<div class="md-option-segment">
|
||||
Cider Origami™️ Vocal Enhancer/Remasterer
|
||||
<br>
|
||||
|
|
|
@ -98,19 +98,6 @@
|
|||
<div class="md-option-container">
|
||||
<div class="settings-option-body">
|
||||
<div class="md-option-line">
|
||||
<div class="md-option-segment">
|
||||
{{getLz('settings.option.audio.enableAdvancedFunctionality')}}
|
||||
<br>
|
||||
<small>{{getLz('settings.option.audio.enableAdvancedFunctionality.description')}}</small>
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<label>
|
||||
<input type="checkbox" v-model="$root.cfg.advanced.AudioContext"
|
||||
switch/>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-show="$root.cfg.advanced.AudioContext === true">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPE')}}
|
||||
<br>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue