Skip to content

Releases: HuanSoft-Open-Source-Community/ter-music

v2.0.0

Choose a tag to compare

@YXZL985 YXZL985 released this 05 Jun 14:04

🎶 Ter-Music v2.0.0 — All-New Experience! ✨

Released: 2026-06-05
Developer: @YXZL985 (Yanxi Bamboo Forest)
Repository: https://github.com/YXZL985/ter-music
License: GPL-3.0-or-later


🎌 Gaokao Special — 高考特别寄语

To all Chinese students sitting the National College Entrance Exam (Gaokao) around June 7 — this one's for you! 🩷

📚 Ten years of dedication, now it's time to shine!
✨ Stay calm, trust your preparation, and give it everything you've got.
🏆 The battle isn't over until the last paper is handed in — you can still be the dark horse!
🎯 When you close your pen cap at the end, may you feel the pride of a warrior sheathing their sword.

You've got this! You can do it! (๑•̀ㅂ•́)و✧ — May your name be on the gold list! 🎉🎉🎉

「The great roc rises with the wind in a single day, soaring straight up ninety thousand miles." — Li Bai 🦅

💪 Whether you're grinding practice problems or browsing repos, may this little terminal music player bring a touch of melody and strength to your journey. Every note, every line of code, is dedicated to you.

#GaokaoWarriors #StayStrong #YouCanDoIt 🌟


🌟 English Version

What's New in v2.0.0

This is a major milestone release (`・ω・´) bringing a 10-band graphic equalizer, CUE sheet support, a native PipeWire audio backend, a 17-mode PlayMode system, SQLite music library, and a massive internal refactor — all while staying as a lean terminal app! ( •̀ ω •́ )✧

🎛️ 10-Band Graphic Equalizer

  • 10-band biquad IIR DSP equalizer with visual bar UI ✨
  • Configure bands from 31Hz to 16kHz with precise gain control
  • Real-time visual feedback in the terminal (っ◕‿◕)っ

🎵 CUE Sheet & Metadata

  • Full CUE sheet support — split FLAC/APE/WV into virtual tracks (ノ◕ヮ◕)ノ*:・゚✧
  • Auto-detect CUE encoding with configurable fallback (GBK/BIG5/Shift-JIS)
  • Embedded lyrics priority — extracts lyrics from FFmpeg metadata & APE tags
  • Native APEv2 tag parser with GBK encoding recovery ( ̄▽ ̄)ノ

🔌 PipeWire Audio Backend

  • New native PipeWire audio backend, co-equal with PulseAudio & ALSA
  • Runtime dlopen — PipeWire is detected at startup, no compile-time dependency
  • Automatic fallback: PipeWire → PulseAudio → ALSA (◕‿◕✿)

🎮 PlayMode & Play Queue

  • 17 playback modes — replace old LoopMode with full PlayMode enum
    • Sequential, Single Repeat, List Repeat, Shuffle Once, Shuffle Repeat
    • Folder Sequential / Repeat / Shuffle / Shuffle Repeat
    • Album Sequential / Repeat / Shuffle / Shuffle Repeat
    • Artist Sequential / Repeat / Shuffle / Shuffle Repeat
  • Play Queue system with persistence and full UI (queue numbers, now-playing indicator)
  • Seamless preload toggle (default off) for gapless transition (•̀ᴗ•́)و

🎨 UI/UX Enhancements

  • New popup menu system — dual-mode playlist, suspend progress bar on popup
  • Color palette expanded to 24 presets + 1 custom slot with paired-color guard ◉‿◉
  • Right-side selection menu — replaced +/- adjust controls
  • Queue UI with sequence numbers, now-playing indicator, and dedicated keybindings
  • Scrollbar module for playlist, lyrics, and help panes
  • Help page with scrolling and search (F8)

⚡ Performance & Reliability

  • Segment buffer RSS reduced from ~40MB to ~20MB ( ゚д゚)

🗄️ SQLite Music Library

  • SQLite-backed music library with full metadata persistence
  • Library browser UI — browse, search, and manage your collection
  • JSON migration — seamless upgrade from older config formats (•̀ω•́)ゞ

🛠️ Build & Packaging

  • Static FFmpeg linking — single DEB/RPM compatible across Debian 1013 / EL810
  • Portable tar.gz — bundle all deps, run anywhere (´▽`ʃ♡ƪ)
  • AppImage — single-file distribution (requires FUSE)
  • Linyaps (如意玲珑) — deepin/UOS compatible package
  • aarch64/arm64 DEB — cross-compiled via Docker
  • RPM SRPM — source RPM included for every binary RPM
  • All builds available in build/release/ ٩(◕‿◕。)۶

📋 Full Changelog (v1.11.1 → v2.0.0)

46 commits — all by YXZL985

Commit Description
28fb281 fix(arch): update PKGBUILD and .SRCINFO for v1.11.1
4681f8f feat(config): migrate AppConfig from JSON to XML format
336b5eb chore(deps): add libxml2 to all packaging scripts and Dockerfiles
343923b feat(library): add SQLite-backed music library with metadata persistence
7961918 feat(library): add JSON migration and library browser UI
6954c32 chore: remove tracked test binary, add tests/test_config to gitignore
4536a8f chore: remove orphaned test file — not integrated in build or CI
05a06cf refactor: remove all JSON persistence, SQLite is the sole storage layer
c880005 feat: add PipeWire native audio backend, co-equal with PulseAudio/ALSA
05b3688 fix: migrate from PipeWire RT_PROCESS to DONT_RECONNECT, add PA fallback, fix UI corruption
3131c03 refactor: migrate include headers to org.yxzl.ter-music namespace
5d00eeb refactor: split menus.c and ui/ui.c into focused modules
875e0d6 refactor: split audio/audio.c into focused modules
bf6d3df build: update CMakeLists.txt with new split source files
2a230c8 fix: add missing includes to eliminate all implicit-function-declaration warnings
2adebc9 refactor: replace LoopMode with PlayMode enum (17 modes), add PlayQueue/PopupState structs
e4c592d refactor: rewire audio engine to use PlayMode + PlayQueue
e8d62ab fix: migrate config from default_loop_mode to default_play_mode
e3e6ea3 feat: popup menus, dual-mode playlist, suspend progress bar on popup
c911c02 feat: settings add Play Mode section, update sidebar and menu
35fa97c fix: update MPRIS session and build for PlayMode
8fda823 feat: replace +/- adjust with right-side selection menu in settings
17a6cfb feat: expand color palette to 24 presets + 1 custom slot with paired-color guard
b784405 feat: add queue persistence, playlist integration, and navigation fixes
0e148b1 feat: queue UI with sequence numbers, now-playing indicator, and keybindings
11bfcdc fix: popup menu bottom overflow, visual remnants, ESC dismiss, mouse click support, and scroll
852812a fix: controls pane speed and loop mode changes not taking effect
57eb620 feat: segment buffer playback refactor + queue/file-browser UX fixes
91c6e83 perf: reduce segment buffer RSS from ~40MB to ~20MB
4e64885 feat: add seamless preload toggle (default off)
64d4a92 fix: correct settings array index for seamless preload toggle
d40ec74 fix: remove duplicate settings labels after rebase merge
c6c90ee feat: CUE split-track support for FLAC/APE/WV
fc2b5d5 feat: embedded lyrics priority with FFmpeg/APE extraction
070f06c feat: auto-detect CUE file encoding with configurable fallback (GBK/BIG5/Shift-JIS)
68c722b fix: popup menu fill & text color — remove wbkgd, explicit fill, wattrset
669ce5e feat: 10-band graphic equalizer with biquad IIR DSP and visual bar UI
351b68c chore: bump version to v2.0.0, update debian changelog
5e90554 chore: bump AUR pkgver to 2.0.0
19393d3 chore: fix build scripts for v2.0.0 — update defaults, detect version from types.h
9676a21 fix: add missing build deps (sqlite3, dbus, alsa) for linyaps
0055911 docs: update all docs for v2.0.0 — PipeWire, PlayMode (17), EQ, CUE, library, queue
289d958 docs: update help-quickstart texts for v2.0.0
5bef1e8 fix: ensure -v version flag works in container/static builds
05cd216 fix(deb): don't abort binary build when source package generation fails
880031a feat: add scripts/build/launch-auto-build.sh — one-click multi-format build entry

📦 Release Artifacts

All files are located in build/release/ ヽ(・∀・)ノ

File Format Arch
ter-music_2.0.0-1_amd64.deb DEB (static FFmpeg) amd64
ter-music_2.0.0-1_arm64.deb DEB arm64
ter-music-2.0.0-1.el8.x86_64.rpm RPM (static FFmpeg) amd64
ter-music-2.0.0-1.el8.src.rpm RPM Source (SRPM) amd64
ter-music_2.0.0.orig.tar.gz DEB Source (upstream tarball) amd64
ter-music_2.0.0-1.debian.tar.xz DEB Source (debian packaging) amd64
ter-music_2.0.0-1.dsc DEB Source (control file) amd64
ter-music-2.0.0-x86_64.AppImage AppImage amd64
ter-music-2.0.0-portable-x86_64.tar.gz Portable tar.gz amd64
org.yxzl.ter-music_2.0.0_x86_64.uab Linyaps (如意玲珑) amd64

💡 Pro-tip:

  • For Debian/Ubuntu/deepin users: use the .deb package
  • For Fedora/RHEL/Rocky users: use the .rpm package
  • For any Linux: grab the portable tar.gz (no deps needed!)
  • For deepin/UOS with Linyaps: use the .uab package
  • For ARM64 (Raspberry Pi, etc.): use the arm64.deb package

🙏 Special Thanks

  • All users who provided feedback and bug reports (◕‿◕)♡
  • The FFmpeg, PulseAudio, PipeWire, ncurses, and SQLite communities for their awesome libraries
  • The AppImage, Linyaps, and Debian/RPM packaging ecosystems (´。• ᵕ •。`) ✦

🎌 Go for it, Gaokao Warriors! 🚀

✨ May the moment you close your pen cap feel like a swordsman sheathing their blade with pride. ✨

✏️ The Gaokao in June is just the beginning — the stars and the sea await you beyond the exam hall.
🎧 When you're tired, put on your earphones and let ter-music keep you company through those late-night study sessions.
🏁 The wind will cleave the waves, and the clouds will part — set sail across the vast, deep sea! — Li Bai

㊗️ To every student walking into that exam hall:

Read more

v1.11.1

Choose a tag to compare

@YXZL985 YXZL985 released this 31 May 05:14

🎵 ter-music v1.11.1 — A Little Bit More Love for Your Ears 🐾

Because every terminal deserves a melody... 🎶✨


🌟 English

What's New in v1.11.1? (ノ◕ヮ◕)ノ*:・゚✧

This release brings a brand-new native APEv2 tag parser 🏷️, smoother playback 🎧, better cross-distro packaging 📦, and loads of build system love 💕.

✨ Features

  • 🏷️ Native APEv2 Tag Parser — Say goodbye to garbled metadata! Added a full native APEv2 parser with automatic GBK encoding detection & recovery, so your Chinese-tagged music finally looks right in the player (。♥‿♥。)
  • 🔄 Cross-compile Support — Added libswscale-dev to build dependencies, enabling smoother cross-architecture builds (ARM64, LoongArch, etc.)

🐛 Bug Fixes

  • 🔊 PulseAudio Freeze — Fixed playback freeze after pause + track switch by properly unblocking the PulseAudio mainloop (╥﹏╥) → (^▽^)
  • 🔍 Search Bar Glitch — Fixed backspace display issue in the search bar, and added proper Chinese IME input support
  • 🏷️ APE Tag GBK Fix — Fixed raw GBK byte handling in try_gbk_fixup() for better metadata recovery
  • 🛠️ C89 Compilation — Fixed a C89 strict-mode compilation error for better compatibility

📦 Packaging & Build System

  • 📦 Static DEB/RPM Builds — Fully containerized static builds with FFmpeg 7.1 compiled from source! Single DEB/RPM now compatible across Debian 10–13 & RHEL 8–10 (ノ´ヮ`)ノ*: ・゚
  • 🐳 Dockerized Cross-Build — Refactored Dockerfiles, added Dockerfile.deb, Dockerfile.deb-static, Dockerfile.rpm-static for clean separation
  • 🔄 RPM Improvements — Replaced curl with aria2 16-thread download for FFmpeg source (so much faster! 🚀)
  • 🐧 Ubuntu 24.04 Compat — Added cross-distro dependency alternatives (libpng16-16t64, libjpeg62) so DEBs work on both Debian and Ubuntu
  • 👤 Ownership Fix — Docker-built packages no longer have root ownership (no more sudo chown needed!)
  • ✅ Source Packages.dsc & .src.rpm source packages are now properly collected to the release directory

📚 Documentation

  • Updated README.md and BUILD_GUIDE.md for the new containerized & static build flows
  • Added ape_tag.c to the source file listing in translations

🧰 Full Changelog

Click to see all 20 commits ✨
$ git log --oneline v1.11.0..v1.11.1

377955a feat(metadata): add native APEv2 tag parser and fix GBK encoding recovery
e0c9018 feat(debian): add libswscale-dev Build-Depends and cross-compile support
5069078 fix(audio): fix playback freeze after pause+switch by unblocking PulseAudio mainloop
096631c fix(search): fix search bar backspace display and add Chinese input support
5f42a06 fix(metadata): handle raw GBK bytes from APE tags in try_gbk_fixup
6a57ce2 fix(deb): skip build-deps check during source package phase
d5dba1b fix(build): fix C89 compilation error and DEB source packaging
3e932a1 fix(deb): add cross-distro dependency alternatives for Ubuntu 24.04 compatibility
7183a22 fix(deb): copy source packages to release directory
b725603 fix(deb): simplify source package collection to avoid set -e issues
8282f74 fix(build): improve fix_ownership error handling and drop --privileged from cross-build
47ec062 fix(deb): also remove libswscale-dev from Build-Depends in static mode
f55eda0 fix(rpm): replace curl with aria2 16-thread download for FFmpeg source
8ac3af3 fix(deb): fix root ownership of Docker-built DEB output files
b6d0ece refactor(build): containerized and static DEB builds with CMake fix
54eba49 refactor: rename Dockerfile.static to Dockerfile.rpm-static for consistency
6ef78e0 chore: bump version to v1.11.1
2581304 docs: add ape_tag.c to source file list in README and translations
34cf7e3 docs(scripts): update README for static DEB build and Dockerfile.deb-static
390681e docs: update BUILD_GUIDE.md for containerized/static DEB builds

📥 Download

Grab the latest packages from the Releases page, or build from source:

git clone https://github.com/YXZL985/ter-music.git
cd ter-music
mkdir build && cd build
cmake .. && make
sudo make install

Or grab a pre-built package:

Format Arch File
📦 DEB (static) amd64 ter-music_1.11.1-1_amd64.deb
📦 DEB arm64 ter-music_1.11.1-1_arm64.deb
📦 RPM (static) amd64 ter-music-1.11.1-1.el8.x86_64.rpm
📦 RPM (source) amd64 ter-music-1.11.1-1.el8.src.rpm
🖼️ AppImage amd64 ter-music-1.11.1-x86_64.AppImage
📦 Portable amd64 ter-music-1.11.1-portable-x86_64.tar.gz
🐚 Linyaps amd64 org.yxzl.ter-music_1.11.1_x86_64.uab

🙏 Thank You!

  • To everyone who filed issues and tested the pre-release builds — you're awesome! (´▽`ʃ♡ƪ)
  • Special thanks to the FFmpeg team and the open-source community for making music playback possible 🎶

Happy listening! Let the music play in your terminal 🎵🐱


🌸 中文版

v1.11.1 更新内容 — 让终端多一点音乐的温柔 🐾

每一个终端都值得拥有旋律... 🎶✨


新版本有什么?(ノ◕ヮ◕)ノ*:・゚✧

这个版本带来了全新的 原生 APEv2 标签解析器 🏷️,更流畅的播放体验 🎧,更好的跨发行版打包支持 📦,以及对构建系统满满的爱 💕。

✨ 新功能

  • 🏷️ 原生 APEv2 标签解析器 — 告别乱码元数据!新增完整原生 APEv2 解析器,支持自动 GBK 编码检测与恢复,让你的中文标签歌曲在播放器中正确显示 (。♥‿♥。)
  • 🔄 交叉编译支持 — 新增 libswscale-dev 到构建依赖,支持更顺畅的跨架构构建(ARM64、龙芯等)

🐛 问题修复

  • 🔊 PulseAudio 卡死修复 — 修复了暂停后切换曲目导致的播放卡死问题,通过正确恢复 PulseAudio 主循环 (╥﹏╥) → (^▽^)
  • 🔍 搜索栏问题修复 — 修复了搜索栏退格键显示问题,并添加了中文输入法支持
  • 🏷️ APE 标签 GBK 修复 — 修复了 try_gbk_fixup() 中原始 GBK 字节的处理逻辑,元数据恢复更可靠
  • 🛠️ C89 编译修复 — 修复了 C89 严格模式下的编译错误,兼容性更好

📦 打包与构建系统

  • 📦 静态 DEB/RPM 构建 — 完全容器化的静态构建,FFmpeg 7.1 从源码编译!单个 DEB/RPM 现在可以兼容 Debian 10–13 和 RHEL 8–10 (ノ´ヮ`)ノ*: ・゚
  • 🐳 Docker 化交叉编译 — 重构 Dockerfile,新增 Dockerfile.debDockerfile.deb-staticDockerfile.rpm-static,职责清晰
  • 🔄 RPM 构建提速 — 将 FFmpeg 源码下载从 curl 替换为 aria2 16线程下载(快多了!🚀)
  • 🐧 Ubuntu 24.04 兼容 — 添加跨发行版依赖替代方案(libpng16-16t64libjpeg62),DEB 包同时在 Debian 和 Ubuntu 上可用
  • 👤 文件所有权修复 — Docker 构建的包不再属于 root(不再需要 sudo chown!)
  • ✅ 源码包收集.dsc.src.rpm 源码包现在能正确收集到发布目录

📚 文档更新

  • 更新 README.mdBUILD_GUIDE.md,适配新的容器化与静态构建流程
  • 在翻译文件中将 ape_tag.c 添加到源文件列表

🧰 完整提交记录

点击展开全部 20 次提交 ✨
$ git log --oneline v1.11.0..v1.11.1

377955a feat(metadata): add native APEv2 tag parser and fix GBK encoding recovery
e0c9018 feat(debian): add libswscale-dev Build-Depends and cross-compile support
5069078 fix(audio): fix playback freeze after pause+switch by unblocking PulseAudio mainloop
096631c fix(search): fix search bar backspace display and add Chinese input support
5f42a06 fix(metadata): handle raw GBK bytes from APE tags in try_gbk_fixup
6a57ce2 fix(deb): skip build-deps check during source package phase
d5dba1b fix(build): fix C89 compilation error and DEB source packaging
3e932a1 fix(deb): add cross-distro dependency alternatives for Ubuntu 24.04 compatibility
7183a22 fix(deb): copy source packages to release directory
b725603 fix(deb): simplify source package collection to avoid set -e issues
8282f74 fix(build): improve fix_ownership error handling and drop --privileged from cross-build
47ec062 fix(deb): also remove libswscale-dev from Build-Depends in static mode
f55eda0 fix(rpm): replace curl with aria2 16-thread download for FFmpeg source
8ac3af3 fix(deb): fix root ownership of Docker-built DEB output files
b6d0ece refactor(build): containerized and static DEB builds with CMake fix
54eba49 refactor: rename Dockerfile.static to Dockerfile.rpm-static for consistency
6ef78e0 chore: bump version to v1.11.1
2581304 docs: add ape_tag.c to source file list in README and translations
34cf7e3 docs(scripts): update README for static DEB build and Dockerfile.deb-static
390681e docs: update BUILD_GUIDE.md for containerized/static DEB builds

📥 下载方式

前往 Releases 页面 下载预编译包,或从源码构建:

git clone https://github.com/YXZL985/ter-music.git
cd ter-music
mkdir build && cd build
cmake .. && make
sudo make install

也可直接下载预编译包:

格式 架构 文件
📦 DEB (静态) amd64 ter-music_1.11.1-1_amd64.deb
📦 DEB arm64 ter-music_1.11.1-1_arm64.deb
📦 RPM (静态) amd64 ter-music-1.11.1-1.el8.x86_64.rpm
📦 RPM (源码) amd64 ter-music-1.11.1-1.el8.src.rpm
🖼️ AppImage amd64 ter-music-1.11.1-x86_64.AppImage
📦 便携包 amd64 ter-music-1.11.1-portable-x86_64.tar.gz
🐚 如意玲珑 amd64 org.yxzl.ter-music_1.11.1_x86_64.uab

🙏 感谢

  • 感谢所有反馈 issue 和参与测试的朋友们——你们太棒了!(´▽`ʃ♡ƪ)
  • 特别感谢 FFmpeg 团队和开源社区,让音乐播放成为可能 🎶

祝听歌愉快! 让你的终端响起音乐吧 🎵🐱


Made with 💖 and lots of ☕ by YXZL985
✦ 🐱 🎵 🎶 🐧 ✦

Ter-Music v1.11.0

Choose a tag to compare

@YXZL985 YXZL985 released this 22 May 06:32

🌟 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! 🎶 (ノ´ヮ`)ノ*: ・゚

v1.10.0 — 远程播放 & 静态链接支持 ✨

Choose a tag to compare

@YXZL985 YXZL985 released this 20 May 09:00

✨ v1.10.0 — 远程播放 & 静态链接支持 (。♥‿♥。)


🌟 主要新功能

🎵 远程音乐播放 — 新增整套远程播放子系统,支持通过 libcurl 浏览和播放远程服务器上的音乐,无需下载到本地 (ノ◕ヮ◕)ノ*:・゚✧

  • 🖥️ 支持 SMB / SFTP / FTP / WebDAV / HTTP 五种远程协议
  • ⚙️ 设置中添加「远程设备」管理界面,支持多字段表单编辑连接配置
  • 🔧 用 smbclient 替代 libcurl SMB 以修复 Samba 4.19.5 兼容性,并解决中文路径编码问题 (๑•̀ㅂ•́)و✧
  • 📦 远程文件缓存:自动缓存到 /tmp,支持进度拖拽和可靠快进/快退
  • 📜 远程 .lrc 歌词加载
  • 🔑 SFTP 私钥认证 & 密码加密存储
  • 🔄 连接刷新、快速加载到播放列表等快捷操作
  • 🚀 启动时可指定远程 URL:ter-music smb://user@host/share

🔗 FFmpeg 静态链接构建模式 — 新增 --static 构建选项,FFmpeg 完全静态链接进二进制 ✧◝(⁰▿⁰)◜✧

  • 🐳 Dockerfile.static: 基于 Rocky Linux 8,从源码编译 FFmpeg 7.1(最小音频配置)
  • 🐳 Dockerfile.rpm: EL8/9/10 容器化 RPM 构建环境
  • 📦 build-rpm.sh: 新增 --static / --container / --el-version 选项
  • 🎯 单个 RPM 包兼容 RHEL EL8/9/10,一包通吃!( •̀ ω •́ )✧

📝 歌词对齐方式 — 设置 → 播放选项中新增左/中/右对齐切换,持久化到 config.json ✨

🔍 调试日志系统--debug 模式新增线程安全文件日志,覆盖音轨播放、UI 事件、播放列表操作、远程请求、MPRIS D-Bus 等主要子系统 (◕‿◕)

🧪 测试服务器工具tools/start-server.py 交互式脚本,一键启动 SMB/FTP/SFTP/WebDAV/HTTP 测试服务器,支持命令行参数 (`・ω・´)b


🎨 其他改进

  • 🖼️ 新增专辑封面显示模式,选中曲目时立即刷新封面
  • 🎛️ 封面显示效果优化及快捷键切换
  • 🎶 MPRIS/D-Bus 现已默认在静态构建中启用
  • 📋 远程连接表单重写为多字段表单,支持字段编辑预填充
  • 🔨 构建脚本全面更新,修复缺失的 libswscale-dev 等交叉编译依赖
  • 🚫 .gitignore 更新,屏蔽 .claude/ 及构建临时目录

🐛 修复

问题 状态
PlayList 光标与底部状态栏重叠 ✅ 已修復
加载远程播放列表时音频未停止导致界面冻结 ✅ 已修復
远程目录列表中的符号链接误入播放列表 ✅ 已修復
SMB 端口冲突,支持 --force 自动释放端口 ✅ 已修復
impacket API 变更导致的 SMB 服务启动失败 ✅ 已修復
wsgidav 4.x 中间件/配置兼容性及依赖缺失 ✅ 已修復
arm64 交叉编译中的 deb 包冲突(--force-overwrite ✅ 已修復
linyaps 打包中 libmpg123 运行时依赖缺失 ✅ 已修復

📚 文档

  • 📖 完整同步中英文文档,覆盖前述所有新特性
  • ⚖️ 所有 README 添加版权声明
  • 🐍 新增 conda 环境配置说明(tuna PyPI 镜像)

💝 感谢使用 Ter-Music! 如果你喜欢这个项目,欢迎在 GitHub 上给一颗 ⭐ (人 •͈ᴗ•͈) ♡

v1.9.1 - 2026-05-13

Choose a tag to compare

@YXZL985 YXZL985 released this 13 May 05:17

v1.9.1

新增

  • 专辑封面显示开关:Settings → Playback Settings 新增"显示专辑图片"选项,可随时关闭专辑封面显示。自动兼容旧配置,升级后缺省为开启。

修复

  • 非 JPEG 格式专辑封面提取:修复 WebP、PNG 等非 JPEG 格式的内嵌专辑封面无法显示的问题。改用 FFmpeg 格式探测自动识别实际图片格式,统一转换为 JPEG 显示。
  • RPM 包 RHEL 兼容性:将 Fedora 专有包名替换为 pkgconfig() 虚拟依赖和自动生成的 soname 依赖,RPM 包现在可在 RHEL(RPM Fusion)和 Fedora 上正常安装。
  • 右侧边框线的显示问题:重构右侧边框线的渲染逻辑,使右侧边框线可以正确显示。

文档

  • 更新构建指南,补充 libpng、libjpeg、libavfilter 依赖说明。

完整变更

5 commits,共变更 12 个文件:

提交 说明
e8f9419 Update docs with libpng/libjpeg and libavfilter dependencies
9154af9 Fix album cover extraction for non-JPEG formats (WebP etc.)
f6190f4 Fix RPM spec for RHEL compatibility
d3f41cd feat: add album cover toggle in Settings and bump to v1.9.1
0d63a5d fix: correct UI layout width calculation for border alignment

基于 v1.9.0 (cc0c883),覆盖 cc0c883..d3f41cd 共 4 个提交。

v1.8.0 - 2026-05-08

Choose a tag to compare

@YXZL985 YXZL985 released this 08 May 16:56
9346f7b

v1.8.0 - 2026-05-08

新增功能

  • 播放速度控制:新增播放速度调节功能,支持在音频播放时调整播放速度,集成到音频处理、用户界面、设置和配置中,并通过libavfilter实现音频滤镜支持
  • 默认循环模式设置:新增default_loop_mode配置选项,支持在启动时为播放器设置默认的循环模式,包括关闭、单曲循环、列表循环和随机播放四种模式,可在播放设置页面进行配置
  • 交叉编译支持:添加完整的CMake交叉编译工具链文件(aarch64-linux-gnu),支持在x86_64架构上构建ARM64/aarch64架构的包,自动设置编译器、链接器和pkg-config路径
  • Docker交叉编译容器:新增Docker容器支持用于交叉编译,包含Dockerfile.cross-build和docker-compose.cross.yml,容器内预装ARM64工具链和开发库,避免污染主机系统,支持交互式shell和多种构建脚本
  • 构建脚本增强:为所有五个构建脚本(AppImage、DEB、Linyaps UAB、可移植包、RPM)添加copy_to_release函数,构建完成后自动将结果复制到build/release/目录,方便统一分发

Bug修复

  • 启动时播放列表更新问题:修复了启动时播放列表不更新的问题。之前应用仅从临时文件恢复上次的播放列表而不重新扫描目录,导致新增歌曲不显示、已删除歌曲仍显示。现在应用在加载临时播放列表后会重新扫描音乐目录,确保播放列表与实际文件同步
  • GCC编译警告:修复了utf8_str_pad函数中的GCC -Wstringop-overflow警告
  • Linyaps BLAS/LAPACK依赖:修复了Linyaps打包时的BLAS运行时依赖问题
  • 文档语言切换链接:修复了文档中语言切换链接的问题

架构改进

  • 项目目录结构重组:实施标准化目录结构重构
    • 新增data/目录用于应用程序数据文件
    • 新增docs/目录整理文档(构建指南、README、多语言翻译)
    • 新增packaging/目录整合打包配置(AUR、Debian)
    • 新增resources/目录管理资源文件(图标)
    • 新增scripts/目录管理脚本(构建、交叉编译)
  • 配置文件适配:更新CMakeLists.txt中的安装路径以适配新目录结构,将应用数据从share/applications/迁移到data/applications/,图标从img/icons/迁移到resources/icons/
  • 旧文件清理:清理根目录下的旧构建脚本、打包配置文件和资源文件,这些文件已迁移到新的标准化目录结构中
  • 交叉编译配置:更新交叉编译Dockerfile至Debian 13(trixie),配置USTC镜像源以加速包下载,使用DEB822格式配置apt源

文档更新

  • 构建文档简化:简化三个README(英文、简体中文、繁体中文)中的构建脚本说明部分,用简洁的引用替代详细说明,添加指向BUILD_GUIDE.mdscripts/README.md的链接,列出支持的包格式,减少重复和维护负担
  • 播放速度控制文档:新增播放速度控制功能的使用文档
  • 构建指南更新:更新BUILD_GUIDE.md,添加详细的交叉编译使用说明,推荐使用容器方式进行交叉编译
  • 根目录README清理:删除根目录的README符号链接和旧文档,统一使用docs/目录下的文档

构建与打包

  • 音频依赖更新:添加音频处理相关的依赖项(WIP状态合并Pull Request后为已完成状态)
  • libavfilter依赖:在构建脚本和容器配置中添加libavfilter依赖,为播放速度滤镜提供支持
  • 版本号更新:将版本号更新至1.8.0,同步更新Debian打包文件、AUR包信息和应用头文件中的版本号

注意事项

  • 由于开发者没有aarch64的环境,无法验证此Release页面提供的aarch64包(是交叉编译所生成的产物)是否可用,因此请在遇到问题时提交ISSUES。

v1.7.1 - 2026-04-24

Choose a tag to compare

@YXZL985 YXZL985 released this 24 Apr 06:40

v1.7.1 - 2026-04-24

Bug 修复

  • 修复 desktop 图标点击报错问题

    • 修正 .desktop 文件的 Exec 字段格式,将 'ter-music -o %f' 改为 'ter-music %F'
    • main.c 中添加位置参数支持,使程序能够接收命令行文件路径参数

    改进效果:

    • 直接点击桌面图标时,程序正常启动
    • 从文件管理器打开音频文件时,程序自动加载该文件

说明: 这是一个小版本修复,主要解决了 Linux 桌面环境下点击应用图标无法正常启动的问题,同时完善了从文件管理器直接打开音频文件的功能支持。

V1.7.0 - 2026-04-24

Choose a tag to compare

@YXZL985 YXZL985 released this 23 Apr 16:51

V1.7.0 - 2026-04-24

新增功能

命令行文件打开支持

  • 新增从命令行直接打开单个音频文件的功能
  • 新增 load_single_file() 函数用于加载单个音频文件
  • load_playlist() 函数现在支持文件路径,自动检测并调用相应加载逻辑
  • 更新 -o/--open 参数,支持指定单个音频文件作为启动参数
  • 更新帮助文档,添加单文件打开示例

桌面文件关联支持

  • 桌面文件 Exec 参数添加 %f 占位符,支持从文件管理器直接打开音频文件
  • 添加 MimeType 字段,声明支持的音频格式(MP3、FLAC、OGG、WAV、M4A、APE、OPUS 等)

MPRIS 媒体会话集成(可选)

  • 新增可选的 MPRIS 媒体会话集成支持
  • 允许系统媒体控制中心(如 GNOME/KDE 的媒体控制)控制播放器

Arch Linux 支持

  • 新增 Arch Linux PKGBUILD 支持
  • 添加 AUR 安装方法和手动构建步骤说明
  • 优化版本号获取逻辑

Debian 打包支持

  • 新增 Debian 打包元数据
  • 优化 DEB 打包脚本

构建与依赖

依赖库更新

  • 更新依赖库版本以支持更多 FFmpeg 版本

构建脚本修复

  • 修复 build-deb.sh 中 README 文件引用错误(将 README_CN.md 更正为 README_zh-CN_Modern.md
  • 更新 build-rpm.sh 添加对 Debian/Deepin 系统的支持:
    • 自动检测系统类型(Debian/RPM)
    • 在 Debian 系统上检查 deb 格式的开发库依赖
    • 使用 --nodeps 选项跳过 rpmbuild 的 RPM 依赖检查
    • 根据系统类型显示正确的包管理器安装命令

文档更新

README 文档重构

  • 创建 README_zh-CN_Modern.md 现代中文文档
  • 将原中文文档重命名为 README_zh-CN_Legacy.md(文言文风格)
  • 在 README.md 中添加其他语言版本链接
  • 更新章节编号以保持一致性

安装方式扩展

  • 添加 ZPM 包管理器安装说明(支持三种语言版本)
  • 添加 Arch Linux PKGBUILD 详细安装和构建指南

项目信息更新

  • 将项目主页链接从 Gitee 迁移至 GitHub(包括构建脚本和 README 文件)
  • 更新中文 README 中的仓库链接
  • 在中英文 README 中添加鸣谢章节,列出贡献者及其贡献
  • 更新贡献者列表,补充 @guanzi008 关于 Debian 打包元数据和 MPRIS 媒体会话集成的新贡献说明

贡献者感谢:感谢 @guanzi008@ZhongHongSoftware 等贡献者的辛勤付出!

v1.6.0 - 2026-04-11

Choose a tag to compare

@YXZL985 YXZL985 released this 11 Apr 09:06

v1.6.0 - 2026-04-11

新增功能

UI/UX 交互增强

  • 歌词面板显示开关 - 新增配置选项控制歌词面板的显示/隐藏,用户可根据个人喜好自定义界面布局
  • 鼠标交互支持 - 全面添加鼠标操作支持:
    • 点击播放列表项选择并播放歌曲
    • 点击控制栏按钮(播放/暂停、上一首、下一首等)进行操作
    • 点击歌词实现"所见即所得"的跳转定位功能
    • 点击菜单栏进行导航操作

构建系统增强

  • DEB 包构建支持 - 新增 build-deb.sh 脚本,支持将项目打包成标准的 Debian/Ubuntu DEB 包
  • Debuginfo 包生成 - 为 RPM 和 DEB 构建脚本添加 --with-debuginfo 选项,可选择生成调试信息包
  • 源码包生成 - DEB 构建脚本新增源码包生成功能,符合 dpkg-source 规范要求
  • 多架构支持 - 为 AppImage、RPM、DEB、可移植包和 Linyaps 构建脚本添加多架构支持,包括架构检测、验证和输出目录结构调整
  • 构建环境检查 - 新增 check_environment 函数检查项目结构完整性
  • 下载工具检测 - 新增 check_download_tool 函数自动检测并选择最佳下载工具(wget/curl)

彩蛋功能

  • 神秘彩蛋 - 在 UI 中添加了一个神秘彩蛋,等待用户发现

Bug 修复

  • UTF-8 文本输入修复 - 修复 UTF-8 编码文本输入提示的问题,改进多字节字符处理
  • 设置视图导航修复 - 修复设置视图的导航问题,提升用户体验
  • 鼠标事件处理改进 - 重构鼠标点击事件处理逻辑,精确计算各区域位置范围,正确处理滚动偏移和边界情况,提升稳定性

架构改进

  • 代码重构 - 提取 UTF-8 退格处理为独立函数 utf8_backspace,消除重复代码
  • 菜单提示栏逻辑分离 - 将菜单提示栏点击处理逻辑提取为独立的 handle_menu_hint_bar_click 函数
  • 路径有效性检查 - 添加 is_valid_path 函数进行路径验证
  • 枚举常量优化 - 使用枚举常量替代 magic number,提高代码可读性
  • ncurses 库查找优化 - 改进 ncurses 库查找逻辑,优先查找 ncursesw 库,未找到时回退到 ncurses 库,提高兼容性

文档更新

  • DEB 构建文档 - 在 BUILD_GUIDE.md、README_CN.md 和 README.md 中添加 build-deb.sh 脚本的使用说明和构建依赖
  • Debuginfo 选项文档 - 添加 --with-debuginfo 选项的使用说明
  • 文档数量更新 - 更新文档中构建脚本数量描述,反映新增的构建脚本

其他变更

  • 日期格式一致性 - 将 LANG=C 改为 LC_ALL=C,确保日期格式在不同环境下保持一致
  • .gitignore 更新 - 添加 .tmp 目录到忽略规则

注意:鼠标交互功能在部分提交中虽然标记为"半成品"和"并未完善",但实际已在后续commit中修复和完成,因此用户不必担心代码质量。

[1.5.1] - 2026-04-07

Choose a tag to compare

@YXZL985 YXZL985 released this 07 Apr 01:48

[1.5.1] - 2026-04-07

✨ 新增功能

  • 添加不同尺寸的应用图标资源
  • 添加桌面文件及图标安装配置

🐛 问题修复

  • 修复构建过程中基础系统库打包冲突问题

🔧 构建优化

  • 更新基础镜像版本至 org.deepin.base/25.2.2

📚 文档更新

  • 更新中文应用名称为"端闱乐部"
  • 更新构建指南和README文档

🏠 项目迁移

  • 更新项目仓库地址至 GitHub

版本说明:此版本主要完善了应用安装体验,添加了桌面图标支持,修复了构建打包问题,并将项目迁移至 GitHub。