diff --git a/index.html b/index.html
index 1872de3..76da101 100644
--- a/index.html
+++ b/index.html
@@ -2087,6 +2087,26 @@
+
Waveform Seekbar
@@ -2913,7 +2933,7 @@
Choose what shows when you click the album art
diff --git a/js/app.js b/js/app.js
index 58e975d..ae561cb 100644
--- a/js/app.js
+++ b/js/app.js
@@ -1432,6 +1432,20 @@ document.addEventListener('DOMContentLoaded', async () => {
showKeyboardShortcuts();
});
+ // Font Settings
+ const fontSelect = document.getElementById('font-select');
+ if (fontSelect) {
+ const savedFont = localStorage.getItem('monochrome-font');
+ if (savedFont) {
+ fontSelect.value = savedFont;
+ }
+ fontSelect.addEventListener('change', (e) => {
+ const font = e.target.value;
+ document.documentElement.style.setProperty('--font-family', font);
+ localStorage.setItem('monochrome-font', font);
+ });
+ }
+
// Listener for Pocketbase Sync updates
window.addEventListener('library-changed', () => {
const path = window.location.pathname;
diff --git a/js/events.js b/js/events.js
index 5850e4c..9d46e89 100644
--- a/js/events.js
+++ b/js/events.js
@@ -1521,6 +1521,13 @@ export function initializeTrackInteractions(player, api, mainContent, contextMen
}
});
+ document.querySelector('.now-playing-bar .album').addEventListener('click', () => {
+ const track = player.currentTrack;
+ if (track?.album?.id) {
+ navigate(`/album/${track.album.id}`);
+ }
+ });
+
document.querySelector('.now-playing-bar .artist').addEventListener('click', (e) => {
const link = e.target.closest('.artist-link');
if (link) {
diff --git a/js/ui.js b/js/ui.js
index a88cf12..9ab52ee 100644
--- a/js/ui.js
+++ b/js/ui.js
@@ -42,6 +42,8 @@ import {
createProjectCardHTML,
createTrackFromSong,
} from './tracker.js';
+const savedFont = localStorage.getItem('monochrome-font');
+if (savedFont) document.documentElement.style.setProperty('--font-family', savedFont);
function sortTracks(tracks, sortType) {
if (sortType === 'custom') return [...tracks];
diff --git a/styles.css b/styles.css
index 4be47ee..2274b89 100644
--- a/styles.css
+++ b/styles.css
@@ -280,7 +280,7 @@ html {
body {
background-color: var(--background);
color: var(--foreground);
- font-family: Inter, sans-serif;
+ font-family: var(--font-family, 'Inter', sans-serif);
overflow: hidden;
transition:
background-color 0.3s ease,
@@ -1881,6 +1881,12 @@ input:checked + .slider::before {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
+ cursor: pointer;
+ transition: color var(--transition);
+}
+
+.track-info .details .album:hover {
+ color: var(--highlight);
}
.track-info .details .artist {
diff --git a/todo.md b/todo.md
new file mode 100644
index 0000000..de59d21
--- /dev/null
+++ b/todo.md
@@ -0,0 +1,24 @@
+# Feature Requests
+
+Sorted by ease of implementation (easiest to hardest):
+
+- [x] Album click navigation: Clicking on the album in the player bar navigates to the album page (default behavior - can be changed in settings)
+- [ ] Fix button overlap: Next track and casting buttons overlap on some screen resolutions
+- [ ] Reduce API calls: Minimize unnecessary API calls throughout the app
+- [ ] Editor's Picks: Create a JSON file of curated album IDs with metadata for the home screen. Include an option to disable in settings to avoid extra API calls.
+
+- [ ] Update notifications: Add ability to show the update popup in settings, with an option to automatically update (enabled by default)
+- [ ] Volume curve option: Add setting to switch between exponential and linear volume scaling
+- [ ] Custom fonts: Allow users to change fonts in settings or add custom fonts from Google Fonts or direct links
+
+- [ ] Audio effects: Add ability to change pitch and playback speed, plus effects like reverb, delay, and bitcrushing
+- [ ] Customizable EQ: Allow users to change the number of EQ bands and their range (-30 to 30), with a drag-to-adjust interface similar to FL Studio's velocity editor
+
+[ ] SoundCloud support: Integrate SoundCloud through SoundCloak
+[ ] Qobuz support: Integrate Qobuz through Qobuz-DL
+
+---
+
+## Bug Fixes
+
+- [ ] Next track and casting buttons overlap on some resolutions