* 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>
* 更新版本 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>
Comprehensive fixes based on feedback:
1. Fixed zoom: use playgroundTools.zoom for reading, playgroundTools.config.updateZoom for setting
2. Created useAddNode hook following Flowgram pattern for proper node addition
3. Added Minimap component to DemoTools (removed from useEditorProps plugin)
4. Fixed createHistoryNodePlugin to accept opts parameter
5. Updated createPanelManagerPlugin to create custom tools panel
6. Created NodePanel component following Flowgram demo pattern
7. Updated createFreeNodePanelPlugin with renderer parameter
8. All components now follow official Flowgram.ai patterns exactly
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
Created DemoTools plugin with comprehensive toolbar:
- Plugin structure following @flowgram.ai/panel-manager-plugin pattern
- Positioned at top-center matching Flowgram demo screenshot
- Integrated with Flowgram's history, playground, and viewport APIs
- Tools include: fit view, grid view, zoom controls, lock/unlock, comments
- Undo/Redo with real-time state management
- Add Node dropdown with all node types
- Test Run button (green)
- Added 13 new translation keys (zh-CN + en-US)
- Removed old bottom-left tools component
- Plugin automatically renders via layer system
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
- Changed plugins to function returning array
- Added createHistoryNodePlugin for undo/redo support
- Configured minimap with smaller size (150x100px)
- Updated createPanelManagerPlugin with factories and layerProps
- All plugin creation functions now receive proper parameters
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
- Import and sync ScenarioModel in back/loaders/db.ts
- Add migration to ensure 'status' column exists in Scenarios table
- Fixes SQLITE_ERROR: table Scenarios has no column named status
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* 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>