Feature request for product/service
Cursor Web
Describe the request
Feature request for product/service
Cursor Web / Automations (also visible in the IDE Automations editor)
Describe the request
Cursor Automations support scheduled triggers via cron expressions (e.g. 0 9 * * 1-5). That is flexible, but raw cron is hard to read at a glance β especially for teammates who did not configure the automation.
Problem: In the Automations UI, users often see only the raw cron string. Interpreting it requires mental parsing of five fields (minute, hour, day-of-month, month, day-of-week). Common mistakes include misreading day-of-week (1 = Monday in standard cron) or assuming a timezone that is not shown.
Requested feature: Display a short, human-readable description next to (or below) the cron expression wherever a scheduled trigger is shown.
Examples:
| Cron expression | Human-readable label |
|---|---|
0 * * * * |
Every hour at minute 0 |
0 9 * * * |
Every day at 9:00 AM |
0 9 * * 1 |
Every Monday at 9:00 AM |
0 9 * * 1-5 |
At 9:00 AM, Monday through Friday |
30 14 1 * * |
At 2:30 PM, on day 1 of the month |
Where this should appear:
- Trigger editor β below the cron input / custom expression field, updating live as the user types
- Automation list & detail view β so you can scan schedules without opening each automation
- Run history (optional) β confirm when the automation is expected to fire next
Suggested UX:
Schedule
βββββββββββββββββββββββββββββββββββββββ
β 0 9 * * 1-5 β β editable cron field
βββββββββββββββββββββββββββββββββββββββ
Runs at 9:00 AM, Monday through Friday β human-readable helper text
For preset schedules (βEvery hourβ, βEvery dayβ, etc.), the readable label can match the preset name. For custom cron, generate the label from the expression.
Edge cases to handle:
- Invalid cron β show the raw expression only, or a gentle βCould not parse scheduleβ message; do not block save if the expression is valid server-side but fails client-side parsing
- Ambiguous timezone β cron has no timezone field today; label should avoid implying one unless the product already displays timezone elsewhere (e.g. β9:00 AM (account timezone)β if that exists)
- Non-English locales β nice-to-have: localized descriptions later; English-first is fine for v1
- Power users β keep the raw cron visible and editable; the description is a helper, not a replacement
Why this matters:
- Reduces misconfiguration (e.g. weekend runs when weekdays were intended β related to weekday scheduling requests on Cursor forum)
- Makes automations easier to review in teams (especially with config-as-code discussions on Cursor forum)
- Mirrors what many cron UIs already do (GitHub Actions, CloudWatch, etc.)
Suggested implementation sketch (pseudocode β not a full repo):
// UI: show helper text under the cron input
function CronTriggerField({ cron, onChange }) {
const label = describeCronSchedule(cron);
return (
<>
<input value={cron} onChange={onChange} />
{label && <p className="helper">{label}</p>}
</>
);
}
// Core helper β wrap any cronβtext library (e.g. cronstrue)
function describeCronSchedule(cron: string): string | null {
const trimmed = cron.trim();
if (!trimmed) return null;
try {
return cronstrue.toString(trimmed, { use24HourTimeFormat: false });
} catch {
return null; // hide helper, keep raw cron visible
}
}
// Presets can skip parsing and use fixed copy
const PRESET_LABELS = {
"0 * * * *": "Every hour",
"0 9 * * *": "Every day at 9:00 AM",
// ...
};
Existing libraries like cronstrue handle the parsing; this is mostly a thin UI wrapper.
Happy to help test or iterate on copy/UX if useful.
Operating System (if it applies)
MacOS