Releases: bitfireAT/davx5-ose
Release list
v4.5.16-ose
What's Changed
✨ New features
🪲 Bug fixes
- Run garbage collection when ical4j's
ZoneIdPoolruns empty by @cketti in #2526 - Remove duplicate ez-vcard version from product ID by @rfc2822 in #2534
HTTP-dateparsing 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
AttachmentsBuilderby @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
JtxObjectBuilderby @sunkup in #2521 - [jtx rewrite] Add
AttachmentsHandlerby @cketti in #2516 - [jtx rewrite] Implement Completed PercentComplete and Priority handlers by @ArnyminerZ in #2514
- [jtx rewrite] Add all handlers into
JtxObjectHandler.entityHandlersby @ArnyminerZ in #2528 - [jtx rewrite] Update
JtxSyncManagerto 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
LoginValidatorandSyncValidatoruse 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
v4.5.16-beta.1-ose
What's Changed
✨ New features
🪲 Bug fixes
- Run garbage collection when ical4j's
ZoneIdPoolruns empty by @cketti in #2526 - Remove duplicate ez-vcard version from product ID by @rfc2822 in #2534
HTTP-dateparsing 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
AttachmentsBuilderby @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
JtxObjectBuilderby @sunkup in #2521 - [jtx rewrite] Add
AttachmentsHandlerby @cketti in #2516 - [jtx rewrite] Implement Completed PercentComplete and Priority handlers by @ArnyminerZ in #2514
- [jtx rewrite] Add all handlers into
JtxObjectHandler.entityHandlersby @ArnyminerZ in #2528 - [jtx rewrite] Update
JtxSyncManagerto 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
v4.5.15-ose
What's Changed
🪲 Bug fixes
- Fix formatting in
gplv3.htmlby @rfc2822 in #2349 - Fix
DateTimeExceptioninDatePropertyTzMapper.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
SequenceUpdaterand 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,UnknownPropertiesHandlernot using sub-values by @sunkup in #2358 - [DmfsTask] Implement
DmfsTaskHandlerfunctionality by @cketti in #2367 - Implement
DmfsTaskBuilder.buildandDmfsTaskBuilder.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
UidBuilderby @cketti in #2424 - [jtx rewrite] Add
SummaryBuilderby @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->CONTACTby @ArnyminerZ in #2441 - [jtx rewrite] Add builder
UrlBuilder->URLby @ArnyminerZ in #2442 - [jtx rewrite] Add builder
LocationBuilder->LOCATION+LOCATION_ALTREPby @ArnyminerZ in #2443 - [jtx rewrite] Add builder
GeoBuilder->GEO_LAT+GEO_LONGby @ArnyminerZ in #2444 - [jtx rewrite] Add
RelatedToBuilderby @cketti in #2440 - [jtx rewrite] Add
UnknownPropertiesBuilderby @cketti in #2439 - [jtx rewrite] Add CompletedBuilder by @sunkup in #2438
- Don't inherit
LocalJtxICalObjectandLocalJtxCollectionfrom 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
SequenceandUIDby @ArnyminerZ in #2466 - [jtx rewrite] Add builder
GeofenceRadiusBuilder->GEOFENCE_RADIUSby @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
AttendeesBuilderby @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
AddressContractby @rfc2822 in #2489 - [Contacts rewrite] Move extra column definitions and companion object from
Local...to synctools by @rfc2822 in #2492 - [Contacts rewrite] Decouple
LocalAddressBookfromAndroidAddressBookby @rfc2822 in #2493 - [Contacts rewrite] Decouple
LocalContactandLocalGroupfrom 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-logicmodule by @rfc2822 in #2276 - Fix DmfsTasksContract imports by @rfc2822 in #2364
- [jtx rewrite] Fix
main/fromconfusion 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
v4.5.14-ose
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=DATEparam to all-dayExDatetasks by @sunkup in #2347 - Fix
DateTimeExceptioninDatePropertyTzMapper.normalizedDateby @ArnyminerZ in #2342
🛠️ Refactoring
- [synctools] DmfsTask: Remove legacy
ical4android.DmfsTaskby @sunkup in #2288 - Unify
String.trimToNullin core/synctools by @rfc2822 in #2286 - [DmfsTasks rewrite] implement property row handlers by @ArnyminerZ in #2273
- DmfsTask: Migrate descriptive field builders to
VToDoby @ArnyminerZ in #2294 - Implement DmfsTaskList CRUD operations by @rfc2822 in #2300
- [DmfsTask] Create
DmfsTaskFieldHandler2interface by @cketti in #2306 - Add support for recurring tasks with DmfsRecurringTaskList by @rfc2822 in #2312
- Replace
DmfsTaskPropertyHandlerwithDmfsTaskFieldHandlerby @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,CompletedHandlerby @cketti in #2311 - Unify
DmfsTaskListProviderAPI with calendar API by @rfc2822 in #2322 - DmfsTask: Migrate main field builders to
VToDoby @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,OrganizerHandlerby @cketti in #2319 - [DmfsTask] Update
PercentCompleteHandler,PriorityHandler,RecurrenceFieldsHandlerby @cketti in #2336 - DmfsTask: Update
AlarmsHandler,CategoriesHandlerandCommentsHandlerby @sunkup in #2343 - [DmfsTask] Update
RelationsHandler,SequenceHandler,StartTimeHandlerby @cketti in #2337 - DmfsTask: Update
RecurrenceFieldsBuilderto allowmaintask 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
v4.5.14-rc.1-ose
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=DATEparam to all-dayExDatetasks by @sunkup in #2347 - Fix
DateTimeExceptioninDatePropertyTzMapper.normalizedDateby @ArnyminerZ in #2342
🛠️ Refactoring
- [synctools] DmfsTask: Remove legacy
ical4android.DmfsTaskby @sunkup in #2288 - Unify
String.trimToNullin core/synctools by @rfc2822 in #2286 - [DmfsTasks rewrite] implement property row handlers by @ArnyminerZ in #2273
- DmfsTask: Migrate descriptive field builders to
VToDoby @ArnyminerZ in #2294 - Implement DmfsTaskList CRUD operations by @rfc2822 in #2300
- [DmfsTask] Create
DmfsTaskFieldHandler2interface by @cketti in #2306 - Add support for recurring tasks with DmfsRecurringTaskList by @rfc2822 in #2312
- Replace
DmfsTaskPropertyHandlerwithDmfsTaskFieldHandlerby @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,CompletedHandlerby @cketti in #2311 - Unify
DmfsTaskListProviderAPI with calendar API by @rfc2822 in #2322 - DmfsTask: Migrate main field builders to
VToDoby @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,OrganizerHandlerby @cketti in #2319 - [DmfsTask] Update
PercentCompleteHandler,PriorityHandler,RecurrenceFieldsHandlerby @cketti in #2336 - DmfsTask: Update
AlarmsHandler,CategoriesHandlerandCommentsHandlerby @sunkup in #2343 - [DmfsTask] Update
RelationsHandler,SequenceHandler,StartTimeHandlerby @cketti in #2337 - DmfsTask: Update
RecurrenceFieldsBuilderto allowmaintask 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-rc.1-ose
v4.5.13-ose
What's Changed
🪲 Bug fixes
- Move
AccountSettingsaccess inCollectionScreenViewModeloff 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
UnsupportedOperationExceptionwhen parsing inline attachment in JtxICalObject by @rfc2822 in #2275 - Work around ical4j/ical4j#880 with
TemporalAdapterCompatby @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
synctoolsby @rfc2822 in #2218 - Migrate
DavCollectionRepositoryto Ktor by @rfc2822 in #2224 - Update imports to use
synctoolsinstead ofvcard4androidby @rfc2822 in #2228 - Update bitfire-synctools and refactor vCard generation to use
StringWriterby @rfc2822 in #2241 - Update bitfire-synctools and replace direct
ContactvCard 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
✏️ 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-ose
v4.5.13-rc.1-ose
What's Changed
🪲 Bug fixes
- Move
AccountSettingsaccess inCollectionScreenViewModeloff 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
UnsupportedOperationExceptionwhen parsing inline attachment in JtxICalObject by @rfc2822 in #2275 - Work around ical4j/ical4j#880 with
TemporalAdapterCompatby @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
synctoolsby @rfc2822 in #2218 - Migrate
DavCollectionRepositoryto Ktor by @rfc2822 in #2224 - Update imports to use
synctoolsinstead ofvcard4androidby @rfc2822 in #2228 - Update bitfire-synctools and refactor vCard generation to use
StringWriterby @rfc2822 in #2241 - Update bitfire-synctools and replace direct
ContactvCard 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
✏️ 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
v4.5.12-ose
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.setDynamicShortcutson IO dispatcher by @ArnyminerZ in #2197 - Fix various compile warnings by @rfc2822 in #2204
LocalAddressBook: takegroupMethodas 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
preconfigurationUrlby @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
...ViewModelsuffix 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-propertyfor core, too by @rfc2822 in #2212
Full Changelog: v4.5.10-ose...v4.5.12-ose
v4.5.12-rc.2-ose
What's Changed
Refactoring
- Update DmfsTask import path in task-related classes by @sunkup in #2192
- Run
ShortcutManager.setDynamicShortcutson IO dispatcher by @ArnyminerZ in #2197 - Fix various compile warnings by @rfc2822 in #2204
LocalAddressBook: takegroupMethodas argument by @rfc2822 in #2213
Dependencies
- 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
- 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
...ViewModelsuffix 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-propertyfor core, too by @rfc2822 in #2212
Full Changelog: v4.5.12-beta.1-ose...v4.5.12-rc.2-ose
v4.5.12-beta.1-ose
What's Changed
Refactoring
- [UI] Properly provide color schemes over DI by @rfc2822 in #1966
- Reduce BuildConfig dependencies by @rfc2822 in #1969
- Replace BuildConfig.allowCustomCerts by DI by @rfc2822 in #1971
- Move OSE code to separate package by @rfc2822 in #1974
- Split app into
coreandapp-osesubprojects by @rfc2822 in #1975 - Better DI modules by @rfc2822 in #1982
- Add
SyncValidatorby @ArnyminerZ in #1987 - Remove unused launcher colors by @sunkup in #2000
- Replace Weblate engage WebView with a button by @ArnyminerZ in #2016
- Revert "[DAVx⁵ Select] Allow customization of account UI" by @ArnyminerZ in #2043
- 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
Dependencies
- Bump the app-dependencies group with 7 updates by @dependabot[bot] in #1985
- Bump the app-dependencies group with 6 updates by @dependabot[bot] in #2007
- Bump the app-dependencies group with 6 updates by @dependabot[bot] in #2028
- Bump androidx.compose:compose-bom from 2026.02.00 to 2026.02.01 in the app-dependencies group by @dependabot[bot] in #2046
- Update own lib dependencies by @rfc2822 in #2059
- 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
Other changes
- [CI] Fix tests after splitting into subprojects by @rfc2822 in #1991
- [CI] Rename main branch references by @rfc2822 in #1993
- Translations update from Hosted Weblate by @weblate in #1986
- Split subprojects: fix ProGuard configuration by @rfc2822 in #1995
- [CI] Fix paths and configuration after subproject split by @rfc2822 in #1997
- Reduce HTTP User-Agent string by @rfc2822 in #1998
- Remove @rfc2822 as code owner by @rfc2822 in #2002
- Issue templates: add needs triage by @rfc2822 in #2008
- Add account to beforeSync validation by @sunkup in #2011
- Update label format in qualified bug report template by @rfc2822 in #2021
- [ExternalUris] Add link to DAVx⁵ Select section on davx5.com homage in by @sunkup in #2030
- [DAVx⁵ Select] Allow customization of account UI by @ArnyminerZ in #2035
- Fix
AppLicenseInfoProviderbinding by @cketti in #2045 - Translations update from Hosted Weblate by @weblate in #2050
- 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
preconfigurationUrlby @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
New Contributors
Full Changelog: v4.5.9-ose...v4.5.12-beta.1-ose