42 lines
2.6 KiB
Plaintext
42 lines
2.6 KiB
Plaintext
项目修复记录(2026-05-17)
|
||
|
||
1. 本次实际修复的 bug
|
||
- 单频道 YouTube / 抖音转 YouTube:
|
||
旧逻辑只要检测到任意一个托管配置文件存在,就会把 `youtube.ini` 和 `URL_config.ini` 整对切到托管路径;当只生成了一半托管文件时,会把另一半旧配置绕掉,导致推流 key 或房间 URL 丢失。现已改为“按文件粒度回退”。
|
||
- 多频道 Pro:
|
||
前端从服务端拉取频道列表时,空列表会被误判成“拉取失败”,随后回退到浏览器本地缓存,导致页面继续显示旧频道。现已把“成功拉到空列表”和“请求失败”区分开。
|
||
- 进程重启:
|
||
`web.py` 的重启接口原先在 `restart()` 之后再 `force_kill_ffmpeg()`,会把刚拉起的新 ffmpeg 一并杀掉。现已改为先清理旧 ffmpeg,再执行重启。
|
||
- PM2 状态污染:
|
||
PM2 `start/stop/restart/resurrect` 失败时,旧代码仍会把进程标记成期望运行并保存状态,控制台会显示假在线。现已改为只有返回码为 0 才更新 desired 状态。
|
||
- PM2 自恢复卡死:
|
||
`src/web_process_backend.py` 把一些很小的本地文件读写放进 `asyncio.to_thread()`;在当前环境里这条路径会卡住,导致 PM2 进程表恢复逻辑不返回。现已改为直接同步执行这些轻量操作。
|
||
- Neko 浏览器:
|
||
`DeveloperToolsAvailability` 原来是 `2`,会直接禁用开发者工具;同时启动参数带 `--bwsi`,会破坏扩展持久化和 Tampermonkey 行为。现已改为允许 DevTools,并移除 `--bwsi`。
|
||
|
||
2. 本次改动的关键文件
|
||
- 后端:
|
||
`src/youtube_config_paths.py`
|
||
`youtube.py`
|
||
`src/web_process_backend.py`
|
||
`web.py`
|
||
- 前端:
|
||
`web-console/lib/youtubeProChannels.ts`
|
||
`web-console/components/live-product/LiveYoutubeUnmannedView.tsx`
|
||
`web-console/out/*`(已重新构建静态产物)
|
||
- Neko:
|
||
`services/neko/policies/policies.json`
|
||
`services/neko/google-chrome.conf`
|
||
`services/neko/chromium.conf`
|
||
`services/neko/browser-launch.sh`
|
||
|
||
3. 验证结果
|
||
- 已通过:
|
||
`python -m compileall -q src web.py youtube.py douyin_youtube_ffplay.py tests`
|
||
`python -m unittest -q tests.test_web_process_backend tests.test_web_dynamic_processes tests.test_youtube_config_paths tests.test_neko_config tests.test_youtube_push_config tests.test_youtube_pro_runtime`
|
||
- 前端已使用 Node 20 重新执行 `web-console` 构建,新的 `web-console/out` 已生成。
|
||
|
||
4. 部署注意
|
||
- `live.local` 实际运行目录不是当前仓库 `/home/eric/sh/d2ypp2`,而是 `/home/eric/d2ypp`。
|
||
- 如果只改当前目录而不把修复同步到 `/home/eric/d2ypp`,`live.local` 不会生效。
|