Fixes four of the five open bug reports, plus #97 (mailbox.org sign-in, reported by email). - **#92 widgets reverting / "Can't load content"**: R8's horizontal class merging folded `TodayWidget`, `UpNextWidget`, `ListsWidget` and `WeekWidget` into one class. Glance maps providers to receivers by class name, so `TodayWidget().updateAll()` also targeted every Up Next, Lists and Week slot. Any slot without a running session got Today's composition, which is why widgets turned into the Today ring. In a 4x1 slot the ring size goes negative and Glance shows its error layout. A keep rule for `GlanceAppWidget` subclasses stops the merge. I checked the fresh `fullReleaseTest` mapping: all five classes are separate and none has a `$r8$classId`. - **#70 crash in ru-RU**: fixed in floret-kit (jlmakiola/floret-kit#20). Its year-stripping regex broke `d MMM y 'г'.` into an unterminated quote. The new version also keeps the dot that closes the day-month part (de-DE `05.03.`). That PR is merged; the submodule points at its tip, which is on floret-kit main. - **#86 widget padding**: when the Tasks widget drops its redundant section label (e.g. the Today list), a spacer above the list now puts the first row 8dp under the header (one `widget_tasks_header_gap` dimen shared with the preview), as in the preview, instead of 2dp. - **#76 "Starts" clipped**: the label and values in the task form's Starts/Due rows share one line when they fit. Otherwise the values move to their own end-aligned line, using a `FlowRow` rather than a custom layout. The time can wrap under the date, and the clear button always keeps its 40dp. - **#97 mailbox.org sign-in ("isn't a CalDAV server")**: the SRV/TXT lookup never reached the network. dnsjava was never set up for Android, so every lookup came back empty. mailbox.org's server is only published by SRV (`dav.mailbox.org`), so discovery fell back to `mailbox.org/.well-known/caldav`, which redirects to `auto.mailbox.org` and answers 405. Posteo (SRV-only, port 8443) hit the same dead end. Lookups now go through `android.net.DnsResolver.rawQuery` (minSdk is 29), so they follow the current network and honour Private DNS. SRV and TXT are queried at once under one 10s deadline, and a failure reads as no records. The wait stops as soon as the sign-in is cancelled, and answered lookups are kept for a minute so the signed-in pass does not ask again. `:caldav` only parses the raw answers (`DnsAnswers`, which replaces `DnsJavaResolver`). PRIVACY.md now says so. - If an email address still finds no server, the address step switches straight to a server-address field with its own explanation, rather than ending at an error. That also happens when nothing answered for the domain (a mail-only domain), with the error left visible in case it was a typo or no network, and after a sign-in on the email domain. The email (without a `mailto:` prefix) is kept as the username for the sign-in step, and Back returns to the email. Not included: **#75** (ticking in the 2x2 widget does nothing). The widget is most likely Today, which was one of the merged classes, so this may fix it too. I couldn't show the link from the code, so the issue stays open until it's checked on a device. Closes #70, closes #76, closes #86, closes #92, closes #97 Co-authored-by: Jean-Luc Makiola <business@jeanlucmakiola.de> Reviewed-on: https://codeberg.org/jlmakiola/agendula/pulls/96
28 lines
1.4 KiB
Prolog
28 lines
1.4 KiB
Prolog
# Keep Hilt-generated classes
|
|
-keep class dagger.hilt.** { *; }
|
|
-keep @dagger.hilt.android.HiltAndroidApp class *
|
|
|
|
# Room instantiates its generated <Database>_Impl reflectively through a no-arg
|
|
# constructor. R8 under AGP 9 keeps the class but prunes that constructor, since
|
|
# nothing calls it directly — Room then throws InstantiationException, reported
|
|
# as "Failed to create an instance of ...". This first bit us through a
|
|
# transitive Room (Glance -> WorkManager -> WorkDatabase, built at startup:
|
|
# issue #1); Glance is gone and Room is now our own task store, so the rule
|
|
# matters more, not less — TasksDatabase is built on the first store read.
|
|
-keep class * extends androidx.room.RoomDatabase { <init>(); }
|
|
|
|
# Compose Compiler may keep its own; defaults are fine
|
|
-dontwarn org.jetbrains.annotations.**
|
|
|
|
# dnsjava (CalDAV SRV/TXT discovery) references JNA, JNDI, Lombok and SLF4J
|
|
# bindings that only exist on desktop JVMs; its Android resolver needs none.
|
|
-dontwarn com.sun.jna.**
|
|
-dontwarn javax.naming.**
|
|
-dontwarn lombok.Generated
|
|
-dontwarn org.slf4j.impl.StaticLoggerBinder
|
|
|
|
# Glance maps each widget to its receivers by the provider's class name. R8's
|
|
# class merging folded the GlanceAppWidget subclasses into one class, so they
|
|
# all shared a name and redrew each other's slots (#92).
|
|
-keep class * extends androidx.glance.appwidget.GlanceAppWidget { <init>(); }
|