Skip to content

Commit 455138f

Browse files
Merge pull request #54 from ModioStudio/feature/add-youtube-music
Feature/add youtube music
2 parents 9b9fd94 + ee5598a commit 455138f

85 files changed

Lines changed: 9178 additions & 1746 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.changeset/ai-dj-randomness.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
"MiniFy": patch
3+
---
4+
5+
Improved AI DJ to avoid duplicates and add more variety
6+
7+
- Played songs history now persists across queue restarts
8+
- Recent tracks and artists are shuffled before AI analysis
9+
- AI prompt updated to encourage diverse artist selection
10+
- Suggestions are shuffled before playback
11+
- Recent tracks excluded from suggestions to prevent repeats
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
"MiniFy": minor
3+
---
4+
5+
Added Clear Everything button in Settings
6+
7+
- New button in Privacy section to reset all app data
8+
- Confirmation dialog prevents accidental data loss
9+
- Clears Spotify tokens, AI keys, settings, and custom themes

.changeset/fix-keyring-race.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
"MiniFy": patch
3+
---
4+
5+
Fixed Spotify and AI DJ authentication race conditions
6+
7+
- Added in-memory cache for client ID, tokens, and AI keys
8+
- Wrapped all keyring operations in tokio::task::spawn_blocking
9+
- Credentials now available immediately after saving

.changeset/fix-rust-deps.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
"MiniFy": patch
3+
---
4+
5+
Fixed compatibility with updated Rust dependencies
6+
7+
- Updated rand crate usage: thread_rng() -> rng()
8+
- Updated keyring crate: delete_password() -> delete_credential()
9+
- Fixed discord-rich-presence API change for client creation

.changeset/last-played-track.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
"MiniFy": minor
3+
---
4+
5+
Added persistent last played track caching
6+
7+
- App remembers last played song and playback position
8+
- Works across app restarts and Spotify pauses
9+
- Auto-saves progress every 2 seconds while playing

.changeset/secure-data-keyring.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
"MiniFy": patch
3+
---
4+
5+
Fixed credential storage and persistence
6+
7+
- Downgraded keyring crate from v3 to v2 for better Windows compatibility
8+
- Secrets (tokens, API keys, client ID) stored securely in OS keyring
9+
- Settings stored in %APPDATA%/MiniFy/settings.json (no size limits)
10+
- Custom themes stored as individual JSON files in themes folder
11+
- Added in-memory caching for keyring operations

.changeset/youtube-music-fixes.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
"MiniFy": patch
3+
---
4+
5+
Fixed YouTube Music integration issues
6+
7+
- Fixed volume control for YouTube Music (was showing "not available" message)
8+
- Fixed authentication flow: clicking Connect in Settings now redirects to Boot auth screen
9+
- YouTube Music now supports search, playlists, and volume control through the in-app player
10+
- App now checks provider authentication on startup and redirects to setup if needed
11+
- Auto-activate: if only one provider is connected, it's automatically set as active
12+
- YouTube embed player now uses privacy-enhanced mode (youtube-nocookie.com)
13+
- YouTube player is now pre-mounted during Boot for faster startup
14+
- Updated clear-auth script to also clear YouTube credentials
15+
- Fixed settings sync: active_music_provider is now properly saved to settings file
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
"MiniFy": minor
3+
---
4+
5+
Full YouTube Music integration with modular provider architecture
6+
7+
- Added embedded Google OAuth credentials support for YouTube (YOUTUBE_CLIENT_ID, YOUTUBE_CLIENT_SECRET)
8+
- Extended MusicProvider interface with playlist methods and capabilities
9+
- Implemented YouTube playlist API (getUserPlaylists, getPlaylistTracks, addToPlaylist)
10+
- Aligned Spotify provider with updated MusicProvider interface
11+
- Refactored PlaylistView to use provider abstraction for both Spotify and YouTube
12+
- Enabled full AI DJ functionality for YouTube including chat and queue features
13+
- Created provider-agnostic musicTools.ts for AI DJ tool calls
14+
- Updated Settings UI: reordered providers (Spotify -> YouTube -> Apple Music)
15+
- All music provider connections now use unified Boot flow (no custom modals)
16+
- Added retry mechanism for YouTube player initialization (waits up to 5s)
17+
- Improved drag area z-index for consistent window dragging
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
"MiniFy": minor
3+
---
4+
5+
Added YouTube Music support with provider abstraction
6+
7+
- Implemented MusicProvider abstraction for scalable multi-provider support
8+
- Added YouTube Music authentication via Google OAuth 2.0
9+
- Created YouTube IFrame Player component for audio playback
10+
- Extended Settings UI with YouTube Music connection
11+
- Updated AI DJ to work with both Spotify and YouTube Music
12+
- Refactored useCurrentlyPlaying hook to use provider factory
13+
- Added provider-aware playback controls (play, pause, seek)
14+
- YouTube credentials stored securely in OS Keyring

.github/workflows/lint-desktop.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ jobs:
1313

1414
steps:
1515
- name: Checkout
16-
uses: actions/checkout@v4
16+
uses: actions/checkout@v6
1717

1818
- name: Setup Node.js
19-
uses: actions/setup-node@v4
19+
uses: actions/setup-node@v6
2020
with:
2121
node-version: '18'
2222

@@ -29,7 +29,7 @@ jobs:
2929
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
3030
3131
- name: Setup pnpm cache
32-
uses: actions/cache@v4
32+
uses: actions/cache@v5
3333
with:
3434
path: ${{ env.STORE_PATH }}
3535
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}

0 commit comments

Comments
 (0)