Skip to content

feat: restructure Settings home and hide developer tools#1428

Open
agent-p1p wants to merge 1 commit into
masterfrom
pip/whitenoise-android-1128
Open

feat: restructure Settings home and hide developer tools#1428
agent-p1p wants to merge 1 commit into
masterfrom
pip/whitenoise-android-1128

Conversation

@agent-p1p

@agent-p1p agent-p1p commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Summary

  • reorganize Settings into the requested ordered rows while preserving the profile card, support card, and footer
  • add Help and About surfaces with bug reporting, version/MarmotKit SHA, OSS licenses, and privacy policy
  • move developer controls behind the seven-tap About version gate and nest Key Packages under Account & keys
  • localize the new Settings copy across all supported locales

Verification

  • ./gradlew :app:compileDevZapstoreDebugKotlin :app:compileDevPlayDebugKotlin
  • ./gradlew :app:testDevZapstoreDebugUnitTest :app:testDevPlayDebugUnitTest
  • ./gradlew :app:verifyRoborazziDevZapstoreDebug :app:verifyRoborazziDevPlayDebug
  • ./gradlew :app:ktlintCheck
  • ./gradlew :app:lintDevZapstoreDebug :app:lintDevPlayDebug
  • independent pre-commit review passed with no blocking findings

Fixes #1128


Open in Stage

Summary by CodeRabbit

  • New Features
    • Reorganized Settings into Account & Keys, Device Privacy, Help, About, and Developer sections.
    • Added Help and About pages with bug reporting, privacy policy, version details, and open-source license information.
    • Added Key Packages navigation from Account & Keys.
    • Added developer tools with diagnostics and streaming debug controls.
    • Developer mode can be unlocked by tapping the About version seven times.
  • Style
    • Improved composer settings presentation.
  • Documentation
    • Updated settings labels and supporting text across available languages.

Add Help and About surfaces, move developer controls behind the seven-tap version gate, and regroup privacy, account, and composer settings.

Verified by independent pre-commit review.

Fixes #1128
@coderabbitai

coderabbitai Bot commented Jul 15, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

Restructures the Settings home into account, device privacy, Help, About, and hidden Developer surfaces. Adds seven-tap developer unlocking, OSS license viewing, updated navigation, composer labeling, localized strings, tests, and Gradle OSS license integration.

Changes

Settings restructuring

Layer / File(s) Summary
OSS license integration
gradle/libs.versions.toml, build.gradle.kts, app/build.gradle.kts
Adds the OSS Licenses plugin, dependency, and version catalog entries.
Settings navigation model
app/src/main/java/dev/ipf/whitenoise/android/ui/navigation/AppDestinations.kt, app/src/main/java/dev/ipf/whitenoise/android/ui/settings/SettingsScreen.kt, app/src/test/.../SettingsNavigationTest.kt
Defines the new settings sections, row ordering, developer-mode visibility, seven-tap threshold, and updated detail routing.
Settings screens and interactions
app/src/main/java/dev/ipf/whitenoise/android/ui/settings/*Screen.kt, app/src/main/java/dev/ipf/whitenoise/android/ui/navigation/MainShell.kt
Adds Help, About, and Developer screens; renames Account and Device Privacy screens; moves developer controls and adds license, privacy-policy, bug-report, and key-package actions.
Localized settings copy
app/src/main/res/values*/strings.xml
Updates account/device privacy terminology and adds localized Help, About, licensing, privacy-policy, developer-unlock, MarmotKit SHA, and composer strings.

Estimated code review effort: 4 (Complex) | ~45 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The PR implements the requested Settings row reorg, renames, Help/About surfaces, composer section, and hidden seven-tap developer gate.
Out of Scope Changes check ✅ Passed The added Gradle and localization changes support the Settings/About/license work and no unrelated code changes stand out.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly reflects the main changes: reorganizing Settings home and hiding developer tools behind a gate.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch pip/whitenoise-android-1128

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@stage-review

stage-review Bot commented Jul 15, 2026

Copy link
Copy Markdown

Ready to review this PR? Stage has broken it down into 6 individual chapters for you:

Title
1 Add OSS licenses dependency
2 Define new Settings navigation structure
3 Localize new Settings strings
4 Implement Help, About, and Developer screens
5 Refactor existing Settings screens
6 Wire screens into Settings home
Open in Stage

Chapters generated by Stage for commit a5cf3e4 on Jul 15, 2026 5:07pm UTC.

@github-actions

Copy link
Copy Markdown

Preview APK for PR #1428

Home-screen label: 1428 White Noise with the blueprint launcher icon — installs side-by-side with the production and staging apps.

Install directly — one tap, no GitHub sign-in (public, content-addressed .apk). ARM64 only.

Every push to this PR rebuilds and updates this comment.

@agent-p1p agent-p1p left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pip adversarial review — a5cf3e4a

BLOCKING:
none

SUGGESTION:

  • Behavioral navigation coverageapp/src/test/java/dev/ipf/whitenoise/android/ui/navigation/SettingsNavigationTest.kt:8: the new tests validate the static row list and >= 7 helper, but not the actual Compose wiring. Add coverage for Help → About → seven version taps → Developer row, plus the nested About → Help and Key Packages → Account & keys back paths. An instrumented smoke test that opens the OSS licenses activity would also guard the main new external screen.

NITPICK:

  • External-link failures are silentapp/src/main/java/dev/ipf/whitenoise/android/ui/settings/HelpAboutScreens.kt:136: runCatching prevents a crash when no browser can handle Report a bug or Privacy policy, but the tap becomes a no-op. Consider presenting a short unavailable message on failure.

SUMMARY: The change is well-scoped and matches the requested IA. Row order and renames are complete; Help/About, the seven-tap Developer gate, nested back navigation, and localized copy are wired consistently. The renamed sensitive surfaces preserve the existing app-lock/telemetry and nsec/sign-out behavior. I also verified the merged manifest assigns Theme.Material3.DayNight.NoActionBar to the v2 OSS licenses activity and the runtime classpath includes AppCompat, so that screen's theme integration is sound. Local SettingsNavigationTest passed 3/3 and :app:ktlintCheck passed. No blocking findings.

VERDICT: APPROVE

SENSITIVE_PATHS: app/src/main/java/dev/ipf/whitenoise/android/ui/settings/AccountKeysScreen.kt; app/src/main/java/dev/ipf/whitenoise/android/ui/settings/DevicePrivacyScreen.kt

@agent-p1p

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 15, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
app/src/main/java/dev/ipf/whitenoise/android/ui/settings/AppearanceScreen.kt (1)

120-124: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Align subheader styling with other settings screens.

Consider applying the onSurfaceVariant color and horizontal padding to this subheader to ensure consistent visual alignment with the settings rows beneath it, matching the pattern used for similar subheaders (e.g., the app lock delay subheader in DevicePrivacyScreen).

💅 Proposed styling tweak
                 SectionCard(title = stringResource(R.string.composer)) {
                     Text(
                         text = stringResource(R.string.enter_key_behavior_title),
                         style = MaterialTheme.typography.labelLarge,
+                        color = MaterialTheme.colorScheme.onSurfaceVariant,
+                        modifier = Modifier.padding(horizontal = 16.dp),
                     )
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/src/main/java/dev/ipf/whitenoise/android/ui/settings/AppearanceScreen.kt`
around lines 120 - 124, The composer subheader Text in AppearanceScreen should
match the styling used by comparable settings subheaders. Update the Text under
SectionCard for the composer section to use the theme’s onSurfaceVariant color
and the same horizontal padding pattern as the app lock delay subheader in
DevicePrivacyScreen, while preserving its existing typography and text resource.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In
`@app/src/main/java/dev/ipf/whitenoise/android/ui/settings/AppearanceScreen.kt`:
- Around line 120-124: The composer subheader Text in AppearanceScreen should
match the styling used by comparable settings subheaders. Update the Text under
SectionCard for the composer section to use the theme’s onSurfaceVariant color
and the same horizontal padding pattern as the app lock delay subheader in
DevicePrivacyScreen, while preserving its existing typography and text resource.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: aea673e7-c1b8-4311-a4ee-43c9c45e2552

📥 Commits

Reviewing files that changed from the base of the PR and between ef5cfc9 and a5cf3e4.

📒 Files selected for processing (22)
  • app/build.gradle.kts
  • app/src/main/java/dev/ipf/whitenoise/android/ui/navigation/AppDestinations.kt
  • app/src/main/java/dev/ipf/whitenoise/android/ui/navigation/MainShell.kt
  • app/src/main/java/dev/ipf/whitenoise/android/ui/settings/AccountKeysScreen.kt
  • app/src/main/java/dev/ipf/whitenoise/android/ui/settings/AppearanceScreen.kt
  • app/src/main/java/dev/ipf/whitenoise/android/ui/settings/DeveloperScreen.kt
  • app/src/main/java/dev/ipf/whitenoise/android/ui/settings/DevicePrivacyScreen.kt
  • app/src/main/java/dev/ipf/whitenoise/android/ui/settings/HelpAboutScreens.kt
  • app/src/main/java/dev/ipf/whitenoise/android/ui/settings/SettingsScreen.kt
  • app/src/main/res/values-b+zh+Hant/strings.xml
  • app/src/main/res/values-de/strings.xml
  • app/src/main/res/values-es/strings.xml
  • app/src/main/res/values-fr/strings.xml
  • app/src/main/res/values-it/strings.xml
  • app/src/main/res/values-pt/strings.xml
  • app/src/main/res/values-ru/strings.xml
  • app/src/main/res/values-tr/strings.xml
  • app/src/main/res/values-zh/strings.xml
  • app/src/main/res/values/strings.xml
  • app/src/test/java/dev/ipf/whitenoise/android/ui/navigation/SettingsNavigationTest.kt
  • build.gradle.kts
  • gradle/libs.versions.toml

@agent-p1p
agent-p1p marked this pull request as ready for review July 15, 2026 17:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Restructure Settings home to 6 rows + hidden Developer surface

1 participant