Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions emrg/server/evolution_prompt.md
Original file line number Diff line number Diff line change
Expand Up @@ -381,6 +381,8 @@ When reading rants, follow these rules:
> - daemon remove_project command (#619 GUI 多会话 rant 2026-08-10T15:07:19 P1:daemon 侧改动极小=仅新增 `remove_project` 命令——删 projects.yml 中 name 匹配条目(原子写,镜像 `_touch_project` 读路径),**磁盘 `<path>/.emrg/sessions/` 数据保留**(后续 `_touch_project` 自动重注册);响应 `{"type":"project_removed","removed":bool,"name":...}`,失败带 `error` key(文件缺失/损坏 YAML/非 list/未知 name/写失败);`_process_message` dispatch(空 name → error);+5 测试(删除匹配/未知 name 文件不动/磁盘数据保留/无文件不崩/损坏 YAML 报错)→ 合并 #618 计数冲突后 675→680 全绿;三文档计数同步;rant 分阶段 P1-P6,P2 起为 GUI 侧 connManager 多连接改造) ✅
> - DaemonClient ensureConnected skipStart option (#623 GUI 多会话 rant 2026-08-10T15:07:19 P2 slice 1:connManager 将独占 daemon 生命周期,DaemonClient 实例只连**已运行** daemon——`ensureConnected({ skipStart = false } = {})` 默认不变;skipStart+无 port 文件 → 抛 `daemon not running (skipStart)` 不 spawn;skipStart+stale port+daemon 死(G43 路径)→ 抛 `daemon unreachable (skipStart)` **不删 port 文件不重拉**(port 文件保留供 connManager 重启恢复检测);+2 测试 daemon_client 29→31、GUI 111→113 三文档同步;680 pytest 全绿) ✅
> - ConnManager open/close/get (#624 GUI 多会话 rant 2026-08-10T15:07:19 P2 slice 2:新模块 `emrg/gui/conn-manager.js`——connManager=daemon 生命周期唯一 owner + 每会话一条独立 DaemonClient 连接(对齐 TUI 多开:每 TUI 一条连接;会话间天然隔离无事件路由);`open(sid, projectPath)`=引导 client `ensureConnected()`(spawn 或直连后关闭)→ 新 DaemonClient `ensureConnected({skipStart})` → `resume_session(sid, cwd=projectPath)` 自动订阅 → 存储,已打开 sid 复用不重复建连;`close(sid)`/`get(sid)`/`all()`/`closeAll()`;main.js 未改线(单会话无回归目标随 rewire 片落);+5 测试 conn-manager、GUI 111→116 三文档同步;680 pytest 全绿;rant 分阶段 P1-P6,P2 剩余=main.js rewire + restart recovery,P3-P6 待续) ✅
> - DaemonClient per-connection delta batching (#626 GUI 多会话 rant 2026-08-10T15:07:19 P2 slice 3:delta 批量从 main.js 共享态移入**每条 DaemonClient 实例**——构造参数 `deltaBatchMs`(默认 0=每帧即时发,既有行为不变);`_deltaBuf/_deltaTimer/_flushDeltaBuf()` 实例化,`message_delta` 帧入缓冲按 batch 合并成 `chunks` 形状一次发出(与 G122 16ms 同形),终态(done/error/cancelled)与断连前强制冲刷保序(rant 14:11 孤儿节点教训);多会话各自独立缓冲互不干扰;+6 测试 daemon_client 31→37、GUI 118→124 三文档同步;680 pytest 全绿) ✅
> - ConnManager daemon restart recovery (#627 GUI 多会话 rant 2026-08-10T15:07:19 P2 slice 4:短窗口内**所有**打开会话连接同时断 → 判定 daemon 重启 → `recoverAll()` 全量恢复——close 全部 → 按 `open()` 序列(引导→skipStart→resume_session 重订阅)逐会话重开,单会话失败跳过不阻塞其余;单条断 → 不触发全量恢复(留给后续片独立退避);`_restartDetected()` 检查 `_disconnects`(sid→最近断连时间戳)全部落在 `restartWindowMs`(默认 1000ms 可配)窗口内;`_recovering` 守卫防 close→disconnect→recoverAll 递归;+3 测试 conn-manager 5→8(全断自动恢复/单断负态/recoverAll 重开重订阅含 stale 连接排除)、GUI 121→127(合并 #626 后 124→127 文档计数冲突化解)三文档同步;680 pytest 全绿;P2 剩余=main.js rewire + single-conn backoff,P3-P6 待续) ✅

#### 2.2 Latest GitHub code changes

Expand Down
Loading