thzxx
|
039afa5f0b
|
chore: 版本号升级至 v4.0.1,更新 README
|
2026-04-05 20:08:51 +08:00 |
|
thzxx
|
8a8c5da968
|
feat: 设置面板新增温度(Temperature)滑块控制
- 设置面板新增温度滑块 (0~2, 步长0.1)
- 实时显示当前值,保存到 IndexedDB 持久化
- 切换预设时自动同步温度滑块 UI
- 应用启动时从 DB 恢复温度设置
|
2026-04-05 20:07:38 +08:00 |
|
thzxx
|
4b72a1fc5d
|
chore: 版本号升级至 v4.0.0,更新 README
|
2026-04-05 19:58:24 +08:00 |
|
thzxx
|
bc63ba9611
|
feat: Agent 预设系统 - 一键切换角色/工作模式
- 内置 6 个预设:默认、翻译官、代码审查、写作助手、数据分析师、学习导师
- 每个预设包含:系统提示词、温度、上下文长度、Think 开关
- 预设栏胶囊按钮,点击即切换,自动应用全部配置
- 支持创建/编辑/删除自定义预设,IndexedDB 持久化
- 切换预设时同步设置面板 UI + toast 提示
- 温度参数集成到聊天 API 调用
|
2026-04-05 19:55:45 +08:00 |
|
thzxx
|
2c475c0c8c
|
chore: 版本号升级至 v3.2.0,更新 README 更新日志
|
2026-04-05 01:59:40 +08:00 |
|
thzxx
|
be8ef7641e
|
style: 知识库弹框和帮助弹框视觉优化
- 知识库弹框: 加大至 900px/88vh,工具栏加边框背景,左侧分隔线
- 帮助弹框: 加大至 640px/88vh,各区块加左边线强调和背景
- 全局模态框: 更深毛玻璃、圆角 14px、入场缩放动画、头部渐变
- 快捷键表格: 带边框圆角、hover 高亮
- 文档/集合项: 更大 padding、hover 边框
|
2026-04-05 01:55:56 +08:00 |
|
thzxx
|
e97e2e4078
|
perf: IVF 倒排索引优化向量搜索 - K-Means 聚类 + nprobe 近邻检索
- N < 200 自动降级暴力搜索
- N ≥ 200 K-Means++ 聚类构建 IVF 索引
- nprobe=5 探测最近 5 个聚类,搜索量降 75%
- 索引持久化到 IndexedDB,数据变化自动重建
- 内存向量缓存 + Map O(1) 查找
|
2026-04-05 01:47:57 +08:00 |
|
thzxx
|
4c52650881
|
fix: setSelectedModel 触发 change 事件,恢复模型能力检测(Think/Vision)
|
2026-04-05 01:38:56 +08:00 |
|
thzxx
|
32e3bf848e
|
fix: RAG临时状态消息延迟到首个token到达时才清除,消除回复前的空白期
|
2026-04-05 01:32:08 +08:00 |
|
thzxx
|
b802c896cf
|
refactor: state 管理优化 - 结构化浅比较 + update/setIn/batch API
- state.js: 新增 shallowEqual、update()、setIn()、batch() 方法
- input-area.js: messages.push() 全部改为 state.update(),确保引用变化触发通知
- model-bar.js: 直接属性赋值改为 state.update(),修复 model 切换不触发变更检测
|
2026-04-05 01:27:24 +08:00 |
|
thzxx
|
2fa274e1b1
|
docs: README.md 全面重写
- 新增 Ollama API 调用清单(接口/方法/调用位置/用途)
- 新增流式聊天 NDJSON 数据格式说明
- 新增聊天请求参数完整示例
- 新增强制停止机制流程图
- 更新版本号至 v2.0.0
- 功能特性改为表格
- 设置项关联 API 参数
|
2026-04-03 13:21:34 +08:00 |
|
thzxx
|
194b402623
|
fix: 模型栏图标改为方块/列表,避免与 Think 灯泡重复
|
2026-04-03 13:17:59 +08:00 |
|
thzxx
|
66acfb7f3e
|
ui: 模型选择栏布局重设计
- 新增渐变图标指示器
- select 更大圆角 + 更粗边框 + hover/focus 渐变高亮
- 能力标签改为独立彩色 pill(Think 紫色、Vision 青色)
- 箭头图标改为青色
- model-bar.js 适配新 badge 元素
|
2026-04-03 13:10:00 +08:00 |
|
thzxx
|
7f842fc02e
|
ui: 导航按钮和 Think 按钮统一渐变风格
所有按钮统一为青紫渐变 + 发光风格:
- 导航按钮: 渐变背景、白色图标、hover 放大 + 光晕
- Think 按钮选中态: 渐变背景、白色图标,与发送按钮一致
- Think 按钮未选中: 玻璃态,hover 紫色放大
- 尺寸统一 40-42px,与发送按钮对齐
|
2026-04-03 13:05:25 +08:00 |
|
thzxx
|
2e1b0ad066
|
ui: 导航按钮和 Think 按钮视觉增强
导航按钮 (.icon-btn):
- 增加玻璃背景 + 边框,不再透明
- hover 时青色高亮 + 发光 + 上浮
- 图标 18px → 20px
Think 按钮:
- 尺寸 38px → 40px,默认色 text-muted → text-secondary
- hover 时紫色发光 + 上浮
- 选中态渐变背景 + 更强光晕
|
2026-04-03 13:00:20 +08:00 |
|
thzxx
|
be4e7bf101
|
fix: 移除 safeMarkdown 中的 sanitize 调用,修复消息渲染问题
- safeMarkdown 不再调 sanitize,直接用 marked 输出
- marked 产出的 HTML 已经足够安全(代码块、列表等)
- sanitizer.js 保留供 marked-config.js 链接安全检查使用
- 修复 catch 块中改用 assistantContent 而非 DOM textContent
|
2026-04-03 12:54:17 +08:00 |
|
thzxx
|
17a818c3da
|
fix: 停止时消息内容显示 undefined — 彻底修复
根本原因:catch 块从 DOM 读 textContent 存在时序问题,改为直接用
assistantContent 变量(已在 try 外声明),完全绕过 DOM 读取。
改动:
- catch 块:不再读 contentDiv.textContent,直接用 assistantContent
- appendMessageDOM:空内容不调 safeMarkdown 避免生成空 <p>
- 通用错误处理同样改用 assistantContent
|
2026-04-03 12:46:30 +08:00 |
|
thzxx
|
eb04a6baa8
|
fix: 历史记录分页 — 会话丢失导致数据不完整
问题根因:
1. startNewSession() 未保存当前会话 → 点「新建会话」时旧会话丢失
2. 用户消息发送后未立即保存 → 刷新/关闭页面丢失对话
3. 通用错误处理中 saveCurrentSession() 缺少 await
修复:
- startNewSession: 新建前先保存当前会话(有消息时)
- sendMessage: 发送用户消息后立即 saveCurrentSession
- catch 块中 saveCurrentSession 补上 await
|
2026-04-03 12:39:59 +08:00 |
|
thzxx
|
27317f4d32
|
fix: 停止时消息内容变 undefined — 变量作用域问题
assistantContent/thinkContent/modelName 声明在 try 块内,
catch 中访问不到导致全部为 undefined。
将声明提到 try 外部,catch 正常访问已生成内容。
|
2026-04-03 12:33:02 +08:00 |
|
thzxx
|
f80dd7f390
|
feat: 强制停止AI回复 - 真正中止Ollama接口请求
- ollama-api.js: chatStream 新增 AbortController 参数,同时中止 fetch 和 reader
- input-area.js: 发送按钮流式时变为停止按钮(红色方块),点击立即 abort
- abort 时保留已生成内容,标记 [已停止]
- 停止按钮带脉冲动画,视觉反馈明确
- 真正的接口级别终止:fetch abort + reader.cancel 双重保险
|
2026-04-03 12:31:04 +08:00 |
|
thzxx
|
6088ea4629
|
feat: 重新设计模型选择栏与 Think 模式
模型选择栏:
- 去掉原生 select 样式,自定义 appearance:none + 箭头图标
- 模型列表显示参数大小 (如 qwen2.5 · 7B)
- 选中模型后展示能力标签 (🧠 Think / 👁️ Vision)
Think 模式:
- 从模型栏移至输入区域,紧邻发送按钮
- 使用灯泡图标按钮替代原来的 toggle 开关
- 默认 disabled,切换模型时调用 /api/show 检测 capabilities
- capabilities 包含 'thinking' 时才启用,否则禁用并灰显
- 模型能力结果缓存,避免重复请求
|
2026-04-03 11:46:29 +08:00 |
|
thzxx
|
41b512c779
|
chore: 项目文件归类整理
- assets/icons/ → 图标资源 (llama.ico, llama.png)
- css/ → 样式文件 (style.css)
- js/ → 所有业务代码
- js/lib/ → 第三方库 (marked.esm.js)
- js/components/ → UI 组件
修正所有 import 路径、HTML 引用、SW 缓存列表
|
2026-04-03 11:40:01 +08:00 |
|
thzxx
|
38edaee0f0
|
refactor: 模块化架构重构
将单文件巨型 IIFE (1608行) 拆分为 14 个 ES Module:
核心层:
- js/state.js - 轻量级响应式状态管理 (发布-订阅)
- js/utils.js - 通用工具函数
- js/sanitizer.js - HTML XSS 净化器
- js/marked-config.js - Markdown 渲染器配置
组件层:
- js/components/chat-area.js - 消息渲染/流式更新/导出
- js/components/input-area.js - 文本输入/图片上传/发送
- js/components/history-modal.js - 历史记录面板/搜索/分页
- js/components/settings-modal.js - 设置面板/数据管理
- js/components/header.js - 顶部导航/连接状态
- js/components/model-bar.js - 模型选择栏
- js/components/toast.js - Toast 通知
- js/components/lightbox.js - 图片预览
入口层:
- js/app.js - 主入口/初始化协调
index.html: 1608行 → 204行纯模板
|
2026-04-03 11:34:24 +08:00 |
|