fix(sandbox): 容器装 fonts-noto-color-emoji 修 mermaid 图满图豆腐块 + bump 0.12.9

模型生成的 mermaid 节点标签常前缀 emoji 图标(🌐🔥🛡 等),容器只装了
CJK 字体缺 emoji 字体,chromium 渲染时每个 emoji 都成空心方框 □。加
fonts-noto-color-emoji(+~10MB)并 fc-cache 刷索引即可正常出图标。
纯增量容器改动,需重建镜像 + 重启 per-user 容器生效。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
caoqianming 2026-06-15 09:21:39 +08:00
parent 977923b6cf
commit 314a05e111
3 changed files with 13 additions and 5 deletions

View File

@ -2,7 +2,7 @@
> 配合 `DESIGN.md`。本文件只记 phase 状态、决策偏差、文件量、下一步。每条 1-2 句:做了啥 + 关键判断;细节查 `git log` / `git diff` / `DESIGN §7.9` > 配合 `DESIGN.md`。本文件只记 phase 状态、决策偏差、文件量、下一步。每条 1-2 句:做了啥 + 关键判断;细节查 `git log` / `git diff` / `DESIGN §7.9`
最后更新:2026-06-12(双层记忆升级为 agent 自管 + 前端只读记忆面板) 最后更新:2026-06-15(sandbox 装 emoji 字体修 mermaid 豆腐块)
--- ---
@ -21,6 +21,11 @@
## 已完成关键能力 ## 已完成关键能力
### 2026-06-15 / sandbox 装 emoji 字体:修 mermaid 图满图豆腐块
- 现象:模型生成的 mermaid 架构图里几乎每个节点标签前缀的 emoji 图标(🌐🔥🛡 等)全渲染成空心方框 □。根因不在 mermaid 语法 / 布局 ── `deploy/sandbox/Dockerfile` 只装了 `fonts-noto-cjk` + `fonts-wqy-microhei`(中文不豆腐),**缺 emoji 字体**,chromium 渲染时找不到 emoji glyph 就用 tofu 占位。
- 修法:Dockerfile 字体安装行加 `fonts-noto-color-emoji`(+~10MB),与 CJK / WQY 同 `fc-cache -f` 刷索引。chromium 支持 COLR/CBDT 彩色 emoji,fontconfig fallback 即正常出图标。纯增量容器改动,不碰对外契约。**需重建 sandbox 镜像 + 重启 per-user 容器生效**。bump 0.12.8 → 0.12.9。
### 2026-06-15 / 左栏任务筛选区默认折叠 ### 2026-06-15 / 左栏任务筛选区默认折叠
- 接 2026-06-13「筛选区可折叠」一条:把默认态从展开改为**折叠**(进页面只见「筛选 ▸」一行,点开才展开)。偏好仍持久化 —— 用户显式展开过(`zcbot.task-filters-collapsed` 存 `"0"`)才默认展开,否则一律折叠。改动:`web/static/js/chat.js`(默认判定 `!== "0"`,onclick 改存 `"1"/"0"`)、`web/static/js/state.js` 注释。bump 0.12.7 → 0.12.8。 - 接 2026-06-13「筛选区可折叠」一条:把默认态从展开改为**折叠**(进页面只见「筛选 ▸」一行,点开才展开)。偏好仍持久化 —— 用户显式展开过(`zcbot.task-filters-collapsed` 存 `"0"`)才默认展开,否则一律折叠。改动:`web/static/js/chat.js`(默认判定 `!== "0"`,onclick 改存 `"1"/"0"`)、`web/static/js/state.js` 注释。bump 0.12.7 → 0.12.8。

View File

@ -1,3 +1,3 @@
# zcbot 版本号单一事实源:web/app.py 的 FastAPI version、/healthz 返回、前端展示都引这里。 # zcbot 版本号单一事实源:web/app.py 的 FastAPI version、/healthz 返回、前端展示都引这里。
# 改版本只动这一行。 # 改版本只动这一行。
__version__ = "0.12.8" __version__ = "0.12.9"

View File

@ -75,15 +75,18 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
chromium nodejs npm \ chromium nodejs npm \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
# 中文字体 ── 不装则 matplotlib / mermaid(chromium) / render_icon 出的 PNG 里 # 中文字体 + emoji 字体 ── 不装则 matplotlib / mermaid(chromium) / render_icon 出的
# 中文全是方块(豆腐块 □)。装两套: # PNG 里中文 / emoji 全是方块(豆腐块 □)。装三套:
# - fonts-noto-cjk: 出版级字形,matplotlib 出版图 / mermaid 节点首选(+~330MB) # - fonts-noto-cjk: 出版级字形,matplotlib 出版图 / mermaid 节点首选(+~330MB)
# - fonts-wqy-microhei: 兜底,匹配 style.py 候选 'WenQuanYi Micro Hei' # - fonts-wqy-microhei: 兜底,匹配 style.py 候选 'WenQuanYi Micro Hei'
# + render_icon.py 引用的 wqy-microhei.ttc 路径(+~5MB) # + render_icon.py 引用的 wqy-microhei.ttc 路径(+~5MB)
# - fonts-noto-color-emoji: 模型常在 mermaid 节点标签前缀 emoji 图标(🌐🔥🛡 等),
# 缺此字体则 chromium 渲染时每个 emoji 都成 □,满图豆腐块(+~10MB)。chromium
# 支持 COLR/CBDT 彩色 emoji,fontconfig fallback 到它即可正常出图标。
# fc-cache 刷 fontconfig 索引 ── chromium 经 fontconfig 选字必需;matplotlib 走自家 # fc-cache 刷 fontconfig 索引 ── chromium 经 fontconfig 选字必需;matplotlib 走自家
# font_manager 扫 /usr/share/fonts,运行时首次用图自动建缓存,无需在此处理。 # font_manager 扫 /usr/share/fonts,运行时首次用图自动建缓存,无需在此处理。
RUN apt-get update && apt-get install -y --no-install-recommends \ RUN apt-get update && apt-get install -y --no-install-recommends \
fonts-noto-cjk fonts-wqy-microhei fontconfig \ fonts-noto-cjk fonts-wqy-microhei fonts-noto-color-emoji fontconfig \
&& fc-cache -f \ && fc-cache -f \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*