Files
ycode/.workbuddy/memory/2026-10-17.md
T

22 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 2026-10-17
- 调研 OMP 与 Pi(pi agent)差异,产出 `docs/omp与pi-agent对比调研-2026-10-17.md`。
- 关键结论:omp = oh-my-pi(can1357/oh-my-pi,Stencil Labs,Pi 的 fork,上游最新 18.11.2);pi = Mario Zechner 的上游 Pi(repo 已迁至 earendil-works/pi,npm @earendil-works/pi-coding-agent v1.3.0)。两者 RPC 协议同源(NDJSON over stdio),omp 走"全内置"路线(31 工具、Rust 原生核心、子代理/计划/审批/MCP),pi 走极简可扩展路线(4 内置工具、无子代理/计划/内置权限)。YCode 现内核 omp.exe 18.6.3 属 omp,非上游 Pi。
- 设计并落地 YCode 应用图标:沿用 WorkBuddy 的 squircle + 135° 青绿渐变(`#0DC8A6 → #7ED968`)+ 负空间挖洞眼睛,造型改为奶油色小家伙(短耳=Y 的两臂,脸越出下缘形成探头感)。v13 之前试过 12 版,结论:靠手调贝塞尔画有机形状不稳,改用几何基元(胶囊耳+椭圆脸)后才可控。
- 产出:`build/icon.svg`、`build/icon-small.svg`(32px 以下切短耳熊版,阈值 48)、`build/icon.ico`(7 尺寸)、`build/icon.png`、`build/icon-preview.png`、`resources/icon.png`、`scripts/gen-icon.mjs`,命令 `npm run icon:build`。
- 主进程接线:`appIconPath()` + 三个 BrowserWindow 的 `icon` + `app.setAppUserModelId('com.ycode.app')`。`tsc -p tsconfig.node.json` 通过;真机任务栏效果未验证(本机 Electron GUI 起不来,`ELECTRON_RUN_AS_NODE=1`)。
- 项目遗留:`electron-vite@5` 要求 vite ^5–^7,项目装的是 vite 8,任何 `npm install` 都需 `--legacy-peer-deps`;`electron-builder` 仍未配置,`.exe` 文件图标无法落地。
- 细节记录见 `docs/YCode图标设计-2026-10-17.md`。
- 按用户要求把图标底色从青绿改为 `#2440E8 → #0FB9DE`(靛蓝→青),奶油色同步冷调化为 `#FAFDFF → #E4F1FD`,与 WorkBuddy 的青绿拉开差异;对比过 `#2C5BFF→#21D4E8`(偏软)与紫粉方案(偏消费类)。遗留:应用内 UI 主色仍是 `#00c29a`,图标蓝与界面绿并存,是否统一待定。
- 用户对蓝色不满意,最终定为 `#4F2BE8 → #A94BFF`(紫罗兰→品红),奶油色 `#FCFBFF → #EDE7FE`。选它的依据是奶油脸与底色亮端对比约 4:1,优于珊瑚橙 2.8:1。图标现为紫色、界面仍为绿色,尚未统一。
- 用户再要求「偏红色系」,最终定 `#C8102E → #FF4D6A`(绯红→玫红),奶油色 `#FFFAFA → #FFE8EC`;否决 `#9E0B22→#E23A2E`(太严肃)与 `#E03616→#FF8A4C`(红橙,对比仅 2.6:1)。图标红、界面绿(`#00c29a`)的不一致仍未处理,用户已连续改色四轮,若再改可直接给色板编号让他选。
- 最终版:深红 `#C8102E → #7E0817` + 五颗金星 `#FFE79B → #F0B233`(一大四小,人民/党的意象),构图由「脸占满」改为徽章式——小家伙缩 0.8 倍移到右下、星群占左上;小尺寸版保留一大两小作金色锚点。星群刻意不做成国旗精确构图以降低合规风险;文档已注明国旗法对商标/商业用途的限制。
- 修正:五颗星原先做成了近似同尺寸,顺序与比例都错。现按《国旗制法说明》重算:旗面 30×20,大星中心 (5,5) r3,小星 (10,2)(12,4)(12,7)(10,9) r1,大:小=3:1,小星一角尖对准大星中心(atan2 算旋转)。换算 k=6.4px/单位、原点 (-12,4),大星 r19.2、小星 r6.4;脚本 `scripts/star-layout.mjs`。兔子因此缩到 0.70 移到 (84,110),48px 以下用 0.84 版。背景用「多段透明渐变」模拟旗面光泽(模糊滤镜画褶皱在 64px 会糊成色块,已弃用)。
- 最终形态:**移除兔子,只留深红旗面 + 制式五角星**。k=10、原点 (-8,-4),大星 r30、小星 r10,星色 #F7CE72 @0.86(实测 #EEB367),旗面采样 #810B18。兔子与星群抢位、两头都做不干净,是弃用角色方案的原因。`build/icon-small.svg` 已删除,生成器改为单一矢量源(`pick()` 恒等),16px 下只能读出"红底+一颗星"。文档 `docs/YCode图标设计-2026-10-17.md` 已整体重写。
- 用户要求继续放大并右移取景,做到"第一眼认不出是红旗"。最终 k=16、原点 (-66,-16):大星 r48 被三边裁切,四颗小星从上/右/下各露一角,右侧两颗只剩 5px 尖角。放大时原点要同步左移,否则小星整体出框(k=16/20 配旧原点就会全挤出画面)。若要一眼认出国旗,回退 k=8.8 + 原点 (-2,1)。
- 兔子位置反复:0.74/(84,94) 右脸被圆角切掉 → 0.76/(74,90) → 用户选了「底部居中探头」并要更大 → 最终 **1.0 倍 / 中心 (64,106)**,下巴被边框切掉、只露耳朵额头和眼睛。经验:判断"位置怪"要先看是否被圆角切脸,而不是只看坐标。眼睛改为实心 #B0112A(不再用 mask 洞,洞会透出底下金星)。
- 收尾:用户反馈任务栏里图标偏小。量截图得 WorkBuddy 占 24px 槽、我们只占 20px——原版窗口图标是贴边裁的,不是 PNG 里那 80% 留白。解决:整幅内容包一层 `scale(1.2)`,内容区从 80% 提到约 96.6%。另加 `build/sizes/` 输出 13 档备用 PNG(16~1024)。
- 二次调整:95.5% 仍显小,改为 `scale(1.25)` → 内容 99.4%(满幅)。`resources/tray.png`(32px) 一并产出。
- 接线:主进程新增 `createTray()`(图标缺失只 warn 不抛错,左键唤回窗口,右键"显示/退出");`package.json` 加 electron-builder 的 `build` 段(appId com.ycode.app、win.icon=build/icon.ico、extraResources 复制 icon/tray、`npmRebuild:false` 绕开 node-pty 的 Spectre 编译失败)与 `dist` / `dist:installer` 脚本。用户明确**不要我跑打包**,`.exe` 文件图标需他自己执行 `npm run dist` 才有。