Conversation
The troubleshoot screen exposed anonymization as a plain on/off switch that kept no state: it reset to off on every fragment recreation, so a bundle went up unanonymized unless the user toggled it again right before uploading. The strict level the Go binding already exports was unreachable, because EngineRunner passed AnonymizeLevelDefault unconditionally. Replace the switch with a None / Default / Strict picker that mirrors the desktop client. The selection persists in the app-wide SharedPreferences and defaults to Default. The row moves from the Logging section into the Debug bundle section, since it only affects the bundle. The picker is a bottom sheet built on the existing SplitTunnelModeSheet pattern, so each level carries a description explaining what it hides. The level-to-parameter mapping follows the desktop client: "none" turns the anonymize flag off, and the daemon only ever sees "default" or "strict". Level names and descriptions are taken from the already translated desktop strings for all ten locales.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (19)
Included review availability: Your plan provides up to 2 included reviews per hour; 1 remains after this review. 📝 WalkthroughWalkthroughThe troubleshoot screen now lets users select None, Default, or Strict anonymization. The selected level is stored in preferences and passed through the VPN service to debug bundle generation. The screen layout and localized strings support the new selector. ChangesDebug bundle anonymization
Priority: ⬇️ Low Estimated code review effort: 3 (Moderate) | ~20 minutes Change: Feature Sequence Diagram(s)sequenceDiagram
participant TroubleshootFragment
participant AnonymizeLevelSheet
participant Preferences
participant MainActivity
participant VPNService
participant EngineRunner
TroubleshootFragment->>AnonymizeLevelSheet: Open level picker
AnonymizeLevelSheet->>TroubleshootFragment: Return selected level
TroubleshootFragment->>Preferences: Save anonymize level
TroubleshootFragment->>MainActivity: Request debug bundle
MainActivity->>VPNService: Forward anonymize and anonymizeLevel
VPNService->>EngineRunner: Forward debug bundle parameters
EngineRunner->>EngineRunner: Call goClient.debugBundle
Merge Risk: ⚪ Minimal · up to The selected anonymization level is persisted and reaches debug bundle generation as intended, with no actionable merge risk identified. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 3.33% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 30 functions across 7 files. (12 skipped: 12 unsupported.)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. A rabbit reads each line, Comment |
The troubleshoot screen exposed anonymization as a plain on/off switch that kept no state: it reset to off on every fragment recreation, so a bundle went up unanonymized unless the user toggled it again right before uploading. The strict level the Go binding already exports was unreachable, because EngineRunner passed AnonymizeLevelDefault unconditionally.
Replace the switch with a None / Default / Strict picker that mirrors the desktop client. The selection persists in the app-wide SharedPreferences and defaults to Default. The row moves from the Logging section into the Debug bundle section, since it only affects the bundle.
The picker is a bottom sheet built on the existing SplitTunnelModeSheet pattern, so each level carries a description explaining what it hides. The level-to-parameter mapping follows the desktop client: "none" turns the anonymize flag off, and the daemon only ever sees "default" or "strict".
Level names and descriptions are taken from the already translated desktop strings for all ten locales.
Summary by CodeRabbit