Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Conversation draft turns permanently dirty when applied conversions match no piece

Aberta Para iniciantes
#3,573 0 comentários 0 reações 1 responsável Ver no GitHub

Mantenedores costumam responder em até 2 dias

@ManoharPaturi já está trabalhando nisso.

Desde 27/10/2026.

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
83/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
python

Direção de pesquisa

Comece localizando useConversationDraft.applyConversions e o changePiece adjacente no código do editor de conversas; o issue não especifica caminhos de arquivos nem testes. Compare como eles tratam IDs de piece sem correspondência e, em seguida, execute os testes relevantes do rascunho ou do editor de conversas. O trabalho estará concluído quando aplicar conversões a um piece ausente mantiver limpo um rascunho limpo e não acionar a confirmação de descarte.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Description

useConversationDraft.applyConversions rebuilds every message and piece wrapper object even when no piece in the draft matches an entry in the applied map. The draft's dirty flag compares the messages array by reference against the baseline, so one such no match call leaves the draft permanently dirty.

The live copy of this logic in ConversationEditor wires the converter panel's apply event, which fires with results that can reference pieces the user has already deleted, so a converter round that changes nothing can leave the editor showing the discard confirmation, Your unsaved changes will be lost, on every later close or navigation.

The sibling changePiece in the same hook already tracks a changed flag and returns the original array when nothing matched; applyConversions lacks that guard.

Expected Behavior

Applying conversions that match no piece in the draft should leave the draft clean.

Reproduction Steps

  1. Open a conversation draft and open the converter panel.
  2. Delete the piece a conversion result refers to, then let the panel emit its apply event.
  3. Close the draft: the discard confirmation appears even though nothing changed.

Minimal Reproduction

Call applyConversions({ missingPieceId: ... }) on a clean draft and read dirty.

Environment

PyRIT main.

Linguagem predominante
Python
Estrelas
4.7k
Forks
980
Merge médio
2d 7h
PRs com merge (30d)
446

Preparar o ambiente

Abrir no Codespaces

Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.

  • Sem Dockerfile nem arquivo Docker Compose
  • Tem um modelo de pull request
  • Sem guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de microsoft/PyRIT

Todas as issues de microsoft/PyRIT

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.