Skip to content

PPR-101: Decompose monolithic ProfilePage into modular section widgets - #26

Merged
Eoic merged 3 commits into
PapyrusReader:masterfrom
sneed-and-feed:refactor/PPR-101-decompose-profile-page
Sep 26, 2026
Merged

Eoic merged 3 commits into
PapyrusReader:masterfrom
sneed-and-feed:refactor/PPR-101-decompose-profile-page

Conversation

@sneed-and-feed

Copy link
Copy Markdown
Contributor

PPR-101: Decompose monolithic ProfilePage into modular section widgets

Summary

Decomposes ProfilePage (app/lib/pages/profile_page.dart) from a 1,961-line monolithic widget into 10 focused, self-contained section widgets under app/lib/widgets/profile/. This reduces profile_page.dart to 286 lines (-1,675 lines) while maintaining 100% feature parity, responsive layout contracts, and design token fidelity.

Changes

  • Extracted 10 section widgets:
    • AccountSettingsSection
    • AppearanceSettingsSection
    • ReadingSettingsSection
    • LibrarySettingsSection
    • NotificationsSettingsSection
    • StorageSyncSettingsSection
    • PrivacySettingsSection
    • AccessibilitySettingsSection
    • DeveloperSettingsSection
    • AboutSettingsSection
  • Created reusable ProfilePickerSheet for modal selection dialogs.
  • Fixed Material clipping assertions under modern Flutter for list tile tap splashes.

Testing

# Modular section unit & widget tests
flutter test test/widgets/profile/

# End-to-end ProfilePage integration (mobile scrolling & desktop sidebar navigation)
flutter test test/pages/profile_page_test.dart

# Existing storage & sync integration regression tests
flutter test test/pages/profile_storage_sync_test.dart

# Static analysis
flutter analyze --no-fatal-warnings --no-fatal-infos

Extract 10 distinct settings sections from ProfilePage into dedicated, reusable widgets in widgets/profile/

Reduce profile_page.dart from 1,961 lines to 286 lines while preserving 100% UI and behavioral compatibility.

Add dedicated widget test coverage for the modular section widgets.

All existing profile tests and full Flutter analysis pass cleanly.
Verify mobile full scroll flow and desktop sidebar navigation across all 10 settings sections and logout dialog.
@Eoic
Eoic requested a lite review from Copilot September 26, 2026 02:24

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@Eoic
Eoic merged commit 08599aa into PapyrusReader:master Sep 26, 2026
1 check passed
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.

3 participants