feat: align chat rendering with CLI and trim frontend load weight

- Merge thinking and assistant text into one assistant bubble with ordered blocks

- Restyle tool execution blocks to match CLI layout and status

- Remove startup splash screen and ship woff2-only fonts in public

- Add default avatars when agent or user image is unset

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-21 20:42:48 +08:00
parent 2742e19a2e
commit 767a776a3e
21 changed files with 506 additions and 711 deletions

View File

@@ -4,7 +4,6 @@ import * as promptsApi from "../api/prompts";
import type { PromptFile } from "../api/prompts";
import * as settingsApi from "../api/settings";
import { useAvatars } from "../context/AvatarContext";
import { useBootstrap } from "../context/BootstrapContext";
import { useChatContext } from "../context/ChatContext";
import type { AgentToolInfo, EnvironmentInfo, EnvironmentToolsInfo, ExtensionInfo, McpServerInfo, RuntimeInfo, SettingsPaneId, SkillInfo } from "../types/events";
import type { McpToolInfo } from "../types/events";
@@ -308,7 +307,6 @@ function McpToolItem({
}
export function SettingsPage() {
const { markRouteReady } = useBootstrap();
const { updateAvatars } = useAvatars();
const { showThinkingAndTools, toggleShowThinkingAndTools } = useChatContext();
const [activePane, setActivePane] = useState<SettingsPaneId>("prompt");
@@ -408,9 +406,8 @@ export function SettingsPage() {
setStatus(`加载设置失败: ${err instanceof Error ? err.message : String(err)}`, "error");
} finally {
setLoading(false);
markRouteReady("settings");
}
}, [markRouteReady, updateAvatars]);
}, [updateAvatars]);
const reloadSettings = async () => {
setReloading(true);