From baaf624eae9d5e90b95c2540404f0f0ea8d91716 Mon Sep 17 00:00:00 2001 From: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com> Date: Tue, 30 Sep 2025 13:26:24 -0600 Subject: [PATCH 01/19] added button themes and fixed alignment --- frontend/components/navigation-layout.tsx | 5 +- frontend/src/components/layout-wrapper.tsx | 23 +++--- frontend/src/components/ui/buttonTheme.tsx | 68 ++++++++++++++++ frontend/src/components/user-nav.tsx | 95 +++++++++++++--------- 4 files changed, 139 insertions(+), 52 deletions(-) create mode 100644 frontend/src/components/ui/buttonTheme.tsx diff --git a/frontend/components/navigation-layout.tsx b/frontend/components/navigation-layout.tsx index a2fdbe8f..2722c81f 100644 --- a/frontend/components/navigation-layout.tsx +++ b/frontend/components/navigation-layout.tsx @@ -1,7 +1,10 @@ "use client"; import { usePathname } from "next/navigation"; -import { useGetConversationsQuery, type ChatConversation } from "@/app/api/queries/useGetConversationsQuery"; +import { + useGetConversationsQuery, + type ChatConversation, +} from "@/app/api/queries/useGetConversationsQuery"; import { KnowledgeFilterDropdown } from "@/components/knowledge-filter-dropdown"; import { ModeToggle } from "@/components/mode-toggle"; import { Navigation } from "@/components/navigation"; diff --git a/frontend/src/components/layout-wrapper.tsx b/frontend/src/components/layout-wrapper.tsx index 5c2f0e13..c59b5158 100644 --- a/frontend/src/components/layout-wrapper.tsx +++ b/frontend/src/components/layout-wrapper.tsx @@ -2,7 +2,10 @@ import { Bell, Loader2 } from "lucide-react"; import { usePathname } from "next/navigation"; -import { useGetConversationsQuery, type ChatConversation } from "@/app/api/queries/useGetConversationsQuery"; +import { + useGetConversationsQuery, + type ChatConversation, +} from "@/app/api/queries/useGetConversationsQuery"; import { useGetSettingsQuery } from "@/app/api/queries/useGetSettingsQuery"; import { KnowledgeFilterPanel } from "@/components/knowledge-filter-panel"; import Logo from "@/components/logo/logo"; @@ -50,10 +53,10 @@ export function LayoutWrapper({ children }: { children: React.ReactNode }) { // Calculate active tasks for the bell icon const activeTasks = tasks.filter( - (task) => + task => task.status === "pending" || task.status === "running" || - task.status === "processing", + task.status === "processing" ); // Show loading state when backend isn't ready @@ -85,7 +88,7 @@ export function LayoutWrapper({ children }: { children: React.ReactNode }) {
-
+
{/* Knowledge Filter Dropdown */} {/* */} {/* Task Notification Bell */} - + {/* Separator */} -
+
diff --git a/frontend/src/components/ui/buttonTheme.tsx b/frontend/src/components/ui/buttonTheme.tsx new file mode 100644 index 00000000..b23b6a89 --- /dev/null +++ b/frontend/src/components/ui/buttonTheme.tsx @@ -0,0 +1,68 @@ +import { useEffect, useState } from "react"; +import { Monitor, Moon, Sun } from "lucide-react"; +import { useTheme } from "next-themes"; + +export const ThemeButtons = () => { + const { theme, setTheme } = useTheme(); + const [selectedTheme, setSelectedTheme] = useState("dark"); + + // Sync local state with theme context + useEffect(() => { + if (theme) { + setSelectedTheme(theme); + } + }, [theme]); + + const handleThemeChange = (newTheme: string) => { + setSelectedTheme(newTheme); + setTheme(newTheme); + }; + + return ( +
+ {/* Light Theme Button */} + + + {/* Dark Theme Button */} + + + {/* System Theme Button */} + +
+ ); +}; + +export default ThemeButtons; diff --git a/frontend/src/components/user-nav.tsx b/frontend/src/components/user-nav.tsx index 85ec5ddd..3adc9fd7 100644 --- a/frontend/src/components/user-nav.tsx +++ b/frontend/src/components/user-nav.tsx @@ -1,7 +1,7 @@ -"use client" +"use client"; -import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" -import { Button } from "@/components/ui/button" +import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; +import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, @@ -9,65 +9,79 @@ import { DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, -} from "@/components/ui/dropdown-menu" -import { useAuth } from "@/contexts/auth-context" -import { LogIn, LogOut, User, Moon, Sun, ChevronsUpDown } from "lucide-react" -import { useTheme } from "next-themes" +} from "@/components/ui/dropdown-menu"; +import { useAuth } from "@/contexts/auth-context"; +import { LogIn, LogOut, User, Moon, Sun, ChevronsUpDown } from "lucide-react"; +import { useTheme } from "next-themes"; +import ThemeButtons from "./ui/buttonTheme"; export function UserNav() { - const { user, isLoading, isAuthenticated, isNoAuthMode, login, logout } = useAuth() - const { theme, setTheme } = useTheme() + const { user, isLoading, isAuthenticated, isNoAuthMode, login, logout } = + useAuth(); + const { theme, setTheme } = useTheme(); if (isLoading) { - return ( -
- ) + return
; } // In no-auth mode, show a simple theme switcher instead of auth UI if (isNoAuthMode) { return ( - - ) + ); } if (!isAuthenticated) { return ( - - ) + ); } return ( - + + -
+

{user?.name}

{user?.email} @@ -75,20 +89,21 @@ export function UserNav() {

- setTheme(theme === "light" ? "dark" : "light")}> - {theme === "light" ? ( - - ) : ( - - )} - Toggle Theme - + {/* */} +
+ Theme + +
+ {/*
*/} - + Log out - ) -} \ No newline at end of file + ); +} From e94e6bb5a8bb26d34a7dedd4b964bd0f64a1f837 Mon Sep 17 00:00:00 2001 From: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com> Date: Tue, 30 Sep 2025 13:39:33 -0600 Subject: [PATCH 02/19] logo fix --- frontend/src/components/layout-wrapper.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/layout-wrapper.tsx b/frontend/src/components/layout-wrapper.tsx index c59b5158..0585a357 100644 --- a/frontend/src/components/layout-wrapper.tsx +++ b/frontend/src/components/layout-wrapper.tsx @@ -80,11 +80,11 @@ export function LayoutWrapper({ children }: { children: React.ReactNode }) { return (
-
+
{/* Logo/Title */} -
+
- OpenRAG + OpenRAG
From d1b6ff74290978687c3ec3beed14c38e2563f42b Mon Sep 17 00:00:00 2001 From: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com> Date: Tue, 30 Sep 2025 13:56:04 -0600 Subject: [PATCH 03/19] Refactor user navigation and theme button styles for improved layout and consistency. Adjusted padding and margins in user dropdown, updated button sizes in theme selection. --- frontend/src/components/ui/buttonTheme.tsx | 8 ++++---- frontend/src/components/user-nav.tsx | 22 ++++++++++------------ 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/frontend/src/components/ui/buttonTheme.tsx b/frontend/src/components/ui/buttonTheme.tsx index b23b6a89..62648541 100644 --- a/frontend/src/components/ui/buttonTheme.tsx +++ b/frontend/src/components/ui/buttonTheme.tsx @@ -19,10 +19,10 @@ export const ThemeButtons = () => { }; return ( -
+
{/* Light Theme Button */} - + -
+

{user?.name}

{user?.email}

- - {/* */} -
+ +
Theme
- {/* */} - - + ); From 9863eed98b2af62c108ed94c0c55014687e82a22 Mon Sep 17 00:00:00 2001 From: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com> Date: Tue, 30 Sep 2025 14:03:46 -0600 Subject: [PATCH 04/19] Update header and user navigation styles for improved layout consistency. Adjusted header height and button sizes for better alignment and usability. --- frontend/src/components/layout-wrapper.tsx | 4 ++-- frontend/src/components/user-nav.tsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/src/components/layout-wrapper.tsx b/frontend/src/components/layout-wrapper.tsx index 0585a357..8143a63c 100644 --- a/frontend/src/components/layout-wrapper.tsx +++ b/frontend/src/components/layout-wrapper.tsx @@ -79,7 +79,7 @@ export function LayoutWrapper({ children }: { children: React.ReactNode }) { // For all other pages, render with Langflow-styled navigation and task menu return (
-
+
{/* Logo/Title */}
@@ -104,7 +104,7 @@ export function LayoutWrapper({ children }: { children: React.ReactNode }) { {/* Task Notification Bell */} + ); } if (!isAuthenticated) { return ( - + ); } From 73af333060601bbee87a1234c1e2f8705d322d57 Mon Sep 17 00:00:00 2001 From: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com> Date: Wed, 1 Oct 2025 11:58:51 -0600 Subject: [PATCH 06/19] fixed hover and colors for nav --- frontend/components/navigation.tsx | 38 ++++++++++++++-------------- frontend/src/components/user-nav.tsx | 6 ++--- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/frontend/components/navigation.tsx b/frontend/components/navigation.tsx index 339b7d22..a8f80c43 100644 --- a/frontend/components/navigation.tsx +++ b/frontend/components/navigation.tsx @@ -111,7 +111,7 @@ export function Navigation({ ) { // Filter out the deleted conversation and find the next one const remainingConversations = conversations.filter( - (conv) => conv.response_id !== conversationToDelete.response_id, + conv => conv.response_id !== conversationToDelete.response_id ); if (remainingConversations.length > 0) { @@ -132,7 +132,7 @@ export function Navigation({ setDeleteModalOpen(false); setConversationToDelete(null); }, - onError: (error) => { + onError: error => { toast.error(`Failed to delete conversation: ${error.message}`); }, }); @@ -164,7 +164,7 @@ export function Navigation({ window.dispatchEvent( new CustomEvent("fileUploadStart", { detail: { filename: file.name }, - }), + }) ); try { @@ -188,7 +188,7 @@ export function Navigation({ filename: file.name, error: "Failed to process document", }, - }), + }) ); // Trigger loading end event @@ -208,7 +208,7 @@ export function Navigation({ window.dispatchEvent( new CustomEvent("fileUploaded", { detail: { file, result }, - }), + }) ); // Trigger loading end event @@ -222,7 +222,7 @@ export function Navigation({ window.dispatchEvent( new CustomEvent("fileUploadError", { detail: { filename: file.name, error: "Failed to process document" }, - }), + }) ); } }; @@ -244,7 +244,7 @@ export function Navigation({ const handleDeleteConversation = ( conversation: ChatConversation, - event?: React.MouseEvent, + event?: React.MouseEvent ) => { if (event) { event.preventDefault(); @@ -256,7 +256,7 @@ export function Navigation({ const handleContextMenuAction = ( action: string, - conversation: ChatConversation, + conversation: ChatConversation ) => { switch (action) { case "delete": @@ -334,15 +334,15 @@ export function Navigation({
- {routes.map((route) => ( + {routes.map(route => (
@@ -350,8 +350,8 @@ export function Navigation({ className={cn( "h-4 w-4 mr-3 shrink-0", route.active - ? "text-accent-foreground" - : "text-muted-foreground group-hover:text-foreground", + ? "text-muted-foreground" + : "text-muted-foreground group-hover:text-muted-foreground" )} /> {route.label} @@ -429,7 +429,7 @@ export function Navigation({ No conversations yet
) : ( - conversations.map((conversation) => ( + conversations.map(conversation => (
) : ( - conversationDocs.map((doc) => ( + conversationDocs.map(doc => (
setTheme(theme === "dark" ? "light" : "dark")} @@ -42,7 +42,7 @@ export function UserNav() { return ( @@ -52,7 +52,7 @@ export function UserNav() { return ( - {/* Separator */} -
+
diff --git a/frontend/src/components/user-nav.tsx b/frontend/src/components/user-nav.tsx index bac2f538..cf0f5527 100644 --- a/frontend/src/components/user-nav.tsx +++ b/frontend/src/components/user-nav.tsx @@ -42,7 +42,7 @@ export function UserNav() { return ( From b27ec87fe9f4b36a14429771d023976afeb5833d Mon Sep 17 00:00:00 2001 From: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com> Date: Wed, 1 Oct 2025 14:26:08 -0600 Subject: [PATCH 08/19] Refactor KnowledgeFilterList component layout and improve loading states. Update Navigation component styles for consistency. Adjust LayoutWrapper sidebar positioning. Fix UserNav conditional rendering logic. Clean up ChatProvider state update functions for clarity. --- frontend/components/knowledge-filter-list.tsx | 184 +++++++++--------- frontend/components/navigation.tsx | 15 +- frontend/src/components/layout-wrapper.tsx | 2 +- frontend/src/components/user-nav.tsx | 2 +- frontend/src/contexts/chat-context.tsx | 10 +- 5 files changed, 109 insertions(+), 104 deletions(-) diff --git a/frontend/components/knowledge-filter-list.tsx b/frontend/components/knowledge-filter-list.tsx index bac0e5ca..8e62058f 100644 --- a/frontend/components/knowledge-filter-list.tsx +++ b/frontend/components/knowledge-filter-list.tsx @@ -1,8 +1,7 @@ "use client"; import { useState } from "react"; -import { Button } from "@/components/ui/button"; -import { Loader2, Plus } from "lucide-react"; +import { Plus } from "lucide-react"; import { cn } from "@/lib/utils"; import { useGetFiltersSearchQuery, @@ -65,95 +64,102 @@ export function KnowledgeFilterList({ }; return ( - <> -
-
-
- Knowledge Filters -
- -
- {loading ? ( -
- - - Loading... - -
- ) : filters.length === 0 ? ( -
- {searchQuery ? "No filters found" : "No saved filters"} -
- ) : ( - filters.map((filter) => ( -
handleFilterSelect(filter)} - className={cn( - "flex items-center gap-3 px-3 py-2 w-full rounded-lg hover:bg-accent hover:text-accent-foreground cursor-pointer group transition-colors", - selectedFilter?.id === filter.id && - "active bg-accent text-accent-foreground" - )} +
+
+
+
+

+ Knowledge Filters +

+ +
+
+ {loading ? ( +
+ Loading...
-
- )) - )} + ) : filters.length === 0 ? ( +
+ {searchQuery ? "No filters found" : "No saved filters"} +
+ ) : ( + filters.map(filter => ( +
handleFilterSelect(filter)} + className={cn( + "flex items-center gap-3 px-3 py-2 w-full rounded-lg hover:bg-accent hover:text-accent-foreground cursor-pointer group transition-colors", + selectedFilter?.id === filter.id && + "active bg-accent text-accent-foreground" + )} + > +
+
+ {(() => { + const parsed = parseQueryData( + filter.query_data + ) as ParsedQueryData; + const Icon = iconKeyToComponent(parsed.icon); + return ( +
+ {Icon && } +
+ ); + })()} +
+ {filter.name} +
+
+ {filter.description && ( +
+ {filter.description} +
+ )} +
+
+ {new Date(filter.created_at).toLocaleDateString( + undefined, + { + month: "short", + day: "numeric", + year: "numeric", + } + )} +
+ + {(() => { + const dataSources = parseQueryData(filter.query_data) + .filters.data_sources; + if (dataSources[0] === "*") return "All sources"; + const count = dataSources.length; + return `${count} ${ + count === 1 ? "source" : "sources" + }`; + })()} + +
+
+
+ )) + )} +
+
+ {/* Create flow moved to panel create mode */}
- {/* Create flow moved to panel create mode */} - +
); } diff --git a/frontend/components/navigation.tsx b/frontend/components/navigation.tsx index c215f3dc..83306f21 100644 --- a/frontend/components/navigation.tsx +++ b/frontend/components/navigation.tsx @@ -5,7 +5,6 @@ import { FileText, Library, MessageSquare, - MoreHorizontal, Plus, Settings2, Trash2, @@ -397,7 +396,7 @@ export function Navigation({ {/* Conversations List - grows naturally, doesn't fill all space */}
{loadingNewConversation || isConversationsLoading ? ( -
+
Loading...
) : ( @@ -406,7 +405,7 @@ export function Navigation({ {placeholderConversation && (
-
+
setTheme(theme === "dark" ? "light" : "dark")} diff --git a/frontend/src/contexts/chat-context.tsx b/frontend/src/contexts/chat-context.tsx index db79e0d3..f41cd5d9 100644 --- a/frontend/src/contexts/chat-context.tsx +++ b/frontend/src/contexts/chat-context.tsx @@ -96,7 +96,7 @@ export function ChatProvider({ children }: ChatProviderProps) { const refreshConversations = useCallback((force = false) => { if (force) { // Immediate refresh for important updates like new conversations - setRefreshTrigger((prev) => prev + 1); + setRefreshTrigger(prev => prev + 1); return; } @@ -107,7 +107,7 @@ export function ChatProvider({ children }: ChatProviderProps) { // Set a new timeout to debounce multiple rapid refresh calls refreshTimeoutRef.current = setTimeout(() => { - setRefreshTrigger((prev) => prev + 1); + setRefreshTrigger(prev => prev + 1); }, 250); // 250ms debounce }, []); @@ -123,7 +123,7 @@ export function ChatProvider({ children }: ChatProviderProps) { // Silent refresh - updates data without loading states const refreshConversationsSilent = useCallback(async () => { // Trigger silent refresh that updates conversation data without showing loading states - setRefreshTriggerSilent((prev) => prev + 1); + setRefreshTriggerSilent(prev => prev + 1); }, []); const loadConversation = useCallback((conversation: ConversationData) => { @@ -164,7 +164,7 @@ export function ChatProvider({ children }: ChatProviderProps) { }, [endpoint, refreshConversations]); const addConversationDoc = useCallback((filename: string) => { - setConversationDocs((prev) => [ + setConversationDocs(prev => [ ...prev, { filename, uploadTime: new Date() }, ]); @@ -180,7 +180,7 @@ export function ChatProvider({ children }: ChatProviderProps) { setCurrentConversationId(null); // Clear current conversation to indicate new conversation setConversationData(null); // Clear conversation data to prevent reloading // Set the response ID that we're forking from as the previous response ID - setPreviousResponseIds((prev) => ({ + setPreviousResponseIds(prev => ({ ...prev, [endpoint]: responseId, })); From bf89b16854473d1246a21c0acdd686dc6de1ec00 Mon Sep 17 00:00:00 2001 From: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com> Date: Wed, 1 Oct 2025 14:32:02 -0600 Subject: [PATCH 09/19] border better --- frontend/components/navigation.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/components/navigation.tsx b/frontend/components/navigation.tsx index 83306f21..74046447 100644 --- a/frontend/components/navigation.tsx +++ b/frontend/components/navigation.tsx @@ -357,7 +357,7 @@ export function Navigation({
{route.label === "Settings" && ( -
+
)}
))} From 9fb771d048422584c8f7ab9622761d443127ea43 Mon Sep 17 00:00:00 2001 From: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com> Date: Thu, 2 Oct 2025 12:38:09 -0600 Subject: [PATCH 10/19] Update Navigation component styles for improved layout consistency and spacing adjustments. --- frontend/components/navigation.tsx | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/frontend/components/navigation.tsx b/frontend/components/navigation.tsx index 74046447..423172f5 100644 --- a/frontend/components/navigation.tsx +++ b/frontend/components/navigation.tsx @@ -331,7 +331,7 @@ export function Navigation({ return (
-
+
{routes.map(route => (
@@ -373,10 +373,10 @@ export function Navigation({ {/* Chat Page Specific Sections */} {isOnChatPage && ( -
+
{/* Conversations Section */} -
-
+
+

Conversations

@@ -392,7 +392,7 @@ export function Navigation({
-
+
{/* Conversations List - grows naturally, doesn't fill all space */}
{loadingNewConversation || isConversationsLoading ? ( @@ -424,7 +424,7 @@ export function Navigation({ {/* Show regular conversations */} {conversations.length === 0 && !placeholderConversation ? ( -
+
No conversations yet
) : ( @@ -432,7 +432,7 @@ export function Navigation({
csv, json, pdf,{" "} From 98c8b2eb2cdb71606a1e90147ed340018aee8694 Mon Sep 17 00:00:00 2001 From: Simon Duncan Date: Fri, 3 Oct 2025 11:10:46 -0500 Subject: [PATCH 14/19] chore: fix typo and clarify comments in .env.example - Fixed a typo in comments - Clarified instructions - Added spacing for better readability - No variable values changed --- .env.example | 44 +++++++++++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/.env.example b/.env.example index ee2a838c..113a1faf 100644 --- a/.env.example +++ b/.env.example @@ -1,42 +1,60 @@ # Ingestion Configuration -# Set to true to disable Langflow ingestion and use traditional OpenRAG processor -# If unset or false, Langflow pipeline will be used (default: upload -> ingest -> delete) +# Set to true to disable Langflow ingestion and use the traditional OpenRAG processor. +# If unset or false, the Langflow pipeline is used (default: upload -> ingest -> delete). DISABLE_INGEST_WITH_LANGFLOW=false -# make one like so https://docs.langflow.org/api-keys-and-authentication#langflow-secret-key + +# Create a Langflow secret key: +# https://docs.langflow.org/api-keys-and-authentication#langflow-secret-key LANGFLOW_SECRET_KEY= -# flow ids for chat and ingestion flows + +# Flow IDs for chat and ingestion LANGFLOW_CHAT_FLOW_ID=1098eea1-6649-4e1d-aed1-b77249fb8dd0 LANGFLOW_INGEST_FLOW_ID=5488df7c-b93f-4f87-a446-b67028bc0813 -# Ingest flow using docling +# Ingest flow using Docling # LANGFLOW_INGEST_FLOW_ID=1402618b-e6d1-4ff2-9a11-d6ce71186915 NUDGES_FLOW_ID=ebc01d31-1976-46ce-a385-b0240327226c -# Set a strong admin password for OpenSearch; a bcrypt hash is generated at -# container startup from this value. Do not commit real secrets. -# must match the hashed password in secureconfig, must change for secure deployment!!! + +# OpenSearch Auth +# Set a strong admin password for OpenSearch. +# A bcrypt hash is generated at container startup from this value. +# Do not commit real secrets. +# Must match the hashed password in secureconfig. Must be changed for secure deployments. OPENSEARCH_PASSWORD= -# make here https://console.cloud.google.com/apis/credentials + +# Google OAuth +# Create credentials here: +# https://console.cloud.google.com/apis/credentials GOOGLE_OAUTH_CLIENT_ID= GOOGLE_OAUTH_CLIENT_SECRET= -# Azure app registration credentials for SharePoint/OneDrive + +# Microsoft (SharePoint/OneDrive) OAuth +# Azure app registration credentials. MICROSOFT_GRAPH_OAUTH_CLIENT_ID= MICROSOFT_GRAPH_OAUTH_CLIENT_SECRET= -# OPTIONAL: dns routable from google (etc.) to handle continous ingest (something like ngrok works). This enables continous ingestion + +# Webhooks (optional) +# Public, DNS-resolvable base URL (e.g., via ngrok) for continuous ingestion. WEBHOOK_BASE_URL= + +# API Keys OPENAI_API_KEY= AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= -# OPTIONAL url for openrag link to langflow in the UI + +# Langflow UI URL (optional) +# Public URL to link OpenRAG to Langflow in the UI. LANGFLOW_PUBLIC_URL= -# Langflow auth + +# Langflow Auth LANGFLOW_AUTO_LOGIN=False LANGFLOW_SUPERUSER= LANGFLOW_SUPERUSER_PASSWORD= From 6b78e74a17e759540691e06cabeb5037151e1197 Mon Sep 17 00:00:00 2001 From: Simon Duncan Date: Fri, 3 Oct 2025 11:42:00 -0500 Subject: [PATCH 15/19] Update .env.example MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sebastián Estévez --- .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 113a1faf..681280f2 100644 --- a/.env.example +++ b/.env.example @@ -20,7 +20,7 @@ NUDGES_FLOW_ID=ebc01d31-1976-46ce-a385-b0240327226c # Set a strong admin password for OpenSearch. # A bcrypt hash is generated at container startup from this value. # Do not commit real secrets. -# Must match the hashed password in secureconfig. Must be changed for secure deployments. +# Must be changed for secure deployments. OPENSEARCH_PASSWORD= From 40aef5a567bd7aa53564f8d877eaf56d601f3e3f Mon Sep 17 00:00:00 2001 From: Mike Fortman Date: Fri, 3 Oct 2025 12:01:44 -0500 Subject: [PATCH 16/19] add tooltip to embedding model --- frontend/src/app/settings/page.tsx | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/frontend/src/app/settings/page.tsx b/frontend/src/app/settings/page.tsx index f4649190..7a444a02 100644 --- a/frontend/src/app/settings/page.tsx +++ b/frontend/src/app/settings/page.tsx @@ -25,6 +25,11 @@ import { } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "@/components/ui/tooltip"; import { Select, SelectContent, @@ -1027,16 +1032,16 @@ function KnowledgeSourcesPage() { } onValueChange={handleEmbeddingModelChange} > - {/* - */} - - - - {/* - Locked to keep embeddings consistent - - - */} + + + + + + + + Locked to keep embeddings consistent + + Date: Fri, 3 Oct 2025 14:19:26 -0400 Subject: [PATCH 17/19] v0.1.14.dev2 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 5673adcd..759732ea 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "openrag" -version = "0.1.14.dev1" +version = "0.1.14.dev2" description = "Add your description here" readme = "README.md" requires-python = ">=3.13" From baec57336bc6395b06d56bfe30ee8380b929bb1c Mon Sep 17 00:00:00 2001 From: phact Date: Fri, 3 Oct 2025 14:23:58 -0400 Subject: [PATCH 18/19] lock --- uv.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uv.lock b/uv.lock index 30f7727a..3da8f670 100644 --- a/uv.lock +++ b/uv.lock @@ -2282,7 +2282,7 @@ wheels = [ [[package]] name = "openrag" -version = "0.1.14.dev1" +version = "0.1.14.dev2" source = { editable = "." } dependencies = [ { name = "agentd" }, From e5f8c152efdb4f9a429c192f317a8523ecefb130 Mon Sep 17 00:00:00 2001 From: Edwin Jose Date: Fri, 3 Oct 2025 16:03:07 -0400 Subject: [PATCH 19/19] Switch base image to langflow-nightly in Dockerfile Replaces the custom Python build steps with the official langflow-nightly:1.6.3.dev0 image, simplifying the Dockerfile and reducing build complexity. --- Dockerfile.langflow | 48 ++------------------------------------------- 1 file changed, 2 insertions(+), 46 deletions(-) diff --git a/Dockerfile.langflow b/Dockerfile.langflow index 86ee0ea5..71baf447 100644 --- a/Dockerfile.langflow +++ b/Dockerfile.langflow @@ -1,49 +1,5 @@ -FROM python:3.12-slim +FROM langflowai/langflow-nightly:1.6.3.dev0 -# Set environment variables -ENV DEBIAN_FRONTEND=noninteractive -ENV PYTHONUNBUFFERED=1 -ENV RUSTFLAGS="--cfg reqwest_unstable" - -# Accept build arguments for git repository and branch -ARG GIT_REPO=https://github.com/langflow-ai/langflow.git -ARG GIT_BRANCH=test-openai-responses - -WORKDIR /app - -# Install system dependencies -RUN apt-get update && apt-get install -y \ - build-essential \ - curl \ - git \ - ca-certificates \ - gnupg \ - npm \ - rustc cargo pkg-config libssl-dev \ - && rm -rf /var/lib/apt/lists/* - -# Install uv for faster Python package management -RUN pip install uv - -# Clone the repository and checkout the specified branch -RUN git clone --depth 1 --branch ${GIT_BRANCH} ${GIT_REPO} /app - -# Install backend dependencies -RUN uv sync --frozen --no-install-project --no-editable --extra postgresql - -# Build frontend -WORKDIR /app/src/frontend -RUN NODE_OPTIONS=--max_old_space_size=4096 npm ci && \ - NODE_OPTIONS=--max_old_space_size=4096 npm run build && \ - mkdir -p /app/src/backend/base/langflow/frontend && \ - cp -r build/* /app/src/backend/base/langflow/frontend/ - -# Return to app directory and install the project -WORKDIR /app -RUN uv sync --frozen --no-dev --no-editable --extra postgresql - -# Expose ports EXPOSE 7860 -# Start the backend server -CMD ["uv", "run", "langflow", "run", "--host", "0.0.0.0", "--port", "7860"] +CMD ["langflow", "run", "--host", "0.0.0.0", "--port", "7860"] \ No newline at end of file