What's Changed
Bug Fixes
- Crash fix: Resolved a rare SwiftData crash when opening a task detail view that contained references to deleted execution logs
- Scheduler stability: Tasks using "Stop after N times" no longer get prematurely disabled due to stale log count references
- Task termination: Scripts that ignore SIGTERM are now force-killed after a 3-second grace period so the scheduler slot isn't leaked
- Ghost live output: Real-time output chunks arriving after a task stopped no longer bleed into the next execution of the same task
- Accurate execution count: The "#N" badge now updates after every manual run, not just scheduled runs
Improved Error Handling
- Task editor, import/export, crontab import, and task delete/duplicate/toggle now show a clear alert when a save fails instead of silently swallowing the error
- Database backup no longer records a "last backup" timestamp when the pre-backup flush fails
- App update process asks for confirmation if the pre-update save fails so unsaved edits aren't dropped
Log Viewer UI
- Fixed #19: Long log output is no longer cut off — the inner fixed-height scroll has been removed so content flows naturally under the window's main scroll view
- Clean empty state when a task has no logs yet (centered instead of a split view with two empty panes)
更新内容
崩溃修复
- 闪退修复:打开含有已删除日志引用的任务详情时,SwiftData 断言触发的崩溃已修复
- 调度稳定性:使用"停止重复(N 次后)"的任务不会再因为幽灵日志计数而被提前禁用
- 脚本终止:忽略 SIGTERM 的脚本会在 3 秒后被 SIGKILL 强制终止,避免调度器 slot 泄漏
- 实时输出幽灵数据:任务结束后到达的实时输出片段不再串到下一次执行
- 执行次数准确:手动运行后左侧 "#N" 徽章也会同步更新(之前只有调度运行才会更新)
错误处理
- 编辑器保存、导入/导出、crontab 导入、任务删除/复制/启用切换失败时,不再静默吞错,会弹出明确的错误提示
- 数据库备份前刷盘失败时不再更新"最近备份时间"
- 升级更新前保存失败会询问用户是否继续,避免未保存的修改丢失
日志查看优化
- 修复 #19:长日志输出不再被截断 —— 去掉了内嵌的固定高度滚动,内容在窗口整体滚动条里自然铺开
- 任务没有日志时改为居中显示一个空状态,而不是分栏两边都空着
Full Changelog: v1.3.4...v1.3.5