* fix(album-actions): update playlist and button selectors
* refactor(album-actions): directly access the last element of NodeList
Co-authored-by: Angelos Bouklis <me@arjix.dev>
* refactor(album-actions): directly access the last element of NodeList
Co-authored-by: Angelos Bouklis <me@arjix.dev>
---------
Co-authored-by: Angelos Bouklis <me@arjix.dev>
- Extracted activityInfo object construction into the buildActivityInfo helper to remove code duplication in presence updates.
- Removed unnecessary nullish coalescing (?? 0)
Re-added the original workaround that pads title, artist, and album fields with the Hangul Filler character (\u3164) if their length is less than 2. This prevents Discord Rich Presence from displaying empty or missing fields when song info is very short.
- Enhanced the throttling mechanism to ensure that activity updates are only sent if the song state has not changed.
- Added checks for video ID and pause state to prevent unnecessary updates.
- Improved handling of elapsed time during updates.
- Implemented throttling for Discord activity updates to respect rate limits.
- Added state management for song changes, pause state, and elapsed time.
- Introduced buttons for YouTube Music and GitHub links in activity updates.
- Improved handling of paused state and activity timeout configuration.
* Add tags array for song info
* Implement original title and original artist search for LRCBLib
* comment cleanup
* Check if microformat.tags is an array
Related to #3167
Update `setVideoState` function and `switchButtonDiv` event listener to handle transition back to audio mode.
* **Update `setVideoState` function**
- Correctly handle the transition back to audio mode.
- Update the `hideVideo` property in the plugin configuration.
- Use `this.config` instead of `config` to set options and update checkbox state.
---
For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/th-ch/youtube-music/issues/3167?shareId=XXXX-XXXX-XXXX-XXXX).
* fix(downloader): allow downloads for signed out users
* refactor(downloader): use yt.config_.LOGGED_IN for checking sign in status
* Apply suggestions from code review
---------
Co-authored-by: JellyBrick <shlee1503@naver.com>
* feat(synced-lyrics): init romanization!
* remove debug logs and add TODO
* feat(synced-lyrics/romanization): Mandarin!
* feat(synced-lyrics/romanization): improve japanese detection
* feat(synced-lyrics/romanization): Korean!
* qol(synced-lyrics/romanization): canonicalize punctuation and symbols
* feat(synced-lyrics/romanization): handle japanese+korean and korean+chinese lyrics
* revert formatting on electron.vite.config.mts
* feat(synced-lyrics/romanization): romanize plain lyrics
* apply fix by @kimjammer
* fix lockfile due to rebase
* feat(synced-lyrics): improve lyric processing and formatting;
* feat(synced-lyrics/romanization): add option to enable/disable romanization
* chore: move default value for --lyrics-duration to the declaration
* update lockfile
* fix: improvement
1. improved language detection logic
2. changed code to work in the renderer process
* fix: fix regression (canonicalize)
---------
Co-authored-by: JellyBrick <shlee1503@naver.com>
* feat(plugin): add unobtrusive player plugin
* fix(plugin): add removeEventListener once unobtrusive-player is disabled
* feat(plugin): prevent player page button animation when changing song
* fix(plugin): add removeEventListener for videodatachange once unobtrusive-player is disabled