lhl
a16996b377
fix(frontend): 拆分 chat.html 内联 JS 到 chat.js + 恢复 UI 业务逻辑
背景:上一轮 chat.html 拆分 CSS 到 chat.css 时(commit 561f7ee),
误把行 509-1180 的整段内联 <script>(约 670 行 UI 业务逻辑)当 CSS 一起删了。
同时 rm 掉了 chat.js。导致 chat.html 引用 chat.js 404,所有 UI 交互失效:
- 侧边栏折叠按钮:click 监听丢失
- 项目下拉 / 抽屉打开:openProjectDrawer 调用丢失
- 上传 / 发送 / 输入框:所有 addEventListener 丢失
- RAG 开关 / 影响调查按钮:监听丢失
本 commit 恢复所有 UI 业务逻辑(从 git 历史 520c9e2 拿原 chat.html 内容):
变更:
- 新增 src/genesis/server/static/chat.js(670 行,含 28 个函数 / 1 个 IIFE)
- addMsg / esc / showTyping / api
- refreshSessions / deleteSession / loadProjects
- applyProjectContext / renderProjectSwitcher / toggleProjectSwitcher
- openProjectDrawer / closeProjectDrawer / loadDrawerForm
- drawerSnapshotNow / isDrawerDirty / guardDrawerDirty
- clearPfInvalid / flagPfInvalidByMessage / renderDrawerList
- saveDrawerProject / deleteDrawerProject / toggleSidebar
- updateUploadBar / renderEmptyOrWelcome
- newSession / loadSession / send
- readRagFlag / writeRagFlag / refreshRagStats / updateImpactButton
- pickExt / projectHasPrefixedType
- 启动 IIFE:恢复侧边栏折叠态 + 加载项目 + 恢复上次会话
- chat.html +1 行:<script src="/static/chat.js" defer></script>
- defer 保证 DOM 解析完成后执行
- 放在 chat_ws.js 之后(依赖 GenesisState / GenesisWS 全局)
零行为变更:JS 内容逐行恢复,仅拆出到独立文件。
chat.js 不动 chat_state.js / chat_ws.js(保持职责单一)。
验证(serve --fake @ http://127.0.0.1:8000):
- GET /static/chat.js -> 200 text/javascript; charset=utf-8 (33286 bytes)
- GET /static/chat.css -> 200 text/css; charset=utf-8 (20803 bytes)
- GET /static/chat_state.js -> 200 text/javascript; charset=utf-8
- GET /static/chat_ws.js -> 200 text/javascript; charset=utf-8
- GET / HTML 含 chat.js defer 引用 -> True
2026-08-31 06:36:45 +08:00
..
2026-08-30 21:16:07 +08:00
2026-08-29 11:58:38 +08:00
2026-08-30 22:51:40 +08:00
2026-08-31 06:36:45 +08:00
2026-08-31 06:36:45 +08:00