Compare commits
2 Commits
3492f0cf1f
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
242a4e0dc1 | ||
|
|
86d100a9ad |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 524 B |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 861 KiB After Width: | Height: | Size: 162 KiB |
@@ -30,6 +30,13 @@
|
||||
- **修复(TDD,先红后绿)**: ① 新增 `assignSessions` —— 每个 live 会话只归属**最深**的包含项目(`buildProjects` 改用;`buildProjectDetail` 保留前缀匹配,单项目详情页语义不变);② 新增 `dropParentFolders` —— 丢弃"非 git 且包含其他已列项目"的父文件夹条目(discovery 阶段过滤,进缓存)。
|
||||
- **验证**: 新增 3 测(最深归属/父文件夹剔除/独立非 git 历史项目保留);`test/projects.test.ts` 29/29 绿;全量 `npm test` 53 files / **1473** 全绿;`tsc --noEmit` 干净。前端零改动("Active now" 分组消费 `sessions[]`,服务器修正后自然收敛)。
|
||||
|
||||
### ✅ 全端应用图标 "Orbit" + 托盘模板图(完成 — 2026-07-06,main,commit 86d100a)
|
||||
用户选定 "Orbit"(节点绕方块光标核环绕=agent 自主替你运行),品牌沿用桌面 `--accent #E3A64A` 琥珀金 + 暖近黑 `#100F0D`。矢量母版三份(App 圆角暖底 / iOS 满幅不透明 / 托盘纯黑透明加粗),`rsvg-convert`(`brew install librsvg`)栅格化铺各端:
|
||||
- **iOS/iPad**: `Assets.xcassets/AppIcon.appiconset`(单尺寸 1024 不透明,Xcode 自动生成全套;此前**无图标**)。构建验证 `AppIcon60x60@2x`/`76x76@2x~ipad` 入 Assets.car;模拟器主屏实拍确认。
|
||||
- **桌面 App**: `desktop/resources/icon.png`(圆角 1024)→ `npm run dist:mac` 重打包出新 icns + 156MB DMG(`dist-app/Web Terminal-0.1.0-arm64.dmg`),顺带带上 projects 修复。装机需 `xattr -cr` 清 quarantine(ad-hoc 签名 Gatekeeper)。
|
||||
- **桌面托盘**: `trayTemplate.png`/`@2x` 换成正确的 macOS **模板图**(黑形状+透明底,系统按亮/暗菜单栏自动染色)——根治"一坨白"。
|
||||
- **web/PWA**: `public/icon.svg` 矢量。**待办**: 分支/main 未推送;图标对比页(5 创新+5 经典)在 job scratchpad 未入库。
|
||||
|
||||
### ✅ iOS 客户端全面 UX/UI 打磨(完成 — 2026-07-05,分支 `feat/ios-client`,commit 660a404;精致原生方向)
|
||||
用户定方向「精致原生 + 可重构」(靛紫 #7C8CFF 强调、语义状态色、SF Mono 数字、系统材质)。编排 = 一个 ultracode `Workflow`(9 agents,4 阶段):3 路审计(易用性/视觉/无障碍,各 boot 两 sim 取证)→ **冻结 DesignSystem**(协调点,防各 agent 各挑配色)→ 4 组文件互斥并行套用 → 验收。
|
||||
- **审计**: 3 视角共产出 ~40 findings,共识根因=「无设计系统」——全 App stock 系统蓝、状态仅靠颜色(违反色+形,idle 蓝撞 unread 蓝)、gate 决策按钮 <44pt、间距/圆角魔数无刻度、数字非 tabular、缩略图纯黑块、gate 中英混排、reduceMotion 未处理。
|
||||
|
||||
|
After Width: | Height: | Size: 223 KiB |
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"images" : [
|
||||
{ "filename" : "AppIcon-1024.png", "idiom" : "universal", "platform" : "ios", "size" : "1024x1024" }
|
||||
],
|
||||
"info" : { "author" : "xcode", "version" : 1 }
|
||||
}
|
||||
1
ios/App/WebTerm/Resources/Assets.xcassets/Contents.json
Normal file
@@ -0,0 +1 @@
|
||||
{ "info" : { "author" : "xcode", "version" : 1 } }
|
||||
@@ -1,17 +1,43 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="512" height="512">
|
||||
<svg width="1024" height="1024" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0" stop-color="#1a1c26"/>
|
||||
<stop offset="1" stop-color="#0e0f13"/>
|
||||
<radialGradient id="bg" cx="32%" cy="25%" r="95%">
|
||||
<stop offset="0" stop-color="#2b2016"/>
|
||||
<stop offset="70%" stop-color="#13100c"/>
|
||||
<stop offset="100%" stop-color="#0b0a08"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="ring" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0" stop-color="#f2bd62"/>
|
||||
<stop offset="1" stop-color="#c4842b"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="fg" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0" stop-color="#9d7cff"/>
|
||||
<stop offset="1" stop-color="#7c8cff"/>
|
||||
<linearGradient id="core" x1="0.3" y1="0" x2="0.7" y2="1">
|
||||
<stop offset="0" stop-color="#f4c168"/>
|
||||
<stop offset="1" stop-color="#d99a3e"/>
|
||||
</linearGradient>
|
||||
<radialGradient id="node" cx="38%" cy="34%" r="72%">
|
||||
<stop offset="0" stop-color="#ffd688"/>
|
||||
<stop offset="1" stop-color="#e3a64a"/>
|
||||
</radialGradient>
|
||||
<radialGradient id="glow" cx="50%" cy="50%" r="50%">
|
||||
<stop offset="0" stop-color="#e3a64a" stop-opacity="0.42"/>
|
||||
<stop offset="100%" stop-color="#e3a64a" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<rect width="512" height="512" rx="112" fill="url(#bg)"/>
|
||||
<g fill="none" stroke="url(#fg)" stroke-width="36" stroke-linecap="round" stroke-linejoin="round">
|
||||
<polyline points="150,196 226,256 150,316"/>
|
||||
<line x1="268" y1="320" x2="372" y2="320"/>
|
||||
|
||||
<!-- warm-dark rounded-square ground (transparent corners for macOS/web) -->
|
||||
<rect x="0" y="0" width="1024" height="1024" rx="232" fill="url(#bg)"/>
|
||||
<rect x="1" y="1" width="1022" height="1022" rx="231" fill="none" stroke="#ffffff" stroke-opacity="0.05" stroke-width="2"/>
|
||||
|
||||
<!-- warmth behind the core -->
|
||||
<circle cx="512" cy="520" r="250" fill="url(#glow)"/>
|
||||
|
||||
<!-- orbit ring + node share one tilt so the node sits on the ring -->
|
||||
<g transform="rotate(-20 512 520)">
|
||||
<ellipse cx="512" cy="520" rx="330" ry="146" fill="none" stroke="url(#ring)" stroke-width="26" stroke-opacity="0.9"/>
|
||||
<!-- node on the ring (upper-right), with a faint motion trail -->
|
||||
<path d="M 610 407 A 330 146 0 0 1 772 431" fill="none" stroke="#e3a64a" stroke-width="18" stroke-linecap="round" stroke-opacity="0.28"/>
|
||||
<circle cx="772" cy="431" r="60" fill="url(#node)"/>
|
||||
</g>
|
||||
|
||||
<!-- the constant: a gold block cursor at the core -->
|
||||
<rect x="440" y="448" width="144" height="144" rx="30" fill="url(#core)"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 721 B After Width: | Height: | Size: 2.0 KiB |