feat: simplify focus session URL handling#421
Conversation
Adds URL scheme endpoint to receive session focus requests: - URL format: enso://focus?session=<sessionId>&cwd=<path> - Parses focus URLs in main process via parseFocusUrl() - Sends APP_FOCUS_SESSION IPC to renderer - Renderer uses useFocusSession hook to: - Focus session by sessionId via agentSessionsStore - Switch to chat tab - Fallback to worktree switch if only cwd provided - Silently ignore if session not found Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove cwd parameter from focus URL parsing, now only sessionId is required. When switching sessions, use the session's own cwd instead of accepting an override. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Claude finished @zwmmm's task in 4m 7s —— View job 🔍 代码审查报告
📋 审查进度
📊 审查概览 · 一目了然
🏆 代码质量评分📋 问题分布🎯 关键发现
✨ 本次 PR 亮点
🐛 问题清单与修复指南 · 📋 点击展开查看📋 👆 点击此处展开详细问题列表 (共 6 个问题)
|
| 🎯 优先级 | 🚨 严重 | ⚡ 轻微 | 📈 总计 | |
|---|---|---|---|---|
| 🔴 P0 | 0 | - | - | 0 个 |
| 🟡 P1 | - | 2 | - | 2 个 |
| 🔵 P2 | - | - | 4 | 4 个 |
| 📊 合计 | 0 | 2 | 4 | 6 个 |
🎯 合并决策建议
📋 合并评估结果
| 📊 评估维度 | ⭐ 得分 | 🎯 状态 | 💭 说明 |
|---|---|---|---|
| 🔐 安全性 | 10/10 | ✅ 通过 | session ID 先查 store 再用,无注入风险 |
| 📊 代码质量 | 8/10 | ✅ 良好 | 遵循已有模式,细节有优化空间 |
| ⚡ 性能影响 | 10/10 | ✅ 无影响 | 轻量监听器,无额外订阅 |
| 🛠️ 功能完整性 | 8/10 | ✅ 完整 | 简化后的 API 清晰合理,缺失用户反馈 |
| 🧪 测试覆盖 | 6/10 | 纯函数 parseFocusUrl 未覆盖测试 |
📈 综合评分: 42/50 分 · 等级: 良好
🚦 最终建议
✅ 建议合并 (条件性)
📝 详细理由:
本次 PR 的核心改动(简化 focus URL 处理、以 session.cwd 作为权威源)方向正确,代码结构清晰,与项目已有的
APP_OPEN_PATH处理模式高度一致,核心逻辑经验证无安全与性能问题。🟢 无严重问题、无破坏性变更
🟡 文档与实现存在明显出入 (#1),建议本版本修复以避免后续维护混乱
🟡 缺少用户反馈机制 (#2),属于小的体验问题
🔵 其余问题均为打磨型优化,可后续处理
🎯 具体行动建议:
-
合并前建议处理:
- fix: 彻底修复终端渲染问题(花屏和字体设置闪烁) #1 同步更新
docs/superpowers/specs/2026-04-10-url-scheme-focus-session-design.md与代码一致 - 修复 Windows 平台兼容性问题 #2 为未找到会话的情况添加
console.warn
- fix: 彻底修复终端渲染问题(花屏和字体设置闪烁) #1 同步更新
-
后续版本可改进:
- fix(terminal): 修复终端标签快捷键无法使用的问题 #3
sendFocusSession/sendOpenPath补充restore()处理最小化场景 - feat(source-control): 新增类 VSCode 风格的源代码管理面板 #4 调整
FocusSessionParamsinterface 声明位置 - feat(terminal): 添加终端渲染器设置,修复 WebGL 花屏问题 #5 补充
parseFocusUrl单元测试 - Feat/wsl support #6 统一 pending 状态的对称清理策略
- fix(terminal): 修复终端标签快捷键无法使用的问题 #3
· feat/focus-session
Remove cwd parameter from focus URL parsing, now only sessionId is required.
When switching sessions, use the session's own cwd instead of accepting an override.