Same bug class as the Planning project-switch fix: on a project swap the
SubtaskBreakdownModal survived as the same instance, so the isOpen=false
reset ran with the NEW projectId and persisted the old project's draft
description under the new project's storage key (and kept it in memory),
making the breakdown reopen in project B with project A's draft.
- AppModals keys SubtaskBreakdownModal by project id so a swap remounts it.
- Unmount cleanup now saves the in-progress draft under the instance's own
project key (constant per keyed instance), so the old project's draft is
preserved instead of dropped or misfiled.
- Dismissal on swap was already covered by closeProjectScopedModals.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>