Prepare a release of ical 0.3.0.0 and ical-recurrence 0.2.0.0 Version bumps and changelog for the seven fixes that landed in #31–#37. **Nothing is published** — this only prepares the release. ## Versions | package | from | to | | --- | --- | --- | | `ical` | 0.2.0.0 | **0.3.0.0** | | `ical-recurrence` | 0.1.0.0 | **0.2.0.0** | Both bumps are major. Every entry either changes what the parser accepts or changes a `Validity` instance, and two error types gain constructors, so nothing here is safe for a caller that matches exhaustively or relies on the old bounds: - `PropertyTypeParseError` gains `RecurrenceRulePartOutOfRange` - `PropertyTypeFixableError` gains `RecurrenceRuleHasBothUntilAndCount` No version bounds between the packages in this repo to update — they depend on each other by bare name. ## What's in it **`ical` 0.3.0.0**, six RRULE fixes: - `COUNT` was capped at 60, by `BYSECOND`'s sentence copy-pasted from three declarations down the same paragraph. `COUNT=100` was invalid, and `GenValid Count` was capped by the same bound so no test had ever used one. (#33) - `BYSETPOS` was unbounded where the spec gives 1..366/-366..-1. (#33) - A `BYDAY` ordinal could not have two digits: `10MO` through `53SU` were unparseable, as was a leading `+`. (#35) - A `BYDAY` ordinal was bounded at ±5 instead of ±53, so `6MO`–`9MO` parsed into invalid values. (#35) - A rule with both `UNTIL` and `COUNT` parsed silently; now a fixable error. (#36) - Out-of-range rule part values across nine parts parsed into invalid values; now refused. (#37) **`ical-recurrence` 0.2.0.0**, two recurrence fixes: - `FREQ=DAILY;BYDAY=2MO` matched every day instead of Mondays — a forbidden value widened the recurrence set. (#32) - An instance holding a leap second was kept or dropped depending on `DTSTART`'s value type. (#34) #31 gets no entry, being test-only. ## Two things to check while reviewing **Each entry says why the old behaviour was wrong**, not just what changed, following the two entries already in the file. Worth a skim to confirm the reasoning reads correctly to you — several of these are subtle and I wrote both the fix and the note. **The `BYSECOND=60` consequence is called out explicitly** in the `ical-recurrence` entry: that rule part now generates no instance at all. It is a spec-legal rule part that became inert, and the changelog says so rather than burying it. ## Checks `nix flake check` passes on this branch, rebased onto master with #37 in. `ical-gen` 1109 passing, `ical-recurrence-gen` 301, both 0 failing.