From 1a8938f0e1de5c149c3087382c6d97b6945bbf80 Mon Sep 17 00:00:00 2001 From: tamakyi Date: Mon, 19 Oct 2026 20:53:18 +0800 Subject: [PATCH] =?UTF-8?q?docs(memory):=20=E4=BF=AE=E6=AD=A3=20git=20?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E7=BB=93=E8=AE=BA=EF=BC=88=E5=87=AD=E6=8D=AE?= =?UTF-8?q?=E5=8F=AF=E6=81=A2=E5=A4=8D=EF=BC=8Cpush=20=E6=AD=A3=E5=B8=B8?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .workbuddy/memory/2026-10-19.md | 105 ++++++++++++++++++++++++++++++++ .workbuddy/memory/MEMORY.md | 22 ++++++- 2 files changed, 126 insertions(+), 1 deletion(-) diff --git a/.workbuddy/memory/2026-10-19.md b/.workbuddy/memory/2026-10-19.md index 08972db..1169b9f 100644 --- a/.workbuddy/memory/2026-10-19.md +++ b/.workbuddy/memory/2026-10-19.md @@ -434,3 +434,108 @@ P1 剩余两项(首屏跟随系统深色、首页 Waline 懒加载)用户明 顺带删掉尾部重复的 `GetByID(owner)`(表单类型通知邮件复用同一个 owner),少一次查询。 - 四语言 `profile.theme.hint` 与 changelog 范围说明补上「你发布的投票页」。 - 验证:vote/i18n/context/theme/templates 全绿;线上 `lang="ja"` + 中文内容的不一致待部署后复测。 + +### 部署后复测(v=20261019g) + +- `/vote/7kcP5kR8YnJC`(admin6):`lang="zh-CN" data-theme-style="sakura"`,base/theme css 均 v=g, + 日文串(投票する / 匿名での参加 / ログイン)全部消失 → 语言与主题同步跟随发布者。 +- `/ _/admin6`、`/user/profile`:仍为 `zh-CN` + sakura,未回归。 +- 隔离性:另取三个 token 抽查 —— 4G3i79OCYa2E / 7l0MwF7cLz4T 为 `lang="ja"`(无语言偏好、无主题), + 9J1zgXwQ05Ai 为 `lang="zh-CN"` 且**无** data-theme-style → 主题不会跨箱主泄漏。 +- 遗留观感问题(未改,等用户决定):投票页的「允许匿名参与」提示条是 `uk-alert-primary`, + 仍是 UIkit 浅蓝,在粉底上偏冷。改它需要「浅底 + 深主色文字」的对比度,现有 `--tb-primary-weak` + 叠白后对比度只有 ~2.6:1,得先加一个 primary-strong 令牌,故未动。 + +### 顶栏配色再修(v=20261019h) + +用户反馈「探索/注册链接底色粉色,但整条顶栏是灰色,很突兀」。实测部署版:顶栏 `#fff6f9`、 +页面 `#fceef3` —— 近白横带压在饱和粉底上,肉眼就读成「白色/灰色的一条」。无头 Chrome 截图 + +像素采样确认不是 UIkit 默认 #f8f8f8 回退(那说明变量没生效,现象会连带整页失效)。 +- sakura 浅色 `--tb-navbar` 直接取页面底色 `#fceef3`(深色同样 `#241a1f`),横带消失; +- 顶栏链接 `#999` 在粉底上偏淡 → 主题内微调为 `--tb-text-secondary`,hover 用 `--tb-primary` + (深色被 base.css 的 `!important` 规则接管,不受影响); +- 顺带 `uk-alert-primary`(匿名参与提示/空列表)的 UIkit 浅蓝是页面上唯一的冷色块, + 改为 `--tb-primary-weak` 底 + `#a63a5e` 文字(≈5.3:1)。 +- 以上三条都写在 sakura.css 的「组件微调」段,只对 sakura 生效,默认主题零影响。 + +## 主题「砂狼白子 / shiroko」(v=20261019i) + +- `static/css/themes/shiroko.css`:灰蓝银白令牌(浅 #edf2f8 / 主色 #4a7fc1), + 组件微调只有两条 —— `.uk-card-default` 右下角水印立绘(`background-size: auto 176px`,纯背景层不改布局)、 + 顶栏链接色提到 `--tb-text-secondary`;深色不铺立绘(浅色构图在深色下会糊)。 +- 素材 `static/images/themes/shiroko/`(68KB):`bg-desktop.webp`(2400×1350) / `bg-mobile.webp`(900×1600) / + `hero-fade.webp`(275×620,16% alpha) / `pattern.svg` / `pattern-dark.svg`。 +- **`static/fs.go` 的 embed 清单加了 `images/themes`**(目录项,子目录自动覆盖)—— + 这是「新增顶层静态目录必须手工登记」的又一次踩点。 +- 背景是 PIL 合成的:1280 行的竖向渐变 + 白色径向光晕 + 立绘 30% 贴右下 + 狼 10% / 光环 20% / 纸飞机 18%。 + 实测 mean≈244、std≈9;右侧留白区 std 13(立绘可见),中间 std 1.9(正文区干净)。 +- ⚠️ **`cover` 会按视口裁剪**:竖屏/超宽屏会把贴在图片最右的立绘裁掉,所以立绘不能太靠边 —— + 位置要留在图片横向 24%~76% 之外就得配 `@media` 换图(本次桌面 16:9 + 移动 9:16 两张)。 +- 生成素材(ImageGen)8 张里只有 3 张可用:线稿图案(狼/光环/纸飞机)抠白底干净; + 2 张人像抠底失败(背景不是纯白,`background: transparent` 实际没生效),2 张场景背景几乎没有内容(std<5)。 + 教训:**没有视觉能力时,生成图要用 `mean/std/edge` 先验内容量**,别直接拿去合成。 +- 素材来源与版权写在 `docs/theme-shiroko.md`(角色版权 NEXON / Yostar,非商用同人)。 +- 启用需要在 `conf/app.ini` 的 `[theme] available` 里加 `shiroko`(示例配置已更新)。 + +## shiroko 插画重做:动物线稿 → Q 版人物(v=20261019k) + +用户反馈「简笔画不是画动物,是人物形象」,插画层整体重做。 + +- 新增 `dev/gen_shiroko_chibi.py`:手写 SVG 生成 6 个 Q 版白子(wave/cheer/think/run/doze/peek), + 3.8KB/张,造型逐项对齐用户立绘(灰发蘑菇头 + 圆钝狼耳 + 倾斜光环 + 青围巾 + 深蓝外套 + 灰裙 + 青黑球鞋)。 + **生成模型这条路走不通**:`background: transparent` 不生效、无视觉反馈时无法判断好坏; + 代码画路径反而可控、体积小、任意尺寸不糊。 +- ⚠️ **cover 必然裁掉贴边插画**:1280×1400 视口下,2400×1350 的背景图只露出中部 1234px, + 右下立绘被裁成 38px 一条。→ base.css 新增装饰层令牌 `--tb-deco / --tb-deco-size / --tb-deco-position` + (固定像素 + 四角定位 + fixed,不随视口比例变化)。 +- ⚠️ **多背景层的值个数必须恒定**:deco 先写成 4 个值,background-image 变 6 层而 size/position 只有 3 个, + CSS 循环取值 → 整页重复小人。改成固定 6 个槽位(1 图案 + 6 装饰 + 1 背景 = 8 层), + 主题必须写满 6 个(缺的填 none),这条写进了 `_scaffold.css`。 +- 删掉 `bg-desktop.webp` / `bg-mobile.webp` / `hero.webp` / `dev/gen_shiroko_bg.py`; + 整页底色改成纯 CSS 渐变(不用图片,也就没有 cover 缩放差异)。 +- 深色关掉 deco(浅色线稿在深色底上糊成灰块);pattern 里的爪印换成 Q 版头像, + opacity 0.42→0.2、tile 240→320(原来铺得太密,像壁纸)。 +- 验证:默认主题背景仍 `#f7f8fa`、顶栏纯白、卡片纯白(零回归);箱主页与 `/user` 后台四角装饰都不压内容; + 移动端只留立绘 + peek。 + +## shiroko 插画二次返工:手绘 SVG → 参考立绘图生图(v=20261019l) + +用户反馈上次的简笔画"太抽象"。根因判断:用户的立绘是**平涂无描边色块风**, +我用手绘线稿去配它,风格本身就冲突,而且没有真人手感,形准也做不到。 + +- 新方案:ImageGen **图生图**(`image1` = `static/images/shiroko-cutout.png`,`input_fidelity: high`), + 提示词统一为「same character, same art style... flat vector illustration, no outlines」+ 换动作句, + 生成 4 个姿态(wave / cheer / think / doze),1024×1024、纯白背景。 + **四张角色特征与画风一致**,这一步是手绘做不到的。 +- 抠图:四角 + 四边中点 8 点 floodfill(容差 16)+ alpha 1px MinFilter 收边,裁 bbox 后统一高 620、 + WebP q90。实测无白边,光环中间的孔也正确透出。 +- 删除 `dev/gen_shiroko_chibi.py` 与 6 个手绘 SVG;`chibi/*.webp` 4 张共 106KB。 + 图案里的手绘小头像也删了(和位图人物并排显得最抽象),改成雪花 + 光环 + 圆环 + 点簇。 +- ⚠️ **deco 的 `center` 定位在矮视口会撞车**:右下立绘 520px 高,1366×768 下从 y=248 一直到底, + 托腮放 `right center` 会直接站在立绘头顶。百分比是「(视口-图高)×pct」,改用 `top 46%` 并挪到左侧中部。 + 验证视口:1366×768 / 1440×900 / 1280×1400 三档,人物互不重叠。 +- docs 补了完整提示词骨架、动作句与抠图参数,说明"必须平涂无描边"这条经验。 + +## shiroko 布局重排 + 新坐姿(v=20261019m) + +用户反馈:左右不协调、最上边的头被顶栏挡住。 +- 布局改为**左右各两个**(左上 wave / 左下 sit,右上 cheer / 右下立绘), + `≥920px` 真实视口才补中间两个(think / doze),矮屏不放(否则压到立绘)。 +- 顶部定位从百分比改成**固定 `top 96px`**:顶栏实际高 60px(不是 80), + 百分比是「(视口-图高)×pct」,小视口下算出来的值会落进顶栏里。 + `bottom 0` 也改成 `bottom 6px`,避免脚贴页底。 +- 新增坐姿(盘腿),ImageGen 图生图第 2 次才可用:第 1 张脚被画到画布底边(底部 78 像素贴边), + 提示词补 `centered composition, whole body fully visible with generous empty margin` 后正常。 +- ⚠️ **Chrome headless 的 `--window-size` ≠ CSS 视口**:实测 1080 → innerHeight 985、768 → 673 + (差约 95px 的窗口边框)。所以 `@media (min-height: 1050px)` 在 1080p 下永远不触发。 + 判断媒体查询门槛要按「真实视口」写,截图验证必须加 `--force-device-scale-factor=1`, + 否则系统 DPI 缩放会让截图尺寸和 window-size 也对不上(曾出现 1920 请求出 1088 宽)。 +- git:仓库可用(origin = https://git.shiroko.one/tamakyi/tamabox,main), + 已本地提交 `0c39aff`,但 `credential.helper=store` 里的凭据过期 → `Failed to authenticate user`。 + 打包 `../TamaBox-v4-mainline-20261019-2037.tar.gz`(1.5M,含图片素材)供直接部署。 + +### git push 补推 + +上次的 `Failed to authenticate user` 是临时态 —— 用户本机 Git for Windows 认证过之后 store 凭据恢复, +本轮 `git push origin main` 直接成功(`38cd41a..0c39aff`),`git rev-list --left-right --count origin/main...HEAD` = 0 0。 +远端 8 个 shiroko 素材文件齐全。教训:**不要用一次 push 失败就断言无凭据**,先看一眼提交是否已存在、再试一次。 diff --git a/.workbuddy/memory/MEMORY.md b/.workbuddy/memory/MEMORY.md index 15f8a94..6c4c5af 100644 --- a/.workbuddy/memory/MEMORY.md +++ b/.workbuddy/memory/MEMORY.md @@ -127,7 +127,12 @@ - 终止性操作(停用)落独立公开页 `/deactivated`(注册在 `reqUserSignIn` 外);改密码后重登才用 flash + `/login`。 - 只有箱主 `/user` 面板,**无管理员角色、无站方后台,且用户要求不要加**:站方动作只走 CLI / 邮件 / 改配置重启。 要开管理页先问:能不能用 CLI 表达? -- git 仓库已损坏,**不要动 git**;备份用 tar.gz 排除 `.git`/`.workbuddy`,放项目同级。 +- git 仓库可用(origin = `https://git.shiroko.one/tamakyi/tamabox`,分支 `main`)。**`git push` 能直接推**, + 用户本机的 Git for Windows 已认证,`~/.gitconfig` 的 `credential.helper=store` 与系统 `manager` 并存, + store 里的记录会被刷新 —— 所以「Failed to authenticate user」是**临时态**(用户在别处提交后即恢复), + 不要据此断言「无凭据、只能打包」。推之前先 `git log --oneline -3` 看本地是否已提交,直接试推一次即可。 + 改代码时仍只做只读 `git status/log`,别动历史。 +- 打包交付用 tar.gz(排除 `.git`/`.workbuddy`/`outputs`),放项目同级。 ## 测试环境 box-dev-api.337845818.best @@ -164,6 +169,9 @@ 必须在任何 i18n 取词之前调用,否则先渲染出的提示会按访客语言。箱主未配语言时才回退访客/站点默认。 - 主题 = 一个 css 文件只覆盖令牌;新增主题不用改 Go/模板,放 `static/css/themes/.css` + `[theme] available` 登记即可(`static/fs.go` 已嵌整个目录)。底稿 `_scaffold.css`。 +- 带图片素材的主题把图放 `static/images/themes//`(`static/fs.go` 的 embed 已含 `images/themes`, + 子目录自动覆盖;**新增别的顶层目录才要改清单**)。整页图用 16:9 + 竖版两张,靠 `@media` 切换 —— + `--tb-page-image` 是 `cover`,贴着图片边缘放的插画会被按视口裁掉。 - **必须同时写浅色块与深色块**(`html[data-theme-style=x]` / `html[data-theme="dark"][data-theme-style=x]`), `TestThemeCSSComplete` 会查;色块预览由浅色块的 `--tb-bg` + `--tb-primary` 自动生成(色值过正则防注入)。 - 令牌 `--tb-navbar`:顶栏底色,默认 `var(--tb-surface)`。页面底色偏彩时主题应覆盖它, @@ -174,3 +182,15 @@ 但必须用 :not() 排除语义色(同特异性 + base.css 后加载,不排除会连带刷掉 danger/success)。 - 主题底色用**纯色**,别用整页渐变——会被读成「底色分布不均匀」;图案建议 ≥24px、透明度 ≤0.06。 - 改了 base.css / 主题 css 必须 +1 `conf.StaticVersion`(两者共用同一个 v)。 +- ⚠️ **多背景层不能塞变量列表**:`background-image: var(--a), var(--b)` 里若某个变量自身是逗号列表, + 层数会变而 size/position 的个数不变 → CSS 循环取值、整层错位(曾出现整页重复同一张插画)。 + 需要多张装饰时用固定槽位:`--tb-deco` 恒 6 个,缺的填 `none`,size/position 同步补齐。 +- ⚠️ 整页 `cover` 背景图必然裁边(1280×1400 视口只露出 2400 宽的中间 1234px,竖屏更狠) + → 贴边的插画不要放进背景图,放 `--tb-deco`(固定像素 + 四角定位 + fixed)。 +- 主题插画可以不用图片:`dev/gen_shiroko_chibi.py` 用 SVG 路径手绘 Q 版人物,3.8KB/张、任意尺寸不糊; + 生成模型给的"透明背景"线稿抠不干净、无法目检,不如自己画。 +- 主题插画优先"图生图 + 抠白底":`image1` 给既有立绘、`input_fidelity: high`、 + 提示词强调 `flat vector illustration, no outlines`,四张姿态的角色一致性远好于手绘 SVG。 + 抠图用四角+四边中点 8 点 floodfill(容差 16)+ alpha MinFilter(3) 收边。 +- ⚠️ deco 的定位百分比是「(视口高-图高)×pct」,`center` 在矮视口会和大尺寸立绘重叠; + 右侧被立绘(bottom 0,500+px)占住时,第二个人物要放左侧、用显式 `top N%`。