refactor(web): ChatView's send preparation is pure functions in ChatView.logic

onSend computed its snapshot, dispatch plan, attachment id binding and
inline-context fallback inline, twice in places. They are now pure
functions with tests, and a failed send restores its draft through one
restoreComposerDraft helper.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
35322b39e2Julius Marminge committed on 10/21/2026, 7:46:52 AMparent7483af8
4 files changedLine totals unavailable