Skip to content

feat: added quarterly option for scheduler - #9076

Merged
lifeizhou-ap merged 3 commits into
mainfrom
fix/8975-quarterly-schedule
May 12, 2026
Merged

feat: added quarterly option for scheduler#9076
lifeizhou-ap merged 3 commits into
mainfrom
fix/8975-quarterly-schedule

Conversation

@lifeizhou-ap

@lifeizhou-ap lifeizhou-ap commented May 7, 2026

Copy link
Copy Markdown
Collaborator

Summary

Close #8975

Added quarterly and custom cron options

Testing

Unit and manual

Screenshots/Demos (for UX changes)

After:
Screenshot 2026-05-07 at 6 28 45 pm

Screenshot 2026-05-07 at 8 16 41 pm

@lifeizhou-ap
lifeizhou-ap requested a review from DOsinga May 7, 2026 08:30

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4fc4ba3ca9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +176 to +177
if (!Number.isNaN(parsedDay) && parsedDay > maxDayOfMonth) {
setDayOfMonth(maxDayOfMonth.toString());

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Avoid rewriting existing quarterly schedules on load

When an existing cron like 0 0 14 31 1,4,7,10 * is loaded, the new quarter parsing path sets period='quarter' and this effect immediately clamps dayOfMonth from 31 to 30, so saving the modal without intentional schedule edits mutates the original cron. This is a regression for pre-existing schedules that legitimately used day 31 with quarterly month lists and now get silently downgraded to day 30.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed by using custom cron expression on ui

Comment on lines +183 to +186
const clampedDayOfMonth = Math.min(
Math.max(parseInt(dayOfMonth, 10) || 1, 1),
maxDayOfMonth
).toString();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep quarter day input and emitted cron in sync

For quarter schedules, the emitted cron uses clampedDayOfMonth, but the component only writes back to state when the value is above maxDayOfMonth, not when it is empty or below 1. As a result, entering 0 (or clearing the field) can leave the UI showing an invalid day while onChange emits day 1, so users may save a schedule different from what the form displays.

Useful? React with 👍 / 👎.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a7c83cd917

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +281 to +283
case 'custom':
cron = customCron;
break;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Preserve current preset cron when entering custom mode

Switching from a preset (day/week/month/quarter/year) to custom currently emits a stale cron string, because customCron is only initialized from schedule and then reused in case 'custom' without being synced to the latest preset-generated cron. In practice, a user can configure a new schedule in preset controls, pick Custom to fine-tune it, and immediately overwrite their edits with the old/default expression, leading to unintended saves unless they manually re-enter the cron.

Useful? React with 👍 / 👎.

@DOsinga

DOsinga commented May 8, 2026

Copy link
Copy Markdown
Collaborator

this is good. I think an extra control for daily/monthly where you get to pick which days (of the week) and which months (of the year) seems like a decent way to offer even more flexibility

@lifeizhou-ap
lifeizhou-ap added this pull request to the merge queue May 12, 2026
Merged via the queue into main with commit b8401f1 May 12, 2026
21 checks passed
@lifeizhou-ap
lifeizhou-ap deleted the fix/8975-quarterly-schedule branch May 12, 2026 05:27
shafqatevo pushed a commit to shafqatevo/goose that referenced this pull request Aug 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Schedule quarterly recipes

2 participants