dsh-claude-style 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/CHANGELOG.md +56 -2
  2. package/LICENSE +9 -0
  3. package/README.en.md +4 -3
  4. package/README.md +4 -15
  5. package/docs/STYLE.md +22 -14
  6. package/docs/architecture.md +74 -0
  7. package/fonts/GoogleSansFlexPicker.woff2 +0 -0
  8. package/fonts/OFL-GoogleSansFlex.txt +93 -0
  9. package/lib/client.js +710 -1485
  10. package/lib/index.js +6 -23
  11. package/lib/model-descriptions.json +225 -209
  12. package/package.json +7 -2
  13. package/docs/REFACTOR.md +0 -294
  14. package/lib/icons/providers/ClaudeApi.png +0 -0
  15. package/lib/icons/providers/README.md +0 -13
  16. package/lib/icons/providers/TeamoRouter-icon-dark.png +0 -0
  17. package/lib/icons/providers/a6-icon.png +0 -0
  18. package/lib/icons/providers/aicodemirror.svg +0 -19
  19. package/lib/icons/providers/aicoding.svg +0 -20
  20. package/lib/icons/providers/aihubmix-color.svg +0 -1
  21. package/lib/icons/providers/algocode.svg +0 -51
  22. package/lib/icons/providers/alibaba.svg +0 -1
  23. package/lib/icons/providers/amuxapi-icon.svg +0 -13
  24. package/lib/icons/providers/anthropic.svg +0 -1
  25. package/lib/icons/providers/apikeyfun.png +0 -0
  26. package/lib/icons/providers/apinebula_icon.png +0 -0
  27. package/lib/icons/providers/atlascloud_icon.png +0 -0
  28. package/lib/icons/providers/aws.svg +0 -1
  29. package/lib/icons/providers/azure.svg +0 -1
  30. package/lib/icons/providers/baidu.svg +0 -1
  31. package/lib/icons/providers/bailian.svg +0 -1
  32. package/lib/icons/providers/bytedance.svg +0 -1
  33. package/lib/icons/providers/byteplus.png +0 -0
  34. package/lib/icons/providers/catcoder.svg +0 -1
  35. package/lib/icons/providers/ccsub.svg +0 -4
  36. package/lib/icons/providers/chatglm.svg +0 -1
  37. package/lib/icons/providers/cherryin.png +0 -0
  38. package/lib/icons/providers/claude.svg +0 -1
  39. package/lib/icons/providers/claudecn.png +0 -0
  40. package/lib/icons/providers/claw.svg +0 -22
  41. package/lib/icons/providers/cloudflare.svg +0 -1
  42. package/lib/icons/providers/code0.png +0 -0
  43. package/lib/icons/providers/cohere.svg +0 -1
  44. package/lib/icons/providers/copilot.svg +0 -1
  45. package/lib/icons/providers/crazyrouter.svg +0 -1
  46. package/lib/icons/providers/cubence.svg +0 -9
  47. package/lib/icons/providers/deepseek.svg +0 -1
  48. package/lib/icons/providers/doubao.svg +0 -1
  49. package/lib/icons/providers/eflowcode.png +0 -0
  50. package/lib/icons/providers/etok.png +0 -0
  51. package/lib/icons/providers/fenno-icon.webp +0 -0
  52. package/lib/icons/providers/gemini.svg +0 -1
  53. package/lib/icons/providers/gemma.svg +0 -1
  54. package/lib/icons/providers/github.svg +0 -1
  55. package/lib/icons/providers/githubcopilot.svg +0 -1
  56. package/lib/icons/providers/google.svg +0 -1
  57. package/lib/icons/providers/googlecloud.svg +0 -1
  58. package/lib/icons/providers/grok.svg +0 -1
  59. package/lib/icons/providers/hermes.png +0 -0
  60. package/lib/icons/providers/huawei.svg +0 -1
  61. package/lib/icons/providers/huggingface.svg +0 -1
  62. package/lib/icons/providers/hunyuan.svg +0 -1
  63. package/lib/icons/providers/huoshan.png +0 -0
  64. package/lib/icons/providers/kimi.svg +0 -1
  65. package/lib/icons/providers/lioncc.svg +0 -6
  66. package/lib/icons/providers/longcat-color.svg +0 -1
  67. package/lib/icons/providers/mcp.svg +0 -1
  68. package/lib/icons/providers/meta.svg +0 -1
  69. package/lib/icons/providers/micu.svg +0 -23
  70. package/lib/icons/providers/midjourney.svg +0 -1
  71. package/lib/icons/providers/minimax.svg +0 -1
  72. package/lib/icons/providers/mistral.svg +0 -1
  73. package/lib/icons/providers/modelscope-color.svg +0 -1
  74. package/lib/icons/providers/nekocode-icon.png +0 -0
  75. package/lib/icons/providers/newapi.svg +0 -1
  76. package/lib/icons/providers/notion.svg +0 -1
  77. package/lib/icons/providers/novita.svg +0 -11
  78. package/lib/icons/providers/nvidia.svg +0 -1
  79. package/lib/icons/providers/ollama.svg +0 -1
  80. package/lib/icons/providers/openai.svg +0 -1
  81. package/lib/icons/providers/opencode-logo-light.svg +0 -1
  82. package/lib/icons/providers/openrouter.svg +0 -1
  83. package/lib/icons/providers/packycode.svg +0 -1
  84. package/lib/icons/providers/palm.svg +0 -1
  85. package/lib/icons/providers/pateway.jpg +0 -0
  86. package/lib/icons/providers/perplexity.svg +0 -1
  87. package/lib/icons/providers/pipellm.png +0 -0
  88. package/lib/icons/providers/ppio.svg +0 -1
  89. package/lib/icons/providers/qianwenai.svg +0 -1
  90. package/lib/icons/providers/qiniu.png +0 -0
  91. package/lib/icons/providers/qwen.svg +0 -1
  92. package/lib/icons/providers/qwencloud.svg +0 -1
  93. package/lib/icons/providers/rc.svg +0 -1
  94. package/lib/icons/providers/relaxcode.png +0 -0
  95. package/lib/icons/providers/runapi.jpg +0 -0
  96. package/lib/icons/providers/shengsuanyun.svg +0 -4
  97. package/lib/icons/providers/siliconflow.svg +0 -1
  98. package/lib/icons/providers/sssaicode.svg +0 -73
  99. package/lib/icons/providers/stability.svg +0 -1
  100. package/lib/icons/providers/stepfun.svg +0 -10
  101. package/lib/icons/providers/subrouter.svg +0 -30
  102. package/lib/icons/providers/sudocode-us.png +0 -0
  103. package/lib/icons/providers/sudocode.png +0 -0
  104. package/lib/icons/providers/tencent.svg +0 -1
  105. package/lib/icons/providers/ucloud.svg +0 -1
  106. package/lib/icons/providers/unity2.png +0 -0
  107. package/lib/icons/providers/vercel.svg +0 -1
  108. package/lib/icons/providers/wenxin.svg +0 -1
  109. package/lib/icons/providers/xai.svg +0 -1
  110. package/lib/icons/providers/xiaomimimo.svg +0 -1
  111. package/lib/icons/providers/xycai-icon.png +0 -0
  112. package/lib/icons/providers/yi.svg +0 -1
  113. package/lib/icons/providers/zeroone.svg +0 -1
  114. package/lib/icons/providers/zetaapi-icon.png +0 -0
  115. package/lib/icons/providers/zhipu.svg +0 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dsh-claude-style",
3
3
  "description": "Claude Code Desktop theme for DeepSeek Harness (dsh) web GUI — visual & interaction overhaul",
4
- "version": "0.3.0",
4
+ "version": "0.3.2",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
7
7
  "scripts": {
@@ -15,6 +15,9 @@
15
15
  "./package.json": "./package.json"
16
16
  },
17
17
  "dsh": {
18
+ "engines": {
19
+ "dsh": ">=0.1.5-rc.2"
20
+ },
18
21
  "bundle": {
19
22
  "patch": "./cordis.patch.yml"
20
23
  },
@@ -35,7 +38,9 @@
35
38
  "fonts/JetBrainsMonoVariable.ttf",
36
39
  "fonts/JetBrainsMonoItalicVariable.ttf",
37
40
  "fonts/OFL.txt",
38
- "fonts/AUTHORS.txt"
41
+ "fonts/AUTHORS.txt",
42
+ "fonts/GoogleSansFlexPicker.woff2",
43
+ "fonts/OFL-GoogleSansFlex.txt"
39
44
  ],
40
45
  "keywords": [
41
46
  "dsh",
package/docs/REFACTOR.md DELETED
@@ -1,294 +0,0 @@
1
- # dsh-claude-style 架构重构规划
2
-
3
- > 交付给开发 Agent 的执行文档。目标:在不改变任何运行时行为的前提下,把
4
- > 现有"Zone 级"分片细化为"特性级"分片,消除单文件冗长和闭包隐式耦合。
5
- >
6
- > **总原则:阶段 1–3 必须做到构建产物 lib/client.js 逐字节不变;阶段 4
7
- > 只允许结构变化,不允许行为变化。**
8
-
9
- ## 1. 背景与硬约束(先读)
10
-
11
- - 运行时约束:DSH 模块加载器**没有相对 require、没有资产 URL**,所以
12
- `scripts/build.mjs` 把 `src/` 碎片**按固定顺序逐字拼接**进一个工厂函数
13
- 作用域,生成单文件 `lib/client.js`。**这个架构保留**,不引入
14
- esbuild/rollup 等打包器,不引入任何新依赖。
15
- - 碎片规则(现状即如此,重构后继续遵守,并在 build 里加守门):
16
- - 所有碎片共享一个工厂作用域,**禁止使用 import/export**;
17
- - 每个碎片保持 **4 空格基础缩进**;
18
- - 风格保持 ES5(var、function 声明),与现状一致;
19
- - 跨碎片引用靠共享作用域:function 声明会提升,且运行时调用都发生在
20
- apply() 之后,因此顺序安全;但清单顺序仍须按 §6 固定。
21
- - 宿主端 `lib/index.js`、文案数据 `src/model-descriptions.json`、
22
- `skin.json`、`cordis.patch.yml` **不在本次重构范围内**。
23
-
24
- ## 2. 现状问题(重构动机,仅供理解)
25
-
26
- | 文件 | 行数 | 问题 |
27
- |---|---|---|
28
- | `src/overrides.js` | 1928 | 一个 `installOverrides(ctx)` 函数塞了 5 个特性;Zone 5 调度器直接读各特性的闭包变量(`modelBtn`/`modelPop`/`accountPopover`/`modelBodySig` 等);`var MARGIN = 8` 在同一作用域重复声明(986、1223 行);章节编号已乱(4.4 排在 4.3 前) |
29
- | `src/context.js` | 357 | 混合 4 种职责:宿主访问器、prefs store、model copy store、i18n |
30
- | `src/styles/components.css` | 742 | 权限段、账户弹层、模型选择器、页脚接管、第三方修复、设置页 6 块混排 |
31
- | `src/styles/composer.css` | 710 | hero / 输入卡片 / 会话内单行 composer 3 块混排 |
32
-
33
- ## 3. 目标目录结构
34
-
35
- ```
36
- src/
37
- constants.js # 不变(原 Zone 1)
38
- context/
39
- host.js # 宿主访问器
40
- prefs.js # 偏好 store
41
- model-copy.js # 文案文档 store
42
- i18n.js # 本地化取值
43
- overrides/
44
- popover-utils.js # 锚定定位 + 悬停开闭(新提取的共享帮助器)
45
- copy.js # 原 4.1 文案改写
46
- permissions.js # 原 4.2 权限段控件 + 会话内弹层
47
- model-picker.js # 原 4.4 模型选择器
48
- account-footer.js # 原 4.3 账户页脚 + 弹层
49
- scheduler.js # 原 Zone 5 调度与生命周期
50
- settings.js # 不变(设置页)
51
- entry.js # 重写为编排器(见 §5)
52
- styles/
53
- tokens.css # 不变
54
- typography.css # 不变
55
- chrome.css # 不变
56
- composer/
57
- hero.css # composer.css 第 1–45 行(hero 品牌区,gate 标记之前)
58
- card.css # composer.css 第 46–246 行(含 @composer-gate 标记)
59
- inline.css # composer.css 第 247 行至末尾
60
- sidebar.css # 不变
61
- components/
62
- permissions.css # components.css 第 1–136 行
63
- account-footer.css # components.css 第 137–261 行
64
- model-picker.css # components.css 第 262–501 行
65
- footer-takeover.css # components.css 第 502–648 行
66
- third-party.css # components.css 第 649–683 行(agy-link 修复)
67
- settings.css # components.css 第 684 行至末尾
68
- ```
69
-
70
- **CSS 切分必须严格按上表边界整块移动**,保证拼接后的最终 CSS 与现状
71
- 逐字节一致(仅文件衔接处的空行可差)。行号以切分当时的文件为准,动手前
72
- 先以各 `/* ---------- ... ---------- */` 区块注释复核边界。
73
-
74
- ## 4. 逐文件映射(JS)
75
-
76
- ### context/(来自 src/context.js,纯移动、不改逻辑)
77
-
78
- | 新文件 | 移入的函数/变量 |
79
- |---|---|
80
- | `context/host.js` | `findAccessTrigger`、`currentSessionId`、`currentSession`、`currentPreset`、`getUsername`、`hostCtx`、`setHostContext` |
81
- | `context/prefs.js` | `prefs`、`prefsRevision`、`prefsAvailable`、`prefsListeners`、`readPrefs`、`subscribePrefs`、`adoptPrefs`、`loadPrefs`、`normalizePrefs`、`savePrefs`、`applyBrand` |
82
- | `context/model-copy.js` | `modelCopy`/`modelCopyRequested`/`modelCopyListeners`、`onModelCopyLoaded`、`loadModelCopy`、`indexModelCopy`、`normalizeModelId` |
83
- | `context/i18n.js` | `activeLocale`、`localized`、`copyLabel`、`settingsCopy` |
84
-
85
- 依赖方向:i18n → model-copy → constants;prefs → constants。清单顺序即此序。
86
-
87
- ### overrides/(来自 src/overrides.js,阶段 4,含结构重构)
88
-
89
- | 新文件 | 移入内容 |
90
- |---|---|
91
- | `popover-utils.js` | 新提取:`POPOVER_MARGIN = 8`(替换两处重复的 `var MARGIN`);`positionAnchoredPopover(trigger, pop, opts)` 统一 `positionModelPopovers`/`positionAccountPopover` 的锚定几何;`createHoverIntent(open, close, delay)` 统一 `scheduleCloseModel`/`cancelCloseModel` 与 `scheduleClosePopover`/`cancelClosePopover` 两套定时 |
92
- | `copy.js` | `HINT_SOURCES`、`rewriteHeadline`、`isHeroView`、`isComposerActive`、`rewriteHint`、`pickRandomSpinnerVerb`、`rewriteTurnStatus` |
93
- | `permissions.js` | `buildSegments`、`closePermMenu`、`buildPermTriggerAndPopover`、`openPerm`、`updatePermState`、`submitPreset`、`openShippedGate`、`seek`、`pick`、`syncAttachmentState`、`mergeStatsIntoRow`、`syncSegments`、`syncChatTabComposer` |
94
- | `model-picker.js` | `exactModelCopy`、`familyModelCopy`、`tierModelCopy`、`cancelCloseModel`、`scheduleCloseModel`、`closeModelPopovers`、`openModelPopover`、`openModelSub`、`currentModelSessionId`、`dropModelSubscription`、`modelDirectory`、`modelSnapshot`、`modelCurrent`、`modelEffort`、`modelDescription`、`modelEl`、`MODEL_CHECK_SVG`/`MODEL_CHEVRON_SVG`/`MODEL_CHEVRON_DOWN_SVG`、`buildModelOption`、`buildModelCell`、`pickModel`、`pickEffort`、`renderModelBody`、`renderModelSub`、`positionModelPopovers`、`ensureModelChrome`、`syncModelControl`,以及原 565–579 行的特性状态变量 |
95
- | `account-footer.js` | `openPopover`、`closePopover`、`togglePopover`、`scheduleClosePopover`、`cancelClosePopover`、`positionAccountPopover`、`syncPopoverItems`、`syncFooterActionVisibility`、`footerEntriesOf`、`markFooterHiddenBranches`、`removeActionMirror`、`removeEmbedMirror`、`entryIsActionLike`、`textExcludingOverlays`、`syncEmbedMirror`、`INTERACTIVE_SELECTOR`、`resolveEmbedActivator`、`hasOverlayAncestor`、`findFooterTrigger`、`dropAccountFooter`、`syncAccountFooter`,以及原 1138–1139 行的特性状态变量 |
96
- | `scheduler.js` | `onGlobalPointerDown`、`onGlobalKeyDown`、`onCardPointerDown`、`onFixedPopoverViewportChange`、`onLocaleChange`、`schedule`、MutationObserver/ResizeObserver 装配、问候语定时器、全部退订清理 |
97
-
98
- ## 5. 核心设计变更:ui 句柄注册表(阶段 4 的灵魂)
99
-
100
- 现状 Zone 5 直接读各特性的闭包变量。重构后每个特性是一个顶层安装函数,
101
- **入参 (ctx, ui),返回 teardown 函数**,并把自己的对外句柄挂到 ui 上。
102
- 调度器只认识句柄,不认识任何特性内部变量。
103
-
104
- ### 句柄契约(签名固定,不得增减)
105
-
106
- ```js
107
- ui.copy = {
108
- sync: ..., // rewriteHeadline + rewriteHint + rewriteTurnStatus
109
- syncGreeting: ..., // 仅 rewriteHeadline(给每分钟滚动的问候语定时器)
110
- }
111
- ui.permissions = {
112
- sync: ..., // syncAttachmentState + mergeStatsIntoRow + syncSegments + syncChatTabComposer
113
- closeMenu: ..., // closePermMenu
114
- }
115
- ui.model = {
116
- sync: ..., // syncModelControl
117
- close: ..., // closeModelPopovers
118
- owns: ..., // (target) => target 是否落在 modelBtn/modelPop/modelSubPop 任一之内
119
- reposition: ..., // positionModelPopovers
120
- invalidateCopy: ..., // modelBodySig = '' ; modelSubSig = '' (locale/prefs/copy 变化时)
121
- teardown: ..., // cancelCloseModel + dropModelSubscription + 状态归零(现 teardown 中模型相关段)
122
- }
123
- ui.footer = {
124
- sync: ..., // syncAccountFooter
125
- close: ..., // closePopover
126
- owns: ..., // (target) => target 是否落在 accountBtn/accountPopover 内
127
- isOpen: ..., // () => accountPopover 存在且 data-open === 'true'
128
- reposition: ..., // positionAccountPopover
129
- }
130
- ```
131
-
132
- ### entry.js 重写为编排器
133
-
134
- `apply(ctx)` 内的装配顺序固定为:
135
-
136
- ```js
137
- var ui = {}
138
- var teardowns = []
139
- teardowns.push(installCopy(ctx, ui))
140
- teardowns.push(installPermissions(ctx, ui))
141
- teardowns.push(installModelPicker(ctx, ui))
142
- teardowns.push(installAccountFooter(ctx, ui))
143
- teardowns.push(installScheduler(ctx, ui)) // 最后装,回调中惰性读 ui 句柄
144
- var stopSettings = installSettingsSection(ctx)
145
- // ctx.effect 清理:倒序跑 teardowns + stopSettings + 现有 body 属性清理
146
- ```
147
-
148
- `installOverrides` 这个名字随 Zone 概念一起废弃。
149
-
150
- ### scheduler.js 的职责边界
151
-
152
- - 拥有:RAF 合并的 `schedule()`(体内改为调用 `ui.copy.sync()`、
153
- `ui.permissions.sync()`、`ui.model.sync()`、`ui.footer.sync()`,以及
154
- `ui.footer.isOpen() && ui.footer.reposition()`)、MutationObserver、
155
- composer 卡片的 ResizeObserver、问候语 setInterval(调
156
- `ui.copy.syncGreeting()`)、全局 pointerdown/keydown/resize/scroll
157
- 监听、locale/prefs/modelCopy 三个订阅(回调统一为:先
158
- `ui.model.invalidateCopy()` 再 `schedule()`)。
159
- - 全局事件中的特性判断一律走句柄:`onGlobalPointerDown` 用
160
- `ui.model.owns(target)` / `ui.footer.owns(target)`;Escape 用三个
161
- close 句柄。
162
- - Enter 发送、Ctrl+, 打开设置、卡片点击聚焦这三个全局键鼠逻辑**留在
163
- scheduler**(它们是全局行为,不属于任何单一特性)。
164
- - 注意现状 `loadPrefs()` 被 Zone 5 和 `installSettingsSection` 各调一次:
165
- 重构后由 scheduler 统一调用,`installSettingsSection` 里的那次删除。
166
- (`loadModelCopy` 有 `modelCopyRequested` 幂等保护,两处保留无妨;
167
- `loadPrefs` 没有幂等保护,必须只留一处。)
168
-
169
- ## 6. build.mjs 改造(阶段 1)
170
-
171
- 1. 顶部新增两个有序清单,替换 `main()` 里硬编码的 `fragment(...)` 调用
172
- 和现有 `STYLE_FILES`:
173
-
174
- ```js
175
- const FRAGMENTS = [
176
- 'constants.js',
177
- 'context/host.js',
178
- 'context/prefs.js',
179
- 'context/model-copy.js',
180
- 'context/i18n.js',
181
- 'overrides/popover-utils.js',
182
- 'overrides/copy.js',
183
- 'overrides/permissions.js',
184
- 'overrides/model-picker.js',
185
- 'overrides/account-footer.js',
186
- 'overrides/scheduler.js',
187
- 'settings.js',
188
- 'entry.js',
189
- ]
190
-
191
- // gate: true 表示该样式表内含 /* @composer-gate */ 标记,走 gateComposerScope
192
- const STYLE_FILES = [
193
- { file: 'tokens.css' },
194
- { file: 'typography.css' },
195
- { file: 'chrome.css' },
196
- { file: 'composer/hero.css' },
197
- { file: 'composer/card.css', gate: true },
198
- { file: 'composer/inline.css', gate: true },
199
- { file: 'sidebar.css' },
200
- { file: 'components/permissions.css' },
201
- { file: 'components/account-footer.css' },
202
- { file: 'components/model-picker.css' },
203
- { file: 'components/footer-takeover.css' },
204
- { file: 'components/third-party.css' },
205
- { file: 'components/settings.css' },
206
- ]
207
- ```
208
-
209
- 注意:`@composer-gate` 标记**只保留在 composer/card.css**(它在原文件
210
- 第 47 行,正好落在 card 段首);hero 段在标记之前、不需要门;inline 段
211
- 原本全在标记之后——切分时要为 inline.css 重新处理:把整段视为已盖门
212
- 内容,做法是**给 inline.css 文件首行补一个 @composer-gate 标记并设
213
- gate: true**(这样 hero/card/inline 三个文件全部 gate: true,清单更
214
- 一致,守门逻辑不变)。拼接顺序必须严格等于上表——这是产物逐字节不变
215
- 的前提。
216
-
217
- 2. `HEADER` 里的目录注释改为从两个清单自动生成,杜绝文档漂移。
218
- 3. 新增碎片守门(任一违规即构建失败):
219
- - 碎片匹配 `/^[ \t]*(import|export)[ \t]/m` → 报错并指出文件;
220
- - 碎片的非空行若不以前 4 个空格开头(注释续行 ` * ` 也满足,因为它
221
- 以空格开头)→ 报错并指出文件与行号。
222
- 4. 构建日志改为报告碎片数与样式表数(从清单取长度)。
223
-
224
- ## 7. 分阶段执行与验收
225
-
226
- ### 阶段 0:基线
227
- - 跑 `npm run build`,把 `lib/client.js` 复制为 `.debug/baseline-client.js`。
228
-
229
- ### 阶段 1:build.mjs 清单化 + 守门(不改任何 src 内容)
230
- - 清单先填**现有**文件名(constants.js、context.js、overrides.js、
231
- settings.js、entry.js 与现有 6 个 css)。
232
- - 验收:`npm run build` 后 `lib/client.js` 与基线**逐字节相同**
233
- (`git diff --no-index` 为空)。
234
-
235
- ### 阶段 2:context.js 拆分(纯移动)
236
- - 按 §4 表移动,不改任何函数体。
237
- - 验收:构建产物与基线逐字节相同。
238
-
239
- ### 阶段 3:CSS 拆分(纯移动)
240
- - 按 §3 边界整块移动,更新 STYLE_FILES。
241
- - 验收:构建产物与基线逐字节相同;`gateComposerScope` 的"未盖门即报错"
242
- 检查仍然生效(可故意删一条规则的门验证报错,再还原)。
243
-
244
- ### 阶段 4:overrides.js 拆分 + ui 注册表(唯一动结构的阶段)
245
- - 先做纯移动把 5 个特性切成文件(此时调度器仍在原位置、仍读闭包变量,
246
- 产物可保持逐字节一致),再做 ui 句柄化与 entry 编排器化。
247
- - `popover-utils.js` 的 `positionAnchoredPopover`/`createHoverIntent`
248
- 提取放本阶段;提取时必须保持两处弹层现有定位结果像素级一致
249
- (先抽象、逐参数对照,再替换调用点)。
250
- - 验收:
251
- 1. `npm run build` 通过(vm 语法门);
252
- 2. 无 `MARGIN` 重复声明;scheduler.js 中 grep 不到
253
- `modelBtn`/`modelPop`/`accountPopover`/`modelBodySig` 等特性内部
254
- 变量;
255
- 3. 人工冒烟清单(§8)全过。
256
-
257
- ### 阶段 5(可选,单独提交):文案数据外移
258
- - `SPINNER_VERBS`、`PERMISSION_SEGMENTS`/`PERMISSION_OPTIONS`、
259
- `HINT_SOURCES` 迁入 `src/copy.json`,由 build.mjs 读取、校验后以内联
260
- var 声明注入 bundle(复用现有 JSON 校验思路)。**不做也不影响验收。**
261
-
262
- ## 8. 人工冒烟清单(阶段 4 验收用)
263
-
264
- 在 DSH web GUI 中逐项验证(与重构前行为完全一致才算过):
265
-
266
- 1. 新会话页:时段问候语出现且每分钟翻转不错位;composer hint 被改写;
267
- 2. 发送一条消息:思考中显示 Claude spinner 动词且同一轮内稳定;
268
- 3. 权限段控件:Read/Edit/Auto 三态切换;会话内弹层可开可关;
269
- Auto 触发宿主的风险确认;
270
- 4. 模型选择器:两级弹层开/关、悬停桥、选模型、选推理档位、描述行跟随
271
- 界面语言;Escape 与点击外部均关闭;
272
- 5. 账户页脚:悬停/点击开弹层(受 autoPopover 偏好控制)、定位不漂移、
273
- 折叠 rail 模式正常;
274
- 6. Ctrl+, 打开设置;设置页 4 个控件(品牌/折叠页脚/悬停弹层/输入区
275
- 范围)切换后刷新仍保持;
276
- 7. Enter 发送、Shift+Enter 换行、IME 组合输入不被截获;
277
- 8. 切换界面语言后模型选择器文案即时跟随;
278
- 9. 重载插件(或刷新页面)后无残留 DOM/监听,控制台无报错。
279
-
280
- ## 9. 收尾
281
-
282
- - grep 全仓 "Zone" 字样的注释与文档(含 `docs/STYLE.md`、README、
283
- build.mjs 头注释),按新结构改写;
284
- - 变更写入 `CHANGELOG.md`;
285
- - 完成后每个 src 文件应 ≤ 约 650 行,最大的应是
286
- `overrides/model-picker.js` 与 `overrides/account-footer.js`(各约
287
- 550–600 行);若超过,再评估二次拆分,不在本次范围。
288
-
289
- ## 10. 非目标(明确不做)
290
-
291
- - 不改任何视觉样式与交互行为;
292
- - 不引入打包器/依赖/TypeScript;
293
- - 不动 `lib/index.js`(宿主端)、`src/model-descriptions.json`;
294
- - 不动 `src/settings.js` 的组件实现(仅它在清单中的位置不变)。
Binary file
@@ -1,13 +0,0 @@
1
- # Provider icons
2
-
3
- Vendored from [farion1231/cc-switch](https://github.com/farion1231/cc-switch)
4
- `src/icons/extracted/` (MIT License, Copyright (c) 2025 Jason Young).
5
-
6
- - `index.ts` declares the inline SVG / imported asset table.
7
- - `metadata.ts` carries display names, categories, keywords and default colours.
8
- - `scripts/build.mjs` parses both and emits `PROVIDER_ICONS`,
9
- `PROVIDER_ICON_URL_KEYS` and `PROVIDER_ICON_METADATA` into the bundle.
10
- - Imported/raster files are copied to `lib/icons/providers/` and served by the host
11
- half under `/dsh-claude-style/icons/providers/`.
12
-
13
- Brand names and logos remain trademarks of their respective owners.
Binary file
@@ -1,19 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <!-- Creator: CorelDRAW -->
4
- <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="1209px" height="1255px" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
5
- viewBox="0 0 1017.97 1056.47"
6
- xmlns:xlink="http://www.w3.org/1999/xlink"
7
- xmlns:xodm="http://www.corel.com/coreldraw/odm/2003">
8
- <defs>
9
- <style type="text/css">
10
- <![CDATA[
11
- .fil0 {fill:#E4906E;fill-rule:nonzero}
12
- ]]>
13
- </style>
14
- </defs>
15
- <g id="圖層_x0020_1">
16
- <metadata id="CorelCorpID_0Corel-Layer"/>
17
- <path class="fil0" d="M944.92 1014.53c-17.29,-9.23 -33.98,-19.28 -50.08,-30.16 -5.39,-3.65 -14.99,-11.7 -28.81,-24.16 -6.06,-5.47 -14.07,-13.51 -24.03,-24.13 -15.15,-16.17 -29.61,-29.9 -41.69,-40.4 -3.98,-3.46 -14.2,-11.02 -30.68,-22.69 -6.24,-4.42 -12.88,-12.15 -18.63,-19.09 -23.98,-29.04 -49.53,-58.44 -76.66,-88.19 -11.93,-13.1 -25.64,-26.11 -35.61,-36.5 -28.72,-29.92 -51.92,-51.96 -78.23,-79.66 -11.24,-11.83 -20.52,-21.3 -27.85,-28.41 -0.56,-0.53 -1.3,-0.84 -2.08,-0.84 -0.51,0 -1.02,0.14 -1.47,0.39 -9.76,5.54 -17.53,14.33 -24.91,23.31 -10.71,13.01 -21.86,26.65 -33.44,40.91 -4.37,5.38 -7.9,9.46 -10.56,12.24 -5.43,5.67 -9.83,10.88 -15.08,15.39 -9.57,8.23 -19.57,16.01 -29.98,23.31 -14.73,10.32 -29.07,20.29 -43.04,29.9 -5.22,3.61 -13.68,9.81 -20.14,15.41 -25.71,22.32 -53.59,46.12 -83.65,71.41 -9.46,7.95 -19.65,16.88 -34.02,29.22 -25.66,22.03 -52.94,40.06 -81.67,55.65 -7.71,4.19 -14.15,8.2 -19.32,12.01 -19.3,14.23 -33.84,25.65 -43.62,34.28 -25.99,22.91 -43.04,37.82 -51.16,44.73 -9.19,7.8 -18.6,17.05 -28.42,25.54 -2.71,2.35 -5.7,3.03 -8.96,2.01 -0.78,-0.24 -1.25,-1.02 -1.1,-1.82 0.36,-2 1.19,-4.1 2.47,-6.32 6.86,-11.81 14.46,-23.09 19.95,-36.03 3.48,-8.23 7.87,-16.52 13.18,-24.89 2.03,-3.19 4.73,-8.77 8.11,-16.74 2.98,-7.02 7.34,-15.05 13.07,-24.12 5.79,-9.14 16,-23.36 30.63,-42.67 7.66,-10.11 19.49,-23.6 35.49,-40.47 4.9,-5.16 12.21,-11.87 21.92,-20.14 12.12,-10.31 23.53,-21.19 34.23,-32.65 11.73,-12.54 16.99,-22.33 27.39,-40.8 2.37,-4.19 6.49,-9.43 12.37,-15.71 8.27,-8.82 17,-17.23 26.21,-25.23 30.11,-26.18 55.17,-47.43 75.17,-63.76 8.66,-7.08 26.42,-21.39 39.65,-30.77 17.11,-12.13 28.62,-20.44 34.53,-24.91 4.5,-3.4 8.93,-6.6 13.3,-10.56 26.03,-23.54 51.66,-45.71 77.28,-70.7 0.42,-0.41 0.51,-1.06 0.21,-1.58 -6.8,-11.78 -12.84,-21.8 -18.11,-30.06 -10.22,-15.99 -22.07,-29.65 -35.57,-40.99 -7.56,-6.36 -18.41,-13.85 -28.65,-20.43 -15.08,-9.66 -30.62,-21.97 -46.63,-36.9 -35.08,-32.73 -67.65,-71.22 -85.32,-115.42 -5.53,-13.85 -10.8,-29.31 -15.8,-46.37 -5.89,-20.13 -12.37,-35.63 -23.22,-51.27 -8.93,-12.9 -15.77,-21.94 -19.58,-35.93 -1.27,-4.67 -2.93,-12.75 -4.99,-24.23 -2.07,-11.54 -6.54,-22.62 -13.41,-33.25 -7.54,-11.68 -13.66,-21.04 -18.33,-28.08 -3.68,-5.53 -7.02,-12.39 -9.63,-18.53 -3.9,-9.18 -8.14,-15.7 -13.6,-23.37 -3.94,-5.53 -5.07,-12.75 0,-18.32 4.14,-4.57 17.49,-3.02 21.56,-1.13 3.86,1.81 8.1,5.13 12.71,9.94 16.16,16.88 26.41,27.77 30.74,32.66 4.69,5.31 11.21,13.79 16.69,19.94 20.19,22.63 36.17,39.74 47.36,59.71 10.46,18.66 16.41,30.42 29.84,44.67 9.32,9.92 17.94,19.33 25.85,28.23 9.01,10.15 19.25,22.95 30.72,38.39 7.54,10.17 13.89,20.11 19.05,29.84 6.39,12.05 10.8,30.19 15.13,41.41 4.88,12.67 12.52,23.25 22.92,31.75 0.58,0.47 6.79,5.44 18.62,14.89 13.54,10.82 23.74,23.47 30.61,37.96 4.55,9.58 7.82,16.16 9.8,19.74 6.62,11.85 14.64,22.05 24.07,30.59 8.99,8.14 17.47,13.2 31.06,22.64 4.28,2.96 6.68,5.98 10.65,2.54 7.08,-6.11 13.73,-10.71 17.96,-14.53 6.12,-5.54 11.71,-11.84 16.79,-18.92 3.5,-4.88 8.77,-10.16 15.19,-14.42 22.77,-15.02 38.17,-31.11 63.32,-55.15 22.13,-21.17 46.22,-47.56 69.25,-66.8 32.17,-26.89 54.99,-45.9 68.46,-57.01 17.15,-14.15 35.82,-30.97 56.02,-50.46 16.06,-15.5 29.25,-27.72 39.57,-36.66 9.78,-8.47 17.55,-14.8 23.31,-18.98 8.52,-6.2 18.55,-10.61 30.56,-15.03 12.34,-4.55 23.44,-11.06 35.67,-17.61 9.07,-4.85 19.76,-9.89 30.05,-8.84 0.5,0.06 0.97,0.32 1.3,0.72 0.85,1.07 1.01,2.48 0.48,4.23 -2.1,6.99 -5.15,13.55 -9.66,20.87 -6.42,10.42 -11.51,19.46 -15.29,27.11 -6.09,12.35 -9.66,19.49 -10.69,21.43 -7.78,14.65 -17.56,27.97 -29.34,39.97 -4.8,4.89 -12.93,12.92 -24.37,24.07 -14.23,13.87 -25.02,30.77 -37.12,50.78 -15.21,25.13 -29.56,48.47 -43.06,70.01 -5.21,8.29 -13.68,15.13 -21.58,21.47 -25.71,20.7 -46.75,41.48 -70.98,64.67 -1.97,1.88 -4.98,4.47 -9.03,7.76 -22.62,18.36 -45.88,35.93 -69.78,52.74 -5.96,4.2 -13.77,11.24 -23.42,21.11 -17.12,17.5 -25.93,26.56 -26.42,27.19 -1.22,1.54 -1.08,3.09 0.41,4.67 14.11,14.81 34.25,37.65 60.42,68.51 11.89,14.01 24.87,27.08 36.03,39.46 8.75,9.7 16.81,22.11 31.82,42.59 2.69,3.68 13.53,16.07 32.5,37.17 5.17,5.76 11.64,14.47 19.4,26.12 16.37,24.6 36.28,56.2 59.73,94.79 4.2,6.92 7.74,12.33 10.62,16.21 5.41,7.29 10.37,13.74 14.92,20.97 6.26,9.94 11.3,19.92 15.11,29.92 4.29,11.27 7.73,19.49 10.32,24.69 7.21,14.5 14.81,28.41 22.8,41.73 3.44,5.75 6.78,13.03 6.11,20.05 -0.07,0.76 -0.71,1.34 -1.48,1.34 -0.25,0 -0.49,-0.06 -0.71,-0.18l0 0.01z"/>
18
- </g>
19
- </svg>
@@ -1,20 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!-- Generated by Pixelmator Pro 3.6.17 -->
3
- <svg width="470" height="470" viewBox="0 0 470 470" xmlns="http://www.w3.org/2000/svg">
4
- <g id="Group">
5
- <path id="Path" fill="#a78bfa" stroke="none" d="M 33 73 L 137 13 L 263 83 L 159 143 Z"/>
6
- <path id="path1" fill="#a78bfa" stroke="none" opacity="0.92" d="M 33 73 L 33 213 L 159 283 L 159 143 Z"/>
7
- <path id="path2" fill="#ffffff" stroke="none" d="M 207 247 L 311 187 L 431 257 L 327 317 Z"/>
8
- <path id="path3" fill="#a78bfa" stroke="none" opacity="0.92" d="M 207 247 L 207 387 L 327 457 L 327 317 Z"/>
9
- <path id="path4" fill="#fdba74" stroke="none" d="M 327 317 L 431 257 L 431 397 L 327 457 Z"/>
10
- <path id="path5" fill="none" stroke="#2b1b4b" stroke-width="22" stroke-linecap="round" stroke-linejoin="round" d="M 33 73 L 137 13 L 263 83 L 159 143 L 33 73"/>
11
- <path id="path6" fill="none" stroke="#2b1b4b" stroke-width="22" stroke-linecap="round" stroke-linejoin="round" d="M 33 73 L 33 213 L 159 283 L 159 143"/>
12
- <path id="path7" fill="none" stroke="#2b1b4b" stroke-width="22" stroke-linecap="round" stroke-linejoin="round" d="M 159 143 L 263 83 L 263 223"/>
13
- <path id="path8" fill="none" stroke="#2b1b4b" stroke-width="22" stroke-linecap="round" stroke-linejoin="round" d="M 207 247 L 311 187 L 431 257 L 327 317 L 207 247"/>
14
- <path id="path9" fill="none" stroke="#2b1b4b" stroke-width="22" stroke-linecap="round" stroke-linejoin="round" d="M 207 247 L 207 387 L 327 457 L 327 317"/>
15
- <path id="path10" fill="none" stroke="#2b1b4b" stroke-width="22" stroke-linecap="round" stroke-linejoin="round" d="M 327 317 L 431 257 L 431 397 L 327 457"/>
16
- <path id="path11" fill="none" stroke="#2b1b4b" stroke-width="22" stroke-linecap="round" stroke-linejoin="round" d="M 245 163 L 365 163"/>
17
- <path id="path12" fill="none" stroke="#2b1b4b" stroke-width="22" stroke-linecap="round" stroke-linejoin="round" d="M 175 197 L 335 117"/>
18
- <path id="path13" fill="none" stroke="#2b1b4b" stroke-width="22" stroke-linecap="round" stroke-linejoin="round" d="M 365 163 L 365 241"/>
19
- </g>
20
- </svg>
@@ -1 +0,0 @@
1
- <svg height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>AiHubMix</title><path d="M12 24c6.627 0 12-5.373 12-12S18.627 0 12 0 0 5.373 0 12s5.373 12 12 12z" fill="#006FFB"></path><path clip-rule="evenodd" d="M11.24 8.393c.095-.644.302-1.47.624-2.48L12 5.496l.136.417c.322 1.01.53 1.836.624 2.48.071.472.071 1.072 0 1.8-.072.731-.072 1.336 0 1.814.106.7.426 1.281.96 1.744a2.795 2.795 0 001.89.708 2.78 2.78 0 002.034-.84c.56-.559.842-1.234.848-2.024.003-.7.075-1.472.216-2.316.069-.422.14-.775.21-1.06l.095-.384.168.356a7.862 7.862 0 01.76 3.244v.16a7.84 7.84 0 01-.624 3.089 7.952 7.952 0 01-4.228 4.228 7.841 7.841 0 01-3.089.623 7.84 7.84 0 01-3.089-.623 7.952 7.952 0 01-4.228-4.228 7.84 7.84 0 01-.623-3.09v-.159a7.862 7.862 0 01.759-3.244l.169-.356.093.385c.072.284.143.637.211 1.059.141.844.213 1.616.216 2.316.006.79.29 1.465.848 2.024.563.56 1.241.84 2.035.84.715 0 1.345-.236 1.889-.708a2.79 2.79 0 00.96-1.744c.073-.478.073-1.083 0-1.814-.071-.728-.071-1.328 0-1.8zm.76 9.694c1.097 0 2.125-.26 3.085-.778a6.379 6.379 0 001.77-1.399c.063-.07-.01-.178-.101-.153-.37.1-.75.15-1.144.15a4.236 4.236 0 01-2.18-.59 4.253 4.253 0 01-1.35-1.233.099.099 0 00-.16 0 4.253 4.253 0 01-1.35 1.232 4.236 4.236 0 01-2.18.591c-.393 0-.774-.05-1.143-.15-.091-.025-.165.083-.102.153a6.38 6.38 0 001.77 1.399c.96.518 1.988.778 3.085.778z" fill="#fff" fill-rule="evenodd"></path></svg>
@@ -1,51 +0,0 @@
1
- <?xml version="1.0" standalone="no"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
3
- "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
4
- <svg version="1.0" xmlns="http://www.w3.org/2000/svg"
5
- width="648.000000pt" height="564.000000pt" viewBox="0 0 648.000000 564.000000"
6
- preserveAspectRatio="xMidYMid meet">
7
-
8
- <g transform="translate(0.000000,564.000000) scale(0.100000,-0.100000)"
9
- fill="#000000" stroke="none">
10
- <path d="M5392 5379 c-26 -10 -36 -28 -56 -108 -24 -94 -47 -140 -101 -199
11
- -56 -62 -117 -96 -219 -121 -101 -25 -116 -35 -116 -75 0 -45 21 -60 123 -89
12
- 190 -53 271 -147 336 -384 13 -46 38 -61 85 -49 25 6 36 28 56 111 7 28 23 72
13
- 36 99 13 28 21 54 18 58 -3 5 -2 7 3 6 4 -2 29 18 55 44 41 41 145 110 173
14
- 114 56 8 126 27 131 36 4 6 7 30 8 54 1 49 -5 54 -104 74 -164 33 -280 148
15
- -320 320 -23 101 -52 129 -108 109z"/>
16
- <path d="M1770 4814 c-138 -25 -301 -93 -425 -177 -80 -55 -227 -197 -280
17
- -272 -98 -138 -161 -279 -201 -447 -16 -66 -18 -164 -21 -1098 -4 -1130 -4
18
- -1144 57 -1331 80 -242 222 -434 444 -598 l56 -42 0 -337 c0 -309 2 -340 19
19
- -379 31 -66 87 -93 158 -74 22 6 202 117 404 249 200 131 398 259 439 285 144
20
- 89 48 81 1095 88 912 5 932 6 1012 27 243 64 441 178 599 344 166 176 274 408
21
- 304 648 13 110 13 2016 0 2120 -25 190 -83 347 -183 498 -160 240 -384 400
22
- -677 484 l-75 22 -1325 2 c-1086 2 -1339 0 -1400 -12z m1068 -1455 l-3 -751
23
- -71 -18 c-71 -18 -154 -55 -205 -91 -14 -10 -29 -16 -33 -12 -3 3 -6 91 -6
24
- 195 l0 188 -306 0 -305 0 -21 -47 c-11 -27 -33 -75 -48 -108 -16 -33 -44 -96
25
- -62 -140 l-34 -80 -172 -3 c-101 -1 -172 1 -172 7 0 5 14 40 31 78 31 68 101
26
- 227 254 578 335 769 358 814 434 874 94 74 122 79 449 80 l272 1 -2 -751z
27
- m794 717 c41 -13 103 -42 139 -62 67 -40 202 -168 232 -221 l17 -31 -77 -65
28
- c-43 -35 -101 -80 -129 -101 l-52 -36 -39 57 c-79 116 -204 177 -313 154 -66
29
- -14 -105 -42 -130 -91 -19 -37 -20 -60 -20 -400 0 -339 1 -363 20 -399 26 -51
30
- 61 -78 128 -97 143 -42 327 52 366 186 l13 45 -163 3 -163 2 -3 157 c-2 111 0
31
- 157 9 160 6 2 263 3 570 1 487 -3 562 -5 593 -19 98 -45 125 -159 58 -244 -39
32
- -50 -66 -55 -322 -55 l-236 0 -6 -27 c-18 -83 -29 -115 -62 -183 -69 -143
33
- -230 -269 -402 -316 -81 -22 -271 -25 -350 -5 -173 43 -289 145 -341 298 -19
34
- 57 -20 81 -17 534 l3 474 33 67 c55 112 168 199 307 235 79 20 246 10 337 -21z
35
- m828 -1515 c67 -71 67 -73 -62 -396 -45 -110 -102 -254 -128 -320 -254 -639
36
- -272 -681 -298 -702 -74 -62 -192 -15 -192 77 0 12 39 116 86 233 48 117 97
37
- 239 110 272 119 311 336 833 354 852 36 37 85 32 130 -16z m-1574 -205 c16
38
- -13 19 -29 22 -128 l3 -113 -195 -155 c-108 -85 -196 -158 -196 -161 0 -4 17
39
- -19 38 -35 128 -96 327 -272 339 -301 16 -39 17 -143 2 -177 -15 -33 -34 -39
40
- -67 -22 -48 26 -566 446 -584 474 -23 35 -23 89 1 128 16 27 150 143 376 326
41
- 39 31 79 65 90 75 44 41 128 103 139 103 7 0 21 -6 32 -14z m713 -25 c52 -37
42
- 53 -33 -92 -551 -36 -129 -80 -289 -98 -355 -39 -143 -62 -175 -129 -175 -47
43
- 0 -92 20 -114 52 -24 34 -19 90 18 217 19 64 78 271 131 461 53 190 98 353
44
- 101 364 6 16 14 18 79 14 54 -4 81 -11 104 -27z m1116 -351 c55 -45 117 -98
45
- 138 -120 61 -64 48 -115 -50 -192 -32 -25 -118 -94 -191 -152 -136 -108 -163
46
- -120 -217 -100 -26 10 -47 62 -39 97 10 46 22 62 94 119 36 29 93 77 128 106
47
- l62 55 -65 59 c-71 65 -77 84 -49 141 24 47 44 67 68 67 12 0 66 -36 121 -80z"/>
48
- <path d="M2328 3755 c-37 -20 -54 -53 -153 -280 -48 -110 -96 -219 -106 -242
49
- l-18 -43 234 0 235 0 0 290 0 290 -82 0 c-53 -1 -93 -6 -110 -15z"/>
50
- </g>
51
- </svg>
@@ -1 +0,0 @@
1
- <svg height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Alibaba</title><path d="M24 14.014c-2.8 1.512-5.62 2.896-8.759 3.524-.7.139-1.476.139-2.187.043-.678-.085-1.017-.682-.776-1.31.23-.585.536-1.181.93-1.671.852-1.065 1.814-2.034 2.678-3.088a15.75 15.75 0 001.422-2.054c.306-.511.164-1.129-.372-1.384-.897-.437-1.859-.745-2.81-1.075-.11-.043-.274.074-.492.149.273.244.47.425.743.67-2.821.48-5.49 1.16-8.08 2.098-.012.053-.033.095-.023.117.383.585.208 1.032-.35 1.394a2.365 2.365 0 00-.568.522c1.706.5 3.226.213 4.68-.735-.087-.127-.175-.244-.262-.372.546.096.874.394.918.862.011.107-.054.213-.087.32-.077-.086-.175-.17-.24-.267-.045-.064-.056-.138-.088-.245-1.728 1.15-3.587 1.438-5.632.842 0 .404-.022.745.011 1.075.022.287-.098.415-.36.564-.591.362-1.204.735-1.696 1.214-.59.585-.371 1.299.427 1.597.907.34 1.859.35 2.81.234 1.126-.139 2.23-.32 3.456-.49-1.433.67-2.844 1.14-4.33 1.33-1.04.14-2.078.214-3.106-.084-1.476-.415-2.133-1.501-1.75-2.96.361-1.363 1.236-2.449 2.176-3.45 3.139-3.332 7.108-5.024 11.7-5.365 1.072-.074 2.155.064 3.16.511 1.411.639 2.002 1.99 1.313 3.354-.448.905-1.072 1.735-1.695 2.555-.612.809-1.301 1.554-1.946 2.331-.186.234-.361.48-.503.745-.274.5-.088.83.492.778 1.213-.118 2.45-.213 3.62-.511 1.716-.437 3.389-1.054 5.084-1.597.175-.043.339-.107.492-.17z" fill="#FF6003" fill-rule="evenodd"></path></svg>
@@ -1,13 +0,0 @@
1
- <svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path
3
- d="M4 96
4
- C4 96, 24 12, 64 12
5
- C104 12, 124 96, 124 96
6
- Q124 102, 118 102
7
- C94 102, 92 64, 64 64
8
- C36 64, 34 102, 10 102
9
- Q4 102, 4 96
10
- Z"
11
- fill="currentColor"
12
- />
13
- </svg>
@@ -1 +0,0 @@
1
- <svg fill="currentColor" fill-rule="evenodd" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Anthropic</title><path d="M13.827 3.52h3.603L24 20h-3.603l-6.57-16.48zm-7.258 0h3.767L16.906 20h-3.674l-1.343-3.461H5.017l-1.344 3.46H0L6.57 3.522zm4.132 9.959L8.453 7.687 6.205 13.48H10.7z"></path></svg>
Binary file
@@ -1 +0,0 @@
1
- <svg fill="currentColor" fill-rule="evenodd" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>AWS</title><path d="M6.763 11.212c0 .296.032.535.088.71.064.176.144.368.256.576.04.063.056.127.056.183 0 .08-.048.16-.152.24l-.503.335a.383.383 0 01-.208.072c-.08 0-.16-.04-.239-.112a2.47 2.47 0 01-.287-.375 6.18 6.18 0 01-.248-.471c-.622.734-1.405 1.101-2.347 1.101-.67 0-1.205-.191-1.596-.574-.39-.384-.59-.894-.59-1.533 0-.678.24-1.23.726-1.644.487-.415 1.133-.623 1.955-.623.272 0 .551.024.846.064.296.04.6.104.918.176v-.583c0-.607-.127-1.03-.375-1.277-.255-.248-.686-.367-1.3-.367-.28 0-.568.031-.863.103-.295.072-.583.16-.862.272a2.4 2.4 0 01-.28.104.488.488 0 01-.127.023c-.112 0-.168-.08-.168-.247v-.391c0-.128.016-.224.056-.28a.597.597 0 01.224-.167 4.577 4.577 0 011.005-.36 4.84 4.84 0 011.246-.151c.95 0 1.644.216 2.091.647.44.43.662 1.085.662 1.963v2.586h.016zm-3.24 1.214c.263 0 .534-.048.822-.144a1.78 1.78 0 00.758-.51 1.27 1.27 0 00.272-.512c.047-.191.08-.423.08-.694v-.335a6.66 6.66 0 00-.735-.136 6.02 6.02 0 00-.75-.048c-.535 0-.926.104-1.19.32-.263.215-.39.518-.39.917 0 .375.095.655.295.846.191.2.47.296.838.296zm6.41.862c-.144 0-.24-.024-.304-.08-.064-.048-.12-.16-.168-.311L7.586 6.726a1.398 1.398 0 01-.072-.32c0-.128.064-.2.191-.2h.783c.151 0 .255.025.31.08.065.048.113.16.16.312l1.342 5.284 1.245-5.284c.04-.16.088-.264.151-.312a.549.549 0 01.32-.08h.638c.152 0 .256.025.32.08.063.048.12.16.151.312l1.261 5.348 1.381-5.348c.048-.16.104-.264.16-.312a.52.52 0 01.311-.08h.743c.127 0 .2.065.2.2 0 .04-.009.08-.017.128a1.137 1.137 0 01-.056.2l-1.923 6.17c-.048.16-.104.263-.168.311a.51.51 0 01-.303.08h-.687c-.15 0-.255-.024-.32-.08-.063-.056-.119-.16-.15-.32L12.32 7.747l-1.23 5.14c-.04.16-.087.264-.15.32-.065.056-.177.08-.32.08l-.686.001zm10.256.215c-.415 0-.83-.048-1.229-.143-.399-.096-.71-.2-.918-.32-.128-.071-.215-.151-.247-.223a.563.563 0 01-.048-.224v-.407c0-.167.064-.247.183-.247.048 0 .096.008.144.024.048.016.12.048.2.08.271.12.566.215.878.279.32.064.63.096.95.096.502 0 .894-.088 1.165-.264a.86.86 0 00.415-.758.777.777 0 00-.215-.559c-.144-.151-.416-.287-.807-.415l-1.157-.36c-.583-.183-1.014-.454-1.277-.813a1.902 1.902 0 01-.4-1.158c0-.335.073-.63.216-.886.144-.255.335-.479.575-.654.24-.184.51-.32.83-.415.32-.096.655-.136 1.006-.136.175 0 .36.008.535.032.183.024.35.056.518.088.16.04.312.08.455.127.144.048.256.096.336.144a.69.69 0 01.24.2.43.43 0 01.071.263v.375c0 .168-.064.256-.184.256a.83.83 0 01-.303-.096 3.652 3.652 0 00-1.532-.311c-.455 0-.815.071-1.062.223-.248.152-.375.383-.375.71 0 .224.08.416.24.567.16.152.454.304.877.44l1.134.358c.574.184.99.44 1.237.767.247.327.367.702.367 1.117 0 .343-.072.655-.207.926a2.157 2.157 0 01-.583.703c-.248.2-.543.343-.886.447-.36.111-.734.167-1.142.167z"></path><path d="M.378 15.475c3.384 1.963 7.56 3.153 11.877 3.153 2.914 0 6.114-.607 9.06-1.852.44-.2.814.287.383.607-2.626 1.94-6.442 2.969-9.722 2.969-4.598 0-8.74-1.7-11.87-4.526-.247-.223-.024-.527.272-.351zm23.531-.2c.287.36-.08 2.826-1.485 4.007-.215.184-.423.088-.327-.151l.175-.439c.343-.88.802-2.198.52-2.555-.336-.43-2.22-.207-3.074-.103-.255.032-.295-.192-.063-.36 1.5-1.053 3.967-.75 4.254-.399z" fill="#F90"></path></svg>
@@ -1 +0,0 @@
1
- <svg height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Azure</title><path d="M7.242 1.613A1.11 1.11 0 018.295.857h6.977L8.03 22.316a1.11 1.11 0 01-1.052.755h-5.43a1.11 1.11 0 01-1.053-1.466L7.242 1.613z" fill="url(#lobe-icons-azure-fill-0)"></path><path d="M18.397 15.296H7.4a.51.51 0 00-.347.882l7.066 6.595c.206.192.477.298.758.298h6.226l-2.706-7.775z" fill="#0078D4"></path><path d="M15.272.857H7.497L0 23.071h7.775l1.596-4.73 5.068 4.73h6.665l-2.707-7.775h-7.998L15.272.857z" fill="url(#lobe-icons-azure-fill-1)"></path><path d="M17.193 1.613a1.11 1.11 0 00-1.052-.756h-7.81.035c.477 0 .9.304 1.052.756l6.748 19.992a1.11 1.11 0 01-1.052 1.466h-.12 7.895a1.11 1.11 0 001.052-1.466L17.193 1.613z" fill="url(#lobe-icons-azure-fill-2)"></path><defs><linearGradient gradientUnits="userSpaceOnUse" id="lobe-icons-azure-fill-0" x1="8.247" x2="1.002" y1="1.626" y2="23.03"><stop stop-color="#114A8B"></stop><stop offset="1" stop-color="#0669BC"></stop></linearGradient><linearGradient gradientUnits="userSpaceOnUse" id="lobe-icons-azure-fill-1" x1="14.042" x2="12.324" y1="15.302" y2="15.888"><stop stop-opacity=".3"></stop><stop offset=".071" stop-opacity=".2"></stop><stop offset=".321" stop-opacity=".1"></stop><stop offset=".623" stop-opacity=".05"></stop><stop offset="1" stop-opacity="0"></stop></linearGradient><linearGradient gradientUnits="userSpaceOnUse" id="lobe-icons-azure-fill-2" x1="12.841" x2="20.793" y1="1.626" y2="22.814"><stop stop-color="#3CCBF4"></stop><stop offset="1" stop-color="#2892DF"></stop></linearGradient></defs></svg>
@@ -1 +0,0 @@
1
- <svg height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Baidu</title><path d="M8.859 11.735c1.017-1.71 4.059-3.083 6.202.286 1.579 2.284 4.284 4.397 4.284 4.397s2.027 1.601.73 4.684c-1.24 2.956-5.64 1.607-6.005 1.49l-.024-.009s-1.746-.568-3.776-.112c-2.026.458-3.773.286-3.773.286l-.045-.001c-.328-.01-2.38-.187-3.001-2.968-.675-3.028 2.365-4.687 2.592-4.968.226-.288 1.802-1.37 2.816-3.085zm.986 1.738v2.032h-1.64s-1.64.138-2.213 2.014c-.2 1.252.177 1.99.242 2.148.067.157.596 1.073 1.927 1.342h3.078v-7.514l-1.394-.022zm3.588 2.191l-1.44.024v3.956s.064.985 1.44 1.344h3.541v-5.3h-1.528v3.979h-1.46s-.466-.068-.553-.447v-3.556zM9.82 16.715v3.06H8.58s-.863-.045-1.126-1.049c-.136-.445.02-.959.088-1.16.063-.203.353-.671.951-.85H9.82zm9.525-9.036c2.086 0 2.646 2.06 2.646 2.742 0 .688.284 3.597-2.309 3.655-2.595.057-2.704-1.77-2.704-3.08 0-1.374.277-3.317 2.367-3.317zM4.24 6.08c1.523-.135 2.645 1.55 2.762 2.513.07.625.393 3.486-1.975 4-2.364.515-3.244-2.249-2.984-3.544 0 0 .28-2.797 2.197-2.969zm8.847-1.483c.14-1.31 1.69-3.316 2.931-3.028 1.236.285 2.367 1.944 2.137 3.37-.224 1.428-1.345 3.313-3.095 3.082-1.748-.226-2.143-1.823-1.973-3.424zM9.425 1c1.307 0 2.364 1.519 2.364 3.398 0 1.879-1.057 3.4-2.364 3.4s-2.367-1.521-2.367-3.4C7.058 2.518 8.118 1 9.425 1z" fill="#2932E1" fill-rule="nonzero"></path></svg>
@@ -1 +0,0 @@
1
- <svg fill="currentColor" fill-rule="evenodd" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>BaiLian</title><path d="M6.336 8.919v6.162l5.335-3.083L6.337 8.92z" fill-opacity=".4"></path><path d="M21.394 5.288s-.006-.006-.01-.006L17.01 2.754 6.336 8.92l5.335 3.082 9.701-5.6.016-.01a.635.635 0 00.006-1.1v-.003z" fill-opacity=".8"></path><path d="M21.71 12.465a.62.62 0 00-.316.085s-.006 0-.009.003l-4.375 2.528 5.05 2.915h.006a2.06 2.06 0 00.28-1.04v-3.855a.637.637 0 00-.636-.636z"></path><path d="M22.06 17.996l-5.05-2.915L6.34 21.242l4.27 2.465s.016.006.022.012a2.102 2.102 0 002.093 0c.006-.003.016-.006.022-.012l8.538-4.93c.003 0 .006-.003.01-.006.321-.183.589-.45.775-.772h-.006l-.004-.003z" fill-opacity=".8"></path><path d="M11.672 11.998l-5.336 3.083-1.444.832-3.605 2.083H1.28c.173.303.416.555.709.738l.078.044.016.01.02.012 4.232 2.442 10.671-6.161-5.335-3.082z"></path><path d="M12.74.29c-.1-.06-.208-.107-.315-.148-.02-.006-.038-.016-.057-.022a2.121 2.121 0 00-.7-.12c-.233 0-.457.038-.668.11l-.031.01a2.196 2.196 0 00-.372.17L2.068 5.222s-.003 0-.006.003c-.324.183-.592.451-.781.773h.006l5.049 2.918L17.01 2.758 12.74.29z" fill-opacity=".6"></path><path d="M1.287 6.001H1.28A2.06 2.06 0 001 7.041v9.915c0 .378.1.735.28 1.043h.007l5.049-2.918V8.919l-5.05-2.918z" fill-opacity=".3"></path></svg>
@@ -1 +0,0 @@
1
- <svg height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>ByteDance</title><path d="M14.944 18.587l-1.704-.445V10.01l1.824-.462c1-.254 1.84-.461 1.88-.453.032 0 .056 2.235.056 4.972v4.973l-.176-.008c-.104 0-.952-.207-1.88-.446z" fill="#00C8D2" fill-rule="nonzero"></path><path d="M7 16.542c0-2.736.024-4.98.064-4.98.032-.008.872.2 1.88.454l1.816.461-.016 4.05-.024 4.049-1.632.422c-.896.23-1.736.445-1.856.469L7 21.523v-4.98z" fill="#3C8CFF" fill-rule="nonzero"></path><path d="M19.24 12.477c0-9.03.008-9.515.144-9.475.072.024.784.207 1.576.406.792.207 1.576.405 1.744.445l.296.08-.016 8.56-.024 8.568-1.624.414c-.888.23-1.728.437-1.856.47l-.24.055v-9.523z" fill="#78E6DC" fill-rule="nonzero"></path><path d="M1 12.509c0-4.678.024-8.505.064-8.505.032 0 .872.207 1.872.454l1.824.461v7.582c0 4.16-.016 7.574-.032 7.574-.024 0-.872.215-1.88.47L1 21.013v-8.505z" fill="#325AB4"></path></svg>
Binary file
@@ -1 +0,0 @@
1
- <svg fill="currentColor" fill-rule="evenodd" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>KwaiKAT</title><path d="M20.42 19.311h3.418V1l-6.781 4.177-6.778-4.111.026 7.868h3.418l-.026-2.222 3.42 2.035 3.303-2.035v12.6z"></path><path d="M3.064 10.734c2.784-2.07 6.942-2.394 9.941.907l.01.01.01.013 9.16 12.24h-3.84l-7.69-10.217c-1.63-1.737-3.891-1.689-5.515-.638-1.624 1.05-2.563 3.073-1.548 5.28 1.494 3.246 6.152 3.275 7.725.108l.032-.064 2.02 2.629c-2.98 3.968-9.329 3.926-12.165-.552-2.395-3.78-.926-7.645 1.86-9.716z"></path></svg>