Conversation
|
@nmarteybotchway this is an extremely extensive set of changes, including a major design migration. probably too much to review at once. But would still be curious to hear from you if the approach runs for you |
|
@kasnder sure, I'll have a look at it and let you know, thanks |
Replace the manual edge-to-edge workaround in ApplicationEx (which only handled Android 15+ with custom insets/padding/background hacks) with a single EdgeToEdge.enable() call that works across all API levels. This uses SystemBarStyle.dark(colorPrimaryDark) for the status bar and transparent auto-scrim for the navigation bar. - Remove AppTheme.EdgeToEdge style and DetailsActivity manual setup - Migrate all AlertDialog.Builder → MaterialAlertDialogBuilder (7 files) - Migrate all TextAppearance.AppCompat → Material3 equivalents in XML - Migrate all Widget.AppCompat.Button → Material3 equivalents in XML - Migrate Theme.AppCompat/MaterialComponents → Material3 in layouts - Update ActionBarTitleText and text utility styles to M3 parents - Add explicit androidx.activity dependency for EdgeToEdge API https://claude.ai/code/session_01AKoCWnAeeHrRa4KjngEiTM
Without the explicit dark status bar style, EdgeToEdge.enable() defaults to transparent, and M3's light theme makes the status bar invisible. https://claude.ai/code/session_01AKoCWnAeeHrRa4KjngEiTM
The M3 migration section was completed work, not actionable. The important warning about dark status bar style now lives as a comment next to the EdgeToEdge.enable() call where it's most useful. https://claude.ai/code/session_01AKoCWnAeeHrRa4KjngEiTM
Proposes replacing the flat app list with a tracker activity timeline grouped by app and time, surfacing active blocking and mixed states to guide users toward DetailsActivity for adjustment. https://claude.ai/code/session_01AKoCWnAeeHrRa4KjngEiTM
Simplify to a standalone ActivityTimeline reachable from the menu. Drop the "active blocking" section in favor of a flat recency-sorted timeline. Emphasize unblocked tracker contacts as the scary/educational case. Main activity stays unchanged. https://claude.ai/code/session_01AKoCWnAeeHrRa4KjngEiTM
New ActivityTimeline reachable from the main activity menu. Shows a recency-sorted timeline of tracker contacts grouped by app, with per-company blocked/allowed indicators and time-bucket section headers. - TimelineEntry/TrackerContact: data models for grouped tracker activity - TimelineAdapter: RecyclerView adapter with section headers and entries - ActivityTimeline: queries access table, resolves tracker companies via TrackerList.findTracker(), groups by app, sorts by most recent - DB: getRecentTrackerActivity() groups by (uid, daddr, allowed) over 7 days - Menu: "Tracker activity" item between lockdown and traffic log - Tapping an entry navigates to DetailsActivity for that app https://claude.ai/code/session_01AKoCWnAeeHrRa4KjngEiTM
557d00d to
f2c438e
Compare
|
@kasnder I tested the application on both my tablet and the Android Studio Pixel 7 emulator. In both cases, the tracking statistics section on the menu page appears to be hidden beneath the app bar (see attached screenshot). However, when I click on a timeline entry, it correctly opens the detail activity for the selected app, but upon returning, it navigates back to the main page instead of the updated Tracker Activity timeline page. Reinstalling the application with VPN off and using applications with trackers (Duolingo) leads to no entries in the Tracker Activity timeline page - once VPN is turned back on and the same app is used, trackers are detected in the Tracker Activity page. From what I see, M3 Integration seems to be functional. |
|
thanks, @nmarteybotchway . i'll fix those changes and then create a new version |

Summary
EdgeToEdge.enable(), AlertDialog → MaterialAlertDialogBuilder, all remaining AppCompat/MaterialComponents XML references migratedDesign
Each timeline row shows:
Data comes from one SQL query grouping the
accesstable by(uid, daddr, allowed)over 7 days, with tracker resolution viaTrackerList.findTracker(). Non-tracker destinations are filtered out. No schema changes.Full design doc:
docs/design-timeline-main.mdNew files
ActivityTimeline.javaTimelineAdapter.javaTimelineEntry.javaTrackerContact.javaactivity_timeline.xmlitem_timeline_entry.xmlitem_timeline_section.xmldocs/design-timeline-main.mdTest plan
https://claude.ai/code/session_01AKoCWnAeeHrRa4KjngEiTM