Merge branch 'main' into feature/shuffle
This commit is contained in:
@@ -33,7 +33,7 @@ jobs:
|
|||||||
run: export C_INCLUDE_PATH=/usr/local/include:/opt/homebrew/include:$C_INCLUDE_PATH && export LIBRARY_PATH=/usr/local/lib:/opt/homebrew/lib:$LIBRARY_PATH
|
run: export C_INCLUDE_PATH=/usr/local/include:/opt/homebrew/include:$C_INCLUDE_PATH && export LIBRARY_PATH=/usr/local/lib:/opt/homebrew/lib:$LIBRARY_PATH
|
||||||
|
|
||||||
- name: Install Fyne tool
|
- name: Install Fyne tool
|
||||||
run: go install fyne.io/fyne/v2/cmd/fyne@latest
|
run: go install fyne.io/tools/cmd/fyne@latest
|
||||||
|
|
||||||
- name: Package app bundles
|
- name: Package app bundles
|
||||||
run: >
|
run: >
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ jobs:
|
|||||||
run: export C_INCLUDE_PATH=/usr/local/include:/opt/homebrew/include:$C_INCLUDE_PATH && export LIBRARY_PATH=/usr/local/lib:/opt/homebrew/lib:$LIBRARY_PATH
|
run: export C_INCLUDE_PATH=/usr/local/include:/opt/homebrew/include:$C_INCLUDE_PATH && export LIBRARY_PATH=/usr/local/lib:/opt/homebrew/lib:$LIBRARY_PATH
|
||||||
|
|
||||||
- name: Install Fyne tool
|
- name: Install Fyne tool
|
||||||
run: go install fyne.io/fyne/v2/cmd/fyne@latest
|
run: go install fyne.io/tools/cmd/fyne@latest
|
||||||
|
|
||||||
- name: Build and package app bundles
|
- name: Build and package app bundles
|
||||||
run: >
|
run: >
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ jobs:
|
|||||||
run: sudo apt update && sudo apt install libmpv-dev gcc libegl1-mesa-dev xorg-dev
|
run: sudo apt update && sudo apt install libmpv-dev gcc libegl1-mesa-dev xorg-dev
|
||||||
|
|
||||||
- name: Install Fyne tool
|
- name: Install Fyne tool
|
||||||
run: go install fyne.io/fyne/v2/cmd/fyne@latest
|
run: go install fyne.io/tools/cmd/fyne@latest
|
||||||
|
|
||||||
- name: Fyne package
|
- name: Fyne package
|
||||||
run: make package_linux
|
run: make package_linux
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ jobs:
|
|||||||
run: sudo apt update && sudo apt install libmpv-dev gcc libegl1-mesa-dev xorg-dev
|
run: sudo apt update && sudo apt install libmpv-dev gcc libegl1-mesa-dev xorg-dev
|
||||||
|
|
||||||
- name: Install Fyne tool
|
- name: Install Fyne tool
|
||||||
run: go install fyne.io/fyne/v2/cmd/fyne@latest
|
run: go install fyne.io/tools/cmd/fyne@latest
|
||||||
|
|
||||||
- name: Fyne package
|
- name: Fyne package
|
||||||
run: make package_linux
|
run: make package_linux
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ jobs:
|
|||||||
pacman --noconfirm -S mingw-w64-x86_64-toolchain mingw-w64-x86_64-mpv
|
pacman --noconfirm -S mingw-w64-x86_64-toolchain mingw-w64-x86_64-mpv
|
||||||
|
|
||||||
- name: Install Fyne tool
|
- name: Install Fyne tool
|
||||||
run: go install fyne.io/fyne/v2/cmd/fyne@latest
|
run: go install fyne.io/tools/cmd/fyne@latest
|
||||||
|
|
||||||
- name: Package
|
- name: Package
|
||||||
run: make package_windows
|
run: make package_windows
|
||||||
|
|||||||
@@ -1,5 +1,26 @@
|
|||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
|
## [0.20.1]
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Improved translations for Chinese, Japanese, Italian
|
||||||
|
- [#814](https://github.com/dweymouth/supersonic/pull/814) Setting to disable fade out on pause
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- [#798](https://github.com/dweymouth/supersonic/issues/798) Ignore SSL validation setting migrated to per-server option
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- [#614](https://github.com/dweymouth/supersonic/issues/614) Some uPnP devices not recognized
|
||||||
|
- [#809](https://github.com/dweymouth/supersonic/issues/809) Jellyfin synced lyrics not shown as synced if first line starts at 00:00.00
|
||||||
|
- [#804](https://github.com/dweymouth/supersonic/issues/804) Regression in peak meter animation smoothness
|
||||||
|
- Some optimizations of tracklist rendering
|
||||||
|
- [#810](https://github.com/dweymouth/supersonic/issues/810) Autoplay tracks enqueuing too early
|
||||||
|
- [#834](https://github.com/dweymouth/supersonic/pull/834) Fix equalizer filter string for ffmpeg
|
||||||
|
- [#813](https://github.com/dweymouth/supersonic/issues/813) Unnecessarily large minimum window width for pages with tracklist
|
||||||
|
- [#485](https://github.com/dweymouth/supersonic/discussions/485) Use sort tags for sorting artist discography by album name (OpenSubsonic only)
|
||||||
|
- [#384](https://github.com/dweymouth/supersonic/issues/384) for Jellyfin - Add to Playlist dialog not showing playlists when logged in with username in different case
|
||||||
|
- Fix Now Playing background dissolve animation when next track has same cover art as previous
|
||||||
|
|
||||||
## [0.20.0]
|
## [0.20.0]
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
[Details]
|
[Details]
|
||||||
Icon = "res/appicon-512.png"
|
Icon = "res/appicon-512.png"
|
||||||
Name = "Supersonic"
|
Name = "Supersonic"
|
||||||
Version = "0.20.0"
|
Version = "0.20.1"
|
||||||
|
|
||||||
[LinuxAndBSD]
|
[LinuxAndBSD]
|
||||||
Categories = ["Audio", "AudioVideo"]
|
Categories = ["Audio", "AudioVideo"]
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
[](https://github.com/dweymouth/supersonic/releases)
|
[](https://github.com/dweymouth/supersonic/releases)
|
||||||
[](https://github.com/dweymouth/supersonic/releases/latest)
|
[](https://github.com/dweymouth/supersonic/releases/latest)
|
||||||
[](https://goreportcard.com/report/github.com/dweymouth/supersonic)
|
[](https://goreportcard.com/report/github.com/dweymouth/supersonic)
|
||||||
<a href="https://discord.gg/VqmW48aZMh"><img src="https://dcbadge.vercel.app/api/server/VqmW48aZMh" width="20%"/></a>
|
[](https://discord.gg/H6FC9bAMpF)
|
||||||
|
|
||||||
A lightweight cross-platform desktop client for Subsonic and Jellyfin music servers.
|
A lightweight cross-platform desktop client for Subsonic and Jellyfin music servers.
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ require (
|
|||||||
github.com/go-gl/gl v0.0.0-20231021071112-07e5d0ea2e71 // indirect
|
github.com/go-gl/gl v0.0.0-20231021071112-07e5d0ea2e71 // indirect
|
||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20250301202403-da16c1255728 // indirect
|
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20250301202403-da16c1255728 // indirect
|
||||||
github.com/go-text/render v0.2.0 // indirect
|
github.com/go-text/render v0.2.0 // indirect
|
||||||
github.com/go-text/typesetting v0.3.2 // indirect
|
github.com/go-text/typesetting v0.3.3-0.20260117213729-06c64e10eb0b // indirect
|
||||||
github.com/h2non/filetype v1.1.3 // indirect
|
github.com/h2non/filetype v1.1.3 // indirect
|
||||||
github.com/hack-pad/go-indexeddb v0.3.2 // indirect
|
github.com/hack-pad/go-indexeddb v0.3.2 // indirect
|
||||||
github.com/hack-pad/safejs v0.1.1 // indirect
|
github.com/hack-pad/safejs v0.1.1 // indirect
|
||||||
@@ -68,7 +68,7 @@ require (
|
|||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
)
|
)
|
||||||
|
|
||||||
replace fyne.io/fyne/v2 v2.7.2 => github.com/dweymouth/fyne/v2 v2.3.0-rc1.0.20260121163844-a0f2c1dd0601
|
replace fyne.io/fyne/v2 v2.7.2 => github.com/dweymouth/fyne/v2 v2.3.0-rc1.0.20260131034631-53eb7128ebc8
|
||||||
|
|
||||||
replace github.com/go-audio/wav v1.1.0 => github.com/dweymouth/go-wav v0.0.0-20250719173115-e60429a83eb0
|
replace github.com/go-audio/wav v1.1.0 => github.com/dweymouth/go-wav v0.0.0-20250719173115-e60429a83eb0
|
||||||
|
|
||||||
|
|||||||
@@ -26,8 +26,8 @@ github.com/dweymouth/fyne-advanced-list v0.0.0-20250211191927-58ea85eec72c h1:UX
|
|||||||
github.com/dweymouth/fyne-advanced-list v0.0.0-20250211191927-58ea85eec72c/go.mod h1:Idgzr4LYzve8IPHF1stLO1bdGQZnDKt/bT9WfJflCGw=
|
github.com/dweymouth/fyne-advanced-list v0.0.0-20250211191927-58ea85eec72c/go.mod h1:Idgzr4LYzve8IPHF1stLO1bdGQZnDKt/bT9WfJflCGw=
|
||||||
github.com/dweymouth/fyne-tooltip v0.4.0 h1:ZkMhy4f8lHklyjNnKJlSEJ2pLPnYWVD7tu2+YEgmp+w=
|
github.com/dweymouth/fyne-tooltip v0.4.0 h1:ZkMhy4f8lHklyjNnKJlSEJ2pLPnYWVD7tu2+YEgmp+w=
|
||||||
github.com/dweymouth/fyne-tooltip v0.4.0/go.mod h1:jXYbY561DTIXXqkauzltI3o/hsVaQd2KY8Ry2FXy7Xk=
|
github.com/dweymouth/fyne-tooltip v0.4.0/go.mod h1:jXYbY561DTIXXqkauzltI3o/hsVaQd2KY8Ry2FXy7Xk=
|
||||||
github.com/dweymouth/fyne/v2 v2.3.0-rc1.0.20260121163844-a0f2c1dd0601 h1:Z75H0KinbkuXn0y/+vFB4R6jvwgwHkgCivvPT5fIYcc=
|
github.com/dweymouth/fyne/v2 v2.3.0-rc1.0.20260131034631-53eb7128ebc8 h1:lwx4mANwRNH25jj2n/IAFUQ5XuYhBaj18OEPvDP19Ns=
|
||||||
github.com/dweymouth/fyne/v2 v2.3.0-rc1.0.20260121163844-a0f2c1dd0601/go.mod h1:M3Fkb8eUU6se8E+coikK8x7f3vCIakxAW7bPyw3d9fA=
|
github.com/dweymouth/fyne/v2 v2.3.0-rc1.0.20260131034631-53eb7128ebc8/go.mod h1:kjf8HBnGLLykRyRX1mAHLYAfuBaY0oSx6XKCr/dzkOg=
|
||||||
github.com/dweymouth/go-jellyfin v0.0.0-20250928223159-bd2fb9681ef5 h1:Or5VJodg7cGmdnBIcS+FrEH0twBi7mZsFCz6V0vCOQI=
|
github.com/dweymouth/go-jellyfin v0.0.0-20250928223159-bd2fb9681ef5 h1:Or5VJodg7cGmdnBIcS+FrEH0twBi7mZsFCz6V0vCOQI=
|
||||||
github.com/dweymouth/go-jellyfin v0.0.0-20250928223159-bd2fb9681ef5/go.mod h1:fcUagHBaQnt06GmBAllNE0J4O/7064zXRWdqnTTtVjI=
|
github.com/dweymouth/go-jellyfin v0.0.0-20250928223159-bd2fb9681ef5/go.mod h1:fcUagHBaQnt06GmBAllNE0J4O/7064zXRWdqnTTtVjI=
|
||||||
github.com/dweymouth/go-wav v0.0.0-20250719173115-e60429a83eb0 h1:mYcctuWgVArHhSLJxndlUM43C3hoE18BLDBkXKM2tl0=
|
github.com/dweymouth/go-wav v0.0.0-20250719173115-e60429a83eb0 h1:mYcctuWgVArHhSLJxndlUM43C3hoE18BLDBkXKM2tl0=
|
||||||
@@ -62,8 +62,8 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20250301202403-da16c1255728 h1:RkGhqHxEVA
|
|||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20250301202403-da16c1255728/go.mod h1:SyRD8YfuKk+ZXlDqYiqe1qMSqjNgtHzBTG810KUagMc=
|
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20250301202403-da16c1255728/go.mod h1:SyRD8YfuKk+ZXlDqYiqe1qMSqjNgtHzBTG810KUagMc=
|
||||||
github.com/go-text/render v0.2.0 h1:LBYoTmp5jYiJ4NPqDc2pz17MLmA3wHw1dZSVGcOdeAc=
|
github.com/go-text/render v0.2.0 h1:LBYoTmp5jYiJ4NPqDc2pz17MLmA3wHw1dZSVGcOdeAc=
|
||||||
github.com/go-text/render v0.2.0/go.mod h1:CkiqfukRGKJA5vZZISkjSYrcdtgKQWRa2HIzvwNN5SU=
|
github.com/go-text/render v0.2.0/go.mod h1:CkiqfukRGKJA5vZZISkjSYrcdtgKQWRa2HIzvwNN5SU=
|
||||||
github.com/go-text/typesetting v0.3.2 h1:OUOFxp9Rx5PiO0/rh2IY+5gmyXjXsVG8+LfEyk9NMcE=
|
github.com/go-text/typesetting v0.3.3-0.20260117213729-06c64e10eb0b h1:8jK9akFlw57u1DyVu6Vr+SUjvnYQkns9roj653VJ4iM=
|
||||||
github.com/go-text/typesetting v0.3.2/go.mod h1:vIRUT25mLQaSh4C8H/lIsKppQz/Gdb8Pu/tNwpi52ts=
|
github.com/go-text/typesetting v0.3.3-0.20260117213729-06c64e10eb0b/go.mod h1:vIRUT25mLQaSh4C8H/lIsKppQz/Gdb8Pu/tNwpi52ts=
|
||||||
github.com/go-text/typesetting-utils v0.0.0-20250618110550-c820a94c77b8 h1:4KCscI9qYWMGTuz6BpJtbUSRzcBrUSSE0ENMJbNSrFs=
|
github.com/go-text/typesetting-utils v0.0.0-20250618110550-c820a94c77b8 h1:4KCscI9qYWMGTuz6BpJtbUSRzcBrUSSE0ENMJbNSrFs=
|
||||||
github.com/go-text/typesetting-utils v0.0.0-20250618110550-c820a94c77b8/go.mod h1:3/62I4La/HBRX9TcTpBj4eipLiwzf+vhI+7whTc9V7o=
|
github.com/go-text/typesetting-utils v0.0.0-20250618110550-c820a94c77b8/go.mod h1:3/62I4La/HBRX9TcTpBj4eipLiwzf+vhI+7whTc9V7o=
|
||||||
github.com/godbus/dbus/v5 v5.2.2 h1:TUR3TgtSVDmjiXOgAAyaZbYmIeP3DPkld3jgKGV8mXQ=
|
github.com/godbus/dbus/v5 v5.2.2 h1:TUR3TgtSVDmjiXOgAAyaZbYmIeP3DPkld3jgKGV8mXQ=
|
||||||
|
|||||||
@@ -63,36 +63,35 @@
|
|||||||
</screenshots>
|
</screenshots>
|
||||||
|
|
||||||
<releases>
|
<releases>
|
||||||
<release date="2026-01-10" version="0.20.0">
|
<release date="2026-01-31" version="0.20.1">
|
||||||
<description>
|
<description>
|
||||||
<p>
|
<p>
|
||||||
Version 0.20.0 of Supersonic
|
Version 0.20.1 of Supersonic
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Added
|
Added
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Quickly fade out audio when pausing</li>
|
<li>Improved translations for Chinese, Japanese, Italian</li>
|
||||||
<li>Add collapsed/compact view for page headers</li>
|
<li>Setting to disable fade out on pause</li>
|
||||||
<li>Add option to prevent screensaver or screen sleep on Now Playing page</li>
|
<li>Ignore SSL validation setting migrated to per-server option</li>
|
||||||
<li>Add lyrics tab to sidebar</li>
|
|
||||||
<li>Add additional tracklist columns for Genre, Album Artist, File Type, Date Added</li>
|
|
||||||
<li>Show year on Now Playing page</li>
|
|
||||||
<li>Option to round image corners throughout app</li>
|
|
||||||
<li>Option to used blurred album cover for background of Now Playing page</li>
|
|
||||||
<li>Left click on system tray icon raises app window</li>
|
|
||||||
<li>Button in Advanced tab of settings window to clear caches</li>
|
|
||||||
<li>Seeking Next while playing the last track in queue now cycles around back to the beginning</li>
|
|
||||||
<li>Behavior and naming of "Stop after current track" changed to "Pause after current track"</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Fixed
|
Fixed
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>LrcLib fetcher no longer crashes on tracks with no artist name</li>
|
<li>Some uPnP devices not recognized</li>
|
||||||
<li>Windows now playing notifications are now silent, and include album cover</li>
|
<li>Jellyfin synced lyrics not shown as synced if first line starts at 00:00.00</li>
|
||||||
|
<li>Regression in peak meter animation smoothness</li>
|
||||||
|
<li>Some optimizations of tracklist rendering</li>
|
||||||
|
<li>Autoplay tracks enqueuing too early</li>
|
||||||
|
<li>Fix equalizer filter string for ffmpeg</li>
|
||||||
|
<li>Unnecessarily large minimum window width for pages with tracklist</li>
|
||||||
|
<li>Use sort tags for sorting artist discography by album name (OpenSubsonic only)</li>
|
||||||
|
<li>For Jellyfin - Add to Playlist dialog not showing playlists when logged in with username in different case</li>
|
||||||
|
<li>Fix Now Playing background dissolve animation when next track has same cover art as previous</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</description>
|
</description>
|
||||||
|
|||||||
+14
-15
@@ -3,7 +3,7 @@ package res
|
|||||||
const (
|
const (
|
||||||
AppName = "supersonic"
|
AppName = "supersonic"
|
||||||
DisplayName = "Supersonic"
|
DisplayName = "Supersonic"
|
||||||
AppVersion = "0.20.0"
|
AppVersion = "0.20.1"
|
||||||
AppVersionTag = "v" + AppVersion
|
AppVersionTag = "v" + AppVersion
|
||||||
ConfigFile = "config.toml"
|
ConfigFile = "config.toml"
|
||||||
GithubURL = "https://github.com/dweymouth/supersonic"
|
GithubURL = "https://github.com/dweymouth/supersonic"
|
||||||
@@ -15,21 +15,20 @@ const (
|
|||||||
var (
|
var (
|
||||||
WhatsAdded = `
|
WhatsAdded = `
|
||||||
## Added
|
## Added
|
||||||
* Quickly fade out audio when pausing
|
* Improved translations for Chinese, Japanese, Italian
|
||||||
* Add collapsed/compact view for page headers
|
* Setting to disable fade out on pause
|
||||||
* Add option to prevent screensaver or screen sleep on Now Playing page
|
* Ignore SSL validation setting migrated to per-server option`
|
||||||
* Add lyrics tab to sidebar
|
|
||||||
* Add additional tracklist columns for Genre, Album Artist, File Type, Date Added
|
|
||||||
* Show year on Now Playing page
|
|
||||||
* Option to round image corners throughout app
|
|
||||||
* Option to used blurred album cover for background of Now Playing page
|
|
||||||
* Left click on system tray icon raises app window
|
|
||||||
* Button in Advanced tab of settings window to clear caches
|
|
||||||
* Seeking Next while playing the last track in queue now cycles around back to the beginning
|
|
||||||
* Behavior and naming of "Stop after current track" changed to "Pause after current track"`
|
|
||||||
|
|
||||||
WhatsFixed = `
|
WhatsFixed = `
|
||||||
## Fixed
|
## Fixed
|
||||||
* LrcLib fetcher no longer crashes on tracks with no artist name
|
* Some uPnP devices not recognized
|
||||||
* Windows now playing notifications are now silent, and include album cover`
|
* Jellyfin synced lyrics not shown as synced if first line starts at 00:00.00
|
||||||
|
* Regression in peak meter animation smoothness
|
||||||
|
* Some optimizations of tracklist rendering
|
||||||
|
* Autoplay tracks enqueuing too early
|
||||||
|
* Fix equalizer filter string for ffmpeg
|
||||||
|
* Unnecessarily large minimum window width for pages with tracklist
|
||||||
|
* Use sort tags for sorting artist discography by album name (OpenSubsonic only)
|
||||||
|
* For Jellyfin - Add to Playlist dialog not showing playlists when logged in with username in different case
|
||||||
|
* Fix Now Playing background dissolve animation when next track has same cover art as previous`
|
||||||
)
|
)
|
||||||
|
|||||||
+12
-12
@@ -4,7 +4,7 @@
|
|||||||
"Add Server": "添加服务器",
|
"Add Server": "添加服务器",
|
||||||
"Add to playlist": "添加到播放列表",
|
"Add to playlist": "添加到播放列表",
|
||||||
"Add to queue": "添加到队列",
|
"Add to queue": "添加到队列",
|
||||||
"Advanced": "Advanced",
|
"Advanced": "高级",
|
||||||
"Album": "专辑",
|
"Album": "专辑",
|
||||||
"Album Count": "专辑数量",
|
"Album Count": "专辑数量",
|
||||||
"Album artist": "专辑艺术家",
|
"Album artist": "专辑艺术家",
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
"Compilation": "合集",
|
"Compilation": "合集",
|
||||||
"Compilations": "合集",
|
"Compilations": "合集",
|
||||||
"Composer": "作曲家",
|
"Composer": "作曲家",
|
||||||
"Composers": "Composers",
|
"Composers": "作曲家",
|
||||||
"Configure your music server to add radio stations": "配置您的音乐服务器以添加电台",
|
"Configure your music server to add radio stations": "配置您的音乐服务器以添加电台",
|
||||||
"Confirm Delete Playlist": "确认删除播放列表",
|
"Confirm Delete Playlist": "确认删除播放列表",
|
||||||
"Confirm Delete Server": "确认删除服务器",
|
"Confirm Delete Server": "确认删除服务器",
|
||||||
@@ -92,9 +92,9 @@
|
|||||||
"Equalizer": "均衡器",
|
"Equalizer": "均衡器",
|
||||||
"Error": "错误",
|
"Error": "错误",
|
||||||
"Error creating playlist": "创建播放列表时出错",
|
"Error creating playlist": "创建播放列表时出错",
|
||||||
"Error updating playlist": "Error updating playlist",
|
"Error updating playlist": "更新播放列表时出错",
|
||||||
"Exclusive mode": "独占模式",
|
"Exclusive mode": "独占模式",
|
||||||
"Fade out on pause": "Fade out on pause",
|
"Fade out on pause": "暂停时淡出",
|
||||||
"Fav.": "收藏",
|
"Fav.": "收藏",
|
||||||
"Favorites": "收藏",
|
"Favorites": "收藏",
|
||||||
"Feb": "二月",
|
"Feb": "二月",
|
||||||
@@ -133,7 +133,7 @@
|
|||||||
"Lyrics": "歌词",
|
"Lyrics": "歌词",
|
||||||
"Lyrics not available": "歌词不可用",
|
"Lyrics not available": "歌词不可用",
|
||||||
"Mar": "三月",
|
"Mar": "三月",
|
||||||
"Maximum image cache size": "Maximum image cache size",
|
"Maximum image cache size": "最大图像缓存大小",
|
||||||
"May": "五月",
|
"May": "五月",
|
||||||
"Menu": "菜单",
|
"Menu": "菜单",
|
||||||
"Mixtape": "混音带",
|
"Mixtape": "混音带",
|
||||||
@@ -177,9 +177,9 @@
|
|||||||
"Prevent clipping": "防止削波",
|
"Prevent clipping": "防止削波",
|
||||||
"Prevent screensaver on Now Playing page": "禁止在“正在播放”页面显示屏幕保护程序",
|
"Prevent screensaver on Now Playing page": "禁止在“正在播放”页面显示屏幕保护程序",
|
||||||
"Previous": "上一个",
|
"Previous": "上一个",
|
||||||
"Private playlist by": "私人 播放列表作者",
|
"Private playlist by": "私人播放列表",
|
||||||
"Public": "Public",
|
"Public": "公开",
|
||||||
"Public playlist by": "公开 播放列表作者",
|
"Public playlist by": "公开播放列表",
|
||||||
"Quit": "退出",
|
"Quit": "退出",
|
||||||
"Random": "随机",
|
"Random": "随机",
|
||||||
"Rating": "评分",
|
"Rating": "评分",
|
||||||
@@ -259,15 +259,15 @@
|
|||||||
"Track gain": "曲目增益",
|
"Track gain": "曲目增益",
|
||||||
"Track number": "曲目编号",
|
"Track number": "曲目编号",
|
||||||
"Track peak": "曲目峰值",
|
"Track peak": "曲目峰值",
|
||||||
"Tracks": "Tracks",
|
"Tracks": "曲目",
|
||||||
"Transcode to": "转码为",
|
"Transcode to": "转码为",
|
||||||
"UI Scaling": "UI 缩放",
|
"UI Scaling": "界面缩放",
|
||||||
"URL": "URL",
|
"URL": "URL",
|
||||||
"Unable to play albums": "无法播放专辑",
|
"Unable to play albums": "无法播放专辑",
|
||||||
"Unable to play artist radio": "无法播放艺术家电台",
|
"Unable to play artist radio": "无法播放艺术家电台",
|
||||||
"Unable to play random albums": "Unable to play random albums",
|
"Unable to play random albums": "无法播放随机专辑",
|
||||||
"Unable to play random tracks": "无法播放随机曲目",
|
"Unable to play random tracks": "无法播放随机曲目",
|
||||||
"Unable to play song radio": "Unable to play song radio",
|
"Unable to play song radio": "无法播放电台歌曲",
|
||||||
"Unset favorite": "取消收藏",
|
"Unset favorite": "取消收藏",
|
||||||
"Use blurred album cover for Now Playing page background": "使用模糊的专辑封面作为“正在播放”页面背景",
|
"Use blurred album cover for Now Playing page background": "使用模糊的专辑封面作为“正在播放”页面背景",
|
||||||
"Use legacy authentication": "使用旧版认证",
|
"Use legacy authentication": "使用旧版认证",
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"Add Server": "添加服务器",
|
"Add Server": "添加服务器",
|
||||||
"Add to playlist": "添加到播放列表",
|
"Add to playlist": "添加到播放列表",
|
||||||
"Add to queue": "添加到队列",
|
"Add to queue": "添加到队列",
|
||||||
"Advanced": "Advanced",
|
"Advanced": "高级",
|
||||||
"Album": "专辑",
|
"Album": "专辑",
|
||||||
"Album Count": "专辑数量",
|
"Album Count": "专辑数量",
|
||||||
"Album artist": "专辑艺术家",
|
"Album artist": "专辑艺术家",
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
"Compilation": "合集",
|
"Compilation": "合集",
|
||||||
"Compilations": "合集",
|
"Compilations": "合集",
|
||||||
"Composer": "作曲家",
|
"Composer": "作曲家",
|
||||||
"Composers": "Composers",
|
"Composers": "作曲家",
|
||||||
"Configure your music server to add radio stations": "配置您的音乐服务器以添加电台",
|
"Configure your music server to add radio stations": "配置您的音乐服务器以添加电台",
|
||||||
"Confirm Delete Playlist": "确认删除播放列表",
|
"Confirm Delete Playlist": "确认删除播放列表",
|
||||||
"Confirm Delete Server": "确认删除服务器",
|
"Confirm Delete Server": "确认删除服务器",
|
||||||
@@ -92,9 +92,9 @@
|
|||||||
"Equalizer": "均衡器",
|
"Equalizer": "均衡器",
|
||||||
"Error": "错误",
|
"Error": "错误",
|
||||||
"Error creating playlist": "创建播放列表时出错",
|
"Error creating playlist": "创建播放列表时出错",
|
||||||
"Error updating playlist": "Error updating playlist",
|
"Error updating playlist": "更新播放列表时出错",
|
||||||
"Exclusive mode": "独占模式",
|
"Exclusive mode": "独占模式",
|
||||||
"Fade out on pause": "Fade out on pause",
|
"Fade out on pause": "暂停时淡出",
|
||||||
"Fav.": "收藏",
|
"Fav.": "收藏",
|
||||||
"Favorites": "收藏",
|
"Favorites": "收藏",
|
||||||
"Feb": "二月",
|
"Feb": "二月",
|
||||||
@@ -133,7 +133,7 @@
|
|||||||
"Lyrics": "歌词",
|
"Lyrics": "歌词",
|
||||||
"Lyrics not available": "歌词不可用",
|
"Lyrics not available": "歌词不可用",
|
||||||
"Mar": "三月",
|
"Mar": "三月",
|
||||||
"Maximum image cache size": "Maximum image cache size",
|
"Maximum image cache size": "最大图像缓存大小",
|
||||||
"May": "五月",
|
"May": "五月",
|
||||||
"Menu": "菜单",
|
"Menu": "菜单",
|
||||||
"Mixtape": "混音带",
|
"Mixtape": "混音带",
|
||||||
@@ -177,9 +177,9 @@
|
|||||||
"Prevent clipping": "防止削波",
|
"Prevent clipping": "防止削波",
|
||||||
"Prevent screensaver on Now Playing page": "禁止在“正在播放”页面显示屏幕保护程序",
|
"Prevent screensaver on Now Playing page": "禁止在“正在播放”页面显示屏幕保护程序",
|
||||||
"Previous": "上一个",
|
"Previous": "上一个",
|
||||||
"Private playlist by": "私人 播放列表作者",
|
"Private playlist by": "私人播放列表",
|
||||||
"Public": "Public",
|
"Public": "公开",
|
||||||
"Public playlist by": "公开 播放列表作者",
|
"Public playlist by": "公开播放列表",
|
||||||
"Quit": "退出",
|
"Quit": "退出",
|
||||||
"Random": "随机",
|
"Random": "随机",
|
||||||
"Rating": "评分",
|
"Rating": "评分",
|
||||||
@@ -259,15 +259,15 @@
|
|||||||
"Track gain": "曲目增益",
|
"Track gain": "曲目增益",
|
||||||
"Track number": "曲目编号",
|
"Track number": "曲目编号",
|
||||||
"Track peak": "曲目峰值",
|
"Track peak": "曲目峰值",
|
||||||
"Tracks": "Tracks",
|
"Tracks": "曲目",
|
||||||
"Transcode to": "转码为",
|
"Transcode to": "转码为",
|
||||||
"UI Scaling": "UI 缩放",
|
"UI Scaling": "界面缩放",
|
||||||
"URL": "URL",
|
"URL": "URL",
|
||||||
"Unable to play albums": "无法播放专辑",
|
"Unable to play albums": "无法播放专辑",
|
||||||
"Unable to play artist radio": "无法播放艺术家电台",
|
"Unable to play artist radio": "无法播放艺术家电台",
|
||||||
"Unable to play random albums": "Unable to play random albums",
|
"Unable to play random albums": "无法播放随机专辑",
|
||||||
"Unable to play random tracks": "无法播放随机曲目",
|
"Unable to play random tracks": "无法播放随机曲目",
|
||||||
"Unable to play song radio": "Unable to play song radio",
|
"Unable to play song radio": "无法播放电台歌曲",
|
||||||
"Unset favorite": "取消收藏",
|
"Unset favorite": "取消收藏",
|
||||||
"Use blurred album cover for Now Playing page background": "使用模糊的专辑封面作为“正在播放”页面背景",
|
"Use blurred album cover for Now Playing page background": "使用模糊的专辑封面作为“正在播放”页面背景",
|
||||||
"Use legacy authentication": "使用旧版认证",
|
"Use legacy authentication": "使用旧版认证",
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ type NowPlayingPage struct {
|
|||||||
curLyrics *mediaprovider.Lyrics
|
curLyrics *mediaprovider.Lyrics
|
||||||
curLyricsID string // id of track currently shown in lyrics
|
curLyricsID string // id of track currently shown in lyrics
|
||||||
curRelatedID string // id of track currrently used to populate related list
|
curRelatedID string // id of track currrently used to populate related list
|
||||||
|
curCoverArt string // id of cover art currently shown in background / card
|
||||||
totalTime float64
|
totalTime float64
|
||||||
lastPlayPos float64
|
lastPlayPos float64
|
||||||
queue []mediaprovider.MediaItem
|
queue []mediaprovider.MediaItem
|
||||||
@@ -307,8 +308,12 @@ func (a *NowPlayingPage) OnSongChange(song mediaprovider.MediaItem, lastScrobble
|
|||||||
a.card.Update(song)
|
a.card.Update(song)
|
||||||
if song == nil {
|
if song == nil {
|
||||||
a.card.SetCoverImage(nil)
|
a.card.SetCoverImage(nil)
|
||||||
} else {
|
a.curCoverArt = ""
|
||||||
a.imageLoadCancel = a.im.GetFullSizeCoverArtAsync(song.Metadata().CoverArtID, a.onImageLoaded)
|
} else if artID := song.Metadata().CoverArtID; artID != a.curCoverArt {
|
||||||
|
a.imageLoadCancel = a.im.GetFullSizeCoverArtAsync(song.Metadata().CoverArtID, func(img image.Image, err error) {
|
||||||
|
a.curCoverArt = artID
|
||||||
|
a.onImageLoaded(img, err)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if a.tabs != nil && a.tabs.SelectedIndex() == 1 /*lyrics*/ {
|
if a.tabs != nil && a.tabs.SelectedIndex() == 1 /*lyrics*/ {
|
||||||
|
|||||||
@@ -239,6 +239,7 @@ type tracklistRowBase struct {
|
|||||||
|
|
||||||
// must be injected by extending widget
|
// must be injected by extending widget
|
||||||
setColVisibility func(int, bool) bool
|
setColVisibility func(int, bool) bool
|
||||||
|
layout func(fyne.Size)
|
||||||
}
|
}
|
||||||
|
|
||||||
type TracklistRow interface {
|
type TracklistRow interface {
|
||||||
@@ -297,6 +298,9 @@ func NewExpandedTracklistRow(tracklist *Tracklist, im *backend.ImageManager, pla
|
|||||||
c.Hidden = vis
|
c.Hidden = vis
|
||||||
return c.Hidden != wasHidden
|
return c.Hidden != wasHidden
|
||||||
}
|
}
|
||||||
|
t.layout = func(s fyne.Size) {
|
||||||
|
container.Layout.Layout(container.Objects, s)
|
||||||
|
}
|
||||||
return t
|
return t
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -316,8 +320,9 @@ func NewCompactTracklistRow(tracklist *Tracklist, playingIcon fyne.CanvasObject)
|
|||||||
t.tracklistRowBase.create(tracklist)
|
t.tracklistRowBase.create(tracklist)
|
||||||
t.playingIcon = playingIcon
|
t.playingIcon = playingIcon
|
||||||
|
|
||||||
t.Content = container.New(tracklist.colLayout,
|
container := container.New(tracklist.colLayout,
|
||||||
t.num, t.name, t.artist, t.album, t.albumArtist, t.composer, t.genre, t.dur, t.year, t.favorite, t.rating, t.plays, t.lastPlayed, t.comment, t.bpm, t.bitrate, t.size, t.fileType, t.dateAdded, t.path)
|
t.num, t.name, t.artist, t.album, t.albumArtist, t.composer, t.genre, t.dur, t.year, t.favorite, t.rating, t.plays, t.lastPlayed, t.comment, t.bpm, t.bitrate, t.size, t.fileType, t.dateAdded, t.path)
|
||||||
|
t.Content = container
|
||||||
|
|
||||||
colHiddenPtrMap := map[int]*bool{
|
colHiddenPtrMap := map[int]*bool{
|
||||||
2: &t.artist.Hidden,
|
2: &t.artist.Hidden,
|
||||||
@@ -348,6 +353,9 @@ func NewCompactTracklistRow(tracklist *Tracklist, playingIcon fyne.CanvasObject)
|
|||||||
*ptr = vis
|
*ptr = vis
|
||||||
return vis != wasHidden
|
return vis != wasHidden
|
||||||
}
|
}
|
||||||
|
t.layout = func(s fyne.Size) {
|
||||||
|
container.Layout.Layout(container.Objects, s)
|
||||||
|
}
|
||||||
return t
|
return t
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -409,11 +417,20 @@ func (t *tracklistRowBase) TrackID() string {
|
|||||||
return t.trackID
|
return t.trackID
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t *tracklistRowBase) MinSize() fyne.Size {
|
||||||
|
// because tracklist rows have variable column visibility,
|
||||||
|
// we return a zero width here so that the tracklist
|
||||||
|
// can size based on the header instead.
|
||||||
|
s := t.BaseWidget.MinSize()
|
||||||
|
return fyne.NewSize(0, s.Height)
|
||||||
|
}
|
||||||
|
|
||||||
func (t *tracklistRowBase) Update(tm *util.TrackListModel, rowNum int, onUpdate func()) {
|
func (t *tracklistRowBase) Update(tm *util.TrackListModel, rowNum int, onUpdate func()) {
|
||||||
// Show only columns configured to be visible
|
// Show only columns configured to be visible
|
||||||
for i := 2; i < len(t.tracklist.columns); i++ {
|
for i := 2; i < len(t.tracklist.columns); i++ {
|
||||||
t.setColVisibility(i, !t.tracklist.visibleColumns[i])
|
t.setColVisibility(i, !t.tracklist.visibleColumns[i])
|
||||||
}
|
}
|
||||||
|
t.layout(t.Size())
|
||||||
|
|
||||||
// Ealy return if nothing else needs updating
|
// Ealy return if nothing else needs updating
|
||||||
if !t.needsUpdate(tm, rowNum) {
|
if !t.needsUpdate(tm, rowNum) {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
|
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
|
||||||
|
|
||||||
#define MyAppName "Supersonic"
|
#define MyAppName "Supersonic"
|
||||||
#define MyAppVersion "0.20.0"
|
#define MyAppVersion "0.20.1"
|
||||||
#define MyAppPublisher "Drew Weymouth"
|
#define MyAppPublisher "Drew Weymouth"
|
||||||
#define MyAppURL "https://github.com/dweymouth/supersonic"
|
#define MyAppURL "https://github.com/dweymouth/supersonic"
|
||||||
#define MyAppExeName "Supersonic.exe"
|
#define MyAppExeName "Supersonic.exe"
|
||||||
|
|||||||
Reference in New Issue
Block a user