Skip to content

Dashboard "Upcoming events" widget skips a populated near-term day while showing later days correctly (subscribed calendar with many recurring series) #8992

Description

@nypon

Steps to reproduce

Steps to reproduce

  1. Set up a subscribed (webcal/ICS) calendar containing many separate weekly-recurring event series (e.g. a schedule with 8+ distinct RRULE:FREQ=WEEKLY series, each a different UID, some occurring on different weekdays).
  2. Ensure at least one recurring series has its next occurrence tomorrow, and other series have their next occurrences 3–4 days out.
  3. Confirm via the full Calendar app that tomorrow's occurrence is present and correctly listed on that date.
  4. Open the Dashboard and look at the "Upcoming events" widget.

Example reproduction data (sanitized)

Two representative recurring series from the affected subscribed calendar:

BEGIN:VEVENT
UID:example-series-a@example.com
SUMMARY:Team Practice A
DTSTART:20260824T153000Z
RRULE:FREQ=WEEKLY;UNTIL=20261102T173000Z
DTSTAMP:20260925T172400Z
LAST-MODIFIED:19700101T000001Z
SEQUENCE:1
TRANSP:TRANSPARENT
END:VEVENT

BEGIN:VEVENT
UID:example-series-b@example.com
SUMMARY:Team Practice B
DTSTART:20260829T071500Z
RRULE:FREQ=WEEKLY;UNTIL=20261107T091500Z
DTSTAMP:20260925T172400Z
LAST-MODIFIED:19700101T000001Z
SEQUENCE:1
TRANSP:TRANSPARENT
END:VEVENT
  • Series A's next occurrence (a weekday) is correctly shown in the widget.
  • Series B's next occurrence (the very next day, a weekend date) is skipped by the widget; the following occurrence 3–4 days later of a different series is shown instead.
  • Both series are confirmed present, correctly cached, and correctly expanded in the full Calendar app — only the dashboard widget's condensed view is affected.

Expected behavior

The widget should show "Inga fler händelser idag" (no more events today) followed by tomorrow's events (grouped as "om 1 dag" / "in 1 day"), then later days.

Actual behavior

The widget skips straight from "no more events today" to events 3–4 days out, entirely omitting the populated day in between (tomorrow), even though:

  • The subscription's cached copy in the database exactly matches the live upstream ICS feed (confirmed via direct DB query — same DTSTART/RRULE, freshly synced).
  • The subscription's background refresh job (OCA\DAV\BackgroundJob\RefreshWebcalJob) had run successfully minutes before observing the bug.
  • The full Calendar app (month/week grid view) correctly displays tomorrow's events.
  • Clicking "Fler händelser" (more events) in the widget navigates to the full Calendar app, where the missing day's events are shown correctly.

This suggests the dashboard widget's own backend query (separate from the main Calendar app's event search) applies some kind of row/result limit before expanding recurrence rules and filtering by date, causing a legitimately-soonest occurrence to be excluded from the widget's candidate set — while events from series with fewer/simpler occurrences elsewhere in the same window still surface correctly. This matches a previously-fixed pattern in nextcloud/server PR #45222 ("CalDAV fix search with limit and time range"), but appears to reproduce again here, possibly in a different code path specific to the dashboard widget rather than the main CalDAV search endpoint.

Calendar app version

6.6.1

CalDAV-clients used

N/A — reproduced entirely within the Nextcloud web UI (dashboard widget vs. Calendar app), not via any third-party CalDAV client.

Browser

No response

Client operating system

No response

Server operating system

Ubuntu 24.04

Web server

Apache

Database engine version

MariaDB

PHP engine version

Other

Nextcloud version

34.0.4.1

Updated from an older installed version or fresh install

None

List of activated apps

Enabled:
  - activity: 7.0.0
  - app_api: 34.0.0
  - appstore: 1.0.0
  - bruteforcesettings: 7.0.0
  - calendar: 6.6.1
  - circles: 34.0.0
  - cloud_federation_api: 1.18.0
  - comments: 1.24.0
  - contacts: 8.9.0
  - contactsinteraction: 1.15.0
  - cookbook: 0.11.10
  - cospend: 4.1.3
  - countdown: 1.2.36
  - dashboard: 7.14.0
  - dav: 1.40.0
  - federatedfilesharing: 1.24.0
  - federation: 1.24.0
  - files: 2.6.0
  - files_downloadlimit: 5.2.0
  - files_external: 1.26.0
  - files_lock: 34.0.1
  - files_pdfviewer: 7.0.0
  - files_reminders: 1.7.0
  - files_sharing: 1.26.0
  - files_trashbin: 1.24.0
  - files_versions: 1.27.0
  - firstrunwizard: 7.0.0-dev.0
  - integration_openproject: 3.2.0
  - integration_openstreetmap: 4.2.0
  - logreader: 7.0.0
  - lookup_server_connector: 1.22.0
  - maps: 1.8.0
  - memories: 9.0.1
  - nextcloud_announcements: 6.0.0
  - notes: 6.1.0
  - notifications: 7.0.0-dev.1
  - oauth2: 1.22.0
  - office: 1.0.0
  - onlyoffice: 10.2.0
  - password_policy: 6.0.0-dev.0
  - photos: 7.0.0
  - previewgenerator: 5.15.0
  - privacy: 6.0.0-dev.1
  - profile: 1.3.0
  - provisioning_api: 1.24.0
  - recommendations: 7.0.0
  - related_resources: 5.0.0-dev.0
  - serverinfo: 6.0.0
  - settings: 1.17.0
  - sharebymail: 1.24.0
  - solitaire_ce: 1.0.3
  - spreed: 24.0.5
  - support: 6.0.0
  - survey_client: 6.0.0-dev.0
  - systemtags: 1.24.0
  - text: 8.0.0
  - theming: 2.9.0
  - twofactor_backupcodes: 1.23.0
  - twofactor_totp: 16.0.0
  - twothousandandfortyeight: 1.0.3
  - updatenotification: 1.24.0
  - user_status: 1.14.0
  - viewer: 7.0.0-dev.0
  - weather_status: 1.14.0
  - webhook_listeners: 1.6.0
  - workflowengine: 2.16.0
Disabled:
  - admin_audit: 1.24.0 (installed 1.24.0)
  - encryption: 2.22.0
  - suspicious_login: 12.0.0-dev.0
  - twofactor_nextcloud_notification: 8.0.0
  - user_ldap: 1.25.0

Nextcloud configuration


Web server error log


Log file


Browser log


Additional info

  • Verified the subscription's refreshrate field and last successful sync via direct database inspection — not a stale-cache issue.
  • Verified via occ background-job:list that RefreshWebcalJob ran successfully shortly before the bug was observed.
  • Issue is purely cosmetic/display — underlying calendar data is correct and intact; only the dashboard widget's summary view mis-selects which events to surface.
  • Calendar type: subscribed (webcal/ICS), auto-refreshing every 30 minutes
  • Deployment: self-hosted, Docker
  • PHP 8.5.10 (cli) (built: Sep 19 2026 00:25:04) (NTS)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions