diff --git a/app/globals.css b/app/globals.css
index 9cb7d82..fe95fca 100644
--- a/app/globals.css
+++ b/app/globals.css
@@ -88,6 +88,30 @@
.vn-scrollbar::-webkit-scrollbar-corner {
background: transparent;
}
+
+ /* 极细滚动条 · 无轨道背景 */
+ .thin-scrollbar {
+ scrollbar-width: thin;
+ scrollbar-color: rgba(195, 155, 75, 0.5) transparent;
+ }
+
+ .thin-scrollbar::-webkit-scrollbar {
+ width: 4px;
+ height: 4px;
+ }
+
+ .thin-scrollbar::-webkit-scrollbar-track {
+ background: transparent;
+ }
+
+ .thin-scrollbar::-webkit-scrollbar-thumb {
+ background: rgba(195, 155, 75, 0.45);
+ border-radius: 999px;
+ }
+
+ .thin-scrollbar::-webkit-scrollbar-thumb:hover {
+ background: rgba(220, 180, 95, 0.7);
+ }
}
@keyframes infiplot-ripple {
diff --git a/app/page.tsx b/app/page.tsx
index 59e69e9..1f3673a 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -12,7 +12,6 @@ import {
} from "@/lib/options";
import { readStoredTtsConfig } from "@/lib/clientTtsConfig";
import { SettingsModal, readStoredPlayerName, readStoredVisionClick } from "@/components/SettingsModal";
-import { ModelSettingsModal } from "@/components/ModelSettingsModal";
import { analyzeImageDataUrl } from "@infiplot/ai-client";
import { readStoredModelConfig, resolveEngineConfig } from "@/lib/clientModelConfig";
import { STYLE_EXTRACTION_PROMPT } from "@/lib/styleExtraction";
@@ -1264,9 +1263,9 @@ export default function HomePage() {
// 顶部使用提示:默认展示,用户可点 × 永久关闭(localStorage:infiplot:hintClosed)。
const [hintClosed, setHintClosed] = useState(false);
- // 统一设置弹窗(名字 + 识图 + TTS Key):可选增强,数据只存浏览器。
+ // 统一设置弹窗(通用 + 模型):可选增强,数据只存浏览器。
const [settingsOpen, setSettingsOpen] = useState(false);
- const [modelSettingsOpen, setModelSettingsOpen] = useState(false);
+ const [settingsTab, setSettingsTab] = useState<"general" | "models">("general");
const [ttsConfigured, setTtsConfigured] = useState(false);
const [playerName, setPlayerName] = useState("");
const [visionClickEnabled, setVisionClickEnabled] = useState(true);
@@ -1486,16 +1485,10 @@ export default function HomePage() {
-