whyour
c39f4ef846
chore: 更新 multer,解决 cve 漏洞
2026-03-07 21:31:24 +08:00
whyour
275d8af4e2
更新版本 v2.20.2
v2.20.2
2026-03-01 20:35:25 +08:00
whyour
544c432f49
修复 PATH 环境变量
2026-03-01 20:35:19 +08:00
Copilot
6bec52dca1
Fix /open/user/init auth bypass allowing credential reset on initialized systems ( #2941 )
...
* Initial plan
* fix: add /open/user/init paths to init guard to prevent auth bypass
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 >
Co-authored-by: whyour <imwhyour@gmail.com >
v2.20.1
2026-03-01 18:02:21 +08:00
rockymelody
ce599d306f
青龙面板鉴权绕过漏洞已修复 ( #2935 )
...
已实施的安全加固措施
第一层防御:启用Express严格路由(第17-18行)
app.set('case sensitive routing', true); // 路由大小写敏感
app.set('strict routing', true); // 严格路由匹配
第二层防御:路径标准化检查中间件(第23-37行)
app.use((req, res, next) => {
const originalPath = req.path;
const normalizedPath = originalPath.toLowerCase();
// 检测并拦截大小写混淆攻击
if (originalPath !== normalizedPath &&
(normalizedPath.startsWith('/api/') || normalizedPath.startsWith('/open/'))) {
return res.status(400).json({
code: 400,
message: 'Invalid path format'
});
}
next();
});
作用:主动检测并拒绝含有大小写变体的恶意请求
第三层防御:JWT中间件正则表达式修复(第59行)
// 修复前:
path: [...config.apiWhiteList, /^\/(?!api\/).*/],
// 修复后:添加大小写不敏感标志 'i'
path: [...config.apiWhiteList, /^(\/(?!api\/).*)$/i],
作用:防御正则匹配层面的绕过
第四层防御:自定义Token中间件路径标准化(第74-87行)
// 修复前:
if (!['/open/', '/api/'].some((x) => req.path.startsWith(x))) {
// 修复后:统一转小写比较
const pathLower = req.path.toLowerCase();
if (!['/open/', '/api/'].some((x) => pathLower.startsWith(x))) {
}
作用:确保Token验证逻辑对所有路径变体生效
第五层防御:初始化接口路径检查修复(第122-123行)
// 修复前:
if (!['/api/user/init', '/api/user/notification/init'].includes(req.path)) {
// 修复后:
const pathLower = req.path.toLowerCase();
if (!['/api/user/init', '/api/user/notification/init'].includes(pathLower)) {
2026-03-01 17:44:03 +08:00
whyour
d53437d169
更新 2.20.1
2025-12-26 21:17:30 +08:00
whyour
d526602d19
修复运行中任务停止操作
2025-12-26 01:07:08 +08:00
whyour
91b44914f6
修复环境变量排序
2025-12-26 00:41:32 +08:00
whyour
4f6c93cc1c
更新 workflow
2025-12-24 01:03:21 +08:00
whyour
e326d89571
修复 apiWhiteList 路径
2025-12-23 00:58:09 +08:00
whyour
5f0dafa010
修复 cron-parser import,websocket basepath
2025-12-23 00:28:16 +08:00
Copilot
dc0b3f2eb2
Fix QlBaseUrl: use URL rewrite for base path support ( #2876 )
...
* Initial plan
* Add QlBaseUrl support to backend routes
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Fix whitelist check to use base-URL-aware paths
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Update websocket and frontend to support base URL
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Address code review feedback: fix JWT regex and path construction
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Fix path construction: use req.path directly for whitelist check
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Add clarifying comments and improve code readability
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Apply code review suggestions: improve clarity and simplify logic
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Simplify baseUrl implementation using URL rewrite
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 >
2025-12-22 23:44:29 +08:00
Copilot
3db716763d
Fix cron-parser v5 bundling incompatibility causing validation failures ( #2877 )
...
* Initial plan
* Fix: Use default import for cron-parser to ensure browser compatibility
Changed from named export `{ CronExpressionParser }` to default export `cronParser` and access `CronExpressionParser` through it. This ensures compatibility with webpack/UmiJS bundling for browser environments while maintaining backend functionality.
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 >
2025-12-22 23:43:54 +08:00
Copilot
fae226745e
Add missing larkSecret field to gRPC NotificationInfo proto ( #2880 )
...
* Initial plan
* Add larkSecret field to NotificationInfo proto definition
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 >
2025-12-22 23:38:42 +08:00
Copilot
9330650163
Fix TG_PROXY_AUTH concatenation in notify.js - add missing @ separator ( #2882 )
...
* Initial plan
* Fix TG_PROXY_AUTH handling in notify.js to match notify.py logic
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Apply prettier formatting to notify.js
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 >
2025-12-22 23:05:06 +08:00
Copilot
073de76a4a
Fix validation error when saving scripts in debug window (v2.20.0 regression) ( #2862 )
...
* 更新版本 2.20.0
* Initial plan
* Fix validation error when saving scripts by allowing unknown fields in POST /scripts
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Revert version.yaml to 2.19.2 - should not include version bump in bug fix PR
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
---------
Co-authored-by: whyour <imwhyour@gmail.com >
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
2025-12-22 22:43:48 +08:00
Copilot
c61d1aa828
Fix enum value 0 causing type filter to fail for NodeJS dependencies ( #2869 )
...
* Initial plan
* Fix: Prevent Python3 dependencies from appearing in NodeJs tab
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 >
2025-12-15 18:21:14 +08:00
whyour
33fa3aca99
更新版本 2.20.0
v2.20.0
2025-12-11 01:53:17 +08:00
whyour
c772fc9527
修复脚本调试保存文件错误
2025-12-11 01:52:47 +08:00
whyour
c5d2aa3aba
更新 pipeline
2025-12-10 00:34:35 +08:00
Copilot
02a05f06bd
Add signature verification support for Feishu bot notifications ( #2856 )
...
* Initial plan
* Add signature verification support for Feishu bot notifications
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Add clarifying comments about Feishu signature algorithm
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Add i18n translations for larkSecret configuration field
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 >
2025-11-27 01:10:04 +08:00
whyour
3b0f55caf4
修复任务实例默认值
2025-11-23 12:45:02 +08:00
Copilot
6a3dd4f83c
Fix null log_name issue by omitting it from shell command when not set ( #2849 )
...
* Initial plan
* Fix null log_name handling in runSingle method
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Update cron.log_name before makeCommand to avoid passing null to shell
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Fix: Only pass log_name to shell when it has a value
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Fix uniqPath calculation in runSingle for null log_name
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Improve comment clarity in makeCommand
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Refactor: Move no_tee and ID to initial commandVariable declaration
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Refactor: Simplify uniqPath ternary expression
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 >
2025-11-22 12:06:01 +08:00
whyour
177cd3de81
更新 docker 日志
2025-11-22 01:05:28 +08:00
Copilot
d473c3ae88
Fix SSH global private key matching before subscription-specific keys ( #2845 )
...
* Initial plan
* Fix SSH global private key loading order by using zzz_ prefix
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Use tilde (~) prefix for global SSH config to ensure it loads last
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 >
2025-11-21 01:53:58 +08:00
Copilot
ee2fbe5335
Add global SSH key configuration in system settings ( #2840 )
...
* Initial plan
* Add backend support for global SSH keys
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Add frontend UI for global SSH keys management
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Add SshKeyModel to database initialization
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Add SSH config generation for global SSH keys
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Add internationalization support for SSH key management UI
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Simplify to single global SSH key in system settings
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 >
2025-11-20 10:09:01 +08:00
Copilot
48abf44ceb
feat: Support multiple concurrent login sessions per platform ( #2816 )
...
* Initial plan
* Implement multi-device login support - allow multiple concurrent sessions
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Address code review feedback - extract constants and utility functions
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Add validation and logging improvements based on code review
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Revert unnecessary file changes - keep only multi-device login feature files
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 >
2025-11-19 00:18:29 +08:00
Copilot
03c7031a3c
Fix task duplication: add single/multi-instance support with UI configuration and stop all running instances ( #2837 )
...
* Initial plan
* Stop running tasks before starting new scheduled instance
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Add multi-instance support and fix stop to kill all running instances
- Add allow_multiple_instances field to Crontab model (default: 0 for single instance)
- Add validation for new field in commonCronSchema
- Add getAllPids and killAllTasks utility functions
- Update stop method to kill ALL running instances of a task
- Update runCron to respect allow_multiple_instances config
- Backward compatible: defaults to single instance mode
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Add UI support for allow_multiple_instances configuration
- Add allow_multiple_instances field to ICrontab interface
- Add instance mode selector in task creation/edit modal
- Add translations for instance mode in Chinese and English
- Default to single instance mode for backward compatibility
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Add allow_multiple_instances column migration and optimize db.ts
- Add allow_multiple_instances column to Crontabs table migration
- Refactor migration code to use data-driven approach
- Replace 11 individual try-catch blocks with single loop
- Improve code maintainability and readability
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 >
2025-11-19 00:10:27 +08:00
whyour
0e5de4a824
更新启动日志
2025-11-16 21:31:52 +08:00
whyour
af96bd98ac
修复系统提示
2025-11-16 21:26:14 +08:00
Copilot
08ef509e27
Optimize log file writes using stream pooling ( #2835 )
...
* Initial plan
* Implement LogStreamManager for optimized log writing
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Fix error handler in LogStreamManager to avoid race conditions
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 >
2025-11-16 21:11:10 +08:00
Copilot
fbeb4f4a6c
Fix PM2 startup failures on ARM routers with Node.js incompatibility ( #2828 )
...
* Initial plan
* Add fallback mechanism for PM2 startup failures on incompatible hardware
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 >
2025-11-16 20:29:32 +08:00
Copilot
eb09a417a1
Fix DNS resolution failures in Alpine containers by setting ndots:0 ( #2827 )
...
* Initial plan
* Fix DNS resolution issue in Alpine containers by adding ndots:0 option
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 >
2025-11-16 20:28:12 +08:00
Copilot
e84ddb6cfc
Fix environment variable copy reliability by validating clipboard operation ( #2833 )
...
* Initial plan
* Fix env variable copy issue by using onCopy callback
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 >
2025-11-16 18:23:45 +08:00
whyour
d01ec3b310
修复 parse cron
2025-11-15 19:09:07 +08:00
whyour
45fac29804
移除用户判断
2025-11-15 17:02:00 +08:00
whyour
72d4c8bfd4
修复 homedir 权限
2025-11-15 02:27:27 +08:00
Copilot
8f23c61fee
Add non-root Docker user support with automatic command setup ( #2830 )
...
* Initial plan
* Add non-root user guide and improve error messages
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Add PM2_HOME configuration to fix non-root user permission errors
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Fix PM2 socket error by using /tmp for PM2_HOME instead of mounted volume
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Document symlink permission limitation for non-root users
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Clarify that scheduled tasks auto-adapt to use full paths when symlinks unavailable
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Add error handling for symlink creation to prevent worker crashes
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Add practical solutions for non-root users to use ql and task commands
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Modify linkCommand to create symlinks in ~/bin for non-root users
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* 修复链接 task 命令
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
Co-authored-by: whyour <imwhyour@gmail.com >
2025-11-15 01:46:24 +08:00
whyour
e41eed81ae
移除说明文档
2025-11-14 23:23:01 +08:00
Copilot
58f5fe763f
Add cron task management to QLAPI ( #2826 )
...
* Initial plan
* Add cron management capabilities to QLAPI
- Added GetCrons, GetCronById, EnableCrons, DisableCrons, RunCrons to proto
- Implemented gRPC handlers for new cron operations
- Updated client.js to expose new methods to scripts
- Updated sample to demonstrate new API usage
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Add documentation for QLAPI cron management features
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Specify pnpm version 8.3.1 in package.json
Add packageManager field to enforce pnpm@8.3.1 as requested
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Revert pnpm-lock.yaml to original state
The lockfile was inadvertently updated during dependency installation
for proto generation. Reverting to maintain consistency with pnpm@8.3.1.
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Regenerate proto files with correct tool versions
Regenerated using protoc v3.17.3 and protoc-gen-ts_proto v2.6.1
to match the original project configuration.
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 >
2025-11-14 23:20:56 +08:00
Copilot
214241797d
Fix QlPort and QlGrpcPort environment variables ignored in host network mode and pm2 reload ( #2825 )
...
* Initial plan
* Fix host mode port configuration by using QlPort environment variable
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Fix GRPC_PORT conflict in host network mode
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Ensure BACK_PORT and GRPC_PORT survive pm2 reload with --update-env
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Move env.sh sourcing after fix_config to preserve more environment variables
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Refactor: Extract export_ql_envs function and move env.sh sourcing earlier
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Extract load_ql_envs function and reorder initialization in docker-entrypoint.sh and update.sh
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 >
2025-11-14 22:56:39 +08:00
whyour
aedd48c9c4
修改错误日志
2025-11-14 22:23:30 +08:00
Copilot
90ddf0fb57
Fix race condition preventing scheduled tasks from executing in clustered mode ( #2819 )
...
* Initial plan
* Fix race condition causing scheduled tasks not to run
Added synchronization to ensure gRPC worker is ready before HTTP worker starts. This prevents the race condition where autosave_crontab() tries to register cron jobs before the gRPC server is ready to accept them.
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Add timeout protection for gRPC worker initialization
Added 30-second timeout to prevent system hang if gRPC worker fails to start. This provides better error handling and prevents indefinite waiting.
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Refactor worker ready logic and improve restart handling
- Extracted waitForWorkerReady() method for better code reusability
- Improved worker restart logic to wait for gRPC worker readiness
- This addresses code review feedback for better maintainability
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Improve logging accuracy for worker restarts
- Fixed log messages to accurately reflect worker state
- Added proper logging after gRPC worker is confirmed ready
- Improved HTTP worker restart logging with PID
- Addresses code review feedback for better clarity
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Revert unnecessary pnpm-lock.yaml changes
The pnpm-lock.yaml was unintentionally updated when installing dependencies for testing. No package dependencies were actually changed - only existing code was modified in back/app.ts. Reverting to original state.
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Re-register cron jobs when gRPC worker restarts
When the gRPC worker restarts, the scheduled tasks need to be re-added to the new gRPC server instance. This fix:
1. Tracks the HTTP worker reference in the master process
2. Sends a 'reregister-crons' message to the HTTP worker after gRPC restarts
3. HTTP worker calls autosave_crontab() to re-register all cron jobs with the new gRPC server
This ensures scheduled tasks continue to work after a gRPC worker restart.
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 >
2025-11-12 00:59:22 +08:00
whyour
c9fc9b4b45
定时任务支持订阅筛选
2025-11-11 01:24:28 +08:00
whyour
8fdc69421c
修改定时任务支持的排序顺序
2025-11-11 01:02:36 +08:00
whyour
1deb264913
升级 cron-parser
2025-11-11 00:37:03 +08:00
Copilot
1f2fd8ac02
Fix URIError from malformed cookies causing white screen on load ( #2811 )
...
* Initial plan
* Fix decodeURIComponent error in cookie parsing by adding try-catch
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Add type annotation and logging to catch block per code review
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Fix TypeScript errors in deps.ts - remove unused path parameter
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Revert pnpm-lock.yaml to avoid unnecessary lockfile version upgrade
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 >
2025-11-09 21:53:06 +08:00
whyour
06aa07329f
修复日志目录逻辑
2025-11-09 21:42:45 +08:00
Copilot
4cb9f57479
环境变量支持置顶 ( #2822 )
...
* Initial plan
* Add pin to top feature for environment variables
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Format code with prettier
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Add database migration for isPinned column in Envs table
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Use snake_case naming (is_pinned) for database column
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 >
Co-authored-by: whyour <imwhyour@gmail.com >
2025-11-09 19:43:33 +08:00
Copilot
c369514741
定时任务支持自定义日志文件或者 /dev/null ( #2823 )
...
* Initial plan
* Add log_name field to enable custom log folder naming
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Add database migration for log_name column
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Add security validation to prevent path traversal attacks
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Apply prettier formatting to modified files
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Support absolute paths like /dev/null for log redirection
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com >
* Restrict absolute paths to log directory except /dev/null
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 >
2025-11-09 19:32:40 +08:00