All Versions
12
Latest Version
Avg Release Cycle
40 days
Latest Release
40 days ago

Changelog History
Page 1

  • v5.2.2 Changes

    May 08, 2026

    πŸ›  Fixes

    πŸ“Š Alarm.GetOccurrences(...) andAlarm.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 Changes

    February 09, 2026

    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 with ArgumentOutOfRangeException.
    • 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 Changes

    December 23, 2025

    Implemented BYDAY with offset and limiting behavior

    The following RRULE cases are now implemented

    1. YEARLY + BYMONTH + numeric BYDAY offsets. Pattern: FREQ=YEARLY;BYMONTH=6,9;BYDAY=2MO
    2. YEARLY + numeric BYDAY without BYMONTH. Pattern: FREQ=YEARLY;BYDAY=20MO
    3. YEARLY + BYMONTH + negative numeric BYDAY. Pattern: FREQ=YEARLY;BYMONTH=6,9;BYDAY=-1SU

    πŸ”„ Changes in Detail

    • Implement BYDAY with 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 Changes

    December 13, 2025

    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:20250101RRULE:FREQ=YEARLY;BYYEARDAY=-1,1;BYMONTHDAY=-1,1
    

    What'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 Changes

    December 01, 2025

    What's Changed

    • πŸ›  Fix: Correct handling RRULE:FREQ=YEARLY combined with BYMONTH and BYWEEKNO. The previous implementation could skip occurrences in some scenarios.
    • πŸ›  Fix: Correct handling RRULE:FREQ=YEARLY when BYMONTH ist missing, e.g. RRULE:FREQ=YEARLY;INTERVAL=2;BYDAY=MO,TU. Now takes the month of DTSTART as a limiter. The previous implementation could show occurrences for wrong months.

    Full Changelog : v5.1.2...v5.1.3

  • v5.1.2 Changes

    November 13, 2025

    πŸ”„ Changes

    • πŸ—„ Chore: Mark classes and interfaces using EXRULE as obsolete. Reasoning: EXRULE is marked as deprecated in RFC 5545. Neither Google Calendar nor Microsoft Outlook/Exchange support it (#873)
    • 🐎 Feat: CalDateTime.Add(Duration) for empty Durations. The methods gets called frequently during recurrence evaluation. Here it brings a performance improvement of about 10% (#877).
    • Fix: FREQ=WEEKLY rules that include BYMONTH were 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 VTimeZoneInfo in #874
    • Mark classes and interfaces using EXRULE as 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 Changes

    October 06, 2025

    πŸš€ What's Changed in release v5.1.1

    • πŸ›  Fix: CalendarEvents with RecurrenceId were not properly evaluated in some scenarios.
    • πŸ‘ Feat: RecurringComponents like CalendarEvent support RECURRENCE-ID with optional RANGE parameter 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-ID overrides 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: RecurringComponent supports RECURRENCE-ID with optional RANGE parameter #870
    • ⬆️ Bump version 5.1.1 #872

    Full Changelog : v5.1.0...v5.1.1

  • v5.1.0 Changes

    July 16, 2025

    What's Changed

    • Chore:Make Publish workflow branch-agnostic in #817
    • πŸ›  Fix: Publish action 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 EXDATE when date-only while DTSTART is date-time by @minichma in #830
    • 0️⃣ 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: CalDateTime CTOR 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 before periodStart by @minichma in #836
    • πŸ›  Fix GetOccurrences() not properly dealing with periodStart'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 Changes

    June 17, 2025

    What's Changed

    • βœ‚ Remove redundant Equals and GetHashCode implementations in #810
    • Occurrence.Period is determined by StartTime and Duration only in #808
    • ⚑️ Update package versions in #813
    • πŸ›  Fix: Period.CollidesWith calculation 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-org team.

    πŸ”„ Changelog for latest changes : v5.0.0-pre.43...v5.0.0
    πŸš€ Full Changelog for last GA release : v4.3.1...v5.0.0

  • v5.0.0-pre.43 Changes

    May 21, 2025

    What's Changed

    • πŸ’₯ Breaking: Enable NRT project wide in #769, #771, #772, #778, #786. NuGet Packages are now published with NRT enabled.
    • ⚑️ Update license.md in #773
    • EvaluationOptions: Fix off-by-one issue of MaxUnmatchedIncrementsLimit by @minichma in #775
    • RecurrencePatternEvaluator: Modernize some evaluation code. by @minichma in #783
    • πŸ’₯ Breaking: Evaluation: Remove periodEnd param from GetOccurrences et al by @minichma in #781. To limit the elements, it's recommended to used CollectionExtensions.TakeWhileBefore (see below), or simple TakeWhile.
    • Implement CollectionExtensions.TakeWhileBefore extensions in #796. This can e.g. be used on enumerations from GetOccurrences methods
    • Evaluation: Raise EvaluationOutOfRangeException if year 10k is hit during evaluation by @minichma in #785
    • βœ‚ Remove unnecessary null checks in #790
    • πŸ’₯ Breaking: Refactor handling of FREQ in recurrence pattern in #789. Removed FrequencyType.None from enum FrequencyType
    • πŸ’₯ Breaking: Remove GroupedListEnumerator in #793 (Different solution made it redundant).
    • ⚠ Enable CA1305 warnings and fix them in #794
    • πŸ›  Fix for serialization of property parameters: CalendarComponent.AddProperty adds the CalendarProperty in #801
    • πŸ’₯ Breaking: Feature: Serialize multiple categories and resources to one line by @NRG-Drink in #803 and #804

    Thanks to new Contributors

    Full Changelog : v5.0.0-pre.42...v5.0.0-pre.43