* 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>
* 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>
* 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>
* 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>