diff --git a/README.md b/README.md index 167d4e3..fd51e29 100644 --- a/README.md +++ b/README.md @@ -88,7 +88,7 @@ X选题补充:[9个项目与转化优先级](docs/research/x-project-shortlist AI 补充调研:[32 个 AI 项目与工作台选型](docs/research/ai-workbench-candidates.md)。覆盖文档抽取、知识图谱、Agent、评测、字幕、配音、课件和视觉生成,另含 3 个通用组件;已列明接口、独立服务、模型许可和维护边界。该次首批完成6项;后续转化状态以当前清单为准,正式模型/外部服务范围以各项目说明为准。 -第3波10项已完成本地功能验收与打包,纳入本地整合分支。第4–6波30项待开展。详细范围、验证与限制见[第三波记录](docs/release-0.9.0.md#第3波--本地工作流与可选服务)。 +第3波10项已完成本地功能验收与打包。第4–6波30项待开展。详细范围、验证与限制见[第三波记录](docs/release-0.9.0.md#第3波--本地工作流与可选服务)。 ## 工作台实景 diff --git a/docs/release-0.9.0.md b/docs/release-0.9.0.md index d8edfe2..1e05b74 100644 --- a/docs/release-0.9.0.md +++ b/docs/release-0.9.0.md @@ -80,7 +80,7 @@ ## 第3波 · 本地工作流与可选服务 -第3波10项已完成本地功能验收与打包,纳入本地整合分支。第4–6波的30项尚未开展。本地验收与商店上架、客户端导入分别记录。 +第3波10项已完成本地功能验收与打包。第4–6波的30项尚未开展。本地验收与商店上架、客户端导入分别记录。 | 工作台 | 0.9.0 能力 | 应用测试 | 验收记录 | | --- | --- | ---: | --- | @@ -99,7 +99,7 @@ 1440/375 浏览器主流程、自动保存和失败处理详见逐项记录。最初五项的浏览器运行来自本日原验收记录,整合者复核最终截图,未将历史运行记为本次重跑;后五项进行了本次独立浏览器验收。Docling、Graphify 另在解包副本运行测试。OpenMontage 实际导出桌面与窄屏成片,以 ffprobe 核对编码、尺寸和音轨。功能验收与结构对照分别记录,部分项目的正式跨工作台结构审查仍为 pending。 -安装包逐文件核对源码和最终应用文档。OSMD 清理文件尾部空行后重新打包;DeerFlow 原包携带旧版应用说明,已在最终文档完成后重新打包并更新哈希。manifest 资源路径按模板规则规范化。未推送、未合并 main、未发布商店。 +安装包逐文件核对源码和最终应用文档。OSMD 清理文件尾部空行后重新打包;DeerFlow 原包携带旧版应用说明,已在最终文档完成后重新打包并更新哈希。manifest 资源路径按模板规则规范化。商店尚未发布。 真实 Floatboat Host/LLM 未调用,模型通道仅使用 mock;faster-whisper 的 small 中文 CPU 实测沿用本日原验收记录。外部服务范围以逐项验收为准。共享自动保存的约900KB项目上限仍存在;部分大文件通过独立内容库保存,不能把输入上限等同完整项目可保存容量。 diff --git a/workbenches/67-openmontage/acceptance-evidence.json b/workbenches/67-openmontage/acceptance-evidence.json index a52e73a..8eb5c08 100644 --- a/workbenches/67-openmontage/acceptance-evidence.json +++ b/workbenches/67-openmontage/acceptance-evidence.json @@ -309,10 +309,10 @@ "sha256": "0b6a061503e92f755c0a965df7afd2d9a3c58d82d3d931cb5f000e10579a3ca5" }, "package": { - "at": "2026-10-29T12:03:49.912021+00:00", + "at": "2026-10-29T13:26:15+00:00", "filename": "openmontage-studio-0.9.0.fbworkbench", - "bytes": 2762775, - "sha256": "b32553321af3cf5424a78f8569cd47bd26733afbb3aaa9f8243f3aa3d5fa7a92", + "bytes": 2762855, + "sha256": "180734a079c7343e37b37337de4d9290f69582e389ebb23eaa87d7aec42328e4", "crc": "passed", "transferHashesVerified": 71, "sourceFilesMatched": 61, diff --git a/workbenches/67-openmontage/app/ACCEPTANCE.md b/workbenches/67-openmontage/app/ACCEPTANCE.md index a2fef02..ad7bc8c 100644 --- a/workbenches/67-openmontage/app/ACCEPTANCE.md +++ b/workbenches/67-openmontage/app/ACCEPTANCE.md @@ -56,3 +56,7 @@ - 模板 `check`/`test` 会争用 SDK 生成目录,须串行执行;未修改共享工具链。包采用模板固定源码清单,ACCEPTANCE 留在源码仓库,不属于包内固定三份说明文档。 证据目录:`archive/2026-10-29-workbench-depth/openmontage/`(工作区)。主要文件:`browser-evidence.json`、`depth-evidence.json`、`browser-final.log`、`depth-final.log`、`export-probe.json`、`mobile-export-probe.json`、`export-final-grid.png`、`package-verification.json`。仅本项目录和截图提交,不推送、不更新共享目录或飞书。 + +## PR 复核修复 + +2026-10-29 时间码改为固定 `HH:MM:SS:FF`(如 24 秒成片显示 `00:00:24:06`),避免被读成分钟;时间轴刻度仍显示 `MM:SS`。check 与 25 项应用测试通过,1440 与 375 宽浏览器复核监视器与时间轴无挤压、无 console 错误。重新打包,新哈希记录在 `acceptance-evidence.json`。仓库截图拍摄于修改前,监视器仍是旧格式。 diff --git a/workbenches/67-openmontage/app/src/contracts/timeline.ts b/workbenches/67-openmontage/app/src/contracts/timeline.ts index 9c237cb..8d6b294 100644 --- a/workbenches/67-openmontage/app/src/contracts/timeline.ts +++ b/workbenches/67-openmontage/app/src/contracts/timeline.ts @@ -312,5 +312,6 @@ export function timecode(seconds: number, fps = 30) { const f = Math.floor((s - whole) * fps + 1e-6); const h = Math.floor(whole / 3600), m = Math.floor((whole % 3600) / 60), sec = whole % 60; const pad = (n: number) => String(n).padStart(2, "0"); - return `${h ? pad(h) + ":" : ""}${pad(m)}:${pad(sec)}:${pad(f)}`; + // SMPTE HH:MM:SS:FF; always show hours so a 24-second cut never reads as 24 minutes. + return `${pad(h)}:${pad(m)}:${pad(sec)}:${pad(f)}`; } diff --git a/workbenches/67-openmontage/app/src/ui/Timeline.tsx b/workbenches/67-openmontage/app/src/ui/Timeline.tsx index 2c8e169..d1e261e 100644 --- a/workbenches/67-openmontage/app/src/ui/Timeline.tsx +++ b/workbenches/67-openmontage/app/src/ui/Timeline.tsx @@ -178,7 +178,7 @@ export const TimelineView = memo(function TimelineView({
{ticks.map((s) => ( - {timecode(s, timeline.settings.fps).replace(/:\d\d$/, "")} + {timecode(s, timeline.settings.fps).replace(/:\d\d$/, "").replace(/^00:/, "")} ))}
diff --git a/workbenches/67-openmontage/app/tests/timeline.test.ts b/workbenches/67-openmontage/app/tests/timeline.test.ts index 3f2ce87..2cbf1a7 100644 --- a/workbenches/67-openmontage/app/tests/timeline.test.ts +++ b/workbenches/67-openmontage/app/tests/timeline.test.ts @@ -61,6 +61,7 @@ test("fade envelope ramps in and out and is full in between", () => { test("video layers draw lower tracks first and text above all pictures", () => { const order = visualOrder(sampleTimeline()).map((k) => k.id); assert.deepEqual(order, ["v-main", "v-over", "t-sub", "t-title"]); - assert.equal(timecode(61.5, 30), "01:01:15"); + assert.equal(timecode(61.5, 30), "00:01:01:15"); + assert.equal(timecode(24.2, 30), "00:00:24:06"); assert.equal(timecode(3725, 25), "01:02:05:00"); }); diff --git a/workbenches/68-deerflow/ACCEPTANCE.md b/workbenches/68-deerflow/ACCEPTANCE.md index 1ac9dd6..1603084 100644 --- a/workbenches/68-deerflow/ACCEPTANCE.md +++ b/workbenches/68-deerflow/ACCEPTANCE.md @@ -19,7 +19,7 @@ ### 构建与测试 - `pnpm workbench check deerflow`:manifest、锁文件、类型与构建通过(仅保留共享 autosave-client 体积提示)。 - `pnpm workbench test deerflow`:53 项通过(之前 19 项)。新增覆盖:模板计划/确认规则/模型计划校验、DeerFlow 简报、检索合并保持编号与备注、本地底稿、Markdown/HTML 导出与转义、v1 升级、引用解析与交付门禁、示例完整性、大会话压缩;检索夹具(直读、Jina 回退、GitHub README、404/PDF 错误码、Exa 结果与私网结果丢弃、GitHub 限额说明、ECONNREFUSED)、SSRF(回环/链路本地/内网名/映射地址/DNS 解析后拒绝)、代理选择;mock Host 合同(状态、`generateObject` 计划、`generateText` 报告与编造编号、离线 503);SSE 解码、帧摘要、断线后按 Last-Event-ID 续接且不重复 POST、gap 改读完整状态、反复失败暂停、页面事件流回放与收尾、`/api/models` 检查与授权/拒绝连接说明、地址配置;自动保存提交幂等、未完成网址草稿、冲突保护。原有运行账本测试(持久命令、丢回执只读恢复、模型白名单拒绝、地址变更保护、官方载荷与幂等键)全部保留。 -- `pnpm package`:`artifacts/deerflow-studio-0.9.0.fbworkbench`,72 个文件,不含业务数据,SHA-256 `006357c78f72cd113a6c88944e6dfe364f16b481d14d696a72a4192361e28639`。 +- `pnpm package`:`artifacts/deerflow-studio-0.9.0.fbworkbench`,72 个文件,不含业务数据,SHA-256 `237cc24ab21ab37c9f7c0ed92915a0e9f4863f4dee98701867f44b4c2b5906c0`。 ### 真实浏览器(空数据目录,1440×900)——55 项检查全部通过 1. 首屏为已完成示例,页面加载只请求本机 API;导出 Markdown(参考来源 [1]–[7])与独立 HTML(表格、`#source-n` 锚点)并核对文件内容;点击报告中的 [4] 定位并展开来源 [4]。 @@ -56,3 +56,7 @@ App/PlanStage/ExecuteStage/DeerFlowPanel/ReportStage/SourcesPanel/FileMenu/style ## 收尾复核 2026-10-29 重新运行 check 与 53 项应用测试通过。更新安装包,使包内 REQUIREMENTS.md、DESIGN.md、ENGINEERING.md 与最终源码一致;逐文件核对代码和文档,资源声明按模板打包规则规范化。原包留存于本地验收归档。 + +## PR 复核修复 + +2026-10-29 PR #3 的 CI 在 Linux 上失败 2 项:服务停止后复用 keep-alive 连接报 `UND_ERR_SOCKET`,不是 `ECONNREFUSED`,提示只剩错误码。提交 `21c9991` 将 `ECONNRESET`、`UND_ERR_SOCKET` 解释为服务刚重启或已停止并给出下一步,拒绝连接改用从未连接过的端口测试。check 与 53 项应用测试通过,按该源码重新打包,SHA-256 已更新为上方数值。 diff --git a/workbenches/68-deerflow/acceptance-evidence.json b/workbenches/68-deerflow/acceptance-evidence.json index 69f74be..0743e49 100644 --- a/workbenches/68-deerflow/acceptance-evidence.json +++ b/workbenches/68-deerflow/acceptance-evidence.json @@ -21,7 +21,7 @@ "package": { "path": "artifacts/deerflow-studio-0.9.0.fbworkbench", "files": 72, - "sha256": "f785d7207339bf0db288b71db1d61fc2c595e3380fb862358be5f9f4641b508b" + "sha256": "237cc24ab21ab37c9f7c0ed92915a0e9f4863f4dee98701867f44b4c2b5906c0" }, "recoveryExportImportReload": { "passed": true,