# 豆包式布局修复计划(崩溃 + 布局) 日期:2026-09-12 ## Fix A — 修复 `Cannot set properties of null`(新旧资源缓存错配) 根因:`/` 返回启动时缓存、无缓存头的 HTML;静态资源无版本号 → 浏览器缓存旧 chat.js/chat.html 之一后新旧混用,`getElementById(...)` 为 null 时 `.textContent` 抛错。 修复: 1. `app.py`:启动时按 static 文件 `st_mtime_ns` 计算 `_ASSET_VER`,注入 `chat.html` 的 `__ASSET_VER__`;`index()` 返回 `HTMLResponse(..., headers={"Cache-Control":"no-store","Pragma":"no-cache"})`。 2. `chat.html`:4 个资源 URL 加 `?v=__ASSET_VER__`。 3. `chat.js`:新增 `setText(el, v)`,关键 `.textContent` 赋值 null 安全(防白屏)。 4. 部署后强刷一次清掉旧 HTML 缓存。 ## Fix B — 布局(去线 / 铺满 / 图标发送 / 省空间) - `#composer`:去 `border-top`、背景透明、内边距收紧(与聊天区无缝)。 - `#composer-inner` / `#composer-toolbar` / `#upload-panel`:去 880px 限宽,输入框铺满右侧。 - `#send`:SVG 上箭头图标 + 40px 圆形按钮。 - `header`:高度 56→48、padding 收紧。 - 输入框改 `