@pheem49/mint 1.5.0 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/README.md +35 -1
  2. package/main.js +28 -14
  3. package/mint-cli-logic.js +3 -119
  4. package/mint-cli.js +201 -500
  5. package/models/Shiroko_Model/Shiroko/Shiroko_Core/72d86db84cfa9730b894c241fd24c0db.png +0 -0
  6. package/models/Shiroko_Model/Shiroko/Shiroko_Core/items_pinned_to_model.json +14 -0
  7. package/models/Shiroko_Model/Shiroko/Shiroko_Core//345/221/206/347/214/253.exp3.json +40 -0
  8. package/models/Shiroko_Model/Shiroko/Shiroko_Core//345/221/206/347/214/253/347/234/274/347/217/240/346/221/207/346/231/203.exp3.json +15 -0
  9. package/models/Shiroko_Model/Shiroko/Shiroko_Core//345/233/264/350/243/231.exp3.json +10 -0
  10. package/models/Shiroko_Model/Shiroko/Shiroko_Core//346/213/215/347/205/247.exp3.json +50 -0
  11. package/models/Shiroko_Model/Shiroko/Shiroko_Core//346/213/277/347/254/224.exp3.json +10 -0
  12. package/models/Shiroko_Model/Shiroko/Shiroko_Core//347/202/271/344/270/200/344/270/213.exp3.json +15 -0
  13. package/models/Shiroko_Model/Shiroko/Shiroko_Core//347/214/253/345/222/252/346/273/244/351/225/234.exp3.json +10 -0
  14. package/models/Shiroko_Model/Shiroko/Shiroko_Core//347/234/274/351/225/234.exp3.json +10 -0
  15. package/models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.4096/texture_00.png +0 -0
  16. package/models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.4096/texture_01.png +0 -0
  17. package/models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.4096/texture_02.png +0 -0
  18. package/models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.4096/texture_03.png +0 -0
  19. package/models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.cdi3.json +1498 -0
  20. package/models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.moc3 +0 -0
  21. package/models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.model3.json +47 -0
  22. package/models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.physics3.json +6658 -0
  23. package/models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.vtube.json +1299 -0
  24. package/models/Shiroko_Model/Shiroko//342/232/241/351/253/230/344/272/256/342/232/241/344/275/277/347/224/250/346/225/231/347/250/213/344/270/216/346/263/250/346/204/217/344/272/213/351/241/271.txt +23 -0
  25. package/package.json +40 -17
  26. package/src/AI_Brain/Gemini_API.js +147 -46
  27. package/src/AI_Brain/autonomous_brain.js +2 -1
  28. package/src/AI_Brain/memory_store.js +299 -3
  29. package/src/AI_Brain/proactive_engine.js +12 -2
  30. package/src/Automation_Layer/browser_automation.js +26 -24
  31. package/src/CLI/approval_handler.js +42 -0
  32. package/src/CLI/chat_router.js +18 -6
  33. package/src/CLI/chat_ui.js +583 -52
  34. package/src/CLI/cli_colors.js +32 -0
  35. package/src/CLI/cli_formatters.js +89 -0
  36. package/src/CLI/code_agent.js +369 -71
  37. package/src/CLI/image_input.js +90 -0
  38. package/src/CLI/intent_detectors.js +181 -0
  39. package/src/CLI/interactive_chat.js +479 -0
  40. package/src/CLI/list_features.js +3 -0
  41. package/src/CLI/onboarding.js +72 -15
  42. package/src/CLI/repo_summarizer.js +282 -0
  43. package/src/CLI/semantic_code_search.js +312 -0
  44. package/src/CLI/skill_manager.js +41 -0
  45. package/src/CLI/slash_command_handler.js +418 -0
  46. package/src/CLI/symbol_indexer.js +231 -0
  47. package/src/CLI/updater.js +6 -4
  48. package/src/Channels/discord_bridge.js +11 -13
  49. package/src/Channels/line_bridge.js +10 -10
  50. package/src/Channels/slack_bridge.js +7 -12
  51. package/src/Channels/telegram_bridge.js +6 -14
  52. package/src/Channels/whatsapp_bridge.js +11 -9
  53. package/src/System/action_executor.js +59 -10
  54. package/src/System/chat_history_manager.js +20 -12
  55. package/src/System/config_manager.js +31 -1
  56. package/src/System/granular_automation.js +122 -53
  57. package/src/System/optional_require.js +23 -0
  58. package/src/System/proactive_loop.js +19 -3
  59. package/src/System/safety_manager.js +108 -0
  60. package/src/System/sandbox_runner.js +182 -0
  61. package/src/System/system_automation.js +127 -81
  62. package/src/System/system_info.js +70 -0
  63. package/src/System/tool_registry.js +280 -0
  64. package/src/System/window_manager.js +4 -2
  65. package/src/UI/live2d_manager.js +566 -0
  66. package/src/UI/renderer.js +339 -21
  67. package/src/UI/settings.css +655 -420
  68. package/src/UI/settings.html +478 -432
  69. package/src/UI/settings.js +10 -8
  70. package/src/UI/styles.css +516 -31
  71. package/.codex +0 -0
  72. package/docs/assets/Agent_Mint.png +0 -0
  73. package/docs/assets/CLI_Screen.png +0 -0
  74. package/docs/assets/Settings.png +0 -0
  75. package/docs/assets/icon.png +0 -0
  76. package/docs/guide.html +0 -632
  77. package/docs/index.html +0 -133
  78. package/docs/style.css +0 -579
  79. package/index.html +0 -16
  80. package/src/UI/index.html +0 -126
  81. package/tech_news.txt +0 -3
  82. package/test_knowledge.txt +0 -3
  83. package/tests/action_executor_safety.test.js +0 -67
  84. package/tests/agent_orchestrator.test.js +0 -41
  85. package/tests/chat_router.test.js +0 -42
  86. package/tests/code_agent.test.js +0 -69
  87. package/tests/config_manager.test.js +0 -141
  88. package/tests/docker.test.js +0 -46
  89. package/tests/file_operations.test.js +0 -57
  90. package/tests/gmail.test.js +0 -135
  91. package/tests/gmail_auth.test.js +0 -129
  92. package/tests/google_calendar.test.js +0 -113
  93. package/tests/google_tts_urls.test.js +0 -24
  94. package/tests/memory_store.test.js +0 -185
  95. package/tests/notion.test.js +0 -121
  96. package/tests/provider_routing.test.js +0 -83
  97. package/tests/safety_manager.test.js +0 -40
  98. package/tests/spotify.test.js +0 -201
  99. package/tests/system_monitor.test.js +0 -37
  100. package/tests/updater.test.js +0 -32
  101. package/tests/workspace_manager.test.js +0 -56
@@ -184,6 +184,10 @@ function applyConfig(config) {
184
184
  // Update color picker
185
185
  document.getElementById('custom-color').value = config.accentColor;
186
186
 
187
+ const defaultTextColor = config.theme === 'light' ? '#0f172a' : DEFAULT_CONFIG.systemTextColor;
188
+ const textColor = (!config.systemTextColor || (config.theme === 'light' && config.systemTextColor === DEFAULT_CONFIG.systemTextColor))
189
+ ? defaultTextColor
190
+ : config.systemTextColor;
187
191
  document.getElementById('system-text-color').value = textColor;
188
192
  document.documentElement.style.setProperty('--text-main', textColor);
189
193
 
@@ -586,22 +590,20 @@ function renderMcpServers() {
586
590
  console.log(`[Settings] Found ${entries.length} servers in currentConfig.`);
587
591
 
588
592
  if (entries.length === 0) {
589
- list.innerHTML = '<p class="hint" style="text-align: center; padding: 10px;">No MCP servers connected.</p>';
593
+ list.innerHTML = '<p class="mcp-empty">No MCP servers connected.</p>';
590
594
  return;
591
595
  }
592
596
 
593
597
  for (const [name, cfg] of entries) {
594
598
  const item = document.createElement('div');
595
- item.style.cssText = 'display: flex; justify-content: space-between; align-items: center; padding: 12px; background: rgba(0,0,0,0.2); border-radius: 10px; border: 1px solid var(--border);';
599
+ item.className = 'mcp-item';
596
600
 
597
601
  item.innerHTML = `
598
- <div style="display: flex; flex-direction: column; gap: 4px;">
599
- <div style="font-weight: 600; color: var(--accent); display: flex; align-items: center; gap: 6px;">
600
- <span>🌐 ${name}</span>
601
- </div>
602
- <div style="font-size: 0.75rem; opacity: 0.7; font-family: monospace;">${cfg.command} ${cfg.args.join(' ')}</div>
602
+ <div class="mcp-info">
603
+ <div class="mcp-name">🌐 ${name}</div>
604
+ <div class="mcp-command">${cfg.command} ${(cfg.args || []).join(' ')}</div>
603
605
  </div>
604
- <button class="btn-danger" style="padding: 6px 12px; font-size: 0.8rem;" onclick="removeMcpServer('${name}')">Remove</button>
606
+ <button class="btn-danger btn-small" onclick="removeMcpServer('${name}')">Remove</button>
605
607
  `;
606
608
  list.appendChild(item);
607
609
  }
package/src/UI/styles.css CHANGED
@@ -77,11 +77,13 @@ body {
77
77
  /* Header - Drag Region */
78
78
  .drag-region {
79
79
  -webkit-app-region: drag;
80
- padding: 16px 20px;
81
- display: flex;
82
- justify-content: space-between;
80
+ min-height: 66px;
81
+ padding: 10px 14px 10px 18px;
82
+ display: grid;
83
+ grid-template-columns: minmax(150px, 1fr) auto minmax(220px, 1fr) auto;
84
+ gap: 14px;
83
85
  align-items: center;
84
- background: rgba(15, 23, 42, 0.3);
86
+ background: rgba(9, 14, 28, 0.76);
85
87
  backdrop-filter: var(--glass-blur);
86
88
  -webkit-backdrop-filter: var(--glass-blur);
87
89
  border-bottom: 1px solid var(--border);
@@ -93,6 +95,7 @@ body {
93
95
  display: flex;
94
96
  align-items: center;
95
97
  gap: 12px;
98
+ min-width: 0;
96
99
  }
97
100
 
98
101
  .status-indicator {
@@ -128,14 +131,81 @@ h1 {
128
131
  -webkit-text-fill-color: transparent;
129
132
  }
130
133
 
131
- .close-btn, .maximize-btn, .minimize-btn {
134
+ .header-actions,
135
+ .header-utility,
136
+ .window-controls {
137
+ -webkit-app-region: no-drag;
138
+ display: flex;
139
+ align-items: center;
140
+ gap: 8px;
141
+ }
142
+
143
+ .header-actions {
144
+ justify-content: center;
145
+ padding: 4px;
146
+ border: 1px solid rgba(255, 255, 255, 0.08);
147
+ border-radius: 14px;
148
+ background: rgba(255, 255, 255, 0.035);
149
+ }
150
+
151
+ .header-utility {
152
+ justify-content: flex-end;
153
+ }
154
+
155
+ .window-controls {
156
+ justify-content: flex-end;
157
+ gap: 4px;
158
+ }
159
+
160
+ .toggle-model-btn,
161
+ .change-expression-btn,
162
+ .accessory-cycle-btn,
163
+ .toggle-interaction-btn,
164
+ .interaction-guide-btn,
165
+ .clear-btn,
166
+ .settings-btn {
167
+ -webkit-app-region: no-drag;
168
+ min-width: 0;
169
+ height: 36px;
170
+ border: 1px solid transparent;
171
+ background: transparent;
172
+ color: var(--text-muted);
173
+ cursor: pointer;
174
+ border-radius: 10px;
175
+ display: inline-flex;
176
+ align-items: center;
177
+ justify-content: center;
178
+ gap: 7px;
179
+ padding: 0 11px;
180
+ font-size: 0.78rem;
181
+ font-weight: 600;
182
+ line-height: 1;
183
+ white-space: nowrap;
184
+ transition: background 0.18s ease, border-color 0.18s ease, color 0.18s ease;
185
+ }
186
+
187
+ .toggle-model-btn svg,
188
+ .change-expression-btn svg,
189
+ .accessory-cycle-btn svg,
190
+ .toggle-interaction-btn svg,
191
+ .interaction-guide-btn svg,
192
+ .clear-btn svg,
193
+ .settings-btn svg {
194
+ flex: 0 0 auto;
195
+ }
196
+
197
+ .close-btn,
198
+ .maximize-btn,
199
+ .minimize-btn {
132
200
  -webkit-app-region: no-drag;
133
201
  background: transparent;
134
202
  border: none;
135
203
  color: var(--text-muted);
136
204
  cursor: pointer;
137
- padding: 4px;
138
- border-radius: 6px;
205
+ width: 34px;
206
+ height: 34px;
207
+ padding: 0;
208
+ border-radius: 9px;
139
209
  display: flex;
140
210
  align-items: center;
141
211
  justify-content: center;
@@ -152,50 +222,389 @@ h1 {
152
222
  color: #ef4444;
153
223
  }
154
224
 
225
+ .toggle-model-btn:hover {
226
+ background: rgba(139, 92, 246, 0.15);
227
+ border-color: rgba(139, 92, 246, 0.2);
228
+ color: var(--accent);
229
+ }
230
+
231
+ .toggle-model-btn.active {
232
+ background: rgba(139, 92, 246, 0.26);
233
+ border-color: rgba(139, 92, 246, 0.42);
234
+ color: white;
235
+ }
236
+
237
+ .change-expression-btn:hover {
238
+ background: rgba(251, 191, 36, 0.15);
239
+ border-color: rgba(251, 191, 36, 0.2);
240
+ color: #fbbf24;
241
+ }
242
+
243
+ .accessory-cycle-btn:hover,
244
+ .accessory-cycle-btn.active {
245
+ background: rgba(168, 85, 247, 0.14);
246
+ border-color: rgba(168, 85, 247, 0.24);
247
+ color: #c4b5fd;
248
+ }
249
+
250
+ .toggle-interaction-btn:hover,
251
+ .toggle-interaction-btn.active {
252
+ background: rgba(34, 197, 94, 0.14);
253
+ border-color: rgba(34, 197, 94, 0.24);
254
+ color: #86efac;
255
+ }
256
+
257
+ .toggle-interaction-btn:not(.active) {
258
+ color: #f87171;
259
+ }
260
+
261
+ .toggle-interaction-btn:not(.active):hover {
262
+ background: rgba(248, 113, 113, 0.14);
263
+ border-color: rgba(248, 113, 113, 0.22);
264
+ color: #f87171;
265
+ }
266
+
267
+ .toggle-interaction-btn .interaction-off-mark {
268
+ opacity: 0;
269
+ }
270
+
271
+ .toggle-interaction-btn:not(.active) .interaction-off-mark {
272
+ opacity: 1;
273
+ }
274
+
275
+ .interaction-guide-btn:hover {
276
+ background: rgba(34, 211, 238, 0.14);
277
+ border-color: rgba(34, 211, 238, 0.2);
278
+ color: #67e8f9;
279
+ }
280
+
281
+ .interaction-guide-btn.active {
282
+ background: rgba(34, 211, 238, 0.22);
283
+ border-color: rgba(34, 211, 238, 0.34);
284
+ color: #67e8f9;
285
+ }
286
+
155
287
  .maximize-btn:hover {
156
288
  background: rgba(255, 255, 255, 0.1);
157
289
  color: var(--text-color);
158
290
  }
159
291
 
160
- .clear-btn {
161
- -webkit-app-region: no-drag;
162
- background: transparent;
163
- border: none;
164
- color: var(--text-muted);
165
- cursor: pointer;
166
- padding: 4px;
167
- border-radius: 6px;
292
+ .clear-btn:hover {
293
+ background: rgba(251, 191, 36, 0.15);
294
+ border-color: rgba(251, 191, 36, 0.2);
295
+ color: #fbbf24;
296
+ }
297
+
298
+ .settings-btn:hover {
299
+ background: rgba(139, 92, 246, 0.15);
300
+ border-color: rgba(139, 92, 246, 0.2);
301
+ color: var(--accent);
302
+ }
303
+
304
+ /* Chat Area */
305
+ .assistant-workspace {
306
+ flex: 1;
307
+ min-height: 0;
308
+ display: flex;
309
+ gap: 22px;
310
+ padding: 22px;
311
+ transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
312
+ }
313
+
314
+ .assistant-workspace.model-hidden {
315
+ padding: 22px 120px;
316
+ }
317
+
318
+ .model-stage {
319
+ flex: 1 1 54%;
320
+ min-width: 420px;
168
321
  display: flex;
169
322
  align-items: center;
170
323
  justify-content: center;
171
- transition: all 0.2s ease;
324
+ position: relative;
325
+ overflow: hidden;
326
+ transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
327
+ opacity: 1;
328
+ transform: scale(1);
172
329
  }
173
330
 
174
- .clear-btn:hover {
175
- background: rgba(251, 191, 36, 0.15);
176
- color: #fbbf24;
331
+ .assistant-workspace.model-hidden .model-stage {
332
+ flex: 0 0 0;
333
+ min-width: 0;
334
+ opacity: 0;
335
+ pointer-events: none;
336
+ transform: scale(0.9);
337
+ margin-right: -22px;
338
+ }
339
+
340
+ .model-shell {
341
+ width: 100%;
342
+ height: 100%;
343
+ max-width: none;
344
+ max-height: none;
345
+ min-height: 480px;
346
+ display: grid;
347
+ place-items: center;
348
+ position: relative;
349
+ background: rgba(0, 0, 0, 0.2);
350
+ border-radius: 24px;
351
+ border: 1px solid rgba(255, 255, 255, 0.06);
352
+ box-shadow: inset 0 0 40px rgba(0, 0, 0, 0.2);
353
+ overflow: hidden;
177
354
  }
178
355
 
179
- .settings-btn {
180
- -webkit-app-region: no-drag;
181
- background: transparent;
182
- border: none;
356
+ .model-glow {
357
+ position: absolute;
358
+ width: 85%;
359
+ aspect-ratio: 1;
360
+ border-radius: 50%;
361
+ background: radial-gradient(circle, rgba(139, 92, 246, 0.12), rgba(139, 92, 246, 0.02) 48%, transparent 72%);
362
+ filter: blur(20px);
363
+ transform: translateY(2%);
364
+ }
365
+
366
+ .model-mount {
367
+ width: 100%;
368
+ height: 100%;
369
+ position: relative;
370
+ z-index: 1;
371
+ }
372
+
373
+ .model-mount canvas {
374
+ position: absolute;
375
+ inset: 0;
376
+ width: 100%;
377
+ height: 100%;
378
+ }
379
+
380
+ .expression-toast {
381
+ position: absolute;
382
+ left: 50%;
383
+ top: 18px;
384
+ z-index: 4;
385
+ transform: translate(-50%, -8px);
386
+ opacity: 0;
387
+ pointer-events: none;
388
+ padding: 7px 12px;
389
+ border-radius: 999px;
390
+ background: rgba(15, 23, 42, 0.72);
391
+ border: 1px solid rgba(255, 255, 255, 0.12);
392
+ color: #f8fafc;
393
+ font-size: 0.76rem;
394
+ font-weight: 600;
395
+ line-height: 1;
396
+ white-space: nowrap;
397
+ box-shadow: 0 10px 28px rgba(0, 0, 0, 0.28);
398
+ backdrop-filter: blur(10px);
399
+ transition: opacity 0.18s ease, transform 0.18s ease;
400
+ }
401
+
402
+ .expression-toast.is-visible {
403
+ opacity: 1;
404
+ transform: translate(-50%, 0);
405
+ }
406
+
407
+ .interaction-guide {
408
+ position: absolute;
409
+ inset: 0;
410
+ z-index: 3;
411
+ pointer-events: none;
412
+ opacity: 0;
413
+ transition: opacity 0.2s ease;
414
+ }
415
+
416
+ .model-shell.show-interaction-guide .interaction-guide {
417
+ opacity: 1;
418
+ }
419
+
420
+ .interaction-zone {
421
+ position: absolute;
422
+ border: 1px solid rgba(103, 232, 249, 0.46);
423
+ background: rgba(14, 165, 233, 0.08);
424
+ box-shadow: 0 0 18px rgba(34, 211, 238, 0.12), inset 0 0 18px rgba(255, 255, 255, 0.04);
425
+ }
426
+
427
+ .interaction-zone span {
428
+ position: absolute;
429
+ left: 50%;
430
+ top: 50%;
431
+ transform: translate(-50%, -50%);
432
+ padding: 4px 8px;
433
+ border-radius: 999px;
434
+ background: rgba(3, 7, 18, 0.72);
435
+ border: 1px solid rgba(255, 255, 255, 0.12);
436
+ color: #e0f2fe;
437
+ font-size: 0.68rem;
438
+ font-weight: 600;
439
+ line-height: 1;
440
+ white-space: nowrap;
441
+ text-shadow: 0 1px 8px rgba(0, 0, 0, 0.65);
442
+ }
443
+
444
+ .zone-head {
445
+ left: 34%;
446
+ top: 25.5%;
447
+ width: 32%;
448
+ height: 15%;
449
+ border-radius: 48% 48% 42% 42%;
450
+ }
451
+
452
+ .zone-face {
453
+ left: 38%;
454
+ top: 40%;
455
+ width: 24%;
456
+ height: 11.5%;
457
+ border-radius: 50%;
458
+ background: rgba(244, 114, 182, 0.1);
459
+ border-color: rgba(244, 114, 182, 0.5);
460
+ }
461
+
462
+ .zone-left-hand {
463
+ left: 22%;
464
+ top: 68%;
465
+ width: 20%;
466
+ height: 16%;
467
+ border-radius: 48% 42% 56% 44%;
468
+ }
469
+
470
+ .zone-right-hand {
471
+ left: 61%;
472
+ top: 68%;
473
+ width: 19%;
474
+ height: 16%;
475
+ border-radius: 42% 54% 44% 56%;
476
+ }
477
+
478
+ .zone-body {
479
+ left: 37%;
480
+ top: 55.5%;
481
+ width: 29%;
482
+ height: 14%;
483
+ border-radius: 38% 38% 48% 48%;
484
+ }
485
+
486
+ .zone-lower {
487
+ left: 38%;
488
+ top: 77%;
489
+ width: 30%;
490
+ height: 23%;
491
+ border-radius: 46% 46% 24% 24%;
492
+ background: rgba(251, 191, 36, 0.08);
493
+ border-color: rgba(251, 191, 36, 0.45);
494
+ }
495
+
496
+ .model-placeholder {
497
+ width: 100%;
498
+ max-height: 100%;
499
+ object-fit: contain;
500
+ filter: drop-shadow(0 22px 34px rgba(0, 0, 0, 0.26));
501
+ animation: modelFloat 4.5s ease-in-out infinite;
502
+ transition: opacity 0.6s ease-out;
503
+ }
504
+
505
+ .model-shell.is-live2d-ready .model-placeholder {
506
+ opacity: 0 !important;
507
+ pointer-events: none;
508
+ }
509
+
510
+ .model-status {
511
+ position: absolute;
512
+ left: 50%;
513
+ bottom: 24px;
514
+ max-width: min(88%, 460px);
515
+ transform: translateX(-50%);
183
516
  color: var(--text-muted);
184
- cursor: pointer;
185
- padding: 4px;
186
- border-radius: 6px;
517
+ font-size: 0.78rem;
518
+ line-height: 1.35;
519
+ text-align: center;
520
+ user-select: text;
521
+ z-index: 2;
187
522
  display: flex;
523
+ flex-direction: column;
188
524
  align-items: center;
525
+ gap: 8px;
526
+ }
527
+
528
+ .model-status.is-error {
529
+ color: #fca5a5;
530
+ display: block;
531
+ }
532
+
533
+ .loader-dots {
534
+ display: flex;
535
+ gap: 6px;
189
536
  justify-content: center;
190
- transition: all 0.2s ease;
537
+ align-items: center;
538
+ margin-bottom: 4px;
191
539
  }
192
540
 
193
- .settings-btn:hover {
194
- background: rgba(139, 92, 246, 0.15);
195
- color: var(--accent);
541
+ .loader-dots span {
542
+ width: 8px;
543
+ height: 8px;
544
+ background-color: var(--accent);
545
+ border-radius: 50%;
546
+ display: inline-block;
547
+ animation: dot-pulse 1.4s infinite ease-in-out both;
548
+ }
549
+
550
+ .loader-dots span:nth-child(1) { animation-delay: -0.32s; }
551
+ .loader-dots span:nth-child(2) { animation-delay: -0.16s; }
552
+
553
+ @keyframes dot-pulse {
554
+ 0%, 80%, 100% { transform: scale(0); opacity: 0.3; }
555
+ 40% { transform: scale(1.0); opacity: 1; }
556
+ }
557
+
558
+ .model-shell.is-live2d-ready .model-status {
559
+ display: none;
560
+ }
561
+
562
+ .model-shadow {
563
+ position: absolute;
564
+ bottom: 12%;
565
+ width: 44%;
566
+ height: 22px;
567
+ border-radius: 50%;
568
+ background: rgba(0, 0, 0, 0.24);
569
+ filter: blur(10px);
570
+ transform: scaleX(1.2);
571
+ }
572
+
573
+ @keyframes modelFloat {
574
+ 0%,
575
+ 100% {
576
+ transform: translateY(0);
577
+ }
578
+
579
+ 50% {
580
+ transform: translateY(-10px);
581
+ }
582
+ }
583
+
584
+ .conversation-panel {
585
+ flex: 0 1 460px;
586
+ min-width: 400px;
587
+ display: flex;
588
+ flex-direction: column;
589
+ min-height: 0;
590
+ overflow: hidden;
591
+ background: var(--panel-bg);
592
+ backdrop-filter: var(--glass-blur);
593
+ -webkit-backdrop-filter: var(--glass-blur);
594
+ border: 1px solid var(--border);
595
+ border-top-color: var(--border-light);
596
+ border-left-color: var(--border-light);
597
+ border-radius: 16px;
598
+ box-shadow: 0 20px 52px rgba(0, 0, 0, 0.24);
599
+ transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
600
+ }
601
+
602
+ .assistant-workspace.model-hidden .conversation-panel {
603
+ flex: 1;
604
+ max-width: 900px;
605
+ margin: 0 auto;
196
606
  }
197
607
 
198
- /* Chat Area */
199
608
  .chat-container {
200
609
  flex: 1;
201
610
  padding: 20px;
@@ -291,6 +700,30 @@ h1 {
291
700
  position: relative;
292
701
  }
293
702
 
703
+ .formatted-ai-text {
704
+ display: flex;
705
+ flex-direction: column;
706
+ gap: 10px;
707
+ white-space: normal;
708
+ }
709
+
710
+ .ai-paragraph {
711
+ margin: 0;
712
+ }
713
+
714
+ .ai-list-item {
715
+ display: grid;
716
+ grid-template-columns: 18px minmax(0, 1fr);
717
+ gap: 8px;
718
+ align-items: start;
719
+ }
720
+
721
+ .ai-list-bullet {
722
+ color: var(--accent-hover);
723
+ font-weight: 700;
724
+ line-height: 1.5;
725
+ }
726
+
294
727
  .user-message {
295
728
  transform-origin: bottom right;
296
729
  }
@@ -662,3 +1095,55 @@ input:checked + .slider:before {
662
1095
  .suggestion-chip:active {
663
1096
  transform: scale(0.97);
664
1097
  }
1098
+
1099
+ @media (max-width: 760px) {
1100
+ .drag-region {
1101
+ grid-template-columns: auto 1fr auto;
1102
+ gap: 8px;
1103
+ padding: 9px 10px 9px 12px;
1104
+ }
1105
+
1106
+ .header-content h1 {
1107
+ display: none;
1108
+ }
1109
+
1110
+ .header-actions {
1111
+ justify-content: flex-start;
1112
+ overflow: hidden;
1113
+ }
1114
+
1115
+ .header-utility {
1116
+ display: none;
1117
+ }
1118
+
1119
+ .toggle-model-btn,
1120
+ .change-expression-btn,
1121
+ .accessory-cycle-btn,
1122
+ .toggle-interaction-btn,
1123
+ .interaction-guide-btn {
1124
+ width: 34px;
1125
+ padding: 0;
1126
+ }
1127
+
1128
+ .toggle-model-btn span,
1129
+ .change-expression-btn span,
1130
+ .accessory-cycle-btn span,
1131
+ .toggle-interaction-btn span,
1132
+ .interaction-guide-btn span {
1133
+ display: none;
1134
+ }
1135
+
1136
+ .assistant-workspace {
1137
+ padding: 12px;
1138
+ gap: 12px;
1139
+ }
1140
+
1141
+ .model-stage {
1142
+ display: none;
1143
+ }
1144
+
1145
+ .conversation-panel {
1146
+ flex: 1;
1147
+ min-width: 0;
1148
+ }
1149
+ }
package/.codex DELETED
File without changes
Binary file
Binary file
Binary file
Binary file