重点功能
- 新增 “实时编码 (Beta)”。
- 启用后,录制过程中会直接编码音频,可大幅减少临时文件大小,并缩短录制结束后的后处理时间。
- 适用于通话录音、语音备忘录和系统音频录制等实时录制链路。
- 由于编码工作会前移到录制期间,可能增加 CPU 占用和电量消耗。
- 使用实时编码录制时不会保留可用于恢复的原始临时音频;如果录制被异常中断,恢复难度可能更高,部分情况下无法恢复。
- “混音器与合并器” 选项卡更名为 “后处理与输出”。
- 新名称更准确地覆盖混音、合并、输出格式、音质和实时编码等录制后处理相关设置。
- 扩展 “声级计” 选项的适用范围。
- 该选项现在也会驱动悬浮球 “录制中” 面板的背景波形动态效果。
- 折叠状态下的声级条与展开面板中的实时波形表现保持一致。
网络存储与云归档
- 改进 “智能云归档”。
- 针对 “后台 App 刷新” 难以触发或触发不稳定的使用场景,新增 App 前台机会补偿机制。
- 补偿任务会避开低电量、设备过热和刚结束录音等不适合归档的时机,并与原有后台归档任务互斥执行。
- 新增可恢复的暂存流程,降低归档过程中 App 退出、切换前后台或系统中断造成重复导出和半成品目录的概率。
- “执行完全同步” 现在也会手动覆盖归档当月录音。
- 手动完全同步会处理缺失的历史月份,并额外生成当前月快照。
- 同月再次执行完全同步时,会覆盖当前月快照;历史月份的标准归档目录仍不会被覆盖。
- 打开 “网络存储” 选项卡时会自动触发诊断。
- 如果当前提供商未配置、令牌失效、远端目录缺失、需要重新同步,或上次同步失败,应用会直接展示对应的配置、合并、重试或日志入口。
- “网络存储” → “WebDAV” 配置页新增建议的服务提供商。
- 在中文环境下提供 123 云盘和坚果云的快捷入口,并可自动填入对应的 WebDAV 服务器地址。
- 更新用于 “网络存储” 功能的
rclone套件。- 改进部分云盘后端的兼容性,包括 iCloud Drive 相关连接场景。
界面与体验
- 优化悬浮球 “录制中” 面板。
- 改进实时波形动画、面板布局和折叠状态的声级反馈。
- 减少状态切换时的视觉跳动,使录制中的反馈更平滑。
- 录音列表会标识使用 “实时编码” 方式生成的录音。
- 当录音无法按传统临时文件恢复路径处理时,界面会给出更明确的提示和关闭实时编码的入口。
- 完善 “实时编码” 相关本地化。
- 补充 Beta 标识、设置说明、录音列表提示和异常中断说明。
快捷指令与自动化
- 重构 App Intent 信息查询动作。
- 新增 “获取录制信息” 和 “获取通话信息”,以单个聚合对象返回当前或最近一次录制、通话的状态、时长、路径、通话方向、通话类型等信息。
- 通话状态、通话方向、通话类型、录制类型、录制来源和会话保存点等字段改为枚举值,减少文本状态值带来的歧义。
- 旧版 “获取录音持续时间”、“获取录音路径”、“获取录音状态”、“获取通话时长” 和 “获取通话状态” 保留兼容,但移动到对应的 “经典” 分类。
- 合并多组快捷指令动作。
- 新增 “控制录音”,统一开始、停止、暂停、继续和切换录音,并支持按录制类型控制。
- 新增 “控制通话静音”、“控制悬浮球”、“控制实时字幕”、“控制屏幕录制” 和 “处理来电”,将原有打开、关闭、切换、静音、取消静音、接听和拒接等成组动作整理为内联参数。
- 旧版单一动作移动到 “录制(经典)”、“通话自动化(经典)”、“悬浮球(经典)”、“实时字幕(经典)” 和 “系统录制(经典)” 等分类。
- 扩展通话自动化动作。
- 新增 “通话自动化” 分类,并将 “播放通话音频”、“播报通话语音” 和 “打断通话播放” 归入该分类。
- “播放通话音频” 和 “播报通话语音” 新增是否等待播放完成的选项;无效或不支持的音频文件会直接返回可读错误。
- “播报通话语音” 等待播放完成时的最长等待时间提升至 60 秒。
- 新增 “等待通话事件”,可等待来电、拨出、接通或结束,并在命中时返回通话信息。
- 新增 “获取服务信息” 和 “获取屏幕录制信息”。
- “获取服务信息” 返回后台服务运行状态;旧版 “检查守护进程” 移入 “实用工具(经典)”。
- “获取屏幕录制信息” 返回系统录制状态对象,便于在快捷指令中组合判断。
稳定性与维护
- TrollRecorder JB 安装完成后会自动启动后台服务。
- 安装或更新后无需手动触发后台服务启动,录音与同步相关服务能更快进入可用状态。
- 改进连接到日志框架的方式。
- CocoaLumberjack 现在以动态框架方式接入,减少链接和构建环境差异带来的问题。
- 加固实时录制链路。
- 改进实时样本读取、实时混音矩阵、通话混音、系统音频录制和语音备忘录录制流程。
- 修复语音备忘录实时录制链路中的内存释放问题。
- 改进快捷指令、悬浮球、实时字幕和录音进程相关 XPC 客户端的连接生命周期处理。
- 降低断线、服务重启和异步回调过程中出现竞态、重复清理或对象循环引用的风险。
- 整理 App Intent 源文件和共享类型。
- 将多个 Intent 拆分到独立文件,并把实体、枚举和解析逻辑集中到共享分组,便于后续维护。
- 清理并标准化本地化资源。
- 补齐 App Intent 标题、描述、内联参数摘要、枚举名称和布尔返回值说明的本地化。
- 清理冗余
.strings条目,统一.stringsdict格式,并补齐缺失的翻译注释。
- 改进通话检测和测试环境兼容性。
- 优化通话探测回退逻辑。
- 修复模拟器环境下通话挂断、语音备忘录音频会话等调试和验证场景的问题。
- 更新构建工具链和相关工程配置,提升持续集成与本地构建稳定性。
Highlights
- Added “Real-time Encoding (Beta)”.
- When enabled, audio is encoded directly during recording, greatly reducing temporary file size and post-processing time after recording stops.
- The real-time recording pipeline covers call recording, voice memos, and system audio capture.
- Because encoding work now happens while recording, this option may increase CPU usage and battery drain.
- Real-time encoded recordings do not keep raw temporary audio for recovery. If a recording is interrupted unexpectedly, recovery may be harder and may not be possible in some cases.
- Renamed the “Mixer & Combiner” tab to “Post-processing & Output”.
- The new name better covers mixing, combining, output format, quality, and real-time encoding settings.
- Expanded the “Sound Level Meter” option.
- It now also drives the animated background waveform in the floating ball’s “Recording” panel.
- The folded level bar and expanded real-time waveform now follow the same metering setting.
Network Storage and Cloud Archive
- Improved “Smart Cloud Archive”.
- Added a foreground compensation path for situations where Background App Refresh is difficult to trigger or unreliable.
- Compensation runs avoid unsuitable moments such as Low Power Mode, high thermal pressure, and immediately after recording stops, and they coordinate with the existing background archive worker.
- Added recoverable staging to reduce repeated exports and incomplete archive directories if the app exits, moves between foreground and background, or is interrupted by the system.
- “Perform Full Synchronization” now also manually covers recordings from the current archive month.
- Manual full sync processes missing historical months and additionally creates a snapshot for the current month.
- Running full sync again in the same month overwrites the current-month snapshot. Standard archive directories for historical months are still not overwritten.
- Opening the “Network Storage” tab now automatically runs diagnosis.
- If the selected provider is not configured, has an expired token, is missing the remote directory, requires resync, or failed last sync, the app now opens the matching configuration, merge, retry, or log action directly.
- Added suggested providers to “Network Storage” → “WebDAV”.
- In Chinese locales, 123 Cloud Drive and Nutstore are offered as shortcuts, with their WebDAV server addresses filled automatically.
- Updated the
rclonebundle used by “Network Storage”.- Improves compatibility with selected cloud storage backends, including iDrive-related connection scenarios.
Interface and Experience
- Refined the floating ball “Recording” panel.
- Improved real-time waveform animation, panel layout, and folded-state level feedback.
- Reduced visual jumps during state transitions for smoother recording feedback.
- Recordings created with “Real-time Encoding” are now marked in the recording list.
- When a recording cannot use the traditional temporary-file recovery path, the interface now provides clearer guidance and an entry to turn off real-time encoding.
- Completed localization updates for “Real-time Encoding”.
- Added the Beta badge, setting descriptions, recording list guidance, and interruption recovery messages.
Shortcuts and Automation
- Refactored App Intent information actions.
- Added “Get Recording Info” and “Get Call Info” to return recording and call state, duration, paths, call direction, call type, and related details as single objects for the current or latest session.
- Call state, call direction, call type, recording type, recording source, and session savepoint are now exposed as enums instead of ambiguous raw text values.
- Legacy “Get Recording Duration”, “Get Recording Paths”, “Get Recording Status”, “Get Call Duration”, and “Get Call Status” actions remain compatible, but now live in matching “Legacy” categories.
- Consolidated grouped Shortcut actions.
- Added “Control Recording” to start, stop, pause, resume, or toggle recording, with optional recording-type selection.
- Added “Control Call Muting”, “Control Hoverball”, “Control Live Captions”, “Control Screen Recording”, and “Handle Incoming Calls”, using inline parameters for open, close, toggle, mute, unmute, accept, and reject operations.
- Older single-purpose actions were moved into “Record (Legacy)”, “Call Automation (Legacy)”, “Hoverball (Legacy)”, “Live Captions (Legacy)”, and “System Record (Legacy)” categories.
- Expanded call automation.
- Added the “Call Automation” category and moved “Play Call Audio”, “Speak Call Voice-Over”, and “Interrupt Uplink Playback” into it.
- “Play Call Audio” and “Speak Call Voice-Over” now support choosing whether to wait until playback finishes; invalid or unsupported audio files now throw a readable error.
- “Speak Call Voice-Over” can now wait up to 60 seconds for playback to finish.
- Added “Wait for Call Event” for incoming, outgoing, connected, and ended call events, returning call information when matched.
- Added “Get Service Info” and “Get Screen Recording Info”.
- “Get Service Info” returns daemon status information, while the legacy daemon check moved to “Utility (Legacy)”.
- “Get Screen Recording Info” returns system recording state as an object for Shortcut conditions.
Reliability and Maintenance
- TrollRecorder JB now starts the background service automatically after installation.
- After installing or updating, recording and sync-related services can become available without a manual service start.
- Improved the logging framework integration.
- CocoaLumberjack is now linked as a dynamic framework, reducing issues caused by link-time and build-environment differences.
- Hardened the real-time recording pipeline.
- Improved real-time sample reads, audio matrix mixing, call mixing, system audio recording, and voice memo recording.
- Fixed a memory release issue in the real-time voice memo recording path.
- Improved connection lifecycle handling for the App Intent, floating ball, live captions, and recorder-process XPC clients.
- Reduces the risk of races, duplicate cleanup, and retain cycles during disconnections, service restarts, and asynchronous callbacks.
- Reorganized App Intent source files and shared types.
- Split Intents into individual files and moved entities, enums, and parsing helpers into a shared group for easier maintenance.
- Cleaned up and standardized localization resources.
- Completed localization for App Intent titles, descriptions, inline parameter summaries, enum names, and Boolean return descriptions.
- Removed redundant
.stringsentries, normalized.stringsdictfiles, and filled missing translation comments.
- Improved call detection and test-environment compatibility.
- Refined call sniffer fallback behavior.
- Fixed simulator issues around call hangup handling and voice memo audio session setup.
- Updated the build toolchain and project configuration to improve CI and local build stability.