feat: dynamic title

This commit is contained in:
Henry Li
2026-02-02 09:05:24 +08:00
parent b540ad4505
commit a0a3a3fc02
6 changed files with 51 additions and 2 deletions

View File

@@ -9,7 +9,7 @@ import { I18nProvider } from "@/core/i18n/context";
import { detectLocaleServer } from "@/core/i18n/server";
export const metadata: Metadata = {
title: "Welcome to DeerFlow",
title: "DeerFlow",
description: "A LangChain-based framework for building super agents.",
};

View File

@@ -119,6 +119,26 @@ export default function ChatPage() {
return result;
}, [thread, isNewThread]);
useEffect(() => {
const pageTitle = isNewThread
? t.pages.newChat
: thread.values?.title && thread.values.title !== "Untitled"
? thread.values.title
: t.pages.untitled;
if (thread.isThreadLoading) {
document.title = `Loading... - ${t.pages.appName}`;
} else {
document.title = `${pageTitle} - ${t.pages.appName}`;
}
}, [
isNewThread,
t.pages.newChat,
t.pages.untitled,
t.pages.appName,
thread.values.title,
thread.isThreadLoading,
]);
const [autoSelectFirstArtifact, setAutoSelectFirstArtifact] = useState(true);
useEffect(() => {
setArtifacts(thread.values.artifacts);

View File

@@ -1,7 +1,7 @@
"use client";
import Link from "next/link";
import { useMemo, useState } from "react";
import { useEffect, useMemo, useState } from "react";
import { Input } from "@/components/ui/input";
import { ScrollArea } from "@/components/ui/scroll-area";
@@ -19,6 +19,11 @@ export default function ChatsPage() {
const { t } = useI18n();
const { data: threads } = useThreads();
const [search, setSearch] = useState("");
useEffect(() => {
document.title = `${t.pages.chats} - ${t.pages.appName}`;
}, [t.pages.chats, t.pages.appName]);
const filteredThreads = useMemo(() => {
return threads?.filter((thread) => {
return titleOfThread(thread).toLowerCase().includes(search.toLowerCase());

View File

@@ -100,6 +100,14 @@ export const enUS: Translations = {
searchChats: "Search chats",
},
// Page titles (document title)
pages: {
appName: "DeerFlow",
chats: "Chats",
newChat: "New chat",
untitled: "Untitled",
},
// Tool calls
toolCalls: {
moreSteps: (count: number) => `${count} more step${count === 1 ? "" : "s"}`,

View File

@@ -94,6 +94,14 @@ export interface Translations {
searchChats: string;
};
// Page titles (document title)
pages: {
appName: string;
chats: string;
newChat: string;
untitled: string;
};
// Tool calls
toolCalls: {
moreSteps: (count: number) => string;

View File

@@ -98,6 +98,14 @@ export const zhCN: Translations = {
searchChats: "搜索对话",
},
// Page titles (document title)
pages: {
appName: "DeerFlow",
chats: "对话",
newChat: "新对话",
untitled: "未命名",
},
// Tool calls
toolCalls: {
moreSteps: (count: number) => `查看其他 ${count} 个步骤`,