apps/web/src/components/ChatView.logic.test.ts | 26 ++ apps/web/src/components/ChatView.logic.ts | 17 + apps/web/src/components/ChatView.tsx | 258 ++++++++++--- apps/web/src/components/LegacySidebar.tsx | 12 +- apps/web/src/components/Sidebar.tsx | 1 + apps/web/src/components/chat/ChatComposer.tsx | 636 +++++++++++++++++++++++++++--- apps/web/src/components/chat/ComposerStashMenu.test.tsx | 42 ++ apps/web/src/components/chat/ComposerStashMenu.tsx | 16 +- apps/web/src/components/chat/MessagesTimeline.test.tsx | 110 ++++++ apps/web/src/components/chat/MessagesTimeline.tsx | 69 +++- apps/web/src/components/chat/composerAttachmentFiles.test.ts | 280 ++++++++++++++ apps/web/src/components/chat/composerAttachmentFiles.ts | 153 ++++++++ apps/web/src/components/settings/ProjectSettingsPanel.tsx | 7 +- apps/web/src/composerDraftStore.test.ts | 483 +++++++++++++++++++++++ apps/web/src/composerDraftStore.ts | 373 +++++++++++++++++- apps/web/src/hooks/useHandleNewThread.ts | 15 +- apps/web/src/lib/attachmentUploadQueue.test.ts | 664 +++++++++++++++++++++++++++++++- apps/web/src/lib/attachmentUploadQueue.ts | 398 ++++++++++++++----- apps/web/src/lib/attachmentUploadState.test.ts | 6 +- apps/web/src/lib/attachmentUploadState.ts | 11 +- apps/web/src/lib/composerDraftUploads.ts | 25 +- apps/web/src/promptStashStore.test.ts | 57 +++ apps/web/src/promptStashStore.ts | 12 +- apps/web/src/state/attachments.ts | 14 +- apps/web/src/types.ts | 25 +- docs/user/composer.md | 22 +- packages/client-runtime/package.json | 4 + packages/client-runtime/src/state/attachments.test.ts | 202 ++++++++++ packages/client-runtime/src/state/attachments.ts | 236 ++++++++++++ packages/client-runtime/src/state/runtime.ts | 21 +- 30 files changed, 3932 insertions(+), 263 deletions(-)