diff --git a/site/src/api/api.ts b/site/src/api/api.ts index 473ae8978c..e1894a0f8c 100644 --- a/site/src/api/api.ts +++ b/site/src/api/api.ts @@ -3437,13 +3437,6 @@ class ExperimentalApiMethods { await this.axios.patch(`/api/experimental/chats/${chatId}`, req); }; - regenerateChatTitle = async (chatId: string): Promise => { - const response = await this.axios.post( - `/api/experimental/chats/${chatId}/title/regenerate`, - ); - return response.data; - }; - proposeChatTitle = async (chatId: string): Promise<{ title: string }> => { const response = await this.axios.post<{ title: string }>( `/api/experimental/chats/${chatId}/title/propose`, diff --git a/site/src/api/queries/chats.test.ts b/site/src/api/queries/chats.test.ts index 52cd88f8d4..7b1a948d8d 100644 --- a/site/src/api/queries/chats.test.ts +++ b/site/src/api/queries/chats.test.ts @@ -38,7 +38,6 @@ import { prependToInfiniteChatsCache, promoteChatQueuedMessage, proposeChatTitle, - regenerateChatTitle, removeChildFromParentInCache, reorderPinnedChat, setChatGroupRole, @@ -67,7 +66,6 @@ vi.mock("#/api/api", () => ({ interruptChat: vi.fn(), promoteChatQueuedMessage: vi.fn(), proposeChatTitle: vi.fn(), - regenerateChatTitle: vi.fn(), getChatAdvisorConfig: vi.fn(), updateChatAdvisorConfig: vi.fn(), getChatACL: vi.fn(), @@ -844,51 +842,6 @@ describe("reorderPinnedChat", () => { }); }); -describe("regenerateChatTitle cache updates", () => { - it("preserves existing chat detail fields when the response is partial", () => { - const queryClient = createTestQueryClient(); - const chatId = "chat-1"; - const cachedChat = makeChat(chatId, { - diff_status: { - chat_id: chatId, - url: "https://example.com/pr/1", - pull_request_state: "open", - pull_request_title: "", - pull_request_draft: false, - changes_requested: false, - additions: 1, - deletions: 2, - changed_files: 3, - refreshed_at: "2025-01-01T00:00:00.000Z", - stale_at: "2025-01-01T01:00:00.000Z", - }, - }); - queryClient.setQueryData(chatKey(chatId), cachedChat); - seedInfiniteChats(queryClient, [cachedChat]); - - const mutation = regenerateChatTitle(queryClient); - const updatedChat = { - id: chatId, - title: "New title", - } satisfies Partial; - - mutation.onSuccess(updatedChat as TypesGen.Chat); - - const cachedDetail = queryClient.getQueryData( - chatKey(chatId), - ); - expect(cachedDetail).toEqual({ - ...cachedChat, - title: "New title", - }); - expect(cachedDetail?.diff_status).toEqual(cachedChat.diff_status); - expect(readInfiniteChats(queryClient)?.[0]).toMatchObject({ - id: chatId, - title: "New title", - }); - }); -}); - describe("chat cost query factories", () => { it("builds the summary query key and forwards snake_case params", async () => { const user = "user-1"; @@ -1504,28 +1457,6 @@ describe("mutation invalidation scope", () => { } }); - it("regenerateChatTitle invalidates debug runs so the title_generation run surfaces immediately", async () => { - const queryClient = createTestQueryClient(); - const chatId = "chat-1"; - seedAllActiveQueries(queryClient, chatId); - - const mutation = regenerateChatTitle(queryClient); - await mutation.onSettled(undefined, undefined, chatId); - - expect( - queryClient.getQueryState(chatDebugRunsKey(chatId))?.isInvalidated, - "chatDebugRunsKey should be invalidated", - ).toBe(true); - - for (const { label, key } of unrelatedKeys(chatId)) { - const state = queryClient.getQueryState(key); - expect( - state?.isInvalidated, - `${label} should NOT be invalidated by regenerateChatTitle`, - ).not.toBe(true); - } - }); - for (const { label, error } of [ { label: "success", error: undefined }, { label: "failure", error: new Error("proposal failed") }, diff --git a/site/src/api/queries/chats.ts b/site/src/api/queries/chats.ts index 08f41b9bbb..8d231faf4c 100644 --- a/site/src/api/queries/chats.ts +++ b/site/src/api/queries/chats.ts @@ -1197,38 +1197,6 @@ export const reorderPinnedChat = (queryClient: QueryClient) => ({ }, }); -export const regenerateChatTitle = (queryClient: QueryClient) => ({ - mutationFn: (chatId: string) => API.experimental.regenerateChatTitle(chatId), - - onSuccess: (updatedChat: TypesGen.Chat) => { - queryClient.setQueryData( - chatKey(updatedChat.id), - (previousChat) => - previousChat ? { ...previousChat, ...updatedChat } : updatedChat, - ); - updateInfiniteChatsCache(queryClient, (chats) => - chats.map((chat) => - chat.id === updatedChat.id - ? { ...chat, title: updatedChat.title } - : chat, - ), - ); - }, - - onSettled: async ( - _data: TypesGen.Chat | undefined, - _error: unknown, - chatId: string, - ) => { - await invalidateChatListQueries(queryClient); - await queryClient.invalidateQueries({ - queryKey: chatKey(chatId), - exact: true, - }); - void invalidateChatDebugRuns(queryClient, chatId); - }, -}); - export const proposeChatTitle = (queryClient: QueryClient) => ({ mutationFn: (chatId: string) => API.experimental.proposeChatTitle(chatId), diff --git a/site/src/pages/AgentsPage/AgentChatPage.stories.tsx b/site/src/pages/AgentsPage/AgentChatPage.stories.tsx index 4cd439226d..2bb15054bc 100644 --- a/site/src/pages/AgentsPage/AgentChatPage.stories.tsx +++ b/site/src/pages/AgentsPage/AgentChatPage.stories.tsx @@ -62,8 +62,6 @@ const AgentChatPageLayout: FC = () => { requestUnpinAgent: () => {}, isArchiving: false, archivingChatId: undefined, - onRegenerateTitle: () => {}, - regeneratingTitleChatIds: [], isSidebarCollapsed: false, onToggleSidebarCollapsed: () => {}, onExpandSidebar: () => {}, diff --git a/site/src/pages/AgentsPage/AgentChatPage.tsx b/site/src/pages/AgentsPage/AgentChatPage.tsx index a6cdb51e91..a57643b6e1 100644 --- a/site/src/pages/AgentsPage/AgentChatPage.tsx +++ b/site/src/pages/AgentsPage/AgentChatPage.tsx @@ -710,7 +710,6 @@ const AgentChatPage: FC = () => { isArchiving, archivingChatId, onOpenRenameDialog, - regeneratingTitleChatIds, isSidebarCollapsed, onToggleSidebarCollapsed, onChatReady, @@ -747,10 +746,6 @@ const AgentChatPage: FC = () => { }); }; - const isRegeneratingThisChat = agentId - ? regeneratingTitleChatIds.includes(agentId) - : false; - const chatQuery = useQuery({ ...chat(agentId ?? ""), enabled: Boolean(agentId), @@ -1702,7 +1697,6 @@ const AgentChatPage: FC = () => { } isPinned={(chatRecord?.pin_order ?? 0) > 0} isChildChat={parentChatID !== undefined} - isRegeneratingTitle={isRegeneratingThisChat} urlTransform={urlTransform} scrollContainerRef={scrollContainerRef} scrollToBottomRef={scrollToBottomRef} diff --git a/site/src/pages/AgentsPage/AgentChatPageView.tsx b/site/src/pages/AgentsPage/AgentChatPageView.tsx index 73fc40fdf3..1f46b9f8c1 100644 --- a/site/src/pages/AgentsPage/AgentChatPageView.tsx +++ b/site/src/pages/AgentsPage/AgentChatPageView.tsx @@ -197,7 +197,6 @@ interface AgentChatPageViewProps { isPinned?: boolean; isChildChat?: boolean; isArchivingThisChat?: boolean; - isRegeneratingTitle?: boolean; // Scroll container ref. scrollContainerRef: RefObject; @@ -370,7 +369,6 @@ export const AgentChatPageView: FC = ({ isPinned, isChildChat, isArchivingThisChat, - isRegeneratingTitle, scrollContainerRef, scrollToBottomRef, hasMoreMessages, @@ -842,7 +840,6 @@ export const AgentChatPageView: FC = ({ isPinned={isPinned} isChildChat={isChildChat} isArchiving={isArchivingThisChat} - isRegeneratingTitle={isRegeneratingTitle} hasWorkspace={Boolean(workspace)} isArchived={isArchived} diffStatusData={diffStatusData} diff --git a/site/src/pages/AgentsPage/AgentEmbedPage.tsx b/site/src/pages/AgentsPage/AgentEmbedPage.tsx index d3f9fe787e..c42b999774 100644 --- a/site/src/pages/AgentsPage/AgentEmbedPage.tsx +++ b/site/src/pages/AgentsPage/AgentEmbedPage.tsx @@ -232,8 +232,6 @@ const AgentEmbedPage: FC = () => { requestArchiveAndDeleteWorkspace, isArchiving: false, archivingChatId: undefined, - // Title regeneration is not supported in embed mode. - regeneratingTitleChatIds: [], isSidebarCollapsed, onToggleSidebarCollapsed, onExpandSidebar: () => {}, diff --git a/site/src/pages/AgentsPage/AgentsPage.tsx b/site/src/pages/AgentsPage/AgentsPage.tsx index 65b4182d92..483f8e8d1b 100644 --- a/site/src/pages/AgentsPage/AgentsPage.tsx +++ b/site/src/pages/AgentsPage/AgentsPage.tsx @@ -31,7 +31,6 @@ import { prependToInfiniteChatsCache, proposeChatTitle, readInfiniteChatsCache, - regenerateChatTitle, removeChildFromParentInCache, reorderPinnedChat, unarchiveChat, @@ -321,12 +320,6 @@ const AgentsPage: FC = () => { toast.error(getErrorMessage(error, "Failed to reorder pinned agents.")); }, }); - const regenerateTitleMutation = useMutation({ - ...regenerateChatTitle(queryClient), - onError: (error: unknown) => { - toast.error(getErrorMessage(error, "Failed to generate new title.")); - }, - }); const proposeTitleMutation = useMutation(proposeChatTitle(queryClient)); const renameTitleMutation = useMutation({ ...updateChatTitle(queryClient), @@ -334,13 +327,6 @@ const AgentsPage: FC = () => { toast.error(getErrorMessage(error, "Failed to rename chat.")); }, }); - const regeneratingTitleChatIdsRef = useRef>(new Set()); - const [regeneratingTitleChatIds, setRegeneratingTitleChatIds] = useState< - readonly string[] - >([]); - const regeneratingTitlePromisesRef = useRef( - new Map>(), - ); const [isSidebarCollapsed, setIsSidebarCollapsed] = useState(false); const catalogModelOptions = getModelOptionsFromConfigs( chatModelConfigsQuery.data, @@ -489,48 +475,6 @@ const AgentsPage: FC = () => { const requestReorderPinnedAgent = (chatId: string, pinOrder: number) => { reorderPinnedChatMutation.mutate({ chatId, pinOrder }); }; - const addRegeneratingTitleChatId = (chatId: string) => { - if (!chatId || regeneratingTitleChatIdsRef.current.has(chatId)) { - return false; - } - const next = new Set(regeneratingTitleChatIdsRef.current); - next.add(chatId); - regeneratingTitleChatIdsRef.current = next; - setRegeneratingTitleChatIds(Array.from(next)); - return true; - }; - const removeRegeneratingTitleChatId = (chatId: string) => { - if (!regeneratingTitleChatIdsRef.current.has(chatId)) { - return; - } - const next = new Set(regeneratingTitleChatIdsRef.current); - next.delete(chatId); - regeneratingTitleChatIdsRef.current = next; - setRegeneratingTitleChatIds(Array.from(next)); - }; - const requestRegenerateTitle = (chatId: string): Promise => { - const existing = regeneratingTitlePromisesRef.current.get(chatId); - if (existing) { - return existing; - } - addRegeneratingTitleChatId(chatId); - const clearRegenerateTitleTracking = () => { - regeneratingTitlePromisesRef.current.delete(chatId); - removeRegeneratingTitleChatId(chatId); - }; - const promise = regenerateTitleMutation.mutateAsync(chatId).then( - (updated) => { - clearRegenerateTitleTracking(); - return updated.title; - }, - (error) => { - clearRegenerateTitleTracking(); - throw error; - }, - ); - regeneratingTitlePromisesRef.current.set(chatId, promise); - return promise; - }; const requestProposeTitle = async (chatId: string): Promise => { const result = await proposeTitleMutation.mutateAsync(chatId); return result.title; @@ -743,10 +687,8 @@ const AgentsPage: FC = () => { requestPinAgent={requestPinAgent} requestUnpinAgent={requestUnpinAgent} requestReorderPinnedAgent={requestReorderPinnedAgent} - onRegenerateTitle={requestRegenerateTitle} onProposeTitle={requestProposeTitle} onRenameTitle={requestRenameTitle} - regeneratingTitleChatIds={regeneratingTitleChatIds} onToggleSidebarCollapsed={handleToggleSidebarCollapsed} isPersonalModelOverridesEnabled={ personalModelOverridesQuery.data?.enabled diff --git a/site/src/pages/AgentsPage/AgentsPageView.stories.tsx b/site/src/pages/AgentsPage/AgentsPageView.stories.tsx index de3972ca45..943e4da943 100644 --- a/site/src/pages/AgentsPage/AgentsPageView.stories.tsx +++ b/site/src/pages/AgentsPage/AgentsPageView.stories.tsx @@ -365,10 +365,8 @@ const defaultArgs: ComponentProps = { requestArchiveAndDeleteWorkspace: fn(), requestPinAgent: fn(), requestUnpinAgent: fn(), - onRegenerateTitle: fn(async () => "Generated title"), onProposeTitle: fn(async () => "Proposed title"), onRenameTitle: fn(async () => {}), - regeneratingTitleChatIds: [], onToggleSidebarCollapsed: fn(), isAgentsAdmin: false, sidebarFilters: defaultSidebarFilters, diff --git a/site/src/pages/AgentsPage/AgentsPageView.tsx b/site/src/pages/AgentsPage/AgentsPageView.tsx index e49948c877..b2e9c49511 100644 --- a/site/src/pages/AgentsPage/AgentsPageView.tsx +++ b/site/src/pages/AgentsPage/AgentsPageView.tsx @@ -28,10 +28,9 @@ export interface AgentsOutletContext { requestReorderPinnedAgent?: (chatId: string, pinOrder: number) => void; isArchiving: boolean; archivingChatId: string | undefined; - onRegenerateTitle?: (chatId: string) => void; onRenameTitle?: (chatId: string, title: string) => Promise; + /** Opens the shared rename dialog so both menus drive the same instance. */ onOpenRenameDialog?: (chat: TypesGen.Chat) => void; - regeneratingTitleChatIds: readonly string[]; isSidebarCollapsed: boolean; onToggleSidebarCollapsed: () => void; onExpandSidebar: () => void; @@ -70,10 +69,8 @@ interface AgentsPageViewProps { requestPinAgent: (chatId: string) => void; requestUnpinAgent: (chatId: string) => void; requestReorderPinnedAgent?: (chatId: string, pinOrder: number) => void; - onRegenerateTitle: (chatId: string) => Promise; onProposeTitle: (chatId: string) => Promise; onRenameTitle: (chatId: string, title: string) => Promise; - regeneratingTitleChatIds: readonly string[]; onToggleSidebarCollapsed: () => void; isPersonalModelOverridesEnabled?: boolean; isAgentsAdmin: boolean; @@ -111,10 +108,8 @@ export const AgentsPageView: FC = ({ requestPinAgent, requestUnpinAgent, requestReorderPinnedAgent, - onRegenerateTitle, onProposeTitle, onRenameTitle, - regeneratingTitleChatIds, onToggleSidebarCollapsed, isPersonalModelOverridesEnabled, isAgentsAdmin, @@ -145,6 +140,8 @@ export const AgentsPageView: FC = ({ const scrollContainerRef = useRef(null); + // State for the shared rename-chat dialog. Lifted here so both the + // sidebar menu and the chat top bar open the same dialog instance. const [chatPendingRename, setChatPendingRename] = useState(null); @@ -160,11 +157,7 @@ export const AgentsPageView: FC = ({ requestReorderPinnedAgent, isArchiving, archivingChatId, - onRegenerateTitle: (chatId: string) => { - onRegenerateTitle(chatId).catch(() => {}); - }, onOpenRenameDialog: setChatPendingRename, - regeneratingTitleChatIds, isSidebarCollapsed, onToggleSidebarCollapsed, onExpandSidebar, @@ -205,7 +198,6 @@ export const AgentsPageView: FC = ({ onProposeTitle={onProposeTitle} chatPendingRename={chatPendingRename} onChatPendingRenameChange={setChatPendingRename} - regeneratingTitleChatIds={regeneratingTitleChatIds} onBeforeNewAgent={handleNewAgent} isSearchDialogOpen={isSearchDialogOpen} onSearchDialogOpenChange={onSearchDialogOpenChange} diff --git a/site/src/pages/AgentsPage/components/ChatTopBar.stories.tsx b/site/src/pages/AgentsPage/components/ChatTopBar.stories.tsx index e53001d1b2..27db98bcf9 100644 --- a/site/src/pages/AgentsPage/components/ChatTopBar.stories.tsx +++ b/site/src/pages/AgentsPage/components/ChatTopBar.stories.tsx @@ -41,13 +41,6 @@ type Story = StoryObj; export const Default: Story = {}; -export const RegeneratingTitle: Story = { - args: { - ...Default.args, - isRegeneratingTitle: true, - }, -}; - export const SharedChat: Story = { args: { isSharedChat: true, diff --git a/site/src/pages/AgentsPage/components/ChatTopBar.tsx b/site/src/pages/AgentsPage/components/ChatTopBar.tsx index 4ede5d8ae2..44e680ead5 100644 --- a/site/src/pages/AgentsPage/components/ChatTopBar.tsx +++ b/site/src/pages/AgentsPage/components/ChatTopBar.tsx @@ -21,7 +21,6 @@ import { DropdownMenuTrigger, } from "#/components/DropdownMenu/DropdownMenu"; import { Popover, PopoverTrigger } from "#/components/Popover/Popover"; -import { Spinner } from "#/components/Spinner/Spinner"; import { cn } from "#/utils/cn"; import { parsePullRequestUrl } from "../utils/pullRequest"; import { ChatActionsMenuItems } from "./ChatActionsMenuItems"; @@ -47,7 +46,6 @@ type ChatTopBarProps = { onPinAgent?: () => void; onUnpinAgent?: () => void; onOpenRenameDialog?: () => void; - isRegeneratingTitle?: boolean; hasWorkspace?: boolean; isArchived?: boolean; isArchiving?: boolean; @@ -103,7 +101,6 @@ export const ChatTopBar: FC = ({ onPinAgent, onUnpinAgent, onOpenRenameDialog, - isRegeneratingTitle, hasWorkspace = false, isArchived = false, isArchiving = false, @@ -163,7 +160,6 @@ export const ChatTopBar: FC = ({
{parentChat && ( @@ -186,12 +182,7 @@ export const ChatTopBar: FC = ({ )} - + {chatTitle} {isSharedChat && ( @@ -200,13 +191,6 @@ export const ChatTopBar: FC = ({ aria-label="Shared chat" /> )} - {isRegeneratingTitle && ( - - )}
)} {/* Actions menu sits inline with the title so it tracks the title's right edge. diff --git a/site/src/pages/AgentsPage/components/ChatsSidebar/ChatsSidebar.stories.tsx b/site/src/pages/AgentsPage/components/ChatsSidebar/ChatsSidebar.stories.tsx index 7b08ccf03d..aa83c86f06 100644 --- a/site/src/pages/AgentsPage/components/ChatsSidebar/ChatsSidebar.stories.tsx +++ b/site/src/pages/AgentsPage/components/ChatsSidebar/ChatsSidebar.stories.tsx @@ -104,7 +104,6 @@ const meta: Meta = { isSearchDialogOpen: false, onSearchDialogOpenChange: fn(), isCreating: false, - regeneratingTitleChatIds: [], currentUserId: MockUserOwner.id, sidebarFilters: defaultSidebarFilters, isPersonalModelOverridesEnabled: true, @@ -945,66 +944,6 @@ export const SearchDialogKeyboardShortcutHandlesRenameInput: Story = { }, }; -export const RenameChatAvailableDuringRegeneration: Story = { - args: { - chats: [ - buildChat({ - id: "regenerating-chat", - title: "Regenerating agent", - updated_at: recentTimestamp, - }), - buildChat({ - id: "idle-chat", - title: "Idle agent", - updated_at: recentTimestamp, - }), - ], - regeneratingTitleChatIds: ["regenerating-chat"], - onProposeTitle: fn(async () => "Proposed replacement"), - onRenameTitle: fn(async () => {}), - }, - parameters: { - reactRouter: reactRouterParameters({ - location: { path: "/agents" }, - routing: agentsRouting, - }), - }, - play: async ({ canvasElement }) => { - const canvas = within(canvasElement); - const body = within(document.body); - - await expect(canvas.getByText("Regenerating agent")).toHaveAttribute( - "aria-busy", - "true", - ); - - await userEvent.click( - canvas.getByRole("button", { - name: "Open actions for Regenerating agent", - }), - ); - await expect( - await body.findByRole("menuitem", { name: "Rename chat" }), - ).toBeInTheDocument(); - - await userEvent.keyboard("{Escape}"); - await waitFor(() => { - expect( - body.queryByRole("menuitem", { name: "Rename chat" }), - ).not.toBeInTheDocument(); - }); - - await userEvent.click( - canvas.getByRole("button", { - name: "Open actions for Idle agent", - }), - ); - await expect( - await body.findByRole("menuitem", { name: "Rename chat" }), - ).toBeInTheDocument(); - }, -}; - export const RenameChatSubmitsNewTitle: Story = { args: { chats: [ diff --git a/site/src/pages/AgentsPage/components/ChatsSidebar/ChatsSidebar.test.tsx b/site/src/pages/AgentsPage/components/ChatsSidebar/ChatsSidebar.test.tsx index c7351226a8..8bfd42d54d 100644 --- a/site/src/pages/AgentsPage/components/ChatsSidebar/ChatsSidebar.test.tsx +++ b/site/src/pages/AgentsPage/components/ChatsSidebar/ChatsSidebar.test.tsx @@ -111,7 +111,6 @@ const defaultProps: React.ComponentProps = { onPinAgent: vi.fn(), onUnpinAgent: vi.fn(), onRenameTitle: vi.fn(async () => {}), - regeneratingTitleChatIds: [], onBeforeNewAgent: vi.fn(), isSearchDialogOpen: false, onSearchDialogOpenChange: vi.fn(), diff --git a/site/src/pages/AgentsPage/components/ChatsSidebar/ChatsSidebar.tsx b/site/src/pages/AgentsPage/components/ChatsSidebar/ChatsSidebar.tsx index 0e65ae1b3e..520dcded93 100644 --- a/site/src/pages/AgentsPage/components/ChatsSidebar/ChatsSidebar.tsx +++ b/site/src/pages/AgentsPage/components/ChatsSidebar/ChatsSidebar.tsx @@ -39,7 +39,6 @@ interface ChatsSidebarProps { isCreating: boolean; isArchiving?: boolean; archivingChatId?: string | null; - regeneratingTitleChatIds: readonly string[]; isLoading?: boolean; loadError?: unknown; onRetryLoad?: () => void; @@ -76,7 +75,6 @@ export const ChatsSidebar: FC = (props) => { isCreating, isArchiving = false, archivingChatId = null, - regeneratingTitleChatIds, isLoading = false, loadError, onRetryLoad, @@ -139,7 +137,6 @@ export const ChatsSidebar: FC = (props) => { isCreating={isCreating} isArchiving={isArchiving} archivingChatId={archivingChatId} - regeneratingTitleChatIds={regeneratingTitleChatIds} isLoading={isLoading} loadError={loadError} onRetryLoad={onRetryLoad} diff --git a/site/src/pages/AgentsPage/components/ChatsSidebar/chats/ChatsPanel.tsx b/site/src/pages/AgentsPage/components/ChatsSidebar/chats/ChatsPanel.tsx index 1e1e131ce8..aa5d02ae9e 100644 --- a/site/src/pages/AgentsPage/components/ChatsSidebar/chats/ChatsPanel.tsx +++ b/site/src/pages/AgentsPage/components/ChatsSidebar/chats/ChatsPanel.tsx @@ -85,7 +85,6 @@ interface ChatsPanelProps { readonly isCreating: boolean; readonly isArchiving: boolean; readonly archivingChatId: string | null; - readonly regeneratingTitleChatIds: readonly string[]; readonly isLoading: boolean; readonly loadError?: unknown; readonly onRetryLoad?: () => void; @@ -119,7 +118,6 @@ export const ChatsPanel: FC = ({ isCreating, isArchiving, archivingChatId, - regeneratingTitleChatIds, isLoading, loadError, onRetryLoad, @@ -305,7 +303,6 @@ export const ChatsPanel: FC = ({ activeChatId, isArchiving, archivingChatId, - regeneratingTitleChatIds, toggleExpanded, onArchiveAgent, onUnarchiveAgent, diff --git a/site/src/pages/AgentsPage/components/ChatsSidebar/tree/ChatTreeContext.tsx b/site/src/pages/AgentsPage/components/ChatsSidebar/tree/ChatTreeContext.tsx index c12c6c3dd5..89aaf4d753 100644 --- a/site/src/pages/AgentsPage/components/ChatsSidebar/tree/ChatTreeContext.tsx +++ b/site/src/pages/AgentsPage/components/ChatsSidebar/tree/ChatTreeContext.tsx @@ -15,7 +15,6 @@ export interface ChatTreeContextValue { readonly activeChatId: string | undefined; readonly isArchiving: boolean; readonly archivingChatId: string | null; - readonly regeneratingTitleChatIds: readonly string[]; readonly toggleExpanded: (chatID: string) => void; readonly onArchiveAgent: (chatId: string) => void; readonly onUnarchiveAgent: (chatId: string) => void; diff --git a/site/src/pages/AgentsPage/components/ChatsSidebar/tree/ChatTreeNode.tsx b/site/src/pages/AgentsPage/components/ChatsSidebar/tree/ChatTreeNode.tsx index 21dc5ff957..746beee2be 100644 --- a/site/src/pages/AgentsPage/components/ChatsSidebar/tree/ChatTreeNode.tsx +++ b/site/src/pages/AgentsPage/components/ChatsSidebar/tree/ChatTreeNode.tsx @@ -53,7 +53,6 @@ export const ChatTreeNode: FC = ({ chat, isChildNode }) => { activeChatId, isArchiving, archivingChatId, - regeneratingTitleChatIds, toggleExpanded, onArchiveAgent, onUnarchiveAgent, @@ -137,7 +136,6 @@ export const ChatTreeNode: FC = ({ chat, isChildNode }) => { }`; const workspaceId = chat.workspace_id; const isArchivingThisChat = isArchiving && archivingChatId === chat.id; - const isRegeneratingThisChat = regeneratingTitleChatIds.includes(chat.id); const isExpanded = normalizedSearch ? true : (expandedById[chatID] ?? false); const sharedMenuItemProps = { @@ -224,11 +222,9 @@ export const ChatTreeNode: FC = ({ chat, isChildNode }) => {
{chat.title} @@ -236,11 +232,6 @@ export const ChatTreeNode: FC = ({ chat, isChildNode }) => { {chat.has_unread && !isActiveChat && ( (unread) )} - {isRegeneratingThisChat && ( - - Regenerating title… - - )}
{hasLinkedDiffStatus && hasLineStats && (