Skip to content

refactor: Add create knowledge button#9520

Merged
deon-sanchez merged 3 commits into
mainfrom
lfoss-1967
Aug 25, 2025
Merged

refactor: Add create knowledge button#9520
deon-sanchez merged 3 commits into
mainfrom
lfoss-1967

Conversation

@deon-sanchez
Copy link
Copy Markdown
Collaborator

@deon-sanchez deon-sanchez commented Aug 25, 2025

Just adds a button to allow users to create knowledge using a template

Screenshot 2025-08-25 at 10 01 43 AM

Summary by CodeRabbit

  • New Features

    • Added a “Create knowledge” button in the Knowledge Bases tab toolbar.
    • Improved empty state with a clear “No knowledge bases” message, description, and a Create Knowledge action.
    • Creating a knowledge base now opens the new flow directly from both the toolbar and empty state.
  • Refactor

    • Streamlined the creation flow behind the scenes for a smoother, more consistent experience across the page.

…ndleCreateKnowledge function into KnowledgeBasesTab

- Refactored KnowledgeBaseEmptyState to accept handleCreateKnowledge as a prop, removing internal logic for flow creation.
- Updated KnowledgeBasesTab to implement handleCreateKnowledge, enhancing the flow creation process and improving component interaction.
@deon-sanchez deon-sanchez self-assigned this Aug 25, 2025
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Aug 25, 2025

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

Replaces internal flow-creation logic in KnowledgeBaseEmptyState with a prop-driven handler. Moves creation/navigation/analytics logic into KnowledgeBasesTab, wiring a toolbar button and empty state to a new handleCreateKnowledge that creates a Knowledge Ingestion flow, updates IDs, navigates via folderId from URL or fallback, and tracks an event.

Changes

Cohort / File(s) Summary
Component API change
src/frontend/src/pages/MainPage/pages/filesPage/components/KnowledgeBaseEmptyState.tsx
Converted presentational component to accept prop handleCreateKnowledge: () => void; removed internal routing/analytics/store logic; renders heading, description, and button using provided handler.
Tab integration and flow creation
src/frontend/src/pages/MainPage/pages/filesPage/components/KnowledgeBasesTab.tsx
Added flow-creation logic: resolves folderId from URL or user collection, finds Knowledge Ingestion example, updates IDs, creates new flow, navigates to folder path, and tracks “New Flow Created”. Passes handleCreateKnowledge to empty state and adds a toolbar “Create knowledge” button.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant U as User
  participant K as KnowledgeBasesTab
  participant FM as FlowsManager
  participant ST as Stores (user/collections)
  participant R as Router
  participant A as Analytics

  U->>K: Click "Create knowledge" (toolbar or empty state)
  K->>ST: Resolve folderId (URL params or user collection)
  K->>FM: Get "Knowledge Ingestion" example
  FM-->>K: Example flow template
  K->>FM: Create new flow with updated IDs
  FM-->>K: New flow id
  K->>R: Navigate to /.../folders/{folderId}/flows/{newFlowId}
  K->>A: Track "New Flow Created"
  R-->>U: Show new flow page
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • erichare
  • lucaseduoli
  • mfortman11
✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch lfoss-1967

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 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.

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.

@github-actions github-actions Bot added the refactor Maintenance tasks and housekeeping label Aug 25, 2025
@github-actions github-actions Bot added refactor Maintenance tasks and housekeeping and removed refactor Maintenance tasks and housekeeping labels Aug 25, 2025
Comment on lines -11 to -34
const KnowledgeBaseEmptyState = () => {
const examples = useFlowsManagerStore((state) => state.examples);
const addFlow = useAddFlow();
const navigate = useCustomNavigate();
const { folderId } = useParams();
const myCollectionId = useFolderStore((state) => state.myCollectionId);

const folderIdUrl = folderId ?? myCollectionId;

const handleCreateKnowledge = async () => {
const knowledgeBasesExample = examples.find(
(example) => example.name === "Knowledge Ingestion",
);

if (knowledgeBasesExample && knowledgeBasesExample.data) {
updateIds(knowledgeBasesExample.data);
addFlow({ flow: knowledgeBasesExample }).then((id) => {
navigate(`/flow/${id}/folder/${folderIdUrl}`);
});
track("New Flow Created", {
template: `${knowledgeBasesExample.name} Template`,
});
}
};
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

moved this to the parent component because both empty and header buttons do the same thing.

@github-actions github-actions Bot added refactor Maintenance tasks and housekeeping and removed refactor Maintenance tasks and housekeeping labels Aug 25, 2025
@erichare erichare self-requested a review August 25, 2025 16:14
@github-actions github-actions Bot added the lgtm This PR has been approved by a maintainer label Aug 25, 2025
Copy link
Copy Markdown
Contributor

@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 (2)
src/frontend/src/pages/MainPage/pages/filesPage/components/KnowledgeBaseEmptyState.tsx (1)

18-31: Align label casing and add a stable test id for the button

  • The toolbar uses “Create knowledge” while this button says “Create Knowledge.” Pick one style to avoid UI inconsistency.
  • Add a data-testid to make E2E tests less brittle.

Apply this diff:

-        <Button
-          onClick={handleCreateKnowledge}
-          className="!px-3 md:!px-4 md:!pl-3.5"
-        >
+        <Button
+          onClick={handleCreateKnowledge}
+          className="!px-3 md:!px-4 md:!pl-3.5"
+          data-testid="create-knowledge-btn"
+        >
@@
-          <span className="whitespace-nowrap font-semibold">
-            Create Knowledge
-          </span>
+          <span className="whitespace-nowrap font-semibold">Create knowledge</span>
src/frontend/src/pages/MainPage/pages/filesPage/components/KnowledgeBasesTab.tsx (1)

196-201: Harden toolbar CTA for testing and UX

  • Add a data-testid to stabilize tests.
  • Consider disabling the button while creation is in progress to prevent duplicate flows (can be done with a simple isCreating state).

Apply this diff:

-        <Button
-          className="flex items-center gap-2 font-semibold"
-          onClick={handleCreateKnowledge}
-        >
-          <ForwardedIconComponent name="Plus" /> Create knowledge
-        </Button>
+        <Button
+          className="flex items-center gap-2 font-semibold"
+          onClick={handleCreateKnowledge}
+          data-testid="create-knowledge-toolbar-btn"
+        >
+          <ForwardedIconComponent name="Plus" /> Create knowledge
+        </Button>
📜 Review details

Configuration used: Path: .coderabbit.yaml

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 bc82d99 and 9473d7d.

📒 Files selected for processing (2)
  • src/frontend/src/pages/MainPage/pages/filesPage/components/KnowledgeBaseEmptyState.tsx (1 hunks)
  • src/frontend/src/pages/MainPage/pages/filesPage/components/KnowledgeBasesTab.tsx (5 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
src/frontend/src/**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (.cursor/rules/frontend_development.mdc)

src/frontend/src/**/*.{ts,tsx,js,jsx}: All frontend TypeScript and JavaScript code should be located under src/frontend/src/ and organized into components, pages, icons, stores, types, utils, hooks, services, and assets directories as per the specified directory layout.
Use React 18 with TypeScript for all UI components in the frontend.
Format all TypeScript and JavaScript code using the make format_frontend command.
Lint all TypeScript and JavaScript code using the make lint command.

Files:

  • src/frontend/src/pages/MainPage/pages/filesPage/components/KnowledgeBaseEmptyState.tsx
  • src/frontend/src/pages/MainPage/pages/filesPage/components/KnowledgeBasesTab.tsx
🧠 Learnings (1)
📚 Learning: 2025-06-23T12:46:42.048Z
Learnt from: CR
PR: langflow-ai/langflow#0
File: .cursor/rules/frontend_development.mdc:0-0
Timestamp: 2025-06-23T12:46:42.048Z
Learning: Custom React Flow node types should be implemented as memoized components, using Handle components for connection points and supporting optional icons and labels.

Applied to files:

  • src/frontend/src/pages/MainPage/pages/filesPage/components/KnowledgeBasesTab.tsx
🧬 Code graph analysis (1)
src/frontend/src/pages/MainPage/pages/filesPage/components/KnowledgeBasesTab.tsx (4)
src/frontend/src/stores/foldersStore.tsx (1)
  • useFolderStore (4-29)
src/frontend/src/utils/reactflowUtils.ts (1)
  • updateIds (563-624)
src/frontend/src/customization/utils/analytics.ts (1)
  • track (1-7)
src/frontend/src/components/common/genericIconComponent/index.tsx (1)
  • ForwardedIconComponent (15-146)
🔇 Additional comments (4)
src/frontend/src/pages/MainPage/pages/filesPage/components/KnowledgeBaseEmptyState.tsx (2)

4-8: LGTM: Presentational empty-state is now prop-driven

Good separation of concerns. Moving creation/navigation logic out keeps this component clean and reusable.


22-26: No changes needed for ForwardedIconComponent import.
Verified that src/frontend/src/components/common/genericIconComponent/index.tsx includes both

export const ForwardedIconComponent = memo(/*…*/)
export default ForwardedIconComponent;

ensuring the existing default import is valid.

src/frontend/src/pages/MainPage/pages/filesPage/components/KnowledgeBasesTab.tsx (2)

176-179: LGTM: Empty state correctly wired to creation handler

Rendering KnowledgeBaseEmptyState with the new prop keeps the creation flow discoverable when the list is empty.


8-12: No changes needed: default export of ForwardedIconComponent is present

The verification shows that src/frontend/src/components/common/genericIconComponent/index.tsx includes both

export const ForwardedIconComponent = memo( forwardRef(/* … */) );
export default ForwardedIconComponent;

Since the module explicitly provides a default export, importing it as the default is correct and will not result in an undefined component at runtime.

No modifications are required to the import in KnowledgeBasesTab.tsx (or in KnowledgeBaseEmptyState.tsx).

Likely an incorrect or invalid review comment.

Comment on lines +59 to +65
const examples = useFlowsManagerStore((state) => state.examples);
const addFlow = useAddFlow();
const navigate = useCustomNavigate();
const { folderId } = useParams();
const myCollectionId = useFolderStore((state) => state.myCollectionId);
const folderIdUrl = folderId ?? myCollectionId;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Guard against empty folderIdUrl to avoid navigating to an invalid route

If both folderId (from URL) and myCollectionId (from store) are empty, folderIdUrl becomes "", producing /flow/${id}/folder/ which might not match any route.

  • Either make the folder segment optional in routing, or
  • Fallback to /flow/${id} when folderIdUrl is falsy.

Run this to inspect route definitions and confirm whether the folder segment is optional:


🏁 Script executed:

#!/bin/bash
# Look for flow routes and whether /folder/:folderId is required
rg -nP -C3 'path\s*:\s*["\']\/flow\/:id(\/folder\/:folderId)?["\']' src/frontend/src || true
rg -nP -C3 'path\s*:\s*["\']\/flow\/:id\/folder\/:folderId["\']' src/frontend/src || true

Length of output: 275


🏁 Script executed:

#!/usr/bin/env bash
# Search for explicit route definitions for flow with folder segment
echo "=== /flow/:id/folder/:folderId routes ==="
rg -n -C2 "/flow/:id/folder/:folderId" -t tsx -t ts src/frontend/src || true

echo
# Search for routes matching /flow/:id (without folder)
echo "=== /flow/:id routes ==="
rg -n -C2 "/flow/:id" -t tsx -t ts src/frontend/src || true

Length of output: 350


🏁 Script executed:

#!/usr/bin/env bash
# Search for router definitions in the frontend source
echo "=== createBrowserRouter or RouterProvider usage ==="
rg -n 'createBrowserRouter' -C2 src/frontend/src || true
rg -n 'RouterProvider' -C2 src/frontend/src || true

echo
echo "=== Route path definitions ==="
rg -nP "path\\s*:" -C2 src/frontend/src || true

Length of output: 32171


🏁 Script executed:

#!/usr/bin/env bash
# Display the route definitions in routes.tsx to inspect /flow routes
head -n 100 src/frontend/src/routes.tsx

Length of output: 4098


🏁 Script executed:

#!/usr/bin/env bash
# Display children routes under “flows/” to inspect folder segment definitions
sed -n '101,200p' src/frontend/src/routes.tsx

Length of output: 3574


Guard against invalid folder routes before navigation

The router in src/frontend/src/routes.tsx defines both
/flow/:id/ – renders <FlowPage /> via the empty-string child route
/flow/:id/folder/:folderId/ – also renders <FlowPage /> when folderId is present

However, if folderIdUrl (from useParams() or the store) is empty, navigating to

/flow/${id}/folder/

won’t match either route. To fix this, conditionally include the /folder/:folderId segment only when folderIdUrl is truthy, falling back to /flow/${id} otherwise.

• File: src/pages/MainPage/pages/filesPage/components/KnowledgeBasesTab.tsx
• Lines: 59–65

Suggested diff:

-  const { folderId } = useParams();
-  const myCollectionId = useFolderStore((state) => state.myCollectionId);
-  const folderIdUrl = folderId ?? myCollectionId;
+  const { folderId } = useParams();
+  const myCollectionId = useFolderStore((state) => state.myCollectionId);
+  const folderIdUrl = folderId ?? myCollectionId;
+  // Only include /folder/:folderId when we have an ID
+  const folderSegment = folderIdUrl ? `/folder/${folderIdUrl}` : "";

   const handleNavigate = (flowId: string) => {
-    navigate(`/flow/${flowId}/folder/${folderIdUrl}`);
+    navigate(`/flow/${flowId}${folderSegment}`);
   };
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
const examples = useFlowsManagerStore((state) => state.examples);
const addFlow = useAddFlow();
const navigate = useCustomNavigate();
const { folderId } = useParams();
const myCollectionId = useFolderStore((state) => state.myCollectionId);
const folderIdUrl = folderId ?? myCollectionId;
const examples = useFlowsManagerStore((state) => state.examples);
const addFlow = useAddFlow();
const navigate = useCustomNavigate();
const { folderId } = useParams();
const myCollectionId = useFolderStore((state) => state.myCollectionId);
const folderIdUrl = folderId ?? myCollectionId;
// Only include /folder/:folderId when we have an ID
const folderSegment = folderIdUrl ? `/folder/${folderIdUrl}` : "";
const handleNavigate = (flowId: string) => {
navigate(`/flow/${flowId}${folderSegment}`);
};
🤖 Prompt for AI Agents
In
src/frontend/src/pages/MainPage/pages/filesPage/components/KnowledgeBasesTab.tsx
around lines 59 to 65, the code builds a navigation path that always appends the
'/folder/:folderId' segment using folderIdUrl which can be empty, producing a
route like '/flow/${id}/folder/' that doesn't match any route; change the
navigation logic to conditionally include the folder segment only when
folderIdUrl is truthy (use '/flow/${id}/folder/${folderIdUrl}' when truthy,
otherwise use '/flow/${id}') so navigation only generates valid routes.

Comment on lines +138 to +152
const handleCreateKnowledge = async () => {
const knowledgeBasesExample = examples.find(
(example) => example.name === "Knowledge Ingestion",
);

if (knowledgeBasesExample && knowledgeBasesExample.data) {
updateIds(knowledgeBasesExample.data);
addFlow({ flow: knowledgeBasesExample }).then((id) => {
navigate(`/flow/${id}/folder/${folderIdUrl}`);
});
track("New Flow Created", {
template: `${knowledgeBasesExample.name} Template`,
});
}
};
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Clone template before updateIds, add error handling, and include flow id in analytics

  • updateIds mutates nodes/edges in place. Passing store-backed examples will mutate shared state. Deep-clone first.
  • Handle addFlow failures to provide user feedback.
  • Include the created flow id in analytics for traceability.
  • Navigate to /flow/${id} when folderIdUrl is missing.

Apply this diff:

-  const handleCreateKnowledge = async () => {
-    const knowledgeBasesExample = examples.find(
-      (example) => example.name === "Knowledge Ingestion",
-    );
-
-    if (knowledgeBasesExample && knowledgeBasesExample.data) {
-      updateIds(knowledgeBasesExample.data);
-      addFlow({ flow: knowledgeBasesExample }).then((id) => {
-        navigate(`/flow/${id}/folder/${folderIdUrl}`);
-      });
-      track("New Flow Created", {
-        template: `${knowledgeBasesExample.name} Template`,
-      });
-    }
-  };
+  const handleCreateKnowledge = async () => {
+    const tpl = examples.find((e) => e.name === "Knowledge Ingestion");
+    if (!tpl?.data) {
+      setErrorData({
+        title: "Template not found",
+        list: ['The "Knowledge Ingestion" template is missing.'],
+      });
+      return;
+    }
+    // Clone to avoid mutating examples store
+    const flowCopy = typeof structuredClone === "function" ? structuredClone(tpl) : JSON.parse(JSON.stringify(tpl));
+    updateIds(flowCopy.data);
+    try {
+      const id = await addFlow({ flow: flowCopy });
+      track(
+        "New Flow Created",
+        { template: `${tpl.name} Template` },
+        id,
+      );
+      const targetPath = folderIdUrl ? `/flow/${id}/folder/${folderIdUrl}` : `/flow/${id}`;
+      navigate(targetPath);
+    } catch (e: any) {
+      setErrorData({
+        title: "Failed to create knowledge flow",
+        list: [e?.response?.data?.detail || e?.message || "An unknown error occurred"],
+      });
+    }
+  };

Optional follow-ups:

  • Wrap handleCreateKnowledge in useCallback to keep a stable reference for children.
  • Replace the hard-coded template name with a constant or a templateId to avoid brittleness.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
const handleCreateKnowledge = async () => {
const knowledgeBasesExample = examples.find(
(example) => example.name === "Knowledge Ingestion",
);
if (knowledgeBasesExample && knowledgeBasesExample.data) {
updateIds(knowledgeBasesExample.data);
addFlow({ flow: knowledgeBasesExample }).then((id) => {
navigate(`/flow/${id}/folder/${folderIdUrl}`);
});
track("New Flow Created", {
template: `${knowledgeBasesExample.name} Template`,
});
}
};
const handleCreateKnowledge = async () => {
const tpl = examples.find((e) => e.name === "Knowledge Ingestion");
if (!tpl?.data) {
setErrorData({
title: "Template not found",
list: ['The "Knowledge Ingestion" template is missing.'],
});
return;
}
// Clone to avoid mutating examples store
const flowCopy =
typeof structuredClone === "function"
? structuredClone(tpl)
: JSON.parse(JSON.stringify(tpl));
updateIds(flowCopy.data);
try {
const id = await addFlow({ flow: flowCopy });
track(
"New Flow Created",
{ template: `${tpl.name} Template` },
id,
);
const targetPath = folderIdUrl
? `/flow/${id}/folder/${folderIdUrl}`
: `/flow/${id}`;
navigate(targetPath);
} catch (e: any) {
setErrorData({
title: "Failed to create knowledge flow",
list: [
e?.response?.data?.detail ||
e?.message ||
"An unknown error occurred",
],
});
}
};
🤖 Prompt for AI Agents
In
src/frontend/src/pages/MainPage/pages/filesPage/components/KnowledgeBasesTab.tsx
around lines 138-152, the handler mutates the shared examples object, lacks
error handling for addFlow, doesn't include the created flow id in analytics,
and doesn't handle missing folderIdUrl in navigation; fix by deep-cloning
knowledgeBasesExample.data (e.g., structuredClone or
JSON.parse(JSON.stringify(...))) before calling updateIds to avoid mutating
store-backed state, await addFlow inside try/catch and show user feedback on
failure, on success navigate to `/flow/${id}/folder/${folderIdUrl}` but fall
back to `/flow/${id}` when folderIdUrl is falsy, and include the returned id in
the track call payload (e.g., { template: `${name} Template`, flowId: id }) so
analytics contains the flow id.

@github-actions github-actions Bot added refactor Maintenance tasks and housekeeping and removed refactor Maintenance tasks and housekeeping labels Aug 25, 2025
@sonarqubecloud
Copy link
Copy Markdown

@github-actions
Copy link
Copy Markdown
Contributor

Frontend Unit Test Coverage Report

Coverage Summary

Lines Statements Branches Functions
Coverage: 4%
4.07% (1042/25572) 1.98% (384/19361) 1.95% (108/5528)

Unit Test Results

Tests Skipped Failures Errors Time
527 0 💤 0 ❌ 0 🔥 8.466s ⏱️

@codecov
Copy link
Copy Markdown

codecov Bot commented Aug 25, 2025

Codecov Report

❌ Patch coverage is 0% with 26 lines in your changes missing coverage. Please review.
✅ Project coverage is 33.82%. Comparing base (ae274a3) to head (ead6a83).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
...e/pages/filesPage/components/KnowledgeBasesTab.tsx 0.00% 24 Missing ⚠️
...s/filesPage/components/KnowledgeBaseEmptyState.tsx 0.00% 2 Missing ⚠️

❌ Your patch status has failed because the patch coverage (0.00%) is below the target coverage (40.00%). You can increase the patch coverage or adjust the target coverage.
❌ Your project status has failed because the head coverage (3.80%) is below the target coverage (10.00%). You can increase the head coverage or adjust the target coverage.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #9520      +/-   ##
==========================================
- Coverage   33.82%   33.82%   -0.01%     
==========================================
  Files        1196     1196              
  Lines       56389    56392       +3     
  Branches     5335     5335              
==========================================
  Hits        19072    19072              
- Misses      37247    37250       +3     
  Partials       70       70              
Flag Coverage Δ
frontend 3.80% <0.00%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...s/filesPage/components/KnowledgeBaseEmptyState.tsx 0.00% <0.00%> (ø)
...e/pages/filesPage/components/KnowledgeBasesTab.tsx 0.00% <0.00%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@deon-sanchez deon-sanchez added this pull request to the merge queue Aug 25, 2025
Merged via the queue into main with commit 24ec2bd Aug 25, 2025
60 of 62 checks passed
@deon-sanchez deon-sanchez deleted the lfoss-1967 branch August 25, 2025 19:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lgtm This PR has been approved by a maintainer refactor Maintenance tasks and housekeeping

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants