Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package netease-cloud-music-gtk for
openSUSE:Factory checked in at 2026-04-28 11:57:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/netease-cloud-music-gtk (Old)
and /work/SRC/openSUSE:Factory/.netease-cloud-music-gtk.new.11940 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "netease-cloud-music-gtk"
Tue Apr 28 11:57:13 2026 rev:21 rq:1349484 version:2.5.3
Changes:
--------
---
/work/SRC/openSUSE:Factory/netease-cloud-music-gtk/netease-cloud-music-gtk.changes
2025-05-06 16:43:13.656737323 +0200
+++
/work/SRC/openSUSE:Factory/.netease-cloud-music-gtk.new.11940/netease-cloud-music-gtk.changes
2026-04-28 12:01:00.889092367 +0200
@@ -1,0 +2,11 @@
+Mon Apr 27 02:28:32 UTC 2026 - gmg 137 <[email protected]>
+
+- Release version 2.5.3
+ + Fix page creation error
+ + Modify the style of the playback bar
+ + Update regarding window style
+ + Unhide Daily Recommendations
+ + Change the position of translated lyrics
+ + Update dependent versions
+
+-------------------------------------------------------------------
Old:
----
netease-cloud-music-gtk-2.5.2.tar.gz
New:
----
netease-cloud-music-gtk-2.5.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ netease-cloud-music-gtk.spec ++++++
--- /var/tmp/diff_new_pack.QSZJzu/_old 2026-04-28 12:01:02.361153327 +0200
+++ /var/tmp/diff_new_pack.QSZJzu/_new 2026-04-28 12:01:02.365153492 +0200
@@ -1,7 +1,7 @@
#
# spec file for package netease-cloud-music-gtk
#
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
# Copyright (c) specCURRENT_YEAR SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
@@ -20,7 +20,7 @@
%global rustflags '-Clink-arg=-Wl,-z,relro,-z,now'
%define _lto_cflags %{nil}
Name: netease-cloud-music-gtk
-Version: 2.5.2
+Version: 2.5.3
Release: 0
Summary: Linux 平台下基于 Rust + GTK4 开发的网易云音乐播放器
License: GPL-3.0-or-later
++++++ fix-dependencies.patch ++++++
--- /var/tmp/diff_new_pack.QSZJzu/_old 2026-04-28 12:01:02.441156639 +0200
+++ /var/tmp/diff_new_pack.QSZJzu/_new 2026-04-28 12:01:02.445156805 +0200
@@ -1,14 +1,14 @@
diff --git a/Cargo.toml b/Cargo.toml
-index 0d0302e..a76f395 100644
+index 78195fc..2b96dc7 100644
--- a/Cargo.toml
+++ b/Cargo.toml
-@@ -9,7 +9,7 @@ gtk = { version = "~0.9", package = "gtk4" }
- once_cell = "~1.19"
+@@ -9,7 +9,7 @@ gtk = { version = "~0.11", package = "gtk4" }
+ once_cell = "~1.21"
qrcode-generator = "~5.0"
# ncm-api = { git = "https://github.com/gmg137/netease-cloud-music-api.git",
branch = "dev", package = "netease-cloud-music-api" }
--ncm-api = { git = "https://gitee.com/gmg137/netease-cloud-music-api.git", tag
= "1.5.1", package = "netease-cloud-music-api" }
-+ncm-api = { version = "1.5.1", package = "netease-cloud-music-api" }
+-ncm-api = { git = "https://gitee.com/gmg137/netease-cloud-music-api.git", tag
= "1.5.2", package = "netease-cloud-music-api" }
++ncm-api = { version = "1.5.2", package = "netease-cloud-music-api" }
anyhow = "~1.0"
- gstreamer = "~0.23"
- gstreamer-play = "~0.23"
+ gstreamer = "~0.25"
+ gstreamer-play = "~0.25"
++++++ netease-cloud-music-gtk-2.5.2.tar.gz ->
netease-cloud-music-gtk-2.5.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
"old/netease-cloud-music-gtk-2.5.2/.github/ISSUE_TEMPLATE/bug-\346\217\220\344\272\244.md"
"new/netease-cloud-music-gtk-2.5.3/.github/ISSUE_TEMPLATE/bug-\346\217\220\344\272\244.md"
---
"old/netease-cloud-music-gtk-2.5.2/.github/ISSUE_TEMPLATE/bug-\346\217\220\344\272\244.md"
1970-01-01 01:00:00.000000000 +0100
+++
"new/netease-cloud-music-gtk-2.5.3/.github/ISSUE_TEMPLATE/bug-\346\217\220\344\272\244.md"
2026-04-27 04:12:45.000000000 +0200
@@ -0,0 +1,32 @@
+---
+name: Bug 提交
+about: 简要描述你的问题
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**描述错误**
+清晰简洁的描述你遇到的错误.
+
+**重现**
+重现错误的步骤:
+1. 第一步 '...'
+2. 第二步 '....'
+3. '....'
+4. 出现错误
+
+**预期行为**
+清晰简洁的描述你期望发生的行为.
+
+**屏幕截图**
+如果适用,请添加相关截图.
+
+**运行环境:**
+ - 操作系统/版本: [如:openSUSE 16, ubuntu25.04, archlinux]
+ - 桌面环境/版本: [如:GNOME 47,KDE 5.1]
+ - 应用版本 [如: 2.5.1]
+
+**其他信息**
+其他可能有用的信息.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/netease-cloud-music-gtk-2.5.2/.github/ISSUE_TEMPLATE/bug_report.md
new/netease-cloud-music-gtk-2.5.3/.github/ISSUE_TEMPLATE/bug_report.md
--- old/netease-cloud-music-gtk-2.5.2/.github/ISSUE_TEMPLATE/bug_report.md
2025-05-06 10:04:10.000000000 +0200
+++ new/netease-cloud-music-gtk-2.5.3/.github/ISSUE_TEMPLATE/bug_report.md
1970-01-01 01:00:00.000000000 +0100
@@ -1,38 +0,0 @@
----
-name: Bug report
-about: Create a report to help us improve
-title: ''
-labels: ''
-assignees: ''
-
----
-
-**Describe the bug**
-A clear and concise description of what the bug is.
-
-**To Reproduce**
-Steps to reproduce the behavior:
-1. Go to '...'
-2. Click on '....'
-3. Scroll down to '....'
-4. See error
-
-**Expected behavior**
-A clear and concise description of what you expected to happen.
-
-**Screenshots**
-If applicable, add screenshots to help explain your problem.
-
-**Desktop (please complete the following information):**
- - OS: [e.g. iOS]
- - Browser [e.g. chrome, safari]
- - Version [e.g. 22]
-
-**Smartphone (please complete the following information):**
- - Device: [e.g. iPhone6]
- - OS: [e.g. iOS8.1]
- - Browser [e.g. stock browser, safari]
- - Version [e.g. 22]
-
-**Additional context**
-Add any other context about the problem here.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/netease-cloud-music-gtk-2.5.2/.github/ISSUE_TEMPLATE/feature_request.md
new/netease-cloud-music-gtk-2.5.3/.github/ISSUE_TEMPLATE/feature_request.md
--- old/netease-cloud-music-gtk-2.5.2/.github/ISSUE_TEMPLATE/feature_request.md
2025-05-06 10:04:10.000000000 +0200
+++ new/netease-cloud-music-gtk-2.5.3/.github/ISSUE_TEMPLATE/feature_request.md
1970-01-01 01:00:00.000000000 +0100
@@ -1,20 +0,0 @@
----
-name: Feature request
-about: Suggest an idea for this project
-title: ''
-labels: ''
-assignees: ''
-
----
-
-**Is your feature request related to a problem? Please describe.**
-A clear and concise description of what the problem is. Ex. I'm always
frustrated when [...]
-
-**Describe the solution you'd like**
-A clear and concise description of what you want to happen.
-
-**Describe alternatives you've considered**
-A clear and concise description of any alternative solutions or features
you've considered.
-
-**Additional context**
-Add any other context or screenshots about the feature request here.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
"old/netease-cloud-music-gtk-2.5.2/.github/ISSUE_TEMPLATE/\345\212\237\350\203\275\350\257\267\346\261\202.md"
"new/netease-cloud-music-gtk-2.5.3/.github/ISSUE_TEMPLATE/\345\212\237\350\203\275\350\257\267\346\261\202.md"
---
"old/netease-cloud-music-gtk-2.5.2/.github/ISSUE_TEMPLATE/\345\212\237\350\203\275\350\257\267\346\261\202.md"
1970-01-01 01:00:00.000000000 +0100
+++
"new/netease-cloud-music-gtk-2.5.3/.github/ISSUE_TEMPLATE/\345\212\237\350\203\275\350\257\267\346\261\202.md"
2026-04-27 04:12:45.000000000 +0200
@@ -0,0 +1,20 @@
+---
+name: 功能请求
+about: 为这个项目提出你的想法
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**请描述您的功能请求?**
+对清晰简洁的描述该功能。
+
+**描述您希望实现的解决方案**
+清晰简洁的描述您希望实现的结果。
+
+**描述您考虑过的其他方案**
+清晰简洁的描述您考虑过的其他解决方案或功能。
+
+**额外背景信息**
+在此添加与功能请求相关的其他背景信息或截图。
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/netease-cloud-music-gtk-2.5.2/.github/workflows/meson.yml
new/netease-cloud-music-gtk-2.5.3/.github/workflows/meson.yml
--- old/netease-cloud-music-gtk-2.5.2/.github/workflows/meson.yml
1970-01-01 01:00:00.000000000 +0100
+++ new/netease-cloud-music-gtk-2.5.3/.github/workflows/meson.yml
2026-04-27 04:12:45.000000000 +0200
@@ -0,0 +1,74 @@
+
+name: Build on multi platforms
+
+on:
+ push:
+ branches: [ "master" ]
+ pull_request:
+ branches: [ "master" ]
+
+jobs:
+ build:
+ runs-on: ${{ matrix.os }}
+
+ strategy:
+ # Set fail-fast to false to ensure that feedback is delivered for all
matrix combinations. Consider changing this to true when your workflow is
stable.
+ fail-fast: false
+
+ matrix:
+ os: [ubuntu-latest, macos-15-intel, macos-latest]
+ build_type: [Release]
+
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Set reusable strings
+ # Turn repeated input strings (such as the build output directory) into
step outputs. These step outputs can be used throughout the workflow file.
+ id: strings
+ shell: bash
+ run: |
+ echo "build-output-dir=${{ github.workspace }}/_build" >>
"$GITHUB_OUTPUT"
+
+ - name: Configure dependency
+ # macOS gstreamer denpends on dbus, so we don't write here
+ run: |
+ if [[ $(uname) == "Linux" ]]; then
+ eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
+ fi
+ brew install gettext meson \
+ dbus \
+ desktop-file-utils \
+ openssl@3 \
+ libadwaita adwaita-icon-theme \
+ gstreamer \
+ cargo-bundle
+
+ - name: Build
+ # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only
required if you are using a single-configuration generator such as make.
+ # See
https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
+ run: |
+ if [[ $(uname) == "Linux" ]]; then
+ eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
+ fi
+ export MACOSX_DEPLOYMENT_TARGET=11.0
+ export CARGO_TARGET_DIR=${{ steps.strings.outputs.build-output-dir }}
+ meson ${{ steps.strings.outputs.build-output-dir }}
+ export
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/Library/Frameworks/GStreamer.framework/Libraries/pkgconfig
+ cargo bundle --release
+
+ - name: bundle macOS app
+ run: |
+ if [[ $(uname) == "Darwin" ]]; then
+ brew install dylibbundler
+ cd ${{ steps.strings.outputs.build-output-dir }}/release/bundle/osx
+ cd netease-cloud-music-gtk4.app/Contents
+ dylibbundler -od -b -x MacOS/netease-cloud-music-gtk4 -d Libraries
-p @executable_path/../Libraries
+ fi
+
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: netease-cloud-music_${{ matrix.os }}
+ path:
+ ${{ steps.strings.outputs.build-output-dir }}/release/bundle
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/netease-cloud-music-gtk-2.5.2/Cargo.toml
new/netease-cloud-music-gtk-2.5.3/Cargo.toml
--- old/netease-cloud-music-gtk-2.5.2/Cargo.toml 2025-05-06
10:04:10.000000000 +0200
+++ new/netease-cloud-music-gtk-2.5.3/Cargo.toml 2026-04-27
04:12:45.000000000 +0200
@@ -1,82 +1,33 @@
[package]
name = "netease-cloud-music-gtk4"
-version = "2.5.2"
+version = "2.5.3"
edition = "2024"
[dependencies]
gettext-rs = { version = "~0.7", features = ["gettext-system"] }
-gtk = { version = "~0.9", package = "gtk4" }
-once_cell = "~1.19"
+gtk = { version = "~0.11", package = "gtk4" }
+once_cell = "~1.21"
qrcode-generator = "~5.0"
# ncm-api = { git = "https://github.com/gmg137/netease-cloud-music-api.git",
branch = "dev", package = "netease-cloud-music-api" }
-ncm-api = { git = "https://gitee.com/gmg137/netease-cloud-music-api.git", tag
= "1.5.1", package = "netease-cloud-music-api" }
+ncm-api = { git = "https://gitee.com/gmg137/netease-cloud-music-api.git", tag
= "1.5.2", package = "netease-cloud-music-api" }
anyhow = "~1.0"
-gstreamer = "~0.23"
-gstreamer-play = "~0.23"
-fastrand = "~2.1"
+gstreamer = "~0.25"
+gstreamer-play = "~0.25"
+fastrand = "~2.3"
mpris-server = "~0.9"
-regex = "~1.10"
+regex = "~1.12"
log = "~0.4"
env_logger = "~0.11"
-cookie_store = "~0.21"
+cookie_store = "~0.22"
chrono = "~0.4"
-async-channel = "~2.3"
+async-channel = "~2.5"
[dependencies.adw]
package = "libadwaita"
-version = "~0.7"
-features = ["v1_7"]
+version = "~0.9"
+features = ["v1_6"]
-# cargo deb 打包配置
-# 打包前在__build目录下执行: meson configure --prefix=/usr && ninja
-[package.metadata.deb]
-maintainer = "gmg137 <[email protected]>"
-copyright = "2024, gmg137 <[email protected]>"
-license-file = ["COPYING", "0"]
-extended-description = """\
-netease-cloud-music-gtk4 是基于 GTK4 + Libadwaita 构造的网易云音乐播放器,\
-专为 Linux 系统打造,已在 openSUSE Tumbleweed + GNOME 环境下测试。"""
-depends = "$auto"
-section = "sound"
-assets = [
- [
- "__build/src/netease-cloud-music-gtk4",
- "usr/bin/",
- "755",
- ],
- [
- "__build/data/com.gitee.gmg137.NeteaseCloudMusicGtk4.desktop",
- "usr/share/applications/",
- "644",
- ],
- [
- "__build/data/netease-cloud-music-gtk4.gresource",
- "usr/share/netease-cloud-music-gtk4/",
- "644",
- ],
- [
-
"data/icons/hicolor/scalable/apps/com.gitee.gmg137.NeteaseCloudMusicGtk4.svg",
- "usr/share/icons/hicolor/scalable/apps/",
- "644",
- ],
- [
-
"data/icons/hicolor/symbolic/apps/com.gitee.gmg137.NeteaseCloudMusicGtk4-symbolic.svg",
- "usr/share/icons/hicolor/symbolic/apps/",
- "644",
- ],
- [
- "__build/po/zh_CN/LC_MESSAGES/netease-cloud-music-gtk4.mo",
- "usr/share/locale/zh_CN/LC_MESSAGES/",
- "644",
- ],
- [
- "data/com.gitee.gmg137.NeteaseCloudMusicGtk4.gschema.xml",
- "usr/share/glib-2.0/schemas/",
- "644",
- ],
- [
- "__build/data/com.gitee.gmg137.NeteaseCloudMusicGtk4.metainfo.xml",
- "usr/share/metainfo/",
- "644",
- ],
-]
+
+[package.metadata.bundle]
+icon = ["data/icons/hicolor/[email protected]"]
+osx_minimum_system_version = "11.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/netease-cloud-music-gtk-2.5.2/build.rs
new/netease-cloud-music-gtk-2.5.3/build.rs
--- old/netease-cloud-music-gtk-2.5.2/build.rs 1970-01-01 01:00:00.000000000
+0100
+++ new/netease-cloud-music-gtk-2.5.3/build.rs 2026-04-27 04:12:45.000000000
+0200
@@ -0,0 +1,17 @@
+use std::env;
+fn main() {
+ let target = env::var("CARGO_CFG_TARGET_OS");
+ if target == Ok("macos".to_string()) {
+ unsafe {
+ env::set_var("PKG_CONFIG_PATH",
+
"/usr/local/lib/pkgconfig:/Library/Frameworks/GStreamer.framework/Libraries/pkgconfig"
+ );
+ let lib = "/Library/Frameworks/GStreamer.framework/Libraries";
+ env::set_var("GST_PLUGIN_PATH", lib);
+ env::set_var("DYLD_FALLBACK_LIBRARY_PATH", lib);
+ }
+ println!("cargo:rustc-env=MACOSX_DEPLOYMENT_TARGET=11.0");
+ println!("cargo:rustc-link-search=framework=/Library/Frameworks");
+
println!("cargo:rustc-link-arg=-Wl,-headerpad_max_install_names,-rpath,/Library/Frameworks/GStreamer.framework/Libraries");
+ }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/netease-cloud-music-gtk-2.5.2/com.gitee.gmg137.NeteaseCloudMusicGtk4.json
new/netease-cloud-music-gtk-2.5.3/com.gitee.gmg137.NeteaseCloudMusicGtk4.json
---
old/netease-cloud-music-gtk-2.5.2/com.gitee.gmg137.NeteaseCloudMusicGtk4.json
2025-05-06 10:04:10.000000000 +0200
+++
new/netease-cloud-music-gtk-2.5.3/com.gitee.gmg137.NeteaseCloudMusicGtk4.json
2026-04-27 04:12:45.000000000 +0200
@@ -47,7 +47,7 @@
{
"type" : "git",
"url" :
"https://github.com/gmg137/netease-cloud-music-gtk.git",
- "tag" : "2.5.2"
+ "tag" : "2.5.3"
}
],
"config-opts" : []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/netease-cloud-music-gtk-2.5.2/data/com.gitee.gmg137.NeteaseCloudMusicGtk4.metainfo.xml.in
new/netease-cloud-music-gtk-2.5.3/data/com.gitee.gmg137.NeteaseCloudMusicGtk4.metainfo.xml.in
---
old/netease-cloud-music-gtk-2.5.2/data/com.gitee.gmg137.NeteaseCloudMusicGtk4.metainfo.xml.in
2025-05-06 10:04:10.000000000 +0200
+++
new/netease-cloud-music-gtk-2.5.3/data/com.gitee.gmg137.NeteaseCloudMusicGtk4.metainfo.xml.in
2026-04-27 04:12:45.000000000 +0200
@@ -5,6 +5,18 @@
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-3.0-or-later</project_license>
<releases>
+ <release version="2.5.3" date="2026-04-27" type="stable">
+ <description>
+ <ul>
+ <li>修复页面创建错误</li>
+ <li>修改播放栏样式</li>
+ <li>更新关于窗口样式</li>
+ <li>取消隐藏每日推荐</li>
+ <li>更改翻译歌词位置</li>
+ <li>更新依赖版本</li>
+ </ul>
+ </description>
+ </release>
<release version="2.5.2" date="2025-05-06" type="stable">
<description>
<ul>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/netease-cloud-music-gtk-2.5.2/data/gtk/my-page.ui
new/netease-cloud-music-gtk-2.5.3/data/gtk/my-page.ui
--- old/netease-cloud-music-gtk-2.5.2/data/gtk/my-page.ui 2025-05-06
10:04:10.000000000 +0200
+++ new/netease-cloud-music-gtk-2.5.3/data/gtk/my-page.ui 2026-04-27
04:12:45.000000000 +0200
@@ -22,7 +22,7 @@
<child>
<object class="GtkBox">
<property
name="orientation">vertical</property>
- <property name="visible">false</property>
+ <property name="visible">true</property>
<child>
<object class="AdwAvatar"
id="daily_rec_avatar">
<property
name="icon-name">x-office-calendar-symbolic</property>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/netease-cloud-music-gtk-2.5.2/data/gtk/window.ui
new/netease-cloud-music-gtk-2.5.3/data/gtk/window.ui
--- old/netease-cloud-music-gtk-2.5.2/data/gtk/window.ui 2025-05-06
10:04:10.000000000 +0200
+++ new/netease-cloud-music-gtk-2.5.3/data/gtk/window.ui 2026-04-27
04:12:45.000000000 +0200
@@ -235,7 +235,11 @@
<property name="transition-duration">888</property>
<property name="transition-type">swing-up</property>
<child>
- <object class="PlayerControls"
id="player_controls" />
+ <object class="GtkActionBar">
+ <child>
+ <object class="PlayerControls"
id="player_controls" />
+ </child>
+ </object>
</child>
</object>
</child>
Binary files
old/netease-cloud-music-gtk-2.5.2/data/icons/hicolor/[email protected] and
new/netease-cloud-music-gtk-2.5.3/data/icons/hicolor/[email protected] differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/netease-cloud-music-gtk-2.5.2/meson.build
new/netease-cloud-music-gtk-2.5.3/meson.build
--- old/netease-cloud-music-gtk-2.5.2/meson.build 2025-05-06
10:04:10.000000000 +0200
+++ new/netease-cloud-music-gtk-2.5.3/meson.build 2026-04-27
04:12:45.000000000 +0200
@@ -1,5 +1,5 @@
project('netease-cloud-music-gtk4', 'rust',
- version: '2.5.2',
+ version: '2.5.3',
meson_version: '>= 0.59.0',
default_options: [ 'warning_level=2',
'werror=false',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/netease-cloud-music-gtk-2.5.2/src/application.rs
new/netease-cloud-music-gtk-2.5.3/src/application.rs
--- old/netease-cloud-music-gtk-2.5.2/src/application.rs 2025-05-06
10:04:10.000000000 +0200
+++ new/netease-cloud-music-gtk-2.5.3/src/application.rs 2026-04-27
04:12:45.000000000 +0200
@@ -1,8 +1,8 @@
use adw::{prelude::AdwDialogExt, subclass::prelude::*};
-use async_channel::{unbounded, Receiver, Sender};
+use async_channel::{Receiver, Sender, unbounded};
use gettextrs::gettext;
use gio::Settings;
-use glib::{clone, source::Priority, timeout_future, timeout_future_seconds,
WeakRef};
+use glib::{WeakRef, clone, source::Priority, timeout_future,
timeout_future_seconds};
use gtk::{gio, glib, prelude::*};
use log::*;
use ncm_api::{
@@ -13,8 +13,8 @@
use std::{cell::RefCell, fs, path::PathBuf, sync::Arc, time::Duration};
use crate::{
- audio::MprisController, config::VERSION,
gui::NeteaseCloudMusicGtk4Preferences, model::*,
- ncmapi::*, path::CACHE, utils::*, NeteaseCloudMusicGtk4Window, MAINCONTEXT,
+ MAINCONTEXT, NeteaseCloudMusicGtk4Window, audio::MprisController,
config::VERSION,
+ gui::NeteaseCloudMusicGtk4Preferences, model::*, ncmapi::*, path::CACHE,
utils::*,
};
// implements Debug for Fn(Targ) using "blanket implementations"
@@ -536,7 +536,7 @@
}
Action::ToTopPicksPage => {
let page = window.init_picks_songlist();
- window.page_new(&page, gettext("all top picks").as_str());
+ window.page_new(&page, gettext("all top picks").as_str(),
"ToTopPicksPage");
let page = page.downgrade();
MAINCONTEXT.spawn_local_with_priority(Priority::DEFAULT_IDLE,
async move {
@@ -589,7 +589,7 @@
Action::ToAllAlbumsPage => {
let page = window.init_all_albums();
- window.page_new(&page, gettext("all new albums").as_str());
+ window.page_new(&page, gettext("all new albums").as_str(),
"ToAllAlbumsPage");
let page = page.downgrade();
MAINCONTEXT.spawn_local_with_priority(Priority::DEFAULT_IDLE,
async move {
@@ -638,7 +638,7 @@
},
true,
);
- window.page_new(&page, &album.name);
+ window.page_new(&page, &album.name,
"Album");
let page = page.downgrade();
let detal_dynamic_as =
ncmapi.client.album_detail_dynamic(album.id);
@@ -735,7 +735,7 @@
}
Action::ToSongListPage(songlist) => {
let page = window.init_songlist_page(&songlist, false);
- window.page_new(&page, &songlist.name);
+ window.page_new(&page, &songlist.name, "ToSongListPage");
let page = page.downgrade();
let sender = imp.sender.clone();
@@ -799,7 +799,7 @@
}
Action::ToAlbumPage(songlist) => {
let page = window.init_songlist_page(&songlist, true);
- window.page_new(&page, &songlist.name);
+ window.page_new(&page, &songlist.name, "ToAlbumPage");
let page = page.downgrade();
let sender = imp.sender.clone();
@@ -829,7 +829,7 @@
}
Action::ToRadioPage(songlist) => {
let page = window.init_songlist_page(&songlist, true);
- window.page_new(&page, &songlist.name);
+ window.page_new(&page, &songlist.name, "ToRadioPage");
let page = page.downgrade();
let sender = imp.sender.clone();
@@ -1033,7 +1033,7 @@
Action::ToSingerSongsPage(singer) => {
let title = &singer.name;
let page = window.init_search_song_page(title,
SearchType::SingerSongs);
- window.page_new(&page, title);
+ window.page_new(&page, title, "ToSingerSongsPage");
let page = page.downgrade();
let sender = imp.sender.clone();
@@ -1060,7 +1060,7 @@
Action::ToMyPageDailyRec => {
let title = gettext("Daily Recommendation");
let page = window.init_search_song_page(&title,
SearchType::DailyRec);
- window.page_new(&page, &title);
+ window.page_new(&page, &title, "ToMyPageDailyRec");
let page = page.downgrade();
let sender = imp.sender.clone();
@@ -1087,7 +1087,7 @@
Action::ToMyPageHeartbeat => {
let title = gettext("Favorite Songs");
let page = window.init_search_song_page(&title,
SearchType::Heartbeat);
- window.page_new(&page, &title);
+ window.page_new(&page, &title, "ToMyPageHeartbeat");
let page = page.downgrade();
let sender = imp.sender.clone();
@@ -1130,7 +1130,7 @@
Action::ToMyPageCloudDisk => {
let title = gettext("Cloud Music");
let page = window.init_search_song_page(&title,
SearchType::CloudDisk);
- window.page_new(&page, &title);
+ window.page_new(&page, &title, "ToMyPageCloudDisk");
let page = page.downgrade();
let sender = imp.sender.clone();
@@ -1157,7 +1157,7 @@
Action::ToMyPageRadio => {
let title = gettext("My Radio");
let page = window.init_search_songlist_page(&title,
SearchType::Radio);
- window.page_new(&page, &title);
+ window.page_new(&page, &title, "ToMyPageRadio");
let page = page.downgrade();
MAINCONTEXT.spawn_local_with_priority(Priority::DEFAULT_IDLE,
async move {
@@ -1174,7 +1174,7 @@
Action::ToMyPageAlbums => {
let title = gettext("Favorite Album");
let page = window.init_search_songlist_page(&title,
SearchType::LikeAlbums);
- window.page_new(&page, &title);
+ window.page_new(&page, &title, "ToMyPageAlbums");
let page = page.downgrade();
MAINCONTEXT.spawn_local_with_priority(Priority::DEFAULT_IDLE,
async move {
@@ -1191,7 +1191,7 @@
Action::ToMyPageSonglist => {
let title = gettext("Favorite Song List");
let page = window.init_search_songlist_page(&title,
SearchType::LikeSongList);
- window.page_new(&page, &title);
+ window.page_new(&page, &title, "ToMyPageSonglist");
let page = page.downgrade();
MAINCONTEXT.spawn_local_with_priority(Priority::DEFAULT_IDLE,
async move {
@@ -1333,18 +1333,43 @@
fn show_about(&self) {
let window = self.active_window().unwrap();
- let dialog = gtk::AboutDialog::builder()
- .transient_for(&window)
- .modal(true)
- .program_name(gettext(crate::APP_NAME))
- .logo_icon_name("logo")
+ let dialog = adw::AboutDialog::builder()
+ .application_name(gettext(crate::APP_NAME))
+ .application_icon(crate::APP_ID)
.version(VERSION)
- .authors(vec!["gmg137", "catsout"])
+ .developer_name("gmg137")
+ .developers(vec![
+ "gmg137",
+ "catsout",
+ "fplust",
+ "outloudvi",
+ "CyrusYip",
+ "Integral-Tech",
+ "NOBLES5E",
+ "atzlinux",
+ "mokurin000",
+ "onlymash",
+ "An-n-ya",
+ "MarvelousBlack",
+ "langzime",
+ "h0cheung",
+ "weilinfox",
+ "xyzhou-1",
+ "liuyujielol",
+ "heddxh",
+ "fungaren",
+ "xen0n",
+ "arkuna23",
+ "wngtk",
+ "zyw271828",
+ ])
.website("https://github.com/gmg137/netease-cloud-music-gtk")
+
.issue_url("https://github.com/gmg137/netease-cloud-music-gtk/issues")
.license_type(gtk::License::Gpl30)
+ .copyright("© 2025 gmg137")
.build();
- dialog.present();
+ dialog.present(Some(&window));
}
fn setup_cache_clear(&self) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/netease-cloud-music-gtk-2.5.2/src/gui/theme_selector.rs
new/netease-cloud-music-gtk-2.5.3/src/gui/theme_selector.rs
--- old/netease-cloud-music-gtk-2.5.2/src/gui/theme_selector.rs 2025-05-06
10:04:10.000000000 +0200
+++ new/netease-cloud-music-gtk-2.5.3/src/gui/theme_selector.rs 2026-04-27
04:12:45.000000000 +0200
@@ -4,13 +4,13 @@
// Distributed under terms of the GPL-3.0-or-later license.
//
use gtk::subclass::prelude::*;
-use gtk::{gdk, glib, CompositeTemplate, CssProvider};
+use gtk::{CompositeTemplate, CssProvider, gdk, glib};
use gtk::{prelude::*, style_context_add_provider_for_display};
glib::wrapper! {
pub struct ThemeSelector(ObjectSubclass<imp::ThemeSelector>)
@extends gtk::Widget,
- @implements gtk::Accessible;
+ @implements gtk::Accessible, gtk::Buildable, gtk::ConstraintTarget;
}
impl Default for ThemeSelector {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/netease-cloud-music-gtk-2.5.2/src/ncmapi.rs
new/netease-cloud-music-gtk-2.5.3/src/ncmapi.rs
--- old/netease-cloud-music-gtk-2.5.2/src/ncmapi.rs 2025-05-06
10:04:10.000000000 +0200
+++ new/netease-cloud-music-gtk-2.5.3/src/ncmapi.rs 2026-04-27
04:12:45.000000000 +0200
@@ -4,7 +4,7 @@
// Distributed under terms of the GPL-3.0-or-later license.
//
use anyhow::Result;
-use cookie_store::{serde, CookieStore};
+use cookie_store::{CookieStore, serde};
use ncm_api::{CookieBuilder, CookieJar, MusicApi, SongInfo, SongUrl};
use crate::path::{CACHE, LYRICS};
@@ -176,7 +176,7 @@
si.album
));
// 翻译歌词文件位置
- let mut tlyric_path = CACHE.clone();
+ let mut tlyric_path = LYRICS.clone();
tlyric_path.push(format!("{}.tlrc", si.id));
// 替换歌词时间
let re = regex::Regex::new(r"\[\d+:\d+.\d+\]").unwrap();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/netease-cloud-music-gtk-2.5.2/src/window.rs
new/netease-cloud-music-gtk-2.5.3/src/window.rs
--- old/netease-cloud-music-gtk-2.5.2/src/window.rs 2025-05-06
10:04:10.000000000 +0200
+++ new/netease-cloud-music-gtk-2.5.3/src/window.rs 2026-04-27
04:12:45.000000000 +0200
@@ -10,11 +10,12 @@
use gettextrs::gettext;
use gio::{Settings, SimpleAction};
use glib::{
- clone, source::Priority, ParamSpec, ParamSpecEnum, ParamSpecObject,
ParamSpecUInt64, Value,
+ ParamSpec, ParamSpecEnum, ParamSpecObject, ParamSpecUInt64, Value, clone,
source::Priority,
};
use gtk::{
+ CompositeTemplate,
gio::{self, SettingsBindFlags},
- glib, CompositeTemplate,
+ glib,
};
use log::*;
use ncm_api::{BannersInfo, LoginInfo, SongInfo, SongList, TopList};
@@ -192,7 +193,7 @@
glib::wrapper! {
pub struct
NeteaseCloudMusicGtk4Window(ObjectSubclass<imp::NeteaseCloudMusicGtk4Window>)
@extends gtk::Widget, gtk::Window, gtk::ApplicationWindow,
- @implements gio::ActionGroup, gio::ActionMap;
+ @implements gio::ActionGroup, gio::ActionMap, gtk::Accessible,
gtk::Buildable, gtk::ConstraintTarget, gtk::Native, gtk::Root,
gtk::ShortcutManager;
}
impl NeteaseCloudMusicGtk4Window {
@@ -603,18 +604,25 @@
self.page_set_info(title);
self.page_widget_switch(true);
}
- pub fn page_new(&self, page: &impl glib::object::IsA<Widget>, title: &str)
{
+ pub fn page_new(&self, page: &impl glib::object::IsA<Widget>, title: &str,
name: &str) {
let imp = self.imp();
let stack = imp.page_stack.get().unwrap();
if stack.len() > 1 {
let top_page = stack.top_page();
if top_page.title().unwrap() == title {
- return;
+ if let Some(n) = top_page.name() {
+ if n == name {
+ return;
+ }
+ } else {
+ return;
+ }
}
}
// stack.set_transition_type(StackTransitionType::SlideLeft);
let stack_page = stack.new_page(page);
stack_page.set_title(title);
+ stack_page.set_name(name);
self.page_set_info(title);
self.page_widget_switch(true);
}
@@ -728,7 +736,7 @@
let page = imp.playlist_lyrics_page.get().unwrap();
page.init_page(&sis, si, &self.get_song_likes(&sis));
- self.page_new(page, &gettext("Play List&Lyrics"));
+ self.page_new(page, &gettext("Play List&Lyrics"), "Play List&Lyrics");
}
/// 更新歌词内容,不调整位置
++++++ vendor.tar.xz ++++++
/work/SRC/openSUSE:Factory/netease-cloud-music-gtk/vendor.tar.xz
/work/SRC/openSUSE:Factory/.netease-cloud-music-gtk.new.11940/vendor.tar.xz
differ: char 26, line 1