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
1 change: 1 addition & 0 deletions emrg/server/evolution_prompt.md
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,7 @@ When reading rants, follow these rules:
> - GUI per-session chat-view containers (#634 GUI 多会话 rant 2026-08-10T15:07:19 P3 slice 2:每会话一个 `.session-view` 容器 + display 切换(浏览器 tab 效果)——`#chat-view` 变绝对定位包装(overflow:hidden),`.session-view` = inset:0 滚动容器(display:none 除非 `.active`);app.js `ensureSessionView(sid)`(wrapper 内按 dataset.sid 查找/建容器 + 幂等 registerContainer,不依赖 getElementById——测试沙箱对未知 id 返新 mock 且 mock .id 不入 attributes)`activateSessionView(sid)`(去旧加新 .active + scrollToBottom,导出供测试);`switchSession`/`newSession` 改为激活容器(**不再 Chat.clear()**——切走保留滚动/草稿/工具卡片/流式现场);`deleteSession` unregister+移除被删容器;`/clear`+`/rewind` 定向 `Chat.clear(state.sessionId)`(无 sid 只清激活容器,后台容器保留);`updateEmptyState` 查**激活会话**容器(wrapper 恒含 session-view 子节点不能数 wrapper);chat.js `chatContainer(sid)` 回退链=已注册容器→激活会话容器(无 sid 事件落激活会话,P4 过渡)→默认 #chat-view;CSS `#chat-view > *:not(.session-view)` 防滚动条内缩到 760px 中栏 + 媒体查询 padding 移入 .session-view;+3 测试 renderer.smoke 40→43 + mock innerHTML setter 忠实化("" 清 children,Chat.clear 依赖);GUI 150→153 三文档同步;680 pytest 全绿;P3 剩余=事件路由终态,P4-P6 待续) ✅
> - GUI disconnected per-sid isolation (#636 GUI 多会话 rant 2026-08-10T15:07:19 P3 finalize:disconnected 事件按 sid 隔离——sidState 条目加 `disconnected` 标记 + 注册容器 `.disconnected` 类(`Chat.hasContainer(sid)` 守卫,防 chatContainer 回退链误标激活容器);**全局横幅/红点仅激活会话(或无 sid 单会话过渡期)断连显示**,后台会话断连不打扰全局 UI(rant 验收"断一条不影响其他会话");`status` connected 清全部断线标记 + 容器类;switchSession 切入断线会话提示 i18n `app.sessionDisconnected`(G89 输入条仍可用);CSS `.session-view.disconnected` 视觉(dim + hatch);+3 测试 renderer.smoke 43→46、GUI 153→156 三文档同步;680 pytest 全绿;P3 完成) ✅
> - GUI open-sessions state + gui_state.json (#637 GUI 多会话 rant 2026-08-10T15:07:19 P4 slice 1 写路径:新 `emrg/gui/gui-state.js`(纯 Node)——`guiStatePath`(~/.emrg/gui_state.json)+ `sanitizeOpenSessions`(跳过缺 sid/projectPath 条目、lastActive 倒序、上限 20,读写共用)+ `saveGuiState`(.tmp+rename 原子写,镜像 #569);main.js `openSessions: Map<sid,{projectName,projectPath,lastActive}>` 簿记 + touchOpenSession/markSessionActive/防抖 1s 写盘 + 退出冲刷;**switchSession 不再关闭旧会话连接**(多会话保持,浏览器 tab 语义——关闭走新 `emrg:closeSession` IPC:断开+移除+持久化**保留磁盘数据**,与 delete_session 区分);`emrg:getOpenSessions` IPC(跨项目打开列表,slice 2 侧边栏数据源);sendMessage 标记激活 + 事件桥 done/delta 刷新 lastActive(conn-manager onOpen 钩子加 projectPath 参);deleteSession/newSession 同步簿记;+7 测试 gui-state.test.js;GUI 153→163(#636 并入后 renderer.smoke 46 + 7 gui-state,计数冲突解到实测 163)三文档同步;680 pytest 全绿;P4 剩余=slice 2 sidebar + 启动恢复) ✅
> - GUI open-sessions sidebar + gui_state restore (#639 GUI 多会话 rant 2026-08-10T15:07:19 P4 slice 2 读路径/侧边栏:main.js `restoreOpenSessions`(init 读 gui_state.json → 重开有效条目 cap 20 + resume 重订阅 → 失效跳过 + 重写盘 → activeSid 恢复/回退最近有效 → 窗口标题同步)+ `broadcastOpenSessions`(打开/激活/关闭/删除/新建每次变更推 `open_sessions` 事件给 renderer)+ init 返回 `open_sessions` + `active_sid`(renderer 直接采用恢复激活会话,免 switchSession IPC 往返);sidebar.js `renderOpenSessions`(侧边栏顶部跨项目打开会话区:项目名/会话标题、lastActive 倒序、激活高亮、点击切换、右键关闭保留数据/重命名/删除)+ highlight 扩展覆盖;app.js `state.openSessions` + `open_sessions` 事件 + `closeOpenSession`(断开+释放容器+保留磁盘数据;关激活会话 → 切最近打开会话否则新建)+ showOpenSessionsMenu;index.html `#open-sessions` + i18n zh/en + CSS;+4 测试 renderer.smoke 46→50 + mock 升级(querySelectorAll DFS 类选择器 + classList.toggle 忠实 force);GUI 163→167 三文档同步;680 pytest 全绿;P4 完成,P5-P6 待续) ✅

#### 2.2 Latest GitHub code changes

Expand Down
Loading