Ter-Music v1.11.0
🌟 Ter-Music v1.11.0 Release Notes 🎵
✨ わーい!ついに来たよ!✨ — (◍•ᴗ•◍)❤
📋 概述
v1.11.0 是一次重大功能更新 🚀,包含非同期検索、播放列表排序、音频后端运行时切换、24/32 位高清音频支持、帮助页面、滚动条、信息栏增强等功能,以及多项稳定性修复和构建系统改进。ヽ(✿゚▽゚)ノ
📊 30 个文件变更,+2572 / -555 行 ─=≡Σ((( つ•̀ω•́)つ
✨ 新功能 (New Features) ✨
🔍 异步线程搜索(#a69f493)
搜索从同步 UI 线程移至后台 pthread,增量发布结果! (ノ◕ヮ◕)ノ*:・゚✧
搜索不再阻塞用户输入或界面更新——匹配结果在扫描过程中逐步呈现,按 Escape 可随时取消搜索。ヽ(´ー`)ノ
📑 播放列表排序(#fe38652)
新增 sort-mode 设置,支持按 标题 / 艺术家 / 专辑 / 文件名 排序!(๑•̀ㅂ•́)و✧
使用间接索引数组 (sorted_indices) 映射视觉行到曲目索引,不破坏原始播放列表数据。上下曲切换、鼠标点击、媒体控制均正确遵循排序顺序。٩(◕‿◕。)۶
🎚️ 音频后端运行时切换(#b4f0806, #32c6b2d)
- PulseAudio 和 ALSA 改为运行时
dlopen/dlsym加载,不再编译时链接 🔄 - 设置 → 播放 → 音频后端 支持 Auto / PulseAudio / ALSA 三选项 ⚙️
- 重启后生效,配置持久化到
config.json💾 - 修复退出时可能卡死的问题(
wait_for_playback_thread_shutdown超时机制) (╯°□°)╯︵ ┻━┻ → ┬─┬ ノ( ゜-゜ノ)
❓ 帮助页面(#27c01e3)
F8打开帮助页面,加载双语快速入门文档 📖- 支持滚动和搜索 🔎
- 修复
F9退出无效的问题(ESC+9 处理未覆盖数字 9) (;一_一)
📜 滚动条模块(#05c3162)
新增可复用的滚动条模块!在可滚动面板(播放列表、歌词、帮助页)右侧边缘显示比例缩略块,仅在内容超出视口时可见。 (`・ω・´)✨
ℹ️ 信息栏三栏布局(#e7b8104)
播放列表信息栏从「左侧元数据 + 右侧封面」重构为 「元数据 | 音频技术信息 | 封面」 三栏布局!(★ω★)
新增采样率、位深、比特率、编码格式等音频技术信息显示。🎯
🎧 高清音频管线 16→32 位升级(#38c7b42)
将 swresample 输出、PCM 缓冲区、PulseAudio (PA_SAMPLE_S32LE)、ALSA (SND_PCM_FORMAT_S32_LE) 及频谱显示全面升级至 32 位!(ノ≧∀≦)ノ
完整保留 24 位 FLAC 无损动态范围。🎶✨
🎤 LRC 歌词增强(#4fea81a)
- 支持
[ti:]、[ar:]、[al:]头信息作为固定元数据歌词 📝 - 自动剥离内嵌
[mm:ss.xx]时间戳 ✂️
🐛 Bug 修复 (Bug Fixes) 🐛
▶️ 播放相关
- ✅ XDG/命令行打开单个音频文件时自动开始播放(#5d70562)
- ✅ XDG 打开文件时跳过恢复上次播放状态(#d58fdba)
- ✅ 修复
play_audio()破坏g_selected_index的问题(#fe38652) - ✅ 修复随机/顺序模式下首播放索引不一致(#fe38652)
🖥️ UI 稳定性
- ✅ 修复主线程阻塞 I/O 和过度渲染导致的 UI 卡死(#f4a59ec) (ノಠ_ಠ)ノ
- 渲染热路径中栈 VLA 改为堆分配缓冲区
- 冗余歌词/频谱渲染限流至 150ms(dirty mask)
- 远程下载时 curl 进度回调保持 ncurses 响应
- 大终端窗口下无歌词频谱降采样
- 级联全屏重绘改用
request_ui_refresh延迟触发
- ✅ 修复盲文专辑封面底行像素映射错误(#b598c9d) (ᓀ ᓀ)
📦 包管理和安装
- ✅ 添加
make uninstall目标(#a939cba) 🗑️ - ✅ 帮助文档增加
/usr/local前缀搜索路径(#913d479) 📂
🧊 Linyaps (玲珑)
- ✅ 修复帮助文档在玲珑容器中无法加载的问题(硬编码
/usr/local/share/路径与玲珑的/opt/apps/.../files/前缀不匹配)(ᗒᗣᗕ) - ✅ 新增
TER_MUSIC_DATA_DIR编译时定义,由CMAKE_INSTALL_PREFIX自动推导数据目录路径(#4e713c9) (`•ω•´)✧
📦 AppImage & 可移植包
- ✅ 修复 AppImage 和可移植包中帮助文档完全缺失的问题——构建脚本中存在死代码(检查不存在的
share/目录导致复制语句从未执行)(´;ω;`) - ✅ 新增
/proc/self/exe可执行文件相对路径回退搜索,使自包含包中的 help 文档可在任意挂载点被正确找到(#b5c701d) (•̀ᴗ•́)و
🏷️ 元数据处理
- ✅ MP3 文件 ID3v1.1 标签 GBK→UTF-8 编码转换(#8f3b36b),解决仅有 ID3v1 标签时 FFmpeg 将中文解码为 Latin-1 导致的乱码问题 (╥﹏╥) → (^▽^)
🔧 构建系统改进 (Build System) 🔧
🐳 RPM 容器构建
- 📌 Dockerfile.rpm 添加
dbus-devel依赖,修复 libjpeg 版本约束(#82f8692) - 📌 移除 FFmpeg 库版本号约束
>= 4.0,兼容 EL8(#e44796d) - 📌 修复 Docker 构建产物 root 所有权问题,新增
HOST_UID/HOST_GID自动修复机制(#5d875c3) (◕‿◕✿) - 📌 BUILD_GUIDE.md 推荐优先构建 EL8 版本以获得跨 EL 兼容性(#8938aeb)
📚 文档更新
- 📌 新增 FAQ 音频时延调优条目(#5daa332)
- 📌 添加 Docker / Python / Shell / Linyaps 徽章 🏅(#5daa332)
- 📌 同步 README 和快速入门帮助文件(#d7e801d)
📥 下载 (Downloads) 📥
构建产物位于
build/release/~ (っ•̀ω•́)っ
| 格式 | 文件 | 架构 |
|---|---|---|
| 📦 RPM | ter-music-1.11.0-1.el8.x86_64.rpm |
x86_64 (EL8+) |
| 📦 DEB | ter-music_1.11.0_amd64.deb |
amd64 |
| 📦 DEB | ter-music_1.11.0_arm64.deb |
arm64 |
| 🖥️ AppImage | ter-music-1.11.0-x86_64.AppImage |
x86_64 |
| 🗜️ Portable | ter-music-1.11.0-portable-x86_64.tar.gz |
x86_64 |
| 🧊 Linyaps | org.yxzl.ter-music_1.11.0_x86_64.uab |
x86_64 |
💖 致谢 (Acknowledgements) 💖
感谢所有贡献者、测试者和用户的支持与反馈! ヽ(●´∀`●)ノ
Enjoy Ter-Music! 🎵✨ Let's make listening to music in the terminal fun! 🎶 (ノ´ヮ`)ノ*: ・゚