Skip to content

MAINT: Adding error details back - #3032

Open
Richard Lundeen (richlundeen) wants to merge 5 commits into
microsoft:mainfrom
richlundeen:richlundeen-conversation-error-warnings
Open

Richard Lundeen (richlundeen) wants to merge 5 commits into
microsoft:mainfrom
richlundeen:richlundeen-conversation-error-warnings

Conversation

@richlundeen

@richlundeen Richard Lundeen (richlundeen) commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Description

Restore complete stored target error details, including the traceback, instead of the generic processing-error message. Remove the separate recovery button, keep recovery in the Copy conversation menu on the original submitted prompt without adding a user message, and show compact explanations when users hover over or click anywhere in the disabled prompt box. Roman Lutz (@romanlutz), this changes the error display and recovery behavior introduced in #2474.

Previous

Generic error message with the separate recovery button:

Previous error display and recovery button

With this change

Complete error details:

Complete target error and traceback

Copy from the original submitted prompt; no extra user message is added:

Copy conversation on the original submitted prompt

Disabled prompt box explains how to recover from a target error:

Disabled prompt box with target-error recovery guidance

Disabled prompt box explains when no target is selected:

Compact no-target warning in the prompt box

Tests and Documentation

Updated unit tests for complete error details, disabled-input interactions, and safe conversation/attack copying. Updated browser recovery tests and doc/gui/0_gui.md. Added a real-backend browser check that a processing failure and reload retain only the original prompt and error, and that recovery restores the prompt as an unsent draft rather than a new user message.

The unrelated objective-generator timeout-test fix was reverted at the user's request because Roman Lutz (@romanlutz)'s open #3011 already addresses it. This PR contains no changes to that Python test.

Commands run from frontend unless noted:

  • npx jest --runInBand src/utils/messageMapper.test.ts src/components/Chat/MessageList.test.tsx src/components/Chat/ChatInputArea.test.tsx --silent — passed, 208 tests.
  • npm run type-check — passed.
  • npm run build — passed.
  • npx playwright test chat-recovery.spec.ts --project seeded --grep 'keeps recovery on the submitted prompt|recovers the latest failed draft' --retries 0 --reporter 'list,json' — passed, 3 tests against a real backend; captured the corrected single-failure screenshots. Used CI=true, E2E_SEEDED_MODE=true, E2E_FRONTEND_PORT=13078, PYRIT_E2E_BACKEND_PORT=18078, and UV_NO_SYNC=1. The first run failed during target setup because the post-commit compatibility stamp was stale; the run passed after Vite refreshed the stamp.
  • npx eslint e2e\chat-recovery.spec.ts --max-warnings 0 — passed.
  • npx jest --runInBand src/utils/conversationExport.test.ts src/utils/messageMapper.test.ts --silent — passed, 190 tests after updating obsolete error-export expectations.
  • npx playwright test errors.spec.ts --project mock --retries 0 --reporter list — passed, 7 tests after updating obsolete recovery-button expectations; used CI=true, E2E_FRONTEND_PORT=13079, and an unused backend port to avoid another local backend.
  • uv run --no-sync pre-commit run --all-files (repository root) — all hooks passed again before pushing the revert.
  • git diff --exit-code f2e1e199c (repository root, before committing the revert) — passed; the complete working tree matched the version before the timeout-test fix.
  • git diff --check (repository root) — passed.

JupyText was not run; no notebook or Python API changes.

Restore complete target error diagnostics and explain disabled prompt input through a compact hover and click popup. Use the existing copy menu for recovery.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 11657351-57ee-4476-8a91-c7087411a626
Verify that a processing failure and reload do not add a user message. Capture the single-failure flow rather than a second test submission.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 11657351-57ee-4476-8a91-c7087411a626
@richlundeen

Copy link
Copy Markdown
Contributor Author

Roman Lutz (@romanlutz) assigning to you because this changes behavior you made in #2474

Check persisted error details in exports and recover through Copy conversation on the submitted prompt instead of the removed button.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 11657351-57ee-4476-8a91-c7087411a626
Adapt the controlled asyncio deadlines from Roman Lutz PR microsoft#3011. Expire each real timeout at its intended blocking await and keep the configured-delay, cancellation, cleanup, and outcome assertions. Add slow setup coverage for the CI timing race.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 11657351-57ee-4476-8a91-c7087411a626
Leave timeout-test stabilization to the existing PR microsoft#3011. Preserve the frontend error display and recovery changes.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 11657351-57ee-4476-8a91-c7087411a626

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants