diff --git a/package.json b/package.json
index f2eaa78d..06b287ac 100644
--- a/package.json
+++ b/package.json
@@ -21,6 +21,10 @@
"start:win32": "yarn build && set ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers",
"start:linux": "yarn build && ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers",
"start:darwin": "yarn build && ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers",
+ "start-renderer": "run-script-os",
+ "start-renderer:win32": "set ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers",
+ "start-renderer:linux": "ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers",
+ "start-renderer:darwin": "ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers",
"pack": "electron-builder --dir",
"dist": "yarn build && electron-builder",
"dist:macarm": "yarn build && electron-builder --mac --arm64",
diff --git a/src/i18n/README.md b/src/i18n/README.md
index f474d134..6552894c 100644
--- a/src/i18n/README.md
+++ b/src/i18n/README.md
@@ -116,3 +116,9 @@ Update 12/02/2022 12:00 UTC
* `settings.notyf.visual.theme.install.error`: Added for `en_US`.
* `term.defaultPresets`: Added for `en_US`.
* `term.userPresets`: Added for `en_US`.
+
+Update 16/02/2022 21:45 UTC
+
+* `term.audioControls`: Added for `en_US`.
+* `settings.option.audio.volumeStep`: Added for `en_US`.
+* `settings.option.audio.maxVolume`: Added for `en_US`.`
\ No newline at end of file
diff --git a/src/i18n/en_US.jsonc b/src/i18n/en_US.jsonc
index 9b4e1652..037cbe9c 100644
--- a/src/i18n/en_US.jsonc
+++ b/src/i18n/en_US.jsonc
@@ -109,6 +109,7 @@
"term.fullscreenView": "Fullscreen View",
"term.defaultView": "Default View",
"term.audioSettings": "Audio Settings",
+ "term.audioControls": "Audio Controls",
"term.clearAll": "Clear All",
"term.recentStations": "Recent Stations",
"term.language": "Language",
@@ -154,6 +155,7 @@
"term.videoExtras": "Video Extras",
"term.top": "Top",
"term.version": "Version",
+ "term.noVideos": "No videos found.",
// Home
"home.title": "Home",
@@ -250,6 +252,8 @@
// Settings - Audio
"settings.header.audio": "Audio",
"settings.header.audio.description": "Adjust the audio settings for Cider.",
+ "settings.option.audio.volumeStep": "Volume Step",
+ "settings.option.audio.maxVolume": "Max Volume",
"settings.option.audio.quality": "Audio Quality", // Dropdown
"settings.header.audio.quality.hireslossless": "Hi-Res Lossless",
"settings.header.audio.quality.hireslossless.description": "up to 24-bit/192 kHz",
diff --git a/src/main/base/browserwindow.ts b/src/main/base/browserwindow.ts
index fb056d98..7e120ec2 100644
--- a/src/main/base/browserwindow.ts
+++ b/src/main/base/browserwindow.ts
@@ -53,6 +53,7 @@ export class BrowserWindow {
"components/sidebar-playlist",
"components/spatial-properties",
"components/audio-settings",
+ "components/audio-controls",
"components/qrcode-modal",
"components/equalizer",
"components/add-to-playlist",
diff --git a/src/main/index.ts b/src/main/index.ts
index 7038f483..9e0d53d9 100644
--- a/src/main/index.ts
+++ b/src/main/index.ts
@@ -69,6 +69,10 @@ ipcMain.on('nowPlayingItemDidChange', (_event, attributes) => {
CiderPlug.callPlugins('onNowPlayingItemDidChange', attributes);
});
+ipcMain.on('lfmItemChange', (_event, attributes) => {
+ CiderPlug.callPlugins('lfmItemChange', attributes);
+});
+
app.on('before-quit', () => {
CiderPlug.callPlugins('onBeforeQuit');
console.warn(`${app.getName()} exited.`);
diff --git a/src/main/plugins/lastfm.ts b/src/main/plugins/lastfm.ts
index 6110ad31..fbeb2b40 100644
--- a/src/main/plugins/lastfm.ts
+++ b/src/main/plugins/lastfm.ts
@@ -257,20 +257,22 @@ export default class LastFMPlugin {
* @param attributes Music Attributes (attributes.status = current state)
*/
onPlaybackStateDidChange(attributes: object): void {
- this.updateNowPlayingSong(attributes)
- this.scrobbleSong(attributes)
+ this.updateNowPlayingSong(attributes)
+ // this.scrobbleSong(attributes)
}
/**
* Runs on song change
* @param attributes Music Attributes
*/
- onNowPlayingItemDidChange(attributes: object): void {
+ lfmItemChange(attributes: any): void {
+ attributes.status = true
if (!this._store.lastfm.filterLoop){
this._lastfm.cachedNowPlayingAttributes = false;
- this._lastfm.cachedAttributes = false}
+ this._lastfm.cachedAttributes = false
+ }
this.updateNowPlayingSong(attributes)
- this.scrobbleSong(attributes)
+ this.scrobbleSong(attributes)
}
}
diff --git a/src/preload/cider-preload.js b/src/preload/cider-preload.js
index bf6f2924..47441d25 100644
--- a/src/preload/cider-preload.js
+++ b/src/preload/cider-preload.js
@@ -25,8 +25,10 @@ const MusicKitInterop = {
MusicKit.getInstance().addEventListener(MusicKit.Events.nowPlayingItemDidChange, async () => {
// await MusicKitInterop.modifyNamesOnLocale();
if (MusicKitInterop.filterTrack(MusicKitInterop.getAttributes(), false, true) || !app.cfg.lastfm.filterLoop) {
- global.ipcRenderer.send('nowPlayingItemDidChange', MusicKitInterop.getAttributes());
+ global.ipcRenderer.send('lfmItemChange', MusicKitInterop.getAttributes());
}
+
+ global.ipcRenderer.send('nowPlayingItemDidChange', MusicKitInterop.getAttributes());
});
MusicKit.getInstance().addEventListener(MusicKit.Events.authorizationStatusDidChange, () => {
diff --git a/src/renderer/index.js b/src/renderer/index.js
index 672a352f..bc1d5381 100644
--- a/src/renderer/index.js
+++ b/src/renderer/index.js
@@ -233,6 +233,7 @@ const app = new Vue({
qrcode: false,
equalizer: false,
audioSettings: false,
+ audioControls: false,
showPlaylist: false,
},
socialBadges: {
@@ -272,7 +273,7 @@ const app = new Vue({
artistPage: () => {
document.getElementById("app-content").scrollTo(0, 0);
app.resetState()
- },
+ }
},
methods: {
songLinkShare(amUrl) {
@@ -1094,7 +1095,7 @@ const app = new Vue({
let playlistId = response.id
this.playlists.loadingState = (!transient) ? 0 : 1
this.showingPlaylist = response
- if (!response.relationships.tracks.next) {
+ if (!response.relationships?.tracks?.next) {
this.playlists.loadingState = 1
return
}
@@ -1170,7 +1171,7 @@ const app = new Vue({
let max = this.mk.currentPlaybackDuration
let value = (val - min) / (max - min) * 100
return {
- 'background': ('linear-gradient(to right, var(--keyColor) 0%, var(--keyColor) ' + value + '%, #333 ' + value + '%, #333 100%)')
+ 'background': ('linear-gradient(to right, var(--songProgressColor) 0%, var(--songProgressColor) ' + value + '%, var(--songProgressBackground) ' + value + '%, var(--songProgressBackground) 100%)')
}
},
async getRecursive(response) {
@@ -3321,7 +3322,7 @@ const app = new Vue({
console.log('setting max volume')
} else {
console.log('volume up')
- app.mk.volume += app.cfg.audio.volumeStep;
+ app.mk.volume = ((app.mk.volume * 100) + (app.cfg.audio.volumeStep * 100)) / 100
}
},
volumeDown() {
@@ -3330,11 +3331,11 @@ const app = new Vue({
console.log('setting volume to 0')
} else {
console.log('volume down')
- app.mk.volume -= app.cfg.audio.volumeStep;
+ app.mk.volume = ((app.mk.volume * 100) - (app.cfg.audio.volumeStep * 100)) / 100
}
},
volumeWheel(event) {
- app.checkScrollDirectionIsUp(event) ? app.volumeUp() : app.volumeDown()
+ app.checkScrollDirectionIsUp(event) ? this.volumeUp() : this.volumeDown()
},
muteButtonPressed() {
if (this.cfg.audio.muted) {
diff --git a/src/renderer/style.less b/src/renderer/style.less
index 85949811..4b4d957c 100644
--- a/src/renderer/style.less
+++ b/src/renderer/style.less
@@ -35,6 +35,8 @@
--keyColor-disabled: rgba(250, 88, 106, 0.35);
--navigationBarHeight: 38px;
--modalBackground: #262626;
+ --songProgressColor: var(--keyColor);
+ --songProgressBackground: #333;
--textColor: #eee;
}
@@ -3132,5 +3134,25 @@ body[platform='darwin'] {
}
}
+.percent {
+ display: inline-block;
+ position: relative;
+}
+
+.percent::after {
+ position: relative;
+ right: 2em;
+ transition: all .05s ease-in-out;
+}
+
+.percent:hover::after,
+.percent:focus-within::after {
+ right: 3.5em;
+}
+
+.percent::after {
+ content: '%';
+}
+
@import url("less/compact.less");
diff --git a/src/renderer/views/app/panels.ejs b/src/renderer/views/app/panels.ejs
index af2b76f9..85227a31 100644
--- a/src/renderer/views/app/panels.ejs
+++ b/src/renderer/views/app/panels.ejs
@@ -16,6 +16,9 @@