Problem
In the native SwiftUI thread list, both the swipe action and row menu call deleteThread immediately. A stray destructive action permanently removes the thread without a confirmation step.
This is particularly risky beside reversible lifecycle actions such as Settle, Archive, Snooze, and Unpin.
Proposed behavior
- Route every thread-list Delete entry point through one confirmation alert.
- Name the thread in the alert when its title is available.
- Keep Cancel as the default action and Delete as a destructive action.
- Perform the existing deletion only after explicit confirmation.
- Do not change archive, settle, snooze, pin, or server deletion semantics.
Scope
The existing owner is apps/swift-ios/Features/Workspace/WorkspaceView.swift; no protocol or server change is required.
Acceptance
- Swipe/menu Delete opens a confirmation instead of deleting immediately.
- Cancel leaves the thread untouched.
- Confirm invokes deletion for the intended thread exactly once.
- The alert remains usable with large Dynamic Type.
Problem
In the native SwiftUI thread list, both the swipe action and row menu call
deleteThreadimmediately. A stray destructive action permanently removes the thread without a confirmation step.This is particularly risky beside reversible lifecycle actions such as Settle, Archive, Snooze, and Unpin.
Proposed behavior
Scope
The existing owner is
apps/swift-ios/Features/Workspace/WorkspaceView.swift; no protocol or server change is required.Acceptance