Conversation
4ac7d19 to
4b3751b
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
|
Hello there, We hope that the review process is going smooth and is helpful for you. We want to ensure your pull request is reviewed to your satisfaction. If you have a moment, our community management team would very much appreciate your feedback on your experience with this PR review process. Your feedback is valuable to us as we continuously strive to improve our community developer experience. Please take a moment to complete our short survey by clicking on the following link: https://cloud.nextcloud.com/apps/forms/s/i9Ago4EQRZ7TWxjfmeEpPkf6 Thank you for contributing to Nextcloud and we hope to hear from you soon! (If you believe you should not receive this message, you can add yourself to the blocklist.) |
|
Hi @pi0n00r Sorry its taken awhile to comment on this. What issue are you trying to solve with this? |
|
Hi @SebastianKrupinski, thanks for taking a look. This fixes a reproducible Dashboard Upcoming events display bug for timed CalDAV objects that use a fixed-offset TZID rather than an IANA name, for example: DTSTART;TZID=UTC-04:00:20260728T111500Sabre retains the The change corrects only the widget's projection: it preserves the wall clock and applies the explicit offset before timestamp comparison/formatting. It does not mutate the source event, and leaves UTC, IANA TZIDs, floating values, and all-day If fixed-offset TZIDs should instead be normalized at an earlier shared layer, I am happy to move the correction there; I kept this PR scoped to the demonstrated Dashboard inconsistency. |
|
Can I ask which client creates events with "UTC-04:00"? |
|
In our reproduction, the producer was the CalDAV client in Its then-current event create/update path parsed an ISO 8601 value such as DTSTART;TZID="UTC-04:00":20260728T111500We subsequently corrected that producer path to emit The Calendar patch was prompted by records created before that correction and keeps the Dashboard projection robust when it encounters such a fixed-offset TZID. |
|
Added a follow-up regression fix in 94121dc. Relative-day formatting now compares the event and request clock in the same display timezone, so a late-evening local request does not label an event two local calendar dates away as tomorrow. Timed values are converted as instants; all-day values retain their calendar date. The formatter receives the frozen request time explicitly.\n\nRegression coverage uses a generic 2026-09-08 23:30 America/Toronto request and a 2026-09-10 UTC event, and separately verifies all-day date preservation. Locally verified: focused CalendarWidget suite 13 tests / 50 assertions; full Calendar PHP unit suite 287 tests / 1,164 assertions; PHP syntax, style, and diff checks passed. |
94121dc to
51c113f
Compare
Signed-off-by: pi0n00r <131018595+pi0n00r@users.noreply.github.com>
51c113f to
624f4e0
Compare
|
Closing this in favour of fixing this properly in sabre sabre-io/vobject#790 |
Summary
UTC+/-HH:MMandUTC+/-HHMMTZID values before the dashboard widget compares or formats event start timesProblem
Sabre VObject falls back to PHP's default timezone when a non-IANA fixed-offset TZID such as
UTC-04:00cannot be resolved. The Calendar view can still render the wall time correctly, butCalendarWidgetreceives aDateTimeImmutablecarrying the fallback timezone and emits the wrongsinceIdand relative subtitle.For example,
DTSTART;TZID="UTC-04:00":20260728T111500can be emitted by the dashboard as 11:15 UTC instead of 11:15 at -04:00.Validation
The change is display-only and performs no calendar write.