DAVx⁵ Updates & Release Notes
26 updates curated from 1 source by the Releasebot Team. Last updated: Oct 14, 2026
- Oct 15, 2026
- Date parsed from source:Oct 15, 2026
- First seen by Releasebot:Oct 14, 2026
- Modified by Releasebot:Oct 16, 2026
v4.5.21-ose
DAVx⁵ releases an update that adds an Android 17 local network permission request and confirmation before disabling collection could remove local data. It also fixes sync conflicts and other reliability issues, including handling incomplete server responses and release build crashes.
What's Changed
✨ New features
- Add local network access permission request (Android 17) by @ArnyminerZ in #2908
- [UI] Require user to confirm local data removal or loss when disabling collection by @sunkup in #2930
🪲 Bug fixes
- Fix sync conflict for locally modified, but remotely deleted resources + related cases by @sunkup in #2886
- Fix Windows builds and improve determinism on tests by @TheScarastic in #2912
- Have back icon button go to previous page instead of always quitting the login flow by @sunkup in #2887
- Fix release build crash because of missing aboutlibraries.json after shrinking by @sunkup in #2928
- Skip empty carddav and caldav member responses by @sunkup in #2942
- Normalize member URLs when received from server by @ArnyminerZ in #2940
- Skip and log resources without ETags instead of failing sync by @sunkup in #2944
- Make LocalStorageClient rethrow exceptions unrelated to RemoteException by @cketti in #2953
⛓️ Dependencies
- Update dependencies (including Ktor), remove IoCoroutineWorker by @dependabot[bot] in #2902
- [l10n] Bump l10n from 5f723eb to e4b3e82 by @dependabot[bot] in #2901
- Bump the app-dependencies group with 6 updates by @dependabot[bot] in #2925
- [l10n] Bump l10n from e4b3e82 to 52788a1 by @dependabot[bot] in #2926
- [l10n] Bump l10n from 52788a1 to 1a1c1f7 by @dependabot[bot] in #2927
- [CI] Bump gradle/actions from 6.3.0 to 6.4.0 in the ci-actions group by @dependabot[bot] in #2937
- Bump com.google.guava:guava from 33.7.1-android to 33.7.2-android in the app-dependencies group by @dependabot[bot] in #2945
- [l10n] Bump l10n from 1a1c1f7 to 686b6f1 by @dependabot[bot] in #2949
⚙️ CI/CD
- Auto merge translation update PRs when tests succeed and notify on failure by @sunkup in #2922
✏️ Other changes
- Adjust stat parameters in URLs by @ArnyminerZ in #2904
- Throw LocalStorageException instead of RemoteException (part 1) by @cketti in #2913
- Throw LocalStorageException instead of RemoteException (part 2) by @cketti in #2914
- Throw LocalStorageException instead of RemoteException (part 3) by @cketti in #2916
- Throw LocalStorageException instead of RemoteException (part 4) by @cketti in #2917
- Throw LocalStorageException instead of RemoteException (part 5) by @cketti in #2918
- Throw LocalStorageException instead of RemoteException (part 6) by @cketti in #2920
- Throw LocalStorageException instead of RemoteException (part 7) by @cketti in #2921
- Throw LocalStorageException instead of RemoteException (part 8) by @cketti in #2923
New Contributors
- @TheScarastic made their first contribution in #2912
Full Changelog: v4.5.20-ose...v4.5.21-ose
Original source - Oct 14, 2026
- Date parsed from source:Oct 14, 2026
- First seen by Releasebot:Oct 15, 2026
v4.5.21-rc.2-ose
DAVx⁵ fixes LocalStorageClient so it rethrows exceptions unrelated to RemoteException.
What's Changed
🪲 Bug fixes
- Make LocalStorageClient rethrow exceptions unrelated to RemoteException by @cketti in #2953
Full Changelog: v4.5.21-rc.1-ose...v4.5.21-rc.2-ose
Original source All of your release notes in one feed
Join Releasebot and get updates from bitfire and hundreds of other software products.
- Sep 16, 2026
- Date parsed from source:Sep 16, 2026
- First seen by Releasebot:Sep 17, 2026
v4.5.20-beta.2-ose
DAVx⁵ ships a beta update with build and reliability improvements, including reproducible build tweaks, release signing options, URL path fixes, better collection handling, improved failed resource detection, and clearer account configuration logs.
What's Changed
✏️ Other changes
- Disable dependenciesInfo block for reproducible builds by @rfc2822 in #2871
- Do not exclude at.bitfire.** from optimization/shrinking by @mbiebl in #2862
- Bump the app-dependencies group across 1 directory with 4 updates by @dependabot[bot] in #2874
- Add debug signing config option for release builds by @rfc2822 in #2875
- Distinguish empty path from literal slash in Url.lastSegment by @xhon-pelushi in #2797
- Ensure Collection.url and HomeSet.url end with a slash by @cketti in #2881
- Bump org.slf4j:slf4j-jdk14 from 2.0.18 to 2.0.19 in the app-dependencies group by @dependabot[bot] in #2883
- Wrap RemoteException when using BatchOperation by @cketti in #2884
- Improve failed resource detection page by @sunkup in #2885
- Fix opaque log message for account configuration by @mbiebl in #2879
- [l10n] Bump l10n from 955f1e4 to 5f723eb by @dependabot[bot] in #2894
New Contributors
- @xhon-pelushi made their first contribution in #2797
Full Changelog: v4.5.20-beta.1-ose...v4.5.20-beta.2-ose
Original source - Sep 5, 2026
- Date parsed from source:Sep 5, 2026
- First seen by Releasebot:Sep 6, 2026
- Modified by Releasebot:Oct 16, 2026
v4.5.20-beta.1-ose
DAVx⁵ releases a beta with helpful links on the debug screen, improved push update handling, and fixes for sync issues and Digest authentication. The update also improves sync cancellation and error handling.
What's Changed
✨ New features
- [Debug info screen] Show links to helpful resources by @ArnyminerZ in #2684
🪲 Bug fixes
- [jtx Board] Filter known properties from OTHER properties in VALARMs by @rfc2822 in #2716
- Fix sync always-pending issue (again) by @rfc2822 in #2721
- Update dav4jvm to fix Digest auth by @rfc2822 in #2735
- Propagate Sync Cancellation and Exceptions Correctly by @sunkup in #2813
- [Push] Add content-update trigger and content-encoding by @rfc2822 in #2860
⚙️ CI/CD
- [CI] Bump stefanzweifel/git-auto-commit-action from 5 to 7 in the ci-actions group by @dependabot[bot] in #2714
- [CI] Bump gradle/actions from 6 to 6.2.0 in the ci-actions group by @dependabot[bot] in #2742
- [CI] Bump gradle/actions from 6.2.0 to 6.3.0 in the ci-actions group by @dependabot[bot] in #2793
- Add workflow to mirror english original strings to davx5-translations by @sunkup in #2799
- Test string mirror workflow by @sunkup in #2804
- Cleanup test string by @sunkup in #2805
- Update string for testing translation CI by @sunkup in #2819
- Revert string update for testing translation CI by @sunkup in #2822
- Add string for testing translation CI by @sunkup in #2829
- Delete string for testing translation CI by @sunkup in #2830
- Use translations from the l10n submodule by @sunkup in #2831
- Update error message for missing translations directory by @sunkup in #2845
- Move update contributors logic to submodule by @ArnyminerZ in #2861
- [CI] Bump actions/setup-java from 5 to 6 in the ci-actions group by @dependabot[bot] in #2865
- Disable Dependabot cooldown for l10n submodule by @rfc2822 in #2869
✏️ Other changes
- [Release notes] Remove refactoring category; include Dependabot again by @rfc2822 in #2713
- Bump the app-dependencies group with 3 updates by @dependabot[bot] in #2715
- Update dav4jvm to 4.0.0, add Ktor deadlock test by @rfc2822 in #2712
- [Coroutines] Check WebDAV package by @ArnyminerZ in #2703
- Update JtxBoard min version to 2.17.00 by @rfc2822 in #2711
- AccountId refactoring (part 3) by @cketti in #2644
- AccountId refactoring (part 4) by @cketti in #2722
- AccountId refactoring (part 5) by @cketti in #2724
- AccountId refactoring (part 6) by @cketti in #2725
- [Sync] Take settings snapshot for synchronization by @rfc2822 in #2718
- AccountId refactoring (part 7) by @cketti in #2727
- Clean up applicationScope usage by @rfc2822 in #2723
- AccountId refactoring (part 8) by @cketti in #2730
- Unify DAO method naming and convert easy blocking calls by @rfc2822 in #2736
- Simplify SyncException handling by @rfc2822 in #2737
- [UI] Debug info: clarify wording of 5xx "contact server support" message by @rfc2822 in #2733
- Bump the app-dependencies group with 8 updates by @dependabot[bot] in #2743
- [SyncManager] Extract/reorganize some methods by @rfc2822 in #2744
- AccountId refactoring (part 9) by @cketti in #2732
- [SyncManager] Simplify localCollection argument by @rfc2822 in #2745
- [SyncManager] Simplify SyncResult members by @rfc2822 in #2746
- AccountId refactoring (part 10) by @cketti in #2748
- Extract SyncPendingProvider from SyncFrameworkIntegration by @cketti in #2754
- AccountId refactoring (part 11) by @cketti in #2758
- [SyncManager] Change syncRemote() to process Flow by @rfc2822 in #2751
- Create davCollection in Syncer instead of SyncManager by @rfc2822 in #2752
- Introduce remote WebDavCollection by @rfc2822 in #2757
- [SyncManager] Move capability querying into WebDavCollection by @rfc2822 in #2759
- [SyncManager] Move querySyncState() responsibility to WebDavCollection by @rfc2822 in #2764
- [SyncManager] Move deleteMember to WebDavCollection by @rfc2822 in #2767
- [SyncManager] Move upload PUT logic into WebDavCollection by @rfc2822 in #2773
- AccountId refactoring (part 12) by @cketti in #2771
- [SyncManager] Move multi-get into WebDavCollection by @rfc2822 in #2777
- [SyncManager] Rewrite syncRemote() as a flow pipeline by @rfc2822 in #2778
- [SyncManager] Split syncRemote() into processListing() / processChanges() by @rfc2822 in #2779
- [SyncManager] Extract listFilteredMembers() into WebDavCollection by @rfc2822 in #2774
- [SyncManager] Extract listChanges by @rfc2822 in #2781
- [VCardParser] Clarify handling of invalid vCards by @rfc2822 in #2785
- [SyncNotificationManager] Take notification tag ownership by @rfc2822 in #2787
- AccountId refactoring (part 13) by @cketti in #2776
- [DI] Inject AccountManager via Hilt by @rfc2822 in #2789
- Fix LocalAddressBookStoreTest by @rfc2822 in #2795
- [SyncManager] Extract SyncExceptionHandler to own sync error handling by @rfc2822 in #2783
- Update PR template for AI contributions by @rfc2822 in #2798
- Separate AccountSettings from actual storage by @ArnyminerZ in #2749
- [SyncManager] Extract upload step into own method by @rfc2822 in #2800
- AccountId refactoring (part 14) by @cketti in #2806
- AccountId refactoring (part 15) by @cketti in #2807
- AccountId refactoring (part 16) by @cketti in #2809
- AccountId refactoring (part 17) by @cketti in #2810
- Place calendar components after timezone definition by @ArnyminerZ in #2816
- Allow to store AccountSettings in DB by @ArnyminerZ in #2803
- Bump the app-dependencies group across 1 directory with 7 updates by @dependabot[bot] in #2818
- Move Local* classes to resource.local package by @rfc2822 in #2832
- Throw exception when retrying an upload by @cketti in #2834
- Bump com.squareup.okhttp3:okhttp from 5.4.0 to 5.5.0 in the app-dependencies group by @dependabot[bot] in #2836
- Split AGENTS.md for core/synctools; add instructions for blocking/suspending by @rfc2822 in #2840
- Test all AccountSettingsStore implementations by @cketti in #2835
- Make LocalResource.clearDirty() suspending by @rfc2822 in #2839
- Make LocalResource.updateUid() suspending by @rfc2822 in #2841
- Make LocalCollection.markNotDirty() and forgetETags() suspending by @rfc2822 in #2843
- Make LocalResource.updateFlags() suspending by @rfc2822 in #2844
- Make LocalResource.updateSequence()/deleteLocal()/resetDeleted() suspend by @rfc2822 in #2846
- Treat 502 (BadGateway) as soft error by @ArnyminerZ in #2858
- Bump the app-dependencies group with 10 updates by @dependabot[bot] in #2855
- Only use dependencies label for dependabot submodule updates by @ArnyminerZ in #2864
- Bump the app-dependencies group with 3 updates by @dependabot[bot] in #2866
- Move fastlane metadata to translations by @ArnyminerZ in #2863
- [l10n] Bump l10n from b61ffc6 to 955f1e4 by @dependabot[bot] in #2854
Full Changelog: v4.5.19-ose...v4.5.20-beta.1-ose
Original source - Aug 3, 2026
- Date parsed from source:Aug 3, 2026
- First seen by Releasebot:Jul 28, 2026
- Modified by Releasebot:Oct 16, 2026
v4.5.19-ose
DAVx⁵ releases an update with fixes for task syncing, digest authentication, calendar handling, and logging, alongside behind-the-scenes improvements to asynchronous operations and a cleaner startup experience.
What's Changed
🪲 Bug fixes
- Backport from main: fix preemptive digest auth – bitfireAT/dav4jvm#219
- Include correct tasks provider package in PRODID by @rfc2822 in #2671
- [jtx] Don't crash when main component is missing by @cketti in #2674
- Translator list in app is wrong (DAVx5 / About / Translators) by @ArnyminerZ in #2683
- Fix task dirty flag regression with properties by @rfc2822 in #2697
- Make view/share logs primary action of verbose logging notification by @cketti in #2706
🛠️ Refactoring
- [WebDAV] make operation signatures and DB access suspendable by @rfc2822 in #2660
- Use suspending methods for SyncWorkerManager by @ArnyminerZ in #2657
- Unify StartupPlugin sync/async calls → StartupAction.onAppCreate() by @rfc2822 in #2662
- [Coroutines] Clean up AppSettingsViewModel by @ArnyminerZ in #2694
✏️ Other changes
- Android10Resolver: use asyncSend instead of runBlocking by @rfc2822 in #2659
- Remove blocking call from RefreshCollectionsWorker by @cketti in #2686
- [Coroutines] Fix blocking calls in push message handling by @rfc2822 in #2685
- Avoid using runBlocking in AutomaticSyncManager by @cketti in #2687
- [dav4jvm] Migrate from callback to Flow<MultiStatusItem> by @rfc2822 in #2640
- Remove runBlocking() from account settings migrations by @cketti in #2699
- [Coroutines] Clean up AccountSettings by @cketti in #2704
- Remove autostart permission hint by @rfc2822 in #2710
Full Changelog: v4.5.18-ose...v4.5.19-ose
Original source Similar to DAVx⁵ with recent updates:
- Gemini updates445 release notes · Latest Oct 20, 2026
- Claude updates168 release notes · Latest Oct 15, 2026
- Proton updates24 release notes · Latest Jun 9, 2026
- Proton Pass updates41 release notes · Latest Oct 10, 2026
- Mistral updates83 release notes · Latest Oct 21, 2026
- Mistral Inference updates7 release notes · Latest Mar 20, 2025
- Jul 18, 2026
- Date parsed from source:Jul 18, 2026
- First seen by Releasebot:Jul 19, 2026
v4.5.18-ose
DAVx⁵ ships bug fixes and internal improvements, including better group handling, read-only collection syncing, HTTP proxy threading, and I/O task handling. It also refactors sync logic, updates build tooling, and adds a “tested with” link on login screens.
What's Changed
🪲 Bug fixes
- Propagate GroupMethod to AndroidAddressBook by @rfc2822 in #2651
- Read-only collections: reset instead of upload local changes by @rfc2822 in #2643
- Fix threading for building HTTP proxies by @ArnyminerZ in #2647
- Use IO dispatcher instead of default dispatcher by @cketti in #2653
- Introduce IoCoroutineWorker for I/O-bound tasks by @rfc2822 in #2665
🛠️ Refactoring
- [SyncManager] Replace SyncDispatcher by explicit concurrency control; make batch-downloading testable by @rfc2822 in #2616
✏️ Other changes
- Convert AccountSettingsActivity to use AccountId by @cketti in #2629
- Update AGP to 9.3.0 and enable parallel tooling by @rfc2822 in #2648
- Document F-Droid version parsing in AppVersion.kt by @rfc2822 in #2649
- Add link to "tested with" page on login screens by @rfc2822 in #2652
- Replace @MainDispatcher by Dispatchers.Main and add @RealMainDispatcher for tests by @rfc2822 in #2650
Full Changelog: v4.5.17.1-ose...v4.5.18-ose
Original source - Jul 17, 2026
- Date parsed from source:Jul 17, 2026
- First seen by Releasebot:Jul 19, 2026
v4.5.18-rc.1-ose
DAVx⁵ ships bug fixes and refactoring, including better Ktor authentication handling, improved group sync behavior, read-only collection handling, and threading fixes for HTTP proxies, plus Android build and login screen updates.
What's Changed
🪲 Bug fixes
- [Ktor] Update dav4jvm to fix preemptive Basic/Digest problem by @rfc2822 in #2633
- Propagate GroupMethod to AndroidAddressBook by @rfc2822 in #2651
- Read-only collections: reset instead of upload local changes by @rfc2822 in #2643
- Fix threading for building HTTP proxies by @ArnyminerZ in #2647
🛠️ Refactoring
- [SyncManager] Replace SyncDispatcher by explicit concurrency control; make batch-downloading testable by @rfc2822 in #2616
✏️ Other changes
- [Ktor] Use OkHttp logging format by @rfc2822 in #2631
- Convert AccountSettingsActivity to use AccountId by @cketti in #2629
- Update AGP to 9.3.0 and enable parallel tooling by @rfc2822 in #2648
- Document F-Droid version parsing in AppVersion.kt by @rfc2822 in #2649
- Add link to "tested with" page on login screens by @rfc2822 in #2652
- Replace @MainDispatcher by Dispatchers.Main and add @RealMainDispatcher for tests by @rfc2822 in #2650
- Use IO dispatcher instead of default dispatcher by @cketti in #2653
Full Changelog: v4.5.17.1-ose...v4.5.18-rc.1-ose
Original source - Jul 10, 2026
- Date parsed from source:Jul 10, 2026
- First seen by Releasebot:Jul 10, 2026
- Modified by Releasebot:Sep 17, 2026
v4.5.17.1-ose
DAVx⁵ releases a hotfix and maintenance update that fixes Digest authentication and improves HTTP logging, while also tightening Ktor handling, OAuth and client auth, XML and JSON negotiation, database schema, and several sync and vCard cleanups.
4.5.17.1 (hotfix)
Fix problem with Digest authentication – #2633
Improve HTTP logging format – #2631
4.5.17
What's Changed
🪲 Bug fixes
[Ktor] Handle explicit Content-Encoding: identity by @rfc2822 in #2618
Add validation and tests for jtx objects by @rfc2822 in #2620
Send proper Accept headers for XML, make JSON content negotiation optional by @rfc2822 in #2624
🛠️ Refactoring
[ktor] Use ktor-client-auth by @cketti in #2599
[Ktor] Migrate OAuth to ktor-client-auth by @rfc2822 in #2601
Make HttpClientBuilder immutable by @rfc2822 in #2610
[ktor] Replace okhttp mock server in testing with ktor-client-mock MockEngine by @ArnyminerZ in #2596
✏️ Other changes
Fix java.util.Logger parameter formatting in synctools by @rfc2822 in #2604
Finish MessageFormat logging cleanup by @rfc2822 in #2607
Preserve TEL ext= URI parameter when mapping vCard phone numbers to Android by @mvanhorn in #2558
Add HttpUrl.toKtorUrl() helper for tests by @cketti in #2602
Hide activity intent details by @cketti in #2612
Add account and account_setting tables to DB schema by @rfc2822 in #2613
Introduce AccountId type by @cketti in #2615
Translations update from Hosted Weblate by @weblate in #2628
New Contributors
@mvanhorn made their first contribution in #2558
Full Changelog: v4.5.16-ose...v4.5.17.1-ose
Original source - Jul 9, 2026
- Date parsed from source:Jul 9, 2026
- First seen by Releasebot:Jul 10, 2026
- Jul 6, 2026
- Date parsed from source:Jul 6, 2026
- First seen by Releasebot:Jul 7, 2026
v4.5.16-ose
DAVx⁵ adds RAM info to debug output, fixes several sync and parsing bugs, and continues a major Ktor migration across WebDAV, HTTP, and synchronization. It also updates ical4j, improves memory handling, and includes broad refactoring and translation updates.
What's Changed
✨ New features
Add RAM info to debug info by @sunkup in #2527
🪲 Bug fixes
Run garbage collection when ical4j's ZoneIdPool runs empty by @cketti in #2526
Remove duplicate ez-vcard version from product ID by @rfc2822 in #2534
HTTP-date parsing error: add regression test, fix by updating dav4jvm by @rfc2822 in #2541
Ignore unsupported recurring task exceptions by @rfc2822 in #2554
🛠️ Refactoring
[jtx rewrite] Add AttachmentsBuilder by @cketti in #2506
[jtx rewrite] Implement unknown properties handler by @sunkup in #2500
Reduce storage layer API surface: use iterate pattern instead of returning lists by @rfc2822 in #2509
[Contacts rewrite] Move photo access to AndroidAddressBook by @rfc2822 in #2512
[jtx rewrite] Implement date handlers by @ArnyminerZ in #2476
[Contacts rewrite] Create CRUD for raw contacts and groups by @rfc2822 in #2515
Add RecurrenceFieldsHandler with tests by @sunkup in #2502
[jtx rewrite] Deduplicate in the handlers by @sunkup in #2522
[jtx rewrite] Add remaining builders to JtxObjectBuilder by @sunkup in #2521
[jtx rewrite] Add AttachmentsHandler by @cketti in #2516
[jtx rewrite] Implement Completed PercentComplete and Priority handlers by @ArnyminerZ in #2514
[jtx rewrite] Add all handlers into JtxObjectHandler.entityHandlers by @ArnyminerZ in #2528
[jtx rewrite] Update JtxSyncManager to use new jtx board API by @cketti in #2529
Migrate WebDAV file access to Ktor by @rfc2822 in #2540
[Service detection] Add LogCapture for bounded log capture by @rfc2822 in #2543
Use FileLoggerFactory for service detection logging by @rfc2822 in #2546
[jtx rewrite] Remove old jtx code by @cketti in #2536
[ical4j] Use system ZoneIds for system-known TZIDs by @rfc2822 in #2539
[jtx rewrite] Implement reminders handler by @ArnyminerZ in #2538
Migrate service detection to Ktor by @rfc2822 in #2544
[Ktor] Use Ktor for WebDAV mount creation by @cketti in #2565
[Ktor] Use Ktor for synchronization by @ArnyminerZ in #2561
Replace OkHttp cookie handling with Ktor's HttpCookies plugin by @sunkup in #2570
Update DavException and HttpException imports from okhttp to ktor by @sunkup in #2574
Migrate HTTP client config from OkHttp to Ktor by @sunkup in #2577
[ktor] Clean up okhttp in DB, helpers etc by @cketti in #2575
SyncManager: Don't load all changed objects into memory at once by @cketti in #2581
Make LoginValidator and SyncValidator use suspending functions by @cketti in #2578
Update ical4j to 4.3.0 by @ArnyminerZ in #2583
Remove OkHttp client builder by @sunkup in #2584
Migrate many iterate callbacks to Flow by @rfc2822 in #2588
[.sync] Replace runBlocking with suspend functions by @rfc2822 in #2590
[Ktor] Remove duplicate OkHttp logging and compression interceptors by @rfc2822 in #2593
[Ktor] Add User-Agent header via Ktor plugin by @rfc2822 in #2592
[Ktor] Migrate socket timeout and proxy configuration by @rfc2822 in #2594
✏️ Other changes
Add Claude Code GitHub Workflow by @rfc2822 in #2530
[DmfsTask] Fix UID generation by @cketti in #2532
Update dependencies & bump version to 4.5.16-rc.1 by @rfc2822 in #2597
Translations update from Hosted Weblate by @weblate in #2598
Full Changelog: v4.5.15-ose...v4.5.16-ose
Original source - Jun 23, 2026
- Date parsed from source:Jun 23, 2026
- First seen by Releasebot:Jun 23, 2026
v4.5.16-beta.1-ose
DAVx⁵ ships a beta release with new debug RAM info, bug fixes for garbage collection, HTTP date parsing, recurring tasks and product ID handling, plus major rewrite work across jtx, Contacts and WebDAV file access.
What's Changed
✨ New features
- Add RAM info to debug info by @sunkup in #2527
🪲 Bug fixes
- Run garbage collection when ical4j's ZoneIdPool runs empty by @cketti in #2526
- Remove duplicate ez-vcard version from product ID by @rfc2822 in #2534
- HTTP-date parsing error: add regression test, fix by updating dav4jvm by @rfc2822 in #2541
- Ignore unsupported recurring task exceptions by @rfc2822 in #2554
🛠️ Refactoring
- [jtx rewrite] Add AttachmentsBuilder by @cketti in #2506
- [jtx rewrite] Implement unknown properties handler by @sunkup in #2500
- Reduce storage layer API surface: use iterate pattern instead of returning lists by @rfc2822 in #2509
- [Contacts rewrite] Move photo access to AndroidAddressBook by @rfc2822 in #2512
- [jtx rewrite] Implement date handlers by @ArnyminerZ in #2476
- [Contacts rewrite] Create CRUD for raw contacts and groups by @rfc2822 in #2515
- Add RecurrenceFieldsHandler with tests by @sunkup in #2502
- [jtx rewrite] Deduplicate in the handlers by @sunkup in #2522
- [jtx rewrite] Add remaining builders to JtxObjectBuilder by @sunkup in #2521
- [jtx rewrite] Add AttachmentsHandler by @cketti in #2516
- [jtx rewrite] Implement Completed PercentComplete and Priority handlers by @ArnyminerZ in #2514
- [jtx rewrite] Add all handlers into JtxObjectHandler.entityHandlers by @ArnyminerZ in #2528
- [jtx rewrite] Update JtxSyncManager to use new jtx board API by @cketti in #2529
- Migrate WebDAV file access to Ktor by @rfc2822 in #2540
- [Service detection] Add LogCapture for bounded log capture by @rfc2822 in #2543
- Use FileLoggerFactory for service detection logging by @rfc2822 in #2546
- [jtx rewrite] Remove old jtx code by @cketti in #2536
- [ical4j] Use system ZoneIds for system-known TZIDs by @rfc2822 in #2539
- [jtx rewrite] Implement reminders handler by @ArnyminerZ in #2538
✏️ Other changes
- Add Claude Code GitHub Workflow by @rfc2822 in #2530
- [DmfsTask] Fix UID generation by @cketti in #2532
Full Changelog: v4.5.15-ose...v4.5.16-beta.1-ose
Original source - Jun 20, 2026
- Date parsed from source:Jun 20, 2026
- First seen by Releasebot:Jun 21, 2026
v4.5.15-ose
DAVx⁵ ships bug fixes and major internal refactoring, including all-day event timezone handling, query exception handling, and broad task, calendar, contact, and jtx rewrite work that modernizes storage, builders, and handlers.
What's Changed
🪲 Bug fixes
Fix formatting in gplv3.html by @rfc2822 in #2349
Fix DateTimeException in DatePropertyTzMapper.normalizedDates() by @cketti in #2352
Excluding exceptions in queries of ...Recurring... classes by @rfc2822 in #2371
Fix all-day event timezone handling (always treat as UTC) by @rfc2822 in #2484
🛠️ Refactoring
DmfsTask: Migrate unknown properties and URL handlers to VToDo by @sunkup in #2346
DmfsTask: extract SequenceUpdater and move it out of storage access layer by @rfc2822 in #2354
Create DmfsTaskContract similar to EventsContract by @rfc2822 in #2362
[Dmfstask] Fix AlarmsHandler, CategoriesHandler, CommentsHandler, UnknownPropertiesHandler not using sub-values by @sunkup in #2358
[DmfsTask] Implement DmfsTaskHandler functionality by @cketti in #2367
Implement DmfsTaskBuilder.build and DmfsTaskBuilder.buildTask. by @ArnyminerZ in #2351
DmfsTask: update sync to use new storage/mapping API by @rfc2822 in #2366
DmfsTasks: Remove deprecated Task... classes (old API) by @rfc2822 in #2372
Re-organize legacy ical4android code and tests by @rfc2822 in #2373
[jtx rewrite] Add UidBuilder by @cketti in #2424
[jtx rewrite] Add SummaryBuilder by @cketti in #2430
[jtx rewrite] Add ComponentBuilder by @sunkup in #2431
[jtx rewrite] Add ExtendedStatusBuilder by @sunkup in #2432
[jtx rewrite] Add PriorityBuilder by @sunkup in #2434
[jtx rewrite] Add ClassificationBuilder by @sunkup in #2433
[jtx rewrite] Add PercentCompleteBuilder by @sunkup in #2435
[jtx rewrite] Add builder ContactBuilder -> CONTACT by @ArnyminerZ in #2441
[jtx rewrite] Add builder UrlBuilder -> URL by @ArnyminerZ in #2442
[jtx rewrite] Add builder LocationBuilder -> LOCATION+LOCATION_ALTREP by @ArnyminerZ in #2443
[jtx rewrite] Add builder GeoBuilder -> GEO_LAT+GEO_LONG by @ArnyminerZ in #2444
[jtx rewrite] Add RelatedToBuilder by @cketti in #2440
[jtx rewrite] Add UnknownPropertiesBuilder by @cketti in #2439
[jtx rewrite] Add CompletedBuilder by @sunkup in #2438
Don't inherit LocalJtxICalObject and LocalJtxCollection from synctools jtx Board API by @rfc2822 in #2447
[jtx rewrite] Add ColorBuilder by @sunkup in #2448
[jtx rewrite] Add CreatedBuilder by @sunkup in #2464
[jtx rewrite] Add LastModifiedBuilder by @sunkup in #2465
[jtx rewrite] Add handlers for Sequence and UID by @ArnyminerZ in #2466
[jtx rewrite] Add builder GeofenceRadiusBuilder -> GEOFENCE_RADIUS by @ArnyminerZ in #2446
[jtx rewrite] Add test for DirtyAndDeletedBuilder by @sunkup in #2468
Migrate to new JtxCollection storage backend class by @rfc2822 in #2471
[jtx rewrite] Add DtStampBuilder by @sunkup in #2467
[jtx rewrite] Add SequenceBuilder by @sunkup in #2463
[jtx rewrite] Add AttendeesBuilder by @cketti in #2472
Add LocationHandler and GeoHandler with tests by @sunkup in #2479
Add AttendeesHandler by @sunkup in #2481
[jtx rewrite] Add OrganizerHandler with tests by @sunkup in #2482
[jtx rewrite] Add OrganizerBuilder by @sunkup in #2469
Add ResourcesHandler by @sunkup in #2480
[jtx rewrite] Implement basic info handlers by @ArnyminerZ in #2474
(Re)move legacy ical4android code and tests by @rfc2822 in #2485
Move UnknownProperty to mapping package by @rfc2822 in #2487
Use test fixtures for shared test helpers by @rfc2822 in #2494
[Contacts rewrite] Merge existing contact/group contracts into AddressContract by @rfc2822 in #2489
[Contacts rewrite] Move extra column definitions and companion object from Local... to synctools by @rfc2822 in #2492
[Contacts rewrite] Decouple LocalAddressBook from AndroidAddressBook by @rfc2822 in #2493
[Contacts rewrite] Decouple LocalContact and LocalGroup from base classes by @rfc2822 in #2503
Close and deprecate AndroidContact and AndroidGroup by @rfc2822 in #2507
Add RelatedToHandler with tests by @sunkup in #2501
✏️ Other changes
Extract common Gradle configuration into build-logic module by @rfc2822 in #2276
Fix DmfsTasksContract imports by @rfc2822 in #2364
[jtx rewrite] Fix main/from confusion in builders by @cketti in #2437
Simplify TaskProvider by @rfc2822 in #2477
Add code style into repo; plus some reformatted sample files by @rfc2822 in #2478
Move app version info to centralized AppVersion object by @rfc2822 in #2495
Translations update from Hosted Weblate by @weblate in #2511
Full Changelog: v4.5.14-ose...v4.5.15-ose
Original source - Jun 5, 2026
- Date parsed from source:Jun 5, 2026
- First seen by Releasebot:Jun 4, 2026
- Modified by Releasebot:Jul 19, 2026
v4.5.14-ose
DAVx⁵ ships bug fixes for jtx Board all-day dates and alarm triggers, while refactoring synctools and DmfsTask handling, including recurring tasks and field builders. It also updates translations and uses a forked ical4j snapshot.
What's Changed
🪲 Bug fixes
Add VALUE=DATE for RECURRENCE-ID in all-day jtx Board items by @rfc2822 in #2297
Fix alarm trigger logic and simplify code by @rfc2822 in #2341
[jtxBoard] Add VALUE=DATE param to all-day ExDate tasks by @sunkup in #2347
Fix DateTimeException in DatePropertyTzMapper.normalizedDate by @ArnyminerZ in #2342
🛠️ Refactoring
[synctools] DmfsTask: Remove legacy ical4android.DmfsTask by @sunkup in #2288
Unify String.trimToNull in core/synctools by @rfc2822 in #2286
[DmfsTasks rewrite] implement property row handlers by @ArnyminerZ in #2273
DmfsTask: Migrate descriptive field builders to VToDo by @ArnyminerZ in #2294
Implement DmfsTaskList CRUD operations by @rfc2822 in #2300
[DmfsTask] Create DmfsTaskFieldHandler2 interface by @cketti in #2306
Add support for recurring tasks with DmfsRecurringTaskList by @rfc2822 in #2312
Replace DmfsTaskPropertyHandler with DmfsTaskFieldHandler by @ArnyminerZ in #2289
DmfsTask: Migrate sub field builders to VToDo by @sunkup in #2309
Migrate recurrence field builders to VToDo by @sunkup in #2308
DmfsTask: Migrate status field builders to VToDo by @sunkup in #2307
[DmfsTask] Update ClassificationHandler, ColorHandler, CompletedHandler by @cketti in #2311
Unify DmfsTaskListProvider API with calendar API by @rfc2822 in #2322
DmfsTask: Migrate main field builders to VToDo by @ArnyminerZ in #2321
Create draft for new API in DmfsTaskBuilder by @rfc2822 in #2330
DmfsTasks: draft DmfsTaskHandler with deprecation of DmfsTaskProcessor by @rfc2822 in #2333
[DmfsTask] Update GeoHandler, LocationHandler, OrganizerHandler by @cketti in #2319
[DmfsTask] Update PercentCompleteHandler, PriorityHandler, RecurrenceFieldsHandler by @cketti in #2336
DmfsTask: Update AlarmsHandler, CategoriesHandler and CommentsHandler by @sunkup in #2343
[DmfsTask] Update RelationsHandler, SequenceHandler, StartTimeHandler by @cketti in #2337
DmfsTask: Update RecurrenceFieldsBuilder to allow main task by @ArnyminerZ in #2335
DmfsTask: Migrate title, UID, and status handlers to VToDo by @sunkup in #2345
✏️ Other changes
Use (forked) snapshot version of ical4j by @cketti in #2344
Translations update from Hosted Weblate by @weblate in #2348
Full Changelog: v4.5.13-ose...v4.5.14-ose
Original source - May 29, 2026
- Date parsed from source:May 29, 2026
- First seen by Releasebot:May 29, 2026
- Modified by Releasebot:Jul 11, 2026
v4.5.13-rc.1-ose
DAVx⁵ fixes sync and calendar issues, improves contact and vCard handling, and refactors core data processing with synctools while updating CI and translations.
What's Changed
🪲 Bug fixes
Move AccountSettings access in CollectionScreenViewModel off main thread by @rfc2822 in #2217
PushDistributorManagerTest: fix mockking by @rfc2822 in #2215
Update calendar color generation to use RGB format by @rfc2822 in #2221
Create collection: treat 207 Multi-Status as error by @rfc2822 in #2223
Fix UnsupportedOperationException when parsing inline attachment in JtxICalObject by @rfc2822 in #2275
Work around ical4j/ical4j#880 with TemporalAdapterCompat by @rfc2822 in #2280
Gracefully handle ical4j property and Task toString() exceptions by @rfc2822 in #2279
Avoid NullPointerException when VTIMEZONE is missing STANDARD/DAYLIGHT by @cketti in #2285
🛠️ Refactoring
Move account/user data handling into synctools by @rfc2822 in #2218
Migrate DavCollectionRepository to Ktor by @rfc2822 in #2224
Update imports to use synctools instead of vcard4android by @rfc2822 in #2228
Update bitfire-synctools and refactor vCard generation to use StringWriter by @rfc2822 in #2241
Update bitfire-synctools and replace direct Contact vCard parsing/generating by refactored methods by @rfc2822 in #2242
Update bitfire-synctools and use new RawContactHandler/Builder by @rfc2822 in #2243
Move contact group membership and unknown property support to synctools by @rfc2822 in #2244
Integrate synctools as gradle submodule by @rfc2822 in #2250
[synctools tasks rewrite] Add RecurrenceFieldsHandler by @sunkup in #2274
⚙️ CI/CD
Remove AVD caching and add release branch to test workflow by @rfc2822 in #2225
✏️ Other changes
Unify copyright notice in synctools by @rfc2822 in #2251
Translations update from Hosted Weblate by @weblate in #2287
Full Changelog: v4.5.12-ose...v4.5.13-rc.1-ose
Original source - May 19, 2026
- Date parsed from source:May 19, 2026
- First seen by Releasebot:May 17, 2026
- Modified by Releasebot:May 19, 2026
v4.5.12-ose
DAVx⁵ ships a maintenance release with a Google Play workaround for WebDAV provider authority names, plus refreshed push settings, better sync and contact handling, improved compatibility, and broad dependency and build updates.
See also the announcement on Mastodon!
Note
We unfortunately had to change the content provider name for the DAVx⁵ WebDAV provider because Google Play didn't allow us to upload updates with the old name anymore (probably because of a Google Play bug, they say they'll fix it at some time). As a consequence:
If you use a DAVx⁵ WebDAV mount in another app (like Total Commander), the old mount in the other app will stop working and you'll have to add the mount again. No changes in DAVx⁵ needed.
It seems that there are unexpected problems with Seedvault because it contains the hardcoded old authority name in an allow list. Please see the discussion thread and seedvault-app/seedvault#1014 for more information.
What's Changed
Refactoring
- Rename NOTIFY_LICENSE to more generic NOTIFY_VALIDATION by @sunkup in #2115
- Split SyncValidator by @sunkup in #2138
- Separate Push distributor management and Push subscription management by @rfc2822 in #2157
- Update DmfsTask import path in task-related classes by @sunkup in #2192
- Run ShortcutManager.setDynamicShortcuts on IO dispatcher by @ArnyminerZ in #2197
- Fix various compile warnings by @rfc2822 in #2204
- LocalAddressBook: take groupMethod as argument by @rfc2822 in #2213
Dependencies
- Bump the app-dependencies group with 8 updates by @dependabot[bot] in #2064
- Bump the app-dependencies group with 8 updates by @dependabot[bot] in #2080
- PushRegistrationManager: fix repeated sending of requests by @rfc2822 in #2082
- Bump gradle-wrapper from 9.4.0 to 9.4.1 in the app-dependencies group by @dependabot[bot] in #2093
- [CI] Bump gradle/actions from 5 to 6 in the ci-actions group by @dependabot[bot] in #2109
- Bump the app-dependencies group with 8 updates by @dependabot[bot] in #2110
- Bump the app-dependencies group with 2 updates by @dependabot[bot] in #2129
- Bump the app-dependencies group with 4 updates by @dependabot[bot] in #2136
- [CI] Bump softprops/action-gh-release from 2 to 3 in the ci-actions group by @dependabot[bot] in #2135
- Bump com.google.guava:guava from 33.5.0-android to 33.6.0-android in the app-dependencies group by @dependabot[bot] in #2147
- Bump the app-dependencies group with 11 updates by @dependabot[bot] in #2163
- Bump the app-dependencies group with 3 updates by @dependabot[bot] in #2182
- Bump the app-dependencies group with 7 updates by @dependabot[bot] in #2208
Other changes
- Update ContactSyncManager to use IoDispatcher for I/O operations by @rfc2822 in #2066
- Add SUPPORT.md file by @rfc2822 in #2078
- Update README with improved content and formatting by @rfc2822 in #2081
- Fix PushRegistrationManager VAPID key check by @rfc2822 in #2088
- Add commented includeBuild configurations for debugging by @rfc2822 in #2096
- Remove dead code for jCard contact processing by @rfc2822 in #2079
- Enable lenient JSON parsing for improved compatibility by @rfc2822 in #2098
- Make lenientJson parser/serializer gc-able by @rfc2822 in #2101
- Fix pager state recreation on page count change by @rfc2822 in #2103
- AppTheme: fallback to OSE theme when Hilt Application is unavailable by @rfc2822 in #2102
- Derive debug info and WebDAV provider component names from package name by @rfc2822 in #2111
- Add gradle-daemon-jvm.properties and sync Java version by @rfc2822 in #2119
- Translations update from Hosted Weblate by @weblate in #2121
- Show number of (un)synced items in collection properties by @ArnyminerZ in #2114
- Add support for preconfigurationUrl by @ArnyminerZ in #2122
- Update CI label from "github_actions" to "ci-cd"; use build cache for prereleases by @rfc2822 in #2128
- AccountSettingsScreen: use dividers like in app settings by @rfc2822 in #2131
- CollectionScreen: improve local item counting by @rfc2822 in #2124
- Provide login validation for app variants by @sunkup in #2125
- ExternalUris: add DAVx5 Select info page path constant by @rfc2822 in #2139
- Translations update from Hosted Weblate by @weblate in #2140
- Add "Keep Android Open" dismissible action card by @sunkup in #2132
- Use auto-sizing text for intro slogan by @sunkup in #2146
- Bind push distributor expiration to endpoint by @rfc2822 in #2154
- Mention issue-before-PR in CONTRIBUTING.md and PR template by @rfc2822 in #2158
- Add initial AGENTS.md for code reviews by @rfc2822 in #2160
- Bump version to 4.5.12-beta.1 and update Copilot instructions by @rfc2822 in #2162
- Push settings screen: Minimum functionality by @sunkup in #2167
- Update compile SDK to 37 and AGP 9.x compatibility by @rfc2822 in #2177
- Push Settings: Add action card to set default UnifiedPush distributor by @sunkup in #2175
- Push Settings: Add push capability info card by @sunkup in #2178
- Update synctools to a version that uses ical4j 4.x by @rfc2822 in #2087
- Push settings screen: Reload on package changes by @sunkup in #2181
- Update synctools to fix R8 rules for release builds by @rfc2822 in #2191
- Rename ViewModels to ...ViewModel suffix by @rfc2822 in #2187
- [Push] Integrate new Push settings screen by @cketti in #2186
- Change debug info/WebDAV authority names to work around Google Play bug by @rfc2822 in #2201
- Translations update from Hosted Weblate by @weblate in #2202
- [Push] Update registration worker to actively select distributor by @ArnyminerZ in #2166
- Enable Kotlin annotation default target and clean up DI annotations by @rfc2822 in #2203
- Switch Kotlin annotation default target to param-property for core, too by @rfc2822 in #2212
Full Changelog: v4.5.10-ose...v4.5.12-ose
Original source
Curated by the Releasebot team
Releasebot is an aggregator of official product update announcements from hundreds of software vendors and thousands of sources.
Our editorial process involves the manual review and audit of release notes procured with the help of automated systems.