dsh-claude-style 0.17.0-dev.34 → 0.18.0-dev.35

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.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,94 @@ All notable changes to `dsh-claude-style` are documented here, newest first.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.18.0] - 2026-10-21
8
+
9
+ [中文](#cn-0.18.0) | [English](#en-0.18.0)
10
+
11
+ <h3 id="cn-0.18.0">新增功能</h3>
12
+
13
+ - 新增对话统计上的会话费用:宿主半按每次结算的发生时刻与模型计价,人民币与美元两张官方价表都随快照下发,设置里可选显示币种;价格快照与峰值费率目录由仓库的定时工作流抓取,安装端每天从仓库更新一次,包内副本兜底。
14
+
15
+ ### 体验优化
16
+
17
+ - 设置页的计费币种新增「关闭」:选它后统计行不显示费用,也不向宿主索取价目表与会话金额。
18
+ - 把设置页「侧栏」页的「面板悬浮卡片」改名为「右侧栏卡片布局」,开关本身与存下的设置值不变。
19
+ - 模型选择器的二级菜单顶部新增搜索框:输入名称即可在整份模型目录里筛选,回车之外的方向键、选择与编辑照常可用;行距同时收紧。清除按钮沿用 transitions.dev 的溶解效果(文字下沉模糊、占位符从上方落入、每个词下方亮起一道光带),并跟随设置的动画档位;搜索框里的光标使用皮肤自己的光标动画。
20
+ - 扩大费用的模型覆盖:快照附带一份公共模型目录的刊例价(美元/百万 token),官方价表没有的模型按它计价,人民币按快照内的固定汇率折算;Kimi K3 这类订阅渠道的模型也按 API 刊例价出数,不再一律留空。
21
+ - 改善钠的兜底标记:它只跟随流容器自己的子节点变化,一批变化只标记这一批新增的子元素,流式输出期间不再读整页的变化记录。
22
+ - 改善钠设置项的说明:写成「改写dsh及插件的样式表,在牺牲兼容性的前提下优化渲染性能」,生效中的规则条数改用强调色显示。
23
+ - 把设置页「折叠侧栏设置区」「侧栏搜索」「对话导航」三行改名为「重绘账户区」「重绘搜索面板」「重绘消息导航」,三处开关与存下的设置值不变。
24
+ - 模型选择第二层的卡片在搜索时按新列表的高度平滑改变大小,不再跳变;把动画设为「减弱」时立即落位。
25
+ - 把设置页外观标签的「品牌名称」「标志图片」「文字标志」「图片颜色」四行合并成一行「品牌标志」,排在外观标签的最前面:直接把侧栏的品牌区搬进设置页,标志与名称居中,图片颜色作为同一块的子行;指针移到标志或名称上即出现灰色矩形,点一下就在原处更换图片或输入名称,四行原有的开关与存下的值不变。
26
+ - 把模型选择器里模型行的高度从 30px 收到 27px,字号与行内文字不变,一级与二级菜单同步。
27
+ - 改善长会话里流式输出的流畅度:离视口的历史条目不再参与样式计算、布局与绘制,滚动的总高度仍按它们各自的尺寸保留。
28
+
29
+ ### 问题修复
30
+
31
+ - 修复按下输入卡片或过程分组自行展开时输入框的光标跳回草稿开头的问题:焦点交还之前先记下选区,连同焦点一起放回。
32
+ - 修复上下文占用与统计收进弹出面板时,输入框的 @ 菜单把数字那一行顶到菜单上的问题:部件标记不再把宿主挂在输入卡片浮层座位里的菜单读成输入框自己的行与右侧控件,菜单打开时数字仍站在工具栏那一行。
33
+ - 修复页面缩放时输入区右下角的上下文弹层纵向位置偏低、下沿越出窗口的问题:皮肤按页面自身像素把弹层放在计量圆环上方,留出宿主原来的间距,弹层长高时重新对齐。
34
+ - 修复档位矩阵的方块在卡片关闭后仍带着两个无限动效运行、页面空闲时主线程持续被占满的问题:卡片不在打开状态或读者选了减弱动效时,方块与两层装饰的动画停下,打开且动效全开时恢复。
35
+ - 修复切换推理等级时档位按钮的宽度随新名字伸缩、把模型名与已经打开的档位弹层一起挤动的问题:按钮按当前档位表里最宽的名字预留宽度,换档时按钮宽度与弹层位置都不动。
36
+ - 修复第三方插件挂在侧栏页脚的对话框被接管隐藏、打开成模态框后整页失去响应的问题:自身是浮层的页脚条目不再收进账号菜单,皮肤也不向它写入 display。
37
+ - 修复读者自己发的那条消息滚动出视口后不再出现高度折叠控制:这类消息所在的流条目保留排版,助手行仍跳过视口之外的排版。
38
+ - 修复自定义模型的标识是服务商内部别名时(如 kmodel 显示为 kimi-k2.6)模型选择器里没有说明行、也画不出厂商标的问题:文案规则与厂商规则改为同时读标识与显示名称。
39
+ - 修复切换会话时统计行的费用区先消失再出现、整行跟着重新排版的问题:费用区在会话金额到达之前保留原来的位置,以币种符号加一道短横占位并压暗,宽度按金额的量度预留,新金额到达后在同一位置替换。
40
+ - K3 的人民币费用改按厂商公布的人民币价目表计算:未命中 20 元、命中 2 元、输出 100 元每百万 token,不再用美元价乘固定汇率。
41
+ - 修复钠的改写写入失败后样式表恢复不回来、宿主改动规则后改写无声失效的问题:一次写入失败会把这次写入的规则全部写回,已写入的规则逐张表登记;生效条数归零时设置项写明宿主已改动这些规则,开关关闭时读不回原样的规则也会上报。
42
+ - 修复首页「工作台」的用量面板停在打开窗口那一刻的数字:面板挂载期间按固定周期重取,回到窗口时也重取;宿主侧的汇总缓存从 5 分钟降到 30 秒,等汇总结果的轮询上限放宽,大历史不再先看到旧值。
43
+ - 修复模型选择器在模型较多时压扁带描述的行、让描述文字挤进下一行的问题,列表改为随内容滚动。
44
+ - 修复模型选择器搜索框的三处问题:搜索框紧贴卡片上沿、输入时光标高于文字、清空后光标不回最左边。搜索框自带一段上边距,单行输入框的光标按内容框居中后与文字齐平,清空时把插入点放回开头并重新测量光标。
45
+
46
+ ### 其他变更
47
+
48
+ - 让决策记录的正文只引用在册的编号,决策索引写明放弃的方案归入后果一节、没有重审条件时写「无。」,lint 核对每条决策的四个小节按序齐全、重审条件非空,且在册决策引用作废编号即失败。
49
+ - 去掉模型二级分组三处规则上多余的 !important:同一批取值已由别的规则给出,importance 场景逐条实测去掉优先级后页面没有任何变化。
50
+ - 钠渲染引擎改为以 PolyForm Shield 1.0.0 授权:可以阅读、修改与分发,不能用来提供与本插件竞争的产品;仓库其余部分仍为 MIT,已发布的 0.17.0 不受影响,名字的来源在通知文件里写明致敬 Minecraft 的 Sodium 模组。
51
+ - 把测试层从 CommonJS 改成 ESM,十一份测试数据表集中到 packages/testing/data/,三份字体许可证与作者清单合并成一份,宿主半的构建脚本移入 scripts/,两张螃蟹笔记帧归入 mascot/crab/,插件的表现与断言不变。
52
+
53
+ <h3 id="en-0.18.0">New Features</h3>
54
+
55
+ - Add the session's cost to the conversation statistics: the host half prices every settlement at its own instant and route, both official price tables ship in the snapshot, and the settings choose the currency; a scheduled workflow keeps the price snapshot and the peak rate catalog in the repository, every install refreshes from it once a day, and the packaged copies answer when it cannot be reached.
56
+
57
+ ### Improvements
58
+
59
+ - Add Off to the settings page's Billing currency: chosen, the statistics line draws no cost and the browser asks the host for neither the price table nor the session's amount.
60
+ - Rename the Sidebar tab's Float docked panels switch to Right sidebar card layout, with the switch and the stored value unchanged.
61
+ - Add a search field to the top of the model picker's second level: typing a name filters the whole model catalog, while selection, editing and the arrow keys keep working as before, and the rows sit closer together. Its clear control plays transitions.dev's dissolve — the words fly down through a blur, the placeholder falls in from above, and a streak ignites under each word — answering the animation choice in force, and the field's caret is the skin's own animated one.
62
+ - Widen the cost figure's model coverage: the snapshot carries the public catalogue's list prices (USD per million tokens), a model the official table does not price falls back to it, and CNY converts at the snapshot's fixed rate; subscription-channel models such as Kimi K3 now show their API list-price equivalent instead of nothing.
63
+ - Improve Sodium's fallback mark: it follows the changes of a flow container's own children and marks only the children a batch added, so streaming output no longer reads the whole page's change records.
64
+ - Improve the Sodium setting's copy: it now reads that it rewrites dsh's and plugins' stylesheets, trading compatibility for rendering performance, and the number of rules in effect stands in the accent colour.
65
+ - Rename three settings rows to Redraw the account area, Redraw the search panel and Redraw the message navigator, with their switches and stored values unchanged.
66
+ - Make the model picker's second-level card resize smoothly to the height of the list a search leaves, instead of jumping; under Reduced motion it lands at once.
67
+ - Merge the Appearance tab's Brand name, Brand mark, Wordmark and Image colours rows into one Brand row that opens the tab: the sidebar's brand area itself now stands in the settings page with its mark and name centred, a grey rectangle follows the pointer onto the mark or the name, a press replaces the image or types the name in place, and the image colours sit under it as a sub-row; the four rows' switches and stored values are unchanged.
68
+ - Tighten the model picker's model rows from 30px to 27px, with the font sizes and the text inside them unchanged, on both levels of the menu.
69
+ - Improve streaming smoothness in long conversations: rows outside the viewport no longer take part in style calculation, layout or paint, while the scroll range keeps their own sizes.
70
+
71
+ ### Bug Fixes
72
+
73
+ - Fix the composer's caret jumping back to the start of the draft when a press on the input card or a process group's own toggle moves the focus: the selection is captured before the move and restored with the focus.
74
+ - Fix the composer's numbers riding up onto the @ menu when the statistics live in the context popover: the part walk no longer reads the host's own menu, mounted in the input card's overlay seat, as the composer's row and trailing cluster, so the numbers stay on the toolbar row while a menu is open.
75
+ - Fix the context popover above the composer's meter sitting too low and running past the window's bottom edge under page zoom: the skin places it above the meter in the page's own pixels, at the host's own gap, and re-takes that reading when the popover grows.
76
+ - Fix the effort matrix's blocks keeping two infinite animations each while their card is closed, which kept the main thread busy with nothing on screen, and their shortened cycle still repainting every frame under reduced motion: the animations stop while the card is not open or the reader has chosen reduced motion, and resume when the card opens with motion full.
77
+ - Fix the effort button taking each level's own width, which pushed the model name and the open effort card sideways whenever the level changed: the button now reserves the widest name of its ladder, so a switch leaves both its width and the card's place alone.
78
+ - Fix the whole page going unresponsive when a dialog a plugin mounts into the sidebar footer was hidden by the takeover: a footer entry that is itself a floating overlay is no longer collected into the account menu, and the skin writes no display rule onto it.
79
+ - Fix the fold control under a message the reader sent going missing once that message scrolled out of view: rows holding the reader's own messages keep their layout, while assistant rows still skip layout off screen.
80
+ - Fix a custom model whose id is the provider's own alias (`kmodel` shown as `kimi-k2.6`) losing its description line and its vendor mark in the model picker: the copy and brand rules now read the display name as well as the id.
81
+ - Fix the cost segment of the statistics line vanishing and reappearing across a session switch, which re-laid the whole line: the segment now keeps its place until the session's amount arrives, standing as the currency symbol and a dash in the quiet ink, with the width of an amount reserved, and the new figure replaces it in the same room.
82
+ - Price K3 in CNY from the vendor's own CNY table — 20 input, 2 cache hit, 100 output per million tokens — instead of converting the USD list price at the snapshot's rate.
83
+ - Fix a Sodium rewrite that could not be undone after a failed write, and the rewrite going quiet once the host changed the rules: a failed write now writes back every rule it wrote, the rules taken are held sheet by sheet, the setting says so when the number in effect falls to zero, and a rule that cannot be read back as the rewrite left it is reported.
84
+ - Fix the Studio home's usage panel standing on the figures of the moment the window opened: the panel reads the roll-up again on a fixed period while it stands on the page and once more when the reader comes back to the window, the host half's roll-up cache drops from five minutes to thirty seconds, and waiting for a cold fold no longer gives up before the numbers land.
85
+ - Fix the model picker squeezing rows that carry a description when the catalog outgrows the card, where the second line ran into the row below; the list scrolls instead.
86
+ - Fix three faults of the model picker's search field: it sat flush against the card's top edge, its drawn caret stood above the text, and clearing left the caret where the old words ended. The field now carries its own inset above, a single-line field's caret is centred in its content box, and a clear puts the insertion point back at the start and measures the caret again.
87
+
88
+ ### Chores
89
+
90
+ - Make a decision's prose cite only the decisions in force, say in the index that an abandoned option belongs under 后果 and that a decision with nothing to revisit writes 「无。」, and have lint check that every decision carries its four sections in order with a review condition that says something, and that no live decision cites a retired number.
91
+ - Drop the redundant !important on the model picker's level-2 group rules: other rules already carry the same values, and the importance scenario measured no change on the page with the priority removed.
92
+ - License the Sodium rendering engine under PolyForm Shield 1.0.0: read, change and redistribute it, but not to provide a product competing with this plugin; the rest of the repository stays MIT, the published 0.17.0 is unaffected, and the notice file states that the name is a tribute to Minecraft's Sodium mod.
93
+ - Move the testing layer from CommonJS to ESM, gather its eleven data tables under packages/testing/data/, merge the three font licences and the authors list into one file, take the host half's build script into scripts/, and put the two crab laptop frames into mascot/crab/, with the plugin's behavior and assertions unchanged.
94
+
7
95
  ## [0.17.0] - 2026-10-20
8
96
 
9
97
  [中文](#cn-0.17.0) | [English](#en-0.17.0)
package/LICENSE CHANGED
@@ -22,6 +22,14 @@ SOFTWARE.
22
22
 
23
23
  ---
24
24
 
25
+ Sodium engine notice: the files under `packages/client/src/features/sodium/` and
26
+ `packages/engine/src/sheet-rewrite.ts` are the Sodium rendering engine. They are
27
+ licensed under the PolyForm Shield License 1.0.0, **not** under the MIT license
28
+ above; the terms are in `packages/client/src/features/sodium/LICENSE`. Read,
29
+ change and redistribute them, but not to provide a product competing with this
30
+ plugin. Releases up to and including 0.17.0 were published under the MIT license;
31
+ this license applies to the releases published after it.
32
+
25
33
  Font files notice:
26
34
 
27
35
  - `packages/assets/src/fonts/anthropic/AnthropicSansWebText.ttf`,
@@ -39,9 +47,9 @@ Font files notice:
39
47
  `lib/fonts/`). They may be redistributed with this plugin.
40
48
 
41
49
  Crab artwork notice: the pixel crab (Clawd) is a character of Anthropic, and
42
- all rights in it remain with Anthropic. `packages/assets/src/mascot/crab-laptop-body.png`
43
- and `packages/assets/src/mascot/crab-laptop-ink.png` are frames of Claude Code's own
44
- animation; the sheets under `packages/assets/src/mascot/crab/` are drawn by this project
50
+ all rights in it remain with Anthropic. `packages/assets/src/mascot/crab/crab-laptop-body.png`
51
+ and `packages/assets/src/mascot/crab/crab-laptop-ink.png` are frames of Claude Code's own
52
+ animation; the remaining sheets in that directory are drawn by this project
45
53
  after that character (by `scripts/draw-crab.py`, which carries the drawings).
46
54
  These files, and their copies inlined into `lib/client.js`, are **not** covered
47
55
  by the MIT license above. This plugin is an unofficial fan work, not affiliated
package/NOTICE.md ADDED
@@ -0,0 +1,22 @@
1
+ # Notice
2
+
3
+ This package ships the Sodium rendering engine of dsh-claude-style: every file
4
+ under `packages/client/src/features/sodium/` (compiled into `lib/client.js`) and
5
+ `packages/engine/src/sheet-rewrite.ts`. Those files are licensed under the
6
+ PolyForm Shield License 1.0.0 — read, change and redistribute them, but not to
7
+ provide a product competing with this plugin. The terms travel with the package
8
+ in `packages/client/src/features/sodium/LICENSE`, and the root `LICENSE` carries
9
+ the MIT license that covers everything else. Releases up to and including 0.17.0
10
+ were published under the MIT license; this license applies to the releases
11
+ published after it.
12
+
13
+ "Sodium" (钠) is named after Minecraft's Sodium rendering mod by CaffeineMC as a
14
+ tribute; this project is not affiliated with CaffeineMC, carries none of that
15
+ mod's code, and is not endorsed by it.
16
+
17
+ 该项目以 MIT 授权,钠渲染引擎除外:`packages/client/src/features/sodium/` 下的
18
+ 全部文件(已编译进 `lib/client.js`)与 `packages/engine/src/sheet-rewrite.ts`
19
+ 以 PolyForm Shield 1.0.0 授权,条款见 `packages/client/src/features/sodium/LICENSE`;
20
+ 0.17.0 及其之前发布的版本以 MIT 发布,之后的版本适用这一许可。
21
+ 「钠 / Sodium」这个名字致敬 Minecraft 的 Sodium 渲染优化模组;本项目与
22
+ CaffeineMC 没有关联,没有使用它的代码,也没有获得它的背书。
package/README.en.md CHANGED
@@ -12,7 +12,7 @@
12
12
  [![downloads](https://img.shields.io/npm/dm/dsh-claude-style?style=flat&label=downloads&color=D97757)](https://www.npmjs.com/package/dsh-claude-style)
13
13
  [![GitHub stars](https://img.shields.io/github/stars/Nwflower/dsh-claude-style?style=flat&label=%E2%98%85&color=08C)](https://github.com/Nwflower/dsh-claude-style)
14
14
  [![dsh.so install](https://www.dsh.so/badge/install/dsh-claude-style.svg)](https://www.dsh.so/artifact/dsh-claude-style/)
15
- [![license](https://img.shields.io/badge/license-MIT-2EA44F?style=flat)](LICENSE)
15
+ [![license](https://img.shields.io/badge/license-MIT%20%2B%20PolyForm%20Shield-2EA44F?style=flat)](LICENSE)
16
16
 
17
17
  </div>
18
18
 
@@ -77,7 +77,7 @@ dsh-claude-style
77
77
 
78
78
  ```bash
79
79
  dsh plugin --profile web add dsh-claude-style # npm package (recommended)
80
- dsh plugin --profile web add Nwflower/dsh-claude-style # GitHub source
80
+ dsh plugin --profile web add Nwflower/dsh-claude-style#dist # GitHub release branch
81
81
  ```
82
82
 
83
83
  Also from the [plugin market](https://github.com/dsh-market/dsh-market) or the Skin Center of the dsh-web-all plugin. Keep one theme enabled at a time; dsh ≥ 0.1.7 is required, and a restart of DeepSeek Harness brings the full feature set.
@@ -97,9 +97,16 @@ To enable them, install the `.ttf` files on your system, or copy them into `$DSH
97
97
  | [Changelog](CHANGELOG.md) | Version history |
98
98
  | [Contributing](CONTRIBUTING.md) | Building from `packages/client/src/`, commit conventions, and the screenshot and regression tooling |
99
99
 
100
+ ## License
101
+
102
+ Except where otherwise stated, this repository is licensed under MIT.
103
+
104
+ The Sodium rendering engine is licensed under the [PolyForm Shield License 1.0.0](packages/client/src/features/sodium/LICENSE).
105
+
100
106
  ## Acknowledgements
101
107
 
102
- - The conversation navigator follows SherUnlocked-4869's [dsh-plugin-msg-nav](https://github.com/SherUnlocked-4869/dsh-plugin-msg-nav) (MIT).
108
+ - "Sodium" (钠) is named after Minecraft's [Sodium](https://github.com/CaffeineMC/sodium) rendering mod; this plugin is not affiliated with it.
109
+ - The message navigator follows SherUnlocked-4869's [dsh-plugin-msg-nav](https://github.com/SherUnlocked-4869/dsh-plugin-msg-nav) (MIT).
103
110
  - The animation frames of Deepy the pixel whale come from the Deepy whale theme pack drawn by calmly-eating-bugs ([@wp3171216237](https://github.com/wp3171216237)), and ship with the plugin by the author's permission; GIFs of all 20 animations are in [docs/gifs/](docs/gifs/).
104
111
  - The enhanced animations in the chat area are modified from [dsh-chat-ux](https://github.com/alm-allen/dsh-chat-ux) (MIT).
105
112
  - Clawd is a character of Anthropic. Its frames are not covered by the MIT license (see [LICENSE](LICENSE)). This plugin is an unofficial fan work, not affiliated with or endorsed by Anthropic.
package/README.md CHANGED
@@ -12,7 +12,7 @@
12
12
  [![downloads](https://img.shields.io/npm/dm/dsh-claude-style?style=flat&label=downloads&color=D97757)](https://www.npmjs.com/package/dsh-claude-style)
13
13
  [![GitHub stars](https://img.shields.io/github/stars/Nwflower/dsh-claude-style?style=flat&label=%E2%98%85&color=08C)](https://github.com/Nwflower/dsh-claude-style)
14
14
  [![dsh.so install](https://www.dsh.so/badge/install/dsh-claude-style.svg)](https://www.dsh.so/artifact/dsh-claude-style/)
15
- [![license](https://img.shields.io/badge/license-MIT-2EA44F?style=flat)](LICENSE)
15
+ [![license](https://img.shields.io/badge/license-MIT%20%2B%20PolyForm%20Shield-2EA44F?style=flat)](LICENSE)
16
16
 
17
17
  </div>
18
18
 
@@ -75,7 +75,7 @@ dsh-claude-style
75
75
 
76
76
  ```bash
77
77
  dsh plugin --profile web add dsh-claude-style # npm 包(推荐)
78
- dsh plugin --profile web add Nwflower/dsh-claude-style # GitHub 源码
78
+ dsh plugin --profile web add Nwflower/dsh-claude-style#dist # GitHub 发布分支
79
79
  ```
80
80
 
81
81
  也可从[插件市场](https://github.com/dsh-market/dsh-market)或 dsh-web-all 的皮肤中心安装。同一时刻只启用一个主题,装好后重启 DeepSeek Harness。
@@ -96,9 +96,16 @@ dsh plugin --profile web add Nwflower/dsh-claude-style # GitHub 源码
96
96
  | [更新日志](CHANGELOG.md) | 版本历史 |
97
97
  | [贡献指南](CONTRIBUTING.md) | 构建、提交规范与回归工具 |
98
98
 
99
+ ## 许可
100
+
101
+ 除特别说明,本仓库以 MIT 授权。
102
+
103
+ 钠(Sodium)渲染引擎以 [PolyForm Shield 1.0.0](packages/client/src/features/sodium/LICENSE) 授权。
104
+
99
105
  ## 鸣谢
100
106
 
101
- - 对话导航参考 SherUnlocked-4869 的 [dsh-plugin-msg-nav](https://github.com/SherUnlocked-4869/dsh-plugin-msg-nav)(MIT)。
107
+ - 「钠 / Sodium」取名自 Minecraft 的 [Sodium](https://github.com/CaffeineMC/sodium) 渲染优化模组,本插件与它没有关联。
108
+ - 消息导航参考 SherUnlocked-4869 的 [dsh-plugin-msg-nav](https://github.com/SherUnlocked-4869/dsh-plugin-msg-nav)(MIT)。
102
109
  - Deepy 的动画帧图来自 calmly-eating-bugs([@wp3171216237](https://github.com/wp3171216237))绘制的 Deepy 小鲸鱼主题包。
103
110
  - 聊天区的增强动效改自 [dsh-chat-ux](https://github.com/alm-allen/dsh-chat-ux)(MIT)。
104
111
  - Clawd是 Anthropic 的角色形象。帧图不适用 MIT 许可(见 [LICENSE](LICENSE))。本插件是非官方爱好者作品,与 Anthropic 没有关联。
@@ -74,7 +74,11 @@ Seven more are ported the same way, each into this package's own classes, attrib
74
74
 
75
75
  The colour wash the waiting line can wear instead of the band (`packages/client/src/shared/motion.css`, the `dsh-claude-sweep` and `dsh-claude-wash` presets in that sheet and the `--dsh-claude-wash-*` custom properties) is the paint transitions.dev serves on its own pages as "Pro gradient text" (`.title-pro` on <https://transitions.dev/agent.html>): its seven radial washes over a grey base ramp as inline SVG, its 180% layer sizes, and its orbit and hue-rotation periods, renamed into this package's own custom properties and motion tokens, with the `prefers-reduced-motion` guard answered by the skin's animation choice (D40) as everywhere else.
76
76
 
77
- Source: <https://transitions.dev/detail.html?t=text-states-swap> · <https://transitions.dev/detail.html?t=reasoning-stream> · <https://transitions.dev/detail.html?t=menu-dropdown> · <https://transitions.dev/detail.html?t=modal-open-close> · <https://transitions.dev/detail.html?t=page-side-by-side> · <https://transitions.dev/detail.html?t=notification-badge> · <https://transitions.dev/detail.html?t=skeleton-loader-and-reveal> · <https://transitions.dev/detail.html?t=texts-reveal> · <https://transitions.dev/detail.html?t=toggle> · <https://transitions.dev/detail.html?t=pro-gradient-text> · <https://github.com/Jakubantalik/transitions.dev>
77
+ The "Input clear with dissolve" transition (the search field at the top of the model picker's second level, `packages/client/src/features/model/sub-menu.ts` with the `dsh-claude-model-search-*` rules in its stylesheet) is ported the way the rest are: the typed words fly down through a blur while a streak ignites under each of them and the placeholder falls in from above, with the per-frame envelope the snippet writes by hand (its streak cannot be a keyframe), its two halves, its fly, blur and glow-delay times and its curve as this package's motion tokens, and its multiply/screen blend read off the reader's palette. Its `prefers-reduced-motion` guard is answered by the skin's animation choice, which the module asks before it starts a clear.
78
+
79
+ The "Card resize" transition (the model picker's second level taking the height of the list a query leaves, `packages/client/src/features/model/sub-menu.ts` with the `dsh-claude-model-popover-sub` rule in its stylesheet) is ported as the width and height tween it is, with its duration as this package's `--dsh-claude-duration-resize` and its curve the settling one the other surface transitions already read. A height cannot be interpolated into `auto`, so the two ends are written as lengths around the rebuild and the height returns to the content once the travel lands. Its `prefers-reduced-motion` guard is answered by the skin's animation choice (D40).
80
+
81
+ Source: <https://transitions.dev/detail.html?t=text-states-swap> · <https://transitions.dev/detail.html?t=reasoning-stream> · <https://transitions.dev/detail.html?t=menu-dropdown> · <https://transitions.dev/detail.html?t=modal-open-close> · <https://transitions.dev/detail.html?t=page-side-by-side> · <https://transitions.dev/detail.html?t=notification-badge> · <https://transitions.dev/detail.html?t=skeleton-loader-and-reveal> · <https://transitions.dev/detail.html?t=texts-reveal> · <https://transitions.dev/detail.html?t=toggle> · <https://transitions.dev/detail.html?t=pro-gradient-text> · <https://transitions.dev/detail.html?t=input-clear-dissolve> · <https://transitions.dev/detail.html?t=card-resize> · <https://github.com/Jakubantalik/transitions.dev>
78
82
 
79
83
  ```
80
84
  Transitions.dev License
package/docs/STYLE.md CHANGED
@@ -181,10 +181,10 @@ panel pulled out of the sidebar becomes the host's own floating window
181
181
  gives each pane its own card, with the drag divider left on the seam between
182
182
  them.
183
183
 
184
- **Float docked panels** (the Sidebar tab) chooses it: on is the card above;
185
- off drops every rule that draws one, so the pane stands in the host's own fill,
186
- flush with the column on all four sides, and a split's two panes meet at the
187
- dock's own resting line. Every card rule is gated on
184
+ **Right sidebar card layout** (the Sidebar tab) chooses it: on is the card
185
+ above; off drops every rule that draws one, so the pane stands in the host's
186
+ own fill, flush with the column on all four sides, and a split's two panes meet
187
+ at the dock's own resting line. Every card rule is gated on
188
188
  `<body data-dsh-claude-dock-look="card">`, so off is the host's own panel look
189
189
  with nothing added.
190
190
 
@@ -283,6 +283,9 @@ edit the JSON, not the table.
283
283
  | `--dsh-claude-duration-open` | `250ms` | a surface growing out of its anchor: a menu out of its trigger, a full-window dialog out of the centre, a settings page sliding in, the overtime badge sliding onto its line |
284
284
  | `--dsh-claude-duration-swap` | `150ms` | each half of a wording swap: the old words leaving, the new ones arriving |
285
285
  | `--dsh-claude-duration-swap-gap` | `50ms` | the offset the words arriving start after the words leaving, so the two halves of a wording swap travel together |
286
+ | `--dsh-claude-duration-clear-delay` | `50ms` | how long after a field empties the streak under its cleared words starts to rise |
287
+ | `--dsh-claude-duration-clear-text` | `400ms` | the two halves of clearing a field: the words leaving it, and the placeholder taking their place |
288
+ | `--dsh-claude-duration-clear` | `1000ms` | one whole clear: the words leaving, the placeholder arriving, and the streak's rise, peak and fall |
286
289
  | `--dsh-claude-duration-roll` | `160ms` | a figure's characters rolling over to new digits |
287
290
  | `--dsh-claude-duration-move` | `200ms` | something travelling along its own track: a fold's door, the reasoning slider's knob and fill |
288
291
  | `--dsh-claude-duration-count` | `220ms` | a session number counting to its new reading |
@@ -337,6 +340,8 @@ edit the JSON, not the table.
337
340
  | `--dsh-claude-scale-dropdown-exit` | `0.99` | the scale a menu shrinks to while it fades on closing |
338
341
  | `--dsh-claude-scale-dialog` | `0.96` | the scale a full-window dialog grows from and returns to |
339
342
  | `--dsh-claude-scale-dot-mid` | `0.55` | how small a loader dot is while it crosses the middle of its line; at either end it is the dot's own size, so the line motion never draws a dot larger than the bouncing one |
343
+ | `--dsh-claude-duration-resize` | `300ms` | a surface taking a new size: the model picker's second level following the list a query leaves |
344
+ | `--dsh-claude-timing-resize` | `var(--dsh-claude-duration-resize) var(--dsh-claude-ease-settle)` | shorthand: a size change, written after the property in a transition |
340
345
  | `--dsh-claude-timing-feedback` | `var(--dsh-claude-duration-feedback) var(--dsh-claude-ease-standard)` | shorthand: a control's state change, written after the property in a transition |
341
346
  | `--dsh-claude-timing-surface` | `var(--dsh-claude-duration-surface) var(--dsh-claude-ease-standard)` | shorthand: a surface appearing, written after the property or the keyframes' name |
342
347
  <!-- /generated:motion -->
@@ -540,6 +545,30 @@ two surfaces read the same words; the host's small formatting rules
540
545
  `formatCacheHitPercent`) are mirrored so the figures match character for
541
546
  character.
542
547
 
548
+ The cost is the session's own. The host half prices every settlement at its
549
+ own instant and route and answers the settled total over `SESSION_COST_PATH`;
550
+ the browser adds the tokens the streaming answer has grown by at the output
551
+ rate in force, so the figure moves with the written-back tokens and settles
552
+ with them. It writes four decimals and the symbol of the `billingCurrency`
553
+ setting (`¥0.0015`, `$0.0002`): the official CNY and USD tables are stored
554
+ apart, so the setting picks a table rather than converting one. A model the
555
+ official table does not carry is priced from the snapshot's catalogue — its
556
+ published CNY line when the vendor has one, its USD list price converted at the
557
+ snapshot's fixed rate otherwise; a model neither carries keeps the segment out
558
+ of the line. On the line it
559
+ stands between the written-back tokens and the cache share, and it is among the
560
+ figures the ladder gives up when the line needs the room for the total; in the
561
+ block it is the usage section's first row.
562
+
563
+ The segment keeps its width across a session switch: the session's figure is
564
+ replaced while the next one is being priced, so the amount sits in a box of an
565
+ amount's measure, right-aligned so a growing figure extends left, and the box
566
+ stands as the currency symbol and a dash in `label-tertiary` until the new
567
+ figure arrives. Without it the segment folds out of the line and back, and the
568
+ whole bottom line re-lays around it. The `billingCurrency` choice's Off takes
569
+ the segment out of the line altogether: nothing is drawn, and the browser asks
570
+ the host for neither the price table nor the session's total.
571
+
543
572
  Which figures appear follows the host's statistics row. Its detailed form gets
544
573
  the whole list. Its compact form carries only the output speed and the cache-hit
545
574
  share on the composer line, so the block keeps the four that row leaves out —
Binary file
Binary file
@@ -101,15 +101,15 @@
101
101
  "encoding": "br",
102
102
  "bytes": 77088
103
103
  },
104
- "812ff61f28cc.js": {
104
+ "6f75a6052515.js": {
105
105
  "type": "text/javascript; charset=utf-8",
106
106
  "encoding": "br",
107
- "bytes": 28024
107
+ "bytes": 31680
108
108
  },
109
- "e6be942250d6.js.map": {
109
+ "ba2d9ad19864.js.map": {
110
110
  "type": "application/json; charset=utf-8",
111
111
  "encoding": "br",
112
- "bytes": 158592
112
+ "bytes": 181134
113
113
  },
114
114
  "b55a1acf34e0.js": {
115
115
  "type": "text/javascript; charset=utf-8",
@@ -151,15 +151,15 @@
151
151
  "encoding": "br",
152
152
  "bytes": 134542
153
153
  },
154
- "94873ed8d52d.js": {
154
+ "d5aa963bf99b.js": {
155
155
  "type": "text/javascript; charset=utf-8",
156
156
  "encoding": "br",
157
- "bytes": 32962
157
+ "bytes": 36297
158
158
  },
159
- "c3fdbd09da02.js.map": {
159
+ "e7ebb1569396.js.map": {
160
160
  "type": "application/json; charset=utf-8",
161
161
  "encoding": "br",
162
- "bytes": 131993
162
+ "bytes": 144356
163
163
  }
164
164
  }
165
165
  }