huangjianwu
|
f5bfb43619
|
docs(readme): 群二维码改为关注公众号回复「交流群」获取
将 README 社区区块中 5 个会过期的微信群二维码,替换为公众号二维码,
关注后回复「交流群」获取最新群码,避免群码失效。与关于页保持一致。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-07 02:09:03 +08:00 |
|
huangjianwu
|
ddaa0eef92
|
Merge branch 'release/2.4.0'
v2.4.0
|
2026-06-07 02:05:37 +08:00 |
|
huangjianwu
|
e41a3e27eb
|
chore(release): 2.4.0
- 版本号 2.3.4 → 2.4.0(tauri.conf.json / README)
- CHANGELOG 补充 2.4.0、回填 2.3.4
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-07 02:05:30 +08:00 |
|
huangjianwu
|
fd18aa2955
|
Merge branch 'pr-383' into develop
|
2026-06-07 02:03:40 +08:00 |
|
huangjianwu
|
0a93911f3e
|
Merge branch 'docs/gpu-deploy-notes' into develop
|
2026-06-07 02:03:40 +08:00 |
|
huangjianwu
|
d0760bcbbc
|
Merge branch 'feat/configurable-whisper-models' into develop
|
2026-06-07 02:03:40 +08:00 |
|
huangjianwu
|
2fc558e00a
|
Merge branch 'master' into develop
|
2026-06-07 02:01:09 +08:00 |
|
huangjianwu
|
a83642e602
|
feat(about): 群二维码改为扫描公众号回复「交流群」获取
关于页社区区块由直接展示会过期的微信群二维码,改为展示公众号二维码,
引导用户关注公众号后回复「交流群」获取最新群二维码,避免群码过期失效。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-07 02:00:56 +08:00 |
|
huangjianwu
|
9bc3b2960b
|
Merge branch 'master' into develop
|
2026-05-27 02:52:11 +08:00 |
|
huangjianwu
|
095d772c7d
|
Merge branch 'release/2.3.4'
v2.3.4
|
2026-05-27 02:51:43 +08:00 |
|
huangjianwu
|
2e3fda7df4
|
feat: 新增 BiliNote AI笔记系统一对一搭建服务二维码(README + 关于页),bump 版本至 2.3.4
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-27 02:51:15 +08:00 |
|
Jianwu Huang
|
2ea95b2fad
|
Merge pull request #382 from techotaku39/fix/frontend-about-version
fix(frontend): 同步关于页版本号
|
2026-05-27 02:37:03 +08:00 |
|
techotaku39
|
e78b687096
|
fix(extension): improve title display and mindmap export
|
2026-05-26 21:15:39 +08:00 |
|
techotaku39
|
9d1a7cd699
|
fix(frontend): 同步关于页版本号
|
2026-05-26 15:54:05 +08:00 |
|
Jianwu Huang
|
f2d8ece0c1
|
Merge pull request #374 from techotaku39/fix/backend-api-key-mask-and-ffmpeg-path
fix(backend): 防御 API Key 掩码污染并修复 EXE 版 .env 加载路径
|
2026-05-25 13:21:38 +08:00 |
|
Jianwu Huang
|
7bc4b0114e
|
Merge pull request #375 from techotaku39/feature/extension-show-title-instead-of-url
feat(extension): 侧边栏与 popup 用视频标题替代链接显示
|
2026-05-25 13:21:11 +08:00 |
|
Jianwu Huang
|
f7ea6f72d9
|
Merge pull request #377 from techotaku39/fix/markdown-anchor-navigation
fix(frontend): 修复 Markdown 目录锚点跳转与 Tauri 路由
|
2026-05-25 13:20:19 +08:00 |
|
techotaku39
|
905dbcce47
|
fix(frontend): 增强锚点链接模糊匹配,兼容 LLM 生成的不一致目录格式
|
2026-05-24 03:21:20 +08:00 |
|
techotaku39
|
ebdb254fc6
|
fix(frontend): 修复 Markdown 目录锚点跳转与 Tauri 路由
- 安装 rehype-slug 插件,自动为 heading 生成 id,解决目录链接无锚点目标的问题
- 自定义 <a> 组件处理内部锚点链接,阻止默认刷新行为并使用 scrollIntoView 平滑滚动
- Tauri 桌面端改用 HashRouter,避免刷新时 404 及错误打开外部浏览器
fixes #xxx
Co-Authored-By: HAPI <noreply@hapi.run>
|
2026-05-24 03:21:20 +08:00 |
|
techotaku39
|
1eb213e215
|
feat(extension): 侧边栏与 popup 用视频标题替代链接显示
在任务未完成的早期阶段(PENDING/DOWNLOADING 等),侧边栏和 popup
只能回退到 videoUrl,用户看到的是一长串链接,难以辨认。
改动:
- TaskRecord 新增 title 字段,用于存储浏览器标签页标题
- popup 创建任务时保存 tab.title
- background startTask 接收可选 title,右键菜单和悬浮按钮均传入
- 显示优先级:result.audio_meta.title > title > videoUrl
- 所有平台(Bilibili / YouTube / Douyin / Kuaishou)均受益
测试:
- pnpm typecheck 通过
- pnpm build 通过
- 在 B 站、YouTube 视频页提交任务,侧边栏和 popup 均显示标题而非链接
|
2026-05-24 00:06:21 +08:00 |
|
techotaku39
|
4425239717
|
fix(backend): 防御 API Key 掩码污染并修复 EXE 版 .env 加载路径
- provider.py: 更新供应商时,若 api_key 包含 '*'(掩码字符),
跳过该字段,防止前端展示用的 mask_key() 值被误写入数据库。
- ffmpeg_helper.py: load_dotenv() 默认只从 CWD 查找 .env,
PyInstaller 打包后 CWD 为 EXE 目录,导致 _internal/.env 被忽略。
改为遍历多个候选路径(CWD、脚本目录、项目根目录、_internal/),
确保源码和打包两种场景都能正确加载环境变量。
|
2026-05-23 22:49:56 +08:00 |
|
huangjianwu
|
64a0400792
|
docs(readme): 补全 GPU/CUDA 部署说明
原 CUDA 段落只有一行链接。补上实操步骤与常见坑:
- 宿主机前提:NVIDIA 驱动 + NVIDIA Container Toolkit + --gpus all 验证命令
- 切换:先 docker-compose down(两套 compose 容器名相同)再 -f docker-compose.gpu.yml up --build -d
- 数据不丢(两套 compose 都绑挂 ./backend);首次构建大而慢
- 只有本地 Faster Whisper 吃 GPU(在线引擎无关);device 自动检测无需配置
- 确认走 GPU 的方法 + 没走 GPU 的排查清单 + 国内镜像 build-arg 提示
另:把 compose 块里 GPU 那行 up -d 改成 up --build -d(首次需构建)。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-22 21:51:47 +08:00 |
|
huangjianwu
|
58d992f28f
|
feat(transcriber): 可配置 whisper 模型 + 名称映射(自定义 HF repo / 本地路径)
此前 fast-whisper 把「size → Systran/faster-whisper-{size}」的约定隐式散落在
加载/下载/检测三处,用户想用命名不符该约定的模型(社区微调版、或自己下到本地
的模型)接不上。本功能把映射显式化 + 可配置(对齐已有的 MLX_MODEL_MAP 模式)。
后端:
- 新增 app/transcriber/whisper_models.py 注册表:内置映射 + 用户自定义
(config/whisper_models.json 持久化,Docker 下随 config 卷保留);resolve
优先级 自定义 > 内置 > 直通(含 / 的 repo_id / 已存在本地目录)。
- whisper.py / config.py 的加载、下载、完整性检测统一走 resolve;HF cache 目录从
任意 repo_id 推导(models--{org}--{name})不再写死 Systran;本地路径跳过下载,
_purge_cache 绝不删用户本地模型。
- 新增 /whisper_models 增删查 API;/transcriber_config 返回内置+自定义列表;
下载校验放开到「已登记/可解析」的模型。
前端:transcriber.tsx 新增「自定义模型」卡片(增删 + 下载状态),模型下拉自动含自定义。
Docker:自定义 HF 模型下到 /app/backend/models(v2.3.3 models 卷已持久化);本地模型
走挂载目录 + 配置路径,UI 已提示挂载。
测试:tests/test_whisper_models.py 13 个单测全过;并在 v2.3.3 镜像真实后端环境做了
import 链 + resolve + 真实模型检测的集成冒烟,均通过。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-22 15:09:06 +08:00 |
|
huangjianwu
|
db556b8991
|
Merge branch 'release/2.3.3'
v2.3.3:预构建镜像持久化数据库/笔记,修升级丢配置与历史。
v2.3.3
|
2026-05-22 14:07:00 +08:00 |
|
huangjianwu
|
717df2af7b
|
Merge branch 'release/2.3.3' into develop
回合并 v2.3.3 版本号。
|
2026-05-22 14:07:00 +08:00 |
|
huangjianwu
|
b431db545a
|
docs: v2.3.3 CHANGELOG + README + tauri 版本
Docker 镜像数据持久化修复版本。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-22 14:07:00 +08:00 |
|
huangjianwu
|
25face4b67
|
Merge branch 'fix/docker-data-persistence' into develop
v2.3.3:预构建镜像持久化数据库/笔记,修升级丢配置与历史。
|
2026-05-22 14:06:24 +08:00 |
|
huangjianwu
|
edfd6e4765
|
fix(docker): 预构建镜像持久化数据库/笔记,修升级丢配置与历史
README 的 docker run 只挂了 -v …:/app/backend/data(仅媒体缓存),但
SQLite 库在 /app/backend/bili_note.db、笔记在 /app/backend/note_results
都不在该卷下 → 用户删容器重建(如 docker pull 升级镜像)会丢失 LLM
供应商配置和全部笔记历史。
- Dockerfile.complete:DATABASE_URL 重定向到 /app/backend/data/bili_note.db、
NOTE_OUTPUT_DIR 改到 data/note_results,并预建 /app/backend/data 目录;
两条 supervisord environment 行同步(兜底默认值 + %(ENV_*)s 透传)。
- README:docker run 改挂 data(库+笔记)/ config(供应商·Cookie·转写配置)/
static(截图)/ models(模型缓存,可选)四个数据卷,并警告不要挂整个
/app/backend(命名卷会固化镜像内代码,导致 docker pull 升级不生效)。
- docker-build.yml:同步发布说明里 echo 的 run 命令。
截图仍留在 /app/backend/static(static_dir 硬编码服务,不能重定向),单独挂卷。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-22 13:30:42 +08:00 |
|
huangjianwu
|
b53cafda5a
|
Merge branch 'release/2.3.2' into develop
回合并 v2.3.2 版本号。
|
2026-05-22 11:41:17 +08:00 |
|
huangjianwu
|
adda5fd240
|
Merge branch 'release/2.3.2'
v2.3.2:修后端启动崩溃(ctranslate2 4.6.0) + whisper 模型路径 + 桌面端版本号。
v2.3.2
|
2026-05-22 11:41:04 +08:00 |
|
huangjianwu
|
3e28f1fe38
|
docs: v2.3.2 CHANGELOG + README + tauri 版本
docker 启动崩溃 / whisper 模型路径 / 桌面端版本号 修复版本。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-22 11:40:55 +08:00 |
|
huangjianwu
|
bffa285cd0
|
Merge branch 'fix/docker-startup-and-qr' into develop
v2.3.2 修复集:
- ctranslate2 4.5.0→4.6.0 修后端启动崩溃(可执行栈 / glibc 2.41)
- whisper 模型下载/加载统一 HF cache 布局
- 桌面端构建版本号从 tag 注入(修产物恒为 2.0.0)
|
2026-05-22 11:40:21 +08:00 |
|
huangjianwu
|
b740e70068
|
fix(desktop): 构建时从 tag 注入版本号,修产物版本恒为 2.0.0
桌面端构建产物(.dmg/.msi 文件名 + app 内部版本)一直是 2.0.0:
Tauri 取 tauri.conf.json 的静态 version 字段作为产物版本,而 Release
工作流只把 tag 名用作 Release 标题,没同步到 conf → 产物版本与 Release
版本错位。
在 pnpm tauri build 前新增 Sync version 步骤,从 github.ref_name(形如
v2.3.2,去掉前缀 v)注入版本到 tauri.conf.json。以后每次 tag 发版自动
对齐;workflow_dispatch 手动构建无 tag 时跳过,保留静态值不破坏。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-22 11:40:04 +08:00 |
|
huangjianwu
|
261c95cf12
|
fix(transcriber): whisper 模型下载/加载统一走 HF cache 布局
此前用 modelscope 下到自定义目录 whisper-{size}/ 再把该路径传给
WhisperModel。但 faster-whisper 1.1.1 只要 path 含 '/' 就当成 HF
repo_id 处理,没有「本地目录直接返回」分支 → 在线请求失败后 fallback
local_files_only,又因 modelscope 布局命不中 HF cache → LocalEntryNotFound,
误导用户以为是「离线模式」。
改为下载与加载路径对齐:
- 下载:huggingface_hub.snapshot_download(cache_dir=model_dir),落到 HF
cache 布局 models--Systran--faster-whisper-{size}/snapshots/<hash>/
- 加载:WhisperModel(model_size_or_path=size, download_root=model_dir),
让 faster-whisper 自己映射到 Systran/faster-whisper-* 并命中同一 cache
- 完整性检测 / 损坏自愈(_purge_cache) 同步按 HF cache 布局,并兼容老
modelscope 目录(向后兼容已下载的老用户)
HF_ENDPOINT 已在 Dockerfile 指向 hf-mirror.com,国内可用。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-22 11:27:03 +08:00 |
|
huangjianwu
|
1cc7f38e14
|
fix(backend): 升级 ctranslate2 4.5.0→4.6.0 修复后端启动崩溃
Docker 容器反复重启,启动即报:
ImportError: libctranslate2-*.so.4.5.0: cannot enable executable
stack as shared object requires: Invalid argument
根因:ctranslate2 4.5.0 预编译 wheel 把共享库标记为「需要可执行栈」,
新内核 / glibc 2.41+ 加载时拒绝并返回 EINVAL。faster-whisper 在
whisper.py 顶层 import,import 失败直接拖垮整个后端启动 → 重启死循环。
ctranslate2 4.6.0 加入 noexecstack 链接标志(OpenNMT/CTranslate2 #1852、
#1861)从 wheel 层根治。faster-whisper 1.1.1 依赖 ctranslate2<5,>=4.0,
4.6.0 兼容;同时覆盖 web / GPU / 桌面 三条构建链。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-22 11:26:49 +08:00 |
|
huangjianwu
|
7fffd6873b
|
Merge branch 'release/2.3.1' into develop
回合并 v2.3.1 版本号(CHANGELOG + README)。
|
2026-05-22 10:51:49 +08:00 |
|
huangjianwu
|
7b927db363
|
Merge branch 'release/2.3.1'
v2.3.1:更新微信交流群二维码(群 1-5)。
v2.3.1
|
2026-05-22 10:51:39 +08:00 |
|
huangjianwu
|
c42ceaaa32
|
docs: v2.3.1 CHANGELOG + README 版本
二维码热修补丁版本。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-22 10:51:30 +08:00 |
|
huangjianwu
|
177ee4ba3a
|
Merge branch 'fix/docker-startup-and-qr' into develop
更新微信交流群二维码(群 1-5,旧码即将失效)。
同步 master 上的二维码热修(README 二维码区块 + 5 张入群图)到 develop。
|
2026-05-22 10:51:05 +08:00 |
|
huangjianwu
|
aae17abf9a
|
docs: 更新微信交流群二维码(群 1-5,有效期至 5/29)
旧二维码即将失效,替换 README 中 5 个交流群的入群二维码。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-22 10:42:12 +08:00 |
|
huangjianwu
|
33d44e32d2
|
docs: 突出 BiliNote Pro 在线版 + 更新微信交流群二维码
- README 顶部新增 BiliNote Pro 在线版推广区块(www.bilinote.app),
项目简介后加引导提示,「在线使用」章节改为「在线使用(推荐)」
- 微信交流群二维码更新为 5 个群,doc/wechat-group-1~5.png
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-14 21:45:34 +08:00 |
|
Jianwu Huang
|
ce58cb9352
|
Merge pull request #369 from JefferyHcool/release/2.3.0
chore(release): merge release/2.3.0 back into develop
|
2026-05-14 21:09:55 +08:00 |
|
Jianwu Huang
|
2043d89288
|
Merge pull request #368 from JefferyHcool/release/2.3.0
chore(release): v2.3.0
v2.3.0
|
2026-05-14 21:09:30 +08:00 |
|
huangjianwu
|
56e075253a
|
docs: v2.3.0 CHANGELOG + README 版本
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-14 19:05:46 +08:00 |
|
huangjianwu
|
f1b091b846
|
chore(deploy): docker 镜像源/restart 策略 + .env 修正 + 文档
- 所有 Dockerfile 加 BASE_REGISTRY build-arg,国内拉不到 docker.io
时可换 daocloud 等镜像源;compose 透传该 arg
- docker-compose: restart 从 on-failure:3 改 unless-stopped(避免短暂
崩溃后永久打死);gpu compose 补齐 healthcheck/restart/mem_limit
- Dockerfile.complete: supervisord 用 %(ENV_*)s 透传环境变量给 backend
子进程(之前只白名单 2 个,docker run -e 配的变量后端看不到)
- .env.example: 修正 VITE_API_BASE_URL 端口(8000→8483)、
WHISPER_MODEL_SIZE medium→tiny(首次启动不被大模型下载卡住)、
补 Docker 部署说明注释
- README: 新增 Docker 部署常见问题 FAQ(镜像源/restart/数据持久化等)
- CLAUDE.md: 勘误(移除不存在的 messaging/i18n/worker_registry 描述,
修正 events 路径),补 pytest/typecheck 命令
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-14 19:01:55 +08:00 |
|
huangjianwu
|
37f7ee6e15
|
feat(desktop): 后端健康监控韧性 + onboarding 修复 + 全局代理 UI
- useCheckBackend 重写:60s 总超时取代 while(true) 死轮询,订阅 Tauri
backend-ready/terminated/startup-timeout 事件,裸 fetch 探测避免
启动期 toast 叠堆
- Tauri lib.rs:spawn 后 HTTP 探针轮询 /api/sys_check 拿 200 才算就绪
(之前 TCP connect 会被孤儿进程误判);RunEvent::Exit 钩子退出前
kill sidecar,修孤儿进程占端口;restart 前发 backend-restarting
让前端忽略主动 kill 引发的 terminated
- BackendInitDialog:失败态展示原因 + 最近 stderr + 重启/复制日志按钮
- StartupBanner:收到 restarted/ready 自动清「已退出」横幅
- BackendHealthIndicator:修 /api/api/sys_health 双前缀 404
- Onboarding:step1 后端连通改自动重试 + 事件触发 + 手动按钮;step2
撞预置供应商名时改为更新已存在供应商;errText 统一错误文案
- 全局代理 UI:下载配置页新增代理卡片(services/proxy.ts + ProxyConfig)
- request.ts 加 suppressToast 配置位,预期失败不弹全局红 toast
- NoteForm/taskStore:捕获就绪门禁错误,引导去音频转写配置页下载
- providerCard:整行可点切换(之前只有 icon 区域响应)
- Monitor 页 Whisper 卡显示模型本地下载状态
- tauri/api 升级对齐 2.11,修 vite build 版本不匹配
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-14 19:01:37 +08:00 |
|
huangjianwu
|
41f17592c2
|
fix(backend): 部署韧性——模型自愈/就绪门禁/全局代理/启动诊断
- whisper: model.bin 截断/损坏时删目录重下重试一次,修「Unable to
open file model.bin」死循环;mlx 同样按 config.json 判完整性
- /generate_note 加就绪门禁:本地转写引擎模型没下好直接拦截,返回
reason=transcriber_model_not_ready,不让任务静默卡在首次下载
- 全局代理:新增 ProxyConfigManager(JSON 配置 + HTTP_PROXY env 兜底)
+ build_openai_client,统一注入代理到 LLM/Groq 客户端;yt-dlp 与
youtube-transcript-api 也走代理
- build_openai_client 校验 api_key 非空,空 key 给「xxx 的 API Key
未配置」而不是天书般的 Illegal header value b'Bearer '
- universal_gpt: 模型拒绝自定义 temperature(o1/o3/gpt-5 系列)时
就地去掉参数重试,不消耗重试预算
- connect_test 改用真实 chat completion 而非 /v1/models 探测
- main.py: lifespan 拆 [startup 1/5..5/5] 分段日志 + 异常清晰定位
- /sys_health 重构为结构化返回 {backend,ffmpeg,db,whisper_model}
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-14 19:01:14 +08:00 |
|
Jianwu Huang
|
88d25f8cc1
|
Update README.md
|
2026-05-14 09:24:59 +08:00 |
|
huangjianwu
|
de630dadb3
|
chore(release): merge hotfix/tauri-api-dep into develop
|
2026-05-09 14:53:18 +08:00 |
|
huangjianwu
|
7b5e6099e8
|
chore(release): v2.2.3
补 P1/P2 用了 @tauri-apps/api 但没声明为直接依赖导致的 vite build CI 失败。
v2.2.3
|
2026-05-09 14:53:01 +08:00 |
|