A managed chat composer: one send⇄stop button slot, optimistic draft clear with restore-on-failure, AbortSignal handoff, IME-safe Enter and attachments with their own upload lifecycle.
npx shadcn@latest add @zyeon/chat-composerZyeon UI limits how often it can be asked, and Chat Composer hasn't had its turn. Its source will show here once it has.