feat: modernize chat UI and rename handoff to task

- Remove agent message bubbles, keep user bubbles (right-aligned)
- Rename "Handoffs" to "Tasks" with ListChecks icon in sidebar
- Move model picker inside composer, add renderFooter to ChatComposer SDK
- Make project sections collapsible with hover-only chevrons
- Remove divider between chat and composer
- Update model picker chevron to flip on open/close
- Replace all user-visible "handoff" strings with "task" across frontend

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Nicholas Kissel 2026-03-10 23:10:42 -07:00
parent 34a0587cbc
commit 6d0c004269
10 changed files with 142 additions and 108 deletions

View file

@ -26,6 +26,7 @@ export interface ChatComposerProps {
rows?: number;
textareaProps?: Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, "className" | "disabled" | "onChange" | "onKeyDown" | "placeholder" | "rows" | "value">;
renderSubmitContent?: () => ReactNode;
renderFooter?: () => ReactNode;
}
const DEFAULT_CLASS_NAMES: ChatComposerClassNames = {
@ -62,6 +63,7 @@ export const ChatComposer = ({
rows = 1,
textareaProps,
renderSubmitContent,
renderFooter,
}: ChatComposerProps) => {
const resolvedClassNames = mergeClassNames(DEFAULT_CLASS_NAMES, classNameOverrides);
const isSubmitDisabled = disabled || submitDisabled || (!allowEmptySubmit && message.trim().length === 0);
@ -92,6 +94,7 @@ export const ChatComposer = ({
rows={rows}
disabled={disabled}
/>
{renderFooter?.()}
<button
type="submit"
className={resolvedClassNames.submit}