Releases: boxter007/lefu
Release list
v1.0.5
Full Changelog: v1.0.4...v1.0.5
v1.0.4
v1.0.3
v1.0.2
乐府 v1.0.2 — 安装链路加固与健壮性
这一版不动界面、不动录制逻辑,只做底层加固:安装第三方组件前先核验真伪、诊断日志加上容量上限、打包签名去掉废弃用法并纳入强制校验,另把 Homebrew cask 的同步做成自动化。
安全
- 安装包双重校验(#9)
一键安装 BlackHole 时,下载完成先比对字节级 SHA256,再经pkgutil --check-signature核验签名链为Developer ID Installer: Existential Audio Inc. (Q5C99V536K)且已被 Apple 公证。任一不过即中止,不再进入提权安装。此前只有「HTTP 200 + 体积 > 100KB」两道形同虚设的门,一个被投毒的同名文件即可长驱直入。
修复
-
诊断日志无上限(#10)
单文件超过 2MB 即归档为lefu-diag.log.1,归档采用覆盖式不堆叠。挂机常驻场景不再会一路写大;顺带把每次调用都新建的DateFormatter提为静态复用。 -
签名流程规范化(#11)
去掉已废弃的codesign --deep,改为显式签Contents/Frameworks内的动态库,再签主 bundle;签名失败不再被|| true静默吞掉,codesign --verify --strict不过就中止打包,避免产出「以为签了、其实没签」的包。关于 hardened runtime:本版刻意不启用
--options runtime。实测 ad-hoc 签名(无 Team ID)下启用它会触发 library validation,拒绝dlopen内置的 libmp3lame,导致 MP3 编码静默回落到 M4A。此项须随 #2 的真实开发者证书一起启用。
构建
- 仓库卫生(#12):
design/下 6 个图标生成过程中的临时中间产物(约 4MB)移出版本控制并补上.gitignore规则。 - Homebrew tap 自动同步:新增
scripts/bump_cask.sh,按发布版本同步boxter007/homebrew-lefu的版本号与 sha256;发布流程增加Bump Homebrew cask一步。此前 cask 曾落后一个版本,根因已消除。
安装
# Homebrew(推荐)
brew install --cask boxter007/lefu/lefu
# 或手动下载
# 下载下方 Lefu-v1.0.2.zip,解压后把「乐府.app」拖入「应用程序」首次启动会被 Gatekeeper 拦下(当前为 ad-hoc 签名)。放行方式任选其一:
- 在「访达 → 应用程序」中右键点乐府,选「打开」并确认;
- 或终端执行
xattr -cr "/Applications/乐府.app"。
通用二进制(arm64 + Intel)。已知问题:包内置的 libmp3lame 目前仅 arm64,Intel 机器上 MP3 编码不可用(见 #13,计划 v1.0.3 修复)。
完整变更日志:https://github.com/boxter007/lefu/blob/main/CHANGELOG.md
对比:v1.0.1...v1.0.2
v1.0.1
乐府 v1.0.1
这一版主要治「长时间挂机录制越跑越卡」的性能病,另修列表定位与波形渲染两处回归,并补上版本号体系。
修复
- 长时间录制后 CPU 长期占满、界面卡顿 —— #4
用sample采样定位到两处热点:① 音频电平每秒 20+ 次写入主模型@Published属性,触发录制台整树重算,而会话队列是上百行的非惰性VStack,行数越多越贵;②.repeatForever呼吸动画每帧(60Hz)dirty 视图图,引发根布局全树重算(约占主线程 25%)。
修法:电平拆到独立LevelMeter并做发布节流、会话队列改LazyVStack;呼吸/脉冲动效与电平波形改由 Core Animation 层动画直驱,SwiftUI 视图图不再被高频 dirty。 - 关闭主窗口后重新打开,曲目列表回到顶部、不跟随正在采录的行 —— #5
重开时主动滚动到当前采录行,并兼顾LazyVStack首帧尚未铺好的情况。 - 波形柱状图生长方向与渐变色序错误 —— #6
改回底对齐向上生长;渐变色序还原为 accent 在下、live 在上(此回归仅存在于本地开发过程,未进入旧发行版)。 - 曲目序号列在 100 首以上折行、新增行不自动滚动到底部 —— #7
新增
- 版本号体系 —— #8
打包时构建号自动递增;应用内「设置 → 引擎(高级)→ 版本」与导出诊断日志都会显示当前版本,反馈问题时可直接附上。
安装
- 下载下方
Lefu-v1.0.1.zip,解压得到乐府.app - 拖入「应用程序」
- 首次打开若被 Gatekeeper 拦住,右键 →「打开」(当前为 ad-hoc 签名,托管签名与公证见 #2)
构建信息
| 项 | 值 |
|---|---|
| 版本 | 1.0.1(构建号 4) |
| 架构 | 通用二进制(Apple Silicon + Intel) |
| 系统要求 | macOS 13.0+ |
| 构建来源 | GitHub Actions,tag v1.0.1 |
| MP3 编码器 | 已内置 libmp3lame,无需 Homebrew |
完整变更记录:CHANGELOG.md | v1.0.0...v1.0.1
v1.0.0
乐府 Lefu v1.0.0 — 首个正式版本
乐府(Lefu)是一款开源免费的 macOS 应用:在 Mac 上边听汽水音乐,边按歌自动录制、裁曲、入库。 每首歌自动保存为内嵌封面与标签的 320kbps MP3,附带同步 .lrc 歌词文件,切歌即出片,无需事后剪辑。纯 Swift / SwiftUI 原生开发,MIT 协议开源。
乐府,汉代掌管音乐的官署,采民间歌谣配乐入府库。这个 App 做的事一模一样:听歌,采诗,收卷入库。
✨ 功能亮点
- 实时裁歌:逐首录制架构,切歌瞬间自动分段,一首一收卷,不产生"散落的长录音"
- 歌词四路抓取:自家缓存 → 汽水本地 → LRCLIB → 网易云,抓到即存缓存,离线也有
- 挂机监听:菜单栏常驻,开播自动采诗,停播自动收卷,全程无人值守
- 成品即发布级:LAME 320k 编码,ID3 封面标签内嵌,成品旁挂同步歌词
- 府库一目了然:按日期归档,App 内直接看今日成果与最近入库
📦 安装(无需编译)
- 下载下方
Lefu-v1.0.0.zip(通用二进制:Apple Silicon + Intel 双架构) - 解压得到 乐府.app,拖进 Applications
- 首次打开:右键 → 打开(绕过 Gatekeeper,ad-hoc 签名)
- 跟着 App 内「指南」页走:一键装 BlackHole → 建多输出设备「乐府 通道」(30 秒,一次生效)→ 状态变绿 → 开始采诗
🖥 系统要求
- macOS 13.0 或更高
- 汽水音乐 Mac 版(内录对象)
- BlackHole 2ch 虚拟声卡(App 内一键下载安装)
- 无需 Homebrew,无需 Xcode——MP3 编码器(LAME)已内置
🏗 工作原理
汽水音乐(正常放歌)
│
▼
「乐府 通道」多输出设备
├──► BlackHole 2ch(虚拟声卡)──► 乐府从这里录
└──► Mac 扬声器 ──────────────► 你照常听
🔍 关键词
macOS 内录归档 · 汽水音乐 Mac 按歌保存 MP3 · 自动裁曲 · LRC 同步歌词下载 · BlackHole 录音 · CoreAudio 音频采集 · SwiftUI 开源音乐工具 · LAME 320kbps · ID3 封面标签 · MIT 开源