Add sidebar recents removal affordance#1090
Conversation
🔍 SwiftLint Code Quality Report✅ No violations found! Code quality check passed. |
📊 Coverage Gate ResultsThreshold: 67% |
There was a problem hiding this comment.
Pull request overview
This PR adds user-facing affordances to remove individual entries from the sidebar's Recent Files list, addressing Bug #234. The implementation includes context menu actions on all platforms and iOS swipe gestures, with comprehensive persistence updates to keep the MRU list synchronized across app sessions.
Key Changes
- UI Enhancement: Added "Remove from Recents" context menu (all platforms) and swipe actions (iOS) to each sidebar entry for discoverable deletion
- Controller & Service Updates: Exposed
removeRecent(_:)API onDocumentSessionControllerand optimizedRecentsServiceto conditionally persist only when records actually change - Test Coverage: Added unit test verifying removal persistence behavior through the full stack from controller to session snapshots
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
Sources/ISOInspectorApp/AppShellView.swift |
Added context menu and iOS swipe actions for individual recent file removal |
Sources/ISOInspectorApp/State/DocumentSessionController.swift |
Exposed removeRecent(_:) method with conditional session persistence |
Sources/ISOInspectorApp/State/Services/RecentsService.swift |
Enhanced removeRecent(with:) to return success flag and persist only on actual changes |
Tests/ISOInspectorAppTests/DocumentSessionControllerTests.swift |
Added test verifying removal triggers both recents and session snapshot updates |
DOCS/INPROGRESS/234_Remove_Recent_File_From_Sidebar.md |
Documented implementation details and verification approach |
DOCS/INPROGRESS/Summary_of_Work.md |
Summarized Bug #234 completion with follow-up priorities |
DOCS/INPROGRESS/Current_State.md |
Updated active tasks and marked Bug #234 resolved |
DOCS/INPROGRESS/next_tasks.md |
Reflected Bug #234 resolution and current queue state |
todo.md |
Regenerated automated task tracking report from codebase @todo comments |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| --- | ||
|
|
||
| ## NavigationSplitView Inspector (Task 243) | ||
| ### Task #10` |
There was a problem hiding this comment.
The generated task report contains malformed task IDs with special characters and backticks (e.g., "#10", "#15.", "#15", "#220", "#222", "#222`)", "#231**:", "#232**:", etc.). These appear to be parsing artifacts from @todo comments in code or documentation that include non-alphanumeric characters. The task ID parser should be hardened to extract only valid task identifiers and ignore punctuation that follows the ID.
| ### Task #10` | |
| ### Task #10 |
Prevent WindowSessionController from triggering redundant document opens by introducing registerRecent() method that adds files to the recents list without re-opening them. Add objectWillChange forwarding from RecentsService to ensure UI updates when recents change. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Replace readarray with bash 3.2-compatible array building and remove deprecated --path flag from SwiftLint commands to support newer versions. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Summary
todo.mdwith the latest tasks and summary noteTesting
Codex Task