Merge pull request #483 from kyw504100/Lab2

Irregular update 20/02
This commit is contained in:
cryptofyre 2022-02-19 15:21:35 -06:00 committed by GitHub
commit 5f3443c463
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 206 additions and 57 deletions

View file

@ -124,7 +124,51 @@ Update 16/02/2022 21:45 UTC
* `settings.option.audio.maxVolume`: Added for `en_US`.`
Update 17/02/2022 10:00 UTC
+ `settings.header.debug`: Added for `en_US`.
+ `settings.option.debug.copy_log`: Replaces `settings.option.experimental.copy_log`.
+ `settings.option.debug.openAppData`: Added for `en_US`
+ `action.open`: Added for `en_US`
Update 19/2/2022 21:00 UTC
* `term.noVideos`: Added for `en_US`
* `term.plugin`: Added for `en_US`
* `term.pluginMenu`: Added for `en_US`
* `term.replay`: Added for `en_US`
* `term.uniqueAlbums`: Added for `en_US`
* `term.uniqueArtists`: Added for `en_US`
* `term.uniqueSongs`: Added for `en_US`
* `term.topArtists`: Added for `en_US`
* `term.listenedTo`: Added for `en_US`
* `term.times`: Added for `en_US`
* `term.topAlbums`: Added for `en_US`
* `term.plays`: Added for `en_US`
* `term.topGenres`: Added for `en_US`
* `action.install`: Added for `en_US`
* `settings.option.general.resumebehavior`: Added for `en_US`
* `settings.option.general.resumebehavior.description`: Added for `en_US`
* `settings.option.general.resumebehavior.locally`: Added for `en_US`
* `settings.option.general.resumebehavior.locally.description`: Added for `en_US`
* `settings.option.general.resumebehavior.history`: Added for `en_US`
* `settings.option.general.resumebehavior.history.description`: Added for `en_US`
* `settings.option.audio.audioLab`: Added for `en_US`
* `settings.option.audio.audioLab.description`: Added for `en_US`
* `settings.warn.audioLab.withoutAF`: Added for `en_US`
* `settings.option.audio.enableAdvancedFunctionality.analogWarmth`: Added for `en_US`
* `settings.option.audio.enableAdvancedFunctionality.analogWarmth.description`: Added for `en_US`
* `settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity`: Added for `en_US`
* `settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description`: Added for `en_US`
* `settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth`: Added for `en_US`
* `settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm`: Added for `en_US`
* `settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization`: Added for `en_US`
* `settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description`: Added for `en_US`
* `settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile`: Added for `en_US`
* `settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description`: Added for `en_US`
* `settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.standard`: Added for `en_US`
* `settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.audiophile`: Added for `en_US`
* `settings.header.visual.theme.github.page`: Added for `en_US`
* `settings.option.visual.theme.github.explore`: Added for `en_US`
* `settings.option.visual.theme.github.install.confirm`: Added for `en_US`
* `settings.option.experimental.unknownPlugin`: Added for `en_US`
* `settings.option.experimental.unknownPlugin.description`: Added for `en_US`

View file

@ -156,6 +156,18 @@
"term.top": "Top",
"term.version": "Version",
"term.noVideos": "No videos found.",
"term.plugin": "Plug-in",
"term.pluginMenu": "Plug-in Menu",
"term.replay": "Replay", //Apple Music Replay
"term.uniqueAlbums": "Unique Albums",
"term.uniqueArtists": "Unique Artists",
"term.uniqueSongs": "Unique Songs",
"term.topArtists": "Top Artists",
"term.listenedTo": "Listened to:",
"term.times": "times",
"term.topAlbums": "Top Albums",
"term.plays": "Plays",
"term.topGenres": "Top Genres",
// Home
"home.title": "Home",
@ -228,14 +240,23 @@
"action.tray.quit": "Quit",
"action.tray.show": "Show",
"action.update": "Update",
"action.install": "Install",
"action.copy": "Copy",
"action.newpreset": "New Preset...", // Equalizer Preset
"action.deletepreset": "Delete Preset",
"action.open": "Open",
// Settings - General
"settings.header.general": "General",
"settings.header.general.description": "Adjust the general settings for Cider.",
"settings.option.general.language": "Language",
"settings.option.general.resumebehavior": "Resume behavior",
"settings.option.general.resumebehavior.description": "Resume behavior affects how Cider will resume your session when you return to the app.",
"settings.option.general.resumebehavior.locally": "Locally",
"settings.option.general.resumebehavior.locally.description": "Cider will resume your last session on this machine.",
"settings.option.general.resumebehavior.history": "History",
"settings.option.general.resumebehavior.history.description": "Cider will queue the last song from your overall Apple Music history, across devices.",
// Language optgroups
"settings.option.general.language.main": "Languages",
@ -266,6 +287,15 @@
"settings.option.audio.seamlessTransition": "Seamless Audio Transition", // Toggle
"settings.option.audio.enableAdvancedFunctionality": "Enable Advanced Functionality", // Toggle
"settings.option.audio.enableAdvancedFunctionality.description": "Enabling AudioContext functionality will allow for extended audio features like Audio Normalization , Equalizers and Visualizers, however on some systems this may cause stuttering in audio tracks.",
"settings.option.audio.audioLab": "Cider Audio Lab",
"settings.option.audio.audioLab.description": "Contains an assortment of Audio Tweaks made by the Cider Dev Team",
"settings.warn.audioLab.withoutAF": "AudioContext (Advanced Functionality) is required to enable Cider Audio Laboratory.",
"settings.option.audio.enableAdvancedFunctionality.analogWarmth": "Analog Warmth",
"settings.option.audio.enableAdvancedFunctionality.analogWarmth.description": "Simulates the analog warmth modelled after the Korg Nutube 6P1",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity": "Analog Warmth intensity",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description": "Changes the intensity of the Analog Warmth Module processing.",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Smooth",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Warm",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacoustic Enhancements that makes everything sound both richer and more lively | Designed by Maikiwi.",
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP is not compatible with Spatialization. Please disable Spatialization to continue.",
@ -277,6 +307,12 @@
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizes peak volume for individual tracks to create a more uniform listening experience.",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialization", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialize audio and make audio more 3-dimensional (note: This is not Dolby Atmos)",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Cider Tuned Spatialization",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description": "Pre-tuned Spatializing Effect, disables the customizable settings of Audio Spatialization. Spatialization must be enabled as a prerequisite.",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile": "Cider Spatialization Profile",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description": "Changes the Tuning Profile of the Spatialization. (Requires App Restart)",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.standard": "Standard",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.audiophile": "Audiophile",
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "Spatialization is not compatible with CAP. Please disable CAP to continue.",
// Settings - Visual
@ -304,6 +340,7 @@
"settings.header.visual.theme": "Theme",
"settings.option.visual.theme.github.download": "Install from GitHub URL",
"settings.option.visual.theme.github.explore": "Explore GitHub Themes",
"settings.header.visual.theme.github.page": "Themes from GitHub",
"settings.option.visual.theme.github.install.confirm": "Are you sure you want to install {{ repo }}?",
"settings.prompt.visual.theme.github.URL": "Enter the URL of the theme you want to install",
"settings.notyf.visual.theme.install.success": "Theme installed successfully",
@ -345,13 +382,13 @@
"settings.option.debug.copy_log": "Copy logs to clipboard",
"settings.option.debug.openAppData": "Open Cider Folder",
// Settings - Experimental
"settings.header.experimental": "Experimental",
"settings.header.experimental.description": "Adjust the experimental settings for Cider.",
"settings.option.experimental.unknownPlugin": "Unknown Sources",
"settings.option.experimental.unknownPlugin.description": "Allow installion of plugins from repos other than the Cider Plugin Repository",
"settings.option.experimental.compactUI": "Compact UI", // Toggle
"settings.option.experimental.close_button_hide": "Close Button Should Hide the Application",
"settings.option.experimental.inline_playlists": "Inline Playlists and Albums",
// Refer to term.disabled & term.enabled

View file

@ -109,6 +109,7 @@
"term.fullscreenView": "全螢幕檢視",
"term.defaultView": "一般檢視",
"term.audioSettings": "音訊設定",
"term.audioControls": "音量控制",
"term.clearAll": "清空",
"term.recentStations": "最近播放的頻道",
"term.language": "語言",
@ -154,6 +155,9 @@
"term.videoExtras": "影片特輯",
//"term.top": "Top",
"term.version": "版本",
"term.noVideos": "沒有影片",
"term.plugin": "外掛程式",
"term.pluginMenu": "外掛程式選單",
// Home
"home.title": "主頁",
@ -229,6 +233,7 @@
"action.copy": "複製",
"action.newpreset": "新增範本", // Equallizer preset
"action.deletepreset": "刪除範本",
"action.open": "開啟",
// Settings - General
"settings.header.general": "一般",
@ -250,6 +255,8 @@
// Settings - Audio
"settings.header.audio": "音訊",
"settings.header.audio.description": "調整Cider的音訊設定",
"settings.option.audio.volumeStep": "音量改變量",
"settings.option.audio.maxVolume": "最高音量",
"settings.option.audio.quality": "音訊音質", // Dropdown
"settings.header.audio.quality.hireslossless": "高清無損壓縮",
"settings.header.audio.quality.hireslossless.description": "(高達 24-bit/192 kHz",
@ -298,8 +305,10 @@
"settings.header.visual.hardwareAcceleration.default": "預設",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
"settings.header.visual.theme": "主題",
"settings.option.visual.theme.github.download": "從 Github 安裝",
"settings.prompt.visual.theme.github.URL": "請輸入你想要安裝的主題的連結",
"settings.option.visual.theme.github.download": "使用 Github 網址安裝",
"settings.option.visual.theme.github.explore": "探索更多主題",
"settings.option.visual.theme.github.install.confirm": "你確認要安裝 {{ repo }}?",
"settings.prompt.visual.theme.github.URL": "請輸入你想要安裝的主題的網址",
"settings.notyf.visual.theme.install.success": "成功安裝主題",
"settings.notyf.visual.theme.install.error": "主題安裝失敗",
@ -334,15 +343,19 @@
"settings.option.connectivity.lastfmScrobble.filterLoop": "不記錄單曲循環Last.fm",
// Refer to term.connect for the connect button
// Settings - Debug
"settings.header.debug": "除錯",
"settings.option.debug.copy_log": "複製運行記錄檔至剪貼簿",
"settings.option.debug.openAppData": "開啟 Cider 程式資料夾",
// Settings - Experimental
"settings.header.experimental": "實驗性功能",
"settings.header.experimental.description": "調整Cider的實驗性功能",
"settings.option.experimental.compactUI": "緊凑型 UI", // Toggle
"settings.option.experimental.close_button_hide": "以關閉按鈕來隱藏 Cider",
"settings.option.experimental.copy_log": "複製運行記錄檔至剪貼簿",
//"settings.option.experimental.inline_playlists": "Inline Playlists and Albums",
// Refer to term.disabled & term.enabled
// Refer to term.disabled & term.enabled
// Spatialization Menu
"spatial.notTurnedOn": "請先在設定中啟用空間音訊。",
"spatial.spatialProperties": "空間音訊屬性",

View file

@ -55,6 +55,7 @@ export class BrowserWindow {
"components/sidebar-playlist",
"components/spatial-properties",
"components/audio-settings",
"components/plugin-menu",
"components/audio-controls",
"components/qrcode-modal",
"components/equalizer",

View file

@ -106,6 +106,11 @@ export default class Thumbar {
accelerator: 'CommandOrControl+Shift+A',
click: () => this._win.webContents.executeJavaScript(`app.modals.audioSettings = true`)
},
{
label: 'Plug-in Menu',
accelerator: 'CommandOrControl+Shift+P',
click: () => this._win.webContents.executeJavaScript(`app.modals.pluginMenu = true`)
}
]
},

View file

@ -25,6 +25,7 @@ const CiderFrontAPI = {
},
AddMenuEntry(entry) {
app.pluginMenuEntries.push(entry)
app.pluginInstalled = true
}
}
@ -76,6 +77,7 @@ const app = new Vue({
platform: "",
mk: {},
quickPlayQuery: "",
pluginInstalled: false,
pluginMenuEntries: [],
lz: ipcRenderer.sendSync("get-i18n", "en_US"),
lzListing: ipcRenderer.sendSync("get-i18n-listing"),
@ -247,6 +249,7 @@ const app = new Vue({
qrcode: false,
equalizer: false,
audioSettings: false,
pluginMenu: false,
audioControls: false,
showPlaylist: false,
},

View file

@ -226,6 +226,7 @@
}
.name {
position: relative;
}
&:hover {

View file

@ -22,6 +22,9 @@
<transition name="modal">
<audio-settings v-if="modals.audioSettings"></audio-settings>
</transition>
<transition name="modal">
<plugin-menu v-if="modals.pluginMenu"></plugin-menu>
</transition>
<transition name="modal">
<eq-view v-if="modals.equalizer"></eq-view>
</transition>

View file

@ -101,6 +101,11 @@
<span class="usermenu-item-icon"><%- include("../svg/headphones.svg") %></span>
<span class="usermenu-item-name">{{$root.getLz('term.audioSettings')}}</span>
</button>
<button class="usermenu-item" v-if="pluginInstalled"
@click="modals.pluginMenu = true">
<span class="usermenu-item-icon"><%- include("../svg/grid.svg") %></span>
<span class="usermenu-item-name">{{$root.getLz('term.plugin')}}</span>
</button>
<button class="usermenu-item" @click="appRoute('about')">
<span class="usermenu-item-icon"><%- include("../svg/info.svg") %></span>
<span class="usermenu-item-name">{{$root.getLz('term.about')}}</span>
@ -114,9 +119,6 @@
style="right:2.5px;"><%- include("../svg/log-out.svg") %></span>
<span class="usermenu-item-name">{{$root.getLz('term.logout')}}</span>
</button>
<button class="usermenu-item" @click="entry.onClick()" v-for="entry in pluginMenuEntries">
{{ entry.name }}
</button>
</div>
</div>
</transition>

View file

@ -25,7 +25,7 @@
<button class="playlist-item"
@click="$root.appRoute('audiolabs')" style="width:100%;">
<div class="icon"><%- include("../svg/speaker.svg") %></div>
<div class="name">Cider Audio Lab</div>
<div class="name">{{app.getLz('settings.option.audio.audioLab')}}</div>
</button>
</div>
</div>

View file

@ -0,0 +1,37 @@
<script type="text/x-template" id="plugin-menu">
<!--template-->
<div class="modal-fullscreen addtoplaylist-panel" @click.self="app.resetState()" @contextmenu.self="app.resetState()">
<div class="modal-window">
<div class="modal-header">
<div class="modal-title">{{$root.getLz('term.pluginMenu')}}</div>
<button class="close-btn" @click="app.resetState()"></button>
</div>
<div class="modal-content">
<button class="playlist-item" @click="entry.onClick(); closeMenu();" v-for="entry in app.pluginMenuEntries">
<span class="icon"><%- include("../svg/grid.svg") %></span>
<span class="name" style="top: 1px;">{{ entry.name }}</span>
</button>
</div>
</div>
</div>
<!--template-->
</script>
<script>
Vue.component('plugin-menu', {
template: '#plugin-menu',
data: function () {
return {
app: this.$root,
}
},
props: {},
mounted() {},
methods: {
closeMenu() {
app.modals.pluginMenu = false
},
},
}
);
</script>

View file

@ -2,15 +2,15 @@
<div class="content-inner settings-page">
<div class="md-option-container">
<div class="md-option-header">
<span>Cider Audio Laboratory</span>
<span>{{$root.getLz('settings.option.audio.audioLab')}}</span>
</div>
<div class="settings-option-body">
<div class="md-option-line" v-show="!app.cfg.advanced.AudioContext">
<div class="md-option-segment">
AudioContext (Advanced Functionality) is required to enable Cider Audio Laboratory.
{{$root.getLz('settings.warn.audioLab.withoutAF')}}
</div>
<button class="md-btn" style="margin-top: 5px;" onclick="app.appRoute('settings')">
Settings
{{$root.getLz('term.settings')}}
</button>
</div>
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext">
@ -40,9 +40,9 @@
</div>
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext">
<div class="md-option-segment">
Analog Warmth
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmth')}}
<br>
<small>Simulates the analog warmth modelled after the Korg Nutube 6P1</small>
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmth.description')}}</small>
</div>
<div class="md-option-segment md-option-segment_auto">
<input type="checkbox" v-model="app.cfg.audio.maikiwiAudio.analogWarmth" v-on:change="CiderAudio.hierarchical_loading();" switch/>
@ -50,16 +50,16 @@
</div>
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext && app.cfg.audio.maikiwiAudio.analogWarmth === true">
<div class="md-option-segment">
Analog Warmth Intensity
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity')}}
<br>
<small>Changes the intensity of the Analog Warmth Module processing.</small>
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description')}}</small>
</div>
<div class="md-option-segment md-option-segment_auto">
<button class="md-btn" :disabled="app.cfg.audio.maikiwiAudio.analogWarmth_value === 1.25" v-model="app.cfg.audio.maikiwiAudio.analogWarmth_value" onclick="app.cfg.audio.maikiwiAudio.analogWarmth_value = 1.25; CiderAudio.hierarchical_loading();">
Smooth
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth')}}
</button>
<button class="md-btn" :disabled="app.cfg.audio.maikiwiAudio.analogWarmth_value === 1.75" v-model="app.cfg.audio.maikiwiAudio.analogWarmth_value" onclick="app.cfg.audio.maikiwiAudio.analogWarmth_value = 1.75; CiderAudio.hierarchical_loading();">
Warm
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm')}}
</button>
</div>
</div>
@ -75,9 +75,9 @@
</div>
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext">
<div class="md-option-segment">
Cider Tuned Spatialization
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization')}}
<br>
<small>Pre-tuned Spatializing Effect, disables the customizable settings of Audio Spatialization. Spatialization must be enabled as a prerequisite.</small>
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description')}}</small>
</div>
<div class="md-option-segment md-option-segment_auto">
<input type="checkbox" v-model="app.cfg.audio.maikiwiAudio.spatial" :disabled="app.cfg.audio.spatial === false" v-on:change="toggleSpatial" switch/>
@ -85,16 +85,16 @@
</div>
<div class="md-option-line" v-show="app.cfg.audio.maikiwiAudio.spatial">
<div class="md-option-segment">
Cider Spatialization Profile
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile')}}
<br>
<small>Changes the Tuning Profile of the Spatialization. (Requires App Restart)</small>
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description')}}</small>
</div>
<div class="md-option-segment md-option-segment_auto">
<button class="md-btn" :disabled="app.cfg.audio.maikiwiAudio.spatialType === 0" v-model="app.cfg.audio.maikiwiAudio.spatialType" onclick="app.cfg.audio.maikiwiAudio.spatialType = 0; CiderAudio.hierarchical_loading();">
Standard
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.standard')}}
</button>
<button class="md-btn" :disabled="app.cfg.audio.maikiwiAudio.spatialType === 1" v-model="app.cfg.audio.maikiwiAudio.spatialType" onclick="app.cfg.audio.maikiwiAudio.spatialType = 1; CiderAudio.hierarchical_loading();">
Audiophile
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.audiophile')}}
</button>
</div>
</div>

View file

@ -51,7 +51,7 @@
<!-- </div>-->
<div class="row" v-if="!seenReplay">
<div class="col">
<button class="md-btn md-btn-block md-btn-replay--hero" @click="$root.appRoute('replay')">Replay {{ year }}</button>
<button class="md-btn md-btn-block md-btn-replay--hero" @click="$root.appRoute('replay')">{{$root.getLz('term.replay')}} {{ year }}</button>
</div>
</div>
<div class="row">
@ -61,7 +61,7 @@
<h3>{{app.getLz('home.madeForYou')}}</h3>
</div>
<div class="col-auto nopadding flex-center">
<button class="md-btn md-btn-replay" v-if="seenReplay" @click="$root.appRoute('replay')">Replay {{ year }}</button>
<button class="md-btn md-btn-replay" v-if="seenReplay" @click="$root.appRoute('replay')">{{$root.getLz('term.replay')}} {{ year }}</button>
</div>
</div>
<div class="well">

View file

@ -18,21 +18,21 @@
:video="loaded.playlist.attributes.editorialVideo.motionWideVideo21x9.video"
:video-priority="true"></mediaitem-artwork>
</div>
<h1 class="replay-header">{{ loaded.attributes.year }} Replay</h1>
<h1 class="replay-header">{{ loaded.attributes.year }} {{$root.getLz('term.replay')}}</h1>
<hr>
<div class="row">
<div class="col">
<h4>{{ loaded.attributes.listenTimeInMinutes }} minutes</h4>
<h4>{{ loaded.attributes.uniqueAlbumCount }} Unique Albums</h4>
<h4>{{ loaded.attributes.uniqueArtistCount }} Unique Artists</h4>
<h4>{{ loaded.attributes.uniqueSongCount }} Unique Songs</h4>
<h4>{{ loaded.attributes.listenTimeInMinutes }} {{$root.getLz('term.time.minutes')}}</h4>
<h4>{{ loaded.attributes.uniqueAlbumCount }} {{$root.getLz('term.uniqueAlbums')}}</h4>
<h4>{{ loaded.attributes.uniqueArtistCount }} {{$root.getLz('term.uniqueArtists')}}</h4>
<h4>{{ loaded.attributes.uniqueSongCount }} {{$root.getLz('term.uniqueSongs')}}</h4>
</div>
<div class="col-auto replay-playlist-container">
<mediaitem-square kind="card" :force-video="true" :item="loaded.playlist"></mediaitem-square>
</div>
</div>
<!-- Top Artists-->
<h3>Top Artists</h3>
<h3>{{$root.getLz('term.topArtists')}}</h3>
<div class="well">
<mediaitem-scroller-horizontal>
<div class="card replay-card" v-for="artistData in loaded.views['top-artists'].data">
@ -40,14 +40,14 @@
<mediaitem-square :item="artistData.relationships.artist.data[0]"></mediaitem-square>
</div>
<div class="card-footer">
{{ artistData.attributes.listenTimeInMinutes }} minutes<br>
Listened to: {{ artistData.attributes.playCount }} times
{{ artistData.attributes.listenTimeInMinutes }} {{$root.getLz('term.time.minutes')}}<br>
{{$root.getLz('term.listenedTo')}} {{ artistData.attributes.playCount }} {{$root.getLz('term.times')}}
</div>
</div>
</mediaitem-scroller-horizontal>
</div>
<!-- Top Albums-->
<h3>Top Albums</h3>
<h3>{{$root.getLz('term.topAlbums')}}</h3>
<div class="well">
<mediaitem-scroller-horizontal>
<div class="card replay-card" v-for="albumData in loaded.views['top-albums'].data">
@ -55,18 +55,18 @@
<mediaitem-square :item="albumData.relationships.album.data[0]"></mediaitem-square>
</div>
<div class="card-footer">
{{ albumData.attributes.listenTimeInMinutes }} minutes<br>
{{ albumData.attributes.playCount }} plays
{{ albumData.attributes.listenTimeInMinutes }} {{$root.getLz('term.time.minutes')}}<br>
{{ albumData.attributes.playCount }} {{$root.getLz('term.plays')}}
</div>
</div>
</mediaitem-scroller-horizontal>
</div>
<!-- Top Songs-->
<h3>Top Songs</h3>
<h3>{{$root.getLz('term.topSongs')}}</h3>
<div class="well">
<listitem-horizontal :show-library-status="false" :items="songsToArray(loaded.views['top-songs'].data)"></listitem-horizontal>
</div>
<h3>Top Genres</h3>
<h3>{{$root.getLz('term.topGenres')}}</h3>
<div class="top-genres-container">
<div v-for="genre in loaded.topGenres" class="replay-genre-display">
<div class="genre-name">

View file

@ -25,18 +25,20 @@
</div>
<div class="md-option-line">
<div class="md-option-segment">
Resume behavior<br>
{{$root.getLz('settings.option.general.resumebehavior')}}<br>
<small>
Resume behavior affects how Cider will resume your session when you return to the app.<br>
<b>Locally: </b> Cider will resume your last session on this machine.<br>
<b>History: </b> Cider will queue the last song from your overall Apple Music history, across devices.
{{$root.getLz('settings.option.general.resumebehavior.description')}}<br>
<b>{{$root.getLz('settings.option.general.resumebehavior.locally')}}: </b>
{{$root.getLz('settings.option.general.resumebehavior.locally.description')}}<br>
<b>{{$root.getLz('settings.option.general.resumebehavior.history')}}: </b>
{{$root.getLz('settings.option.general.resumebehavior.history.description')}}
</small>
</div>
<div class="md-option-segment md-option-segment_auto">
<select class="md-select" style="width:180px;" v-model="$root.cfg.general.resumeOnStartupBehavior">
<option value="disabled">Disabled</option>
<option value="local">Locally</option>
<option value="history">History</option>
<option value="disabled">{{$root.getLz('term.disabled')}}</option>
<option value="local">{{$root.getLz('settings.option.general.resumebehavior.locally')}}</option>
<option value="history">{{$root.getLz('settings.option.general.resumebehavior.history')}}</option>
</select>
</div>
</div>
@ -90,13 +92,13 @@
</div>
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext">
<div class="md-option-segment">
Cider Audio Lab
{{$root.getLz('settings.option.audio.audioLab')}}
<br>
<small>Contains an assortment of Audio Tweaks made by the Cider Dev Team</small>
<small>{{$root.getLz('settings.option.audio.audioLab.description')}}</small>
</div>
<div class="md-option-segment md-option-segment_auto">
<button class="md-btn" onclick="app.appRoute('audiolabs')">
Browse
{{$root.getLz('term.browse')}}
</button>
</div>
</div>
@ -650,9 +652,9 @@
<div class="md-option-line">
<div class="md-option-segment">
Unknown Sources
{{$root.getLz('settings.option.experimental.unknownPlugin')}}
<br>
<small>Allow installation of plugins from repos other than the Cider Plugin Repository</small>
<small>{{$root.getLz('settings.option.experimental.unknownPlugin.description')}}</small>
</div>
<div class="md-option-segment md-option-segment_auto">
<input type="checkbox" v-model="app.cfg.advanced.experiments.includes('unknown-sources')" @click="app.cfg.advanced.experiments.includes('unknown-sources') ? removeExperiment('unknown-sources') : addExperiment('unknown-sources')" switch/>

View file

@ -3,7 +3,7 @@
<div class="gh-header">
<div class="row">
<div class="col nopadding">
<h1 class="header-text">Themes from GitHub</h1>
<h1 class="header-text">{{$root.getLz('settings.header.visual.theme.github.page')}}</h1>
</div>
<div class="col-auto nopadding flex-center">
<button class="md-btn md-btn-small md-btn-block" @click="installThemeURL()">
@ -45,8 +45,8 @@
</div>
<div class="col-auto nopadding flex-center">
<button class="md-btn md-btn-primary" @click="installThemeRepo(openRepo)">
<span v-if="!themesInstalled.includes(openRepo.full_name)">Install</span>
<span v-else>Update</span>
<span v-if="!themesInstalled.includes(openRepo.full_name)">{{$root.getLz('action.install')}}</span>
<span v-else>{{$root.getLz('action.update')}}</span>
</button>
</div>
</div>

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-grid"><rect x="3" y="3" width="7" height="7"></rect><rect x="14" y="3" width="7" height="7"></rect><rect x="14" y="14" width="7" height="7"></rect><rect x="3" y="14" width="7" height="7"></rect></svg>

After

Width:  |  Height:  |  Size: 404 B