From 36dbdb2dda3a93ad9fd32772b4a88c3ae919e892 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Sun, 7 Jun 2026 19:35:01 +0800 Subject: [PATCH] =?UTF-8?q?refactor(dev):=20=E5=89=8D=E7=AB=AF=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E5=8C=96=20Step=202=20=E2=80=94=20=E6=8A=BD=E5=87=BA?= =?UTF-8?q?=20embed.js(iframe=20=E6=A8=A1=E5=BC=8F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 父页面经 postMessage 推 token 进入应用 + 401 重签(原 main 1147–1209 + 顶层 _embedInitialTaskHandled 一次性标志)→ embed.js(75 行)。 - 导出 embedInit(boot 调)+ embedPostToParent / embedShowWaiting (auth 的 logout 在 embed 下通知父页面/显示等待态)—— 后两个从 main 迁出后,auth.js 对它们的 import 从 ./main.js 改指 ./embed.js (auth 仍从 main import enterApp)。 - 反向 import main glue enterApp / loadTaskList / selectTask。 main↔embed、auth↔embed 均运行时调用环,安全。 main.js 删至 1154 行(2719 起,已搬出约 58%)。node 全检过、 import/export 一致性过、静态测试 2 过。剩 main 内:enterApp glue + tasks(列表/选择/渲染消息)+ stream(发送/SSE)+ boot + Esc 关栈。 Co-Authored-By: Claude Opus 4.8 (1M context) --- PROGRESS.md | 3 +- web/static/js/auth.js | 3 +- web/static/js/embed.js | 74 ++++++++++++++++++++++++++++++++++++++++++ web/static/js/main.js | 68 +------------------------------------- 4 files changed, 79 insertions(+), 69 deletions(-) create mode 100644 web/static/js/embed.js diff --git a/PROGRESS.md b/PROGRESS.md index d22e042..0ea3cb3 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -2,7 +2,7 @@ > 配合 `DESIGN.md`。本文件只记 phase 状态、决策偏差、文件量、下一步。每条 1-2 句:做了啥 + 关键判断;细节查 `git log` / `git diff` / `DESIGN §7.9`。 -最后更新:2026-06-07(前端模块化 Step 2:抽出 … / media / newtask.js) +最后更新:2026-06-07(前端模块化 Step 2:抽出 … / newtask / embed.js;main 1154 行) --- @@ -23,6 +23,7 @@ ### 2026-06-06 +- **前端模块化 Step 2:抽出 `embed.js`(iframe 模式)**:父页面经 postMessage 推 token 进入应用 + 401 重签(原 main.js 1147–1209 + 顶层 `_embedInitialTaskHandled` 一次性标志)→ `embed.js`(75 行)。导出 `embedInit`(boot 调)+ `embedPostToParent`/`embedShowWaiting`(auth 的 logout 在 embed 下通知父页面/显示等待态)——后两个从 main 迁出后,`auth.js` 对它们的 import 从 `./main.js` 改指 `./embed.js`(auth 仍从 main import enterApp)。反向 import main glue `enterApp`/`loadTaskList`/`selectTask`。main↔embed、auth↔embed 均运行时调用环,安全。main.js 删至 **1154 行**(2719 行起,已搬出约 58%)。node 全检过、import/export 一致性过、静态测试 2 过。剩 main 内:`enterApp` glue + tasks(列表/选择/渲染消息)+ stream(发送/SSE)+ boot + Esc 关栈,待最后一并处理 tasks+stream。 - **前端模块化 Step 2:抽出 `newtask.js`(新建任务弹框)**:任务名 / 工作目录(新建 sentinel 或复用已有 + 二级 input 联动)/ 描述 / skill / 模型 select,提交 `POST /v1/tasks`(原 main.js 1146–1320)→ `newtask.js`(186 行)。顶层自绑 hd-new 打开 / nt-go 提交 / 各 input 联动;唯一对外导出 `loadFolderSuggestions`(供 main enterApp 初始化顶部 filter-wd、files 复制/移动后刷目录)——它从 main 迁来后,`files.js` 对它的 import 从 `./main.js` 改指 `./newtask.js`。反向 import main glue `loadModels`(加 `export`)/`loadTaskList`/`selectTask` + `logout`(auth)。main.js 删至 1220 行。node 全检过、import/export 一致性校验过、私有符号清零。 - **前端模块化 Step 2:抽出 `media.js`(工具活动标签 + artifact 抽取/渲染)+ 收敛 downloadFile 反向依赖**:对话内 `toolActivityLabel`(工具调用→中文活动名)、`extractArtifactRels`(从结果文本/working_dir 提产物路径)、`extractMediaBanner`(seedream/seedance 横幅)、`renderArtifactBarHtml`(产物 chip 条 + 图/视频内联占位)、`upgradeMediaArtifacts`(占位异步 fetch blob 填 ``/`