Part of EPIC #193. Depends on #203, #209, #204.
Description
Reducer flow: requestOpenProject(url, disposition: ProjectOpenDisposition?). When disposition == nil, the selected project is not the one currently open in this window, and at least one other project window is open — show a sheet with three buttons and a "Remember choice" toggle. Saved choice persists in @AppStorage("projectOpenDisposition"). Option+click in the menu overrides the saved choice and always shows the sheet (disposition = .forceAsk).
Acceptance Criteria
Module / Layer
Relay / WindowFeature + ProjectOpenDisposition domain
Complexity
Large
Part of EPIC #193. Depends on #203, #209, #204.
Description
Reducer flow:
requestOpenProject(url, disposition: ProjectOpenDisposition?). Whendisposition == nil, the selected project is not the one currently open in this window, and at least one other project window is open — show a sheet with three buttons and a "Remember choice" toggle. Saved choice persists in@AppStorage("projectOpenDisposition").Option+clickin the menu overrides the saved choice and always shows the sheet (disposition = .forceAsk).Acceptance Criteria
closeProjectAlertwhen active sessions are presentopenWindow(value: newProjectID).currentWindowautomaticallyModule / Layer
Relay / WindowFeature + ProjectOpenDisposition domain
Complexity
Large