[Design] Redesign the chat composer
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 42/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Ativa
- Stack de tecnologia
- typescript
Direção de pesquisa
Start at /design-audit#surfaces and the chat composer in apps/web, then compare the listed shadcn Input Group and AI Elements PromptInput references with the current behavior. Run bun test apps/web/src/chat and review the required verification commands while checking each listed visual, keyboard, draft, reference, and error state. Done means the chosen library direction is documented, Maggie approves the specimen, and existing composer behavior remains intact.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Base branch: main
Branch: maggie/redesign-chat-composer
Depends on: None
Goal
Replace the visually inconsistent chat composer shell with a polished shared composition built from proven component patterns while preserving Chopin's collaboration behavior.
Context From Planning
- The composer in
/design-audit#surfaceslooks inconsistent with the rest of Chopin and should not be reinvented from scratch. - Investigate shadcn Input Group and AI SDK AI Elements PromptInput as references, not preselected dependencies.
- AI Elements PromptInput is a close reference for auto-resize, submit-status icons, attachments, and keyboard behavior: https://elements.ai-sdk.dev/components/prompt-input
Current Behavior
The production composer owns acknowledged drafts, # document references, a listbox picker, send/stop state, keyboard submission, connection/read-only state, and inline send errors. Its visual shell is assembled from generic field/button classes and local layout utilities.
Desired Behavior
Create a cohesive composer with a clear input surface, footer/actions, reference affordance, busy/error presentation, and excellent keyboard/focus behavior. Reuse a library pattern where it fits, but adapt it to Chopin's existing state model.
Acceptance Criteria
- A short library evaluation compares shadcn Input Group, AI Elements PromptInput, and adapting the current composer; it records the chosen direction and dependency cost.
- The design audit covers empty, drafted, focused, disabled/disconnected, submitting, Planner-working/stop, reference-picker, reference-limit, and send-error states.
- Existing acknowledged-draft behavior,
#references, picker keyboard navigation, Enter/Shift-Enter behavior, submit focus restoration, stop action, and error recovery remain intact. - The composer is usable at narrow widths and with long referenced document names.
- The visual shell is shared where appropriate with comment/research composers without forcing their different domain behavior into one state machine.
- Maggie approves the audit specimen before production migration.
Verification Commands
bun run typesbun run cibun test apps/web/src/chatbun run e2e
Primary Surfaces
/design-audit#surfaces- Chat composer in
apps/web - Reference picker and acknowledged composer drafts
Expected PR Checks
- Repo required checks
Report Requirements
- Library comparison and decision
- Before/after screenshots for key states and widths
- Keyboard/accessibility evidence
- Confirmation that draft/reference behavior is unchanged
Implementation Notes
- Treat external components as visual/interaction references. Chopin's wire protocol and draft reconciliation remain authoritative.
- Do not replace the composer with a component that assumes a different message or attachment model.
- Keep send errors associated with the composer without collapsing the input layout.
Stop Conditions
- A candidate library requires replacing Chopin's draft/reference state model.
- Attachment scope or new composer features would expand beyond this visual redesign.
- Linguagem predominante
- TypeScript
- Estrelas
- 591
- Forks
- 33
- Merge médio
- 4h 13min
- PRs com merge (30d)
- 412
Preparar o ambiente
- Inclui um Dockerfile ou arquivo Docker Compose
- Sem modelo de pull request
- Sem guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de githubnext/chopin
-
documentation triage/human-response
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
githubnext/chopin#149 · 3 comentários ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 55/100
githubnext/chopin#699 · 2 comentários · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 3/5 Meio dia Facilidade para iniciantes 45/100
githubnext/chopin#597 ·
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 30/100
githubnext/chopin#596 ·
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 12/100
githubnext/chopin#595 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de githubnext/chopin
Issues semelhantes
-
Add: Upin & Ipin Channel HDAbertacheck:passed streams:add
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
S: triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
Mantenedores costumam responder em até 1 dia
-
iot client
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
Open-Locker/Open-Locker#365 ·
Mantenedores costumam responder em até 1 dia
-
bug enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 69/100
inmanta/web-console#7787 ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
shoelace-style/webawesome#2979 ·
Mantenedores costumam responder em até 1 dia