neuro-simulator 0.6.1__py3-none-any.whl → 0.6.2__py3-none-any.whl
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.
- README.md +40 -45
- neuro_simulator/client/assets/index-rmyQl8Tr.css +1 -0
- neuro_simulator/client/index.html +10 -10
- neuro_simulator/core/application.py +19 -11
- neuro_simulator/dashboard/assets/{AgentView-DBq2msN_.js → AgentView-DGut3feB.js} +2 -2
- neuro_simulator/dashboard/assets/{ChatBotView-BqQsuJUv.js → ChatBotView-bvwHe8hJ.js} +2 -2
- neuro_simulator/dashboard/assets/{ConfigView-CPYMgl_d.js → ConfigView-DLy2_6Tx.js} +2 -2
- neuro_simulator/dashboard/assets/{ContextTab-BSROkcd2.js → ContextTab-Cv2a7xRF.js} +1 -1
- neuro_simulator/dashboard/assets/{ControlView-BvflkxO-.js → ControlView-BVJk6r1d.js} +1 -1
- neuro_simulator/dashboard/assets/{FieldRenderer-DyPAEyOT.js → FieldRenderer-xMOXYQeU.js} +1 -1
- neuro_simulator/dashboard/assets/{LogsTab-C-SZhHdN.js → LogsTab-C7r21Vcz.js} +1 -1
- neuro_simulator/dashboard/assets/{LogsView-82wOs2Pp.js → LogsView-DF62M8uv.js} +1 -1
- neuro_simulator/dashboard/assets/{MemoryTab-p3Q-Wa4e.js → MemoryTab-BMDqRcHX.js} +1 -1
- neuro_simulator/dashboard/assets/{ToolsTab-BxbFZhXs.js → ToolsTab-Ds4M2VeQ.js} +1 -1
- neuro_simulator/dashboard/assets/{index-CcYt9OR6.css → index-D2ait7Ff.css} +2 -2
- neuro_simulator/dashboard/assets/{index-Ba5ZG3QB.js → index-Sav9Djr5.js} +3 -3
- neuro_simulator/dashboard/index.html +3 -3
- {neuro_simulator-0.6.1.dist-info → neuro_simulator-0.6.2.dist-info}/METADATA +37 -39
- {neuro_simulator-0.6.1.dist-info → neuro_simulator-0.6.2.dist-info}/RECORD +23 -23
- neuro_simulator/client/assets/index-C_kzLmQy.css +0 -1
- /neuro_simulator/client/assets/{index-DRLWJPZv.js → index-BHgW05Wx.js} +0 -0
- {neuro_simulator-0.6.1.dist-info → neuro_simulator-0.6.2.dist-info}/WHEEL +0 -0
- {neuro_simulator-0.6.1.dist-info → neuro_simulator-0.6.2.dist-info}/entry_points.txt +0 -0
- {neuro_simulator-0.6.1.dist-info → neuro_simulator-0.6.2.dist-info}/licenses/LICENSE +0 -0
@@ -2,11 +2,11 @@
|
|
2
2
|
<html lang="">
|
3
3
|
<head>
|
4
4
|
<meta charset="UTF-8">
|
5
|
-
<link rel="icon" href="/favicon.ico">
|
5
|
+
<link rel="icon" href="/dashboard/favicon.ico">
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
7
7
|
<title>𝐯𝐞𝐝𝐚𝐥𝟗𝟖𝟕 𝐒𝐢𝐦𝐮𝐥𝐚𝐭𝐨𝐫</title>
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
9
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
8
|
+
<script type="module" crossorigin src="/dashboard/assets/index-Sav9Djr5.js"></script>
|
9
|
+
<link rel="stylesheet" crossorigin href="/dashboard/assets/index-D2ait7Ff.css">
|
10
10
|
</head>
|
11
11
|
<body>
|
12
12
|
<div id="app"></div>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: neuro_simulator
|
3
|
-
Version: 0.6.
|
3
|
+
Version: 0.6.2
|
4
4
|
Summary: Neuro Simulator Server
|
5
5
|
Project-URL: Homepage, https://github.com/Moha-Master/neuro-simulator
|
6
6
|
Project-URL: Repository, https://github.com/Moha-Master/neuro-simulator
|
@@ -41,14 +41,14 @@ Description-Content-Type: text/markdown
|
|
41
41
|
|
42
42
|
*本临时README和所有代码均由AI生成*
|
43
43
|
|
44
|
-
Neuro Simulator 是一个模拟 Neuro-sama
|
45
|
-
|
46
|
-
它能生成实时的虚拟聊天内容,并通过 TTS 合成语音,提供沉浸式的 Twitch vedal987
|
44
|
+
Neuro Simulator 是一个模拟 Neuro-sama 直播的项目。
|
45
|
+
它通过使用自带的有记忆 Agent,~~也可调用 Letta(一个为 LLM 添加自主记忆功能的项目)~~,以及相同构造的 Chatbot Agent 作为虚拟观众,模拟一场 Neuro-sama 的 Just Chatting 直播。
|
46
|
+
它能生成实时的虚拟聊天内容,并通过 TTS 合成语音,提供沉浸式的 Twitch vedal987 频道观看体验。
|
47
47
|
|
48
48
|
## 特性
|
49
49
|
|
50
|
-
|
51
|
-
后续有低成本低性能方法实现 Evil 音色模仿的时候,可能加入 Evil
|
50
|
+
和其他类似的 AI Vtuber 项目不同,本项目旨在尽可能模拟 Neuro-sama 于 Twitch 上的 Tuesday Stream,因此在 Vtuber 部分不会有太多的自定义部分,也不会考虑引入 Neuro/Evil 以外的 Live2D。
|
51
|
+
后续有低成本低性能方法实现 Evil 音色模仿的时候,可能加入 Evil Neuro。
|
52
52
|
|
53
53
|
### 预览
|
54
54
|
|
@@ -60,44 +60,44 @@ Neuro Simulator 是一个模拟 Neuro-sama 直播的项目
|
|
60
60
|
|
61
61
|
### 核心亮点
|
62
62
|
|
63
|
-
-
|
64
|
-
- **配置热重载**:通过 Web
|
65
|
-
-
|
66
|
-
- **Agent 记忆管理**:内建 Agent 支持多种记忆类型(初始化记忆、核心记忆、临时记忆、上下文)
|
63
|
+
- **多客户端支持**:支持多个客户端连接,实时广播内容。
|
64
|
+
- **配置热重载**:通过 Web 控制面板实时修改和热重载配置。
|
65
|
+
- ~~**双 Agent 模式**:支持 Letta Agent 和内建 Agent,提供更多自定义选项~~ 对 Letta Agent 的支持暂时下线,后续有缘再见。
|
67
66
|
|
68
67
|
## 快速开始
|
69
68
|
|
70
|
-
1. **准备外部服务**:确保你拥有必要的 API 密钥,包括 LLM(Gemini/OpenAI)和 Azure TTS
|
71
|
-
2.
|
69
|
+
1. **准备外部服务**:确保你拥有必要的 API 密钥,包括 LLM(Gemini/OpenAI)和 Azure TTS;~~如果使用 Letta,也请注册好相关的 API 。~~
|
70
|
+
2. **安装服务端**:已上传至 PyPi 作为可用 pip 安装的软件包,你可以用任何一个 pip 安装到全局或 venv 中。
|
72
71
|
```bash
|
73
72
|
pip install neuro-simulator
|
74
73
|
```
|
74
|
+
推荐使用 pipx,可以在不更改系统 Python 依赖的情况下直接安装为全局软件。
|
75
|
+
|
75
76
|
3. **运行服务端**:
|
76
77
|
```bash
|
77
78
|
neuro
|
78
79
|
```
|
79
|
-
|
80
|
-
- 不指定 `--dir` 则自动创建和默认使用 `~/.config/neuro-simulator/`
|
81
|
-
-
|
80
|
+
现在无需手动填写 `config.yaml`,程序在启动时会自动创建一份包含默认设置的配置文件,只需在管理面板中填写和为 Agent 分配 API 服务商即可。
|
81
|
+
- 不指定 `--dir, -D` 则自动创建和默认使用 `~/.config/neuro-simulator/` 作为工作目录。
|
82
|
+
- 程序会在工作目录下自动生成文件夹结构,拷贝需要的文件到目录内,保持程序包本体只读。
|
82
83
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
```
|
84
|
+
程序启动后,如果工作正常,会默认在 `http://127.0.0.1:8000` 提供对外服务,你可以在设置中修改这个端口。
|
85
|
+
|
86
|
+
4. **打开管理面板**:现在程序已经内置管理面板,直接在浏览器中打开 `http://127.0.0.1:8000/dashboard/` 即可,内置面板会自动连接到服务端。
|
87
|
+
|
88
|
+
**配置流程**:
|
89
|
+
1. 在管理面板中打开“配置”页面。
|
90
|
+
2. 在“LLM服务商”中添加一个以上的选项。
|
91
|
+
3. 在“TTS服务商”中添加一个以上的 Azure TTS 服务。
|
92
|
+
4. 在“Neuro”中分配一个 LLM 服务商和一个 TTS 服务商。
|
93
|
+
5. 在“Chatbot”中分配一个 LLM 服务商。
|
94
|
+
|
95
|
+
5. **打开客户端**:现在程序已经内置客户端,在浏览器中访问 `<http协议>://<服务端地址>/` 即可。
|
96
|
+
但是这种方式下自动从哔哩哔哩获取最近回放的功能似乎不工作,需要对哔哩哔哩 API 进行反代。如果你安装了 nodejs,则可以使用 npm 运行开发服务器的方式使用客户端。
|
97
97
|
|
98
98
|
更多更复杂或者更简单的使用方式,请参见三个部分的详细文档
|
99
99
|
|
100
|
-
##
|
100
|
+
## 项目结构(稍微过时,待更新)
|
101
101
|
|
102
102
|
```
|
103
103
|
Neuro-Simulator/
|
@@ -117,7 +117,6 @@ Neuro-Simulator/
|
|
117
117
|
|
118
118
|
- [服务端 README](server/README.md)
|
119
119
|
- [客户端 README](client/README.md)
|
120
|
-
- [控制面板 README](dashboard_web/README.md)
|
121
120
|
|
122
121
|
## 开发计划和已实现功能
|
123
122
|
|
@@ -141,7 +140,7 @@ Neuro-Simulator/
|
|
141
140
|
- [ ] 模块化热插拔工具
|
142
141
|
- [ ] 连接到 MCP 服务器
|
143
142
|
- [ ] 兼容 Offical [Neuro SDK](https://github.com/VedalAI/neuro-sdk)
|
144
|
-
- [ ]
|
143
|
+
- [ ] 拉起 Evil Agent 并进行对话
|
145
144
|
- [ ] Evil Agent 模块,~~卖掉了~~ 待 Neuro Agent 完善、有低成本低性能方法实现 Evil 音色模仿的时候加入
|
146
145
|
- [ ] 对 Neuroverse 更多成员的 AI Agent 复现,进而允许 Neuro Agent 向其发送 DM(语音聊天可能不太现实)
|
147
146
|
- [x] Chatbot 模块
|
@@ -150,8 +149,8 @@ Neuro-Simulator/
|
|
150
149
|
- [x] prompt 编辑
|
151
150
|
- [x] 调用 Gemini 和 OpenAI API 格式的LLM
|
152
151
|
- [x] 基于 Neuro Agent 的上一句内容而做出 Reaction
|
153
|
-
- [ ] ~~在 prompt 中包含直播标题等更多信息~~
|
154
|
-
- [x] ~~实现更长的上下文~~
|
152
|
+
- [ ] ~~在 prompt 中包含直播标题等更多信息~~ 将在更强大的 Chatbot Agent 中实现
|
153
|
+
- [x] ~~实现更长的上下文~~ 将在更强大的 Chatbot Agent 中实现
|
155
154
|
- [x] Chatbot Agent
|
156
155
|
- [x] 更好的用户名生成逻辑
|
157
156
|
- [x] 更长的上下文,包括自身输出和 Neuro Agent 内容
|
@@ -171,7 +170,7 @@ Neuro-Simulator/
|
|
171
170
|
- [x] TTS 合成和推送
|
172
171
|
- [x] Azure TTS
|
173
172
|
- [ ] 待定 TTS
|
174
|
-
- [
|
173
|
+
- [X] 剔除 Emoji 等特殊字符
|
175
174
|
- [x] 进行直播和直播环节
|
176
175
|
- [x] Just Chatting 单人直播
|
177
176
|
- [x] Neuro Stream
|
@@ -191,8 +190,8 @@ Neuro-Simulator/
|
|
191
190
|
- [x] 直播标题和标签等信息
|
192
191
|
- [ ] 在非直播的空闲时间自动获取真实世界中 Neuro 的近期直播内容,更新完善记忆内容(不是微调训练)
|
193
192
|
- [ ] 对 Ollama 等本地 LLM 的优化
|
194
|
-
- [
|
195
|
-
- [
|
193
|
+
- [x] 服务端托管管理面板
|
194
|
+
- [x] Web 控制面板
|
196
195
|
- [ ] 使用 PyInquiry 的命令行面板
|
197
196
|
- 客户端
|
198
197
|
- [ ] 仅包含直播区域的客户端,适用于希望使用 OBS 或其他软件推流画面的用户
|
@@ -237,6 +236,7 @@ Neuro-Simulator/
|
|
237
236
|
- [ ] 真实的主播首页竖屏模式界面(目前沿用针对竖屏优化过的横屏样式)
|
238
237
|
- [ ] 下滑的更多主播信息
|
239
238
|
- [ ] 其他次级页面
|
239
|
+
- [x] 服务端托管客户端
|
240
240
|
- [ ] 更多客户端(若实现原生客户端则弃用 tauri)
|
241
241
|
- [x] 可托管的 Web 静态页面
|
242
242
|
- [x] Windows 客户端
|
@@ -260,7 +260,6 @@ Neuro-Simulator/
|
|
260
260
|
- [x] 对话方式展现
|
261
261
|
- [x] 上下文方式展现
|
262
262
|
- [x] 实时更新
|
263
|
-
- [x] 更好的界面
|
264
263
|
- [ ] 可视化展现 Agent 的详细执行流程
|
265
264
|
- [x] 实时日志查看
|
266
265
|
- [ ] 按照等级进行日志筛选
|
@@ -270,7 +269,6 @@ Neuro-Simulator/
|
|
270
269
|
- [ ] 工具管理取决于服务端开发进度
|
271
270
|
- 杂项,有一些可能永远不会实现,有一些可能很快就能完成
|
272
271
|
- [ ] 一键启动器和整合包,适用于不需要分开部署的情况,或者面向普通小白用户
|
273
|
-
- [ ] 把三个项目模块整合为一个
|
274
272
|
- [ ] 基于静态立绘制作的简易Live2D,能动就行
|
275
273
|
- [x] 目前不会考虑语音输入
|
276
274
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
README.md,sha256=
|
1
|
+
README.md,sha256=7pb9WxHIsbrrzlXps_W5ejL147vIu0ak3VTeDjIcfvU,6058
|
2
2
|
WEBSOCKET_API.md,sha256=LkItXviJL-0DGqX85CSB9LAmcnj2cAnBzETvPIjRY8U,9203
|
3
3
|
requirements.txt,sha256=4QYJ4CX6Q4nt2ShHwMuLZaRSM7wg8au-RX0i_rMVl7k,116
|
4
4
|
neuro_simulator/__init__.py,sha256=-tposzyvg6UckPcfSvtc03UjxBa9oCe_zRvlKf8splk,31
|
@@ -55,7 +55,7 @@ neuro_simulator/chatbot/tools/post_chat_message.py,sha256=lchGCSQKzPZgb1z__MIDkG
|
|
55
55
|
neuro_simulator/core/__init__.py,sha256=-ojq25c8XA0CU25b0OxcGjH4IWFEDHR-HXSRSZIuKe8,57
|
56
56
|
neuro_simulator/core/agent_factory.py,sha256=jX7wRyTS7Jd-qfIGj0kGs_0pblx5zUcyVAyRETIUhvw,1359
|
57
57
|
neuro_simulator/core/agent_interface.py,sha256=ZXUCtkQUvsBQ5iCb0gTILJaShn5KmSrEgKhd7PK18HE,2794
|
58
|
-
neuro_simulator/core/application.py,sha256=
|
58
|
+
neuro_simulator/core/application.py,sha256=MpvBEl73bcGPYluwGuOep-nBwg_Rd4WyRFmDpfh68YU,30547
|
59
59
|
neuro_simulator/core/config.py,sha256=eH5LdTm7gtLBqV7bbiUulYTW2abKYUmK934x3zOS19w,4766
|
60
60
|
neuro_simulator/core/path_manager.py,sha256=_MK3S5ab30zT9zDISC-noDbVE8Axs5y1A3WgImqD-wI,4284
|
61
61
|
neuro_simulator/services/__init__.py,sha256=s3ZrAHg5TpJakadAAGY1h0wDw_xqN4Je4aJwJyRBmk4,61
|
@@ -75,15 +75,15 @@ neuro_simulator/client/banner.jpeg,sha256=LFqSS0alXwQPilUnHNZ4qkx63Jbc5VYF0HsJOi
|
|
75
75
|
neuro_simulator/client/channel_points.png,sha256=Tmy9kmKQWNfK-gPMKVvUYrpEiT3CsPgSx6V1-PJRBhI,11509
|
76
76
|
neuro_simulator/client/error.mp3,sha256=ovZ-JXAHrqYUkjFshP48_3ZQcoRi7gUxO_ZkShoeIyA,24048
|
77
77
|
neuro_simulator/client/favicon.ico,sha256=8mR4U-Ufv6l8_Md9C6yqbv6mZ0WV9DRLSPpms8WKp4g,370418
|
78
|
-
neuro_simulator/client/index.html,sha256=
|
78
|
+
neuro_simulator/client/index.html,sha256=ejUfiKOsmE6812dsREMGHZz8YB6qm2I0wyn-JeRMKqA,22417
|
79
79
|
neuro_simulator/client/neuro_start.mp4,sha256=xCLnNzv4THnzRYwkdV6EiqXc-XtFd867R2ZVLDvNp0Y,8226418
|
80
80
|
neuro_simulator/client/neurosama.png,sha256=FTyEEEu0XwRxicKtmQXQONiRVhYKgTsPqlOO2Ymbp1c,1447110
|
81
81
|
neuro_simulator/client/sc_pink.png,sha256=bmC1Wn8I27nsc9lkQJ8-LeacL6Y-eOZor_JkmXy9Om0,56768
|
82
82
|
neuro_simulator/client/sc_purple.png,sha256=XUs6fB0CHPTzQQ3npS1rje5gcigy-T4uao8k3RxOk50,57224
|
83
83
|
neuro_simulator/client/sub_badge.svg,sha256=-Es6Nz9sd7c3sJ4Mys2q0vSd7AZVC9uE-Sq4ipCsioo,825
|
84
84
|
neuro_simulator/client/user_avatar.jpg,sha256=j2MZCFm0MYmigPPOLsuFqA8PhvQ5SWb0GTpqb9VKqvY,29625
|
85
|
-
neuro_simulator/client/assets/index-
|
86
|
-
neuro_simulator/client/assets/index-
|
85
|
+
neuro_simulator/client/assets/index-BHgW05Wx.js,sha256=5sAhfYAN0xKCbG6iZv20bjA7CaXr4zmqR57wd5ko14o,37340
|
86
|
+
neuro_simulator/client/assets/index-rmyQl8Tr.css,sha256=ischTFPWjCjy3-vCQ863InoM-wjMuybtesUP0vaY-XA,27865
|
87
87
|
neuro_simulator/client/assets/inter-cyrillic-400-normal-BLGc9T1a.woff2,sha256=Y20TqrBe2fpJ3xnFf93btvPQhPRjdD7lJXVJ27cSQAU,7712
|
88
88
|
neuro_simulator/client/assets/inter-cyrillic-400-normal-alAqRL36.woff,sha256=GmDEQlTts7GpPN_vX-7Kqig5IarhIL_nICL6SWvtq5Y,9780
|
89
89
|
neuro_simulator/client/assets/inter-cyrillic-ext-400-normal-BE2fNs0E.woff,sha256=RHF2hsw99YHFTevMHQw7zGUUaXtPsetnWZbP0cfZaYA,13336
|
@@ -104,33 +104,33 @@ neuro_simulator/client/fonts/first-coffee.woff2,sha256=pUBfpDh_6HQ20V9EuKWq2UFLn
|
|
104
104
|
neuro_simulator/client/fonts/noto-sans-sc.woff2,sha256=KsZkKouZc8g1eQ_5wzOWuGkIcSYzGGsHYZJhyu0hFDg,4182468
|
105
105
|
neuro_simulator/dashboard/favicon.ico,sha256=8mR4U-Ufv6l8_Md9C6yqbv6mZ0WV9DRLSPpms8WKp4g,370418
|
106
106
|
neuro_simulator/dashboard/first-coffee.woff2,sha256=pUBfpDh_6HQ20V9EuKWq2UFLnMi9RPHigLN2rOU9Jps,11496
|
107
|
-
neuro_simulator/dashboard/index.html,sha256=
|
108
|
-
neuro_simulator/dashboard/assets/AgentView-
|
107
|
+
neuro_simulator/dashboard/index.html,sha256=snikAtIfw4VxfkKJZvu_DrCglINGnr0TuZB6_wO44pI,519
|
108
|
+
neuro_simulator/dashboard/assets/AgentView-DGut3feB.js,sha256=QGHJMgIWiRVX8C4Ctd7KNqbeWrxsm5vNfb6l3mjYtoU,2413
|
109
109
|
neuro_simulator/dashboard/assets/AgentView-TDgmx5bK.css,sha256=UjBaTbzD4yiDxAHXC5rSSgY-tDFyBfVYS_O1VNcmoYU,361
|
110
|
-
neuro_simulator/dashboard/assets/ChatBotView-BqQsuJUv.js,sha256=YdaDcUiIRvT7NQdtRWFZoArLy2DPX-zyVMTZZrS46_c,2246
|
111
110
|
neuro_simulator/dashboard/assets/ChatBotView-Dyd6g14G.css,sha256=61Z9sVqq9scsOWZJaOslumxe8Q0I_leQGY4jxy1Zm9o,367
|
112
|
-
neuro_simulator/dashboard/assets/
|
111
|
+
neuro_simulator/dashboard/assets/ChatBotView-bvwHe8hJ.js,sha256=cVgI1zuWiG2VrJB3XijhqzY_mqtAeFruzFM7G3kbMns,2246
|
112
|
+
neuro_simulator/dashboard/assets/ConfigView-DLy2_6Tx.js,sha256=AFI2BHIWsie0klvk6913BoVGXon7AWDC1A6uJOQuw1Q,2932
|
113
113
|
neuro_simulator/dashboard/assets/ConfigView-aFribfyR.css,sha256=ubCvxhHoetmZ-Dr1BhA5WzniPouxSTHrVNUF_ernK8E,51
|
114
|
-
neuro_simulator/dashboard/assets/ContextTab-
|
114
|
+
neuro_simulator/dashboard/assets/ContextTab-Cv2a7xRF.js,sha256=-HdLBJcg1mYePUEQ9jxinbQ12eh0JOpjwPsx1r-U-ro,1249
|
115
115
|
neuro_simulator/dashboard/assets/ContextTab-DyPsixHQ.css,sha256=OuDxYxHQE6vR0K0olHcct5JbfJ8dRZqwsLoM6HUrJdY,306
|
116
116
|
neuro_simulator/dashboard/assets/ControlView-BUCt3umR.css,sha256=Nspx07838NWMuUKrWJCRgwRBdjl-zezVBzUSfdDBsiU,108
|
117
|
-
neuro_simulator/dashboard/assets/ControlView-
|
118
|
-
neuro_simulator/dashboard/assets/FieldRenderer-
|
119
|
-
neuro_simulator/dashboard/assets/LogsTab-
|
117
|
+
neuro_simulator/dashboard/assets/ControlView-BVJk6r1d.js,sha256=cyCqgbcXUkHuF4pu1XqKTH2eSvcoamVPXzWaTN5preI,1549
|
118
|
+
neuro_simulator/dashboard/assets/FieldRenderer-xMOXYQeU.js,sha256=MoRbydCMcwkNY_z6cDBSzVSvKN82nnAlImP-rOkMlds,7598
|
119
|
+
neuro_simulator/dashboard/assets/LogsTab-C7r21Vcz.js,sha256=YWqd8ziYE3czHE0JCb7VpH6BjItBY_FjwkxweaNRqFk,542
|
120
120
|
neuro_simulator/dashboard/assets/LogsTab-wg3i3S6b.css,sha256=hRDoXwSnuvWe9vt-lh8XbMiJTS-WV-HTHf3-JOmkfuE,254
|
121
|
-
neuro_simulator/dashboard/assets/LogsView-82wOs2Pp.js,sha256=RLTJXNzKxDID08imN9zdTHYqwNV-5MvvoIWQ5AzXD00,788
|
122
121
|
neuro_simulator/dashboard/assets/LogsView-D2F8f-Mc.css,sha256=69G8eFicz4WLe-f3mnn7YMfo-odPHM7gcRT160oNgGo,254
|
122
|
+
neuro_simulator/dashboard/assets/LogsView-DF62M8uv.js,sha256=1TKbQDsSHybCWh9NmrkU6qlmRhQD1H_DDg0l6Vkch40,788
|
123
|
+
neuro_simulator/dashboard/assets/MemoryTab-BMDqRcHX.js,sha256=_e9Dl5qzgERWcfZ13wdJqQF6Wa3kVoj0ks77FDsffR4,9508
|
123
124
|
neuro_simulator/dashboard/assets/MemoryTab-DPthi6jg.css,sha256=yZNqQVtHqNjjsKz3eCRmcuuYi4kKQFMTUHiWEHbOeHY,151
|
124
|
-
neuro_simulator/dashboard/assets/
|
125
|
-
neuro_simulator/dashboard/assets/
|
126
|
-
neuro_simulator/dashboard/assets/index-
|
127
|
-
neuro_simulator/dashboard/assets/index-CcYt9OR6.css,sha256=aw0iyjqWqN0owGgSVd8UFD9vZMd6GI7lc7ey3WYQ05I,804934
|
125
|
+
neuro_simulator/dashboard/assets/ToolsTab-Ds4M2VeQ.js,sha256=4JT65ialDsXrg4lJnLbYMGgr4KYc_fXINYPvtvEClkg,3694
|
126
|
+
neuro_simulator/dashboard/assets/index-D2ait7Ff.css,sha256=xyeu99AsoNl4m-Yg0RhZEVE_xKwJn_6iZWybW7O7x34,804994
|
127
|
+
neuro_simulator/dashboard/assets/index-Sav9Djr5.js,sha256=0fYF175ApirF447oVSIRn4cSKMQ778X7St8iJRXAuhc,629157
|
128
128
|
neuro_simulator/dashboard/assets/materialdesignicons-webfont-B7mPwVP_.ttf,sha256=YeirpaTpgf4iz3yOi82-oAR251xiw38Bv37jM2HWhCg,1307660
|
129
129
|
neuro_simulator/dashboard/assets/materialdesignicons-webfont-CSr8KVlo.eot,sha256=CxgxBNL8XyYZbnc8d72vLgVQn9QlnS0V7O3Kebh-hPk,1307880
|
130
130
|
neuro_simulator/dashboard/assets/materialdesignicons-webfont-Dp5v-WZN.woff2,sha256=Zi_vqPL4qVwYWI0hd0eJwQfGTnccvmWmmvRikcQxGvw,403216
|
131
131
|
neuro_simulator/dashboard/assets/materialdesignicons-webfont-PXm3-2wK.woff,sha256=pZKKDVwvYk5G-Y2bFcL2AEU3f3xZTdeKF1kTLqO0Y-s,587984
|
132
|
-
neuro_simulator-0.6.
|
133
|
-
neuro_simulator-0.6.
|
134
|
-
neuro_simulator-0.6.
|
135
|
-
neuro_simulator-0.6.
|
136
|
-
neuro_simulator-0.6.
|
132
|
+
neuro_simulator-0.6.2.dist-info/METADATA,sha256=cEPboXmzMc3Es39_v-wmgV69_s92PMMutIugIk3fUc4,12375
|
133
|
+
neuro_simulator-0.6.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
134
|
+
neuro_simulator-0.6.2.dist-info/entry_points.txt,sha256=qVd5ypnRRgU8Cw7rWfZ7o0OXyS9P9hgY-cRoN_mgz9g,51
|
135
|
+
neuro_simulator-0.6.2.dist-info/licenses/LICENSE,sha256=cPsKhVNOnNSSva44vcCU-SDDFf8iE-EhpGXCiUK9tAM,1072
|
136
|
+
neuro_simulator-0.6.2.dist-info/RECORD,,
|
@@ -1 +0,0 @@
|
|
1
|
-
:root{--twitch-purple: #9147FF;--twitch-dark-bg: #F2F2F2;--twitch-chat-bg: #FFFFFF;--twitch-text-color: #18181B;--twitch-secondary-text-color: #6A6A6D;--twitch-border-color: #D3D3D3;--twitch-hover-bg: #EFEFF1;--twitch-button-bg: #EFEFF1;--twitch-button-text-color: #0E0E10;--twitch-button-hover-bg: #DFDFE1;--twitch-primary-button-bg: var(--twitch-purple);--twitch-primary-button-text-color: #FFFFFF;--twitch-primary-button-hover-bg: #772CE8;--twitch-tag-bg: #EFEFF1;--twitch-tag-text-color: #6A6A6D;--twitch-live-red: #EB0400;--twitch-viewer-red: #971311;--sidebar-width: 340px;--header-height: 50px;--neuro-shadow-color: #32003C;--neuro-avatar-display-width-percent: 50%;--fast-transition: background-color .2s, color .2s;--twitch-dark-button-bg: #333333;--twitch-dark-button-hover-bg: #444444;--twitch-dark-button-text-color: #FFFFFF;--sc-pink-bg-color: #f68795;--sc-purple-bg-color: #b97ad5}@font-face{font-family:First Coffee;src:url(../fonts/first-coffee.woff2) format("woff2");font-weight:400;font-style:normal}@font-face{font-family:Comic Sans MS;src:url(../fonts/comic.woff2) format("woff2");font-weight:400;font-style:normal}@font-face{font-family:Noto Sans SC;src:url(../fonts/noto-sans-sc.woff2) format("woff2");font-weight:400;font-style:normal}@font-face{font-family:Causten;src:url(../fonts/causten.woff2) format("woff2");font-weight:400;font-style:normal}html,body{height:100%;margin:0;padding:0;overflow:hidden}body{font-family:Inter,Arial,sans-serif;display:flex;flex-direction:column;background-color:var(--twitch-dark-bg);color:var(--twitch-text-color)}.twitch-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 10px;border-radius:100px;font-size:.9em;font-weight:600;cursor:pointer;border:none;transition:var(--fast-transition);outline:none;background-color:var(--twitch-button-bg);color:var(--twitch-button-text-color);height:32px;box-sizing:border-box;line-height:1}.twitch-button svg{width:1.2em;height:1.2em;fill:currentColor;vertical-align:middle}.twitch-button span{padding-top:2px}.twitch-button:hover:not(:disabled){background-color:var(--twitch-button-hover-bg)}.twitch-button.subscribe-button{background-color:var(--twitch-primary-button-bg);color:var(--twitch-primary-button-text-color)}.twitch-button.subscribe-button:hover:not(:disabled){background-color:var(--twitch-primary-button-hover-bg)}.twitch-button.icon-button{width:32px;padding:0;border-radius:50%}.nav-icon-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0;border-radius:50%;font-size:.9em;font-weight:600;cursor:pointer;border:none;transition:var(--fast-transition);outline:none;background-color:transparent;color:var(--twitch-button-text-color);width:32px;height:32px;box-sizing:border-box;line-height:1}.nav-icon-button:hover:not(:disabled){background-color:var(--twitch-button-hover-bg);border-radius:50%}.nav-icon-button svg{width:20px;height:20px;fill:currentColor;vertical-align:middle}.search-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0;font-size:.9em;font-weight:600;cursor:pointer;border:none;transition:var(--fast-transition);outline:none;background-color:transparent;color:var(--twitch-button-text-color);width:32px;height:32px;box-sizing:border-box;line-height:1}.search-button:hover:not(:disabled){background-color:var(--twitch-button-hover-bg)}.search-button svg{width:20px;height:20px;fill:currentColor;vertical-align:middle}.chat-toolbar-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0;border-radius:50%;font-size:.9em;font-weight:600;cursor:pointer;border:none;transition:var(--fast-transition);outline:none;background-color:transparent;color:var(--twitch-button-text-color);width:32px;height:32px;box-sizing:border-box;line-height:1}.chat-toolbar-button:hover:not(:disabled){background-color:var(--twitch-button-hover-bg);border-radius:50%}.chat-toolbar-button svg{width:20px;height:20px;fill:currentColor;vertical-align:middle}.chat-toolbar-button img{width:20px;height:20px;object-fit:contain}.video-overlay-chat-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0;border-radius:50%;font-size:.9em;font-weight:600;cursor:pointer;border:none;transition:var(--fast-transition);outline:none;background-color:#0009;color:#fff;width:32px;height:32px;box-sizing:border-box;line-height:1}.video-overlay-chat-button:hover:not(:disabled){background-color:#000c;border-radius:50%}.video-overlay-chat-button svg{width:20px;height:20px;fill:#fff;vertical-align:middle}.mute-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0;border-radius:50%;font-size:.9em;font-weight:600;cursor:pointer;border:none;transition:var(--fast-transition);outline:none;background-color:#0009;color:#fff;width:32px;height:32px;box-sizing:border-box;line-height:1}.mute-button:hover:not(:disabled){background-color:#000c;border-radius:50%}.mute-button svg{width:20px;height:20px;fill:#fff;vertical-align:middle}.twitch-button.dark{background-color:var(--twitch-dark-button-bg);color:var(--twitch-dark-button-text-color)}.twitch-button.dark:hover:not(:disabled){background-color:var(--twitch-dark-button-hover-bg)}.twitch-button.dark svg,.twitch-button.dark img{fill:var(--twitch-dark-button-text-color)}.twitch-button img{width:20px;height:20px;object-fit:contain;vertical-align:middle}.chat-toolbar-text-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 10px;border-radius:100px;font-size:.9em;font-weight:600;cursor:pointer;border:none;transition:var(--fast-transition);outline:none;background-color:transparent;color:var(--twitch-button-text-color);height:32px;box-sizing:border-box;line-height:1}.chat-toolbar-text-button:hover:not(:disabled){background-color:var(--twitch-button-hover-bg)}.chat-toolbar-text-button svg,.chat-toolbar-text-button img{width:1.2em;height:1.2em;fill:currentColor;vertical-align:middle;object-fit:contain}.chat-toolbar-text-button .points-value{padding-top:2px}.chat-toolbar-text-button .channel-points-icon{width:1.2em;height:1.2em;object-fit:contain}#twitch-header{height:var(--header-height);background-color:var(--twitch-chat-bg);display:flex;justify-content:space-between;align-items:center;padding:0 1rem;border-bottom:1px solid var(--twitch-border-color);flex-shrink:0;z-index:100;color:var(--twitch-text-color);gap:1rem}.top-nav-left,.top-nav-right{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.top-nav-center{flex-grow:1;flex-shrink:1;display:flex;justify-content:center;min-width:150px}.twitch-logo-link{display:flex;align-items:center;text-decoration:none;margin-left:.5rem}.twitch-logo-container{margin:0;transform:scaleY(-1);transition:transform .3s ease-out}.twitch-logo-container:hover{transform:scaleY(1)}.twitch-logo-svg .logo-body{fill:var(--twitch-purple)}.twitch-logo-svg .logo-face{fill:var(--twitch-chat-bg)}.twitch-logo-svg .logo-eye-path{fill:var(--twitch-purple)}.nav-links-main{display:flex;gap:1.5rem;margin-left:1.5rem}.nav-link{display:flex;align-items:center;gap:.5rem;text-decoration:none;color:var(--twitch-text-color);font-weight:500;font-size:1.1rem;padding:.25rem .5rem;border-radius:4px;transition:var(--fast-transition)}.nav-link:hover{color:var(--twitch-purple)}.nav-link p{margin:0}.search-container{display:flex;align-items:center;width:100%;max-width:400px;border:1px solid var(--twitch-border-color);border-radius:8px;overflow:hidden;background-color:var(--twitch-button-bg)}.search-input{flex:1 1 0;min-width:50px;padding:.5rem .75rem;border:none;background-color:transparent;color:var(--twitch-text-color);font-size:.95rem;outline:none}.search-input::placeholder{color:var(--twitch-secondary-text-color)}.search-button{flex-shrink:0;display:flex;align-items:center;justify-content:center;padding:0 .5rem}.search-button svg{fill:var(--twitch-text-color)}.top-nav-right{gap:.75rem}.nav-user-avatar-button{background:none;border:none;cursor:pointer;padding:0;border-radius:50%;width:32px;height:32px;overflow:hidden;flex-shrink:0}.user-avatar-wrapper{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.user-avatar-img{width:100%;height:100%;object-fit:cover;border-radius:50%}#main-content-wrapper{flex-grow:1;display:flex;overflow:hidden;position:relative}#stream-and-info-container{flex-grow:1;flex-shrink:1;display:flex;flex-direction:column;overflow-y:auto;min-height:0;scrollbar-width:none}#stream-and-info-container::-webkit-scrollbar{display:none}#stream-display-viewport{flex-grow:1;background-color:#000;display:flex;justify-content:center;align-items:center;overflow:hidden;min-height:0;position:relative}#mute-button{position:absolute;bottom:1rem;left:1rem;z-index:60}#stream-display-area{position:relative;background-color:#000;overflow:hidden;flex-shrink:0;visibility:hidden;opacity:0;transition:opacity .3s ease-in-out;container-type:size;container-name:streamArea}#background-display,#startup-video-overlay{position:absolute;top:0;left:0;width:100%;height:100%}#background-display{z-index:0;pointer-events:none;background:url(../background.webp) center/cover no-repeat}#neuro-static-avatar-container{position:absolute;left:70%;transform:translate(-50%);width:var(--neuro-avatar-display-width-percent);height:auto;overflow:visible;pointer-events:none;z-index:15;visibility:hidden;transition:transform .5s ease-in-out}#neuro-static-avatar-container img{width:100%;height:auto;display:block}.spin-animation{animation:spin-counter-clockwise .75s linear}@keyframes spin-counter-clockwise{0%{transform:translate(-50%) rotate(0)}to{transform:translate(-50%) rotate(-360deg)}}#neuro-static-avatar-container.zoom-in{transform:translate(-50%) scale(1.15)}#neuro-caption{position:absolute;bottom:5%;left:50%;transform:translate(-50%);width:90%;padding:10px 20px;border-radius:10px;text-align:center;font-weight:400;opacity:1;pointer-events:none;z-index:20;color:#fff;transition:none;text-shadow:0 0 4px var(--neuro-shadow-color),0 0 4px var(--neuro-shadow-color),0 0 4px var(--neuro-shadow-color);font-family:First Coffee,Noto Sans SC;font-size:3cqi}#neuro-caption:not(.show){opacity:0}#startup-video-overlay{background-color:#000;z-index:10;display:flex;justify-content:center;align-items:center;opacity:1;transition:none}#startup-video-overlay.hidden{opacity:0;pointer-events:none;visibility:hidden}#startup-video{width:100%;height:100%;object-fit:contain}#show-chat-button{position:absolute;top:1rem;right:1rem;z-index:60;background-color:#0009;border:none;border-radius:50%;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;transition:background-color .2s,opacity .3s ease-in-out,visibility .3s ease-in-out;opacity:0;visibility:hidden;pointer-events:none;width:32px;height:32px;box-sizing:border-box}#show-chat-button:hover{background-color:#000c}#show-chat-button svg{width:20px;height:20px;fill:currentColor}body.chat-collapsed #show-chat-button{opacity:1;visibility:visible;pointer-events:auto}#twitch-chat-overlay{position:absolute;top:0;left:0;width:25%;height:50%;background-color:transparent;color:#fff;padding:10px;overflow-y:auto;z-index:5;font-size:1.5cqi;scrollbar-width:none;font-family:Comic Sans MS,Noto Sans SC;pointer-events:none;-webkit-user-select:none;user-select:none;scroll-behavior:auto}#twitch-chat-overlay::-webkit-scrollbar{display:none}#twitch-chat-overlay *{pointer-events:none;-webkit-user-select:none;user-select:none}#twitch-chat-overlay .chat-line__message{padding:2px 0;margin:0;text-shadow:-1px -1px 0 #00000080,1px -1px 0 #00000080,-1px 1px 0 #00000080,1px 1px 0 #00000080,2px 2px 0 rgba(0,0,0,.5);font-size:1.5cqi}#twitch-chat-overlay .chat-line__username{font-weight:700;margin-right:.25rem;font-size:1.5cqi}#twitch-chat-overlay .text-fragment{font-weight:700;color:#fff;font-size:1.5cqi}#twitch-chat-overlay .chat-author__display-name{font-size:1.5cqi}#twitch-chat-overlay .chat-line__message-container>span:not(.chat-line__username){font-weight:700;color:#fff;text-shadow:-1px -1px 0 #00000080,1px -1px 0 #00000080,-1px 1px 0 #00000080,1px 1px 0 #00000080,2px 2px 0 rgba(0,0,0,.5);font-size:1.5cqi}#stream-display-viewport *:not(.mute-button):not(#show-chat-button){pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}#stream-info{padding:10px 20px;background-color:var(--twitch-chat-bg);border-bottom:1px solid var(--twitch-border-color)}.stream-info-layout{display:flex;gap:16px;align-items:center}.stream-info-left-column{flex-shrink:0}.streamer-avatar-link{display:block;position:relative}.streamer-avatar-wrapper{position:relative}#streamer-avatar{width:64px;height:64px;border-radius:50%;border:2px solid transparent;transition:border-color .2s}.streamer-avatar-link:hover #streamer-avatar{border-color:var(--twitch-purple)}.live-indicator-wrapper{position:absolute;bottom:-2px;left:50%;transform:translate(-50%);z-index:2}.live-indicator-rect{background-color:var(--twitch-live-red);color:#fff;font-size:.7em;font-weight:600;padding:2px 6px;border-radius:4px;white-space:nowrap;border:2px solid var(--twitch-chat-bg);text-transform:uppercase}.stream-info-right-column{display:flex;flex-direction:column;flex-grow:1;gap:4px;min-width:0}.stream-info-main-row{display:flex;justify-content:space-between;align-items:center}.streamer-info-and-name{display:flex;align-items:center;gap:6px;min-width:0}#streamer-nickname{margin:0;font-size:1.2em;color:var(--twitch-text-color);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.verified-badge svg{width:16px;height:16px;fill:var(--twitch-purple)}.main-action-buttons{display:flex;gap:6px;align-items:center;flex-shrink:0}#stream-info .twitch-button{display:inline-flex;align-items:center;justify-content:center;height:30px;padding:6px 10px;box-sizing:border-box}#stream-info .twitch-button.follow-button,#stream-info .twitch-button.icon-button{width:30px;padding:0}#stream-info .twitch-button:not(.follow-button):not(.icon-button){padding-top:0;padding-bottom:1px}#stream-info .twitch-button svg{width:18px;height:18px}.stream-info-details-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.stream-details-left{display:flex;flex-direction:column;gap:6px;min-width:0}#stream-title-full{margin:0;font-size:.9em;font-weight:600;color:var(--twitch-text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stream-category-and-tags{display:flex;align-items:center;gap:6px;min-width:0}.stream-category{font-size:.9em;color:var(--twitch-purple);text-decoration:none;font-weight:500;transition:color .2s;flex-shrink:0}.stream-category:hover{text-decoration:underline}.stream-tags{display:flex;gap:6px;align-items:center;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}.stream-tags::-webkit-scrollbar{display:none}.stream-tag{display:inline-flex;align-items:center;padding:3px 8px;border-radius:100px;background-color:var(--twitch-tag-bg);color:var(--twitch-tag-text-color);font-size:.75em;font-weight:600;text-decoration:none;transition:background-color .2s;height:20px;box-sizing:border-box;flex-shrink:0}.stream-tag:hover{background-color:var(--twitch-button-hover-bg)}.stream-details-right{display:flex;align-items:center;gap:12px;flex-shrink:0}.stream-stats-section{display:flex;gap:0px;align-items:center;font-size:.9em;color:var(--twitch-secondary-text-color);justify-content:flex-end}.viewer-count,.stream-duration{display:flex;align-items:center;gap:4px}.viewer-count{color:var(--twitch-viewer-red)}.viewer-count svg{width:18px;height:18px;fill:currentColor}.viewer-count strong{font-weight:600}.stream-duration .duration-text{font-weight:500;color:var(--twitch-text-color);min-width:4.5em;text-align:right}.stream-secondary-actions{display:flex;gap:6px}.stream-secondary-actions .twitch-button{background-color:transparent}.stream-secondary-actions .twitch-button:hover:not(:disabled){background-color:var(--twitch-button-hover-bg)}#chat-sidebar{width:var(--sidebar-width);min-width:var(--sidebar-width);background-color:var(--twitch-chat-bg);flex-shrink:0;display:flex;flex-direction:column;border-left:1px solid var(--twitch-border-color);z-index:50;height:100%;transition:width .3s ease-in-out,min-width .3s ease-in-out}#chat-sidebar.collapsed{width:0;min-width:0;overflow:hidden;visibility:hidden;pointer-events:none}.chat-sidebar-header{height:3.5rem;display:flex;justify-content:space-between;align-items:center;padding:0 1rem;border-bottom:1px solid var(--twitch-border-color);flex-shrink:0;position:relative}.chat-header-left,.chat-header-right{display:flex;align-items:center;gap:.5rem;z-index:1}.chat-sidebar-header .chat-title{position:absolute;left:50%;transform:translate(-50%);margin:0;font-size:1rem;font-weight:600;color:var(--twitch-text-color)}.chat-toggle-button{display:flex;align-items:center;justify-content:center;background:none;border:none;border-radius:50%;padding:0;cursor:pointer;color:var(--twitch-text-color);transition:background-color .2s;width:32px;height:32px;box-sizing:border-box}.chat-toggle-button:hover{background-color:var(--twitch-hover-bg)}.chat-toggle-button svg{width:20px;height:20px;fill:currentColor}#chat-sidebar.collapsed .chat-toggle-button{transform:rotate(180deg)}.messages-display{flex-grow:1;overflow-y:auto;padding:.5rem 1rem;min-height:0;scrollbar-width:thin;scrollbar-color:#B0B0B0 var(--twitch-hover-bg)}.messages-display::-webkit-scrollbar{width:8px}.messages-display::-webkit-scrollbar-track{background:var(--twitch-hover-bg);border-radius:4px}.messages-display::-webkit-scrollbar-thumb{background:#b0b0b0;border-radius:4px}.messages-display::-webkit-scrollbar-thumb:hover{background:#888}.chat-line__message{display:flex;align-items:flex-start;padding:.3rem 0;line-height:1.5;word-wrap:break-word;color:var(--twitch-text-color);border-radius:4px}.chat-line__message:hover{background-color:#ffffff0d}.chat-line__message-container{display:inline}.chat-line__username{font-weight:700;display:inline-block;margin-right:.1rem;cursor:pointer}.chat-author__display-name{font-size:.9rem}.text-fragment{font-size:.9rem;color:var(--twitch-text-color)}.chat-line__message.user-sent-message{background-color:#9147ff1a;border-left:3px solid var(--twitch-purple);padding-left:.75rem}.chat-line__message.system-message{color:var(--twitch-secondary-text-color);font-style:italic;font-size:.85rem;justify-content:center}.chat-line__message.system-message .chat-line__username,.chat-line__message.system-message .text-fragment{font-size:inherit;color:inherit;font-weight:400}.chat-input-area{padding:.75rem 1rem;border-top:1px solid var(--twitch-border-color);flex-shrink:0}.chat-input-and-buttons{display:flex;flex-direction:column;gap:.5rem}.chat-input-textarea-container{display:flex;align-items:center;border:1px solid var(--twitch-border-color);border-radius:4px;background-color:var(--twitch-button-bg);padding:0 .5rem;transition:var(--fast-transition)}.chat-input-textarea-container:focus-within{border-color:var(--twitch-purple);box-shadow:0 0 0 2px #9147ff33}.chat-input-prefix-icons,.chat-input-suffix-icons{display:flex;align-items:center}.chat-input-wrapper{flex-grow:1}.chat-input-element{width:100%;height:2.25rem;padding:0 .5rem;border:none;background-color:transparent;color:var(--twitch-text-color);font-size:.95rem;outline:none}.chat-input-element::placeholder{color:var(--twitch-secondary-text-color)}.chat-input-buttons-container{display:flex;justify-content:space-between;align-items:center}.chat-buttons-left,.chat-buttons-right{display:flex;align-items:center;gap:.5rem}.chat-points-display{display:flex;align-items:center;gap:.25rem;font-size:.85rem;color:var(--twitch-secondary-text-color)}.chat-points-display svg,.chat-points-display .channel-points-icon{width:18px;height:18px;fill:currentColor;object-fit:contain}.chat-points-display .points-value{color:var(--twitch-text-color);font-weight:600}#send-button:disabled{background-color:#b0b0b0;cursor:not-allowed}.chat-toolbar-text-button.selected{background-color:var(--twitch-purple-light);border:1px solid var(--twitch-purple);box-shadow:0 0 5px var(--twitch-purple-light)}#highlight-message-overlay{position:absolute;left:41%;transform:translate(-50%) translateY(-200%);width:24vw;height:auto;z-index:100;transition:transform 1s}#highlight-message-overlay.is-visible{transform:translate(-50%) translateY(0);transition-timing-function:cubic-bezier(.25,1,.5,1)}.sc-background-image{width:100%;height:auto;display:block;border-radius:20px}.sc-content{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;color:#fff;font-family:Causten}.sc-user{position:absolute;top:20%;left:40%;transform:translate(-50%);font-size:2cqi;text-align:left}.sc-message{position:absolute;top:60%;left:50%;transform:translate(-50%,-50%);width:90%;font-size:2cqi;text-align:center;overflow-wrap:break-word}.settings-modal-container{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1000;display:flex;justify-content:center;align-items:center}.settings-modal-container.hidden{display:none}.modal-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#0009}.modal-content{position:relative;background-color:var(--twitch-chat-bg);color:var(--twitch-text-color);border-radius:8px;width:90%;max-width:450px;box-shadow:0 4px 20px #0003;display:flex;flex-direction:column}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--twitch-border-color)}.modal-header h2{margin:0;font-size:1.25rem}.modal-body{padding:1.5rem;display:flex;flex-direction:column;gap:1.5rem}.setting-item{display:flex;flex-direction:column;gap:.5rem}.setting-item label{font-weight:600;font-size:.9rem}.modal-input{padding:.75rem;border:1px solid var(--twitch-border-color);border-radius:4px;background-color:var(--twitch-button-bg);color:var(--twitch-text-color);font-size:1rem}.modal-input:focus{outline:none;border-color:var(--twitch-purple);box-shadow:0 0 0 2px #9147ff33}.avatar-setting .avatar-preview-container{display:flex;align-items:center;gap:1rem}.avatar-preview{width:60px;height:60px;border-radius:50%;object-fit:cover;border:2px solid var(--twitch-border-color)}.avatar-upload-input{display:none}.modal-footer{padding:1rem 1.5rem;border-top:1px solid var(--twitch-border-color);display:flex;justify-content:flex-end}.setting-description{font-size:.8rem;color:var(--twitch-secondary-text-color);margin:4px 0 0}.turbo-button-icon{display:none}.turbo-button-full{display:inline-flex}@media (max-width: 992px){.turbo-button-full{display:none}.turbo-button-icon{display:inline-flex}}@media (max-width: 767px){body,#main-content-wrapper{flex-direction:column}#stream-and-info-container{width:100%}#chat-sidebar{width:100%;height:40vh;min-height:200px;min-width:unset;border-left:none;border-top:1px solid var(--twitch-border-color)}#chat-sidebar.collapsed{height:0;min-height:0;overflow:hidden;visibility:hidden;pointer-events:none}.nav-links-main,button[aria-label=Prime],button[aria-label=打开通知],button[aria-label=悄悄话],button[aria-label=购买呼币],button[aria-label=免费体验无广告观赏],button#show-chat-button,button[aria-label=通知],button.twitch-button[aria-label=购买呼币],button.twitch-button[aria-label=赠送一次订阅],.stream-details-right,.chat-sidebar-header{display:none!important}*{scrollbar-width:none!important}*::-webkit-scrollbar{display:none!important}*::-webkit-scrollbar-thumb{display:none!important}*::-webkit-scrollbar-track{display:none!important}#streamer-avatar{width:50px;height:50px}}.tooltip{position:absolute;background:#18181b;color:#fff;padding:6px 10px;font-size:12px;border-radius:4px;pointer-events:none;opacity:0;transition:opacity .2s ease;white-space:nowrap;z-index:1000;transform-origin:center bottom;-webkit-user-select:none;user-select:none}.tooltip.show{opacity:1}.tooltip:after{content:"";position:absolute;left:50%;transform:translate(-50%);border-width:6px;border-style:solid;top:100%;border-color:#18181b transparent transparent transparent;transition:border-color .2s ease,top .2s ease}.tooltip.tooltip-arrow-up:after{top:-12px;border-color:transparent transparent #18181b transparent}.hidden{display:none!important}#offline-content-container{display:flex;flex-direction:row;align-items:center;justify-content:center;flex-wrap:wrap;width:100%;min-height:500px;flex-grow:1;background-image:url(../banner.jpeg);background-size:cover;background-position:center;background-repeat:no-repeat;padding:2rem;gap:2rem;box-sizing:border-box}.offline-info-card{display:flex;flex-direction:column;align-items:flex-start;background-color:#fff;padding:1.5rem;border-radius:0;color:#0e0e10;box-shadow:0 4px 10px #0000001a;box-sizing:border-box;flex:0 1 270px}.offline-status-section{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;flex-grow:1;gap:.75rem}.offline-status-badge{background-color:#000;color:#fff;font-size:.9em;font-weight:600;padding:2px 6px;border-radius:4px;white-space:nowrap;text-transform:uppercase}.offline-status-title{font-size:1.6rem;font-weight:600;margin:0}.offline-notification-section{width:100%;margin-left:-10px}.offline-notification-button{background-color:transparent;color:var(--twitch-primary-button-hover-bg);justify-content:flex-start}.offline-notification-button:hover{background-color:var(--twitch-button-hover-bg);color:var(--twitch-button-text-color)}.offline-notification-button svg{fill:currentColor}.offline-video-player{aspect-ratio:16 / 9;flex:0 1 576px;min-width:300px;max-width:576px}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(./inter-cyrillic-ext-400-normal-Dc4VJyIJ.woff2) format("woff2"),url(./inter-cyrillic-ext-400-normal-BE2fNs0E.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(./inter-cyrillic-400-normal-BLGc9T1a.woff2) format("woff2"),url(./inter-cyrillic-400-normal-alAqRL36.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(./inter-greek-ext-400-normal-Bput3-QP.woff2) format("woff2"),url(./inter-greek-ext-400-normal-XIH6-K3k.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(./inter-greek-400-normal-DxZsaF_h.woff2) format("woff2"),url(./inter-greek-400-normal-C3I71FoW.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(./inter-vietnamese-400-normal-DMkecbls.woff2) format("woff2"),url(./inter-vietnamese-400-normal-Bbgyi5SW.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(./inter-latin-ext-400-normal-C1nco2VV.woff2) format("woff2"),url(./inter-latin-ext-400-normal-77YHD8bZ.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(./inter-latin-400-normal-C38fXH4l.woff2) format("woff2"),url(./inter-latin-400-normal-CyCys3Eg.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|