Releases: ical-org/ical.net
Release list
v5.2.3
v5.2.2
Fixes
Alarm.GetOccurrences(...) and Alarm.Poll(...)now have an optionalendTime` parameter to limit the evaluation of occurrences.
This prevents potential performance issues when evaluating alarms with no end date or a very long recurrence pattern. If endTime is not provided, the methods will evaluate occurrences indefinitely until an exception is thrown or the system's maximum date is reached.
What's Changed
- Deprecate RecurrenceRules and RecurrencePattern by @maknapp in #928
- Chore(deps): Bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in #931
- Update encoding and line endings for consistency in #932
- Chore(deps): Bump codecov/codecov-action from 5.5.2 to 6.0.0 by @dependabot[bot] in #935
- chore(tests): Fix failing RecurrenceWikiTests in #941
- Add alarm poll end time by @maknapp in #940
- Bump release v5.2.2 in #945
Full Changelog: v5.2.1...v5.2.2
v5.2.1
What's Changed
- Fix: Stop TODO evaluation at given datetime by @maknapp in #915. Before: If a TODO had an RRULE without COUNT or UNTIL,
IsCompleted()threw withArgumentOutOfRangeException. - Chore(deps): Bump codecov/codecov-action from 5.5.1 to 5.5.2 in #919
- Chore(deps): Bump actions/upload-artifact from 5 to 6 in #920
- Chore: Update release notes for v5.2.1 #927
Full Changelog: v5.2.0...v5.2.1
v5.2.0
Implemented BYDAY with offset and limiting behavior
The following RRULE cases are now implemented
- YEARLY + BYMONTH + numeric BYDAY offsets. Pattern:
FREQ=YEARLY;BYMONTH=6,9;BYDAY=2MO - YEARLY + numeric BYDAY without BYMONTH. Pattern:
FREQ=YEARLY;BYDAY=20MO - YEARLY + BYMONTH + negative numeric BYDAY. Pattern:
FREQ=YEARLY;BYMONTH=6,9;BYDAY=-1SU
Changes in Detail
- Implement
BYDAYwith offset and limiting behavior in #887 - chore: Eliminate nested if statements in GetAbsWeekDaysMonthly/Weekly by in #896
- Bump version 5.2.0 in #897
Full Changelog: v5.1.4...v5.2.0
v5.1.4
Fix: Regression introduced in v5.1.3 affecting RRULE:FREQ=YEARLY when negative BYMONTHDAY or BYYEARDAY values are used. In certain combinations the evaluator could normalize negative positions incorrectly and skip valid occurrences (e.g., end‑of‑month or end‑of‑year instances). This has been fixed — please upgrade to v5.1.4.
Example of an affected rule (prior behavior could skip results):
DTSTART:20250101
RRULE:FREQ=YEARLY;BYYEARDAY=-1,1;BYMONTHDAY=-1,1What's Changed
- chore: Update GitHub Workflows in #891, #892, #893, #894
- Fix regression introduced in v5.1.3 in #889 (see note above)
- Bump version 5.1.4 in #895
Full Changelog: v5.1.3...v5.1.4
v5.1.3
What's Changed
- Fix: Correct handling
RRULE:FREQ=YEARLYcombined withBYMONTHandBYWEEKNO. The previous implementation could skip occurrences in some scenarios. - Fix: Correct handling
RRULE:FREQ=YEARLYwhenBYMONTHist missing, e.g.RRULE:FREQ=YEARLY;INTERVAL=2;BYDAY=MO,TU. Now takes the month ofDTSTARTas a limiter. The previous implementation could show occurrences for wrong months.
Full Changelog: v5.1.2...v5.1.3
v5.1.2
Changes
- Chore: Mark classes and interfaces using
EXRULEas obsolete. Reasoning:EXRULEis marked as deprecated in RFC 5545. Neither Google Calendar nor Microsoft Outlook/Exchange support it (#873) - Feat:
CalDateTime.Add(Duration)for emptyDurations. The methods gets called frequently during recurrence evaluation. Here it brings a performance improvement of about 10% (#877). - Fix:
FREQ=WEEKLYrules that includeBYMONTHwere only including weeks that start inside the given months. This fix checks the end of the week also to see if any part of the week is inside the given months (#880)
Details
- Remove misleading FIXME comment in
VTimeZoneInfoin #874 - Mark classes and interfaces using
EXRULEas obsolete in #873 - Skip
CalDateTime.Add(Duration)for Empty Durations in #877 - Update logo image syntax in readme.md in #878
- Fix weekly bymonth by @maknapp in #880
- Bump version 5.1.2 in #881
Big Thanks to New Contributors
Full Changelog: v5.1.1...v5.1.2
v5.1.1
What's Changed in release v5.1.1
- Fix:
CalendarEvents withRecurrenceIdwere not properly evaluated in some scenarios. - Feat:
RecurringComponents likeCalendarEventsupportRECURRENCE-IDwith optionalRANGEparameter for serialization and deserialization. - Wiki: Updated articles about recurrence evaluation
Changes in detail
- Update iCal.NET logo to display correctly in nuget readme #847
- Fix failing coverage action #850
- Add logging infrastructure #851
- Fix: Event with
RECURRENCE-IDoverrides occurrence from orginal event #864 - Add wiki recurrence page by @NRG-Drink in #848
- chore: Wiki sample: Get first occurences of all events in a
Calendar#869 - feat:
RecurringComponentsupportsRECURRENCE-IDwith optionalRANGEparameter #870 - Bump version 5.1.1 #872
Full Changelog: v5.1.0...v5.1.1
v5.1.0
What's Changed
- Chore:Make
Publishworkflow branch-agnostic in #817 - Fix:
Publishaction in #818 - Fix: Exception for Blazor WebAssembly and Self-Contained Assemblies using by @b-straub in #820
- Fix: GetOccurrences(): Fix NPE when returning a ToDo's occurrences that don't have a duration by @minichma in #826
- Fix: Evaluation of
EXDATEwhen date-only whileDTSTARTis date-time by @minichma in #830 - Feat: Use UTF-8 Encoding without BOM by default in all serializers when writing to a stream. This is expected by most iCalendar consumers, including Outlook and Google Calendar. #827
- Fix:
CalDateTimeCTOR using ISO 8601 UTC string resolves to UTC in #833 - Chore: Update GitHub Actions for Tests and Coverage in #837
- Chore: Update license history in #839
- Fix
GetOccurrences(periodStart)to also include ongoing occurrences (beginning beforeperiodStartby @minichma in #836 - Fix
GetOccurrences()not properly dealing withperiodStart's timezone ID by @minichma in #842 - Chore: Add release notes for v5.1.0 in #844
New Contributors
Full Changelog: v5.0.0...v5.1.0
v5.0.0
What's Changed
- Remove redundant
EqualsandGetHashCodeimplementations in #810 Occurrence.Periodis determined byStartTimeandDurationonly in #808- Update package versions in #813
- Fix:
Period.CollidesWithcalculation in #812 - Added a Migration Guide for v4 to v5 to the wiki
- Update the list of API Changes from v4 to v5 in the wiki
- Publish v5.0.0 GA
New Contributors
- @NRG-Drink made their first contribution in #803, and welcome to the
ical-orgteam.
Changelog for latest changes: v5.0.0-pre.43...v5.0.0
Full Changelog for last GA release: v4.3.1...v5.0.0