cloud-drive-renamer/progress.md
Zain 1176d08224 feat(onedrive): 新增 OneDrive 个人版支持,更新第 13 个平台文案与键盘隔离
新增 OneDrive 个人版适配器、MAIN 桥接、名称校验与冲突检测、目录身份与分页遍历。同步更新三语简介、商店素材、仓库描述及
manifest 域名注册。修复面板键盘冒泡至宿主页面的隔离与工具栏 Escape 作用域。修正 OneDrive 同步结果语义为手动刷新提示,
避免误报同步失败。补全对应单测与浏览器验收脚本。
2026-09-27 17:31:44 +08:00

11 KiB

Progress

  • 2026-03-25:收到新任务——参考 docs/renamer.js 分析当前项目是否仍有可优化空间。

  • 2026-03-25:按 planning-with-files 要求执行 session catchup,确认项目根目录已有 planning files,可直接复用。

  • 2026-03-25:阅读 docs/renamer.js、README.md、manifest.json,确认油猴脚本的平台范围更广,而当前扩展的工程化实现更强。

  • 2026-03-25:查看 src/rules/rule-factory.ts / src/types/rule.ts / src/rules/episode-extract.ts / src/core/executor.ts / src/content/components/file-selector-panel.ts / src/content/components/config-panel.ts,整理当前项目的规则能力、执行器能力与 UI 能力。

  • 2026-03-25:识别对比重点:平台覆盖、剧集提取交互、版本更新通知、页面注入适配策略、可恢复性与产品化细节。

  • 2026-03-25:记录一个工具异常:Serena find_symbol 错误指向旧路径 /Users/lhly/WebstormProjects/panku,本次分析已改用文件读取与符号概览方式继续推进。

  • 2026-03-25:完成 src/types/rule-preset.ts 与 src/utils/rule-presets.ts,实现最近使用与命名模板的数据结构、存储、覆盖/删除逻辑,并补充 tests/unit/rule-presets.test.ts。

  • 2026-03-25:完成 config-panel 的规则模板区与剧集提取辅助区,实现应用模板、保存模板、删除模板、样本选择、目标字段切换、整段/片段回填模式切换等交互事件。

  • 2026-03-25:完成 preview-panel / virtual-preview-list / file-selector-panel 的辅助回填接线,实现从预览项整段回填、片段点选、失败项快捷修正、执行成功后自动记录 recent preset。

  • 2026-03-25:补齐 zh_CN / zh_TW / en 新文案,并新增 4 个单测文件覆盖 config-panel、preview-panel、file-selector-panel 的新交互。

  • 2026-03-25:完成验证:npm run typecheck ✅,npx vitest run ✅,npm run lint ✅(仅剩历史 warning)。

  • 2026-03-25:完成下一批失败态增强:右侧预览支持根据 suggestedFailureFileId 自动高亮并滚动定位失败项,且在整段/片段回填成功后清除聚焦态,避免提示残留。

  • 2026-03-25:补充失败态引导文案与测试,验证通过:typecheck ✅,vitest 全量 266 tests ✅,lint ✅(仅历史 warning)。

  • 2026-03-25:已提交第三批改动 2559ef1 feat: 增强剧集提取失败项定位与引导,准备进入下一批优化设计。

  • 2026-03-25:与用户确认下一批方案:右侧预览区顶部增加失败导航条,采用非循环边界禁用策略,并继续复用 suggestedFailureFileId 做高亮与滚动。

  • 2026-03-25:实现右侧预览区顶部失败导航条,支持显示失败总数、当前序号,并通过上一个/下一个按钮切换失败聚焦项。

  • 2026-03-25:完成接线:preview-panel 负责计算 prev/next 目标并派发 episode-assist-focus-failure,file-selector-panel 统一更新 sample 与 suggestedFailureFileId。

  • 2026-03-25:完成验证:npm run typecheck ✅,npx vitest run ✅(36 files / 268 tests),npm run lint ✅(仅历史 warning)。

  • 2026-03-25:与用户确认本批方案:规则模板支持重命名,采用模板项按钮 + prompt 的轻量交互,并沿用现有同名覆盖确认风格。

  • 2026-03-25:实现规则模板重命名:配置面板模板项新增“重命名”按钮,点击后通过 prompt 输入新名称并派发 rename-rule-template。

  • 2026-03-25:完成接线:file-selector-panel 统一处理模板重命名、同名覆盖确认与模板列表刷新。

  • 2026-03-25:完成验证:npm run typecheck ✅,npx vitest run ✅(36 files / 271 tests),npm run lint ✅(仅历史 warning)。

  • 2026-08-15:收到新任务——清理项目内根本没用到的代码,重点避免旧组件/旧入口误导后续开发。初步配置扫描确认 tsconfig 已启用 noUnusedLocals/noUnusedParameters,但文件级死代码仍需人工检查 manifest/vite/customElement/dynamic import 引用。

  • 2026-08-15:Serena 符号与引用搜索初步发现疑似死代码候选:src/content/components/hello-world.ts、src/content/components/progress-dialog.ts、src/content/components/rename-preview.ts 没有生产导入;rename-preview 只被一个 e2e 旧标签检查引用。另发现 src/core/cookie-manager.ts 与 src/types/message.ts 目前仅自身定义,需进一步确认是否历史遗留或保留契约。

  • 2026-08-15:完成死代码清理:删除 hello-world.ts、progress-dialog.ts、rename-preview.ts、cookie-manager.ts、types/message.ts 和旧 tests/e2e/batch-rename.spec.ts;将 extension-loading.spec.ts 从旧 rename-button custom element 断言改为当前 #cloud-drive-renamer-shadow-host / #cloud-drive-renamer-floating-button 注入断言。验证:pnpm run typecheck ✅,相关单测 55 tests ✅,pnpm run lint 0 errors/266 warnings ✅,pnpm run build ✅(375 tests,12 个平台 page-script 产物),Serena 残留引用搜索 0 results。

  • 2026-08-15:独立 reviewer(xiaomi-token-plan-cn/mimo-v2.5)复核无 Critical/Important 问题;按 reviewer 的 Note 同步修正 README 项目结构树,移除已不存在的 message.ts / dialog/,补充当前 runtime-message.ts、诊断 background 模块、conflict-resolution-dialog.ts、episode-extract.ts 等真实文件;最终 pnpm run typecheck ✅。

  • 2026-09-27:开始 OneDrive 可行性调研,已读取规划技能、恢复既有规划文件;初始 git diff/status 无改动。

  • 已完成项目入口、适配接口、manifest 与构建入口初查;浏览器发现已登录的 OneDrive 个人版并完成 DOM/资源元数据只读检查。

  • 浏览器读取元素 ref 过期导致点击失败,未发生云端写入;改为刷新现有 OneDrive 页触发原生列表请求。网络抓取结果解析未取得可用接口记录,改用页面上下文与受控同源只读请求验证。

  • 调研过程中若干猜测路径(src/config、src/constants*、src/popup/index.ts)不存在;已 rg 定位 popup/popup.ts 等实际路径,未修改源码。

  • 扩展 list items 的字段选择与目录过滤组合返回 HTTP 400;已缩小验证范围,回到成功字段集合单独验证 nextLink,不将目录过滤视为已验证。

  • 2026-09-27:OneDrive 调研完成并生成报告;列表两页、contextinfo 与原生列表只读请求验证成功。未执行云端重命名、未修改业务代码;不运行与文档变更无关的构建测试。

  • 2026-09-27:用户要求实施方案后派遣 Luna 实现,已制定个人版 MVP 方案;主代理负责浏览器协议确认和复核,Luna 负责实现和测试。

  • 协议验证:v2读取成功但PATCH写入403;改为SP MERGE FileLeafRef成功204,按GUID读取确认名称与身份;新建的唯一测试文件清理成功200。已将精确契约发送Luna并补充实施方案。

  • 真实协议重命名/撤销往返已通过,专用测试文件均清理。主代理确认本机 Edge 可在临时独立profile加载打包扩展,并准备两页列表+界面执行/撤销的隔离验收脚本;不会读取现有浏览器profile凭据。

  • 初步代码审查已向Luna反馈:避免缓存对象原地改名破坏撤销原名;修正名称/路径长度及保留名校验;Retry-After不可提前重试;面板打开后SPA视图切换和外部移动需拒绝越目录操作。等待修正后统一验收。

  • 修正metadata显式select后,Luna实际adapter+MAIN bridge在真实登录页面完成重命名、原ID详情读取、撤销恢复;原始FileItem对象未被修改,名称/ID全部核验通过。该轮唯一测试文件清理成功200。

  • 完整 pnpm run build 通过:48个测试文件/389项测试、typecheck、Vite全部通过;lint无error,新增单测cast warning在收尾中移除。

  • 打包扩展在独立Edge临时profile完成模拟OneDrive界面验收:两页文件加载、前缀批量改名、撤销共4次写入,0页面异常。真实站点验证与mock界面验收分别记录,未将临时注入冒充用户浏览器已安装扩展验收。

  • 最后核验真实OneDrive中本次临时测试文件残留为0,刷新页面已清除临时验证代码。实现及验证未修改用户原有文件。

  • Luna收尾完成:验收脚本已保存到 scripts/verify-onedrive-extension.cjs,新增 pnpm run verify:onedrive,README说明范围及浏览器配置。该命令复跑通过(2文件、4次改名/撤销、第二页确认、0页面异常);相关17项单测和测试文件ESLint通过。新增any warning已消除,生成时间戳无关差异已还原;最终 git diff --check 通过。全部阶段完成,未commit或push。

  • 用户反馈已重载扩展,但在重命名面板打字触发OneDrive快捷键;开始检查Shadow DOM事件边界和宿主监听阶段,保留全部已有OneDrive实现。

  • 已实现面板键盘冒泡隔离及工具栏Escape作用域修复;新回归单测5项通过。首轮焦点断言过早于工具栏requestAnimationFrame,改为等待下一帧后通过。

  • 扩展验收改用pressSequentially真实键盘事件,并注入会抢焦点的宿主快捷键监听;旧dist按预期失败(输入值为空),证明测试覆盖到此前fill未覆盖的干扰。开始构建修复后的dist后复验。

  • 修复后完整构建通过:49个测试文件/394项测试,typecheck、Vite通过;lint 0errors/266项既有warnings。已恢复版本文件的无关生成时间戳。

  • pnpm run verify:onedrive通过:keyboardIsolation=true,2个文件、4次改名/撤销、分页通过、0页面异常。该测试已证实旧dist失败、新dist通过;最终diff空白检查通过。未提交或推送。

  • 用户反馈执行成功后红色同步错误;已定位为OneDrive固定手动刷新返回值与通用UI状态映射问题。修复状态表达,不更改云端文件或自动重载用户页面。

  • 已增加manual-refresh适配结果和refresh-required中性提示,补齐三语文案,OneDrive不再返回硬编码英语错误。新增适配器/状态映射/渲染与错误重试测试,相关16项测试通过;正在完整构建并运行打包扩展验收。

  • 完整build通过:50个测试文件/399项测试、typecheck和Vite通过,lint 0errors/266项既有warnings。打包扩展mock浏览器验收通过:manualRefreshNotice=true、keyboardIsolation=true、2文件4次改名/撤销、0页面异常。已恢复无关生成时间戳并通过diff空白检查;未提交或推送。

  • 用户要求更新扩展商店文案;已定位两份商店listing及三语extDescription,当前仍写12个平台、6类规则且未提及OneDrive。

  • Chrome/Edge中英文商店文案、Edge补充资料及两套三语简介已更新;平台数/权限说明、JSON、132字符长度和dist实际简介校验通过,Vite构建通过。纯文案变更未重复运行全量业务测试;未提交商店后台。

  • 用户明确要求撤回错误远程版本、修改并提交推送。采用保留本地备份分支后amend最新提交、精确force-with-lease原子更新main及标签,保留原功能变更。

  • package.json、manifest.json、运行时常量及商店待发布版本已同步2.0.1;完整构建通过,399项测试通过,dist/manifest.json为2.0.1。Release工作流新增标签与源码版本校验,v2.0.1接受、v2.0.0拒绝验证通过。