Commit Graph
24 Commits
Author SHA1 Message Date
tamakyi dc90d96bde 删除生成参考图 shiroko-cutout.png,文档改为「参考图不入库」
- docs/theme-shiroko.md 三处引用不再指向具体文件(它只是 image-to-image 的 image1,从不进 embed)
- 顺手修过时说明:--tb-deco 是 10 个槽位,不是 6 个
2026-10-21 18:24:16 +08:00
tamakyi 2d13c31d62 删除验证用的 test01 主题
test01 是为验证生成器导出的临时主题(css + 2 张 webp),已从仓库移除。
删主题只需删文件:build() 读不到 css 会打印 warning 并从可用列表忽略;
仍选着 test01 的箱主会静默回退到站点默认外观。
2026-10-21 18:20:00 +08:00
tamakyi db4b3fa095 主题体系跟上设计令牌化:派生文字色按对比度下限、主题 muted 补到 AA
生成器(dev/theme-builder):
- paletteVars 的 text-secondary/text-muted 从「往底色混 36%/55%」改成 mixToContrast(5.5/4.5):二分找最淡且达标的位置,文字本身不达标就原样返回
- 半透明卡片先 flatten 压平到底色再算对比度;参考背景取「页面底色 + 压平后的卡片」中更不利的
- 配色面板加读数(正文/次要/淡文字/主色),低于 4.5 变橙;默认 primary #4a7fc1(3.69) → #3d6fac(4.63)
- 新增 ?dump=palette 四种配色回归;README 补配色一节

主题/base(含用户本轮 base.css 改动):
- sakura muted #a08c94(2.8:1) → #78696e(4.61)、shiroko #8794a7(2.76:1) → #656e7a(4.63):主题覆盖令牌,基座的 AA 修复到不了主题页
- 深色顶栏链接补 secondary 覆盖:亮色块已是次要文字色,深色块原来 !important 定成正文色,同一顶栏权重跳一档
- _scaffold.css 令牌清单 23 → 29(补 fs 阶梯与 page-position),muted 说明 AA 下限
- StaticVersion 20261021a → 20261021b
2026-10-21 17:42:43 +08:00
tamakyi 6c014b3ad2 修 test01:窄屏装饰全藏导致素材消失、主题名显示成 i18n key
- 生成器:勾「窄屏隐藏全部装饰层」时给橙色警告(几层会消失)、图层行标「窄屏隐藏」、加层与导出结果再提醒;「窄屏」下拉在被全藏覆盖时标注不生效
- 新增 ?narrow=hide 复现该状态(这是「素材在手机上看不到」的头号来源:@media 把 10 槽全写 none,桌面完全正常)
- 主题名:新增 theme.DisplayName + 模板函数 themeName,i18n 未登记 theme.name.<slug> 时回退 slug;原来模板直接调用 i18n.T,缺词条就显示 "theme.name.test01"
- test01.css 删掉 @media 全 none 段:装饰是 fit 单位,浏览器会自己按视口缩,不需要这段
- StaticVersion → 20261020g(主题 css 内容变了,必须换缓存键,否则浏览器还会用旧文件)
2026-10-20 18:23:21 +08:00
tamakyi 3d0239d8f1 fix themes maker v1 2026-10-20 18:01:09 +08:00
tamakyi 4bd600fb46 主题生成器:素材尺寸按视口自适应 + 导出画质可调
- 尺寸单位 4 档:fit(按高)/fitw(按宽)/px/vh,输出 auto clamp(min(calc(100vh-24px),55%),基准,上限),下限让位视口 → 自适应单位永不把图撑出屏幕
- fitw 补上宽幅素材:fit 只按高度缩,16:9 素材在 390 竖屏仍出 1001px 宽(照裁)
- 视口预设带高度(含 390×844);layerMetrics 统一出 CSS/预览框/溢出检测,图层编辑区显示实测尺寸并报越界,可一键按当前视口修好
- 窄屏每层策略(原样/缩小/隐藏)+ 缩放系数;修 @media 只覆盖全局、独立配置页面在手机上从不生效的特异性 bug
- 导出画质:质量滑块(上限 0.95,Skia 在 q=1 切无损会反常)+ 长边上限,改动后从原图重算
- base.css 新增 --tb-page-position(默认 center center,旧主题不受影响),StaticVersion +1
- 新增 ?dump=fit / ?dump=quality 自检,README 与 _scaffold.css 同步
2026-10-20 17:51:31 +08:00
tamakyi ddee221de2 feat(theme): 主题支持按页面分别配装饰,生成器改用真实页面画布
原来的生成器只能配「背景 + 人物 + 道具」三件套,预览还是自己画的仿制页面 ——
跟真实页面不像,也没法给不同页面配不同内容。

机制层:
- internal/context.pageScope() 按路径归类,输出 <html data-page-scope>:
  box / question / admin / profile / vote(首页与 /explore 不加载主题,不列)
- /user/questions 单独归为 admin:题目列表信息密,和设置表单的装饰诉求不同
- base.css 装饰槽位 6 -> 10,背景 8 层 -> 12 层;主题按作用域覆盖时同样写满 10 个
- 新增 TestDecoSlotCount:逐文件逐声明检查 10 个值。少写一个不报错,
  只会让图层与 size/position 错位(整页重复同一张图 / 人物跑到左上角),注释守不住

生成器:
- 画板改成 iframe 加载 outputs/preview-*.html(真实模板渲染),配 serve.py 起本地服务
  解决 file:// 下父页面读不到 iframe DOM 的问题
- 八个页面作用域(去掉不生效的首页/探索),每个可独立配背景与最多 10 层装饰
- 图层类型:图片 / 径向光斑 / 线性光;9 宫格锚点 + 像素偏移,可在画板上直接拖
- 位置统一写 calc(0%|50%|100% ± Npx):百分比是相对 (容器-图片),
  不用 left/bottom 关键字混搭,避免三值语法非法导致整条声明作废
- 配色只填 6 个基础色,其余 4 个必需令牌按方向派生(surface-2 往 text 靠,
  浅色变深、深色变亮,方向自动正确)

配套:
- zz_preview_test.go 增加单题页 / 题目列表 / 投票页预览,作为生成器画板
- docs/theme-page-scope.md 记录作用域取值、选择器特异性与 10 槽位约束
- StaticVersion 20261020e(base.css 变了)

验证:生成器导出的 CSS 通过 TestThemeCSSComplete + TestDecoSlotCount;
真实箱主页计算样式为 12 层对齐;临时主题验证「question 覆盖为 none」生效、
未覆盖时回退全局。
2026-10-20 10:53:44 +08:00
tamakyi feb5b1f78d feat(dev): 主题生成器——选图/拖位置/导出 zip
- dev/theme-builder/index.html:单文件、不联网、图片本地转 WebP
- 预览与线上同机制(pattern + 6 槽 deco + page-image),拖拽反解 calc(50% - Npx)
- 导出 CSS + 图片 + 安装说明,CSS 通过 TestThemeCSSComplete
- 自检:?selftest=1 吐 CSS/zip 字节,?demo=1 载入示例
2026-10-20 10:24:35 +08:00
tamakyi 15aebd6d19 theme(shiroko): 换前景空地的场景,补自行车/步枪,修耳朵与白孔
部署反馈三个问题:
1. 狼耳顶端被削平——上一版用矩形抹光环,矩形右下角切到了左耳尖。
   改成只抹光环的非白连通域(与头发不连通,bbox 291,93-584,232),耳朵完整。
2. 手内侧 / 大腿内侧白没抠干净——那是环状闭合的白色区域,四角 floodfill 进不去。
   新增封闭白孔检测(>=246 且不与边缘连通,面积 >=40)整块掏空,袜子(237)不受影响。
3. 人物像站在课桌上——原场景前景全是课桌,脚下没有地面。
   重出场景:前景是空地,课桌退到右后方;人物脚下是地板 + 接触阴影。

同时补上她的自行车与步枪:独立素材 props/bike.webp,镜像成车头朝右与人同向,
放在人物身后偏左(第一层是人,车在第三层,天然被她遮住),视口变化时两者同步移动。
静态版本 20261020d
2026-10-20 09:29:09 +08:00
tamakyi 2e9bd6bb73 theme(shiroko): 重画光环——AI 给的环形状歪、环内还糊着白孔
- 旧环是非白像素的独立连通域(bbox 291,93-584,232,与头发不连通),整块抹白后重画
- 新环:-7° 倾斜椭圆,100x34,线宽 10px,4 倍超采样 + LANCZOS 求平滑,外加 45% 模糊柔光
- 关键:环是在 alpha 建好之后再画的,环心天然透明,不再需要给封闭白孔补洞
- 压白 16% 与场景保持一致;静态版本 20261020b,图片另带 ?v=20261020b
2026-10-20 08:28:39 +08:00
tamakyi fb94b8c204 theme(shiroko): 补四层空气层——窗光/暖散景/地面光斑/底部压深
场景压白 38% 后整页亮度只剩 235~246,直接摆物体会突兀,改用纯渐变造光:
- 左窗光柱 linear-gradient(112deg)
- 右侧一朵 120px 暖散景,给右侧空白一点体积
- 人物脚下 560x170 地面光斑,把人物钉在地上
- 底部 24% 轻压深,页面下沿不飘

实测亮度差 3~9 级(肉眼可辨但不刺眼),横向扫描相邻像素差 max 4,无色阶断层。
纯白散景压在压白场景上不可见(diff 0.14),提亮必须先有暗部。
静态版本 20261020a
2026-10-20 01:13:59 +08:00
tamakyi e95671f2fe theme(shiroko): 人像换成侧后方窗边背影,压白 16% 融入场景
- 盘腿坐的正面人像在空教室里像贴纸:直视访客、没有环境、配色比场景饱和
- 新素材 chibi/window.webp:侧后方视角、双手背在身后望向箱内,抠白底后压白 16%
  与压白 38% 的场景同一雾度;配椭圆接触阴影,脚踩地面不悬空
- 尺寸 380->400px,接触阴影同步复位;静态版本 20261019r
2026-10-20 00:05:01 +08:00
tamakyi 33e31cf4dc theme(shiroko): 按二次元官网构图重做——整页场景 + 悬浮磨砂 UI
参考蔚蓝档案 JP 首页(bluearchive.jp)的做法:整个视口是一张场景插画,UI 浮在场景之上,
而不是"白底 + 留白里贴几个人物"。之前几版反复调摆位都显得怪,根源就是缺了这层场景——
人物没有环境,怎么摆都是贴纸。

- 新增教室场景两张(1920×1080 / 720×1003,共 28KB):生成后裁掉右下角水印、
  混白 38%、模糊 1.4px,保证白卡片仍有对比度;
- 卡片与顶栏改半透明白 + backdrop-filter 磨砂(深色关闭,背后没场景时半透明只会变浑);
- 人物站在场景左侧地面(340px,离底边 36px)+ 椭圆接触阴影;
- 浅色不再叠平铺纹样(压在实景上会变噪点),pattern.svg 删除,深色保留 pattern-dark;
- 顺带修 ruleBody 不剥 CSS 注释的缺陷:令牌前写注释会让 tokenValue 取到粘连键,
  色块预览静默失效(新增 TestRuleBodyIgnoresComments 守住);
- StaticVersion → 20261019q
2026-10-19 23:01:55 +08:00
tamakyi 2f2e00ad65 theme(shiroko): 装饰改为「半隐在卡片后」的单人 + 接触阴影
按选定方向收敛:

- 只留 sit 一个角色,左移 515px 让右侧约 40px 钻进卡片底下(卡片定宽 750 居中,
  左沿 = 50% - 375px),被卡片挡掉一部分才有空间关系,不再浮在留白中间;
- 离底边 26px(脚踩最后一像素像被裁掉),配一层椭圆径向渐变当接触阴影,避免悬空;
- 纹样透明度 0.13 → 0.085(深色 0.09 → 0.055),图案 url 补 ?v=;
- 收掉另外三个人物与第一层半透明立绘;
- StaticVersion → 20261019p
2026-10-19 21:43:44 +08:00
tamakyi 59ffcb5096 theme(shiroko): 纹样按三行均布,消除横向条纹
图案元素原先全挤在每个 tile 的上半部(雪花 52 / 光环 62 / 点 150、176),
铺开后在整页形成明显的横向条纹带 —— 这也是"看着怪"的一部分。

- 元素改为 3 行均布(52 / 132 / 152-212),tile 340px 时不再有空白横带;
  实测左栏 60px 带宽均值由 245→237→249(跳变 12)收敛为单调 245→236。
- 图案加 ?v= 版本:图片不走 StaticVersion 的缓存键,否则老访客最多 24h 看到旧纹样。
- StaticVersion → 20261019o
2026-10-19 21:32:48 +08:00
tamakyi 3717b77ef8 theme(shiroko): 装饰改为一组两人,去掉散射与半透明立绘
四角各摆一个人读起来像贴纸墙纸:人物之间没有位置关系,也没有和内容的关系,
右下角还会和右对齐的页脚文案(社区规则 / 备案号)挤在一起。

- 只留左下角一组:盘腿坐(330)+ 挥手(190),贴住左边缘和下沿;
  990px 以下缩小并整体左移,900px 以下(卡片占满宽度)不出人物,顺带省掉图片请求。
- 删掉 16% 透明度的 hero-fade 叠层:虚实两套人物叠在一起像重影。
- 纹样减到雪花 + 光环 + 两点,透明度 0.2 → 0.16,tile 320 → 340。
- 卡片压在近白底色上分不清边界,补一圈 1px 冷调描边(box-shadow,不占布局)。
- StaticVersion → 20261019n
2026-10-19 21:19:36 +08:00
tamakyi 0c39afff3a theme v4: 装饰层 + 砂狼白子 Q 版插画
- base.css 新增装饰层令牌 --tb-deco / -size / -position:固定 6 个槽位、固定像素四角定位,
  不受 cover 裁切影响(竖屏桌面会把贴边的插画切掉)。多层背景的列表长度必须恒定,
  值一多一少会整层错位(表现为整页重复同一张图)。
- shiroko:4 个 Q 版人物(wave/cheer/think/sit/doze),以用户立绘为参考图 image-to-image
  生成后抠白底;左右各两个、立绘在右下当水印。顶部用固定 96px 避开顶栏,
  真实视口 ≥920px 才补中间两个,矮屏不放(否则与立绘重叠)。
  深色关掉装饰层,图案改为几何纹样。
- sakura:顶栏取页面底色、顶栏链接提到次要文字色、uk-alert-primary 改粉底。
- 主题注入补上 /user 后台与 /vote 投票页(跟随箱主/发布者的语言与配色)。
- StaticVersion → 20261019m
2026-10-19 20:37:28 +08:00
tamakyi 38cd41afde theme v3 2026-10-19 16:46:42 +08:00
tamakyi 3202ef9821 theme v2 2026-10-19 16:16:07 +08:00
tamakyi e9fba8b9ed theme v1 2026-10-19 15:23:11 +08:00
tamakyi 86dc8384bc 全局美化 v5 2026-10-19 12:44:32 +08:00
tamakyi d7c1782bb6 全局美化 v4 2026-10-19 12:07:21 +08:00
tamakyi 5c7707ec0d 全局美化 v3 2026-10-19 11:43:24 +08:00
tamakyi e3e59e7c69 chore: baseline snapshot before moderation-strictness feature
Repo .git was damaged (refs/ missing, index truncated, object store near-empty).
Repaired via git init (rebuilt refs), stale index preserved as .git/index.corrupt-20260910.bak,
then full worktree committed as a rollback baseline.
2026-09-10 10:56:27 +08:00