bitfire Release Notes

Follow

26 release notes curated from 1 source by the Releasebot Team. Last updated: Oct 14, 2026

Get this feed:

bitfire Products

  • Oct 15, 2026
    • Date parsed from source:
      Oct 15, 2026
    • First seen by Releasebot:
      Oct 14, 2026
    • Modified by Releasebot:
      Oct 16, 2026
    bitfire logo

    DAVx⁵ by bitfire

    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
    bitfire logo

    DAVx⁵ by bitfire

    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.

    Create account
  • Sep 16, 2026
    • Date parsed from source:
      Sep 16, 2026
    • First seen by Releasebot:
      Sep 17, 2026
    bitfire logo

    DAVx⁵ by bitfire

    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
    bitfire logo

    DAVx⁵ by bitfire

    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
    bitfire logo

    DAVx⁵ by bitfire

    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 bitfire with recent updates:

  • Jul 18, 2026
    • Date parsed from source:
      Jul 18, 2026
    • First seen by Releasebot:
      Jul 19, 2026
    bitfire logo

    DAVx⁵ by bitfire

    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
    bitfire logo

    DAVx⁵ by bitfire

    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
    bitfire logo

    DAVx⁵ by bitfire

    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
    bitfire logo

    DAVx⁵ by bitfire

    v4.5.17-rc.1

    DAVx⁵ bumps version to 4.5.17-rc.1.

    Bump version to 4.5.17-rc.1

    Original source
  • Jul 6, 2026
    • Date parsed from source:
      Jul 6, 2026
    • First seen by Releasebot:
      Jul 7, 2026
    bitfire logo

    DAVx⁵ by bitfire

    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
    bitfire logo

    DAVx⁵ by bitfire

    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
    bitfire logo

    DAVx⁵ by bitfire

    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
    bitfire logo

    DAVx⁵ by bitfire

    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
    bitfire logo

    DAVx⁵ by bitfire

    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
    bitfire logo

    DAVx⁵ by bitfire

    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
Releasebot

Curated by the Releasebot team

Releasebot is an aggregator of official release notes 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.