Let a preset actually be saved
Review found the headline feature unreachable. `valid` still demanded an end date unconditionally, while every sibling rule had been gated on `datedWindow`. A fresh form starts with endKnown true and endDate empty, so picking weekly hid both the field and the checkbox and left Save disabled with nothing on screen a reader could do about it. Editing an existing event was fine, which is why no test caught it: every static render drives the form through `initial`, and cadenceOf never returns a preset for an event that has an end. So the three states that needed a click to reach are now pure functions that do not. endStated pins exactly that case. repeatOf takes the cadence and answers for all five, which also makes `until` surviving the preset path provable — mutating it away previously left the suite green. Two more from the same review. The unknown-end note keyed off the cadence, so custom with the repeat set to never promised a countdown that would never arrive; it keys off the rule now, which is what actually decides. And a delay whose start and end disagree about having a time of day can never land a whole unit from the anchor — unstatable, not merely unstated — so it says so rather than disabling Save in silence. "State it myself" was also a one-way door: nothing ever cleared it, so the measured reading could not be recovered without abandoning the form. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 5
parent
4251717615
commit
33f7c77704
+1
-1
@@ -331,7 +331,7 @@ decides which dates are even questions:
|
||||
|---|---|---|
|
||||
| one-off | start, end, or "I don't know when it ends" | no rule |
|
||||
| daily / weekly / monthly | a start, and nothing else | no end, a one-unit cycle |
|
||||
| custom | start, end, and how it repeats | whatever the reader states |
|
||||
| custom | start, an end it still allows to be unknown, and how it repeats | whatever the reader states |
|
||||
|
||||
**A preset carries no window.** Choosing weekly says the week *is* the window —
|
||||
each occurrence runs until the next opens — so there is no end date to type and
|
||||
|
||||
Reference in New Issue
Block a user