Skip to content

Run Shelf 1.6.0

Latest

Choose a tag to compare

@RuochenLyu RuochenLyu released this 25 Oct 03:51
· 2 commits to main since this release

Run Shelf 1.6.0 增加排队补跑、运行优先级和任意时长超时,适合需要串行跑满长时间窗口的任务。

主要变化:

  • 「上次未结束」新增「排队补跑」:到点时上一次还在运行,不再记为跳过,而是等它结束后立即补跑一次;期间多次触发合并为一次。手动运行不排队。
  • 新增「优先级」:标准 / 后台。后台任务在电脑繁忙时让出 CPU,子进程一并继承。
  • 超时预设扩展到 12 小时,并支持自定义小时和分钟;不在预设里的超时值不再被误显示为「不限制」。
  • 脚本运行时可读取 RUNSHELF_TASK_ID、RUNSHELF_RUN_ID;设置了超时的任务还会得到 RUNSHELF_TIMEOUT_AT(ISO 8601 截止时间),可据此提前收尾。
  • CLI / TaskSpec 新增 concurrency(skip / queue / allow)和 priority(standard / background)字段。

稳定性修复:

  • 定时任务改由独立的运行宿主进程监管。调度进程崩溃、被 launchd 重启或升级重新注册时,正在运行的脚本不再变成孤儿或被误标为失效,结果照常记录。
  • 失败通知改为写入通知收件箱、由 App 投递。此前调度进程在任务失败或超时时发通知会直接崩溃,连带中断其他长任务;App 未运行时通知会在下次打开后补发(保留 24 小时)。
  • runshelf run cancel 在脚本尚未启动时只记录取消请求,不再误杀监管进程。

行为变化:

  • 后台调度进程改为交互级进程类型。此前由调度器启动的所有任务都被系统压到低优先级,现在默认与前台应用同等获得 CPU;需要让出资源的任务请设为「后台」。
  • 用 RUN_SHELF_APP_SUPPORT_DIR 运行 App 时,不再注册、注销或修复后台调度,开发预览不会影响已安装的正式版。

校验:

  • scripts/check.sh 通过。
  • 使用隔离任务目录完成运行配置区的实机 UI 检查。
  • App 与发布产物通过签名、公证、staple 和完整性校验。