Repository navigation
multi2api v1.9.15
v1.9.15
本版两条主线:前端视觉语言 v3(MAXIMALISM · 霓虹油墨)整体重构,以及可读性判据从"抽样 5 个元素"升级为"全量逐元素"。另修三处前端缺陷。
一、视觉语言 v3 · MAXIMALISM
风格取自 designforai.dev/style/maximalism:奶油纸底 + 墨线 + 五个冲突色 + 硬投影 + 零圆角 + 颗粒纹理 + 跑马灯 + 旋转贴纸。三个页面(控制台 / 登录 / 渠道)统一到同一套语言。
唯一真相 + 一键内联
internal/server/theme-max.css—— 设计系统本体(唯一真相)tools/theme_sync.js—— 内联进三个页面的<style>(幂等;--check只校验,可进 CI)- 三个页面仍是单文件 + go:embed + 零外部依赖;没有引 Google Fonts(用系统超重黑体栈,离线部署不退化)
外壳吵、数据静
- 吵:页头(贴纸 + 跑马灯)/ 侧栏 / 分区标题带 / 统计卡 / 分组头 / 按钮 / 空态 / 提示 / 弹窗
- 静:表格内容区、表单、日志行、代码块(只留墨线,不铺色块、不叠阴影)
理由:这是高密度中后台(账号池一屏 12 个上游、日志整屏)。全套铺满会把状态胶囊与分组头糊成一片,读不出哪一行出错。
字体
- 展示字以 Arial Black 打头(Impact 字面太窄,12~15px 时字母会互相咬住)
- ≤15px 一律退回系统 UI 字,层级改由字重 + 字距表达
- 分组头 gap 10→12px、标题按钮内 6→9px
深色主题
- 统计卡仍是深底 + 亮描边(浅色下才是四色卡片 —— 亮度方向判据使然)
- 边框转霓虹黄、强调色转粉
二、可读性判据升级:抽样 → 全量
新增 tests/frontend/audit_contrast_pages.js(页内逻辑在 lib_contrast_audit.js):
遍历 13 个面板 × 浅/深两套主题的每个可见文本元素,按 alpha 合成真实底色后算 WCAG 比值(正文 4.5 / 大字号 3),不达标就点名 CSS 路径 + 文本 + 前景/底色 + 实测值,非零退出。
它直接抓出了抽样判据够不着的真缺陷:分组头的次要文字在粉底 2.72:1、酸绿底 1.49:1。修完 104 处 → 0 处。
修的四类:
| 问题 | 实测 | 修法 |
|---|---|---|
| 分组头 / 分区标题带的次要文字 | 1.49:1 | 亮底容器内文字一律墨色,层级用字号字重表达 |
| 深色下统计卡的"--"占位 | 1.07:1 | 该处回到 --dim(深底不能用墨字) |
| 侧栏分组头的粉色从未生效 | 徽章 1.07:1 | .navgrouphd 被 .sidebar button{background:transparent} 拍平,提特异性 |
| v2 残留写死色 | #58a6ff 2.24:1 / #0f8a4d 3.9:1 |
属性选择器接到 --acc / --ok(SVG 属性不认 var(),所以不动 JS) |
三、其它修复
- 可用模型:没有可用账号的上游整组隐藏(含内置声明),面板与上游/模型两个下拉一起过滤;
accountCount三态(数字 /null=未知),只在明确 0 时隐藏 —— 否则 manifest 到达前会把全部上游误伤。/v1/models不变(客户端仍需知道上游支持生图)。 - 渠道页操作列:按钮原来带内联
style="padding:0 8px;height:22px"(内联压过样式表)+ 与行底色同色 ⇒ 远看是一整块灰条。现在去掉内联、底色--panel2、2px 墨线 + 相邻 8px + 硬投影。 models_display_gen.js:补「对话密钥」桩,修掉既有ReferenceError: KEY is not defined(34 项失败清零)。
四、验证
go build ./.../go vet ./.../go test ./... -count=1全绿(CI 同口径)contrast_e2e/final_visual/theme_e2e全部通过- 全量对比度巡检:26 组合 0 处低于阈值
- 前端静态套件 23/32:9 条红在 HEAD 基线上逐条复现(dashboard_gen / stats_disk / tokps / gen_ui_manifest / audit_tracked_content / verify_probe_console_loaded 等既有红),非本版引入
升级提示
页面样式走 go:embed,升级后请 Ctrl+F5 硬刷新。渠道页是 iframe,必要时右键「重新加载框架」。