From 2a39cedef1608d63603e2d6a2efebaadeb470b66 Mon Sep 17 00:00:00 2001 From: ThreeFish Date: Sat, 4 Jul 2026 02:24:40 +0800 Subject: [PATCH 1/3] =?UTF-8?q?style(branding):=20logo/favicon=20=E5=AE=B9?= =?UTF-8?q?=E5=99=A8=E6=94=B9=E7=8E=BB=E7=92=83=E9=9B=BE=E5=8D=A1=E3=80=81?= =?UTF-8?q?=E7=AC=94=E5=88=92=E5=8A=A0=E7=B2=97=E6=8F=90=E4=BA=AE=E4=BB=A5?= =?UTF-8?q?=E6=8F=90=E5=8D=87=E9=86=92=E7=9B=AE=E5=BA=A6;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 延续 #272 的品牌图标设计,针对「图标依旧不够醒目」反馈做容器透明化与笔划强化: - 容器透明化:favicon rect 与 .logo 背景由实色 #f5f6fb 改为半透明白雾卡 (SVG hex8 #ffffff14/#ffffff38、.logo rgba(.06/.12)),与深色毛玻璃 header (backdrop-filter)语言统一,消除「亮白贴片」压制感;box-shadow 改双层 (黑投影补边界 + inset 顶部玻璃高光) - 笔划醒目化:>_ terminal 笔划 stroke-width 2→2.5;chevron 左移、下划线右移并 延长(M6/M13 l5)撑开间距至 4 单位避免粘连、下划线加长至 5 防止小尺寸退化为圆点 - 深端提亮:品牌渐变 #764ba2→#8b5fd0,深底对比达 WCAG 图形 3:1 - .logo 笔划新增 drop-shadow 柔和辉光;favicon 16px 小尺寸保持锐利不加 glow - ICO 回退同步:深端 RGB 0x8B5FD0、底色 alpha 255→0xB0、笔划坐标 - favicon 跨浅/深浏览器 tab 双主题均可辨识(实机验证) - 保留 --gradient-primary 与 .vendor-avatar 不动(最小干预) 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist) Co-Authored-By: Aurelius Huang --- CHANGELOG.md | 2 + src/coding/proxy/server/dashboard.py | 71 +++++++++++++++------------- 2 files changed, 40 insertions(+), 33 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 436f1c5..fc4f60c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ ## [Unreleased] +- style(branding): logo/favicon 容器由「淡色磨砂卡片」改为「玻璃雾卡」(半透明白 ~6-8% + hairline 描边环),与深色毛玻璃 header 语言统一、消除「亮白贴片」压制感;`>_` terminal 笔划加粗 stroke-width 2→2.5,chevron 左移、下划线右移并延长至 5 单位(M6/M13 l5),撑开间距至 4 单位避免粘连、防止下划线小尺寸退化为圆点;深端色 `#764ba2`→`#8b5fd0` 提亮使深底对比达 WCAG 图形 3:1;`.logo` 笔划新增 drop-shadow 辉光、容器改双层 box-shadow(黑投影 + inset 玻璃高光);favicon 跨浅/深 tab 双主题均可辨识(实机验证); + ## [v0.5.2a5](https://github.com/ThreeFish-AI/coding-proxy/releases/tag/v0.5.2a5) - 2026-07-04 - fix(dashboard): 供应商队列拖拽由原生 HTML5 DnD 改为 Pointer Events 实现,修复 v0.5.2a4 引入的拖拽排序功能在浏览器中无法拖动的问题;引入 4px 拖拽阈值、乐观实时重排与指针捕获机制,同步支持触屏设备;拖拽完成后顺序立即影响 cc 运行时供应商优先级调度(实机验证);为 `/dashboard` 响应增加 `Cache-Control: no-cache`,防止浏览器缓存旧内联脚本;补齐前端守卫测试断言 (#271); diff --git a/src/coding/proxy/server/dashboard.py b/src/coding/proxy/server/dashboard.py index 3168492..f3b468a 100644 --- a/src/coding/proxy/server/dashboard.py +++ b/src/coding/proxy/server/dashboard.py @@ -12,36 +12,40 @@ from ..logging.db import TimePeriod # ── 品牌图标:Tabler terminal-2 核心笔划(> 与 _),不含外框 ────────────── -# 容器为「淡色磨砂卡片」(#f5f6fb 浅底 + 品牌紫描边环),> 与 _ 笔划改用品牌渐变 -# (#667eea -> #764ba2)——色彩反转:品牌紫由背景迁移至图标笔划,轮廓成为视觉主角, -# 更简约、小尺寸下更清晰(Linear/Vercel 风)。保留 Tabler 原始外框笔划会双重描边、 -# 边缘发糊,故仅取 > 与 _ 两条。 +# 容器为「玻璃雾卡」(半透明白 ~6-8% 浅底 + hairline 描边环),与深色毛玻璃 header +# (backdrop-filter)语言统一;视觉重量让位给笔划,避免「亮白贴片」压制 >_ 主体。 +# > 与 _ 笔划用品牌渐变(#667eea -> #8b5fd0)——深端提亮使深底对比达 WCAG 图形 3:1。 +# chevron 左移、下划线右移并延长(M6 / M13 l5)撑开间距至 4 单位、下划线加长至 5, +# 避免 stroke-width=2.5 加粗后下划线在小尺寸退化为圆点;保留 Tabler 原始外框笔划会 +# 双重描边、边缘发糊,故仅取 > 与 _ 两条。 # 单一事实源:_TERMINAL2_PATHS 与 _LOGO_DEFS 同时供 favicon SVG(f-string)与页面 # logo({{TERMINAL2}} / {{LOGO_DEFS}} 模板替换)消费。 -_BRAND_FROM, _BRAND_TO = "#667eea", "#764ba2" +_BRAND_FROM, _BRAND_TO = "#667eea", "#8b5fd0" _LOGO_DEFS = ( '' f'' f'' "" ) -_TERMINAL2_PATHS = '' +_TERMINAL2_PATHS = '' # ── Favicon (SVG, 现代浏览器主选) ────────────────────────────────────────── def _build_favicon_svg() -> str: - """生成 24×24 SVG favicon:淡色磨砂卡片 + 品牌渐变 terminal-2 笔划. + """生成 24×24 SVG favicon:玻璃雾卡 + 品牌渐变 terminal-2 笔划. - 容器为 ``#f5f6fb`` 浅底圆角方块 + 品牌紫描边环;``>`` 与 ``_`` 笔划由白色改为品牌 - 渐变(``url(#cpBrand)``),使图标轮廓成为主角。独立 SVG 文档无 CSS 上下文, - ``currentColor`` 不可靠,故颜色硬编码;```` 复用 ``_LOGO_DEFS`` 单一事实源。 + 容器为半透明白雾卡(``#ffffff14`` 8% 浅底 + ``#ffffff38`` 22% hairline 描边环), + 与深色毛玻璃 header 语言统一;``>`` 与 ``_`` 笔划加粗至 ``stroke-width=2.5``, + 使图标轮廓成为主角。独立 SVG 文档无 CSS 上下文,``currentColor`` 不可靠,故颜色 + 硬编码为 hex8(同时承载透明度,避免与 ``stroke-opacity`` 双重叠加);```` + 复用 ``_LOGO_DEFS`` 单一事实源。 """ return ( '' f"{_LOGO_DEFS}" - '' - f'' + f'{_TERMINAL2_PATHS}' "" ) @@ -49,12 +53,13 @@ def _build_favicon_svg() -> str: # ── Favicon (ICO, 32×32 光栅回退) ───────────────────────────────────────── def _build_favicon() -> bytes: - """程序化生成 32×32 ICO:淡色磨砂卡片 + 品牌渐变 terminal-2 笔划(旧浏览器/Safari 回退). + """程序化生成 32×32 ICO:玻璃雾卡 + 品牌渐变 terminal-2 笔划(旧浏览器/Safari 回退). - 项目无 Pillow/cairosvg 等图像库,故以纯 Python 按像素光栅化:``#f5f6fb`` 浅底圆角 - 方块 + 品牌渐变(#667eea -> #764ba2)``>`` 折线与 ``_`` 下划线。沿用原实现「全零 - AND-mask + per-pixel alpha」的圆角透明方案(现代渲染器按 alpha 通道处理透明)。 - 32px 下细描边环易锯齿,故 ICO 仅保留浅底 + 渐变笔划,精修外观由 SVG 承载。 + 项目无 Pillow/cairosvg 等图像库,故以纯 Python 按像素光栅化:``#f5f6fb`` 半透明 + (alpha 0xB0)圆角方块 + 品牌渐变(#667eea -> #8b5fd0)``>`` 折线与 ``_`` 下划线。 + 沿用原实现「全零 AND-mask + per-pixel alpha」的圆角透明方案(现代渲染器按 alpha + 通道处理透明)。32px 下细描边环易锯齿,故 ICO 仅保留雾底 + 渐变笔划,精修外观 + 由 SVG 承载。 """ import math import struct @@ -63,10 +68,10 @@ def _build_favicon() -> bytes: radius = 8 scale = width / 24.0 # SVG 24 单位 -> 像素 - # 图标笔划品牌渐变:#667eea -> #764ba2(与 _LOGO_DEFS 同源) + # 图标笔划品牌渐变:#667eea -> #8b5fd0(与 _LOGO_DEFS 同源;深端提亮达 WCAG 3:1) r0, g0, b0 = 0x66, 0x7E, 0xEA - r1, g1, b1 = 0x76, 0x4B, 0xA2 - # 容器底色:#f5f6fb(近白、极浅冷蓝紫) + r1, g1, b1 = 0x8B, 0x5F, 0xD0 + # 容器底色:#f5f6fb(近白、极浅冷蓝紫);alpha 在背景填充处降至 0xB0 实现玻璃雾感 tile_r, tile_g, tile_b = 0xF5, 0xF6, 0xFB def inside(x: int, y: int) -> bool: @@ -82,12 +87,12 @@ def inside(x: int, y: int) -> bool: [[0, 0, 0, 0] for _ in range(width)] for _ in range(height) ] - # 1) 浅底圆角背景(扁平 #f5f6fb) + # 1) 玻璃雾卡圆角背景(#f5f6fb @ alpha 0xB0 ≈ 69%,半透明与 SVG #ffffff14 同向) for y in range(height): for x in range(width): if not inside(x, y): continue - buf[y][x] = [tile_b, tile_g, tile_r, 255] + buf[y][x] = [tile_b, tile_g, tile_r, 0xB0] def brand_at(px: float, py: float) -> tuple[int, int, int]: """按对角参数 t 返回 (px,py) 处的品牌渐变 RGB(与 SVG url(#cpBrand) 同向).""" @@ -116,11 +121,11 @@ def line(x0: float, y0: float, x1: float, y1: float) -> None: s = i / steps stamp(x0 + (x1 - x0) * s, y0 + (y1 - y0) * s) - # 2) terminal-2 笔划(SVG 24 单位 -> 像素) - # > 折线 (8,9)->(11,12)->(8,15);_ 下划线 (13,15)->(16,15) - line(8 * scale, 9 * scale, 11 * scale, 12 * scale) - line(11 * scale, 12 * scale, 8 * scale, 15 * scale) - line(13 * scale, 15 * scale, 16 * scale, 15 * scale) + # 2) terminal-2 笔划(SVG 24 单位 -> 像素;chevron 左移、下划线右移并延长,间距 4 单位) + # > 折线 (6,9)->(9,12)->(6,15);_ 下划线 (13,15)->(18,15) + line(6 * scale, 9 * scale, 9 * scale, 12 * scale) + line(9 * scale, 12 * scale, 6 * scale, 15 * scale) + line(13 * scale, 15 * scale, 18 * scale, 15 * scale) # 3) 打包 ICO(BMP bottom-up;全零 AND-mask,信任 per-pixel alpha 实现圆角透明) pixel_rows: list[bytes] = [] @@ -222,13 +227,13 @@ def line(x0: float, y0: float, x1: float, y1: float) -> None: .header-left { display: flex; align-items: center; gap: 12px; } .logo { width: 32px; height: 32px; - background: #f5f6fb; - border: 1px solid rgba(102,126,234,.18); + background: rgba(255,255,255,.06); + border: 1px solid rgba(255,255,255,.12); border-radius: 10px; display: flex; align-items: center; justify-content: center; - box-shadow: 0 4px 12px rgba(102,126,234,.18); + box-shadow: 0 4px 12px rgba(0,0,0,.24), inset 0 1px 0 rgba(255,255,255,.06); } - .logo svg { width: 20px; height: 20px; display: block; } + .logo svg { width: 20px; height: 20px; display: block; filter: drop-shadow(0 0 4px rgba(182,140,255,.35)); } h1 { font-size: 18px; font-weight: 600; color: var(--text-primary); letter-spacing: -.3px; } .header-right { display: flex; align-items: center; gap: 12px; } .badge { @@ -815,7 +820,7 @@ def line(x0: float, y0: float, x1: float, y1: float) -> None:
- +

Coding Proxy Dashboard

v-.-.-
From 0486ec80520636cce24f00419615f8cdb929f7e0 Mon Sep 17 00:00:00 2001 From: ThreeFish Date: Sat, 4 Jul 2026 10:20:34 +0800 Subject: [PATCH 2/3] =?UTF-8?q?style(branding):=20logo/favicon=20=E6=94=B9?= =?UTF-8?q?=E9=80=9A=E9=80=8F=E9=9D=92=E7=BB=BF=E5=9C=86=E7=8E=AF=20+=20pr?= =?UTF-8?q?ompt=20>=5F=20=E7=AC=94=E5=88=92(=E6=96=B9=E6=A1=88=20d05);?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 按用户选定方案 d05 重设计品牌图标,替换前版玻璃雾卡: - 通透青绿圆环:全透明底 + 青绿渐变(#22d3ee->#2dd4bf)细圆环 (stroke 0.5,仅原 1/3、通透若隐) + 饱和青绿渐变 >_ 笔划(stroke 2.5), 极细环与饱和笔划形成权重对比、>_ 为视觉主角;青绿承载终端/代码语义 - 基础笔划改用 Tabler prompt(chevron M5 7l5 5l-5 5 + 下划线 M13 17l6 0), 下划线长 6 单位、不会小尺寸点化 - 修复下划线消失:渐变改 gradientUnits="userSpaceOnUse" 绝对坐标, 规避纯水平下划线(包围盒高度 0)在默认 objectBoundingBox 渐变下不着色 - 单一事实源:_LOGO_DEFS / _PROMPT_PATHS 统一供 SVG favicon、ICO 回退 (省略 0.5px 细环、保留饱和笔划)与页面 logo 消费 - .logo 容器改全透明、SVG 内嵌圆环 + 青绿 drop-shadow 辉光 - 实机验证:独立端口启动新代码,浏览器确认 favicon/logo 青绿 >_ 完整、 下划线在位、圆环通透(不干扰既有 3392 实例) 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist) Co-Authored-By: Aurelius Huang --- CHANGELOG.md | 2 +- src/coding/proxy/server/dashboard.py | 108 +++++++++++---------------- 2 files changed, 44 insertions(+), 66 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc4f60c..5574892 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ ## [Unreleased] -- style(branding): logo/favicon 容器由「淡色磨砂卡片」改为「玻璃雾卡」(半透明白 ~6-8% + hairline 描边环),与深色毛玻璃 header 语言统一、消除「亮白贴片」压制感;`>_` terminal 笔划加粗 stroke-width 2→2.5,chevron 左移、下划线右移并延长至 5 单位(M6/M13 l5),撑开间距至 4 单位避免粘连、防止下划线小尺寸退化为圆点;深端色 `#764ba2`→`#8b5fd0` 提亮使深底对比达 WCAG 图形 3:1;`.logo` 笔划新增 drop-shadow 辉光、容器改双层 box-shadow(黑投影 + inset 玻璃高光);favicon 跨浅/深 tab 双主题均可辨识(实机验证); +- style(branding): 重设计 logo/favicon 为「通透青绿圆环 + Tabler prompt `>_` 笔划」(方案 d05):全透明底 + 青绿渐变(`#22d3ee` → `#2dd4bf`)细圆环(stroke 0.5,仅原 1/3、通透若隐)+ 饱和青绿渐变 `>_`(stroke 2.5),极细环与饱和笔划形成权重对比、`>_` 为视觉主角,青绿承载终端/代码语义;基础笔划改用 Tabler prompt(chevron `M5 7l5 5l-5 5` + 下划线 `M13 17l6 0`,下划线长 6 单位、不会小尺寸点化);渐变改 `gradientUnits="userSpaceOnUse"` 绝对坐标,修复纯水平下划线(包围盒高度 0)在默认 objectBoundingBox 渐变下不着色而「消失」的问题;`_LOGO_DEFS` / `_PROMPT_PATHS` 单一事实源统一供 SVG favicon、ICO 回退(省略 0.5px 细环、保留饱和笔划)与页面 logo 消费;`.logo` 容器改全透明、SVG 内嵌圆环 + 青绿 drop-shadow 辉光(实机验证); ## [v0.5.2a5](https://github.com/ThreeFish-AI/coding-proxy/releases/tag/v0.5.2a5) - 2026-07-04 diff --git a/src/coding/proxy/server/dashboard.py b/src/coding/proxy/server/dashboard.py index f3b468a..b40515d 100644 --- a/src/coding/proxy/server/dashboard.py +++ b/src/coding/proxy/server/dashboard.py @@ -11,91 +11,73 @@ from ..logging.db import TimePeriod -# ── 品牌图标:Tabler terminal-2 核心笔划(> 与 _),不含外框 ────────────── -# 容器为「玻璃雾卡」(半透明白 ~6-8% 浅底 + hairline 描边环),与深色毛玻璃 header -# (backdrop-filter)语言统一;视觉重量让位给笔划,避免「亮白贴片」压制 >_ 主体。 -# > 与 _ 笔划用品牌渐变(#667eea -> #8b5fd0)——深端提亮使深底对比达 WCAG 图形 3:1。 -# chevron 左移、下划线右移并延长(M6 / M13 l5)撑开间距至 4 单位、下划线加长至 5, -# 避免 stroke-width=2.5 加粗后下划线在小尺寸退化为圆点;保留 Tabler 原始外框笔划会 -# 双重描边、边缘发糊,故仅取 > 与 _ 两条。 -# 单一事实源:_TERMINAL2_PATHS 与 _LOGO_DEFS 同时供 favicon SVG(f-string)与页面 -# logo({{TERMINAL2}} / {{LOGO_DEFS}} 模板替换)消费。 -_BRAND_FROM, _BRAND_TO = "#667eea", "#8b5fd0" +# ── 品牌图标:Tabler prompt 核心笔划(> 与 _)+ 通透青绿圆环 ────────────── +# 设计(方案 d05):全透明底 + 青绿渐变细圆环(stroke 0.5,仅原 1/3,通透若隐)+ +# 饱和青绿渐变 >_ 笔划(stroke 2.5)。极细环与饱和笔划形成权重对比,>_ 为绝对主角; +# 青绿(#22d3ee -> #2dd4bf)承载终端/代码语义,通透明快。基础笔划取自 Tabler prompt +# (chevron M5 7l5 5l-5 5 + 下划线 M13 17l6 0,下划线长 6 单位、不会小尺寸点化)。 +# 渐变用 gradientUnits="userSpaceOnUse" + 绝对坐标:纯水平下划线包围盒高度为 0,若用 +# 默认 objectBoundingBox 渐变会映射失效而不着色(下划线消失),userSpaceOnUse 规避。 +# 单一事实源:_PROMPT_PATHS 与 _LOGO_DEFS 同时供 favicon SVG(f-string)与页面 +# logo({{PROMPT}} / {{LOGO_DEFS}} 模板替换)消费。 +_BRAND_FROM, _BRAND_TO = "#22d3ee", "#2dd4bf" _LOGO_DEFS = ( - '' + '' f'' f'' "" ) -_TERMINAL2_PATHS = '' +_PROMPT_PATHS = '' # ── Favicon (SVG, 现代浏览器主选) ────────────────────────────────────────── def _build_favicon_svg() -> str: - """生成 24×24 SVG favicon:玻璃雾卡 + 品牌渐变 terminal-2 笔划. + """生成 24×24 SVG favicon:通透青绿圆环 + 品牌渐变 prompt 笔划(方案 d05). - 容器为半透明白雾卡(``#ffffff14`` 8% 浅底 + ``#ffffff38`` 22% hairline 描边环), - 与深色毛玻璃 header 语言统一;``>`` 与 ``_`` 笔划加粗至 ``stroke-width=2.5``, - 使图标轮廓成为主角。独立 SVG 文档无 CSS 上下文,``currentColor`` 不可靠,故颜色 - 硬编码为 hex8(同时承载透明度,避免与 ``stroke-opacity`` 双重叠加);```` - 复用 ``_LOGO_DEFS`` 单一事实源。 + 全透明底 + 青绿渐变细圆环(``r=11``、``stroke-width=0.5``、``stroke-opacity=.55``, + 通透若隐)+ 饱和青绿渐变 ``>`` 与 ``_`` 笔划(``stroke-width=2.5``)。极细环与饱和 + 笔划形成权重对比,``>_`` 为视觉主角。独立 SVG 文档无 CSS 上下文,``currentColor`` + 不可靠,故渐变复用 ``_LOGO_DEFS``(userSpaceOnUse,规避水平下划线不着色)单一事实源。 """ return ( '' f"{_LOGO_DEFS}" - '' + '' f'{_TERMINAL2_PATHS}' + f'stroke-linecap="round" stroke-linejoin="round">{_PROMPT_PATHS}' "" ) # ── Favicon (ICO, 32×32 光栅回退) ───────────────────────────────────────── def _build_favicon() -> bytes: - """程序化生成 32×32 ICO:玻璃雾卡 + 品牌渐变 terminal-2 笔划(旧浏览器/Safari 回退). + """程序化生成 32×32 ICO:全透明底 + 青绿渐变 prompt 笔划(旧浏览器/Safari 回退). - 项目无 Pillow/cairosvg 等图像库,故以纯 Python 按像素光栅化:``#f5f6fb`` 半透明 - (alpha 0xB0)圆角方块 + 品牌渐变(#667eea -> #8b5fd0)``>`` 折线与 ``_`` 下划线。 - 沿用原实现「全零 AND-mask + per-pixel alpha」的圆角透明方案(现代渲染器按 alpha - 通道处理透明)。32px 下细描边环易锯齿,故 ICO 仅保留雾底 + 渐变笔划,精修外观 - 由 SVG 承载。 + 项目无 Pillow/cairosvg 等图像库,故以纯 Python 按像素光栅化:全透明底 + 青绿渐变 + (#22d3ee -> #2dd4bf)``>`` 折线与 ``_`` 下划线。沿用「全零 AND-mask + per-pixel + alpha」透明方案(现代渲染器按 alpha 通道处理透明)。方案 d05 的细圆环(0.5px)在 + 32px 下不足 1 像素、无法渲染,故 ICO 省略圆环、仅保留饱和 ``>_`` 笔划(符合「图标 + 为主角、环极弱」的设计意图),完整外观由 SVG 主版承载。 """ import math import struct width = height = 32 - radius = 8 scale = width / 24.0 # SVG 24 单位 -> 像素 - # 图标笔划品牌渐变:#667eea -> #8b5fd0(与 _LOGO_DEFS 同源;深端提亮达 WCAG 3:1) - r0, g0, b0 = 0x66, 0x7E, 0xEA - r1, g1, b1 = 0x8B, 0x5F, 0xD0 - # 容器底色:#f5f6fb(近白、极浅冷蓝紫);alpha 在背景填充处降至 0xB0 实现玻璃雾感 - tile_r, tile_g, tile_b = 0xF5, 0xF6, 0xFB - - def inside(x: int, y: int) -> bool: - """满铺圆角方块(四角半径 radius)包含判定.""" - cx = min(x, width - 1 - x) - cy = min(y, height - 1 - y) - if cx >= radius or cy >= radius: - return True - return (radius - cx) ** 2 + (radius - cy) ** 2 <= radius * radius - - # 像素缓冲:[B, G, R, A],默认全透明 + # 图标笔划青绿渐变:#22d3ee -> #2dd4bf(与 _LOGO_DEFS 同源) + r0, g0, b0 = 0x22, 0xD3, 0xEE + r1, g1, b1 = 0x2D, 0xD4, 0xBF + + # 像素缓冲:[B, G, R, A],默认全透明(全透底,无容器填充) buf: list[list[list[int]]] = [ [[0, 0, 0, 0] for _ in range(width)] for _ in range(height) ] - # 1) 玻璃雾卡圆角背景(#f5f6fb @ alpha 0xB0 ≈ 69%,半透明与 SVG #ffffff14 同向) - for y in range(height): - for x in range(width): - if not inside(x, y): - continue - buf[y][x] = [tile_b, tile_g, tile_r, 0xB0] - def brand_at(px: float, py: float) -> tuple[int, int, int]: - """按对角参数 t 返回 (px,py) 处的品牌渐变 RGB(与 SVG url(#cpBrand) 同向).""" + """按对角参数 t 返回 (px,py) 处的青绿渐变 RGB(与 SVG url(#cpBrand) 同向).""" t = (px + py) / (width + height - 2) return ( int(r0 + (r1 - r0) * t), @@ -104,7 +86,7 @@ def brand_at(px: float, py: float) -> tuple[int, int, int]: ) def stamp(px: float, py: float) -> None: - """以 (px, py) 为中心盖 ~3px 品牌渐变方块(笔划加粗,保证小尺寸可辨识).""" + """以 (px, py) 为中心盖 ~3px 青绿渐变方块(笔划加粗,保证小尺寸可辨识).""" ix, iy = int(round(px)), int(round(py)) cr, cg, cb = brand_at(px, py) for oy in (-1, 0, 1): @@ -114,18 +96,18 @@ def stamp(px: float, py: float) -> None: buf[ny][nx] = [cb, cg, cr, 255] def line(x0: float, y0: float, x1: float, y1: float) -> None: - """稠密采样 + stamp 形成品牌渐变粗线段.""" + """稠密采样 + stamp 形成青绿渐变粗线段.""" dist = math.hypot(x1 - x0, y1 - y0) steps = max(1, int(dist * 3)) for i in range(steps + 1): s = i / steps stamp(x0 + (x1 - x0) * s, y0 + (y1 - y0) * s) - # 2) terminal-2 笔划(SVG 24 单位 -> 像素;chevron 左移、下划线右移并延长,间距 4 单位) - # > 折线 (6,9)->(9,12)->(6,15);_ 下划线 (13,15)->(18,15) - line(6 * scale, 9 * scale, 9 * scale, 12 * scale) - line(9 * scale, 12 * scale, 6 * scale, 15 * scale) - line(13 * scale, 15 * scale, 18 * scale, 15 * scale) + # prompt 笔划(SVG 24 单位 -> 像素) + # > 折线 (5,7)->(10,12)->(5,17);_ 下划线 (13,17)->(19,17) + line(5 * scale, 7 * scale, 10 * scale, 12 * scale) + line(10 * scale, 12 * scale, 5 * scale, 17 * scale) + line(13 * scale, 17 * scale, 19 * scale, 17 * scale) # 3) 打包 ICO(BMP bottom-up;全零 AND-mask,信任 per-pixel alpha 实现圆角透明) pixel_rows: list[bytes] = [] @@ -227,13 +209,9 @@ def line(x0: float, y0: float, x1: float, y1: float) -> None: .header-left { display: flex; align-items: center; gap: 12px; } .logo { width: 32px; height: 32px; - background: rgba(255,255,255,.06); - border: 1px solid rgba(255,255,255,.12); - border-radius: 10px; display: flex; align-items: center; justify-content: center; - box-shadow: 0 4px 12px rgba(0,0,0,.24), inset 0 1px 0 rgba(255,255,255,.06); } - .logo svg { width: 20px; height: 20px; display: block; filter: drop-shadow(0 0 4px rgba(182,140,255,.35)); } + .logo svg { width: 28px; height: 28px; display: block; filter: drop-shadow(0 0 3px rgba(45,212,191,.3)); } h1 { font-size: 18px; font-weight: 600; color: var(--text-primary); letter-spacing: -.3px; } .header-right { display: flex; align-items: center; gap: 12px; } .badge { @@ -820,7 +798,7 @@ def line(x0: float, y0: float, x1: float, y1: float) -> None:
- +

Coding Proxy Dashboard

v-.-.-
@@ -2390,7 +2368,7 @@ def line(x0: float, y0: float, x1: float, y1: float) -> None: -""".replace("{{TERMINAL2}}", _TERMINAL2_PATHS).replace("{{LOGO_DEFS}}", _LOGO_DEFS) +""".replace("{{PROMPT}}", _PROMPT_PATHS).replace("{{LOGO_DEFS}}", _LOGO_DEFS) # ── 数据计算工具 ────────────────────────────────────────────────────────── From d2895c6e90e9240bbf97c125b09f9e4d682407a4 Mon Sep 17 00:00:00 2001 From: ThreeFish Date: Sat, 4 Jul 2026 10:44:13 +0800 Subject: [PATCH 3/3] =?UTF-8?q?build(version):=20=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7=E5=8D=87=E7=BA=A7=E8=87=B3=200.5.2a6;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - pyproject.toml version 0.5.2a5 -> 0.5.2a6 - CHANGELOG 定版 v0.5.2a6:品牌图标 d05(通透青绿圆环 + prompt >_) 与前置玻璃雾卡优化同主题归入本版首次发布(#274) 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist) Co-Authored-By: Aurelius Huang --- CHANGELOG.md | 5 ++++- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5574892..f862587 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,10 @@ ## [Unreleased] -- style(branding): 重设计 logo/favicon 为「通透青绿圆环 + Tabler prompt `>_` 笔划」(方案 d05):全透明底 + 青绿渐变(`#22d3ee` → `#2dd4bf`)细圆环(stroke 0.5,仅原 1/3、通透若隐)+ 饱和青绿渐变 `>_`(stroke 2.5),极细环与饱和笔划形成权重对比、`>_` 为视觉主角,青绿承载终端/代码语义;基础笔划改用 Tabler prompt(chevron `M5 7l5 5l-5 5` + 下划线 `M13 17l6 0`,下划线长 6 单位、不会小尺寸点化);渐变改 `gradientUnits="userSpaceOnUse"` 绝对坐标,修复纯水平下划线(包围盒高度 0)在默认 objectBoundingBox 渐变下不着色而「消失」的问题;`_LOGO_DEFS` / `_PROMPT_PATHS` 单一事实源统一供 SVG favicon、ICO 回退(省略 0.5px 细环、保留饱和笔划)与页面 logo 消费;`.logo` 容器改全透明、SVG 内嵌圆环 + 青绿 drop-shadow 辉光(实机验证); +## [v0.5.2a6](https://github.com/ThreeFish-AI/coding-proxy/releases/tag/v0.5.2a6) - 2026-07-04 + +- style(branding): 品牌图标(logo/favicon)迭代至「通透青绿圆环 + Tabler prompt `>_` 笔划」(方案 d05):全透明底 + 青绿渐变(`#22d3ee` → `#2dd4bf`)细圆环(stroke 0.5,仅原 1/3、通透若隐)+ 饱和青绿渐变 `>_`(stroke 2.5),极细环与饱和笔划形成权重对比、`>_` 为视觉主角,青绿承载终端/代码语义;基础笔划改用 Tabler prompt(chevron `M5 7l5 5l-5 5` + 下划线 `M13 17l6 0`,下划线长 6 单位、不会小尺寸点化);渐变改 `gradientUnits="userSpaceOnUse"` 绝对坐标,修复纯水平下划线(包围盒高度 0)在默认 objectBoundingBox 渐变下不着色而「消失」的问题;`_LOGO_DEFS` / `_PROMPT_PATHS` 单一事实源统一供 SVG favicon、ICO 回退(省略 0.5px 细环、保留饱和笔划)与页面 logo 消费;`.logo` 容器改全透明、SVG 内嵌圆环 + 青绿 drop-shadow 辉光(实机验证)(#274); +- style(branding): 品牌图标醒目度前置优化(同主题演进过程,已并入本版):容器由「淡色磨砂卡片」改为「玻璃雾卡」(半透明白 + hairline 描边环)与深色毛玻璃 header 语言统一、消除「亮白贴片」压制感,`>_` 笔划加粗 stroke-width 2→2.5 并撑开间距避免粘连、防止下划线小尺寸退化为圆点 (#274); ## [v0.5.2a5](https://github.com/ThreeFish-AI/coding-proxy/releases/tag/v0.5.2a5) - 2026-07-04 diff --git a/pyproject.toml b/pyproject.toml index 742b338..d352c01 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "coding-proxy" -version = "0.5.2a5" +version = "0.5.2a6" description = "A High-Availability, Transparent, and Smart Multi-Vendor Proxy for Claude Code. Support Claude Plans, GitHub Copilot, Google Antigravity, ZAI/GLM, MiniMax, Qwen, Xiaomi, Kimi, Doubao..." readme = "README.md" requires-python = ">=3.12"