LibreChat/e2e/specs/mock
Marco Beretta 21ba9d3f30
🔁 fix: Rerun a Message the Editor Has Not Changed (#15212)
* fix: allow rerunning a message the editor has not changed

The submit button in both message editors was disabled until the draft
differed from the persisted message, so reissuing a request after a
cancelled response, a failed generation, or a backend restarted on
different parameters meant typing a throwaway character and deleting it
first.

The button now reads "Rerun" while the draft is untouched and "Update &
rerun" once it differs, and neither state disables it. An untouched
assistant turn regenerates instead of replaying its own content as an
edit: editedContent retains the existing content and appends the new
completion, so replaying it would return the old answer with a second one
glued onto it.

Two ask options were dead on arrival. editedText was declared on TOptions
and passed by EditMessage but never destructured by ask, and
isResubmission was never set or read anywhere. Since no submission can
carry a text-level edit, and editedMessageId regenerates the row in
place, an assistant turn in the plain-text editor now always reads
"Rerun" and its status slot says where an unsaved edit is about to go.

Fixes #15205

* fix: address PR review bot findings

chatgpt-codex-connector:

- Route a plain-text assistant rerun through regeneration. It kept the
  edit-resubmission options, so it replaced the response in place, and
  with no targetResponseMessageId the submission resolved the NEWEST
  answer for that turn: rerunning an older sibling pruned the wrong
  subtree from the optimistic thread while appending a placeholder keyed
  to the older sibling's own id. It now sends isRegenerate with
  targetResponseMessageId, matching the hover action and
  EditContentParts, and leaves the sibling index alone.

- Let an empty answer reach the rerun handler. The field is registered as
  required so Save cannot blank a message, and routing the rerun through
  handleSubmit meant a response cancelled before its first token had an
  enabled button that did nothing. The answer's draft is never submitted,
  so it no longer gates the rerun or the disabled state.

The status hint changes with the behavior: rerunning discards an unsaved
answer edit and generates a new response rather than replacing this one.
2026-08-25 20:04:02 -04:00
..
activity-labels.spec.ts 🧭 fix: Re-Anchor Parent Activity Phase Bounds (#14741) 2026-08-11 10:16:57 -04:00
activity-phases.spec.ts 🪄 feat: Smooth Activity Phase Transitions (#14832) 2026-08-14 11:57:48 -04:00
agent-file-ownership.spec.ts 🧷 fix: Align Agent File Attachment Ownership (#14149) 2026-07-07 16:23:48 -04:00
agent-handoffs.spec.ts 🧷 ci: Enforce Durable Agent Finalization for E2E tests (#14740) 2026-08-11 08:27:50 -04:00
agent-skills-added.spec.ts 🧩 fix: Harden Agent Skill Lifecycles End to End (#14429) 2026-07-25 08:19:12 -04:00
agent-skills.spec.ts 🧩 fix: Harden Agent Skill Lifecycles End to End (#14429) 2026-07-25 08:19:12 -04:00
agents.helpers.ts 🛰️ chore: bump @librechat/agents to v3.4.0, cover streamed subagent results e2e (#14647) 2026-08-05 22:25:03 -04:00
agents.spec.ts 🧲 refactor: Consolidate Claude Prompt Cache and Context Checks (#15008) 2026-08-20 12:18:50 -04:00
app-load.spec.ts ci: Add mock e2e coverage for agents, prompts, MCP, and chat flows (#13589) 2026-06-10 09:06:52 -04:00
attachment-preview-loop.spec.ts 🐛 fix: Prevent Infinite Render Loop on Code-Execution File Preview (#13922) 2026-06-23 16:34:43 -04:00
auth.spec.ts 🛬 fix: Coalesce Auth Recovery into a Single Refresh Flight (#13618) 2026-06-09 12:04:12 -04:00
background-tools.spec.ts 🧵 feat: Background Tool Calls for Agents & Model Specs (#14197) 2026-07-13 12:51:36 -04:00
bookmarks.spec.ts 🔖 fix: Decrement Bookmark Counts When Deleting Conversations (#13830) 2026-06-18 08:37:08 -04:00
chat.spec.ts 🧷 ci: Enforce Durable Agent Finalization for E2E tests (#14740) 2026-08-11 08:27:50 -04:00
completion.spec.ts 🧷 ci: Enforce Durable Agent Finalization for E2E tests (#14740) 2026-08-11 08:27:50 -04:00
content-filters.helpers.ts 🛂 feat: Filter Model-Bound Content by Source (#14425) 2026-08-21 22:43:32 -04:00
content-filters.persisted.spec.ts 🛂 feat: Filter Model-Bound Content by Source (#14425) 2026-08-21 22:43:32 -04:00
content-filters.submissions.spec.ts 🛂 feat: Filter Model-Bound Content by Source (#14425) 2026-08-21 22:43:32 -04:00
conversation-management.spec.ts 🧽 fix: Clear Deleted Chats From Message Cache (#14270) 2026-07-14 18:05:16 -04:00
db.ts 📸 fix: Guard Screenshot Export Against Main-Thread Freezes (#14733) 2026-08-10 22:47:50 -04:00
deferred-tools-hitl.spec.ts 🧾 feat: Track Authoritative Agent Event Outcomes (#15213) 2026-08-25 18:20:57 -04:00
deployment-skills.spec.ts 🗂️ feat: Add Deployment Skill Directory (#13523) 2026-06-05 10:24:28 -04:00
enforced-model-specs.spec.ts 🪃 fix: Restore Raw Spec Fallback for Enforced Presets (#13804) 2026-06-16 21:10:22 -04:00
export.spec.ts perf: Optimize First Load of Large Conversations (#14901) 2026-08-16 19:45:21 -04:00
helpers.ts 💬 style: Unify Message Row Layout and Edit Surfaces (#14770) 2026-08-13 19:30:39 -04:00
hover-actions.spec.ts ⏱️ feat: Show Elapsed Time Under the Streaming Response (#15167) 2026-08-24 11:36:36 -04:00
isolation.spec.ts 🎭 feat: Add Credential-Free Playwright Smoke Suite with a Local Mock LLM (#13472) 2026-06-02 16:36:39 -04:00
mcp-allowlist-override.spec.ts 🔐 fix: Honor Admin-Panel MCP Allowlist Overrides Without Restart (#13814) 2026-06-17 20:14:53 -04:00
mcp-ephemeral.spec.ts 🔌 fix: Preserve Ephemeral MCP Selections Across Model Switches (#13697) 2026-06-11 18:13:41 -04:00
mcp-fixture-isolation.spec.ts 📡 fix: Refresh MCP Tools After List-Changed Notifications (#14686) 2026-08-08 13:50:21 -04:00
mcp-oauth-readiness.spec.ts 🎟️ fix: Reconcile MCP OAuth Readiness Across Pods (#14629) 2026-08-05 19:42:26 -04:00
mcp-tool-list-changed.spec.ts 📡 fix: Refresh MCP Tools After List-Changed Notifications (#14686) 2026-08-08 13:50:21 -04:00
mcp.spec.ts 🧷 ci: Enforce Durable Agent Finalization for E2E tests (#14740) 2026-08-11 08:27:50 -04:00
memory.spec.ts 🧠 feat: Add Memory as an Agent Capability with Inline Tools and Ephemeral Badge (#13869) 2026-06-24 17:14:13 -04:00
mermaid-artifacts.spec.ts 🧜 feat: Open Mermaid Diagrams as Artifacts with SVG/PNG Export (#14713) 2026-08-09 09:02:42 -04:00
message-edit-layout.spec.ts 💬 style: Unify Message Row Layout and Edit Surfaces (#14770) 2026-08-13 19:30:39 -04:00
message-tree.spec.ts 🔁 fix: Rerun a Message the Editor Has Not Changed (#15212) 2026-08-25 20:04:02 -04:00
message-visual.spec.ts 💬 style: Unify Message Row Layout and Edit Surfaces (#14770) 2026-08-13 19:30:39 -04:00
model-replay-tools.spec.ts 🎬 test: Record-Once/Replay-Forever Model Fixtures for Mock E2E (#15210) 2026-08-25 18:29:55 -04:00
model-replay.spec.ts 🎬 test: Record-Once/Replay-Forever Model Fixtures for Mock E2E (#15210) 2026-08-25 18:29:55 -04:00
model-spec-branding.spec.ts feat: Surface Model Spec Branding on Landing and Selector (#13662) 2026-06-10 21:02:22 -04:00
model-spec-icons.spec.ts 🪞 fix: Preserve Model Spec Icons Across Stream Resume and Abort (#13603) 2026-06-08 17:14:21 -04:00
model-spec-skills.spec.ts 🧩 fix: Harden Agent Skill Lifecycles End to End (#14429) 2026-07-25 08:19:12 -04:00
model-spec-starters.spec.ts 💬 feat: Conversation Starters for Model Specs (#13710) 2026-06-13 11:38:49 -04:00
model-switching.spec.ts 🧷 ci: Enforce Durable Agent Finalization for E2E tests (#14740) 2026-08-11 08:27:50 -04:00
permissions.spec.ts 🪪 fix: Filter ACL Principal Details (#13524) 2026-06-05 19:06:41 -04:00
projects.spec.ts 📌 fix: Preserve Project Scope Through Enforced Model Specs (#13586) 2026-06-08 08:41:27 -04:00
prompts.spec.ts 🧭 refactor: make the side panels behave the same way (#14695) 2026-08-08 23:15:46 -04:00
quotes.spec.ts ci: Settle the E2E Reply Before the Double-Click Quote (#14840) 2026-08-15 10:48:11 -04:00
replay.helpers.ts 🎬 test: Record-Once/Replay-Forever Model Fixtures for Mock E2E (#15210) 2026-08-25 18:29:55 -04:00
schedules-execution.spec.ts 🎢 fix: Restore Schedule Dialog Scrolling So Save Stays Reachable (#15225) 2026-08-25 19:58:45 -04:00
schedules.spec.ts ⏱️ feat: Run Scheduled Chats Through Durable Agent Triggers (#14939) 2026-08-20 11:51:30 -04:00
shared-links.spec.ts 🔗 feat: Shared Conversation Badge and Stable Share Links (#14712) 2026-08-09 08:14:54 -04:00
shortcuts.spec.ts ⌨️ fix: Honor defaultPrevented in Global Shortcut Dispatch (#14570) 2026-08-02 08:08:12 -04:00
sidebar.spec.ts 🐛 fix: Give the Header's Sidebar Toggle Its Own Test Id (#14850) 2026-08-14 20:34:03 -04:00
skill-file-authoring.spec.ts 📌 fix: Preserve Project Scope Through Enforced Model Specs (#13586) 2026-06-08 08:41:27 -04:00
soft-default.spec.ts 🏷️ fix: Persist the Ephemeral Agent's Display Label as Sender (#14899) 2026-08-16 19:50:30 -04:00
steering-escalation.spec.ts feat: Reliable Interrupt & Steer Escalation and Recovery (#14558) 2026-07-31 20:07:56 -04:00
steering.spec.ts feat: Reliable Interrupt & Steer Escalation and Recovery (#14558) 2026-07-31 20:07:56 -04:00
streaming.spec.ts 🧷 ci: Enforce Durable Agent Finalization for E2E tests (#14740) 2026-08-11 08:27:50 -04:00
subagent-activity.spec.ts 🫂 fix: Route Subagent Activity Through the Chat Renderer (#15137) 2026-08-23 15:20:28 -04:00
subagent-results.spec.ts 🧷 ci: Enforce Durable Agent Finalization for E2E tests (#14740) 2026-08-11 08:27:50 -04:00
thread-fold.spec.ts 🎨 refactor: adopt the @librechat/client design system (semantic color tokens + component migration) (#13879) 2026-08-06 09:15:17 -04:00
tool-approvals.spec.ts perf: Warm Feature Catalogs in the Background After First Paint (#15047) 2026-08-21 20:33:29 -04:00
two-factor.spec.ts 🧪 test: Add E2E Regression For 2FA framer-motion Crash (#13513) 2026-06-04 13:25:02 -04:00
usage.spec.ts feat: Context Gauge Hover Reveal and Breakdown Motion Polish (#15038) 2026-08-21 11:34:36 -04:00