Skip to content

MGMT-21647: Add delete conversation option in chat history#3150

Merged
openshift-merge-bot[bot] merged 1 commit intoopenshift-assisted:masterfrom
rawagner:history_delete
Sep 4, 2025
Merged

MGMT-21647: Add delete conversation option in chat history#3150
openshift-merge-bot[bot] merged 1 commit intoopenshift-assisted:masterfrom
rawagner:history_delete

Conversation

@rawagner
Copy link
Member

@rawagner rawagner commented Sep 1, 2025

Screenshot From 2025-09-01 13-59-04

Summary by CodeRabbit

  • New Features

    • Delete conversations from history via a confirmation modal and per-item delete action.
  • Improvements

    • Conversation list refreshes automatically after deletions and new chats; recent conversations shown first.
    • Shows "No conversation history" when appropriate.
    • Better inline error feedback on delete failures.
    • Option to start a new conversation without closing the history panel.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Sep 1, 2025
@openshift-ci-robot
Copy link

openshift-ci-robot commented Sep 1, 2025

@rawagner: This pull request references MGMT-21647 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.20.0" version, but no target version was set.

Details

In response to this:

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@coderabbitai
Copy link

coderabbitai bot commented Sep 1, 2025

Walkthrough

Adds per-conversation deletion to ChatBot history with a confirmation modal that calls DELETE /v1/conversations/{id}, refreshes the conversation list (via fetchConversations(signal) which supports AbortSignal and sorts by created_at desc), and optionally starts a new conversation if the active one was deleted. Updates startNewConversation to accept an optional closeDrawer flag.

Changes

Cohort / File(s) Summary
History deletion flow & data loading
libs/chatbot/lib/components/ChatBot/ChatBotHistory.tsx
Adds per-item delete action (Trash/MenuItemAction) and deleteConversation state, integrates DeleteConversationModal, introduces fetchConversations(signal) (supports AbortSignal, sorts by created_at desc, maps to { id, text }), adds emptyState, refreshes list after deletion, and updates startNewConversation signature to (closeDrawer?: boolean) => void.
Window wrapper for startNewConversation
libs/chatbot/lib/components/ChatBot/ChatBotWindow.tsx
Forwards startNewConversation to ChatBotHistory with an optional closeDrawer parameter (default behavior closes drawer; passing false keeps it open).
New delete confirmation modal
libs/chatbot/lib/components/ChatBot/DeleteConversationModal.tsx
New component: danger-styled confirmation modal. Props: onClose: VoidFunction, conversation: Conversation, and onDelete: () => Promise<unknown>. Manages isDeleting and error, calls onDelete then onClose on success, parses/display errors (via getErrorMessage), prevents closing while deleting, shows inline alert on error, includes accessibility attributes and ouiaId.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User
  participant History as ChatBotHistory
  participant Modal as DeleteConversationModal
  participant API as Backend API
  participant Window as ChatBotWindow

  User->>History: Click delete on conversation row
  History->>Modal: Open with conversation & onDelete
  User->>Modal: Confirm delete
  Modal->>API: DELETE /v1/conversations/{id}
  alt Success
    API-->>Modal: 200/204
    Modal->>History: Resolve onDelete
    History->>History: If deleted active → startNewConversation(false)
    History->>API: GET /v1/conversations (fetchConversations with signal)
    API-->>History: Sorted list
    History-->>User: Updated list or empty state
  else Error
    API-->>Modal: Error payload
    Modal-->>User: Show inline error (parsed)
  end

  note over Window,History: startNewConversation(closeDrawer?) propagated — Window only closes drawer if closeDrawer ≠ false
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested labels

lgtm

Suggested reviewers

  • ElayAharoni
  • jgyselov

Poem

I nibble keys and tidy threads,
A trash-tap clears some chatty threads.
Confirm the zap, the list renews,
A new chat springs if yours withdrew.
Hop, click, rejoice — a rabbit chews carrots 🐇✨

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore or @coderabbit ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@openshift-ci openshift-ci bot added approved Indicates a PR has been approved by an approver from all required OWNERS files. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Sep 1, 2025
@openshift-ci-robot
Copy link

openshift-ci-robot commented Sep 1, 2025

@rawagner: This pull request references MGMT-21647 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.20.0" version, but no target version was set.

Details

In response to this:

Screenshot From 2025-09-01 13-59-04

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci-robot
Copy link

openshift-ci-robot commented Sep 1, 2025

@rawagner: This pull request references MGMT-21647 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.20.0" version, but no target version was set.

Details

In response to this:

Screenshot From 2025-09-01 13-59-04

Summary by CodeRabbit

  • New Features
  • Delete conversations directly from history with a confirmation dialog.
  • Improvements
  • Conversation list updates automatically after deletions and new chats.
  • Clear empty state when no conversation history is available.
  • More responsive loading behavior and sorted recent conversations first.
  • Better error feedback if a delete fails.
  • Starting a new conversation can keep the history panel open for smoother workflows.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (7)
libs/chatbot/lib/components/ChatBot/DeleteConversationModal.tsx (2)

45-45: Fix OUIA ID typo.

Typo in ouiaId breaks stable selectors.

Apply:

-      ouiaId="DeleteConversaionModal"
+      ouiaId="DeleteConversationModal"

62-64: Optional: Add test-friendly selector to error text.

If you assert on the error body in tests, consider a data-attr on the Alert body.

-              <Alert isInline variant="danger" title="Failed to delete conversation">
+              <Alert isInline variant="danger" title="Failed to delete conversation" data-testid="delete-conversation-error">
                 {error}
               </Alert>
libs/chatbot/lib/components/ChatBot/ChatBotWindow.tsx (1)

108-111: Wrap startNewConversation in useCallback to keep a stable prop.

Prevents re-renders of ChatBotHistory caused by a new function identity each render.

Apply:

-        startNewConversation={(closeDrawer = true) => {
-          startNewConversation();
-          closeDrawer && setIsDrawerOpen(false);
-        }}
+        startNewConversation={handleStartNewConversation}

And add above the return:

const handleStartNewConversation = React.useCallback((closeDrawer: boolean = true) => {
  startNewConversation();
  if (closeDrawer) setIsDrawerOpen(false);
}, [startNewConversation]);
libs/chatbot/lib/components/ChatBot/ChatBotHistory.tsx (4)

86-88: Use functional state update when toggling drawer.

Avoids stale-closure bugs if multiple rapid toggles occur.

-        onDrawerToggle={() => {
-          setIsOpen(!isOpen);
-        }}
+        onDrawerToggle={() => {
+          setIsOpen((prev) => !prev);
+        }}
-          itemId !== undefined && void loadConversation(`${itemId}`);
-          setIsOpen(!isOpen);
+          itemId !== undefined && void loadConversation(`${itemId}`);
+          setIsOpen((prev) => !prev);

Also applies to: 105-107


90-102: Improve action a11y label.

Make the action’s label descriptive for screen readers.

-              <MenuItemAction
+              <MenuItemAction
                 icon={<TrashAltIcon />}
                 actionId="delete"
                 onClick={() => setDeleteConversation(c.id)}
-                aria-label="delete"
+                aria-label={`Delete conversation ${c.id}`}
               />

153-156: Fix comment typo.

Minor typo in the inline comment.

-            // if current conversaiontId is deleted, start new conversation
+            // if current conversationId is deleted, start a new conversation

37-54: Consider stable date formatting.

toLocaleString() varies by locale/timezone; if tests or UX expect consistency, consider an explicit formatter (e.g., Intl.DateTimeFormat with a fixed locale/timeZone) or a relative time label.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 7a0b7a3 and f7fd565.

📒 Files selected for processing (3)
  • libs/chatbot/lib/components/ChatBot/ChatBotHistory.tsx (4 hunks)
  • libs/chatbot/lib/components/ChatBot/ChatBotWindow.tsx (1 hunks)
  • libs/chatbot/lib/components/ChatBot/DeleteConversationModal.tsx (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
libs/chatbot/lib/components/ChatBot/DeleteConversationModal.tsx (1)
libs/ui-lib-tests/cypress/views/reusableComponents/Alert.ts (1)
  • Alert (1-20)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: tests
  • GitHub Check: translation-files
  • GitHub Check: unit-tests
  • GitHub Check: circular-deps
  • GitHub Check: lint
  • GitHub Check: format
🔇 Additional comments (3)
libs/chatbot/lib/components/ChatBot/DeleteConversationModal.tsx (1)

28-39: Solid delete flow + disable-close during action.

State handling, error surfacing, and preventing close while deleting look good.

libs/chatbot/lib/components/ChatBot/ChatBotHistory.tsx (2)

129-160: End-to-end flow looks good.

Modal wiring, active-conversation handling, and refresh after delete are coherent.


133-151: Verify DELETE /v1/conversations/{id} response contract
I didn’t find any spec or handler in the repo that indicates whether this endpoint returns HTTP 204 or a JSON payload on success (and what the exact error schema is). Please confirm the API contract and update the DELETE response parsing accordingly.

@openshift-ci-robot
Copy link

openshift-ci-robot commented Sep 1, 2025

@rawagner: This pull request references MGMT-21647 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.20.0" version, but no target version was set.

Details

In response to this:

Screenshot From 2025-09-01 13-59-04

Summary by CodeRabbit

  • New Features

  • Delete conversations directly from history with a confirmation modal.

  • Improvements

  • Conversation list refreshes automatically after deletions and new chats.

  • Shows "No conversation history" empty state when appropriate.

  • Recent conversations shown first; loading behavior improved.

  • Better inline error feedback if a delete fails.

  • Starting a new conversation can optionally keep the history panel open.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci-robot
Copy link

openshift-ci-robot commented Sep 1, 2025

@rawagner: This pull request references MGMT-21647 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.20.0" version, but no target version was set.

Details

In response to this:

Screenshot From 2025-09-01 13-59-04

Summary by CodeRabbit

  • New Features

  • Delete conversations directly from history via a confirmation modal and per-item delete action.

  • Improvements

  • Conversation list refreshes automatically after deletions and new chats.

  • Shows "No conversation history" when appropriate; recent conversations shown first.

  • Better inline error feedback on delete failures.

  • Starting a new conversation can optionally keep the history panel open.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
libs/chatbot/lib/components/ChatBot/ChatBotHistory.tsx (1)

133-151: Fix DELETE handling: avoid double-reading body and handle 204/non-JSON responses

Current code calls resp.json() twice and assumes JSON on success. This will throw on 204 No Content or non-JSON bodies.

           onDelete={async () => {
             const resp = await onApiCall(`/v1/conversations/${deleteConversation}`, {
               method: 'DELETE',
             });
-            if (!resp.ok) {
-              let errMsg = `Unexpected response code ${resp.status}`;
-              try {
-                const errDetail = (await resp.json()) as { detail?: { cause?: string } };
-                if (errDetail.detail?.cause) {
-                  errMsg = errDetail.detail.cause;
-                }
-              } catch {
-                //failed to get err cause
-              }
-              throw errMsg;
-            }
-            const deleteResult = (await resp.json()) as { success: boolean; response: string };
-            if (!deleteResult.success) {
-              throw deleteResult.response;
-            }
-
-            // if current conversaiontId is deleted, start new conversation
+            const contentType = resp.headers.get('content-type') || '';
+            if (!resp.ok) {
+              let errMsg = `Unexpected response code ${resp.status}`;
+              if (contentType.includes('application/json')) {
+                try {
+                  const errDetail = (await resp.json()) as { detail?: { cause?: string } };
+                  errMsg = errDetail.detail?.cause || errMsg;
+                } catch {
+                  // ignore JSON parse failure
+                }
+              } else {
+                try {
+                  const text = await resp.text();
+                  if (text) errMsg = text;
+                } catch {
+                  // ignore body read failure
+                }
+              }
+              throw errMsg;
+            }
+            // Success: handle JSON or 204/empty body
+            if (resp.status !== 204 && contentType.includes('application/json')) {
+              const deleteResult = (await resp.json()) as { success?: boolean; response?: string };
+              if (deleteResult?.success === false) {
+                throw deleteResult.response || 'Delete failed';
+              }
+            }
+
+            // If the current conversationId is deleted, start a new conversation (keep drawer open)
             if (deleteConversation === conversationId) {
               startNewConversation(false);
             }
 
             await fetchConversations();
           }}

Also applies to: 153-159

🧹 Nitpick comments (3)
libs/chatbot/lib/components/ChatBot/ChatBotHistory.tsx (3)

37-54: Make list building defensive (null-safe) and avoid in-place sort

Use a copied array to avoid accidental mutation and guard for missing conversations.

-      const cnvs = (await resp.json()) as ConversationHistory;
-      setConversations(
-        cnvs.conversations
-          .sort((a, b) => Date.parse(b.created_at) - Date.parse(a.created_at))
-          .map(({ conversation_id, created_at }) => ({
-            id: conversation_id,
-            text: new Date(created_at).toLocaleString(),
-          })),
-      );
+      const cnvs = (await resp.json()) as ConversationHistory;
+      const list = (cnvs.conversations || [])
+        .slice()
+        .sort((a, b) => Date.parse(b.created_at) - Date.parse(a.created_at))
+        .map(({ conversation_id, created_at }) => ({
+          id: conversation_id,
+          text: new Date(created_at).toLocaleString(),
+        }));
+      setConversations(list);

86-107: Close/toggle drawer deterministically; improve a11y label

  • Use functional state update for toggle to avoid stale captures.
  • When selecting an item, set to closed explicitly.
  • Provide a clearer aria-label on the delete action.
         onDrawerToggle={() => {
-          setIsOpen(!isOpen);
+          setIsOpen((open) => !open);
         }}
@@
-              <MenuItemAction
+              <MenuItemAction
                 icon={<TrashAltIcon />}
                 actionId="delete"
                 onClick={() => setDeleteConversation(c.id)}
-                aria-label="delete"
+                aria-label="Delete conversation"
               />
@@
-        onSelectActiveItem={(_, itemId) => {
-          itemId !== undefined && void loadConversation(`${itemId}`);
-          setIsOpen(!isOpen);
-        }}
+        onSelectActiveItem={(_, itemId) => {
+          if (itemId !== undefined) {
+            void loadConversation(`${itemId}`);
+          }
+          setIsOpen(false);
+        }}

Also applies to: 93-101


153-156: Typo in comment: “conversaiontId” → “conversationId”

Non-user-facing, but easy win for readability.

-            // if current conversaiontId is deleted, start new conversation
+            // If the current conversationId is deleted, start a new conversation (keep drawer open)
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 45e0a18 and 5f5c977.

📒 Files selected for processing (3)
  • libs/chatbot/lib/components/ChatBot/ChatBotHistory.tsx (4 hunks)
  • libs/chatbot/lib/components/ChatBot/ChatBotWindow.tsx (1 hunks)
  • libs/chatbot/lib/components/ChatBot/DeleteConversationModal.tsx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • libs/chatbot/lib/components/ChatBot/DeleteConversationModal.tsx
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: translation-files
  • GitHub Check: circular-deps
  • GitHub Check: unit-tests
  • GitHub Check: format
  • GitHub Check: lint
  • GitHub Check: tests
🔇 Additional comments (3)
libs/chatbot/lib/components/ChatBot/ChatBotWindow.tsx (1)

108-111: Wrapper preserves behavior; good change

The optional closeDrawer flag keeps existing UX by default while enabling history-driven flows to keep the drawer open. Looks correct.

libs/chatbot/lib/components/ChatBot/ChatBotHistory.tsx (2)

7-11: Imports align with new UI affordances

Alert, MenuItemAction, TrashAltIcon, and DeleteConversationModal are appropriate for the delete flow.


18-21: Signature expansion verified – all call sites updated
Only ChatBotWindow defines the optional closeDrawer parameter and ChatBotHistory invokes it with false. No remaining callers rely on a zero-arg signature.

@rawagner
Copy link
Member Author

rawagner commented Sep 1, 2025

/cherry-pick releases/v0.1-chatbot

@openshift-cherrypick-robot
Copy link
Contributor

@rawagner: once the present PR merges, I will cherry-pick it on top of releases/v0.1-chatbot in a new PR and assign it to you.

Details

In response to this:

/cherry-pick releases/v0.1-chatbot

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@openshift-ci-robot
Copy link

openshift-ci-robot commented Sep 4, 2025

@rawagner: This pull request references MGMT-21647 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.21.0" version, but no target version was set.

Details

In response to this:

Screenshot From 2025-09-01 13-59-04

Summary by CodeRabbit

  • New Features

  • Delete conversations from history via a confirmation modal and per-item delete action.

  • Improvements

  • Conversation list refreshes automatically after deletions and new chats; recent conversations shown first.

  • Shows "No conversation history" when appropriate.

  • Better inline error feedback on delete failures.

  • Option to start a new conversation without closing the history panel.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (1)
libs/chatbot/lib/components/ChatBot/DeleteConversationModal.tsx (1)

47-56: ARIA labelling is now aligned.

aria-labelledby matches ModalHeader’s labelId. Good fix.

🧹 Nitpick comments (4)
libs/chatbot/lib/components/ChatBot/DeleteConversationModal.tsx (4)

29-40: Avoid setState after unmount in success path.

onClose() may unmount the modal before finally runs, causing a state update on an unmounted component. Set isDeleting to false before closing.

   const handleDelete = React.useCallback(async () => {
     setError(undefined);
     setIsDeleting(true);
     try {
-      await onDelete();
-      onClose();
+      await onDelete();
     } catch (e) {
       setError(getErrorMessage(e));
-    } finally {
-      setIsDeleting(false);
-    }
+      return setIsDeleting(false);
+    }
+    setIsDeleting(false);
+    onClose();
   }, [onDelete, onClose]);

60-61: Tighten user-facing copy; avoid dumping long/opaque content.

Use a neutral prompt; optionally show a short, meaningful detail elsewhere (e.g., date). Long conversation.text can overflow.

-            Are you sure you want to delete conversation from <b>{conversation.text}</b>?
+            Are you sure you want to delete this conversation?

64-66: Announce errors to screen readers.

Make the inline alert a live region.

-              <Alert isInline variant="danger" title="Failed to delete conversation">
+              <Alert isInline variant="danger" title="Failed to delete conversation" isLiveRegion>
                 {error}
               </Alert>

72-83: Drop unnecessary keys and set explicit button type.

key is irrelevant here; add type="button" to avoid unintended form submits if embedded in a form.

-        <Button
-          key="confirm"
+        <Button
+          type="button"
           variant="danger"
           onClick={() => void handleDelete()}
           isDisabled={isDeleting}
           isLoading={isDeleting}
         >
           Delete
         </Button>
-        <Button key="cancel" variant="link" onClick={onClose} isDisabled={isDeleting}>
+        <Button type="button" variant="link" onClick={onClose} isDisabled={isDeleting}>
           Cancel
         </Button>
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 5f5c977 and 6423763.

📒 Files selected for processing (3)
  • libs/chatbot/lib/components/ChatBot/ChatBotHistory.tsx (4 hunks)
  • libs/chatbot/lib/components/ChatBot/ChatBotWindow.tsx (1 hunks)
  • libs/chatbot/lib/components/ChatBot/DeleteConversationModal.tsx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • libs/chatbot/lib/components/ChatBot/ChatBotHistory.tsx
  • libs/chatbot/lib/components/ChatBot/ChatBotWindow.tsx
🧰 Additional context used
🧬 Code graph analysis (1)
libs/chatbot/lib/components/ChatBot/DeleteConversationModal.tsx (1)
libs/ui-lib-tests/cypress/views/reusableComponents/Alert.ts (1)
  • Alert (1-20)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: unit-tests
  • GitHub Check: translation-files
  • GitHub Check: tests
  • GitHub Check: circular-deps
  • GitHub Check: format
  • GitHub Check: lint

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Sep 4, 2025
@openshift-ci
Copy link

openshift-ci bot commented Sep 4, 2025

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: celdrake, rawagner

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-merge-bot openshift-merge-bot bot merged commit 8ea9486 into openshift-assisted:master Sep 4, 2025
11 checks passed
@openshift-cherrypick-robot
Copy link
Contributor

@rawagner: new pull request created: #3157

Details

In response to this:

/cherry-pick releases/v0.1-chatbot

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

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

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants