diff --git a/.workbuddy/memory/2026-10-23.md b/.workbuddy/memory/2026-10-23.md new file mode 100644 index 0000000..3aeda30 --- /dev/null +++ b/.workbuddy/memory/2026-10-23.md @@ -0,0 +1,16 @@ +# 2026-10-23 + +## 单题分享卡二维码提到 5px/模块(`310f851`) + +用户决定「单题一起做」,同时否掉方案 5(结果落盘/R2)——理由:功能使用率不高,不值得大动干戈。 + +- 单题卡卡片 210×255 放不下 5px 模块(37 模块要 185px):`QQRCardW` 236、`QQRCardH` 300、 + `QQRSize` 190。X 由 `QContentX+QContentW-QQRCardW` 派生 → 679,Y 居中 → 120。 +- `QTextMaxW` / `qLeftClip` 都从 `QQRCardX` 派生,左栏自动收窄 26px,无需另改。 +- 抽了 `drawQuestionQRCard(canvas, user, question, logo, fontCtx)`(handler 只剩调用), + 这样测试能直接渲染整卡:`TestQuestionQRCardLayout` 断言正方形 / 模块≥5 / 四边留白≥20 / + 居中≤1px,`TEST_PREVIEW=1` 出 `outputs/sharecard-preview/question-card.png`。 +- 实测:二维码 185px、居中偏差 0.5px、上下留白 34px;gozxing 在 960/720/480/320 全通过。 + 变异验证:`QQRSize` 改回 150 → "QR module is 4px, want >=5" FAIL。 +- 未做(用户明确不要):分享卡结果落盘/上 R2。进程内 LRU 仍是 16 条 + TTL 1h, + 冷渲染成本接受现状。 diff --git a/.workbuddy/memory/topics/share.md b/.workbuddy/memory/topics/share.md index 5ee4bbd..2256f3b 100644 --- a/.workbuddy/memory/topics/share.md +++ b/.workbuddy/memory/topics/share.md @@ -17,7 +17,9 @@ 把 4 模块静默区画进图里 + 再居中留白,会让 165px 目标只剩 111px(3px/模块)——这是曾经的回归。 - `perModule = size / modules` 向下取整,符号 = `modules*perModule`;**调用方必须用 `qr.Bounds().Dx()` 排版与居中**,不能假设等于传入的 size。 -- 单题卡 `QQRSize = 150`(37 模块 → 4px);箱子卡 `QRCodeSize = 190`(37 模块 → 185px = 5px)。 +- 单题卡 `QQRSize = 190`(37 模块 → 185px = 5px,卡片 236×300 居中于 679,120); + 箱子卡 `QRCodeSize = 190`(37 模块 → 185px = 5px,卡片 270×335)。 +- 单题卡的二维码卡片绘制在 `drawQuestionQRCard`(handler 只是调用),测试可直接出图。 - 卡内垂直间距在 4px 栅格上:`24 / 17 / 20 / 1 / 20 / 16`,总高按链接行数算,整块垂直居中。 ## 模块像素:唯一的硬指标