From 807b75cfd36a00a41c92b8306f384040d9e30f4a Mon Sep 17 00:00:00 2001 From: Maikiwi Date: Sat, 26 Feb 2022 23:18:49 -0800 Subject: [PATCH 01/14] Update audio.js --- src/renderer/audio/audio.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/renderer/audio/audio.js b/src/renderer/audio/audio.js index c0b32959..2b65e799 100644 --- a/src/renderer/audio/audio.js +++ b/src/renderer/audio/audio.js @@ -344,7 +344,7 @@ var CiderAudio = { let LLPW_FREQUENCIES = [16.452, 24.636, 37.134, 74.483, 159.54, 308.18, 670.21, 915.81, 1200.7, 2766.4, 2930.6, 4050.6, 4409.1, 5395.2, 5901.6, 6455.5, 7164.1, 7724.1, 8449, 10573, 12368, 14198, 17910, 18916]; CiderAudio.audioNodes.llpw = [] - if (app.cfg.audio.maikiwiAudio.ciderPPE_value === 0.5) { + if (app.cfg.audio.maikiwiAudio.ciderPPE_value === 0.55) { for (i = 0; i < c_LLPW_FREQUENCIES.length; i++) { CiderAudio.audioNodes.llpw[i] = CiderAudio.context.createBiquadFilter(); CiderAudio.audioNodes.llpw[i].type = 'peaking'; // 'peaking'; @@ -372,7 +372,7 @@ var CiderAudio = { console.log("[Cider][Audio] CAP - Clarity Mode"); } - else if (app.cfg.audio.maikiwiAudio.ciderPPE_value === 0.55) { + else if (app.cfg.audio.maikiwiAudio.ciderPPE_value === 0.5) { for (i = 0; i < LLPW_FREQUENCIES.length; i++) { CiderAudio.audioNodes.llpw[i] = CiderAudio.context.createBiquadFilter(); CiderAudio.audioNodes.llpw[i].type = 'peaking'; // 'peaking'; @@ -396,7 +396,7 @@ var CiderAudio = { break; } - console.log("[Cider][Audio] CAP - Biased Mode"); + console.log("[Cider][Audio] CAP - Classic Mode"); } } From a5e22d5f0dbd3e70b1a16abd5916b9fe6033c642 Mon Sep 17 00:00:00 2001 From: child_duckling <19170969+child-duckling@users.noreply.github.com> Date: Sat, 26 Feb 2022 23:53:21 -0800 Subject: [PATCH 02/14] link handling for discordrpc.ts --- src/main/plugins/discordrpc.ts | 2 +- src/preload/cider-preload.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/plugins/discordrpc.ts b/src/main/plugins/discordrpc.ts index cec2d6d3..8997770f 100644 --- a/src/main/plugins/discordrpc.ts +++ b/src/main/plugins/discordrpc.ts @@ -155,7 +155,7 @@ export default class DiscordRichPresence { buttons: [ {label: "Listen on Cider", url: attributes.url.cider}, {label: "View on Apple Music", url: attributes.url.appleMusic}, - ] + ] //To change attributes.url => preload/cider-preload.js }; this._activity = this.filterActivity(this._activity, attributes) diff --git a/src/preload/cider-preload.js b/src/preload/cider-preload.js index 1558327f..69a90d7c 100644 --- a/src/preload/cider-preload.js +++ b/src/preload/cider-preload.js @@ -82,7 +82,7 @@ const MusicKitInterop = { attributes.playParams = attributes?.playParams ?? {id: 'no-id-found'}; attributes.playParams.id = attributes?.playParams?.id ?? 'no-id-found'; attributes.url = { - cider: `cider://play/s/${nowPlayingItem?._songId ?? (nowPlayingItem?.songId ??'no-id-found')}`, + cider: `https://cider.sh/link?play/s/${nowPlayingItem?._songId ?? (nowPlayingItem?.songId ??'no-id-found')}`, appleMusic: attributes.websiteUrl ? attributes.websiteUrl : `https://music.apple.com/${mk.storefrontId}/song/${nowPlayingItem?._songId ?? (nowPlayingItem?.songId ??'no-id-found')}` } if (attributes.playParams.id === 'no-id-found') { From 89e0d7c104098457d8dc97d77ff1522ed272fe33 Mon Sep 17 00:00:00 2001 From: Core <64542347+coredev-uk@users.noreply.github.com> Date: Sun, 27 Feb 2022 18:34:40 +0000 Subject: [PATCH 03/14] Update notifications Removed the shit tone of check for updates, made it manual Redone the function in utils Logging for autoupdater implemented --- src/i18n/README.md | 9 +++++- src/i18n/en_US.json | 4 +++ src/main/base/browserwindow.ts | 22 ++------------ src/main/base/utils.ts | 53 ++++++++++++++++++++++++++++++++++ src/preload/cider-preload.js | 2 -- src/renderer/index.js | 13 ++++++++- 6 files changed, 79 insertions(+), 24 deletions(-) diff --git a/src/i18n/README.md b/src/i18n/README.md index a1ead390..de2b2005 100644 --- a/src/i18n/README.md +++ b/src/i18n/README.md @@ -175,4 +175,11 @@ Update 19/2/2022 21:00 UTC Update 25/02/2022 15:30 UTC -* `action.moveToTop`: Changed to `Move out of Folder` instead of `Move to top` \ No newline at end of file +* `action.moveToTop`: Changed to `Move out of Folder` instead of `Move to top` + +Update 27/02/2022 18:30 UTC + +* `settings.notyf.updateCider.update-not-available`: Added for `en_US` +* `settings.notyf.updateCider.update-timeout`: Added for `en_US` +* `settings.notyf.updateCider.update-downloaded`: Added for `en_US` +* `settings.notyf.updateCider.update-error`: Added for `en_US` \ No newline at end of file diff --git a/src/i18n/en_US.json b/src/i18n/en_US.json index d5375b91..471926c9 100644 --- a/src/i18n/en_US.json +++ b/src/i18n/en_US.json @@ -239,6 +239,10 @@ "settings.option.general.updateCider.branch.description": "Select the branch to update Cider to", "settings.option.general.updateCider.branch.main": "Stable", "settings.option.general.updateCider.branch.develop": "Development", + "settings.notyf.updateCider.update-not-available": "No update available", + "settings.notyf.updateCider.update-downloaded": "Update has been downloaded, restart to apply", + "settings.notyf.updateCider.update-error": "Error updating Cider", + "settings.notyf.updateCider.update-timeout": "Update timed out", "settings.header.audio": "Audio", "settings.header.audio.description": "Adjust the audio settings for Cider.", "settings.option.audio.volumeStep": "Volume Step", diff --git a/src/main/base/browserwindow.ts b/src/main/base/browserwindow.ts index 7edde0d6..8c9c953d 100644 --- a/src/main/base/browserwindow.ts +++ b/src/main/base/browserwindow.ts @@ -973,27 +973,9 @@ export class BrowserWindow { }); ipcMain.on('check-for-update', async (_event) => { - const branch = utils.getStoreValue('general.update_branch') - let latestbranch = await fetch(`https://circleci.com/api/v1.1/project/gh/ciderapp/Cider/latest/artifacts?branch=${branch}&filter=successful`) - if (latestbranch.status != 200) { - console.log(`Error fetching latest artifact from the **${branch}** branch`) - return - } - - let latestbranchjson = await latestbranch.json() - let base_url = latestbranchjson[0].url - base_url = base_url.substring(0, base_url.lastIndexOf('/')) - - const options: any = { - provider: 'generic', - url: `${base_url}`, - allowDowngrade: true, - } - - // Have to handle the auto updaters seperatly until we can support macOS. electron-builder limitation -q - if (process.platform === 'win32') await new NsisUpdater(options).checkForUpdatesAndNotify() //Windows - if (process.platform === 'linux') await new AppImageUpdater(options).checkForUpdatesAndNotify() //Linux + await utils.checkForUpdate(); }); + ipcMain.on('disable-update', (event) => { // Check if using app store builds so people don't get pissy wen button go bonk if (app.isPackaged && !process.mas || !process.windowsStore) { diff --git a/src/main/base/utils.ts b/src/main/base/utils.ts index 7ada024e..25216580 100644 --- a/src/main/base/utils.ts +++ b/src/main/base/utils.ts @@ -3,6 +3,9 @@ import * as path from "path"; import {Store} from "./store"; import {BrowserWindow as bw} from "./browserwindow"; import {app} from "electron"; +import fetch from "electron-fetch"; +import {AppImageUpdater, NsisUpdater} from "electron-updater"; +import * as log from "electron-log"; export class utils { @@ -107,4 +110,54 @@ export class utils { bw.win.webContents.executeJavaScript("MusicKitInterop.previous()") } } + + /** + * Checks the application for updates + */ + static async checkForUpdate(): Promise { + + // Get the artifacts + const response = await fetch(`https://circleci.com/api/v1.1/project/gh/ciderapp/Cider/latest/artifacts?branch=${utils.getStoreValue('general.update_branch')}&filter=successful`) + if (response.status != 200) { + bw.win.webContents.send('update-response', 'update-timeout') + return; + } + + // Get the urls + const jsonResponse = await response.json() + let base_url = jsonResponse[0].url + base_url = base_url.substring(0, base_url.lastIndexOf('/')) + + const options: any = { + provider: 'generic', + url: base_url, + allowDowngrade: true, + } + + let autoUpdater: any = null + if (process.platform === 'win32') { //Windows + autoUpdater = await new NsisUpdater(options) + } else { + autoUpdater = await new AppImageUpdater(options) //Linux and Mac (AppImages work on macOS btw) + } + + autoUpdater.on('error', (error: any) => { + console.error(`[AutoUpdater] Error: ${error}`) + bw.win.webContents.send('update-response', "update-error") + }) + + autoUpdater.on('update-not-available', () => { + console.log('[AutoUpdater] Update not available.') + bw.win.webContents.send('update-response', "update-not-available"); + }) + + autoUpdater.on('update-downloaded', () => { + console.log('[AutoUpdater] Update downloaded.') + bw.win.webContents.send('update-response', "update-downloaded"); + }) + + log.transports.file.level = "debug" + autoUpdater.logger = log + await autoUpdater.checkForUpdate() + } } \ No newline at end of file diff --git a/src/preload/cider-preload.js b/src/preload/cider-preload.js index 69a90d7c..6a8d2358 100644 --- a/src/preload/cider-preload.js +++ b/src/preload/cider-preload.js @@ -156,5 +156,3 @@ process.once('loaded', () => { console.log("Setting ipcRenderer") global.MusicKitInterop = MusicKitInterop; }); - -ipcRenderer.send('check-for-update') diff --git a/src/renderer/index.js b/src/renderer/index.js index b276c05e..824dfb55 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -64,7 +64,6 @@ const store = new Vuex.Store({ } } }) -ipcRenderer.send('check-for-update') const app = new Vue({ el: "#app", store: store, @@ -3950,6 +3949,18 @@ const app = new Vue({ }, checkForUpdate() { ipcRenderer.send('check-for-update') + ipcRenderer.on('update-response', (event, res) => { + if (res === "update-not-available") { + notyf.error(app.getLz(`settings.notyf.updateCider.${res}`)) + } else if (res === "update-downloaded") { + notyf.success(app.getLz(`settings.notyf.updateCider.${res}`)) + } else if (res === "update-error") { + notyf.error(app.getLz(`settings.notyf.updateCider.${res}`)) + } else if (res === "update-timeout") { + notyf.error(app.getLz(`settings.notyf.updateCider.${res}`)) + } + + }) }, } }) From 01d779a47df889071139dfa27f4717301bb6d7e4 Mon Sep 17 00:00:00 2001 From: Nosh118 <67752804+Nosh118@users.noreply.github.com> Date: Sun, 27 Feb 2022 20:08:18 +0000 Subject: [PATCH 04/14] Update en_GB.json --- src/i18n/en_GB.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/en_GB.json b/src/i18n/en_GB.json index 56e10c21..95ff344f 100644 --- a/src/i18n/en_GB.json +++ b/src/i18n/en_GB.json @@ -5,7 +5,7 @@ "i18n.authors": "Core, inalone", "date.format": "${d} ${m}, ${y}", "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.", "settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audio Normalisation", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalises peak volume for individual tracks to create a more uniform listening experience.", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialisation", From c36b87e4f63564a56911684ed6b1d7fd799288d9 Mon Sep 17 00:00:00 2001 From: Nosh118 <67752804+Nosh118@users.noreply.github.com> Date: Sun, 27 Feb 2022 20:09:38 +0000 Subject: [PATCH 05/14] Update en_US.json --- src/i18n/en_US.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/en_US.json b/src/i18n/en_US.json index 471926c9..79da4966 100644 --- a/src/i18n/en_US.json +++ b/src/i18n/en_US.json @@ -258,7 +258,7 @@ "settings.header.audio.quality.standard.description": "64 kbps", "settings.option.audio.seamlessTransition": "Seamless Audio Transition", "settings.option.audio.enableAdvancedFunctionality": "Enable Advanced Functionality", - "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.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": "An assortment of in-house developed audio effects for Cider.", "settings.warn.audioLab.withoutAF": "AudioContext (Advanced Functionality) is required to enable Cider Audio Laboratory.", @@ -369,4 +369,4 @@ "remote.web.title": "Cider Remote", "remote.web.description": "Scan the QR code to pair your phone up with this Cider instance", "about.thanks": "Major thanks to the Cider Collective Team and all of our contributors." -} \ No newline at end of file +} From afb057add6561714c4d8a2ec788f960e9c96c63b Mon Sep 17 00:00:00 2001 From: Nosh118 <67752804+Nosh118@users.noreply.github.com> Date: Sun, 27 Feb 2022 20:20:39 +0000 Subject: [PATCH 06/14] Update en_GB.json --- src/i18n/en_GB.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/en_GB.json b/src/i18n/en_GB.json index 95ff344f..d778c535 100644 --- a/src/i18n/en_GB.json +++ b/src/i18n/en_GB.json @@ -2,7 +2,7 @@ "i18n.languageName": "English (UK)", "i18n.languageNameEnglish": "English (UK)", "i18n.category": "main", - "i18n.authors": "Core, inalone", + "i18n.authors": "Core, inalone, nosh118", "date.format": "${d} ${m}, ${y}", "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.", @@ -11,4 +11,5 @@ "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialisation", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialise audio and make audio more 3-dimensional (note: This is not Dolby Atmos)", "spatial.notTurnedOn": "Audio Spatialisation is disabled. To use, please enable it first." + "action.tray.minimize": "Minimise to Tray", } From 95cea8b2cb6d6479e25fc6848ad50d5b89301356 Mon Sep 17 00:00:00 2001 From: Nosh118 <67752804+Nosh118@users.noreply.github.com> Date: Sun, 27 Feb 2022 20:22:28 +0000 Subject: [PATCH 07/14] Update en_US.json --- src/i18n/en_US.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/en_US.json b/src/i18n/en_US.json index 79da4966..672c028d 100644 --- a/src/i18n/en_US.json +++ b/src/i18n/en_US.json @@ -157,7 +157,7 @@ "home.recentlyPlayed": "Recently Played", "home.recentlyAdded": "Recently Added", "home.artistsFeed": "Your Artists Feed", - "home.artistsFeed.noArtist": "Follow some artists first and their latest releases will be here", + "home.artistsFeed.noArtist": "Follow some artists to see their latest releases", "home.madeForYou": "Made For You", "home.friendsListeningTo": "Friends Listening To", "home.followedArtists": "Followed Artists", From a03cf98c7e5109c3ce9e29a04843d10b1a8ef4bb Mon Sep 17 00:00:00 2001 From: Nosh118 <67752804+Nosh118@users.noreply.github.com> Date: Sun, 27 Feb 2022 20:24:35 +0000 Subject: [PATCH 08/14] Update en_US.json --- src/i18n/en_US.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/en_US.json b/src/i18n/en_US.json index 672c028d..eb2230f1 100644 --- a/src/i18n/en_US.json +++ b/src/i18n/en_US.json @@ -2,7 +2,7 @@ "i18n.languageName": "English (US)", "i18n.languageNameEnglish": "English (US)", "i18n.category": "main", - "i18n.authors": "@maikirakiwi @kyw504100", + "i18n.authors": "@maikirakiwi @kyw504100 nosh118", "app.name": "Cider", "date.format": "${m} ${d}, ${y}", "dialog.cancel": "Cancel", From 2eb466978dd7cd6fc9244f303151a66a78f6e146 Mon Sep 17 00:00:00 2001 From: Maikiwi Date: Sun, 27 Feb 2022 20:59:20 -0800 Subject: [PATCH 09/14] move cider audio stuff to debug level --- src/renderer/audio/audio.js | 52 ++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/src/renderer/audio/audio.js b/src/renderer/audio/audio.js index 2b65e799..e5b0de5d 100644 --- a/src/renderer/audio/audio.js +++ b/src/renderer/audio/audio.js @@ -369,7 +369,7 @@ var CiderAudio = { } - console.log("[Cider][Audio] CAP - Clarity Mode"); + console.debug("[Cider][Audio] CAP - Clarity Mode"); } else if (app.cfg.audio.maikiwiAudio.ciderPPE_value === 0.5) { @@ -396,7 +396,7 @@ var CiderAudio = { break; } - console.log("[Cider][Audio] CAP - Classic Mode"); + console.debug("[Cider][Audio] CAP - Classic Mode"); } } @@ -433,7 +433,7 @@ var CiderAudio = { try {for (var i of CiderAudio.audioNodes.llpw){i.disconnect();} CiderAudio.audioNodes.llpw = null} catch(e){} try {for (var i of CiderAudio.audioNodes.vibrantbassNode){i.disconnect();} CiderAudio.audioNodes.vibrantbassNode = null} catch(e){} - console.log("[Cider][Audio] Finished hierarchical unloading"); + console.debug("[Cider][Audio] Finished hierarchical unloading"); }, hierarchical_loading: function (){ @@ -453,13 +453,13 @@ var CiderAudio = { CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]); app.cfg.audio.normalization = true; - console.log('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth, Maikiwi Spatial') + console.debug('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth, Maikiwi Spatial') } else { app.cfg.audio.normalization = true; CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.log('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth, Spatial') + console.debug('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth, Spatial') } @@ -478,12 +478,12 @@ var CiderAudio = { CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]); app.cfg.audio.normalization = true; - console.log('[Cider][Audio] CAP, Analog Warmth, Maikiwi Spatial') + console.debug('[Cider][Audio] CAP, Analog Warmth, Maikiwi Spatial') } else { CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.log('[Cider][Audio] CAP, Analog Warmth, Spatial') + console.debug('[Cider][Audio] CAP, Analog Warmth, Spatial') } } // Vibrant Bass, CAP, Spatial @@ -498,12 +498,12 @@ var CiderAudio = { CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.llpw[0]); app.cfg.audio.normalization = true - console.log('[Cider][Audio] Vibrant Bass, CAP, Maikiwi Spatial') + console.debug('[Cider][Audio] Vibrant Bass, CAP, Maikiwi Spatial') } else { CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.llpw[0]); - console.log('[Cider][Audio] Vibrant Bass, CAP, Spatial') + console.debug('[Cider][Audio] Vibrant Bass, CAP, Spatial') } } @@ -519,7 +519,7 @@ var CiderAudio = { app.cfg.audio.normalization = true; CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.log('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth') + console.debug('[Cider][Audio] Vibrant Bass, CAP, Analog Warmth') } // CAP, Spatial else if (app.cfg.audio.maikiwiAudio.vibrantBass.multiplier === 0 && @@ -532,12 +532,12 @@ var CiderAudio = { CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.llpw[0]); app.cfg.audio.normalization = true; - console.log('[Cider][Audio] CAP, Maikiwi Spatial') + console.debug('[Cider][Audio] CAP, Maikiwi Spatial') } else { CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.llpw[0]); - console.log('[Cider][Audio] CAP, Spatial') + console.debug('[Cider][Audio] CAP, Spatial') } } // Analog Warmth, Spatial @@ -551,12 +551,12 @@ var CiderAudio = { CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.analogWarmth[0]); app.cfg.audio.normalization = true; - console.log('[Cider][Audio] Analog Warmth, Maikiwi Spatial') + console.debug('[Cider][Audio] Analog Warmth, Maikiwi Spatial') } else { CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.log('[Cider][Audio] Analog Warmth, Spatial') + console.debug('[Cider][Audio] Analog Warmth, Spatial') } } // CAP, Analog Warmth @@ -568,7 +568,7 @@ var CiderAudio = { CiderAudio.llpw_h2_2(true, 1); CiderAudio.analogWarmth_h2_3(true, 3); CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.log('[Cider][Audio] CAP and Analog Warmth') + console.debug('[Cider][Audio] CAP and Analog Warmth') } // Vibrant Bass, Analog Warmth else if (app.cfg.audio.maikiwiAudio.vibrantBass.multiplier !== 0 && @@ -580,7 +580,7 @@ var CiderAudio = { CiderAudio.analogWarmth_h2_3(true, 2); app.cfg.audio.normalization = true; CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.log('[Cider][Audio] Vibrant Bass, Analog Warmth') + console.debug('[Cider][Audio] Vibrant Bass, Analog Warmth') } // Vibrant Bass, CAP @@ -594,7 +594,7 @@ var CiderAudio = { app.cfg.audio.normalization = true; CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]); - console.log('[Cider][Audio] Vibrant Bass, CAP') + console.debug('[Cider][Audio] Vibrant Bass, CAP') } // Vibrant Bass, Spatial else if (app.cfg.audio.maikiwiAudio.vibrantBass.multiplier !== 0 && @@ -608,12 +608,12 @@ var CiderAudio = { app.cfg.audio.normalization = true; CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.vibrantbassNode[0]); - console.log('[Cider][Audio] Vibrant Bass, Maikiwi Spatial') + console.debug('[Cider][Audio] Vibrant Bass, Maikiwi Spatial') } else { CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.vibrantbassNode[0]); - console.log('[Cider][Audio] Vibrant Bass, Spatial') + console.debug('[Cider][Audio] Vibrant Bass, Spatial') } } @@ -626,7 +626,7 @@ var CiderAudio = { CiderAudio.vibrantbass_h2_1(true) app.cfg.audio.normalization = true; CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.vibrantbassNode[0]); - console.log('[Cider][Audio] Vibrant Bass') + console.debug('[Cider][Audio] Vibrant Bass') } // CAP @@ -636,7 +636,7 @@ var CiderAudio = { app.cfg.audio.maikiwiAudio.analogWarmth === false) { CiderAudio.llpw_h2_2(true, 1); CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]); - console.log('[Cider][Audio] CAP') + console.debug('[Cider][Audio] CAP') } // Analog Warmth else if (app.cfg.audio.maikiwiAudio.vibrantBass.multiplier === 0 && @@ -645,7 +645,7 @@ var CiderAudio = { app.cfg.audio.maikiwiAudio.analogWarmth === true) { CiderAudio.analogWarmth_h2_3(true, 1); CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.analogWarmth[0]); - console.log('[Cider][Audio] Analog Warmth') + console.debug('[Cider][Audio] Analog Warmth') } // Spatial else if (app.cfg.audio.maikiwiAudio.vibrantBass.multiplier === 0 && @@ -657,22 +657,22 @@ var CiderAudio = { app.cfg.audio.normalization = true; CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialNode); CiderAudio.audioNodes.spatialNode.connect(CiderAudio.audioNodes.audioBands[0]); - console.log('[Cider][Audio] Maikiwi Spatial') + console.debug('[Cider][Audio] Maikiwi Spatial') } else { CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.spatialInput.input); CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.audioBands[0]); - console.log('[Cider][Audio] Spatial') + console.debug('[Cider][Audio] Spatial') } } // Nothing else { CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.audioBands[0]); - console.log('[Cider][Audio] Nothing') // If CAP & vibrant bass is disabled + console.debug('[Cider][Audio] Nothing') // If CAP & vibrant bass is disabled } - console.log("[Cider][Audio] Finished hierarchical loading"); + console.debug("[Cider][Audio] Finished hierarchical loading"); }, From d2cc8c557390787a9627ae8a6c0d97bddac8758c Mon Sep 17 00:00:00 2001 From: Maikiwi Date: Sun, 27 Feb 2022 22:41:20 -0800 Subject: [PATCH 10/14] bamboozling vapor (normalization fix) --- src/renderer/index.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/renderer/index.js b/src/renderer/index.js index 824dfb55..9018f2c1 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -785,10 +785,12 @@ const app = new Vue({ ipcRenderer.on('SoundCheckTag', (event, tag) => { let replaygain = self.parseSCTagToRG(tag) + console.debug(`[Cider][MaikiwiSoundCheck] Replay Gain: ${JSON.stringify(replaygain)} | Attenuating '${Math.log10(replaygain.gain) * 20}' dB`) try { - CiderAudio.audioNodes.gainNode.gain.value = (Math.min(Math.pow(10, (replaygain.gain / 20)), (1 / replaygain.peak))) + //CiderAudio.audioNodes.gainNode.gain.value = (Math.min(Math.pow(10, (replaygain.gain / 20)), (1 / replaygain.peak))) + CiderAudio.audioNodes.gainNode.gain.value = replaygain.gain } catch (e) { - } + } }) ipcRenderer.on('play', function (_event, mode, id) { @@ -3767,8 +3769,9 @@ const app = new Vue({ } numbers.shift() - let gain = Math.log10((Math.max(numbers[0], numbers[1]) ?? 1000) / 1000.0) * -10 + //let gain = Math.log10((Math.max(numbers[0], numbers[1]) ?? 1000) / 1000.0) * -10 let peak = Math.max(numbers[6], numbers[7]) / 32768.0 + let gain = Math.pow(10, ((-7.63 - (Math.log10(peak) * 20)) / 20))// EBU R 128 Compliant return { gain: gain, peak: peak From bc31a30a664165cd62719995aae62af4850a0631 Mon Sep 17 00:00:00 2001 From: Core <64542347+coredev-uk@users.noreply.github.com> Date: Mon, 28 Feb 2022 13:57:48 +0000 Subject: [PATCH 11/14] Refined the convertTime function --- src/i18n/README.md | 7 ++++- src/i18n/en_US.json | 2 ++ src/renderer/index.js | 63 +++++++++++++++++++++++++++++++++---------- 3 files changed, 57 insertions(+), 15 deletions(-) diff --git a/src/i18n/README.md b/src/i18n/README.md index de2b2005..525e6f46 100644 --- a/src/i18n/README.md +++ b/src/i18n/README.md @@ -182,4 +182,9 @@ Update 27/02/2022 18:30 UTC * `settings.notyf.updateCider.update-not-available`: Added for `en_US` * `settings.notyf.updateCider.update-timeout`: Added for `en_US` * `settings.notyf.updateCider.update-downloaded`: Added for `en_US` -* `settings.notyf.updateCider.update-error`: Added for `en_US` \ No newline at end of file +* `settings.notyf.updateCider.update-error`: Added for `en_US` + +Update 28/02/2022 13:00 UTC + +* `term.time.days`: Added for `en_US` +* `term.time.day`: Added for `en_US` \ No newline at end of file diff --git a/src/i18n/en_US.json b/src/i18n/en_US.json index eb2230f1..686575d5 100644 --- a/src/i18n/en_US.json +++ b/src/i18n/en_US.json @@ -89,6 +89,8 @@ "term.time.added": "Added", "term.time.released": "Released", "term.time.updated": "Updated", + "term.time.days": "days", + "term.time.day": "day", "term.time.hours": "hours", "term.time.hour": "hour", "term.time.minutes": "minutes", diff --git a/src/renderer/index.js b/src/renderer/index.js index 9018f2c1..767557b5 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -1334,24 +1334,65 @@ const app = new Vue({ return this.playerLCD.playbackDuration } }, - convertTime(time) { + /** + * Converts seconds to dd:hh:mm:ss + * @param time (in seconds) + * @param format (short, long) + * @returns {string} + */ + convertTime(time, format = 'short') { if (typeof time !== "number") { time = parseInt(time) } const timeGates = { - 600: 15, - 3600: 14, - 36000: 12, + 600: 15, // 10 Minutes + 3600: 14, // Hour + 36000: 12, // 10 Hours } + const datetime = new Date(time * 1000) + + let returnTime = datetime.toISOString().substring(11, 19); for (let key in timeGates) { if (time < key) { - return new Date(time * 1000).toISOString().substring(timeGates[key], 19) + returnTime = datetime.toISOString().substring(timeGates[key], 19) + break } } - return new Date(time * 1000).toISOString().substring(11, 19) + // Add the days on the front + let day; + if (time >= 86400) { + day = datetime.toISOString().substring(8, 10) + day = parseInt(day) - 1 + returnTime = day + ":" + returnTime + } + + if (format === 'long') { + const longFormat = [] + + // Seconds + longFormat.push(`${datetime.getSeconds()} ${app.getLz('term.time.second', options = {count: datetime.getSeconds()})}`) + + // Minutes + if (time >= 60) { + longFormat.push(`${datetime.getMinutes()} ${app.getLz('term.time.minute', options = {count: datetime.getMinutes()})}`) + } + + // Hours + if (time >= 3600) { + longFormat.push(`${datetime.getHours()} ${app.getLz('term.time.hour', options = {count: datetime.getHours()})}`) + } + + // Days + if (time >= 86400) { + longFormat.push(`${day} ${app.getLz('term.time.day', options = {count: day})}`) + } + returnTime = longFormat.reverse().join(', ') + } + + return returnTime }, hashCode(str) { let hash = 0, @@ -2314,14 +2355,8 @@ const app = new Vue({ getTotalTime() { try { if (app.showingPlaylist.relationships.tracks.data.length > 0) { - let time = Math.round([].concat(...app.showingPlaylist.relationships.tracks.data).reduce((a, {attributes: {durationInMillis}}) => a + durationInMillis, 0) / 1000); - let hours = Math.floor(time / 3600) - let mins = Math.floor(time / 60) % 60 - let secs = time % 60 - return app.showingPlaylist.relationships.tracks.data.length + " " + app.getLz('term.tracks', options = {count: app.showingPlaylist.relationships.tracks.data.length}) + ", " - + ((hours > 0) ? (hours + (" " + (app.getLz('term.time.hour', options = {count: hours}) + ", "))) : "") + - ((mins > 0) ? (mins + (" " + app.getLz('term.time.minute', options = {count: mins}) + ", ")) : "") + - secs + (" " + app.getLz('term.time.second', options = {count: secs}) + "."); + const timeInSeconds = Math.round([].concat(...app.showingPlaylist.relationships.tracks.data).reduce((a, {attributes: {durationInMillis}}) => a + durationInMillis, 0) / 1000); + return `${app.showingPlaylist.relationships.tracks.data.length} ${app.getLz('term.tracks', options = {count: app.showingPlaylist.relationships.tracks.data.length})}, ${this.convertTime(timeInSeconds, 'long')}` } else return "" } catch (err) { return "" From e23e7a6fe194d96643c85b18e4feeb051c062ad7 Mon Sep 17 00:00:00 2001 From: Core <64542347+coredev-uk@users.noreply.github.com> Date: Mon, 28 Feb 2022 14:33:59 +0000 Subject: [PATCH 12/14] Fixes to playlist time --- src/i18n/en_US.json | 4 ++++ src/renderer/index.js | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/i18n/en_US.json b/src/i18n/en_US.json index 686575d5..88683bf5 100644 --- a/src/i18n/en_US.json +++ b/src/i18n/en_US.json @@ -117,6 +117,10 @@ "term.equalizer": "Equalizer", "term.reset": "Reset", "term.tracks": "tracks", + "term.track": { + "one" : "track", + "other" : "tracks" + }, "term.videos": "Videos", "term.menu": "Menu", "term.check": "Check", diff --git a/src/renderer/index.js b/src/renderer/index.js index 767557b5..e0057fb7 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -1373,7 +1373,9 @@ const app = new Vue({ const longFormat = [] // Seconds - longFormat.push(`${datetime.getSeconds()} ${app.getLz('term.time.second', options = {count: datetime.getSeconds()})}`) + if (datetime.getSeconds() !== 0) { + longFormat.push(`${datetime.getSeconds()} ${app.getLz('term.time.seconds')}`) + } // Minutes if (time >= 60) { @@ -2356,7 +2358,7 @@ const app = new Vue({ try { if (app.showingPlaylist.relationships.tracks.data.length > 0) { const timeInSeconds = Math.round([].concat(...app.showingPlaylist.relationships.tracks.data).reduce((a, {attributes: {durationInMillis}}) => a + durationInMillis, 0) / 1000); - return `${app.showingPlaylist.relationships.tracks.data.length} ${app.getLz('term.tracks', options = {count: app.showingPlaylist.relationships.tracks.data.length})}, ${this.convertTime(timeInSeconds, 'long')}` + return `${app.showingPlaylist.relationships.tracks.data.length} ${app.getLz('term.track', options = {count: app.showingPlaylist.relationships.tracks.data.length})}, ${this.convertTime(timeInSeconds, 'long')}` } else return "" } catch (err) { return "" From af68214177eff91e15ed8054cef77beff991b2bb Mon Sep 17 00:00:00 2001 From: Core <64542347+coredev-uk@users.noreply.github.com> Date: Mon, 28 Feb 2022 16:33:45 +0000 Subject: [PATCH 13/14] Depends update --- package.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 239acb66..7716457a 100644 --- a/package.json +++ b/package.json @@ -35,26 +35,26 @@ "circle:append-bid": "node resources/appendCommitToVersion" }, "dependencies": { - "@sentry/electron": "^2.5.4", - "@sentry/integrations": "^6.17.4", + "@sentry/electron": "^3.0.2", + "@sentry/integrations": "^6.18.1", "adm-zip": "^0.5.9", "castv2-client": "^1.2.0", "chokidar": "^3.5.3", "discord-rpc": "^4.0.1", "ejs": "^3.1.6", "electron-fetch": "^1.7.4", - "electron-log": "^4.4.5", + "electron-log": "^4.4.6", "electron-notarize": "^1.1.1", "electron-store": "^8.0.1", - "electron-updater": "^4.6.1", + "electron-updater": "^4.6.5", "electron-window-state": "^5.0.3", - "express": "^4.17.2", + "express": "^4.17.3", "get-port": "^5.1.1", "jsonc": "^2.0.0", "lastfmapi": "^0.1.1", "mdns-js": "git+https://github.com/ciderapp/node-mdns-js.git", "mpris-service": "^2.1.2", - "music-metadata": "^7.11.4", + "music-metadata": "^7.12.1", "node-gyp": "^8.4.1", "node-ssdp": "^4.0.1", "qrcode": "^1.5.0", @@ -64,24 +64,24 @@ "source-map-support": "^0.5.21", "typescript": "^4.5.5", "v8-compile-cache": "^2.3.0", - "ws": "^8.4.2", + "ws": "^8.5.0", "xml2js": "^0.4.23", "youtube-search-without-api-key": "^1.0.7" }, "devDependencies": { - "@playwright/test": "^1.18.1", + "@playwright/test": "^1.19.2", "@types/discord-rpc": "^4.0.0", "@types/express": "^4.17.13", "@types/qrcode-terminal": "^0.12.0", - "@types/ws": "^8.2.2", + "@types/ws": "^8.5.1", "electron": "git+https://github.com/castlabs/electron-releases.git", "electron-builder": "^22.14.13", - "electron-builder-notarize-pkg": "^1.1.0", + "electron-builder-notarize-pkg": "^1.2.0", "electron-webpack": "^2.8.2", "musickit-typescript": "^1.2.4", - "playwright": "^1.18.1", + "playwright": "^1.19.2", "vue-devtools": "^5.1.4", - "webpack": "~5.65.0" + "webpack": "~5.69.1" }, "fileAssociations": [ { From fad920960e5b8c5aa7147071271ce66e220b303a Mon Sep 17 00:00:00 2001 From: GamingLiamStudios <58615717+GamingLiamStudios@users.noreply.github.com> Date: Tue, 1 Mar 2022 05:40:12 +1100 Subject: [PATCH 14/14] Update en_OWO.json (#521) Translated with https://gist.github.com/GamingLiamStudios/25fcecabcd8b4cc9444b4b161c3e0033 --- src/i18n/en_OWO.json | 323 ++++++++++++++++++++++++++----------------- 1 file changed, 195 insertions(+), 128 deletions(-) diff --git a/src/i18n/en_OWO.json b/src/i18n/en_OWO.json index 9001e5ea..dbbf5726 100644 --- a/src/i18n/en_OWO.json +++ b/src/i18n/en_OWO.json @@ -5,50 +5,51 @@ "i18n.authors": "@deerwithacurl @gamingliamstudios", "app.name": "Cidew", "date.format": "${m} ${d}, ${y}", - "dialog.cancel": "Nu", - "dialog.ok": "Oki", + "dialog.cancel": "Cancew", + "dialog.ok": "OK", "notification.updatingLibrarySongs": "Updating wibwawy songs...", "notification.updatingLibraryAlbums": "Updating wibwawy awbums...", "notification.updatingLibraryArtists": "Updating wibwawy awtists...", "term.appleInc": "Appwe Inc.", - "term.appleMusic": "Appwe Mewsic", - "term.applePodcasts": "Appwe Pawdcasts", - "term.itunes": "iTuwunes", - "term.github": "GitHuwub", + "term.appleMusic": "Appwe Music", + "term.applePodcasts": "Appwe Podcasts", + "term.itunes": "iTunyes", + "term.github": "GitHub", "term.discord": "Discowd", - "term.learnMore": "Weawn moar", - "term.accountSettings": "Accownt Settings", + "term.learnMore": "Weawn mowe", + "term.accountSettings": "Account Settings", "term.logout": "Wogout", - "term.login": "Wogin", - "term.about": "Abowt", - "term.privateSession": "Pwivate Session OwO", - "term.queue": "Quwue", + "term.login": "Wog In", + "term.about": "About", + "term.privateSession": "Pwivate Session", + "term.queue": "Queue", + "term.history": "Histowy", "term.search": "Seawch", "term.library": "Wibwawy", - "term.listenNow": "Wisten Nao", + "term.listenNow": "Wisten Nyow", "term.browse": "Bwowse", "term.radio": "Wadio", "term.recentlyAdded": "Wecentwy Added", - "term.songs": "Sawngs", + "term.songs": "Songs", "term.albums": "Awbums", "term.artists": "Awtists", - "term.podcasts": "Pawdcasts", + "term.podcasts": "Podcasts", "term.playlists": "Pwaywists", "term.playlist": "Pwaywist", "term.newPlaylist": "Nyew Pwaywist", - "term.newPlaylistFolder": "New Pwaywist Fowdew", - "term.createNewPlaylist": "Cweate New Pwaywist", - "term.createNewPlaylistFolder": "Cweate New Pwaywist Fowdew", - "term.deletePlaylist": "Awe chu suwe chu wan to dewete dis pwaywist?", + "term.newPlaylistFolder": "Nyew Pwaywist Fowdew", + "term.createNewPlaylist": "Cweate Nyew Pwaywist", + "term.createNewPlaylistFolder": "Cweate Nyew Pwaywist Fowdew", + "term.deletePlaylist": "Awe you suwe you want to dewete this pwaywist?", "term.play": "Pway", - "term.pause": "Pawse", + "term.pause": "Pause", "term.previous": "Pwevious", - "term.next": "Next", + "term.next": "Nyext", "term.shuffle": "Shuffwe", "term.repeat": "Wepeat", "term.volume": "Vowume", - "term.mute": "Muwute", - "term.unmute": "Unmuwute", + "term.mute": "Mute", + "term.unmute": "Unmute", "term.share": "Shawe", "term.share.success": "Copied to cwipboawd", "term.settings": "Settings", @@ -56,31 +57,32 @@ "term.sortBy": "Sowt By", "term.sortBy.album": "Awbum", "term.sortBy.artist": "Awtist", - "term.sortBy.name": "Name", + "term.sortBy.name": "Nyame", "term.sortBy.genre": "Genwe", "term.sortBy.releaseDate": "Wewease Date", "term.sortBy.duration": "Duwation", + "term.sortBy.dateAdded": "Date Added", "term.sortOrder": "A-Z", "term.sortOrder.ascending": "Ascending", "term.sortOrder.descending": "Descending", "term.viewAs": "View As", - "term.viewAs.coverArt": "Covew Awt", + "term.viewAs.coverArt": "Cuvw Awt", "term.viewAs.list": "Wist", "term.size": "Size", - "term.size.normal": "Nowmaw", - "term.size.compact": "Wittwe", - "term.enable": "Enabwe", + "term.size.normal": "Nyowmaw", + "term.size.compact": "Compact", + "term.enable": "Enyabwe", "term.disable": "Disabwe", - "term.enabled": "Enabwed", + "term.enabled": "Enyabwed", "term.disabled": "Disabwed", - "term.connect": "Connect", - "term.connecting": "Connecting", - "term.disconnect": "Disconnect", + "term.connect": "Connyect", + "term.connecting": "Connyecting", + "term.disconnect": "Disconnyect", "term.authed": "Authed", "term.confirm": "Confiwm?", - "term.more": "Moar", + "term.more": "Mowe", "term.less": "Wess", - "term.showMore": "Show moar", + "term.showMore": "Show mowe", "term.showLess": "Show wess", "term.topSongs": "Top Songs", "term.latestReleases": "Watest Weweases", @@ -89,21 +91,22 @@ "term.time.updated": "Updated", "term.time.hours": "houws", "term.time.hour": "houw", - "term.time.minutes": "minuwtes", - "term.time.minute": "minuwte", + "term.time.minutes": "minyutes", + "term.time.minute": "minyute", "term.time.seconds": "seconds", "term.time.second": "second", - "term.fullscreenView": "Fuwwwscween View", + "term.fullscreenView": "Fuwwscween View", "term.defaultView": "Defauwt View", - "term.audioSettings": "Audiowo Settings", + "term.audioSettings": "Audio Settings", + "term.audioControls": "Vowume Contwows", "term.clearAll": "Cweaw Aww", "term.recentStations": "Wecent Stations", "term.language": "Wanguage", "term.funLanguages": "Fun", - "term.noLyrics": "Woading... / Wywics not found./ Instwumentaw.", + "term.noLyrics": "Woading... / Wywics nyot found./ Instwumentaw.", "term.copyright": "Copywight", - "term.rightsReserved": "All Wights Wesewved.", - "term.sponsor": "Sponsow dis pwoject", + "term.rightsReserved": "Aww Wights Wesewved.", + "term.sponsor": "Sponsow this pwoject", "term.ciderTeam": "Cidew Team", "term.developer": "Devewopew", "term.socialTeam": "Sociaw Team", @@ -112,59 +115,78 @@ "term.equalizer": "Equawizew", "term.reset": "Weset", "term.tracks": "twacks", - "term.videos": "Videowos", - "term.menu": "Menuwu", + "term.videos": "Videos", + "term.menu": "Menyu", "term.check": "Check", "term.aboutArtist": "About {{artistName}}", "term.topResult": "Top Wesuwt", "term.sharedPlaylists": "Shawed Pwaywists", "term.people": "Peopwe", - "term.newpreset.name": "New EQ Pweset Name", + "term.newpreset.name": "Nyew EQ Pweset Nyame", "term.addedpreset": "Added Pweset", - "term.deletepreset.warn": "Awe chu suwe chu want to dewete dis pweset?", - "term.deletedpreset": "Wemoved pweset", - "term.musicVideos": "Music Videowos", + "term.deletepreset.warn": "Awe you suwe you want to dewete this pweset?", + "term.deletedpreset": "Wemuvd pweset", + "term.defaultPresets": "Defauwt Pwesets", + "term.userPresets": "Usew Pwesets", + "term.requestError": "Thewe was a pwobwem with the wequest.", + "term.song.link.generate": "Getting song.wink shawe UWW...", + "term.musicVideos": "Music Videos", "term.stations": "Stations", "term.curators": "Cuwatows", "term.appleCurators": "Appwe Cuwatows", "term.radioShows": "Wadio Shows", "term.recordLabels": "Wecowd Wabews", - "term.videoExtras": "Videowo Extwas", + "term.videoExtras": "Video Extwas", "term.top": "Top", + "term.version": "Vewsion", + "term.noVideos": "Nyo videos found.", + "term.plugin": "Pwug-in", + "term.pluginMenu": "Pwug-in Menyu", + "term.replay": "Wepway", + "term.uniqueAlbums": "Unyique Awbums", + "term.uniqueArtists": "Unyique Awtists", + "term.uniqueSongs": "Unyique Songs", + "term.topArtists": "Top Awtists", + "term.listenedTo": "Wistenyed to:", + "term.times": "times", + "term.topAlbums": "Top Awbums", + "term.plays": "Pways", + "term.topGenres": "Top Genwes", + "term.confirmLogout": "Awe you suwe you want to wogout?", "home.title": "Home", "home.recentlyPlayed": "Wecentwy Pwayed", "home.recentlyAdded": "Wecentwy Added", "home.artistsFeed": "Youw Awtists Feed", - "home.artistsFeed.noArtist": "Fowwow some awtists fiwst and theiw watest weleases wiww be here", - "home.madeForYou": "Made Fow Chu", - "home.friendsListeningTo": "Fwiends Wistening To", + "home.artistsFeed.noArtist": "Fowwow some awtists fiwst and theiw watest weweases wiww be hewe", + "home.madeForYou": "Made Fow You", + "home.friendsListeningTo": "Fwiends Wistenying To", "home.followedArtists": "Fowwowed Awtists", "error.appleMusicSubRequired": "Appwe Music wequiwes a subscwiption.", - "error.connectionError": "Thewe was a pwobwem connecting to Appwe Mewsic.", - "error.noResults": "No Wesuwts.", - "error.noResults.description": "Twy a new seawch.", + "error.connectionError": "Thewe was a pwobwem connyecting to Appwe Music.", + "error.noResults": "Nyo Wesuwts.", + "error.noResults.description": "Twy a nyew seawch.", "podcast.followOnCider": "Fowwow On Cidew", "podcast.followedOnCider": "Fowwowing On Cidew", - "podcast.subscribeOnItunes": "Subscwibe On iTuwunes", - "podcast.subscribedOnItunes": "Subscwibed On iTuwunes", - "podcast.itunesStore": "iTuwunes Stowe", - "podcast.episodes": "Episowodes", - "podcast.playEpisode": "Pway Episowode", - "podcast.website": "Pawdcast Website", + "podcast.subscribeOnItunes": "Subscwibe On iTunyes", + "podcast.subscribedOnItunes": "Subscwibed On iTunyes", + "podcast.itunesStore": "iTunyes Stowe", + "podcast.episodes": "Episodes", + "podcast.playEpisode": "Pway Episode", + "podcast.website": "Podcast Website", "action.addToLibrary": "Add to Wibwawy", "action.addToLibrary.success": "Added to Wibwawy", "action.addToLibrary.error": "Ewwow Adding to Wibwawy", - "action.removeFromLibrary": "Wemove fwom Wibwawy", - "action.removeFromLibrary.success": "Wemoved fwom Wibwawy", - "action.addToQueue": "Add to Quwue", - "action.addToQueue.success": "Added to Quwue", - "action.addToQueue.error": "Ewwow Adding to Quwue", - "action.removeFromQueue": "Wemove fwom Quwue", - "action.removeFromQueue.success": "Wemoved fwom Quwue", - "action.removeFromQueue.error": "Ewwow Wemoving fwom Quwue", - "action.createPlaylist": "Cweate a New Pwaywist", + "action.removeFromLibrary": "Wemuv fwom Wibwawy", + "action.removeFromLibrary.success": "Wemuvd fwom Wibwawy", + "action.addToQueue": "Add to Queue", + "action.addToQueue.success": "Added to Queue", + "action.addToQueue.error": "Ewwow Adding to Queue", + "action.removeFromQueue": "Wemuv fwom Queue", + "action.removeFromQueue.success": "Wemuvd fwom Queue", + "action.removeFromQueue.error": "Ewwow Wemoving fwom Queue", + "action.createPlaylist": "Cweate a Nyew Pwaywist", "action.addToPlaylist": "Add to Pwaywist", - "action.removeFromPlaylist": "Wemove fwom Pwaywist", + "action.removeFromPlaylist": "Wemuv fwom Pwaywist", "action.addToFavorites": "Add to Favowites", "action.follow": "Fowwow", "action.follow.success": "Fowwowed", @@ -172,110 +194,155 @@ "action.unfollow": "Unfowwow", "action.unfollow.success": "Unfowwowed", "action.unfollow.error": "Ewwow Unfowwowing", - "action.playNext": "Pway Next", + "action.playNext": "Pway Nyext", "action.playLater": "Pway Watew", "action.startRadio": "Stawt Wadio", "action.goToArtist": "Go to Awtist", "action.goToAlbum": "Go to Awbum", - "action.moveToTop": "Move to top", + "action.moveToTop": "Muv out of Fowdew", "action.share": "Shawe", - "action.rename": "Wename", + "action.rename": "Wenyame", "action.love": "Wuv", "action.unlove": "Unwuv", "action.dislike": "Diswike", "action.undoDislike": "Undo diswike", - "action.showWebRemoteQR": "Web Wiimote", - "action.playTracksNext": "Pway ${app.selectedMediaItems.length} twacks next", - "action.playTracksLater": "Pway ${app.selectedMediaItems.length} twacks latew", - "action.removeTracks": "Wemove ${self.selectedItems.length} twacks fwom quwue", + "action.showWebRemoteQR": "Web Wemote", + "action.playTracksNext": "Pway ${app.selectedMediaItems.length} twacks nyext", + "action.playTracksLater": "Pway ${app.selectedMediaItems.length} twacks watew", + "action.removeTracks": "Wemuv ${self.selectedItems.length} twacks fwom queue", "action.import": "Impowt", "action.export": "Expowt", "action.showAlbum": "Show Compwete Awbum", - "action.tray.minimize": "Minimize to Tway", + "action.tray.minimize": "Minyimize to Tway", "action.tray.quit": "Quit", "action.tray.show": "Show", "action.update": "Update", - "action.newpreset": "New Pweset...", + "action.install": "Instaww", + "action.copy": "Copy", + "action.newpreset": "Nyew Pweset...", "action.deletepreset": "Dewete Pweset", - "settings.header.general": "Genewaw", - "settings.header.general.description": "Adjust the genewaw settings fow Cidew.", + "action.open": "Open", + "settings.header.general": "Genyewaw", + "settings.header.general.description": "Adjust the genyewaw settings fow Cidew.", "settings.option.general.language": "Wanguage", + "settings.option.general.resumebehavior": "Wesume behaviow", + "settings.option.general.resumebehavior.description": "Wesume behaviow affects how Cidew wiww wesume youw session when you wetuwn to the app.", + "settings.option.general.resumebehavior.locally": "Wocawwy", + "settings.option.general.resumebehavior.locally.description": "Cidew wiww wesume youw wast session on this machinye.", + "settings.option.general.resumebehavior.history": "Histowy", + "settings.option.general.resumebehavior.history.description": "Cidew wiww queue the wast song fwom youw uvwaww Appwe Music histowy, acwoss devices.", "settings.option.general.language.main": "Wanguages", "settings.option.general.language.fun": "Fun Wanguages", "settings.option.general.language.unsorted": "Unsowted", "settings.option.general.updateCider": "Update Cidew", "settings.option.general.updateCider.branch": "Cidew Update Bwanch", - "settings.option.general.updateCider.branch.description": "Sewect the bwanch to uwpdate Cidew to", + "settings.option.general.updateCider.branch.description": "Sewect the bwanch to update Cidew to", "settings.option.general.updateCider.branch.main": "Stabwe", "settings.option.general.updateCider.branch.develop": "Devewopment", - "settings.header.audio": "Audiowo", - "settings.header.audio.description": "Adjust the audiowo settings fow Cidew.", - "settings.option.audio.quality": "Audiowo Quawity", - "settings.header.audio.quality.hireslossless": "Hi-res losswess", - "settings.header.audio.quality.hireslossless.description": "(uwp to 24-bit/192 khz)", - "settings.header.audio.quality.lossless": "Losswess", - "settings.header.audio.quality.lossless.description": "(uwp to 24-bit/48 khz)", + "settings.header.audio": "Audio", + "settings.header.audio.description": "Adjust the audio settings fow Cidew.", + "settings.option.audio.volumeStep": "Vowume Step", + "settings.option.audio.maxVolume": "Max Vowume", + "settings.option.audio.quality": "Audio Quawity", + "settings.header.audio.quality.hireslossless": "Hi-Wes Wosswess", + "settings.header.audio.quality.hireslossless.description": "up to 24-bit/192 kHz", + "settings.header.audio.quality.lossless": "Wosswess", + "settings.header.audio.quality.lossless.description": "up to 24-bit/48 kHz", "settings.header.audio.quality.high": "High", - "settings.header.audio.quality.low": "Low", - "settings.header.audio.quality.auto": "Autowo", - "settings.option.audio.seamlessTransition": "Seamwess Audiowo Twansition", - "settings.option.audio.enableAdvancedFunctionality": "Enabwe Advanced Functionawity", - "settings.option.audio.enableAdvancedFunctionality.description": "Enabwing AudiowoContext functionawity wiww awwow fow extended audiowo featuwes wike Audiowo Nowmawization, Equalizews and Visuawizews, howevew on some systems dis may cause stuttewing in audiowo twacks.", - "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cidew Adwenawine Pwocessow™️", - "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacouwstic enhancements that makes evewything souwnd both wichew and mowe wivewy. | Designed by Maikiwi", + "settings.header.audio.quality.high.description": "256 kbps", + "settings.header.audio.quality.standard": "Standawd", + "settings.header.audio.quality.standard.description": "64 kbps", + "settings.option.audio.seamlessTransition": "Seamwess Audio Twansition", + "settings.option.audio.enableAdvancedFunctionality": "Enyabwe Advanced Functionyawity", + "settings.option.audio.enableAdvancedFunctionality.description": "Enyabwing AudioContext functionyawity wiww awwow fow extended audio featuwes wike Audio Nyowmawization , Equawizews and Visuawizews, howevew on some systems this may cause stuttewing in audio twacks.", + "settings.option.audio.audioLab": "Cidew Audio Wab", + "settings.option.audio.audioLab.description": "An assowtment of in-house devewoped audio effects fow Cidew.", + "settings.warn.audioLab.withoutAF": "AudioContext (Advanced Functionyawity) is wequiwed to enyabwe Cidew Audio Wabowatowy.", + "settings.option.audio.enableAdvancedFunctionality.analogWarmth": "Anyawog Wawmth", + "settings.option.audio.enableAdvancedFunctionality.analogWarmth.description": "Simuwates the anyawog wawmth modewwed aftew the Kowg Nyutube 6P1", + "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity": "Anyawog Wawmth intensity", + "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description": "Changes the intensity of the Anyawog Wawmth Moduwe pwocessing.", + "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Smooth", + "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Wawm", + "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cidew Adwenyawinye Pwocessow\u2122\ufe0f", + "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacoustic Enhancements that makes evewything sound both wichew and mowe wivewy | Designyed by Maikiwi.", + "settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP is nyot compatibwe with Spatiawization. Pwease disabwe Spatiawization to continyue.", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Stwength", - "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the stwength of the pwocessing done to the auwdio. (Aggwessive may yiewd uwndesiwabwe wesuwwts)", + "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the stwength of the pwocessing donye to the audio. (Aggwessive may yiewd undesiwabwe wesuwts)", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standawd", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Aggwessive", - "settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audiowo Nowmawization", - "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Nowmawizes peak vowume fow individuaw twacks to cweate a moar unifowm wistening expewience.", - "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audiowo Spatiawization", - "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatiawize audiowo and make audiowo moar 3-dimensionaw (note: Dis is not Dowby Atmos)", + "settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audio Nyowmawization", + "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Nyowmawizes peak vowume fow individuaw twacks to cweate a mowe unyifowm wistenying expewience.", + "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatiawization", + "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatiawize audio and make audio mowe 3-dimensionyaw (nyote: This is nyot Dowby Atmos)", + "settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Cidew Tunyed Spatiawization", + "settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description": "Pwe-tunyed Spatiawizing Effect, disabwes the customizabwe settings of Audio Spatiawization. Spatiawization must be enyabwed as a pwewequisite.", + "settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile": "Cidew Spatiawization Pwofiwe", + "settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description": "Changes the Tunying Pwofiwe of the Spatiawization. (Wequiwes App Westawt)", + "settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.standard": "Standawd", + "settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.audiophile": "Audiophiwe", + "settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "Spatiawization is nyot compatibwe with CAP. Pwease disabwe CAP to continyue.", "settings.header.visual": "Visuaw", "settings.header.visual.description": "Adjust the visuaw settings fow Cidew.", "settings.option.visual.windowBackgroundStyle": "Window Backgwound Stywe", - "settings.header.visual.windowBackgroundStyle.none": "None", + "settings.header.visual.windowBackgroundStyle.none": "Nyonye", "settings.header.visual.windowBackgroundStyle.artwork": "Awtwowk", "settings.header.visual.windowBackgroundStyle.image": "Image", - "settings.option.visual.animatedArtwork": "Animated Awtwowk", + "settings.option.visual.animatedArtwork": "Anyimated Awtwowk", "settings.header.visual.animatedArtwork.always": "Awways", "settings.header.visual.animatedArtwork.limited": "Wimited to pages and speciaw entwies", "settings.header.visual.animatedArtwork.disable": "Disabwe evewywhewe", - "settings.option.visual.animatedArtworkQuality": "Animated Awtwowk Quawity", - "settings.header.visual.animatedArtworkQuality.low": "Low", + "settings.option.visual.animatedArtworkQuality": "Anyimated Awtwowk Quawity", + "settings.header.visual.animatedArtworkQuality.low": "Wow", "settings.header.visual.animatedArtworkQuality.medium": "Medium", "settings.header.visual.animatedArtworkQuality.high": "High", "settings.header.visual.animatedArtworkQuality.veryHigh": "Vewy High", "settings.header.visual.animatedArtworkQuality.extreme": "Extweme", - "settings.option.visual.animatedWindowBackground": "Animated Window Backgwound", + "settings.option.visual.animatedWindowBackground": "Anyimated Window Backgwound", "settings.option.visual.hardwareAcceleration": "Hawdwawe Accewewation", "settings.option.visual.hardwareAcceleration.description": "Wequiwes wewaunch", "settings.header.visual.hardwareAcceleration.default": "Defauwt", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", - "settings.option.visual.showPersonalInfo": "Show Pewsonaw Info", + "settings.header.visual.theme": "Theme", + "settings.option.visual.theme.github.download": "Instaww fwom GitHub UWW", + "settings.option.visual.theme.github.explore": "Expwowe GitHub Themes", + "settings.header.visual.theme.github.page": "Themes fwom GitHub", + "settings.option.visual.theme.github.install.confirm": "Awe you suwe you want to instaww {{ repo }}?", + "settings.prompt.visual.theme.github.URL": "Entew the UWW of the theme you want to instaww", + "settings.notyf.visual.theme.install.success": "Theme instawwed successfuwwy", + "settings.notyf.visual.theme.install.error": "Theme instawwation faiwed", + "settings.option.visual.theme.default": "Cidew", + "settings.option.visual.theme.dark": "Dawk", + "settings.option.visual.showPersonalInfo": "Show Pewsonyaw Info", "settings.header.lyrics": "Wywics", "settings.header.lyrics.description": "Adjust the wywics settings fow Cidew.", - "settings.option.lyrics.enableMusixmatch": "Enabwe Musixmatch Wywics", - "settings.option.lyrics.enableMusixmatchKaraoke": "Enabwe Kawaoke Mode (Musixmatch onwy)", + "settings.option.lyrics.enableMusixmatch": "Enyabwe Musixmatch Wywics", + "settings.option.lyrics.enableMusixmatchKaraoke": "Enyabwe Kawaoke Mode (Musixmatch onwy)", "settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch Twanswation Pwefewwed Wanguage", - "settings.option.lyrics.enableYoutubeLyrics": "Enabwe YouTube Wywics fow Mewsic Videowos", - "settings.header.connectivity": "Connectivity", - "settings.header.connectivity.description": "Adjust the connectivity settings fow Cidew.", + "settings.option.lyrics.enableYoutubeLyrics": "Enyabwe Youtube Wywics fow Music Videos", + "settings.header.connectivity": "Connyectivity", + "settings.header.connectivity.description": "Adjust the connyectivity settings fow Cidew.", "settings.option.connectivity.discordRPC": "Discowd Wich Pwesence", - "settings.option.connectivity.playbackNotifications": "Pwayback Notifications", - "settings.header.connectivity.discordRPC.cider": "Disway as 'Cider'", - "settings.header.connectivity.discordRPC.appleMusic": "Dispway as 'Apple Music'", - "settings.option.connectivity.discordRPC.clearOnPause": "Cweaw Discowd Wich Pwesence on Paws", + "settings.option.connectivity.playbackNotifications": "Pwayback Nyotifications", + "settings.header.connectivity.discordRPC.cider": "Dispway as 'Cidew'", + "settings.header.connectivity.discordRPC.appleMusic": "Dispway as 'Appwe Music'", + "settings.option.connectivity.discordRPC.clearOnPause": "Cweaw Discowd Wich Pwesence on Pause", "settings.option.connectivity.lastfmScrobble": "Wast.fm Scwobbwing", - "settings.option.connectivity.lastfmScrobble.delay": "Wast.fm Scwobble Deway (%)", - "settings.option.connectivity.lastfmScrobble.nowPlaying": "Enabwe Wast.fm Nao Pwaying", - "settings.option.connectivity.lastfmScrobble.removeFeatured": "Wemove featuwing awtists fwom song titwe (Wast.fm)", + "settings.option.connectivity.lastfmScrobble.delay": "Wast.fm Scwobbwe Deway (%)", + "settings.option.connectivity.lastfmScrobble.nowPlaying": "Enyabwe Wast.fm Nyow Pwaying", + "settings.option.connectivity.lastfmScrobble.removeFeatured": "Wemuv featuwing awtists fwom song titwe (Wast.fm)", "settings.option.connectivity.lastfmScrobble.filterLoop": "Fiwtew wooped twack (Wast.fm)", + "settings.header.debug": "Debug", + "settings.option.debug.copy_log": "Copy wogs to cwipboawd", + "settings.option.debug.openAppData": "Open Cidew Fowdew", "settings.header.experimental": "Expewimentaw", "settings.header.experimental.description": "Adjust the expewimentaw settings fow Cidew.", - "settings.option.experimental.compactUI": "Wittwe UI", + "settings.option.experimental.unknownPlugin": "Unknyown Souwces", + "settings.option.experimental.unknownPlugin.description": "Awwow instawwation of pwugins fwom wepos othew than the Cidew Pwugin Wepositowy", + "settings.option.experimental.compactUI": "Compact UI", "settings.option.experimental.close_button_hide": "Cwose Button Shouwd Hide the Appwication", - "spatial.notTurnedOn": "Audiowo Spatiawization is disabwed. To use, pwease enabwe it fiwst.", + "settings.option.experimental.inline_playlists": "Inwinye Pwaywists and Awbums", + "spatial.notTurnedOn": "Audio Spatiawization is disabwed. To use, pwease enyabwe it fiwst.", "spatial.spatialProperties": "Spatiaw Pwopewties", "spatial.width": "Width", "spatial.height": "Height", @@ -292,10 +359,10 @@ "spatial.right": "Wight", "spatial.back": "Back", "spatial.down": "Down", - "spatial.listener": "Wistenew", - "spatial.audioSource": "Audiowo Souwce", - "settings.header.unfinished": "Unfinished", - "remote.web.title": "Cidew Wiimote", - "remote.web.description": "Scan da QR code to paiw chur phone up with dis Cidew instance", - "about.thanks": "Majow tanks to da Cidew Cowwective Team and aww of ouw contwibutows." -} \ No newline at end of file + "spatial.listener": "Wistenyew", + "spatial.audioSource": "Audio Souwce", + "settings.header.unfinished": "Unfinyished", + "remote.web.title": "Cidew Wemote", + "remote.web.description": "Scan the QW code to paiw youw phonye up with this Cidew instance", + "about.thanks": "Majow thanks to the Cidew Cowwective Team and aww of ouw contwibutows." +}