Schedules redesign 4/5: form and stores rewrite#3551
Open
tegan-temporal wants to merge 9 commits into
Open
Conversation
Additive component changes split out of the schedules feature work: new ButtonRadioGroup, new code icon, optional props across inputs and pickers (DatePicker id/clearable, TimePicker idPrefix/error, Checkbox description, NumberInput error, Panel as, PayloadInput placeholder/ copyable), Svelte 5 conversion of RadioGroup, DurationInput rework, and styling refinements. No deletions and no behavior changes for existing consumers. Co-Authored-By: Claude Fable 5 <[email protected]>
Adds date-name and list Intl formatters, ordinal plural support in the i18n replace types, new common locale strings, and a sortNumbers array utility. Removes the unused common.timezone key. Co-Authored-By: Claude Fable 5 <[email protected]>
Pure logic layer for the schedules redesign: zod form schemas, request/ response types, and utilities for summarizing specs, building request bodies, parsing cron strings, and mapping schedules into form state, with unit tests. Adds cronstrue. Legacy types and i18n keys consumed by the existing pages are retained; they are removed in the final PR of the stack. Co-Authored-By: Claude Fable 5 <[email protected]>
Replaces the schedule create/edit form with the redesigned superforms- based implementation (spec cards with cron/week/month/interval kinds, policies drawer, live summary sidebar) and rewrites the schedules store around a confirmation-modal state machine with per-action submit functions. Deletes the superseded form components, the holocene day/week/month pickers they used, and schedule-data-formatting. Integration tests now assert request bodies on create and round-trip preservation on edit. Co-Authored-By: Claude Fable 5 <[email protected]>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
6 tasks
Removing the only spec resets the list to a fresh expanded cron spec, and collapsed specs are always removable. Co-Authored-By: Claude Fable 5 <[email protected]>
Co-Authored-By: Claude Fable 5 <[email protected]>
The summary sidebar now shows the same end-of-day instant the submit produces instead of midnight UTC of the bare date string, and a test asserts the submitted end time re-anchors when the timezone changes. Co-Authored-By: Claude Fable 5 <[email protected]>
Alex-Tideman
approved these changes
Jun 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description & motivation 💭
Fourth of five PRs splitting the schedules redesign, stacked on #3550 (and includes #3548's holocene commits, which drop out of the diff once that merges; base auto-retargets as the stack lands).
The create/edit experience:
schedule-form/built on superforms + the PR 3 schema: spec cards supporting cron / days-of-week / days-of-month / interval kinds, a policies drawer (overlap, catchup with snap-back-to-default, timeouts), and a live summary sidebarstores/schedules.tsrewritten:confirmationModalstate machine, per-action submit functions,serverError/actionPending;schedule-servicecreate/edit take the typedScheduleRequestBodypages/schedules-create.svelte/schedule-edit.svelteadopt the new form; the delete modal moves toschedule-action-modals/(the rest of the action modals land in PR 5)day-of-week/day-of-month/monthpickers, andschedule-data-formattingThe view page is intentionally untouched — it keeps working against the rewritten store (it only consumes
loading,schedulesCount,schedulesRefresh, which survive). PR 5 replaces it.Testing 🧪
How was this tested 👻
pnpm check0 errors,pnpm lint0 errors, 2,133 unit tests passing, full integration suite 221 passed / 0 failed. The create/edit integration specs now assert the actual request bodies (e.g. a weekly spec submitsmonth: [{start: 1, end: 12}], cron strings submit verbatim without comment suffixes) and round-trip preservation of fields the form doesn't model (excludeStructuredCalendar, exactstartTime, string-encoded int64remainingActions).Steps for others to test: 🚶🏽♂️🚶🏽♀️
Create and edit schedules end-to-end: each spec kind, the policies drawer (empty a duration field and blur — it snaps back to its default), and editing an existing schedule with fields the form doesn't expose.
Checklists
Merge Checklist
feature/schedules(notmain)🤖 Generated with Claude Code