Commit Graph

2066 Commits

Author SHA1 Message Date
Martha Ramirez
7cdad5423f
Merge 50d6f3fb23 into 06fc58848b 2026-06-27 14:20:59 +08:00
Martha Ramirez
50d6f3fb23 过滤 delCron 中 scheduleStacks 的 null job
nodeSchedule.scheduleJob() 对无效 cron 表达式(如 "0 * /6 * * *",
空格分开了 * /6)会返回 null,原代码原样存入 scheduleStacks 数组。
delCron 取消时对 null 调 cancel() 抛出 UNKNOWN 错误,导致 gRPC
handler 中断、HTTP 端 cronService.remove() 跳过 setCrontab(),
crontab.list 残留已删任务的记录,导致订阅更新时 gen_list_repo()
误判脚本已存在、不再重新注册。

过滤 null 并对每个 cancel 调用加 try/catch 容错。
2026-06-27 14:03:52 +08:00
Martha Ramirez
fc355bc86f 修复删除定时任务后 crontab.list 未同步导致订阅更新无法重新注册脚本
crontab.list 作为数据库的文件镜像,其同步 setCrontab() 此前串行在尽力而为
的 gRPC addCron/delCron 调用之后:当调度 worker 重启等导致 gRPC 短暂不可用、
addCron/delCron reject 时,setCrontab() 会被跳过,crontab.list 与数据库脱节。
而 shell/update.sh 的 gen_list_repo() 将 crontab.list 作为"已有任务"真源,
于是订阅更新误判脚本已存在、跳过新增注册(前端再也看不到这些脚本)。

将 create/update/remove/disabled/enabled/autosave_crontab 中的 gRPC 调用改为
尽力而为(try/catch + 告警日志),保证 setCrontab() 总是执行;autosave_crontab
额外将 setCrontab 提前到 addCron 之前,确保启动/调度器重启时文件总是同步,
并避免 gRPC 失败导致应用启动崩溃。

调度器内存中的任务注册与 crontab.list/系统 crontab 同步是两个相互独立的关注点:
gRPC 失败时内存调度可能在调度器重启后由 autosave_crontab 重新注册,但文件同步
不应因此被阻断。修复后既有的 crontab.list 残留会在下次重启或任意增删改时自愈。

可能与 #2422(订阅更新重复添加任务)同根因。
2026-06-27 11:34:21 +08:00
whyour
06fc58848b 更新版本 v2.21.0 2026-06-26 15:31:31 +08:00
whyour
5fbff0e1c8 修复 openapi 鉴权提示 2026-06-26 15:31:25 +08:00
whyour
3044f63f03 修复国际化文案 2026-06-21 23:53:32 +08:00
whyour
369dd13212 修复 deps 目录依赖逻辑 2026-06-21 12:12:29 +08:00
whyour
b5a5fb3be6 shell 增加国际化 2026-06-14 21:19:06 +08:00
whyour
0ee0b83207 延迟增加运行时间提示 2026-06-14 15:21:29 +08:00
whyour
5f2d5bb24a 修复 esm 依赖查询路径 2026-06-13 21:08:25 +08:00
whyour
949d956aef grpc 服务增加证书校验 2026-06-13 20:16:49 +08:00
whyour
96b4c90398 增加 sudo 命令判断 2026-06-13 00:53:41 +08:00
whyour
7d8feadc78 修复获取定时任务参数 2026-06-13 00:09:31 +08:00
whyour
d1dfde3ca9 修复配置文件路径可能越权 2026-06-12 23:45:40 +08:00
whyour
6796068523 更新国际化文案 2026-06-11 23:18:45 +08:00
whyour
05f8fd3805 接口提示信息国际化 2026-06-11 02:19:04 +08:00
whyour
946731ac8d 增加运行实例 2026-06-10 01:53:10 +08:00
whyour
617cf7e5b4 更新 stop emoji 2026-06-09 00:48:03 +08:00
whyour
662adc0f9c 修复 dashboard title 2026-06-07 23:45:43 +08:00
whyour
23b41893a3 修复获取任务退出码 2026-06-07 23:28:21 +08:00
whyour
34d4526413 修复 work_dir 目录判断 2026-06-07 22:03:48 +08:00
whyour
ad92e0c2c0 修复任务统计日志 2026-06-07 15:15:12 +08:00
whyour
c14390cf41 修复 work_dir 验证 2026-06-07 13:56:06 +08:00
whyour
fd6b4e4cde 定时任务增加 work_dir 设置 2026-06-07 13:19:01 +08:00
whyour
865e3035b9 开机运行任务同时开始运行 2026-06-01 23:24:10 +08:00
whyour
d8d30c3619 修复 initFile 2026-06-01 19:07:15 +08:00
whyour
4e803df51e 修复内部服务 ip 地址 2026-06-01 18:28:54 +08:00
whyour
e8ac195c96 增加任务统计 2026-06-01 18:20:18 +08:00
whyour
c0b7527148 修复路径穿越 2026-06-01 13:49:32 +08:00
whyour
ca347c5854 修复非 root 用户更新时区和 linux 配置 2026-05-31 16:48:13 +08:00
whyour
4bee3fbdf4 修复 getCronById api status 2026-05-31 15:53:24 +08:00
whyour
b6537e27ef update mirror action 2026-05-31 15:04:10 +08:00
Copilot
0e5b8bef4b
Fix HITOKOTO parameter boolean/string type handling (#2918)
* Initial plan

* Fix HITOKOTO parameter type mismatch in notify scripts

Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>

* Refactor JavaScript HITOKOTO check for consistency with Python

Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
2026-05-31 14:26:57 +08:00
Copilot
e06c3571a8
Fix undefined error in serverNotify when Server酱 returns error responses (#2917)
* Initial plan

* Fix: Replace data.data.errno with data.code to prevent undefined error

Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
2026-05-31 14:25:51 +08:00
whyour
c2eac8b8fd 移除未使用配置 2026-05-31 00:36:54 +08:00
jmclulu
3aab1233bb
fix: correct typos in source code and locales (#3003)
- Fix Countrys -> Countries in comment
- Fix Scrolldown -> ScrollDown in variable name
- Fix completeTowFactor -> completeTwoFactor (3x)
- Fix deactiveTowFactor -> deactivateTwoFactor (3x)
- Fix activeOrDeactiveTwoFactor -> activeOrDeactivateTwoFactor
- Fix API route /two-factor/deactive -> /two-factor/deactivate
- Fix elment -> element in function param
- Fix synolog -> synology in comment
- Fix Chinese comment 制定 -> 指定
- Fix swapped BARK English translations on lines 360-361
2026-05-31 00:32:04 +08:00
whyour
2fe9470ff0 fix: gRPC extra_schedules 为空时序列化报错 not iterable 2026-05-31 00:14:22 +08:00
whyour
abad29cbf9 修复非 root debian dockerfile 2026-05-30 23:55:57 +08:00
whyour
84d730d510
统一 Alpine/Debian 分支,QL_SCHEDULER 参数化调度
* 修改获取示例文件 api path

* 增加 debian-slim 基础镜像

* 修复 debian apt 命令,支持 qinglong 命令

* 更新 npm 版本 0.7.7

* 更新 npm v0.8.4

* 修复linux依赖检测 (#2082)

* 修复拉取私有仓库

* 修复 shell check_server

* 修复 qinglong 命令

* 更新 npm 版本 v0.13.2

* 增加 debian 开发版本

* 修改切换 linux 镜像源

* 修复 qinglong 命令

* 移除 qinglong 命令 npm 默认镜像源

* 修复 workflow

* 更新 npm 版本 v0.14.5

* 增加 npx 命令

* 更新 workflow action 版本

* 更新 npm 版本 v0.16.0

* 修复 linux 镜像源

* 更新 npm 版本 v0.17.0

* 更新 npm 版本 v0.18.0

* 修改 npm 安装启动命令

* 更新 npm 版本 v0.19.9

* 修复 debian netcat 包名

* 更新 npm 版本 v0.20.4

* 安装 linux 依赖自动识别 alpine 和 debian

* 修改 apt 命令

* 更新 npm 版本 v0.21.2

* 修改 ts 文件执行依赖

* npm 启动增加 reload 逻辑

* 更新 npm 版本 v2.17.8

* 修复 qinglong 命令

* 更新 npm 版本 v2.17.9

* 更新 npm 版本 v2.17.10

* 更新 npm 版本 v2.17.11

* 修改 debian 版本为 12 bookworm

* 更新 npm 版本 v2.17.12

* 修改本地服务启动提示

* 更新 npm 版本 v2.17.13

* 写入文件增加文件锁

* 修复系统安装依赖提示

* 更新 npm 版本 v2.18.2-6

* 更新 nodejs 版本

* 更新 npm 版本 v2.18.3-3

* 修复 command 变量

* 移除自动清除 deb

* 修复 npm 启动脚本

* 修复发布 npm包依赖文件

* 修改 linux 启动文件逻辑

* 更新 npm 版本 v2.19.0-10

* 修复 apt 命令

* 更新 npm 版本 v2.19.1-0

* 更新 npm 版本 v2.19.2-2

* 增加 packageManager

* 增加用户 qinglong

* 更新 pipeline

* 移除 init_nginx

* 更新 npm 版本 v2.20.0

* 更新 npm 版本 2.20.1

* 更新 npm 版本 2.20.2

* fix: 修复非 root 用户启动

* chore: 合并 debian 和 alpine 逻辑

---------

Co-authored-by: dream10201 <xiuxiu10201@gmail.com>
2026-05-30 18:03:51 +08:00
whyour
57d58c871e fix: isolate task node dependencies 2026-05-24 01:40:07 +08:00
whyour
bb6d436c19 fix: run scripts from their own directory 2026-05-24 00:15:24 +08:00
whyour
8bc0906949 feat: add environment variable labels 2026-05-23 23:21:38 +08:00
Copilot
7a8917f8e4
Fix CodeMirror "multiple instances of @codemirror/state" crash on page navigation (#2969)
* Initial plan

* Fix CodeMirror multiple instances error by pinning to single versions

Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
2026-05-23 20:48:10 +08:00
whyour
66f9457be8 ci: replace hub-mirror-action with direct git push for Gitee sync
Replace Yikun/hub-mirror-action with manual git push for Gitee mirrors. The action HTTPS API call to gitee.com timed out (60s). Use set +e with explicit notice/warning status. Also add .deepseek/ to .gitignore.
2026-05-18 01:05:46 +08:00
whyour
0c5e3b5d04 ci: update workflow actions 2026-05-18 00:12:22 +08:00
whyour
400e4770de 修复环境变量 position 数据类型可能异常 2026-05-17 23:53:43 +08:00
whyour
40d4de9017 增加 localhost 检测 2026-05-17 23:43:09 +08:00
whyour
3464c4da61 fix IPv6 connectivity 2026-05-06 01:29:01 +08:00
Max
1315578878
支持自定义接收邮箱地址 (#2973)
* 支持自定义接收邮箱地址

* 新增支持多个接收邮箱,同步到node和系统内置版本
2026-05-06 00:34:26 +08:00
TengDream
a1ae08da58
fix: create root .tmp directory on init for data export (#2993)
The data export feature (system backup) writes data.tgz to
`config.tmpPath` which resolves to `<rootPath>/.tmp/`. However,
`initFile.ts` only created `<dataPath>/log/.tmp/` (used for crontab
list temp files), never the root-level `.tmp/` directory.

In Docker deployments, `shell/share.sh`'s `fix_config()` creates
`$dir_root/.tmp` during shell initialization, but local/non-Docker
deployments that start the Node service directly skip the shell init,
causing a 404 ENOENT error when attempting to export/backup data.

Add `rootTmpPath` (`<rootPath>/.tmp/`) to the directories array in
`initFile.ts` so it is created during Node service startup regardless
of deployment method.
2026-05-06 00:32:29 +08:00