* feat(cli): add unified Commander CLI for QingLong 2.x
* fix(cli): publish via npm and address security review feedback
* ci(cli): package npm artifacts and remove evaluation collateral
* test(cli): use a fixed shell fixture for log retention
* refactor(cli): separate remote npm client from panel tools
* feat(cli): cover active panel OpenAPI resources
* docs(cli): unify authentication and skill guidance
* refactor(cli): isolate internal commands and generate Commander help
* refactor(cli): organize remote and internal modules by responsibility
* ci(cli): publish verified npm archives from master
* fix(cli): publish under the whyour npm scope
* ci: use npm trusted publishing for both packages
* docs: introduce the published CLI on the project homepage
* fix(cli): preserve server log truncation and correct login hints
* fix(cli): accept dashboard record request bodies
* fix(cli): preserve stdin for local task execution
* fix(cli): resolve task executables after changing directory
* fix(cli): preserve shell function tasks and sanitize test failures
* fix(cli): preserve shell hook state and resolve workdir after hooks
* fix(cli): preserve cleanup across shared shell task timeouts
* fix(cli): isolate shell control descriptors and reap timed-out descendants
* perf: load HTTP dependencies only in the HTTP worker
* docs: record 30-minute idle resource comparison
* perf: isolate database initialization from the cluster primary
* docs: record isolated database startup resource comparison
* perf: avoid an extra shell child in Docker health probes
* perf: load notification dependencies only when needed
* perf: retain queue cleanup after notification loading comparison
* fix: stop page polling after unmount and avoid duplicate fetches
* perf: share WebSocket session polling across connections
* docs: measure real WebSocket container CPU and memory
* perf: reuse JWT validation within each WebSocket session check
* perf: bound login IP lookup allocations with an address cache
* refactor: limit resource optimization PR to three core changes
* docs: benchmark the three core optimizations against develop
* chore: remove documentation and benchmark artifacts from PR
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.
* 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>