Skip to content

v2.0.0

Latest

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:

 🏆 Gold List, Your Name  🏆  Top Honors  🏆  A Bright Future  
 📖 Inspire the Page  📖  Exceed Yourself  📖  Dreams Come True

(っ˘ω˘ς) You can do it! — From the ter-music develop group ❤️


🎶 Ter-Music v2.0.0 — 全新升级! ✨

发布日期: 2026-06-05
开发者: @YXZL985 (燕戏竹林)
仓库: https://github.com/YXZL985/ter-music
许可证: GPL-3.0-or-later


🌟 中文版

🎌 📢 高考特别寄语

全国高考日(6月7日前后)在即, ter-music v2.0.0 向所有高三学子致以最诚挚的祝福! 🩷

📚 十年磨一剑,今朝试锋芒!
愿你提笔从容,落笔生花,所有努力都在考场上绽放!
🏆 乾坤未定,你我皆是黑马!稳住心态,超常发挥!
🎯 合上笔盖的那一刻,有着战士收刀入鞘的骄傲!

加油!加油!加油! (๑•̀ㅂ•́)و✧ ———— 金榜题名,一定有你! 🎉🎉🎉

「大鹏一日同风起,扶摇直上九万里。」—— 李白 🦅

💪 无论你在刷题还是刷 repo,愿这款小小的终端播放器能为你的备考路添一丝旋律与力量!

v2.0.0 新特性一览

这是一个重大里程碑版本 (`・ω・´) 带来了 10 段图形均衡器CUE 分轨支持原生 PipeWire 音频后端17 种播放模式系统SQLite 音乐库 以及大规模内部重构——同时仍然保持轻量级终端应用的身份!( •̀ ω •́ )✧

🎛️ 10 段图形均衡器

  • 10 段双二阶 IIR DSP 均衡器,配有可视化柱状界面 ✨
  • 可调节 31Hz 至 16kHz 各频段,精确控制增益
  • 终端内实时视觉反馈 (っ◕‿◕)っ

🎵 CUE 分轨 & 元数据

  • 完整 CUE 分轨支持 — 将 FLAC/APE/WV 分割为虚拟曲目 (ノ◕ヮ◕)ノ*:・゚✧
  • 自动检测 CUE 编码,可配置回退编码(GBK/BIG5/Shift-JIS)
  • 内嵌歌词优先 — 从 FFmpeg 元数据和 APE 标签提取歌词
  • 原生 APEv2 标签解析器,支持 GBK 编码恢复 ( ̄▽ ̄)ノ

🔌 PipeWire 音频后端

  • 全新的原生 PipeWire 音频后端,与 PulseAudio 和 ALSA 并列
  • 运行时 dlopen 加载 — PipeWire 在启动时自动检测,无编译时依赖
  • 自动回退:PipeWire → PulseAudio → ALSA (◕‿◕✿)

🎮 播放模式 & 播放队列

  • 17 种播放模式 — 用完整的 PlayMode 枚举取代旧版 LoopMode
    • 顺序、单曲循环、列表循环、随机一次、随机循环
    • 文件夹顺序 / 循环 / 随机 / 随机循环
    • 专辑顺序 / 循环 / 随机 / 随机循环
    • 艺术家顺序 / 循环 / 随机 / 随机循环
  • 播放队列系统,带持久化和完整 UI(队列序号、正在播放指示器)
  • 无缝预加载开关(默认关闭),实现无缝切换 (•̀ᴗ•́)و

🎨 界面增强

  • 全新弹出菜单系统 — 双模式播放列表,弹出时暂停进度条
  • 配色方案扩展至 24 种预设 + 1 个自定义槽位,带配色保护 ◉‿◉
  • 右侧选择菜单 — 取代了 ± 调节控件
  • 队列 UI — 序列号、正在播放指示器和专用快捷键
  • 滚动条组件 — 播放列表、歌词和帮助面板
  • 帮助页面,支持滚动和搜索(F8)

⚡ 性能与可靠性

  • 段缓冲区内存占用从 ~40MB 降至 ~20MB ( ゚д゚)

🗄️ SQLite 音乐库

  • 基于 SQLite 的音乐库,完整元数据持久化
  • 库浏览器界面 — 浏览、搜索和管理您的音乐收藏
  • JSON 迁移 — 从旧配置格式无缝升级 (•̀ω•́)ゞ

🛠️ 构建与打包

  • FFmpeg 静态链接 — 单个 DEB/RPM 包兼容 Debian 1013 / EL810
  • 便携压缩包 — 包含所有依赖,随处运行 (´▽`ʃ♡ƪ)
  • AppImage — 单文件分发(需要 FUSE 支持)
  • 如意玲珑 (Linyaps) — deepin/UOS 兼容包格式
  • aarch64/arm64 DEB — 通过 Docker 交叉编译
  • RPM SRPM — 每个 RPM 二进制包均附带源码包
  • 所有构建产物位于 build/release/ 目录 ٩(◕‿◕。)۶

📋 完整提交记录 (v1.11.1 → v2.0.0)

46 次提交 — 全部由 YXZL985 完成

提交哈希 说明
28fb281 fix(arch): 更新 PKGBUILD 和 .SRCINFO 至 v1.11.1
4681f8f feat(config): AppConfig 从 JSON 迁移至 XML 格式
336b5eb chore(deps): 在所有打包脚本和 Dockerfile 中添加 libxml2
343923b feat(library): 添加基于 SQLite 的音乐库及元数据持久化
7961918 feat(library): 添加 JSON 迁移和库浏览器 UI
6954c32 chore: 移除已跟踪的测试二进制文件,添加 tests/test_config 到 gitignore
4536a8f chore: 移除孤立测试文件 — 未集成到构建或 CI
05a06cf refactor: 移除所有 JSON 持久化,SQLite 成为唯一存储层
c880005 feat: 添加原生 PipeWire 音频后端,与 PulseAudio/ALSA 并列
05b3688 fix: PipeWire RT_PROCESS 改为 DONT_RECONNECT,添加 PA 回退,修复 UI 损坏
3131c03 refactor: 将头文件迁移至 org.yxzl.ter-music 命名空间
5d00eeb refactor: 拆分 menus.c 和 ui/ui.c 为独立模块
875e0d6 refactor: 拆分 audio/audio.c 为独立模块
bf6d3df build: 更新 CMakeLists.txt,添加新的拆分源文件
2a230c8 fix: 补充缺失的头文件,消除所有隐式函数声明警告
2adebc9 refactor: 用 PlayMode 枚举(17 种模式)替换 LoopMode,添加 PlayQueue/PopupState 结构体
e4c592d refactor: 将音频引擎重构为 PlayMode + PlayQueue 架构
e8d62ab fix: 配置项从 default_loop_mode 迁移至 default_play_mode
e3e6ea3 feat: 弹出菜单、双模式播放列表、弹出时暂停进度条
c911c02 feat: 设置中添加播放模式部分,更新侧边栏和菜单
35fa97c fix: 更新 MPRIS 会话和 PlayMode 构建
8fda823 feat: 用右侧选择菜单取代 ± 调节控件
17a6cfb feat: 配色方案扩展至 24 种预设 + 1 个自定义槽位,带颜色配对保护
b784405 feat: 添加播放队列持久化、播放列表集成和导航修复
0e148b1 feat: 队列 UI 带序列号、正在播放指示器和快捷键
11bfcdc fix: 弹出菜单底部溢出、残留显示、ESC 关闭、鼠标点击支持和滚动
852812a fix: 控制面板速度和循环模式变更不生效
57eb620 feat: 段缓冲区播放重构 + 队列/文件浏览器 UX 修复
91c6e83 perf: 段缓冲区 RSS 从 ~40MB 降至 ~20MB
4e64885 feat: 添加无缝预加载开关(默认关闭)
64d4a92 fix: 修正无缝预加载开关的设置数组索引
d40ec74 fix: 移除 rebase 合并后的重复设置标签
c6c90ee feat: 添加 CUE 分轨支持(FLAC/APE/WV)
fc2b5d5 feat: 内嵌歌词优先提取(FFmpeg/APE)
070f06c feat: 自动检测 CUE 文件编码,可配置回退(GBK/BIG5/Shift-JIS)
68c722b fix: 弹出菜单填充和文字颜色 — 移除 wbkgd,显式填充,wattrset
669ce5e feat: 10 段图形均衡器(双二阶 IIR DSP + 可视化柱状 UI)
351b68c chore: 版本号升至 v2.0.0,更新 debian changelog
5e90554 chore: AUR pkgver 升至 2.0.0
19393d3 chore: 修复 v2.0.0 构建脚本 — 更新默认值,从 types.h 检测版本
9676a21 fix: 为 linyaps 添加缺失的构建依赖(sqlite3, dbus, alsa)
0055911 docs: 更新所有文档至 v2.0.0 — PipeWire、PlayMode(17)、EQ、CUE、库、队列
289d958 docs: 更新帮助快速上手文本至 v2.0.0
5bef1e8 fix: 确保 -v 版本标志在容器/静态构建中正常工作
05cd216 fix(deb): 源码包生成失败时不中止二进制构建
880031a feat: 添加 scripts/build/launch-auto-build.sh — 一键多格式构建入口

📦 发布产物

所有文件位于 build/release/ 目录 ヽ(・∀・)ノ

文件 格式 架构
ter-music_2.0.0-1_amd64.deb DEB(FFmpeg 静态链接) amd64
ter-music_2.0.0-1_arm64.deb DEB arm64
ter-music-2.0.0-1.el8.x86_64.rpm RPM(FFmpeg 静态链接) amd64
ter-music-2.0.0-1.el8.src.rpm RPM 源码包 (SRPM) amd64
ter-music_2.0.0.orig.tar.gz DEB 源码(上游原始压缩包) amd64
ter-music_2.0.0-1.debian.tar.xz DEB 源码(Debian 打包配置) amd64
ter-music_2.0.0-1.dsc DEB 源码(控制文件) amd64
ter-music-2.0.0-x86_64.AppImage AppImage amd64
ter-music-2.0.0-portable-x86_64.tar.gz 便携压缩包 amd64
org.yxzl.ter-music_2.0.0_x86_64.uab 如意玲珑 (Linyaps) amd64

💡 小贴士:

  • Debian/Ubuntu/deepin 用户:使用 .deb
  • Fedora/RHEL/Rocky 用户:使用 .rpm
  • 任意 Linux:下载 portable tar.gz(无需安装依赖!)
  • deepin/UOS 玲珑环境:使用 .uab
  • ARM64(树莓派等):使用 arm64.deb

🙏 特别鸣谢

  • 所有提供反馈和 bug 报告的用户 (◕‿◕)♡
  • FFmpeg、PulseAudio、PipeWire、ncurses 和 SQLite 社区提供的优秀库
  • AppImage、如意玲珑和 Debian/RPM 打包生态系统 (´。• ᵕ •。`) ✦

🎌 高考加油!志在必得!🚀

✨ 愿你在合上笔盖的刹那,有侠客收剑入鞘的骄傲 ✨

✏️ 六月高考,九月启航,星辰大海,始于笔下。
🎧 累了就戴上耳机,让 ter-music 陪你度过每一个挑灯夜战的夜晚。
🏁 长风破浪会有时,直挂云帆济沧海!—— 李白《行路难》

㊗️ 所有考生:

 🏆 金榜题名  🏆  蟾宫折桂  🏆  前程似锦  
 📖 妙笔生花  📖  超常发挥  📖  梦想成真

(っ˘ω˘ς) 加油!你可以的! ——— ter-music 开发组敬上