feat: restructure app-list editing navigation#20
Merged
Conversation
Rework how app lists are reached and edited from the rule editor: - The rule editor's App List row now pushes the selection screen onto the editor's own navigation stack instead of presenting it as a sheet overlay; the back button returns. - Editing or creating a list opens it as a sheet overlay with a Close button and a checkmark confirm (in both the rule-editor flow and Settings > Manage App Lists, which share the library). - Closing the editor with outstanding edits raises the standard iOS "Discard Changes?" confirmation; swipe-to-dismiss is disabled while edits are outstanding. Dirty-detection extracted to a unit-tested AppListEditState. - The "Edit Apps" picker binds FamilyActivityPicker directly so selections apply live; its bottom Save button and toolbar checkmark are removed, leaving the list editor's checkmark as the single commit point. Updated the feature spec (3.7 / 6) and the app-list UI tests; added unit tests for outstanding-edit detection. Full suite green (245 tests). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Xeke7pAWJ9S4RiGc5hMghr
Integrates PR #16, which deleted Docs/AGENT_RULES_FEATURE_SPEC.md and folded the rules feature spec into `///` doc comments on the source each topic owns, indexed by the "Rules feature map" in AGENTS.md. Conflict resolution: - Kept AGENT_RULES_FEATURE_SPEC.md deleted (dropped my spec edits, per the new documentation model). - Folded this branch's app-list navigation documentation into the owning source: the AppListLibraryView / AppListEditorView / RuleEditorView doc comments now describe the pushed selection screen, the sheet-overlay list editor with its discard-changes confirmation, and the live-applying Edit Apps picker. RuleEditorView auto-merged (my navigationDestination block + main's RuleConfiguration comment reference). Full suite green (245). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Xeke7pAWJ9S4RiGc5hMghr
Integrates PR #17, which lets users open an app list read-only (the new AppListDetailView) while a Hard Mode rule blocks — editing stays locked, but viewing can't be a back door out of the block. Conflict resolution (both branches reworked the AppLists views): - AppListLibraryView: kept this branch's pushed-library + sheet-overlay editor navigation, and layered in Change B's `viewingList` read-only path — picker rows show "View" (read-only) instead of "Edit" while locked; management rows open AppListDetailView when locked, the editor sheet when unlocked. - AppListEditorView: kept this branch's sheet/discard structure and adopted Change B's shared `AppSelectionRows` component (replacing the inline rows). - New files (AppListDetailView, AppSelectionRows) merged cleanly; UI tests auto-merged — Change B's view-in-hard-mode tests pass against the new nav. Full suite green (248). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Xeke7pAWJ9S4RiGc5hMghr
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.
Summary
Reworks how app lists are reached and edited from the rule editor, addressing confusion in the old flow (a sheet-within-a-sheet picker with redundant Save buttons).
AppListPickerSheetwrapper.).confirmationDialog+.interactiveDismissDisabled). Dirty-detection lives in a unit-testedAppListEditState.FamilyActivityPickerbinds straight to the working selection, so select/deselect applies immediately. Removed the bottom Save button and the redundant toolbar checkmark — the list editor's checkmark is now the single commit point.Documentation for these screens is folded into the owning views' doc comments (the repo's doc-comment spec model).
Test plan
AppListEditStateTests— outstanding-edit detection (unit, 3 tests)AppListUITests— pushed create flow, discard-confirmation flow, no-prompt-when-unedited flowmain's read-only "view app list in Hard Mode" (feat: view app lists read-only in Hard Mode #17): View (read-only) vs Edit/discard navigation coexist; all view-in-hard-mode UI tests pass against the new navmain— merged docs: fold the Rules feature spec into the codebase #16 (spec fold), feat: view app lists read-only in Hard Mode #17 (view in Hard Mode), Harden time-limit counting against batched Screen Time threshold events #18 (time-limit counting hardening), test: stop iPad UI tests flaking on dropped sidebar taps #19 (iPad test-flake fix); no conflicts in app-list codeFamilyActivityPickerselections can't be asserted under-ui-testing)🤖 Generated with Claude Code
https://claude.ai/code/session_01Xeke7pAWJ9S4RiGc5hMghr