Commit Graph

81 Commits

Author SHA1 Message Date
huangjianwu
27758f95dd feat(ui): 工作区和生成历史面板支持折叠/展开
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 16:09:57 +08:00
Jianwu Huang
a2ab457f75 Merge pull request #299 from JefferyHcool/feature/note-qa-chat-optimize
Feature/note qa chat optimize
2026-03-23 16:00:15 +08:00
huangjianwu
795615f0f7 fix(ui): 修复 Banner 封面图不显示
MarkdownViewer 的 baseURL 去掉了 /api 前缀,导致
image_proxy 请求路径错误。改为组件内部直接读取
VITE_API_BASE_URL,与 NoteHistory 保持一致。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 15:59:02 +08:00
huangjianwu
c46c971e64 fix(ui): Banner 封面通过后端代理加载,移除来源链接模块
- 封面图通过 /image_proxy 代理请求,解决 B 站等 CDN 跨域问题
- 渲染 markdown 时过滤掉开头的「来源链接」行,
  该信息已由 VideoBanner 的「原视频」按钮替代

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 15:56:48 +08:00
huangjianwu
55cc3bcd63 feat(ui): 笔记顶部新增视频封面 Banner
- 视频封面做模糊暗色背景,上方叠加视频信息
- 显示视频标题、作者/UP主、平台
- 右侧「原视频」按钮跳转原始链接
- 无封面时降级为渐变背景

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 15:54:36 +08:00
huangjianwu
ef1dec1e47 feat(chat): AI 回复支持 Markdown 渲染
通过 Bubble role 的 contentRender 使用 ReactMarkdown
渲染 AI 回复内容,支持列表、加粗、代码块等格式。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 15:31:55 +08:00
huangjianwu
fea376d1cb fix(chat): 修复 avatar 传对象导致 React 渲染报错
avatar 属性类型是 ReactNode,不是 props 对象,
改为直接传 JSX 元素作为头像。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 15:30:15 +08:00
huangjianwu
b18277a3a0 fix(chat): 修复消息气泡左右布局不生效
- Bubble.List 的角色配置属性名是 role(单数)而非 roles
- 用户消息:右侧蓝色填充气泡 + 蓝色头像
- AI 回复:左侧描边气泡 + 灰色头像

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 15:29:09 +08:00
huangjianwu
d8fbceaadf refactor(chat): 全屏/半屏切换移入 ChatPanel 内部
- Header 恢复单个"AI 问答"按钮,点击默认打开半屏模式
- ChatPanel 头部新增全屏/半屏切换按钮(Maximize2/Minimize2 图标)
- 半屏:markdown 与问答并排各占一半
- 全屏:问答占满内容区,隐藏 markdown

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 15:23:55 +08:00
huangjianwu
dea393e713 feat(chat): 问答面板支持半屏和全屏两种模式
- 半屏模式:ChatPanel 与 markdown 各占一半并排显示
- 全屏模式:ChatPanel 占满整个内容区域,隐藏 markdown
- Header 新增两个按钮(问答 / 全屏问答),点击切换,再次点击关闭
- 当前激活的模式按钮高亮显示

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 15:20:07 +08:00
huangjianwu
ae2bfe4d0a fix(chat): 修复 ChatPanel 不显示的布局问题
- ChatPanel 容器添加 h-full shrink-0 确保有高度且不被压缩
- ScrollArea 从 w-full 改为 flex-1 min-w-0,为 ChatPanel 让出空间

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 15:15:14 +08:00
huangjianwu
2f2eb646a4 fix(chat): 索引改为后台异步执行,前端轮询状态并展示进度提示
后端:
- /chat/index 改为 BackgroundTasks 异步执行,立即返回
- /chat/status 返回细粒度状态(idle/indexing/indexed/failed)
- 内存追踪索引进度,避免重复触发

前端:
- ChatPanel 每 2 秒轮询索引状态,索引完成后自动停止
- 索引中显示"正在索引笔记内容..."及首次下载模型提示
- 索引失败显示重试按钮

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 14:46:37 +08:00
huangjianwu
3cd4c749c1 fix(chat): 修复 ChatPanel 无限重渲染导致的 Maximum update depth exceeded
- useTaskStore 选择器内调用 getCurrentTask() 每次返回新对象引用,
  改为分别选取 currentTaskId + tasks 后用 useMemo 派生
- chatHistory[taskId] || [] 在选择器内每次创建新空数组引用,
  改为选择器返回原始值,外部用 ?? [] 兜底

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 14:40:47 +08:00
huangjianwu
efadbc267d feat(chat): 基于 RAG 的笔记内容 AI 问答功能
实现类似 Google NotebookLM 的效果:笔记生成后自动向量化,
用户可针对笔记内容进行 LLM 问答。

### 后端
- 新增 VectorStoreManager(ChromaDB),按标题/转录分块建立向量索引
- 新增 chat_service.py RAG 问答:检索相关片段 → 构建 prompt → 调用 LLM
- 新增 /chat/index, /chat/ask, /chat/status API 端点
- 笔记生成完成后自动建立向量索引

### 前端
- 使用 @ant-design/x Bubble.List + Sender 组件构建聊天面板
- 新增 chatStore(Zustand + persist)持久化聊天记录
- MarkdownViewer 右侧嵌入 ChatPanel,通过"AI 问答"按钮切换
- 首次打开自动检查/触发索引,支持重新索引

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 14:38:39 +08:00
huangjianwu
c105342ded fix: 性能优化、前端转写器配置、任务进度丢失及 MLX Whisper 回退问题修复
### 性能优化
- 后端任务执行从串行锁改为 ThreadPoolExecutor 并发执行(默认3线程)
- 添加 GZipMiddleware 响应压缩 + Nginx gzip 配置
- 数据库连接池参数优化(pool_size=10, max_overflow=20)
- 视频帧提取并行化(ThreadPoolExecutor)
- LLM 重试配置缓存到实例,避免每次请求读 env var
- 前端路由级代码拆分(React.lazy + Suspense)
- Vite manualChunks 拆分 markdown/markmap/vendor
- MarkdownViewer 用 React.memo + useMemo 减少不必要渲染
- NoteHistory Fuse.js 实例 useMemo 缓存
- useTaskPolling 无待处理任务时跳过轮询
- 移除 antd 依赖(NoteForm Alert、modelForm Tag),改用 shadcn/ui

### 前端转写器配置(新功能)
- 新增 TranscriberConfigManager(JSON 文件存储,替代环境变量)
- 新增 GET/POST /transcriber_config API 端点
- 新增 GET /transcriber_models_status 模型下载状态查询
- 新增 POST /transcriber_download 后台模型下载触发
- 前端转写器设置页面:引擎选择、模型大小选择、模型下载管理
- deploy_status 端点同步从配置文件读取

### Bug 修复
- 修复任务进行中切换页面后进度丢失:Home.tsx status 派生逻辑补全中间状态
- 修复 MLX Whisper 静默回退 fast-whisper:移除环境变量门控,macOS 下自动尝试导入
- MLX Whisper 不可用时抛出 RuntimeError 而非静默回退
- 前端展示 MLX Whisper 可用性状态,不可用时禁用保存

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 14:09:34 +08:00
Jianwu Huang
15d851f0d0 Merge branch 'master' into master 2026-03-20 16:50:43 +08:00
Jianwu Huang
8172e64510 Merge pull request #275 from sibuchen/feature/deployment-monitor-clean
feat: 新增部署监控页面 (Deployment Monitor)
2026-03-20 16:49:46 +08:00
wanderer99176
7fb4fcba77 fix: update bilibili timestamp link format to - [MM:SS](URL#t=MM:SS) 2026-02-25 11:57:16 +08:00
CyanAutumn
d9a7b89e7d 🐞 fix: 增加错误之后对已解析段落的缓存功能,再次重试时不再重头开始
解析长视频时,当附件大小过大时不再调用后进行报错,而是将附件进行分批次发送

在每篇笔记开头默认增加地址来源链接,对模糊处可溯源
2026-02-12 18:28:11 +08:00
sibuchen
8cd8c6f7b4 feat: add deployment monitor page
- Add /deploy_status API endpoint for system status check
- Create Monitor.tsx component with real-time status display
- Support CUDA, FFmpeg, Whisper model status monitoring
- Auto-refresh every 30 seconds with manual refresh option
2026-02-06 16:15:11 +08:00
sunnyclubcn
85b24dee40 feat: Add subtitle priority fetching and enhance mindmap export
## Subtitle Priority (Backend)
- Add download_subtitles() method to base downloader
- Implement Bilibili subtitle fetching with cookies support
- Implement YouTube subtitle fetching
- Support SRT and JSON3 format parsing
- Prioritize platform subtitles over Whisper transcription

## Mindmap Export Enhancements (Frontend)
- Add SVG vector export with proper viewBox handling
- Add XMind format export with Chinese character encoding fix
- Fix PNG/SVG export to capture full content by calling fit() before export
- Add JSZip dependency for XMind export

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 17:12:14 +08:00
Jianwu Huang
10311c1438 Merge pull request #192 from HansYeoh/export-mind-map
Add an export mind map button to support exporting HTML and PNG.
2025-10-18 10:00:19 +08:00
Jianwu Huang
3a0f86e74e Merge pull request #193 from HansYeoh/allow-all-domains
Modify to allow access from all domains
2025-10-18 09:59:58 +08:00
userName
9ba895fa8d Fixed the problem of abnormal display of front-end page pictures in docker deployment 2025-09-06 16:10:42 +08:00
Yang Han
6d077a4ed3 Update vite.config.ts
Modify to allow access from all domains
2025-07-17 01:29:59 +08:00
Yang Han
b1b0e87d85 Update MarkmapComponent.tsx
Add an export mind map button to support exporting HTML and PNG.
2025-07-17 01:27:33 +08:00
Yang Han
7d325517b3 Update MarkdownViewer.tsx
Add an export mind map button to support exporting HTML and PNG.
2025-07-17 01:27:09 +08:00
Paper-Dragon
dc29319a3e Refine form validation and update Docker configuration 2025-07-09 13:34:26 +08:00
Karasukaigan
564eee2682 fix: 隐藏多余错误提示 2025-07-02 04:34:54 +08:00
Karasukaigan
8fecf293bb fix: 优化Schema校验逻辑
修复了以下问题:
1. 当视频链接为空时,原本的校验逻辑会导致首次点击生成笔记时报错“Required”而不是“视频链接不能为空”。
2. 当选择抖音时无法判断URL是否合法,即使填入“123”也能触发后面的逻辑。
2025-07-02 04:05:04 +08:00
Karasukaigan
ce76b78b34 fix: 缓解Ant Design与React版本兼容性问题
Ant Design v5与React 19+存在兼容性问题,出现报错:[antd: compatible] antd v5 support React is 16 ~ 18.

## 修复方式
1. 尝试升级antd到5.26.3,但不起作用。
2. 注释掉代码里的`message.error`,可以暂时解决问题。
2025-07-02 03:21:36 +08:00
Karasukaigan
a8c10d3961 微调前端左中右区域默认占比 2025-07-02 02:40:23 +08:00
Karasukaigan
c009afaa6c fix: 修复Checkbox组件受控与非受控切换的警告
修复React警告"Checkbox is changing from uncontrolled to controlled."
2025-07-02 01:33:31 +08:00
Karasukaigan
5ff88ac765 fix: 修复Input组件受控与非受控切换的警告
修复React警告"A component is changing an uncontrolled input to be controlled"。

## 原因
`input.tsx`中`<input>`元素未显式处理`value`和`onChange`属性,导致父组件传值时从`undefined`切换为具体值(或反之)

## 修复方式
- 显式提取`value`和`onChange`属性
- 使用`value ?? ''`保证默认值始终为字符串,避免从`undefined`切换
- 确保组件始终以受控模式运行
2025-07-02 01:21:35 +08:00
Karasukaigan
fabf4b7cd5 fix: 修复ResizablePanel默认大小总和非100%的警告
修复React可调整面板组件的布局警告"Invalid layout total size: 18%, 16%, 55%."
2025-07-02 01:09:46 +08:00
Karasukaigan
d8768d5d5b fix: 修复NoteHistory组件中的key警告
修复React警告"Each child in a list should have a unique 'key' prop"
2025-07-02 00:44:52 +08:00
Karasukaigan
f05ae6a27f refactor: 简化URL结构
将`HashRouter`替换为更现代的`BrowserRouter`,移除`#`片段以简化URL结构。
2025-07-02 00:20:28 +08:00
JefferyHcool
b20725cb00 fix:修复windows 日志格式问题 2025-06-23 09:20:36 +08:00
JefferyHcool
50bf467341 refactor(backend): 修改系统初始化和健康检查相关逻辑
- 更新 BackendInitDialog 组件中的提示信息,增加报错提示
- 在 config 路由中添加 sys_check 接口,用于系统检查
- 修改 useCheckBackend钩子,使用新的 sys_check接口进行系统检查
2025-06-20 13:44:48 +08:00
JefferyHcool
f23ed6ec6c feat(system): 添加后端初始化和健康检查功能
- 新增后端初始化对话框组件
- 实现后端健康检查和初始化逻辑
- 在 App 组件中集成后端初始化和健康检查
- 新增系统健康检查 API 和相关服务
2025-06-20 13:05:42 +08:00
JefferyHcool
467deefd28 build:完成打包功能 2025-06-20 12:03:10 +08:00
JefferyHcool
c24fcc6d7d build(tauri): 更新后端端口并优化打包流程
- 将后端端口从8000 修改为 8483
- 更新前端请求基础 URL 以匹配新的后端端口
- 优化后端打包脚本,确保 .env 文件正确复制和清理
- 修改后端主程序和请求工具中的端口配置
2025-06-20 09:35:34 +08:00
Jianwu Huang
29c4926306 Merge branch 'master' into feature/1.8.0 2025-06-19 16:24:26 +08:00
JefferyHcool
3b3e6b86f3 chore:打包测试 2025-06-19 16:20:32 +08:00
JefferyHcool
d92cc4a977 feat(NoteForm): 增加文件上传状态反馈 2025-06-19 14:54:51 +08:00
JefferyHcool
cf512e226f feat:优化上传体验 2025-06-06 22:03:12 +08:00
JefferyHcool
2dfc1c068f feat(NoteForm): 增加文件上传状态反馈
- 添加上传中和上传成功状态的显示- 优化上传逻辑,增加状态控制
- 提升用户体验,明确上传过程
2025-06-06 22:02:02 +08:00
JefferyHcool
8b1bc54f2d refactor(backend): 重构后端异常处理和模型管理
- 新增自定义异常类 BizException、NoteError 和 ProviderError
- 优化了模型管理相关的逻辑,包括加载、删除和测试连接等功能
- 改进了 Douyin 下载器的错误处理
- 调整了任务重试逻辑和笔记生成的异常处理- 更新了相关组件和页面以适应新的异常处理机制
2025-06-06 21:30:23 +08:00
JefferyHcool
31f42aa26e feat(model): 增加模型管理和测试功能
- 新增模型删除功能
- 实现模型测试连接功能
- 优化模型选择器组件
- 更新模型相关API和数据库操作
2025-05-27 08:52:38 +08:00
JefferyHcool
9b298d3094 feat(model): 增加模型管理和测试功能
- 新增模型删除功能
- 实现模型测试连接功能
- 优化模型选择器组件
- 更新模型相关API和数据库操作
2025-05-26 23:16:19 +08:00