Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 8 of 95 Next →
February 28, 2026
patch TasksTasks.Headless

Fix GitHub sync not pushing task status changes to GitHub issues

Tasks 1.29.1 → 1.29.2 | 55cd9791
Details

PushTaskAsync existed but was never called when tasks were updated locally.

Added an OnTaskUpdated callback to TaskService that fires after every

UpdateTask call. TasksPlugin subscribes to it during init and triggers

a background push for any GitHub-linked task (bidirectional sources only).

Includes a re-entrancy guard since PushTaskAsync itself calls UpdateTask

to save the updated SourceEtag.

patch Calendar

Fix CalDAV sync token loss and conflict handling

Details

Two critical bugs that caused local edits to be overwritten by server:

1. Sync token was lost after every sync cycle. PullFromCalDavAsync

saved the token to the subscription, but SyncCalDavSubscriptionAsync

then called UpdateSubscriptionAsync with the original (stale) sub

object, overwriting the token with null. This forced a full fetch

on every sync, increasing the chance of overwrites. Fixed by

re-reading the subscription after pull/push before updating

LastSyncedAt.

2. On 412 Conflict (ETag mismatch), the push silently discarded the

local change by resetting SyncState to "synced". Now retries once

by fetching the fresh ETag from the server and re-attempting PUT.

If the retry also fails, keeps pending_push for next cycle.

Also added GetSubscriptionAsync to CalendarService for fresh reads.

patch Calendar

Fix CalDAV sync overwriting local edits + add immediate push

Details

Two issues fixed:

1. Drag-and-drop event time changes were not setting SyncState to

"pending_push", so the next sync cycle's pull phase would see

content changes and overwrite the local edit with server data.

2. All CalDAV changes (edit, create, delete) waited up to 15 minutes

for the next scheduled sync to push. Now triggers an immediate

background sync for the affected subscription after any local

CalDAV event modification (save, drag-and-drop, delete).

patch Calendar

Fix all-day events appearing on wrong/extra days

Details

Two bugs caused CalDAV all-day events to display on two days instead

of one (e.g., a birthday on Feb 24 showing on both Feb 24 and Feb 25):

1. IcsParserService: DATE-only values (DTSTART;VALUE=DATE:20260224)

were parsed with UTC offset (TimeSpan.Zero). When converted to

local time, midnight UTC shifts to the previous day in western

timezones. Now uses local timezone offset so the date is preserved.

2. CalendarViewModel: EventSpansDate and GetEventsForDate only adjusted

exclusive end dates for non-all-day events. Per RFC 5545, all-day

DTEND is exclusive (20260225 means "up to but not including Feb 25").

Now applies the -1 day adjustment for all-day events too.

patch Calendar

Fix CalDAV provider UI: add Google toggle, bind provider commands

Details

The provider buttons in AddSubscriptionOverlay were hardcoded with no

command bindings — selecting iCloud or Google had no effect. This adds:

  • Three toggle buttons (Generic/Nextcloud, iCloud, Google) bound to

SetCalDavProviderCommand with active-state highlighting

  • Google Account picker (ComboBox) visible only when Google is selected
  • Server URL field visible only for Generic provider
  • Username/Password fields hidden when Google is selected
  • xmlns:sdk namespace for ConnectionInfo DataTemplate
← Prev Page 8 of 95 Next →

Get notified about new releases