Releases: bitfireAT/davx5-ose
v4.5.2.1-ose
v4.5.2-ose
What's Changed
Bug fixes
- [Sync framework] Disable contacts content change triggered syncs if sync interval set to manual only by @sunkup in #1569
Refactoring
- AndroidCalendar refactoring by @rfc2822 in #1560
- Synctools: AndroidEvent companion object moved by @rfc2822 in #1572
- [synctools] Use
EventReader
/EventWriter
by @rfc2822 in #1573 - Move external URIs from Constants to ExternalUris object by @rfc2822 in #1574
- Move SyncState to resource package because it's not in the database by @rfc2822 in #1585
- Move Insert/update to DAO by @rfc2822 in #1587
- Fix exceptions being fetched as
Parcelable
instead ofSerializable
inDebugInfoActivity
by @ArnyminerZ in #1597
Other changes
- Use system defined line separator by @mbiebl in #1562
- Sync davx5 / davx5-ose repos by @rfc2822 in #1575
- Update cert4android to get 16 kB page size support over Conscrypt 2.5.3 by @rfc2822 in #1581
- Update dependencies, including dav4jvm that updates okhttp to 5.x by @rfc2822 in #1593
Full Changelog: v4.5.1-ose...v4.5.2-ose
v4.5.1-ose
What's Changed
New features
- Improve IME integration on forms by @ArnyminerZ in #1504
- [Google] Remove warning box on login screen by @sunkup in #1548
Bug fixes
- Update sync progress bar when pending in SAF by @sunkup in #1445
- OAuth: Synchronize access token generation by @rfc2822 in #1547
Refactoring
- Update synctools and use unified BatchOperation by @rfc2822 in #1543
- Don't subclass AndroidEvent / AndroidCalendar populate / build methods anymore by @rfc2822 in #1544
- Set iCalendar PRODID in Constants and use it in respective classes by @rfc2822 in #1550
- LocalEvent: don't subclass AndroidEvent by @rfc2822 in #1551
LocalCalendar
: don't subclassAndroidCalendar
by @rfc2822 in #1552Update to synctools version that uses explicit parsing / splitting by @rfc2822 in #1554
Other changes
Full Changelog: v4.5-ose...v4.5.1-ose
v4.5-ose
Video announcement and short tutorial
Announcement video: https://www.youtube.com/watch?v=3TWb5U6pPYg
YT Shorts version: https://www.youtube.com/shorts/fWhaLgcrcvI
Tutorial for Nextcloud: https://www.youtube.com/watch?v=Ppvt1TS8VVA
What is Push and why do I need it?
TLDR;
Get updates for your contacts/events/tasks/notes instantly on your mobile device instead of polling the server in regular intervals like once an hour.
Requirements:
- DAVx5: minimal version DAVx5 4.5 (released June 2025)
- FCM (pre-installed on devices with Google Play Store) or any UnifiedPush distributor app (ntfy, Conversations, the NextPush app for Android, Mozillas Sunup, etc).
- The server must support WebDAV Push.
More Details
WebDAV Push is a very new addition to the WebDAV ecosystem and extends the WebDAV Standard with the ability to make synchronization in near-realtime. So if a file on the WebDAV server is added, changed or deleted you will receive this instantly also on your mobile devices via DAVx5.
This is especially useful for Contacts, Events and Tasks all of which DAVx5 offers synchronization for. Whenever a resource on the server changes (be it from directly changing it or if the change is being made from another device) you should get this update within a few seconds depending on network and server speed.
How-to-use in 5 steps (watch the video):
- Install and activate the servers WebDAV Push extension (for example the Nextcloud dav_push app in your Nextcloud App center – minimal version 0.0.3)
- If you add a new account, continue with step 3. If already have an existing DAVx5 account:
- refresh the collection list in the CalDAV/CardDAV tabs to receive the new information that the server supports WebDAV Push and check in the details view of a collection if you see either a "Server announces Push support" or "Subscribed message with a date".
- If you add a fresh DAVx5 account, the capability of Push will be detected during setup.
- Choose or Change the Push distributor in the DAVx5 settings at the very bottom.
- To test it, add an event, contact or task on the server side and open your respective Contacts / Calendars / Tasks app on Android. You should get the change within 5 – 60 seconds (depending on network speed)
Resources for server developers:
In order to provide your users with the ability to real-time sync data from your server you can implement the WebDAV Push draft. Although it is still a draft this solution already is working in the public. You can see an implementation for example on Nextcloud where this is being solved via an app plugin that can be activated upon a users wish.
See also UnifiedPush 3: https://unifiedpush.org/ and https://codeberg.org/UnifiedPush
What's Changed since 4.4.11
New features
- Add app password hint under password field by @sunkup in #1507
- Support Fastmail OAuth by @rfc2822 in #1509
- Support OAuth re-authorization by @rfc2822 in #1521
Bug fixes
- Fix edge to edge issue by @ArnyminerZ in #1515
- Delete local collection if missing remotely at delete request by @sunkup in #1512
Refactoring
- Credentials / dav4jvm: store passwords as CharArray by @rfc2822 in #1483
- [Lint] Convert URIs to strings using
toUri()
by @rfc2822 in #1506 - Pass state to modal drawer for automatic back handler by @ArnyminerZ in #1495
- [SyncManager]s Remove authority by @sunkup in #1491
- Increase SDK to 36 by @ArnyminerZ in #1513
Other changes
- Replace ical4android and vcard4android with synctools by @rfc2822 in #1519
- Redact Authorization header from HTTP requests by @mbiebl in #1520
- Intro / battery optimizations warning: remove Samsung; change wording from "probably" to "may" by @rfc2822 in #1532
- UnknownHostException by @rfc2822 in #1535
Full Changelog: v4.4.11-ose...v4.5-ose
v4.4.11-ose
What's Changed
New features
- Added warning about credentials in debug info by @ArnyminerZ in #1457
- Added widget with just a sync icon by @ArnyminerZ in #1340
Bug fixes
- [Push] Display FCM instead of DAVx⁵ in distributor settings by @ArnyminerZ in #1468
- SyncManager: directly wrap HTTP calls with
runInterruptible
by @rfc2822 in #1472 - Reset subscription URLs on distributor change by @sunkup in #1467
- [Push] Append sync when already syncing by @sunkup in #1480
- Implemented sort order for DAV documents by @ArnyminerZ in #1434
- Handle when AccountActivity is started without account by @sunkup in #1481
- TaskSyncer: accept nullable ResyncType by @rfc2822 in #1487
Refactoring
- Simplify running suspending tests by @rfc2822 in #1452
- Make SyncManager suspending (first part) by @rfc2822 in #1451
- [Sync] Replace
extras
Bundle by explicit arguments by @rfc2822 in #1475 - [CI] Run tests on pull requests instead of git pushes by @rfc2822 in #1479
Other changes
- Always append one-time syncs by @rfc2822 in #1482
- Use lowercase GroupIDs as a workaround for jitpack.io issues by @mbiebl in #1489
Full Changelog: v4.4.10-ose...v4.4.11-ose
v4.4.10-ose
What's Changed
New features
- Sync after sync flag or forceReadOnly flag of a collection are changed by @sunkup in #1383
- [Push] Support UnifiedPush Connector 3.x, VAPID, Encryption, Google FCM by @ArnyminerZ in #1325
- [Push] Better title/description for Google FCM in UI by @ArnyminerZ in #1424
- Send Push-Dont-Notify header by @sunkup in #1444
Bug fixes
- Hide "keep permissions" in API 29 and below by @ArnyminerZ in #1400
- NPE when trying to log in without specifying an email by @ArnyminerZ in #1401
- Fix non-suspending DB access on main thread in
accountRepository.delete()
by @rfc2822 in #1409 - [Push] Fix various subscription problems by @rfc2822 in #1411
- Upgrade about libs to 12.1.0 by @ArnyminerZ in #1416
- Fix UnifiedPushService tests by @rfc2822 in #1420
Refactoring
- Use ProGuard rules from libraries by @rfc2822 in #1387
- Use R8 full mode by @rfc2822 in #1397
- Test coroutines with
runTest
instead ofrunBlocking
by @rfc2822 in #1399 - Update AboutLibraries to 12.0.0 by @ArnyminerZ in #1406
- [WebDAV] Refactor coroutine usage by @rfc2822 in #1405
- Drop LiveData by @rfc2822 in #1414
- [Push] Don't block main thread in UnifiedPushService by @rfc2822 in #1412
- [Push] Update subscriptions when collection is (un)selected for sync by @sunkup in #1407
- Clean up app/build.gradle by @rfc2822 in #1421
- Repositories: apply new naming scheme by @rfc2822 in #1423
- Fixed deprecations with menu anchors by @ArnyminerZ in #1428
- Use ical4android that removes ClassLoader checks; refactor SyncDispatcher by @rfc2822 in #1446
Full Changelog: v4.4.9-ose...v4.4.10-ose
v4.4.9-ose
What's Changed
New features
Bug fixes
- Original string for webdav_add_mount_empty_more_info broken by @ArnyminerZ in #1354
- Debug Info does not contain actual error by @ArnyminerZ in #1362
- Avoid NPE when missing
DTSTART
for recurring events by @ArnyminerZ in #1336 - Fixed paddings on horizontal mode by @ArnyminerZ in #1353
- Fix 4.4.9 release compile error by @rfc2822 in #1386
Refactoring
Other changes
- Enable dependabot for Github Actions by @rfc2822 in #1363
- Update dependencies, including dav4jvm by @rfc2822 in #1374
- Update Screenshots by @devvv4ever in #1380
Full Changelog: v4.4.8-ose...v4.4.9-ose
v4.4.8-ose
What's Changed
New features
- Added confirmation dialog for "Distrust System Certificates" by @ArnyminerZ in #1307
- Added timestamp to debug info by @ArnyminerZ in #1323
- Show a notification at sync when ContentProvider inaccessible by @sunkup in #1278
Bug fixes
- SyncAdapter: Hilt error handling by @rfc2822 in #1299
- Add syncActive flag to control SyncAdapter behavior during tests by @rfc2822 in #1302
- Skip login type selection when logging in via intent by @sunkup in #1267
DnsRecordResolverTest
: Use seeded random number generator for deterministic test result by @sunkup in #1306- Remove special chars in address book account names by @sunkup in #1334
- Track app foreground state via AppTheme using separate object by @sunkup in #1335
Refactoring
- Refactor: replace deprecated getShowOnlyPersonalPair method and simplify removeAccount logic by @rfc2822 in #1304
- Use
TaskStackBuilder
instead ofPendingIntent.getActivity
by @ArnyminerZ in #1293 - Provide test address books via DI by @sunkup in #1310
Full Changelog: v4.4.7-ose...v4.4.8-ose
v4.4.7-ose
Note: This version removes support for the deprecated TLS versions 1.0 and TLS 1.1, as required by RFC 8996.
What's Changed
Bug fixes
- [CI] Use if: !cancelled() instead of if: always() by @rfc2822 in #1266
- MKCALENDAR does not send valid calendar-timezone by @ArnyminerZ in #1251
- Syncer SecurityException: disable permission notification for now by @rfc2822 in #1284
- Update cert4android to avoid Conscrypt crash in custom certificate handling by @rfc2822 in #1290
- Open-source intro page: don't select a "dont show for... months" option by default by @rfc2822 in #1287
- Add migration for Syncer URL → ID change by @rfc2822 in #1285
Refactoring
- Use DI for HttpClient.Builder by @rfc2822 in #1250
- MockK: use MockkRule if possible by @rfc2822 in #1269
- Use ID to match DB collections with content provider collections by @sunkup in #1274
- Move authority and ContentProvider creation to LocalDataStore by @rfc2822 in #1272
Full Changelog: v4.4.6-ose...v4.4.7-ose
v4.4.6-ose
What's Changed
New features
- Login: trimmed URLs for URI generation by @ArnyminerZ in #1202
- Change warning when Internet is not available by @sunkup in #1255
- Debug info: print all workers by @ArnyminerZ in #1200
- Show a warning if calendar or contacts storage is deactivated or missing by @sunkup in #1243
Bug fixes
- Rename account with jtx collection: IllegalArgumentException by @ArnyminerZ in #1198
- Collection list refresh: Don't update fetched homesets by @sunkup in #1222
- Don't remove port from URI of nextcloud login intent by @sunkup in #1242
- Fix show only personal setting not updating the view immediately by @sunkup in #1238
Refactoring
- Simplify TasksAppManager and TasksAppWatcher by @rfc2822 in #1193
AccountSettings
: allow to create new instances during migrations by @rfc2822 in #1195- Sync workers: use data type enum instead of specific authority by @rfc2822 in #1177
- [Push] Upon notification, only enqueue sync for the respective service type by @ArnyminerZ in #1175
- Use bundleOf and contentValuesOf, if applicable by @rfc2822 in #1204
- DB: move migrations to separate files and use DI by @rfc2822 in #1206
- Drop address books authority by @sunkup in #1217
- Remove test account type by @rfc2822 in #1224
- Use StringDef to annotate possible service and collection types by @sunkup in #1227
- Make room entity properties immutable by @sunkup in #1218
- Use DB StringDefs also in DAOs and methods where they are used by @ArnyminerZ in #1252
- Replaced
LocalContext
casting withLocalActivity
by @ArnyminerZ in #1261
Other changes
- Hide sync entries in system accounts by @rfc2822 in #1214
- Update AUTHORS and copyright notices by @rfc2822 in #1232
Full Changelog: v4.4.5-ose...v4.4.6-ose