Fix Fragment view leak and edge-to-edge/contrast UI polish issues - #606
Merged
Conversation
Five small, independent fixes triaged in OPEN_ISSUES_TRIAGE.md (WI-7, WI-8): - #586: TrackersFragment held its SwipeRefreshLayout in a field with no onDestroyView(), leaking the View (and Activity context) on every details-screen recreation. Null the field in a new onDestroyView(). - #575: The WireGuard/VPN screen's RecyclerView had no bottom window-inset handling, so the last row was hidden under the gesture/navigation bar. Pad it by the system bar inset in VpnFragment, mirroring the per-view WindowInsetsCompat listener pattern already used elsewhere (ActivityLog, ActivitySettings, DetailsActivity, ActivityMain). - #551: The onboarding Next/Previous buttons used a flat 16dp bottom margin, so they could be clipped by the nav bar on edge-to-edge displays. Consume the bottom system-bar inset as extra margin. - #560: The "Manage WireGuard profiles" footer link used colorAccent, which in night mode (#4db6ac) reads as low-contrast/muted against the dark surface. Add a brighter dedicated colorFooterLink for night mode and mark the text bold so it reads clearly as a link. - #559: The traffic-log toggle's custom RocketSwitch.NoIcon style zeroed out trackDecorationTint, removing the Material3 track outline and leaving the inactive track looking like a bare thumb. Restore the outline for that variant only, leaving the rocket-icon main power switch (RocketSwitch, used by ActivityMain) untouched. Needs a maintainer visual confirmation pass since this could not be screenshotted in this environment. Compile-checked with :app:compileGithubDebugJavaWithJavac (BUILD SUCCESSFUL, including the Rust wgbridgeBuild step via preBuild). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
kasnder
marked this pull request as ready for review
July 11, 2026 00:43
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Five small, independent UI-polish fixes, batched into one PR per the triage in
OPEN_ISSUES_TRIAGE.md(WI-7, WI-8). Draft PR for maintainer review.Checklist
TrackersFragmentheld itsSwipeRefreshLayoutin a field with noonDestroyView(), leaking the View (and Activity context) on every details-screen recreation. AddedonDestroyView()that nulls the field.WindowInsetsCompatlistener inVpnFragment(mirrors the pattern already used inActivityLog/ActivitySettings/DetailsActivity/ActivityMain); did not touchActivityMain.java.ActivityOnboarding.?attr/colorAccent, which in night mode (#4db6ac) reads as muted/low-contrast against the dark surface. Added a brighter dedicatedcolorFooterLinkfor night mode and made the text bold so it clearly reads as a link.RocketSwitch.NoIconstyle zeroed outtrackDecorationTint, removing the Material3 track outline and leaving the inactive track looking like a bare thumb rather than a switch. Restored the outline for that style variant only, leaving the rocket-icon main power switch (RocketSwitch, used byActivityMain) untouched.Notes
origin/master(includes PR Fix bottom nav bar overlap on edge-to-edge displays #597 inset fixes and PR Fix lock deadlocks, production NPE, connection leaks, and log typo #539 code-review fixes), so the diff here is limited to these five changes.ActivityMain.java,CountriesFragment.java, orOPEN_ISSUES_TRIAGE.md, per scope.Test plan
./gradlew :app:compileGithubDebugJavaWithJavac— BUILD SUCCESSFUL (includes the RustwgbridgeBuildstep viapreBuild;cargowas available in this environment).🤖 Generated with Claude Code