|
| 1 | +# Changelog |
| 2 | + |
| 3 | +## Unreleased (2025-01-13) |
| 4 | + |
| 5 | +### Added |
| 6 | +- `canEdit()` convenience method to GetCalendarResponse for checking calendar write permissions (commit f1c2c81) |
| 7 | + - Returns true for writable calendars or when privilege-set not provided by server |
| 8 | + - Eliminates need for null-checking `isWritable()` in application code |
| 9 | +- `getCredentials()` method to CalDavClient for accessing stored credentials (commit 126d2fb) |
| 10 | + - Returns array with 'user' and 'password' keys |
| 11 | + - Removes need for reflection to access private properties |
| 12 | +- `parseVAlarms()` static method to GetCalendarResponse with full RFC 5545 support (commit fa44101) |
| 13 | + - Supports duration-based triggers: "-PT15M", "PT0S", "-P1D", "-PT1H30M" |
| 14 | + - Supports absolute DATE-TIME triggers: "19760401T005545Z" |
| 15 | + - Handles mixed time units (weeks, days, hours, minutes, seconds) |
| 16 | + - Preserves X-APPLE-DEFAULT-ALARM property for default alarm detection |
| 17 | +- `expandWithRRulePreservation()` static method to GetCalendarResponse (commit 8022062) |
| 18 | + - Preserves RRULE on expanded recurring event instances |
| 19 | + - Attaches RRULE as X-MASTER-RRULE property for frontend display |
| 20 | + - Eliminates need to manually capture/restore RRULE during expansion |
| 21 | +- `createEventFromICS()` and `updateEventFromICS()` methods to CalDavClient (commit d66c0c7) |
| 22 | + - Support for raw iCalendar content in PUT requests |
| 23 | + - Enables proper all-day event creation and custom property preservation |
| 24 | + - Returns EventCreatedResponse/EventUpdatedResponse with ETag handling |
| 25 | +- Comprehensive test coverage (commit 711ec62) |
| 26 | + - Verified response methods (isSuccessFull, getCode) exist |
| 27 | + - Tests for all new functionality |
| 28 | + |
| 29 | +### Improved |
| 30 | +- `getCurrentUserPrivileges()` and `isWritable()` methods now in GetCalendarResponse |
| 31 | +- All-day event creation/update now supported via library methods |
| 32 | +- VALARM parsing supports all RFC 5545 duration formats and absolute timestamps |
| 33 | + |
| 34 | +### Migration Notes |
| 35 | +For applications migrating from workarounds to native fork functionality: |
| 36 | + |
| 37 | +1. **Privilege Checking**: Replace null-checking logic with simple `$response->canEdit()` call |
| 38 | +2. **Credentials Access**: Replace reflection code with `$client->getCredentials()` |
| 39 | +3. **VALARM Parsing**: Replace manual parsing with `GetCalendarResponse::parseVAlarms($vevent)` |
| 40 | +4. **RRULE Preservation**: Replace manual RRULE capture/restore with `GetCalendarResponse::expandWithRRulePreservation($vcalendar, $start, $end)` |
| 41 | +5. **Event Creation**: Replace direct HTTP PUT/Guzzle calls with `$client->createEventFromICS()` and `$client->updateEventFromICS()` |
| 42 | + |
| 43 | +All changes are backward compatible with existing CalDavClient API usage. |
0 commit comments