zcbot/web
caoqianming 72ae41e122 refactor(dev): 前端模块化 Step 1 — dev.html 拆零构建 ES module(叶子优先)
dev.html 原 4087 行单文件原生 JS。本步只做"拆文件"(路径 1),
不引框架、不改逻辑——纯剪切 + import 连线。

抽出 4 个无依赖叶子到 web/static/js/:
- state.js   state 单例 + LS_* + EMBED*
- format.js  escapeHtml / humanSize / fmtTokens / usage 系列等纯格式化
- dom.js     $ + 浮层菜单 showMenu/hideMenu(import escapeHtml)
- api.js     api() Bearer 封装(import state)
- markdown.js renderMd / highlightIn(依赖 vendor 全局)

剩余主体(login→boot)落 main.js 并 import 叶子;dev.html 内联大
<script> 换成一行 <script type="module" src="js/main.js">,降到 1121 行。

app.py 加 mimetypes.add_type("text/javascript", ".js") 兜底,防 Windows
把 .js 判成 text/plain 致 module 被浏览器拒执行(本机实测本就 OK,纯防御)。

校验:6 模块 node --check 全过 + 无私有符号泄漏到 main。
后续 Step 2+ 再从 main.js 把 login/tasks/stream/files/preview 逐个剥成独立模块。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 16:55:20 +08:00
..
static refactor(dev): 前端模块化 Step 1 — dev.html 拆零构建 ES module(叶子优先) 2026-06-05 16:55:20 +08:00
__init__.py core(§7 Phase G G1): Web UI 脚手架 + cli.py web 子命令 2026-05-14 13:37:54 +08:00
app.py refactor(dev): 前端模块化 Step 1 — dev.html 拆零构建 ES module(叶子优先) 2026-06-05 16:55:20 +08:00
auth.py feat(dev): 顶栏自助改密码 + 选入按钮文字改图标(防换行) 2026-06-05 15:07:21 +08:00
broker.py core(0004): 删 runs / usage_events 表 + cancel/SSE 改 task-level 2026-05-18 11:05:35 +08:00
sinks.py core(0004): 删 runs / usage_events 表 + cancel/SSE 改 task-level 2026-05-18 11:05:35 +08:00