dsh-boot-suite 0.0.0-stage → 2.13.11

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 (180) hide show
  1. package/AUDIO-FIELDS.md +121 -0
  2. package/CHANGELOG.md +731 -0
  3. package/DESKTOP.md +142 -0
  4. package/INSTALL.md +75 -0
  5. package/LICENSE +21 -0
  6. package/README.en.md +79 -0
  7. package/README.md +239 -2
  8. package/cordis.patch.yml +10 -0
  9. package/lib/assets/default-background.jpg +0 -0
  10. package/lib/assets/line-1.mp3 +0 -0
  11. package/lib/assets/line-2.mp3 +0 -0
  12. package/lib/assets/line-3.mp3 +0 -0
  13. package/lib/assets/line-4.mp3 +0 -0
  14. package/lib/assets/line-5.mp3 +0 -0
  15. package/lib/assets/line-6.mp3 +0 -0
  16. package/lib/assets/sfx-tick.mp3 +0 -0
  17. package/lib/assets/sfx-ticks-run.mp3 +0 -0
  18. package/lib/client.js +2889 -0
  19. package/lib/host-startup.js +1610 -0
  20. package/lib/host-wallpaper.js +723 -0
  21. package/lib/index.js +37 -0
  22. package/lib/splash.css +1629 -0
  23. package/lib/splash.js +3617 -0
  24. package/open-preview.sh +34 -0
  25. package/package.json +70 -4
  26. package/preview/index.html +568 -0
  27. package/templates/550c-homage/assets/earth-rings.json +1 -0
  28. package/templates/550c-homage/template.json +10961 -0
  29. package/templates/archive-warm/template.json +90 -0
  30. package/templates/chars-globe/assets/land-dots.json +1 -0
  31. package/templates/chars-globe/template.json +1 -0
  32. package/templates/deep-sonar/assets/line-1.wav +0 -0
  33. package/templates/deep-sonar/assets/line-2.wav +0 -0
  34. package/templates/deep-sonar/assets/line-3.wav +0 -0
  35. package/templates/deep-sonar/assets/line-4.wav +0 -0
  36. package/templates/deep-sonar/assets/line-5.wav +0 -0
  37. package/templates/deep-sonar/assets/line-6.wav +0 -0
  38. package/templates/deep-sonar/preview.gif +0 -0
  39. package/templates/deep-sonar/preview.png +0 -0
  40. package/templates/deep-sonar/template.json +104 -0
  41. package/templates/dsh-intro/assets/bgchars-dots.json +1 -0
  42. package/templates/dsh-intro/assets/sfx-click.wav +0 -0
  43. package/templates/dsh-intro/assets/sfx-hum.wav +0 -0
  44. package/templates/dsh-intro/assets/sfx-progress.wav +0 -0
  45. package/templates/dsh-intro/assets/sfx-run.mp3 +0 -0
  46. package/templates/dsh-intro/assets/sfx-switch.wav +0 -0
  47. package/templates/dsh-intro/assets/sfx-thump.wav +0 -0
  48. package/templates/dsh-intro/assets/sfx-tick.mp3 +0 -0
  49. package/templates/dsh-intro/assets/sphere-dots.json +1 -0
  50. package/templates/dsh-intro/assets/voice-main.wav +0 -0
  51. package/templates/dsh-intro/assets//345/217/260/350/257/215-/347/264/247/345/207/221.wav +0 -0
  52. package/templates/dsh-intro/assets//346/250/241/344/273/277550c/346/250/241/346/235/277/347/232/204/345/217/260/350/257/215.wav +0 -0
  53. package/templates/dsh-intro/template.json +1 -0
  54. package/templates/dsh-intro-act2/assets/bgchars-dots.json +1 -0
  55. package/templates/dsh-intro-act2/assets/fake-qr.png +0 -0
  56. package/templates/dsh-intro-act2/assets/sfx-click.wav +0 -0
  57. package/templates/dsh-intro-act2/assets/sfx-hum.wav +0 -0
  58. package/templates/dsh-intro-act2/assets/sfx-progress.wav +0 -0
  59. package/templates/dsh-intro-act2/assets/sfx-run.mp3 +0 -0
  60. package/templates/dsh-intro-act2/assets/sfx-switch.wav +0 -0
  61. package/templates/dsh-intro-act2/assets/sfx-thump.wav +0 -0
  62. package/templates/dsh-intro-act2/assets/sfx-tick.mp3 +0 -0
  63. package/templates/dsh-intro-act2/assets/sphere-dots.json +1 -0
  64. package/templates/dsh-intro-act2/assets/voice-main.wav +0 -0
  65. package/templates/dsh-intro-act2/template.json +745 -0
  66. package/templates/dsh-intro-act3/assets/bgchars-dots.json +1 -0
  67. package/templates/dsh-intro-act3/assets/fake-qr.png +0 -0
  68. package/templates/dsh-intro-act3/assets/sfx-click.wav +0 -0
  69. package/templates/dsh-intro-act3/assets/sfx-hum.wav +0 -0
  70. package/templates/dsh-intro-act3/assets/sfx-progress.wav +0 -0
  71. package/templates/dsh-intro-act3/assets/sfx-run.mp3 +0 -0
  72. package/templates/dsh-intro-act3/assets/sfx-switch.wav +0 -0
  73. package/templates/dsh-intro-act3/assets/sfx-thump.wav +0 -0
  74. package/templates/dsh-intro-act3/assets/sfx-tick.mp3 +0 -0
  75. package/templates/dsh-intro-act3/assets/sphere-dots.json +1 -0
  76. package/templates/dsh-intro-act3/assets/voice-main.wav +0 -0
  77. package/templates/dsh-intro-act3/template.json +387 -0
  78. package/templates/dsh-intro-full/assets/bgchars-dots.json +1 -0
  79. package/templates/dsh-intro-full/assets/fake-qr.png +0 -0
  80. package/templates/dsh-intro-full/assets/sfx-beep.wav +0 -0
  81. package/templates/dsh-intro-full/assets/sfx-clack.wav +0 -0
  82. package/templates/dsh-intro-full/assets/sfx-click.wav +0 -0
  83. package/templates/dsh-intro-full/assets/sfx-data.wav +0 -0
  84. package/templates/dsh-intro-full/assets/sfx-dong.wav +0 -0
  85. package/templates/dsh-intro-full/assets/sfx-hum.wav +0 -0
  86. package/templates/dsh-intro-full/assets/sfx-progress.wav +0 -0
  87. package/templates/dsh-intro-full/assets/sfx-run.mp3 +0 -0
  88. package/templates/dsh-intro-full/assets/sfx-sweep-down.wav +0 -0
  89. package/templates/dsh-intro-full/assets/sfx-sweep-up.wav +0 -0
  90. package/templates/dsh-intro-full/assets/sfx-switch.wav +0 -0
  91. package/templates/dsh-intro-full/assets/sfx-thump.wav +0 -0
  92. package/templates/dsh-intro-full/assets/sfx-tick.mp3 +0 -0
  93. package/templates/dsh-intro-full/assets/sphere-dots.json +1 -0
  94. package/templates/dsh-intro-full/assets/voice-main.wav +0 -0
  95. package/templates/dsh-intro-full/assets//345/217/260/350/257/215-/347/264/247/345/207/221.wav +0 -0
  96. package/templates/dsh-intro-full/assets//346/250/241/344/273/277550c/346/250/241/346/235/277/347/232/204/345/217/260/350/257/215.wav +0 -0
  97. package/templates/dsh-intro-full/template.json +2376 -0
  98. package/templates/dsh-intro-two/assets/bgchars-dots.json +1 -0
  99. package/templates/dsh-intro-two/assets/fake-qr.png +0 -0
  100. package/templates/dsh-intro-two/assets/sfx-beep.wav +0 -0
  101. package/templates/dsh-intro-two/assets/sfx-clack.wav +0 -0
  102. package/templates/dsh-intro-two/assets/sfx-click.wav +0 -0
  103. package/templates/dsh-intro-two/assets/sfx-data.wav +0 -0
  104. package/templates/dsh-intro-two/assets/sfx-dong.wav +0 -0
  105. package/templates/dsh-intro-two/assets/sfx-hum.wav +0 -0
  106. package/templates/dsh-intro-two/assets/sfx-progress.wav +0 -0
  107. package/templates/dsh-intro-two/assets/sfx-run.mp3 +0 -0
  108. package/templates/dsh-intro-two/assets/sfx-sweep-down.wav +0 -0
  109. package/templates/dsh-intro-two/assets/sfx-sweep-up.wav +0 -0
  110. package/templates/dsh-intro-two/assets/sfx-switch.wav +0 -0
  111. package/templates/dsh-intro-two/assets/sfx-thump.wav +0 -0
  112. package/templates/dsh-intro-two/assets/sfx-tick.mp3 +0 -0
  113. package/templates/dsh-intro-two/assets/sphere-dots.json +1 -0
  114. package/templates/dsh-intro-two/assets/voice-main.wav +0 -0
  115. package/templates/dsh-intro-two/assets//345/217/260/350/257/215-/347/264/247/345/207/221.wav +0 -0
  116. package/templates/dsh-intro-two/assets//346/250/241/344/273/277550c/346/250/241/346/235/277/347/232/204/345/217/260/350/257/215.wav +0 -0
  117. package/templates/dsh-intro-two/template.json +2472 -0
  118. package/templates/dsh-intro-welcome/assets/bgchars-dots.json +1 -0
  119. package/templates/dsh-intro-welcome/assets/fake-qr.png +0 -0
  120. package/templates/dsh-intro-welcome/assets/sfx-beep.wav +0 -0
  121. package/templates/dsh-intro-welcome/assets/sfx-clack.wav +0 -0
  122. package/templates/dsh-intro-welcome/assets/sfx-click.wav +0 -0
  123. package/templates/dsh-intro-welcome/assets/sfx-data.wav +0 -0
  124. package/templates/dsh-intro-welcome/assets/sfx-dong.wav +0 -0
  125. package/templates/dsh-intro-welcome/assets/sfx-hum.wav +0 -0
  126. package/templates/dsh-intro-welcome/assets/sfx-progress.wav +0 -0
  127. package/templates/dsh-intro-welcome/assets/sfx-run.mp3 +0 -0
  128. package/templates/dsh-intro-welcome/assets/sfx-sweep-down.wav +0 -0
  129. package/templates/dsh-intro-welcome/assets/sfx-sweep-up.wav +0 -0
  130. package/templates/dsh-intro-welcome/assets/sfx-switch.wav +0 -0
  131. package/templates/dsh-intro-welcome/assets/sfx-thump.wav +0 -0
  132. package/templates/dsh-intro-welcome/assets/sfx-tick.mp3 +0 -0
  133. package/templates/dsh-intro-welcome/assets/sphere-dots.json +1 -0
  134. package/templates/dsh-intro-welcome/assets/voice-main.wav +0 -0
  135. package/templates/dsh-intro-welcome/assets//345/217/260/350/257/215-/347/264/247/345/207/221.wav +0 -0
  136. package/templates/dsh-intro-welcome/assets//346/250/241/344/273/277550c/346/250/241/346/235/277/347/232/204/345/217/260/350/257/215.wav +0 -0
  137. package/templates/dsh-intro-welcome/template.json +1212 -0
  138. package/templates/earth-globe/assets/earth-rings.json +1 -0
  139. package/templates/earth-globe/template.json +137 -0
  140. package/templates/effects-gallery/template.json +186 -0
  141. package/templates/pos-test/template.json +1714 -0
  142. package/templates/terminal-phosphor/assets/avatar.png +0 -0
  143. package/templates/terminal-phosphor/template.json +116 -0
  144. package/templates/timeline-demo/template.json +200 -0
  145. package/templates/whale-girl-scan/NOTICE.md +7 -0
  146. package/templates/whale-girl-scan/assets/whale-girl-scan.mp4 +0 -0
  147. package/templates/whale-girl-scan/template.json +104 -0
  148. package/templates/wipe-demo/template.json +1 -0
  149. package/templates/wipe-tutorial/template.json +1 -0
  150. package/templates/world-line/template.json +712 -0
  151. package/test/smoke-client.mjs +502 -0
  152. package/test/smoke-coords.mjs +30 -0
  153. package/test/smoke-desktop-boot.mjs +370 -0
  154. package/test/smoke-host.mjs +443 -0
  155. package/test/smoke-import.mjs +534 -0
  156. package/test/smoke-merge.mjs +139 -0
  157. package/test/smoke-package.mjs +27 -0
  158. package/test/smoke-splash-tl.mjs +256 -0
  159. package/test/smoke-splash.mjs +518 -0
  160. package/test/smoke-wallpaper-apply.mjs +535 -0
  161. package/test/smoke-wallpaper-client.mjs +472 -0
  162. package/test/smoke-wallpaper-host.mjs +587 -0
  163. package/test/smoke-wallpaper-panel.mjs +378 -0
  164. package/tools/README.md +27 -0
  165. package/tools/build-release.mjs +68 -0
  166. package/tools/doctor.ps1 +95 -0
  167. package/tools/editor.html +2415 -0
  168. package/tools/emergency-uninstall.cmd +5 -0
  169. package/tools/emergency-uninstall.ps1 +93 -0
  170. package/tools/export-frames.mjs +117 -0
  171. package/tools/install.ps1 +386 -0
  172. package/tools/make-backup.ps1 +42 -0
  173. package/tools/make-upgrade-helper.mjs +87 -0
  174. package/tools/motion-check.mjs +147 -0
  175. package/tools/rollback-version.ps1 +116 -0
  176. package/tools/rollback.cmd +5 -0
  177. package/tools/rollback.ps1 +98 -0
  178. package/tools/update-apply.ps1 +153 -0
  179. package//345/256/211/350/243/205.cmd +20 -0
  180. package//346/211/223/345/274/200/351/242/204/350/247/210.cmd +27 -0
@@ -0,0 +1,121 @@
1
+ # 需要音频的字段清单
2
+
3
+ 本文件列出启动动画里**所有会出声的槽位**,以及每个槽位当前用的是哪份素材。
4
+ 数值与文件名直接从 `lib/splash.js` 抓取。
5
+
6
+ ---
7
+
8
+ ## 一、语音台词 —— 5 个槽位,全部用真声素材(终幕不出人声)
9
+
10
+ 素材来自你提供的 `52xo4-igqdo-001.aac`,一一对应如下:
11
+
12
+ | 槽位 | 中文主字 | 英文副标题 | 素材文件 | 源素材 | 素材时长 | 出声时机 |
13
+ |---|---|---|---|---|---|---|
14
+ | `line-1` | 需要访问许可 | `ACCESS PERMISSION REQUIRED` | `lib/assets/line-1.mp3` | V1 (7.40–9.36s) | **1.96s** | 洗白后第一步,与文字渐显同时 |
15
+ | `line-2` | 身份资料确认 | `IDENTITY VERIFICATION` | `lib/assets/line-2.mp3` | V2 (11.29–12.45s) | **1.16s** | 第二步(身份卡 + 等确认) |
16
+ | `line-3` | 接收访问需求 | `ACCESS REQUEST RECEIVED` | `lib/assets/line-3.mp3` | V4 (14.76–15.83s) | **1.07s** | 第三步(鲸鱼标识一笔画成) |
17
+ | `line-4` | 开始读取权限 | `PERMISSION READ STARTED` | `lib/assets/line-4.mp3` | V5 (17.11–18.29s) | **1.18s** | 第四步(十六进制瀑布) |
18
+ | `line-5` | 读取完毕 · 核验通过 | `READ COMPLETE · VERIFIED` | `lib/assets/line-5.mp3` | V6 (19.71–21.41s) | **1.70s** | 第五步(环形准星扫描) |
19
+
20
+ **V3(13.04–14.09s)是用户名字独白,按你的要求不使用。**
21
+
22
+ ### 素材取不到时
23
+
24
+ `voiceSource = 'asset'`(默认)时优先用素材;**素材缺失或解码失败会自动回落到 TTS**
25
+ (`say` 字段就是回落用的文本)。设置页可强制 `tts`。
26
+
27
+ ### 终幕不出人声
28
+
29
+ 按你的要求,**终幕「欢迎 `<身份名称>` 访问」只有画面与和声钟,不播人声**。
30
+ `finale()` 里调用 `voice.stop()` 收尾,源码中已无 `voice.tts(` 调用
31
+ (`test/smoke-splash.mjs` 第 8 节有回归断言钉住这条)。
32
+
33
+ 将来的备选:如果想把终幕也配上人声,可以
34
+ ① 让名字固定死 → 做成素材;② 补一条「欢迎访问」的通用素材(不含名字)。
35
+
36
+ ---
37
+
38
+ ## 二、界面音效 —— 8 个槽位
39
+
40
+ | # | 槽位 | 出声时机 | 素材 | 状态 |
41
+ |---|---|---|---|---|
42
+ | 1 | `cue` | **每次念台词之前**的两声轻提示 | 合成(1046.5 + 1568 Hz) | 合成 |
43
+ | 2 | `tick` | 文字逐字渐显 | `lib/assets/sfx-tick.mp3` | ✅ 真素材 |
44
+ | 3 | `step` | 每个阶段推进 | 同上 | ✅ 真素材 |
45
+ | 4 | `confirm` | 点按钮 / 按 Enter 确认 | 同上 | ✅ 真素材 |
46
+ | 5 | `tickRun` | 十六进制瀑布开始滚动 | `lib/assets/sfx-ticks-run.mp3` | ✅ 真素材 |
47
+ | 6 | `sweep` | 黑幕 → 暖白底板的洗白过场 | 合成(带通噪声扫频) | 合成 |
48
+ | 7 | `rise` | 黑幕上 DeepSeek 标识出现 | 合成(220→990 Hz 上行) | 合成 |
49
+ | 8 | `chime` | 终幕揭幕 | 合成(三音和声钟) | 合成 |
50
+
51
+ `tick` / `step` / `confirm` 目前**共用同一个「哒」**(音量不同)。
52
+ 如果想让它们各用不同音效,补素材即可。
53
+
54
+ ### 为什么 4 个还是合成
55
+
56
+ 你给的音频里 **0–6.90s 是纯静音**:
57
+
58
+ - `rise` 对应原片约 3.9–5.5s → **原音频那里没有声音**
59
+ - `sweep` 对应原片约 6.2–6.7s → **同上**
60
+ - `chime` 对应 22.62–27.40s,但那是**配乐**不是音效
61
+
62
+ ---
63
+
64
+ ## 三、素材清单
65
+
66
+ ```
67
+ lib/assets/
68
+ ├─ line-1.mp3 40.3 KB V1 需要访问许可
69
+ ├─ line-2.mp3 24.5 KB V2 身份资料确认
70
+ ├─ line-3.mp3 23.0 KB V4 接收访问需求
71
+ ├─ line-4.mp3 25.0 KB V5 开始读取权限
72
+ ├─ line-5.mp3 35.2 KB V6 读取完毕 · 核验通过
73
+ ├─ sfx-tick.mp3 2.1 KB 单声「哒」(20ms,质心 7.5kHz)
74
+ └─ sfx-ticks-run.mp3 10.2 KB 整串 10 个「哒」,每 45ms 一个
75
+ ```
76
+
77
+ Host 经 `/dsh-startup/asset/<文件名>` 只读下发(正则白名单 + 防目录穿越)。
78
+ 6 段真声素材的 40–120Hz 能量都在 −25 ~ −34 dB(片尾配乐是 −1.3 dB),
79
+ **素材本身干净,没有配乐底**。
80
+
81
+ ---
82
+
83
+ ## 四、时长怎么定
84
+
85
+ **不再写死。** 每一步的停留时间 = `max(视觉基准, 实际音频时长 + 240ms 收尾)`:
86
+
87
+ ```js
88
+ var spoke = voice.line(step.say, step.zh, step.audio) // Promise<这一句实际播了多久>
89
+ function holdFor(spoken) {
90
+ var target = Math.max(ms(step.hold), (spoken || 0) + ms(240))
91
+ return wait(Math.max(0, target - (spoken || 0)))
92
+ }
93
+ ```
94
+
95
+ 素材播多长,动画就等多久;**用户点得快也不掐断语音**。
96
+ 只有「跳过 / 揭幕」才真的 `cancel()`。
97
+
98
+ 按素材时长,五步的语音段落约:
99
+ `1.96s → 1.16s → 1.07s → 1.18s → 1.70s`(另加每次 240ms 的开头留白)。
100
+
101
+ ---
102
+
103
+ ## 五、有字但故意不配音的字段
104
+
105
+ `en`(中央大字)· `log` / `logEn`(底部日志)· `btnZh` / `btnEn`(按钮)· `badge`(阶段计数)·
106
+ `brand1/2/3`、`orgZh/orgEn/orgSub`、`welcomeBox`、`footer`(品牌与页脚)
107
+
108
+ ---
109
+
110
+ ## 六、相关设置项
111
+
112
+ | 设置项 | 作用 |
113
+ |---|---|
114
+ | `voice` | 语音播报总开关 |
115
+ | `voiceSource` | `asset`=优先真声素材 / `tts`=全 TTS |
116
+ | `voiceLang` | `en` / `zh` / `both`(只影响 TTS 回落时念什么) |
117
+ | `voiceName` / `voiceRate` / `voicePitch` / `voiceVolume` | TTS 音色与语调 |
118
+ | `voiceCue` | 念台词前的提示音开关 |
119
+ | `voiceLead` | 提示音之后留多久再开口(默认 240ms) |
120
+ | `sound` / `soundVolume` | 界面音效总开关与音量(**不连坐语音素材**) |
121
+ | `sfx` | 音效来源:`audio`=真素材 / `synth`=全合成 |