dsh-conversation-aurora 0.2.0 → 0.2.1
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/README.md +2 -2
- package/client.js +22 -19
- package/locale/en.json +1 -1
- package/locale/zh.json +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
|
|
36
36
|
**它只在"你干活"的时候出现**:任何工具在跑、或回合进行中,背景才播放;空闲、切会话、窗口隐藏时立刻停掉 `requestAnimationFrame` 并淡出,两侧恢复普通白纸。
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
**每次开始干活随机换一个主题**(8 个里随机,且不会连着重复)。按过 `Alt+T` 之后会变成全局固定主题;想恢复"每会话自动",删掉 `localStorage` 里的 `dsh.conversation-aurora.theme` 即可。
|
|
39
39
|
|
|
40
40
|
---
|
|
41
41
|
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
|
|
83
83
|
## 已知限制
|
|
84
84
|
|
|
85
|
-
1. **依赖宿主的 DOM 语义属性**:`[data-conversation-content]` / `[data-tool][data-state]` / `[data-chat-running]` / `[data-streaming]
|
|
85
|
+
1. **依赖宿主的 DOM 语义属性**:`[data-conversation-content]` / `[data-tool][data-state]` / `[data-chat-running]` / `[data-streaming]`。DSH 大版本升级后如果这些改名,插件会安静地什么都不做(不会报错、不会挡交互)。
|
|
86
86
|
2. **没有"背景层"插槽**:DSH 目前没有这个扩展点,所以背景层是挂在对话画布元素内部的(`z-index:-1`)。这是刻意偏离「只能注册进 slot」的地方,随插件停用一起消失。
|
|
87
87
|
3. **切会话会静默 600ms**:避免把上一轮残留的工具行当成"正在工作",看到几秒特效。
|
|
88
88
|
4. **减少动态效果**:系统开启后只画一帧静止画面,不跑 `requestAnimationFrame`。
|
package/client.js
CHANGED
|
@@ -97,15 +97,6 @@ body[data-ds-dark-theme] .dsh-stage__veil{
|
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
function hashString(text) {
|
|
101
|
-
let h = 2166136261;
|
|
102
|
-
for (let i = 0; i < text.length; i += 1) {
|
|
103
|
-
h ^= text.charCodeAt(i);
|
|
104
|
-
h = Math.imul(h, 16777619);
|
|
105
|
-
}
|
|
106
|
-
return h >>> 0;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
100
|
/** 浅色用墨色 + multiply;深色用亮色 + lighter。 */
|
|
110
101
|
function stagePalette() {
|
|
111
102
|
const dark = document.body.hasAttribute('data-ds-dark-theme');
|
|
@@ -760,6 +751,7 @@ function themeWarp(g) {
|
|
|
760
751
|
let sessionKey = null;
|
|
761
752
|
let quietUntil = 0;
|
|
762
753
|
let forcedTheme = readStore(STORAGE.theme, '');
|
|
754
|
+
let activeTheme = '';
|
|
763
755
|
let stageRaf = 0;
|
|
764
756
|
let stageTheme = null;
|
|
765
757
|
|
|
@@ -870,12 +862,17 @@ function themeWarp(g) {
|
|
|
870
862
|
|
|
871
863
|
/* ---------- 背景播放 ---------- */
|
|
872
864
|
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
865
|
+
/**
|
|
866
|
+
* 每次开工重新挑一个主题(随机,且不和上一次重复)。
|
|
867
|
+
* 按 Alt+T 固定过主题时,就一直用它。
|
|
868
|
+
*/
|
|
869
|
+
function pickTheme() {
|
|
870
|
+
const ids = [];
|
|
871
|
+
for (let i = 0; i < STAGE_THEMES.length; i += 1) ids.push(STAGE_THEMES[i].id);
|
|
872
|
+
if (forcedTheme && ids.indexOf(forcedTheme) >= 0) return forcedTheme;
|
|
873
|
+
let id = ids[(Math.random() * ids.length) | 0];
|
|
874
|
+
if (ids.length > 1 && id === activeTheme) id = ids[(ids.indexOf(id) + 1) % ids.length];
|
|
875
|
+
return id;
|
|
879
876
|
}
|
|
880
877
|
|
|
881
878
|
function stopStage() {
|
|
@@ -903,7 +900,8 @@ function themeWarp(g) {
|
|
|
903
900
|
const pal = stagePalette();
|
|
904
901
|
ctx.globalCompositeOperation = pal.blend;
|
|
905
902
|
|
|
906
|
-
const id =
|
|
903
|
+
const id = activeTheme || pickTheme();
|
|
904
|
+
activeTheme = id;
|
|
907
905
|
let factory = STAGE_THEMES[0];
|
|
908
906
|
for (let i = 0; i < STAGE_THEMES.length; i += 1) {
|
|
909
907
|
if (STAGE_THEMES[i].id === id) factory = STAGE_THEMES[i];
|
|
@@ -938,16 +936,21 @@ function themeWarp(g) {
|
|
|
938
936
|
return;
|
|
939
937
|
}
|
|
940
938
|
stage.dataset.on = '1';
|
|
941
|
-
if (!stageRaf)
|
|
939
|
+
if (!stageRaf) {
|
|
940
|
+
activeTheme = pickTheme();
|
|
941
|
+
startStage();
|
|
942
|
+
}
|
|
942
943
|
}
|
|
943
944
|
|
|
944
945
|
function cycleTheme() {
|
|
945
946
|
const ids = [];
|
|
946
947
|
for (let i = 0; i < STAGE_THEMES.length; i += 1) ids.push(STAGE_THEMES[i].id);
|
|
947
|
-
let at = ids.indexOf(
|
|
948
|
-
if (at < 0) at = ids.indexOf(
|
|
948
|
+
let at = ids.indexOf(activeTheme);
|
|
949
|
+
if (at < 0) at = ids.indexOf(forcedTheme);
|
|
950
|
+
if (at < 0) at = 0;
|
|
949
951
|
forcedTheme = ids[(at + 1) % ids.length];
|
|
950
952
|
writeStore(STORAGE.theme, forcedTheme);
|
|
953
|
+
activeTheme = forcedTheme;
|
|
951
954
|
if (stageRaf || busy) {
|
|
952
955
|
stopStage();
|
|
953
956
|
if (busy && !document.hidden) startStage();
|
package/locale/en.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"meta": {
|
|
3
3
|
"title": "Conversation Backgrounds",
|
|
4
|
-
"description": "Full-canvas animated backgrounds: starfield / code rain / circuit / cat / girl / racer / snow / bubbles. Alt+T next theme, Alt+D light/dark.
|
|
4
|
+
"description": "Full-canvas animated backgrounds: starfield / code rain / circuit / cat / girl / racer / snow / bubbles, a new one each time the agent starts working. Alt+T next theme, Alt+D light/dark."
|
|
5
5
|
}
|
|
6
6
|
}
|
package/locale/zh.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"meta": {
|
|
3
3
|
"title": "对话区动效背景",
|
|
4
|
-
"description": "对话区整屏动效背景:星空 / 代码雨 / 电路 / 小猫 / 小女生 / 赛车 / 飘雪 /
|
|
4
|
+
"description": "对话区整屏动效背景:星空 / 代码雨 / 电路 / 小猫 / 小女生 / 赛车 / 飘雪 / 肥皂泡,每次开始干活随机换一个。快捷键 Alt+T 换背景、Alt+D 切明暗;只在 Agent 干活时播放。"
|
|
5
5
|
}
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-conversation-aurora",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Full-canvas animated backgrounds for the DSH conversation pane: starfield, code rain, circuits, cat, girl, racer, snow, bubbles.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|