feat(scheduled-tasks): add cron syntax support to task editor dialog (#1593)

Adds a 'Cron' schedule type option to the scheduled task editor, allowing
users to create and edit cron-based schedules through the UI.

- Add cron expression input with inline validation (cron-parser)
- Show next 4 upcoming run times as a preview
- Provide clickable example chips (every 5min, hourly, Monday 9am, etc.)
- Preserve cron expressions when editing existing cron tasks
- Add cron.ts utility module for validation and next-run computation
- Add i18n keys across all 8 locale files

Closes #1586

Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
This commit is contained in:
Tom Rochette
2026-06-16 11:03:42 +03:00
committed by GitHub
co-authored by Bohdan Triapitsyn
parent e904abda04
commit e402cd75f5
14 changed files with 341 additions and 18 deletions
+11
View File
@@ -141,6 +141,17 @@ export const dict = {
'sessions.scheduledTasks.editor.validation.atLeastOneTime': 'Ajoutez au moins une heure valide',
'sessions.scheduledTasks.editor.validation.atLeastOneWeekday': 'Sélectionnez au moins un jour de la semaine',
'sessions.scheduledTasks.editor.validation.timezoneRequired': 'Le fuseau horaire est requis',
'sessions.scheduledTasks.editor.validation.cronRequired': 'Une expression cron est requise',
'sessions.scheduledTasks.editor.validation.cronInvalid': 'Expression cron invalide',
'sessions.scheduledTasks.editor.cronExpression.label': 'Expression cron',
'sessions.scheduledTasks.editor.cronExpression.placeholder': '*/5 * * * *',
'sessions.scheduledTasks.editor.cronExpression.nextRuns': 'Prochaines exécutions',
'sessions.scheduledTasks.editor.cronExpression.examples': 'Exemples',
'sessions.scheduledTasks.editor.cronExpression.examples.every5min': 'Toutes les 5 minutes',
'sessions.scheduledTasks.editor.cronExpression.examples.everyHour': 'Toutes les heures',
'sessions.scheduledTasks.editor.cronExpression.examples.monday9am': 'Chaque lundi à 9 h',
'sessions.scheduledTasks.editor.cronExpression.examples.9am5pm': '9 h et 17 h chaque jour',
'sessions.scheduledTasks.editor.cronExpression.examples.firstOfMonth': 'Premier jour de chaque mois',
'multirun.launcher.title': 'Nouveau multi-run',
'multirun.launcher.actions.closeEsc': 'Fermer (Échap)',
'multirun.launcher.actions.cancel': 'Annuler',