Skip to content

feat: view app lists read-only in Hard Mode#17

Merged
brendan-ch merged 2 commits into
mainfrom
feat/view-app-list-in-hard-mode
Jun 20, 2026
Merged

feat: view app lists read-only in Hard Mode#17
brendan-ch merged 2 commits into
mainfrom
feat/view-app-list-in-hard-mode

Conversation

@brendan-ch

Copy link
Copy Markdown
Owner

Summary

While a Hard Mode rule is actively blocking, app lists were fully inert — their apps couldn't be viewed at all. This lets the user open a list to view its apps read-only while keeping the "no editing" lock fully intact.

  • New read-only AppListDetailView (apps + count + lock notice; no name field, "Edit Apps", or Save).
  • Extracted shared AppSelectionRows so the editor and the read-only detail render a list's contents identically.
  • AppListLibraryView: locked rows now open the read-only detail instead of being inert — management rows tap straight in (with a chevron); the picker swaps its "Edit" button for "View". Unlocked behavior (→ full editor) is unchanged; Edit/Delete and the lock notice stay gated exactly as before.
  • Documentation folded into source doc comments (AppListLibraryView / AppListDetailView), matching the spec-in-code layout from docs: fold the Rules feature spec into the codebase #16 (merged into this branch).

Test plan

  • Red→green TDD: failing UI test written first (read-only notice never appeared), then implemented to green.
  • 5 UI tests cover management/picker × locked (→ read-only) / unlocked (→ editor), the affordance lock (View present / Edit absent), and an editor-path regression guard.
  • Full suite: 242/243. The one failure (SettingsUITests/testUninstallProtectionToggleStartsOffAndFlips) is in a file this PR doesn't touch and passes in isolation — pre-existing XCUITest flakiness, not a regression.
  • Manual simulator validation skipped: multi-worktree DerivedData kept routing computer-use to a stale build; the flows are covered end-to-end by the UI tests instead.

🤖 Generated with Claude Code

https://claude.ai/code/session_019u1fqx7a1QvWGJQPNZYSRz

brendan-ch and others added 2 commits June 19, 2026 19:17
While a Hard Mode rule is actively blocking, app lists were fully inert:
their apps could not be viewed at all. Allow opening a list to view its
apps read-only while keeping the "no editing" lock intact.

- Add read-only AppListDetailView (apps + count + lock notice; no name
  field, Edit Apps, or Save).
- Extract shared AppSelectionRows so the editor and the detail render a
  list's contents identically.
- AppListLibraryView: locked rows open the read-only detail instead of
  being inert -- management rows tap in (with a chevron); the picker
  swaps "Edit" for "View". Unlocked behavior (full editor) is unchanged;
  Edit/Delete and the lock notice stay gated as before.
- Update AGENT_RULES_FEATURE_SPEC section 3 to document view-while-locked.

Covered by UI tests for management/picker x locked(read-only)/
unlocked(editor). Full suite: 243/243.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019u1fqx7a1QvWGJQPNZYSRz
main folded the Rules feature spec out of Docs/AGENT_RULES_FEATURE_SPEC.md
into source doc comments + the AGENTS.md feature map (PR #16). Resolved the
modify/delete conflict by accepting the file's deletion and re-expressing the
view-app-lists-in-Hard-Mode documentation in the same folded style: the
view-while-locked behavior now lives in the AppListLibraryView and
AppListDetailView doc comments (the feature map already globs
OpenAppLock/Views/AppLists/*).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019u1fqx7a1QvWGJQPNZYSRz
@brendan-ch brendan-ch merged commit eb800e4 into main Jun 20, 2026
2 checks passed
@brendan-ch brendan-ch deleted the feat/view-app-list-in-hard-mode branch June 20, 2026 00:31
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.

1 participant