@pheem49/mint 1.5.5 → 1.6.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.
Files changed (222) hide show
  1. package/.codex +0 -0
  2. package/.github/FUNDING.yml +2 -0
  3. package/.github/workflows/ci.yml +45 -0
  4. package/.github/workflows/release.yml +79 -0
  5. package/Cargo.lock +5792 -0
  6. package/Cargo.toml +32 -0
  7. package/README.md +387 -353
  8. package/assets/icon.png +0 -0
  9. package/bin/mint +0 -0
  10. package/crates/mint-cli/Cargo.toml +23 -0
  11. package/crates/mint-cli/src/agent.rs +851 -0
  12. package/crates/mint-cli/src/gmail.rs +216 -0
  13. package/crates/mint-cli/src/image.rs +142 -0
  14. package/crates/mint-cli/src/main.rs +2837 -0
  15. package/crates/mint-cli/src/mcp.rs +63 -0
  16. package/crates/mint-cli/src/onboard.rs +1149 -0
  17. package/crates/mint-cli/src/setup.rs +390 -0
  18. package/crates/mint-cli/src/skills.rs +8 -0
  19. package/crates/mint-cli/src/updater.rs +279 -0
  20. package/crates/mint-core/Cargo.toml +22 -0
  21. package/crates/mint-core/src/agent_loop.rs +94 -0
  22. package/crates/mint-core/src/api_server.rs +991 -0
  23. package/crates/mint-core/src/channels.rs +248 -0
  24. package/crates/mint-core/src/chat.rs +895 -0
  25. package/crates/mint-core/src/code_tools.rs +729 -0
  26. package/crates/mint-core/src/config.rs +368 -0
  27. package/crates/mint-core/src/files.rs +159 -0
  28. package/crates/mint-core/src/knowledge.rs +541 -0
  29. package/crates/mint-core/src/lib.rs +84 -0
  30. package/crates/mint-core/src/mcp.rs +273 -0
  31. package/crates/mint-core/src/memory.rs +673 -0
  32. package/crates/mint-core/src/orchestration.rs +2157 -0
  33. package/crates/mint-core/src/pictures.rs +314 -0
  34. package/crates/mint-core/src/plugins.rs +727 -0
  35. package/crates/mint-core/src/safety.rs +416 -0
  36. package/crates/mint-core/src/semantic.rs +254 -0
  37. package/crates/mint-core/src/shell.rs +317 -0
  38. package/crates/mint-core/src/skills.rs +71 -0
  39. package/crates/mint-core/src/symbols.rs +157 -0
  40. package/crates/mint-core/src/tasks.rs +308 -0
  41. package/crates/mint-core/src/tts.rs +92 -0
  42. package/crates/mint-core/src/weather.rs +93 -0
  43. package/crates/mint-core/src/web_search.rs +200 -0
  44. package/crates/mint-core/src/workflows.rs +81 -0
  45. package/crates/mint-core/tests/mcp_stdio.rs +45 -0
  46. package/crates/mint-core/tests/memory_persistence.rs +172 -0
  47. package/crates/mint-core/tests/pictures_storage.rs +14 -0
  48. package/crates/mint-core/tests/task_lifecycle.rs +87 -0
  49. package/package.json +35 -99
  50. package/src/bin/index.js +16 -0
  51. package/src/renderer/index-web.html +17 -0
  52. package/src/renderer/index.html +17 -0
  53. package/src/renderer/public/Live2DCubismCore.js +9 -0
  54. package/src/renderer/public/assets/icon.png +0 -0
  55. package/src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.model3.json +36 -0
  56. package/src/renderer/src/App.tsx +33 -0
  57. package/src/renderer/src/calculator.ts +47 -0
  58. package/src/renderer/src/components/ChatPanel.tsx +1598 -0
  59. package/src/renderer/src/components/DashboardSidebar.tsx +358 -0
  60. package/src/renderer/src/components/Live2DStage.tsx +374 -0
  61. package/src/renderer/src/components/MintDashboard.tsx +950 -0
  62. package/src/renderer/src/components/ModelPanel.tsx +154 -0
  63. package/src/renderer/src/components/PicturesLibrary.tsx +46 -0
  64. package/src/renderer/src/components/ProactiveGlow.tsx +19 -0
  65. package/src/renderer/src/components/ScreenPicker.tsx +579 -0
  66. package/src/renderer/src/components/SettingsWindow.tsx +1467 -0
  67. package/src/renderer/src/components/SpotlightWindow.tsx +280 -0
  68. package/src/renderer/src/components/WidgetWindow.tsx +36 -0
  69. package/src/renderer/src/components/WorkspacePanel.tsx +268 -0
  70. package/src/{UI → renderer/src/css}/settings.css +69 -16
  71. package/src/renderer/src/css/spotlight.css +113 -0
  72. package/src/renderer/src/css/styles.css +3722 -0
  73. package/src/renderer/src/css/widget.css +185 -0
  74. package/src/renderer/src/env.d.ts +116 -0
  75. package/src/renderer/src/index.css +379 -0
  76. package/src/renderer/src/main.tsx +13 -0
  77. package/src/renderer/src/tauri.ts +996 -0
  78. package/src/renderer/src-web/App.tsx +25 -0
  79. package/src/renderer/src-web/calculator.ts +47 -0
  80. package/src/renderer/src-web/components/ChatPanel.tsx +1662 -0
  81. package/src/renderer/src-web/components/DashboardSidebar.tsx +242 -0
  82. package/src/renderer/src-web/components/MintDashboard.tsx +763 -0
  83. package/src/renderer/src-web/components/PicturesLibrary.tsx +73 -0
  84. package/src/renderer/src-web/components/SettingsWindow.tsx +1500 -0
  85. package/src/renderer/src-web/css/settings.css +1100 -0
  86. package/src/{UI → renderer/src-web/css}/spotlight.css +4 -4
  87. package/src/{UI → renderer/src-web/css}/styles.css +1055 -159
  88. package/src/{UI → renderer/src-web/css}/widget.css +2 -2
  89. package/src/renderer/src-web/env.d.ts +107 -0
  90. package/src/renderer/src-web/index.css +379 -0
  91. package/src/renderer/src-web/main.tsx +13 -0
  92. package/src/renderer/src-web/tauri.ts +983 -0
  93. package/tsconfig.json +30 -0
  94. package/vite.config.ts +33 -0
  95. package/vite.config.web.ts +51 -0
  96. package/GUIDE_TH.md +0 -125
  97. package/assets/Agent_Mint.png +0 -0
  98. package/assets/CLI_Screen.png +0 -0
  99. package/assets/Settings.png +0 -0
  100. package/benchmark_ai.js +0 -71
  101. package/install.ps1 +0 -64
  102. package/install.sh +0 -54
  103. package/main.js +0 -139
  104. package/mint-cli-logic.js +0 -3
  105. package/mint-cli.js +0 -410
  106. package/models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.model3.json +0 -47
  107. 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 +0 -23
  108. package/preload-picker.js +0 -11
  109. package/preload-settings.js +0 -11
  110. package/preload.js +0 -41
  111. package/scripts/install_linux_desktop_entry.js +0 -48
  112. package/src/AI_Brain/Gemini_API.js +0 -813
  113. package/src/AI_Brain/agent_orchestrator.js +0 -73
  114. package/src/AI_Brain/autonomous_brain.js +0 -179
  115. package/src/AI_Brain/behavior_memory.js +0 -135
  116. package/src/AI_Brain/headless_agent.js +0 -143
  117. package/src/AI_Brain/knowledge_base.js +0 -349
  118. package/src/AI_Brain/memory_store.js +0 -662
  119. package/src/AI_Brain/proactive_engine.js +0 -172
  120. package/src/AI_Brain/provider_adapter.js +0 -365
  121. package/src/Automation_Layer/browser_automation.js +0 -149
  122. package/src/Automation_Layer/file_operations.js +0 -286
  123. package/src/Automation_Layer/open_app.js +0 -85
  124. package/src/Automation_Layer/open_website.js +0 -38
  125. package/src/CLI/approval_handler.js +0 -47
  126. package/src/CLI/chat_router.js +0 -247
  127. package/src/CLI/chat_ui.js +0 -1159
  128. package/src/CLI/cli_colors.js +0 -115
  129. package/src/CLI/cli_formatters.js +0 -94
  130. package/src/CLI/code_agent.js +0 -1667
  131. package/src/CLI/code_session_memory.js +0 -62
  132. package/src/CLI/gmail_auth.js +0 -210
  133. package/src/CLI/image_input.js +0 -90
  134. package/src/CLI/intent_detectors.js +0 -181
  135. package/src/CLI/interactive_chat.js +0 -658
  136. package/src/CLI/list_features.js +0 -64
  137. package/src/CLI/onboarding.js +0 -416
  138. package/src/CLI/repo_summarizer.js +0 -282
  139. package/src/CLI/semantic_code_search.js +0 -312
  140. package/src/CLI/skill_manager.js +0 -41
  141. package/src/CLI/slash_command_handler.js +0 -418
  142. package/src/CLI/symbol_indexer.js +0 -231
  143. package/src/CLI/updater.js +0 -230
  144. package/src/CLI/workspace_manager.js +0 -90
  145. package/src/Channels/brave_search_bridge.js +0 -35
  146. package/src/Channels/discord_bridge.js +0 -66
  147. package/src/Channels/google_search_bridge.js +0 -38
  148. package/src/Channels/line_bridge.js +0 -60
  149. package/src/Channels/slack_bridge.js +0 -48
  150. package/src/Channels/telegram_bridge.js +0 -41
  151. package/src/Channels/whatsapp_bridge.js +0 -57
  152. package/src/Command_Parser/parser.js +0 -45
  153. package/src/Plugins/dev_tools.js +0 -41
  154. package/src/Plugins/discord.js +0 -20
  155. package/src/Plugins/docker.js +0 -47
  156. package/src/Plugins/gmail.js +0 -251
  157. package/src/Plugins/google_calendar.js +0 -252
  158. package/src/Plugins/mcp_manager.js +0 -95
  159. package/src/Plugins/notion.js +0 -256
  160. package/src/Plugins/obsidian.js +0 -54
  161. package/src/Plugins/plugin_manager.js +0 -81
  162. package/src/Plugins/spotify.js +0 -173
  163. package/src/Plugins/system_metrics.js +0 -31
  164. package/src/Plugins/system_monitor.js +0 -72
  165. package/src/System/action_executor.js +0 -178
  166. package/src/System/bridge_manager.js +0 -76
  167. package/src/System/chat_history_manager.js +0 -83
  168. package/src/System/config_manager.js +0 -194
  169. package/src/System/custom_workflows.js +0 -163
  170. package/src/System/daemon_manager.js +0 -67
  171. package/src/System/google_tts_urls.js +0 -51
  172. package/src/System/granular_automation.js +0 -157
  173. package/src/System/ipc_handlers.js +0 -332
  174. package/src/System/notifications.js +0 -23
  175. package/src/System/optional_require.js +0 -23
  176. package/src/System/picture_store.js +0 -109
  177. package/src/System/proactive_loop.js +0 -153
  178. package/src/System/safety_manager.js +0 -273
  179. package/src/System/sandbox_runner.js +0 -182
  180. package/src/System/screen_capture.js +0 -175
  181. package/src/System/smart_context.js +0 -227
  182. package/src/System/system_automation.js +0 -162
  183. package/src/System/system_events.js +0 -79
  184. package/src/System/system_info.js +0 -125
  185. package/src/System/task_manager.js +0 -222
  186. package/src/System/tool_registry.js +0 -293
  187. package/src/System/window_manager.js +0 -220
  188. package/src/UI/floating.css +0 -80
  189. package/src/UI/floating.html +0 -17
  190. package/src/UI/floating.js +0 -67
  191. package/src/UI/live2d_manager.js +0 -600
  192. package/src/UI/preload-floating.js +0 -7
  193. package/src/UI/preload-spotlight.js +0 -11
  194. package/src/UI/preload-widget.js +0 -5
  195. package/src/UI/proactive-glow.html +0 -42
  196. package/src/UI/renderer.js +0 -2127
  197. package/src/UI/screenPicker.html +0 -214
  198. package/src/UI/screenPicker.js +0 -262
  199. package/src/UI/settings.html +0 -577
  200. package/src/UI/settings.js +0 -770
  201. package/src/UI/spotlight.html +0 -23
  202. package/src/UI/spotlight.js +0 -185
  203. package/src/UI/widget.html +0 -29
  204. package/src/UI/widget.js +0 -10
  205. /package/{models → src/renderer/public/models}/Shiroko_Model/Shiroko/Shiroko_Core/72d86db84cfa9730b894c241fd24c0db.png +0 -0
  206. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//345/233/264/350/243/231.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/apron.exp3.json} +0 -0
  207. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//347/214/253/345/222/252/346/273/244/351/225/234.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/catfilter.exp3.json} +0 -0
  208. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//347/202/271/344/270/200/344/270/213.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/click.exp3.json} +0 -0
  209. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//345/221/206/347/214/253.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/dazed.exp3.json} +0 -0
  210. /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" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/dazedeyes.exp3.json} +0 -0
  211. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//347/234/274/351/225/234.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/glasses.exp3.json} +0 -0
  212. /package/{models → src/renderer/public/models}/Shiroko_Model/Shiroko/Shiroko_Core/items_pinned_to_model.json +0 -0
  213. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//346/213/277/347/254/224.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/pen.exp3.json} +0 -0
  214. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//346/213/215/347/205/247.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/photo.exp3.json} +0 -0
  215. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.4096/texture_00.png" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.4096/texture_00.png} +0 -0
  216. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.4096/texture_01.png" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.4096/texture_01.png} +0 -0
  217. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.4096/texture_02.png" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.4096/texture_02.png} +0 -0
  218. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.4096/texture_03.png" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.4096/texture_03.png} +0 -0
  219. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.cdi3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.cdi3.json} +0 -0
  220. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.moc3" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.moc3} +0 -0
  221. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.physics3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.physics3.json} +0 -0
  222. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.vtube.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.vtube.json} +0 -0
@@ -12,8 +12,8 @@
12
12
  --text-muted: #8f8f94;
13
13
  --text-soft: #d1d1d4;
14
14
  --placeholder: #818187;
15
- --accent: #8f6cf5;
16
- --accent-hover: #a98cff;
15
+ --accent: #10b981;
16
+ --accent-hover: #34d399;
17
17
  --border: rgba(255, 255, 255, 0.075);
18
18
  --border-light: rgba(255, 255, 255, 0.11);
19
19
  --shadow: none;
@@ -258,7 +258,7 @@ h1 {
258
258
 
259
259
  .startup-loading {
260
260
  position: absolute;
261
- inset: 34px 0 0;
261
+ inset: 0;
262
262
  z-index: 100;
263
263
  display: grid;
264
264
  place-items: center;
@@ -324,14 +324,14 @@ h1 {
324
324
  }
325
325
 
326
326
  .toggle-model-btn:hover {
327
- background: rgba(139, 92, 246, 0.15);
328
- border-color: rgba(139, 92, 246, 0.2);
327
+ background: color-mix(in srgb, var(--accent) 15%, transparent);
328
+ border-color: color-mix(in srgb, var(--accent) 20%, transparent);
329
329
  color: var(--accent);
330
330
  }
331
331
 
332
332
  .toggle-model-btn.active {
333
- background: rgba(139, 92, 246, 0.26);
334
- border-color: rgba(139, 92, 246, 0.42);
333
+ background: color-mix(in srgb, var(--accent) 26%, transparent);
334
+ border-color: color-mix(in srgb, var(--accent) 42%, transparent);
335
335
  color: white;
336
336
  }
337
337
 
@@ -343,9 +343,9 @@ h1 {
343
343
 
344
344
  .accessory-cycle-btn:hover,
345
345
  .accessory-cycle-btn.active {
346
- background: rgba(168, 85, 247, 0.14);
347
- border-color: rgba(168, 85, 247, 0.24);
348
- color: #c4b5fd;
346
+ background: rgba(16, 185, 129, 0.14);
347
+ border-color: rgba(16, 185, 129, 0.24);
348
+ color: #a7f3d0;
349
349
  }
350
350
 
351
351
  .toggle-interaction-btn:hover,
@@ -397,8 +397,8 @@ h1 {
397
397
  }
398
398
 
399
399
  .settings-btn:hover {
400
- background: rgba(139, 92, 246, 0.15);
401
- border-color: rgba(139, 92, 246, 0.2);
400
+ background: color-mix(in srgb, var(--accent) 15%, transparent);
401
+ border-color: color-mix(in srgb, var(--accent) 20%, transparent);
402
402
  color: var(--accent);
403
403
  }
404
404
 
@@ -459,7 +459,7 @@ h1 {
459
459
  width: 85%;
460
460
  aspect-ratio: 1;
461
461
  border-radius: 50%;
462
- background: radial-gradient(circle, rgba(139, 92, 246, 0.12), rgba(139, 92, 246, 0.02) 48%, transparent 72%);
462
+ background: radial-gradient(circle, color-mix(in srgb, var(--accent) 12%, transparent), color-mix(in srgb, var(--accent) 2%, transparent) 48%, transparent 72%);
463
463
  filter: blur(20px);
464
464
  transform: translateY(2%);
465
465
  }
@@ -520,8 +520,14 @@ h1 {
520
520
  opacity: 1;
521
521
  }
522
522
 
523
+ .model-shell.interaction-enabled .interaction-zone {
524
+ pointer-events: auto;
525
+ }
526
+
523
527
  .interaction-zone {
524
528
  position: absolute;
529
+ pointer-events: none;
530
+ cursor: pointer;
525
531
  border: 1px solid rgba(103, 232, 249, 0.46);
526
532
  background: rgba(14, 165, 233, 0.08);
527
533
  box-shadow: 0 0 18px rgba(34, 211, 238, 0.12), inset 0 0 18px rgba(255, 255, 255, 0.04);
@@ -740,11 +746,6 @@ h1 {
740
746
  color: var(--text-main);
741
747
  }
742
748
 
743
- .model-shell.is-live2d-ready .model-placeholder {
744
- opacity: 0 !important;
745
- pointer-events: none;
746
- }
747
-
748
749
  .model-status {
749
750
  position: absolute;
750
751
  left: 50%;
@@ -793,10 +794,6 @@ h1 {
793
794
  40% { transform: scale(1.0); opacity: 1; }
794
795
  }
795
796
 
796
- .model-shell.is-live2d-ready .model-status {
797
- display: none;
798
- }
799
-
800
797
  .model-shadow {
801
798
  position: absolute;
802
799
  bottom: 12%;
@@ -927,6 +924,13 @@ h1 {
927
924
  text-underline-offset: 2px;
928
925
  }
929
926
 
927
+ .provider-fallback-notice {
928
+ max-width: min(520px, 82vw);
929
+ color: var(--warning, #fbbf24);
930
+ font-weight: 500;
931
+ line-height: 1.35;
932
+ }
933
+
930
934
  .provider-popover {
931
935
  position: absolute;
932
936
  left: 6px;
@@ -1039,10 +1043,10 @@ h1 {
1039
1043
  }
1040
1044
 
1041
1045
  .user-message .message-bubble {
1042
- background: linear-gradient(135deg, var(--accent) 0%, #6d28d9 100%);
1046
+ background: linear-gradient(135deg, var(--accent) 0%, color-mix(in srgb, var(--accent) 70%, #000000) 100%);
1043
1047
  color: white;
1044
1048
  border-bottom-right-radius: 4px;
1045
- box-shadow: 0 6px 20px rgba(139, 92, 246, 0.25), inset 1px 1px 0 rgba(255, 255, 255, 0.2);
1049
+ box-shadow: 0 6px 20px color-mix(in srgb, var(--accent) 25%, transparent), inset 1px 1px 0 rgba(255, 255, 255, 0.2);
1046
1050
  }
1047
1051
 
1048
1052
  .ai-message {
@@ -1058,9 +1062,19 @@ h1 {
1058
1062
  border-left: 1px solid var(--border-light);
1059
1063
  border-bottom-left-radius: 4px;
1060
1064
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1);
1061
- color: #f8fafc; /* Stable text color for AI messages */
1065
+ color: var(--text-main);
1066
+ }
1067
+
1068
+ .message.ai-message.thinking-message .message-bubble {
1069
+ background: color-mix(in srgb, var(--panel-bg) 75%, #000000) !important;
1070
+ border-color: color-mix(in srgb, var(--accent) 30%, var(--border-light)) !important;
1071
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.25) !important;
1072
+ color: var(--text-muted) !important;
1073
+ backdrop-filter: none !important;
1074
+ -webkit-backdrop-filter: none !important;
1062
1075
  }
1063
1076
 
1077
+
1064
1078
  /* Typing Indicator */
1065
1079
  .typing-indicator {
1066
1080
  display: flex;
@@ -1107,7 +1121,7 @@ h1 {
1107
1121
  /* Input Area */
1108
1122
  .input-area {
1109
1123
  padding: 16px 20px;
1110
- background: rgba(15, 23, 42, 0.5);
1124
+ background: color-mix(in srgb, var(--panel-bg) 60%, transparent);
1111
1125
  backdrop-filter: var(--glass-blur);
1112
1126
  -webkit-backdrop-filter: var(--glass-blur);
1113
1127
  border-top: 1px solid var(--border);
@@ -1127,9 +1141,10 @@ h1 {
1127
1141
  }
1128
1142
 
1129
1143
  #chat-form:focus-within {
1130
- border-color: var(--accent);
1131
- box-shadow: 0 0 0 2px rgba(139, 92, 246, 0.2), inset 0 2px 4px rgba(0, 0, 0, 0.1);
1132
- transform: translateY(-1px);
1144
+ border-color: transparent;
1145
+ outline: none;
1146
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
1147
+ transform: none;
1133
1148
  }
1134
1149
 
1135
1150
  #chat-input {
@@ -1143,6 +1158,14 @@ h1 {
1143
1158
  font-size: 0.95rem;
1144
1159
  }
1145
1160
 
1161
+ #chat-input:focus,
1162
+ #chat-input:focus-visible,
1163
+ #chat-input:-moz-focusring {
1164
+ border: 0 !important;
1165
+ outline: none !important;
1166
+ box-shadow: none !important;
1167
+ }
1168
+
1146
1169
  #chat-input::placeholder {
1147
1170
  color: var(--text-main);
1148
1171
  opacity: 0.6;
@@ -1150,7 +1173,8 @@ h1 {
1150
1173
 
1151
1174
  #send-btn,
1152
1175
  #mic-btn,
1153
- #vision-btn {
1176
+ #chat-tool-btn,
1177
+ #screen-capture-btn {
1154
1178
  background: var(--accent);
1155
1179
  color: white;
1156
1180
  border: none;
@@ -1167,14 +1191,16 @@ h1 {
1167
1191
 
1168
1192
  #send-btn:hover,
1169
1193
  #mic-btn:hover,
1170
- #vision-btn:hover {
1194
+ #chat-tool-btn:hover,
1195
+ #screen-capture-btn:hover {
1171
1196
  background: var(--accent-hover);
1172
1197
  transform: scale(1.05);
1173
1198
  }
1174
1199
 
1175
1200
  #send-btn:active,
1176
1201
  #mic-btn:active,
1177
- #vision-btn:active {
1202
+ #chat-tool-btn:active,
1203
+ #screen-capture-btn:active {
1178
1204
  transform: scale(0.95);
1179
1205
  }
1180
1206
 
@@ -1184,16 +1210,18 @@ h1 {
1184
1210
  animation: pulse-mic 1.5s infinite;
1185
1211
  }
1186
1212
 
1187
- #vision-btn {
1213
+ #chat-tool-btn,
1214
+ #screen-capture-btn {
1188
1215
  background: transparent;
1189
1216
  color: var(--text-muted);
1190
1217
  border: 1px solid var(--border);
1191
1218
  }
1192
1219
 
1193
- #vision-btn:hover {
1194
- background: rgba(139, 92, 246, 0.15);
1220
+ #chat-tool-btn:hover,
1221
+ #screen-capture-btn:hover {
1222
+ background: color-mix(in srgb, var(--accent) 15%, transparent);
1195
1223
  color: var(--accent);
1196
- border-color: rgba(139, 92, 246, 0.4);
1224
+ border-color: color-mix(in srgb, var(--accent) 40%, transparent);
1197
1225
  }
1198
1226
 
1199
1227
  @keyframes pulse-mic {
@@ -1216,8 +1244,8 @@ h1 {
1216
1244
  .action-card {
1217
1245
  margin-top: 8px;
1218
1246
  padding: 10px;
1219
- background: rgba(139, 92, 246, 0.1);
1220
- border: 1px solid rgba(139, 92, 246, 0.3);
1247
+ background: color-mix(in srgb, var(--accent) 10%, transparent);
1248
+ border: 1px solid color-mix(in srgb, var(--accent) 30%, transparent);
1221
1249
  border-radius: 8px;
1222
1250
  font-size: 0.85rem;
1223
1251
  display: flex;
@@ -1317,92 +1345,349 @@ h1 {
1317
1345
  background: rgba(255, 255, 255, 0.08);
1318
1346
  }
1319
1347
 
1348
+ @keyframes agent-activity-slide-up-fade {
1349
+ from {
1350
+ opacity: 0;
1351
+ transform: translateY(10px) scale(0.98);
1352
+ }
1353
+ to {
1354
+ opacity: 1;
1355
+ transform: translateY(0) scale(1);
1356
+ }
1357
+ }
1358
+
1359
+ @keyframes pulse-ring {
1360
+ 0% {
1361
+ box-shadow: 0 0 0 0 rgba(99, 102, 241, 0.6);
1362
+ }
1363
+ 70% {
1364
+ box-shadow: 0 0 0 8px rgba(99, 102, 241, 0);
1365
+ }
1366
+ 100% {
1367
+ box-shadow: 0 0 0 0 rgba(99, 102, 241, 0);
1368
+ }
1369
+ }
1370
+
1371
+ @keyframes pulse-ring-amber {
1372
+ 0% {
1373
+ box-shadow: 0 0 0 0 rgba(245, 158, 11, 0.6);
1374
+ }
1375
+ 70% {
1376
+ box-shadow: 0 0 0 8px rgba(245, 158, 11, 0);
1377
+ }
1378
+ 100% {
1379
+ box-shadow: 0 0 0 0 rgba(245, 158, 11, 0);
1380
+ }
1381
+ }
1382
+
1320
1383
  .agent-activity-message {
1321
1384
  margin-top: -2px;
1322
1385
  }
1323
1386
 
1387
+ .agent-activity-history {
1388
+ display: grid;
1389
+ gap: 8px;
1390
+ margin-bottom: 8px;
1391
+ margin-top: 0;
1392
+ max-width: min(680px, 100%);
1393
+ }
1394
+
1395
+ .agent-activity-toggle {
1396
+ align-items: center;
1397
+ align-self: start;
1398
+ background: transparent;
1399
+ border: 0;
1400
+ color: var(--text-muted);
1401
+ cursor: pointer;
1402
+ display: inline-flex;
1403
+ font: inherit;
1404
+ font-size: 0.8rem;
1405
+ gap: 8px;
1406
+ justify-content: flex-start;
1407
+ line-height: 1.2;
1408
+ padding: 2px 0;
1409
+ text-align: left;
1410
+ width: fit-content;
1411
+ }
1412
+
1413
+ .agent-activity-toggle:hover {
1414
+ color: var(--text-soft);
1415
+ }
1416
+
1417
+ .agent-activity-toggle:focus-visible {
1418
+ outline: 1px solid var(--border-light);
1419
+ outline-offset: 3px;
1420
+ }
1421
+
1324
1422
  .agent-activity-card {
1325
- background: rgba(15, 23, 42, 0.46);
1326
- border: 1px solid rgba(148, 163, 184, 0.18);
1327
- border-radius: 8px;
1423
+ background: transparent;
1424
+ border: 0;
1425
+ border-radius: 0;
1328
1426
  color: var(--text-main);
1329
- max-width: min(520px, 100%);
1330
- padding: 10px 12px;
1427
+ width: min(680px, 100%);
1428
+ max-width: 100%;
1429
+ padding: 4px 0;
1430
+ box-shadow: none;
1431
+ animation: agent-activity-slide-up-fade 0.3s cubic-bezier(0.16, 1, 0.3, 1) forwards;
1432
+ }
1433
+
1434
+ .agent-activity-card-history {
1435
+ padding-top: 0;
1331
1436
  }
1332
1437
 
1333
1438
  .agent-activity-header {
1334
1439
  align-items: center;
1335
1440
  display: flex;
1336
- font-size: 0.78rem;
1337
- font-weight: 700;
1441
+ gap: 12px;
1442
+ font-size: 0.8rem;
1443
+ font-weight: 650;
1338
1444
  justify-content: space-between;
1339
1445
  margin-bottom: 8px;
1446
+ letter-spacing: 0;
1447
+ color: var(--text-muted);
1448
+ opacity: 0.9;
1340
1449
  }
1341
1450
 
1342
1451
  .agent-activity-status {
1343
- border: 1px solid rgba(139, 92, 246, 0.28);
1452
+ border: 1px solid var(--border);
1344
1453
  border-radius: 999px;
1345
- color: var(--accent);
1346
- font-size: 0.68rem;
1347
- padding: 2px 7px;
1454
+ color: var(--text-muted);
1455
+ font-size: 0.7rem;
1456
+ font-weight: 600;
1457
+ padding: 2px 9px;
1458
+ background: transparent;
1459
+ display: inline-flex;
1460
+ align-items: center;
1461
+ gap: 6px;
1462
+ }
1463
+
1464
+ .agent-activity-status::before {
1465
+ content: "";
1466
+ display: inline-block;
1467
+ width: 6px;
1468
+ height: 6px;
1469
+ border-radius: 50%;
1470
+ background: var(--text-muted);
1471
+ box-shadow: none;
1472
+ }
1473
+
1474
+ .agent-activity-status[data-state="active"] {
1475
+ border-color: var(--border);
1476
+ color: var(--text-soft);
1477
+ background: transparent;
1478
+ }
1479
+
1480
+ .agent-activity-status[data-state="active"]::before {
1481
+ background: var(--accent);
1482
+ animation: pulse-ring 1.8s infinite;
1348
1483
  }
1349
1484
 
1350
1485
  .agent-activity-status[data-state="done"] {
1351
- border-color: rgba(16, 185, 129, 0.3);
1486
+ border-color: rgba(16, 185, 129, 0.35);
1352
1487
  color: #34d399;
1488
+ background: rgba(16, 185, 129, 0.08);
1489
+ }
1490
+
1491
+ .agent-activity-status[data-state="done"]::before {
1492
+ background: #34d399;
1493
+ box-shadow: 0 0 6px #34d399;
1353
1494
  }
1354
1495
 
1355
1496
  .agent-activity-status[data-state="error"] {
1356
- border-color: rgba(239, 68, 68, 0.34);
1497
+ border-color: rgba(239, 68, 68, 0.35);
1357
1498
  color: #f87171;
1499
+ background: rgba(239, 68, 68, 0.08);
1500
+ }
1501
+
1502
+ .agent-activity-status[data-state="error"]::before {
1503
+ background: #f87171;
1504
+ box-shadow: 0 0 6px #f87171;
1358
1505
  }
1359
1506
 
1360
1507
  .agent-activity-status[data-state="cancelled"] {
1361
1508
  border-color: rgba(148, 163, 184, 0.28);
1362
1509
  color: var(--text-muted);
1510
+ background: rgba(148, 163, 184, 0.05);
1511
+ }
1512
+
1513
+ .agent-activity-status[data-state="cancelled"]::before {
1514
+ background: var(--text-muted);
1515
+ }
1516
+
1517
+ .agent-activity-status[data-state="approval"] {
1518
+ border-color: rgba(245, 158, 11, 0.4);
1519
+ color: #fbbf24;
1520
+ background: rgba(245, 158, 11, 0.12);
1521
+ }
1522
+
1523
+ .agent-activity-status[data-state="approval"]::before {
1524
+ background: #fbbf24;
1525
+ animation: pulse-ring-amber 1.8s infinite;
1363
1526
  }
1364
1527
 
1365
1528
  .agent-activity-list {
1366
1529
  display: grid;
1367
- gap: 6px;
1530
+ border: 1px solid var(--border);
1531
+ border-radius: 8px;
1532
+ gap: 0;
1533
+ overflow: hidden;
1534
+ }
1535
+
1536
+ .agent-activity-table-head {
1537
+ align-items: center;
1538
+ background: color-mix(in srgb, var(--panel-soft) 62%, transparent);
1539
+ border-bottom: 1px solid var(--border);
1540
+ color: var(--text-muted);
1541
+ display: grid;
1542
+ font-size: 0.68rem;
1543
+ font-weight: 650;
1544
+ gap: 10px;
1545
+ grid-template-columns: minmax(132px, 160px) 16px minmax(0, 1fr) 14px;
1546
+ min-height: 28px;
1547
+ padding: 5px 12px;
1548
+ text-transform: uppercase;
1368
1549
  }
1369
1550
 
1370
1551
  .agent-activity-item {
1371
- align-items: start;
1552
+ align-items: center;
1553
+ border-bottom: 1px solid var(--border);
1372
1554
  color: var(--text-soft);
1373
1555
  display: grid;
1374
- font-size: 0.76rem;
1375
- gap: 8px;
1376
- grid-template-columns: 9px minmax(0, 1fr);
1556
+ font-size: 0.86rem;
1557
+ gap: 10px;
1558
+ grid-template-columns: minmax(132px, 160px) 16px minmax(0, 1fr) 14px;
1559
+ min-height: 34px;
1560
+ padding: 7px 12px;
1561
+ transition: background 0.2s ease, color 0.2s ease;
1377
1562
  }
1378
1563
 
1379
- .agent-activity-dot {
1380
- background: var(--accent);
1564
+ .agent-activity-item:last-child {
1565
+ border-bottom: 0;
1566
+ }
1567
+
1568
+ .agent-activity-item:hover {
1569
+ background: var(--panel-soft);
1570
+ color: var(--text-main);
1571
+ }
1572
+
1573
+ .agent-activity-label {
1574
+ color: var(--text-muted);
1575
+ font-size: 0.8rem;
1576
+ line-height: 1;
1577
+ overflow: hidden;
1578
+ text-overflow: ellipsis;
1579
+ white-space: nowrap;
1580
+ }
1581
+
1582
+ .agent-activity-icon {
1583
+ display: inline-block;
1584
+ height: 14px;
1585
+ position: relative;
1586
+ width: 15px;
1587
+ }
1588
+
1589
+ .agent-activity-icon::before,
1590
+ .agent-activity-icon::after {
1591
+ content: "";
1592
+ position: absolute;
1593
+ }
1594
+
1595
+ .agent-activity-item[data-kind="folder"] .agent-activity-icon::before {
1596
+ background: var(--text-muted);
1597
+ border-radius: 2px 2px 1px 1px;
1598
+ height: 4px;
1599
+ left: 1px;
1600
+ top: 1px;
1601
+ width: 7px;
1602
+ }
1603
+
1604
+ .agent-activity-item[data-kind="folder"] .agent-activity-icon::after {
1605
+ background: color-mix(in srgb, var(--text-muted) 34%, transparent);
1606
+ border: 1px solid var(--text-muted);
1607
+ border-radius: 2px;
1608
+ height: 8px;
1609
+ left: 0;
1610
+ top: 4px;
1611
+ width: 13px;
1612
+ }
1613
+
1614
+ .agent-activity-item[data-kind="file"] .agent-activity-icon::before,
1615
+ .agent-activity-item[data-kind="tool"] .agent-activity-icon::before {
1616
+ border: 1.5px solid var(--text-muted);
1617
+ border-radius: 2px;
1618
+ height: 11px;
1619
+ left: 2px;
1620
+ top: 0;
1621
+ width: 9px;
1622
+ }
1623
+
1624
+ .agent-activity-item[data-kind="file"] .agent-activity-icon::after,
1625
+ .agent-activity-item[data-kind="tool"] .agent-activity-icon::after {
1626
+ border-right: 1.5px solid var(--text-muted);
1627
+ border-top: 1.5px solid var(--text-muted);
1628
+ height: 4px;
1629
+ right: 1px;
1630
+ top: 0;
1631
+ width: 4px;
1632
+ }
1633
+
1634
+ .agent-activity-item[data-kind="search"] .agent-activity-icon::before {
1635
+ border: 1.7px solid var(--text-muted);
1381
1636
  border-radius: 50%;
1382
1637
  height: 7px;
1383
- margin-top: 5px;
1638
+ left: 1px;
1639
+ top: 1px;
1384
1640
  width: 7px;
1385
1641
  }
1386
1642
 
1387
- .agent-activity-item[data-state="done"] .agent-activity-dot {
1388
- background: #34d399;
1643
+ .agent-activity-item[data-kind="search"] .agent-activity-icon::after {
1644
+ background: var(--text-muted);
1645
+ border-radius: 1px;
1646
+ height: 6px;
1647
+ left: 9px;
1648
+ top: 8px;
1649
+ transform: rotate(-45deg);
1650
+ width: 2px;
1389
1651
  }
1390
1652
 
1391
- .agent-activity-item[data-state="error"] .agent-activity-dot {
1392
- background: #f87171;
1653
+ .agent-activity-item[data-kind="terminal"] .agent-activity-icon::before {
1654
+ border: 1.5px solid var(--text-muted);
1655
+ border-radius: 3px;
1656
+ height: 10px;
1657
+ left: 0;
1658
+ top: 1px;
1659
+ width: 13px;
1393
1660
  }
1394
1661
 
1395
- .agent-activity-item[data-state="skipped"] .agent-activity-dot,
1396
- .agent-activity-item[data-state="cancelled"] .agent-activity-dot {
1397
- background: rgba(148, 163, 184, 0.8);
1662
+ .agent-activity-item[data-kind="terminal"] .agent-activity-icon::after {
1663
+ background: var(--text-muted);
1664
+ box-shadow: 4px 0 0 var(--text-muted);
1665
+ height: 1.5px;
1666
+ left: 4px;
1667
+ top: 7px;
1668
+ width: 3px;
1669
+ }
1670
+
1671
+ .agent-activity-item[data-state="active"] .agent-activity-label {
1672
+ color: var(--text-soft);
1398
1673
  }
1399
1674
 
1400
- .agent-activity-item[data-state="approval"] .agent-activity-dot {
1401
- background: #f59e0b;
1675
+ .agent-activity-item[data-state="error"] .agent-activity-label {
1676
+ color: #f87171;
1402
1677
  }
1403
1678
 
1404
1679
  .agent-activity-text {
1405
- overflow-wrap: anywhere;
1680
+ min-width: 0;
1681
+ overflow: hidden;
1682
+ text-overflow: ellipsis;
1683
+ white-space: nowrap;
1684
+ line-height: 1.35;
1685
+ }
1686
+
1687
+ .agent-activity-chevron {
1688
+ color: var(--text-muted);
1689
+ font-size: 1rem;
1690
+ line-height: 1;
1406
1691
  }
1407
1692
 
1408
1693
  /* Smart Context Toggle */
@@ -1486,11 +1771,11 @@ input:checked + .slider:before {
1486
1771
 
1487
1772
  .proactive-bar {
1488
1773
  animation: proactiveSlideDown 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
1489
- background: linear-gradient(135deg, rgba(139, 92, 246, 0.15), rgba(109, 40, 217, 0.05));
1774
+ background: linear-gradient(135deg, color-mix(in srgb, var(--accent) 15%, transparent), color-mix(in srgb, var(--accent) 5%, transparent));
1490
1775
  backdrop-filter: var(--glass-blur);
1491
1776
  -webkit-backdrop-filter: var(--glass-blur);
1492
- border-bottom: 1px solid rgba(139, 92, 246, 0.3);
1493
- border-top: 1px solid rgba(139, 92, 246, 0.2);
1777
+ border-bottom: 1px solid color-mix(in srgb, var(--accent) 30%, transparent);
1778
+ border-top: 1px solid color-mix(in srgb, var(--accent) 20%, transparent);
1494
1779
  padding: 12px 16px 14px;
1495
1780
  position: relative;
1496
1781
  z-index: 5;
@@ -1503,7 +1788,7 @@ input:checked + .slider:before {
1503
1788
  inset: 0;
1504
1789
  border-left: 3px solid var(--accent);
1505
1790
  pointer-events: none;
1506
- box-shadow: 3px 0 12px rgba(139, 92, 246, 0.25) inset;
1791
+ box-shadow: 3px 0 12px color-mix(in srgb, var(--accent) 25%, transparent) inset;
1507
1792
  }
1508
1793
 
1509
1794
  @keyframes proactiveSlideDown {
@@ -1526,8 +1811,8 @@ input:checked + .slider:before {
1526
1811
  }
1527
1812
 
1528
1813
  @keyframes proactiveGlow {
1529
- from { filter: drop-shadow(0 0 3px rgba(139, 92, 246, 0.5)); }
1530
- to { filter: drop-shadow(0 0 8px rgba(167, 139, 250, 0.9)); }
1814
+ from { filter: drop-shadow(0 0 3px color-mix(in srgb, var(--accent) 50%, transparent)); }
1815
+ to { filter: drop-shadow(0 0 8px color-mix(in srgb, var(--accent-hover, var(--accent)) 90%, transparent)); }
1531
1816
  }
1532
1817
 
1533
1818
  .proactive-message {
@@ -1565,8 +1850,8 @@ input:checked + .slider:before {
1565
1850
 
1566
1851
  .suggestion-chip {
1567
1852
  -webkit-app-region: no-drag;
1568
- background: rgba(139, 92, 246, 0.15);
1569
- border: 1px solid rgba(139, 92, 246, 0.4);
1853
+ background: color-mix(in srgb, var(--accent) 15%, transparent);
1854
+ border: 1px solid color-mix(in srgb, var(--accent) 40%, transparent);
1570
1855
  border-radius: 20px;
1571
1856
  color: var(--text-main);
1572
1857
  cursor: pointer;
@@ -1586,10 +1871,10 @@ input:checked + .slider:before {
1586
1871
  }
1587
1872
 
1588
1873
  .suggestion-chip:hover {
1589
- background: linear-gradient(135deg, var(--accent), #6d28d9);
1874
+ background: linear-gradient(135deg, var(--accent), color-mix(in srgb, var(--accent) 70%, #000000));
1590
1875
  border-color: rgba(255, 255, 255, 0.3);
1591
1876
  color: white;
1592
- box-shadow: 0 6px 15px rgba(139, 92, 246, 0.4), inset 0 1px 1px rgba(255, 255, 255, 0.2);
1877
+ box-shadow: 0 6px 15px color-mix(in srgb, var(--accent) 40%, transparent), inset 0 1px 1px rgba(255, 255, 255, 0.2);
1593
1878
  transform: translateY(-3px) scale(1.05);
1594
1879
  }
1595
1880
 
@@ -1611,36 +1896,7 @@ input:checked + .slider:before {
1611
1896
  }
1612
1897
 
1613
1898
  .sidebar-toggle {
1614
- position: absolute;
1615
- top: 10px;
1616
- left: 214px;
1617
- z-index: 12;
1618
- width: 40px;
1619
- height: 34px;
1620
- display: flex;
1621
- align-items: center;
1622
- justify-content: center;
1623
- border: 1px solid var(--border-light);
1624
- border-radius: 6px;
1625
- background: var(--panel-raised);
1626
- color: var(--text-soft);
1627
- cursor: pointer;
1628
- -webkit-app-region: no-drag;
1629
- transition: left 0.22s ease, background 0.16s ease, color 0.16s ease, border-color 0.16s ease;
1630
- }
1631
-
1632
- .sidebar-toggle:hover {
1633
- background: var(--surface-strong);
1634
- color: var(--text-main);
1635
- border-color: rgba(255, 255, 255, 0.16);
1636
- }
1637
-
1638
- .app-body.sidebar-collapsed .sidebar-toggle {
1639
- left: 8px;
1640
- }
1641
-
1642
- .app-body.sidebar-collapsed .sidebar-toggle-icon {
1643
- transform: rotate(180deg);
1899
+ display: none !important;
1644
1900
  }
1645
1901
 
1646
1902
  .workspace-sidebar {
@@ -1651,7 +1907,7 @@ input:checked + .slider:before {
1651
1907
  display: flex;
1652
1908
  flex-direction: column;
1653
1909
  min-width: 0;
1654
- padding: 52px 10px 12px 14px;
1910
+ padding: 20px 10px 12px 14px;
1655
1911
  background: var(--chrome-bg);
1656
1912
  backdrop-filter: var(--glass-blur);
1657
1913
  -webkit-backdrop-filter: var(--glass-blur);
@@ -1661,27 +1917,88 @@ input:checked + .slider:before {
1661
1917
  transition: width 0.22s ease, padding 0.22s ease, opacity 0.18s ease, transform 0.22s ease;
1662
1918
  }
1663
1919
 
1664
- .app-body.sidebar-collapsed .workspace-sidebar {
1665
- width: 56px;
1666
- padding: 52px 8px 12px;
1667
- opacity: 1;
1668
- pointer-events: auto;
1669
- transform: translateX(0);
1920
+ .sidebar-brand {
1921
+ display: flex;
1922
+ align-items: center;
1923
+ gap: 10px;
1924
+ padding: 0 8px 16px 2px;
1925
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
1926
+ margin-bottom: 14px;
1927
+ overflow: hidden;
1928
+ transition: all 0.22s ease;
1670
1929
  }
1671
1930
 
1672
- .workspace-sidebar button {
1673
- font: inherit;
1931
+ .sidebar-brand.clickable {
1932
+ cursor: pointer;
1933
+ user-select: none;
1674
1934
  -webkit-app-region: no-drag;
1935
+ outline: none;
1675
1936
  }
1676
1937
 
1677
- .sidebar-new-chat,
1678
- .sidebar-top-action,
1679
- .sidebar-settings,
1680
- .sidebar-bottom-actions .clear-btn,
1681
- .sidebar-bottom-actions .settings-btn {
1682
- width: 100%;
1683
- min-width: 0;
1684
- max-width: none;
1938
+ .sidebar-brand.clickable:hover .sidebar-brand-name {
1939
+ color: var(--accent-hover);
1940
+ }
1941
+
1942
+ .sidebar-brand.clickable:hover .sidebar-logo {
1943
+ filter: brightness(1.15);
1944
+ transform: scale(1.05);
1945
+ }
1946
+
1947
+ .sidebar-logo {
1948
+ width: 32px;
1949
+ height: 32px;
1950
+ object-fit: contain;
1951
+ flex-shrink: 0;
1952
+ border-radius: 6px;
1953
+ transition: transform 0.2s ease, filter 0.2s ease;
1954
+ }
1955
+
1956
+ .sidebar-brand-name {
1957
+ font-size: 0.95rem;
1958
+ font-weight: 600;
1959
+ color: var(--text-main);
1960
+ white-space: nowrap;
1961
+ opacity: 1;
1962
+ transition: opacity 0.15s ease;
1963
+ }
1964
+
1965
+ /* Collapsed state styling */
1966
+ .app-body.sidebar-collapsed .sidebar-brand {
1967
+ padding: 0 0 12px 0;
1968
+ justify-content: center;
1969
+ gap: 0;
1970
+ border-bottom-color: transparent;
1971
+ }
1972
+
1973
+ .app-body.sidebar-collapsed .sidebar-brand-name {
1974
+ opacity: 0;
1975
+ width: 0;
1976
+ pointer-events: none;
1977
+ display: none;
1978
+ }
1979
+
1980
+ .app-body.sidebar-collapsed .workspace-sidebar {
1981
+ width: 56px;
1982
+ padding: 20px 8px 12px;
1983
+ opacity: 1;
1984
+ pointer-events: auto;
1985
+ transform: translateX(0);
1986
+ }
1987
+
1988
+ .workspace-sidebar button {
1989
+ font: inherit;
1990
+ font-size: 0.9rem;
1991
+ -webkit-app-region: no-drag;
1992
+ }
1993
+
1994
+ .sidebar-new-chat,
1995
+ .sidebar-top-action,
1996
+ .sidebar-settings,
1997
+ .sidebar-bottom-actions .clear-btn,
1998
+ .sidebar-bottom-actions .settings-btn {
1999
+ width: 100%;
2000
+ min-width: 0;
2001
+ max-width: none;
1685
2002
  height: 32px;
1686
2003
  display: flex;
1687
2004
  align-items: center;
@@ -1749,7 +2066,6 @@ input:checked + .slider:before {
1749
2066
  justify-content: flex-start;
1750
2067
  padding: 0 10px;
1751
2068
  color: var(--text-soft);
1752
- font-size: 1rem;
1753
2069
  font-weight: 400;
1754
2070
  gap: 9px;
1755
2071
  }
@@ -1777,20 +2093,34 @@ input:checked + .slider:before {
1777
2093
  }
1778
2094
 
1779
2095
  .sidebar-section-title {
1780
- padding: 0 8px 12px;
2096
+ padding: 0 10px 12px;
1781
2097
  color: var(--text-muted);
1782
- font-size: 0.72rem;
2098
+ font-size: 0.9rem;
2099
+ }
2100
+
2101
+ .sidebar-subsection-title {
2102
+ padding-top: 14px;
2103
+ padding-bottom: 8px;
2104
+ }
2105
+
2106
+ .sidebar-section-title.clickable {
2107
+ cursor: pointer;
2108
+ user-select: none;
2109
+ transition: color 0.16s ease;
2110
+ }
2111
+
2112
+ .sidebar-section-title.clickable:hover {
2113
+ color: var(--text-main);
1783
2114
  }
1784
2115
 
1785
2116
  .sidebar-project {
1786
2117
  height: 32px;
1787
2118
  display: flex;
1788
2119
  align-items: center;
1789
- gap: 8px;
1790
- padding: 0 8px;
2120
+ gap: 9px;
2121
+ padding: 0 10px;
1791
2122
  color: var(--text-muted);
1792
2123
  border-radius: 6px;
1793
- font-size: 0.84rem;
1794
2124
  white-space: nowrap;
1795
2125
  overflow: hidden;
1796
2126
  text-overflow: ellipsis;
@@ -1801,6 +2131,97 @@ input:checked + .slider:before {
1801
2131
  text-align: left;
1802
2132
  }
1803
2133
 
2134
+ .sidebar-chat-list {
2135
+ display: grid;
2136
+ gap: 2px;
2137
+ max-height: min(360px, 42vh);
2138
+ overflow-y: auto;
2139
+ padding-right: 2px;
2140
+ }
2141
+
2142
+ .sidebar-chat-item {
2143
+ cursor: pointer;
2144
+ }
2145
+
2146
+ .sidebar-chat-item:hover {
2147
+ background: var(--surface-strong);
2148
+ color: var(--text-main);
2149
+ }
2150
+
2151
+ .sidebar-chat-title {
2152
+ min-width: 0;
2153
+ flex: 1;
2154
+ overflow: hidden;
2155
+ text-overflow: ellipsis;
2156
+ white-space: nowrap;
2157
+ }
2158
+
2159
+ .sidebar-chat-delete {
2160
+ width: 24px;
2161
+ height: 24px;
2162
+ margin-left: 2px;
2163
+ display: inline-flex;
2164
+ align-items: center;
2165
+ justify-content: center;
2166
+ border-radius: 5px;
2167
+ color: var(--text-muted);
2168
+ opacity: 0;
2169
+ flex: 0 0 auto;
2170
+ }
2171
+
2172
+ .sidebar-chat-edit {
2173
+ width: 24px;
2174
+ height: 24px;
2175
+ margin-left: auto;
2176
+ display: inline-flex;
2177
+ align-items: center;
2178
+ justify-content: center;
2179
+ border-radius: 5px;
2180
+ color: var(--text-muted);
2181
+ opacity: 0;
2182
+ flex: 0 0 auto;
2183
+ }
2184
+
2185
+ .sidebar-chat-item:hover .sidebar-chat-delete,
2186
+ .sidebar-chat-delete:focus-visible,
2187
+ .sidebar-chat-item:hover .sidebar-chat-edit,
2188
+ .sidebar-chat-edit:focus-visible {
2189
+ opacity: 1;
2190
+ }
2191
+
2192
+ .sidebar-chat-delete:hover {
2193
+ color: #fca5a5;
2194
+ background: rgba(248, 113, 113, 0.12);
2195
+ }
2196
+
2197
+ .sidebar-chat-edit:hover {
2198
+ color: #c7d2fe;
2199
+ background: rgba(99, 102, 241, 0.12);
2200
+ }
2201
+
2202
+ .sidebar-chat-rename-input {
2203
+ background: rgba(255, 255, 255, 0.08);
2204
+ border: 1px solid rgba(255, 255, 255, 0.16);
2205
+ border-radius: 4px;
2206
+ color: var(--text-main);
2207
+ font-family: inherit;
2208
+ font-size: 0.82rem;
2209
+ padding: 2px 6px;
2210
+ width: 100%;
2211
+ box-sizing: border-box;
2212
+ outline: none;
2213
+ margin-right: 4px;
2214
+ }
2215
+
2216
+ .sidebar-chat-rename-input:focus {
2217
+ border-color: var(--accent);
2218
+ background: rgba(255, 255, 255, 0.12);
2219
+ }
2220
+
2221
+ .sidebar-chat-item.active:hover .mint-status-pill {
2222
+ display: none;
2223
+ }
2224
+
1804
2225
  .app-body.sidebar-collapsed .sidebar-new-chat,
1805
2226
  .app-body.sidebar-collapsed .sidebar-top-action,
1806
2227
  .app-body.sidebar-collapsed .sidebar-settings,
@@ -1879,7 +2300,7 @@ input:checked + .slider:before {
1879
2300
 
1880
2301
  .mint-status-pill[data-state="thinking"],
1881
2302
  .model-activity-badge[data-state="thinking"] {
1882
- color: #c4b5fd;
2303
+ color: #a7f3d0;
1883
2304
  }
1884
2305
 
1885
2306
  .mint-status-pill[data-state="thinking"] .mint-status-dot,
@@ -1969,10 +2390,15 @@ input:checked + .slider:before {
1969
2390
  transform 0.22s ease;
1970
2391
  }
1971
2392
 
1972
- .assistant-workspace.layout-chat {
2393
+ .assistant-workspace.layout-chat-wide {
1973
2394
  grid-template-columns: minmax(280px, 0.72fr) minmax(460px, 1.18fr);
1974
2395
  }
1975
2396
 
2397
+ .assistant-workspace.layout-model-wide {
2398
+ grid-template-columns: minmax(420px, 1.18fr) minmax(360px, 0.72fr);
2399
+ }
2400
+
2401
+
1976
2402
  .app-body.sidebar-collapsed .assistant-workspace {
1977
2403
  margin-left: calc(var(--sidebar-collapsed-width) + var(--sidebar-content-gap));
1978
2404
  }
@@ -2036,6 +2462,12 @@ input:checked + .slider:before {
2036
2462
  font-weight: 600;
2037
2463
  }
2038
2464
 
2465
+ .pictures-header-actions {
2466
+ display: grid;
2467
+ gap: 8px;
2468
+ width: 130px;
2469
+ }
2470
+
2039
2471
  .pictures-close-btn {
2040
2472
  height: 34px;
2041
2473
  padding: 0 14px;
@@ -2059,6 +2491,7 @@ input:checked + .slider:before {
2059
2491
  position: relative;
2060
2492
  min-width: 0;
2061
2493
  overflow: hidden;
2494
+ color: inherit;
2062
2495
  border: 1px solid var(--border);
2063
2496
  border-radius: 10px;
2064
2497
  background: var(--surface-bg);
@@ -2086,11 +2519,36 @@ input:checked + .slider:before {
2086
2519
  color: var(--text-soft);
2087
2520
  font-size: 0.76rem;
2088
2521
  line-height: 1.35;
2522
+ }
2523
+
2524
+ .picture-card-meta span {
2089
2525
  white-space: nowrap;
2090
2526
  overflow: hidden;
2091
2527
  text-overflow: ellipsis;
2092
2528
  }
2093
2529
 
2530
+ .picture-folder-btn {
2531
+ width: 100%;
2532
+ height: 34px;
2533
+ border: 1px solid var(--border);
2534
+ border-radius: 8px;
2535
+ background: var(--panel-soft);
2536
+ color: var(--text);
2537
+ font-size: 0.75rem;
2538
+ font-weight: 700;
2539
+ cursor: pointer;
2540
+ }
2541
+
2542
+ .picture-folder-btn:hover {
2543
+ border-color: color-mix(in srgb, var(--accent) 48%, var(--border));
2544
+ background: color-mix(in srgb, var(--accent) 12%, var(--panel-soft));
2545
+ }
2546
+
2547
+ .picture-folder-btn:disabled {
2548
+ opacity: 0.45;
2549
+ cursor: not-allowed;
2550
+ }
2551
+
2094
2552
  .pictures-empty {
2095
2553
  max-width: 360px;
2096
2554
  margin: 18vh auto 0;
@@ -2355,6 +2813,39 @@ input:checked + .slider:before {
2355
2813
  width: 100%;
2356
2814
  }
2357
2815
 
2816
+ .conversation-panel.is-empty {
2817
+ justify-content: center;
2818
+ }
2819
+
2820
+ .assistant-workspace.model-hidden .conversation-panel.is-empty {
2821
+ grid-template-rows: auto minmax(0, 1fr);
2822
+ align-content: center;
2823
+ justify-content: stretch;
2824
+ width: min(840px, calc(100% - 64px));
2825
+ margin: 0 auto;
2826
+ padding-top: 56px;
2827
+ padding-bottom: 0;
2828
+ }
2829
+
2830
+ .conversation-panel.is-empty .chat-container {
2831
+ display: none;
2832
+ }
2833
+
2834
+ .conversation-panel.is-empty .input-area {
2835
+ width: 100%;
2836
+ margin: auto 0;
2837
+ transform: translateY(-7vh);
2838
+ }
2839
+
2840
+ .empty-chat-prompt {
2841
+ margin: 0 0 28px;
2842
+ color: var(--text-main);
2843
+ font-size: clamp(2rem, 4vw, 3.15rem);
2844
+ font-weight: 500;
2845
+ line-height: 1.18;
2846
+ text-align: center;
2847
+ }
2848
+
2358
2849
  .chat-container {
2359
2850
  flex: 1;
2360
2851
  min-height: 0;
@@ -2456,13 +2947,13 @@ input:checked + .slider:before {
2456
2947
  }
2457
2948
 
2458
2949
  #chat-form {
2459
- min-height: 76px;
2950
+ min-height: 88px;
2460
2951
  display: grid;
2461
- grid-template-columns: 36px minmax(0, 1fr) 36px 36px;
2462
- grid-template-rows: minmax(28px, auto) 36px;
2952
+ grid-template-columns: 32px 32px minmax(0, 1fr) 32px 32px;
2953
+ grid-template-rows: auto minmax(48px, auto) 32px;
2463
2954
  align-items: end;
2464
- gap: 8px;
2465
- padding: 12px;
2955
+ gap: 6px;
2956
+ padding: 8px;
2466
2957
  background: var(--input-bg);
2467
2958
  border: 1px solid var(--border);
2468
2959
  border-radius: 14px;
@@ -2477,18 +2968,104 @@ input:checked + .slider:before {
2477
2968
  }
2478
2969
 
2479
2970
  #chat-form:focus-within {
2480
- border-color: rgba(255, 255, 255, 0.16);
2971
+ border-color: transparent;
2972
+ outline: none;
2481
2973
  box-shadow: none;
2482
2974
  transform: none;
2483
2975
  }
2484
2976
 
2485
- #chat-input {
2977
+ .mint-attachment {
2486
2978
  grid-column: 1 / -1;
2487
2979
  grid-row: 1;
2980
+ display: flex;
2981
+ align-items: flex-start;
2982
+ gap: 8px;
2983
+ flex-wrap: wrap;
2984
+ min-height: 0;
2985
+ max-height: 220px;
2986
+ margin-bottom: 6px;
2987
+ overflow: auto;
2988
+ scrollbar-width: thin;
2989
+ }
2990
+
2991
+ .mint-image-attachment {
2992
+ position: relative;
2993
+ display: inline-flex;
2994
+ width: auto;
2995
+ height: auto;
2996
+ max-width: min(360px, 72vw);
2997
+ max-height: 196px;
2998
+ overflow: hidden;
2999
+ border: 1px solid var(--border);
3000
+ border-radius: 8px;
3001
+ background: color-mix(in srgb, var(--surface-strong) 78%, rgba(0, 0, 0, 0.22));
3002
+ }
3003
+
3004
+ .mint-image-preview {
3005
+ width: auto;
3006
+ height: auto;
3007
+ max-width: min(360px, 72vw);
3008
+ max-height: 196px;
3009
+ display: block;
3010
+ }
3011
+
3012
+ .mint-attachment-remove {
3013
+ position: absolute;
3014
+ top: 4px;
3015
+ right: 4px;
3016
+ width: 20px;
3017
+ height: 20px;
3018
+ display: flex;
3019
+ align-items: center;
3020
+ justify-content: center;
3021
+ border: 0;
3022
+ border-radius: 50%;
3023
+ background: #ef4444;
3024
+ color: #ffffff;
3025
+ font-size: 0.95rem;
3026
+ line-height: 1;
3027
+ cursor: pointer;
3028
+ }
3029
+
3030
+ #chat-form:not(:has(.mint-attachment)) {
3031
+ grid-template-rows: minmax(48px, auto) 32px;
3032
+ }
3033
+
3034
+ #chat-form:not(:has(.mint-attachment)) #chat-input {
3035
+ grid-row: 1;
3036
+ }
3037
+
3038
+ #chat-form:not(:has(.mint-attachment)) .chat-tool-menu-wrap,
3039
+ #chat-form:not(:has(.mint-attachment)) #screen-capture-btn,
3040
+ #chat-form:not(:has(.mint-attachment)) .chat-provider-select,
3041
+ #chat-form:not(:has(.mint-attachment)) #mic-btn,
3042
+ #chat-form:not(:has(.mint-attachment)) #send-btn {
3043
+ grid-row: 2;
3044
+ }
3045
+
3046
+ #chat-input {
3047
+ grid-column: 1 / -1;
3048
+ grid-row: 2;
2488
3049
  align-self: start;
2489
- padding: 8px 0;
3050
+ min-height: 48px;
3051
+ max-height: 120px;
3052
+ padding: 12px 0;
2490
3053
  color: var(--text-main);
2491
- font-size: 0.88rem;
3054
+ font-size: 1rem;
3055
+ line-height: 1.5;
3056
+ resize: none;
3057
+ overflow-y: auto;
3058
+ border: 0;
3059
+ outline: none;
3060
+ background: transparent;
3061
+ }
3062
+
3063
+ #chat-input:focus,
3064
+ #chat-input:focus-visible,
3065
+ #chat-input:-moz-focusring {
3066
+ border: 0 !important;
3067
+ outline: none !important;
3068
+ box-shadow: none !important;
2492
3069
  }
2493
3070
 
2494
3071
  #chat-input::placeholder {
@@ -2498,26 +3075,118 @@ input:checked + .slider:before {
2498
3075
 
2499
3076
  #send-btn,
2500
3077
  #mic-btn,
2501
- #vision-btn {
2502
- width: 36px;
2503
- height: 36px;
2504
- border-radius: 18px;
3078
+ #chat-tool-btn,
3079
+ #screen-capture-btn {
3080
+ width: 32px;
3081
+ height: 32px;
3082
+ border-radius: 16px;
2505
3083
  background: var(--surface-strong);
2506
3084
  color: var(--text-soft);
2507
3085
  }
2508
3086
 
2509
- #vision-btn {
3087
+ .chat-tool-menu-wrap {
2510
3088
  grid-column: 1;
2511
- grid-row: 2;
3089
+ grid-row: 3;
3090
+ position: relative;
3091
+ width: 32px;
3092
+ height: 32px;
2512
3093
  }
2513
3094
 
2514
- .chat-provider-select {
3095
+ #chat-tool-btn {
3096
+ display: flex;
3097
+ align-items: center;
3098
+ justify-content: center;
3099
+ border: 0;
3100
+ font-size: 1.35rem;
3101
+ line-height: 1;
3102
+ cursor: pointer;
3103
+ }
3104
+
3105
+ #screen-capture-btn {
2515
3106
  grid-column: 2;
2516
- grid-row: 2;
3107
+ grid-row: 3;
3108
+ border: 0;
3109
+ cursor: pointer;
3110
+ }
3111
+
3112
+ .screen-capture-eye {
3113
+ position: relative;
3114
+ width: 18px;
3115
+ height: 11px;
3116
+ border: 1.6px solid currentColor;
3117
+ border-radius: 50% / 58%;
3118
+ background: transparent;
3119
+ }
3120
+
3121
+ .screen-capture-eye::after {
3122
+ content: '';
3123
+ position: absolute;
3124
+ width: 4px;
3125
+ height: 4px;
3126
+ left: 50%;
3127
+ top: 50%;
3128
+ border: 1.6px solid currentColor;
3129
+ border-radius: 50%;
3130
+ background: transparent;
3131
+ transform: translate(-50%, -50%);
3132
+ }
3133
+
3134
+ #chat-tool-btn[aria-expanded='true'] {
3135
+ background: var(--panel-raised);
3136
+ color: var(--text-main);
3137
+ }
3138
+
3139
+ .chat-tool-menu {
3140
+ position: absolute;
3141
+ left: 0;
3142
+ bottom: calc(100% + 10px);
3143
+ z-index: 20;
3144
+ width: min(260px, calc(100vw - 40px));
3145
+ padding: 8px;
3146
+ background: color-mix(in srgb, var(--panel-raised) 92%, #000 8%);
3147
+ border: 1px solid var(--border);
3148
+ border-radius: 16px;
3149
+ box-shadow: 0 18px 50px rgba(0, 0, 0, 0.28);
3150
+ backdrop-filter: var(--glass-blur);
3151
+ -webkit-backdrop-filter: var(--glass-blur);
3152
+ }
3153
+
3154
+ .chat-tool-menu button {
3155
+ width: 100%;
3156
+ min-height: 42px;
3157
+ display: grid;
3158
+ grid-template-columns: 28px minmax(0, 1fr);
3159
+ align-items: center;
3160
+ gap: 8px;
3161
+ padding: 0 10px;
3162
+ border: 0;
3163
+ border-radius: 10px;
3164
+ background: transparent;
3165
+ color: var(--text-main);
3166
+ font: inherit;
3167
+ font-size: 0.92rem;
3168
+ text-align: left;
3169
+ cursor: pointer;
3170
+ }
3171
+
3172
+ .chat-tool-menu button:hover {
3173
+ background: var(--surface-strong);
3174
+ }
3175
+
3176
+ .chat-tool-menu button span:first-child {
3177
+ display: flex;
3178
+ justify-content: center;
3179
+ color: var(--text-soft);
3180
+ font-size: 1rem;
3181
+ }
3182
+
3183
+ .chat-provider-select {
3184
+ grid-column: 3;
3185
+ grid-row: 3;
2517
3186
  min-width: 0;
2518
3187
  width: fit-content;
2519
3188
  max-width: 100%;
2520
- height: 36px;
3189
+ height: 32px;
2521
3190
  padding: 0 24px 0 6px;
2522
3191
  background: transparent;
2523
3192
  border: 0;
@@ -2544,14 +3213,65 @@ input:checked + .slider:before {
2544
3213
  opacity: 0.65;
2545
3214
  }
2546
3215
 
3216
+ .chat-provider-select option {
3217
+ background: var(--input-bg, #1a1a1a);
3218
+ color: var(--text-main);
3219
+ }
3220
+
3221
+ .chat-provider-select option:checked {
3222
+ background: linear-gradient(var(--accent), var(--accent));
3223
+ color: #ffffff;
3224
+ }
3225
+
3226
+ .voice-mode-bar {
3227
+ min-height: 30px;
3228
+ display: flex;
3229
+ align-items: center;
3230
+ gap: 8px;
3231
+ padding: 4px 12px;
3232
+ background: color-mix(in srgb, var(--accent) 10%, var(--input-bg));
3233
+ border: 1px solid color-mix(in srgb, var(--accent) 28%, var(--border));
3234
+ border-bottom: 0;
3235
+ color: var(--text-main);
3236
+ font-size: 0.75rem;
3237
+ }
3238
+
3239
+ .voice-mode-dot {
3240
+ width: 8px;
3241
+ height: 8px;
3242
+ flex: 0 0 auto;
3243
+ border-radius: 999px;
3244
+ background: var(--accent);
3245
+ box-shadow: 0 0 0 4px color-mix(in srgb, var(--accent) 16%, transparent);
3246
+ }
3247
+
3248
+ .voice-mode-bar[data-state="listening"] .voice-mode-dot,
3249
+ .voice-mode-bar[data-state="speaking"] .voice-mode-dot {
3250
+ animation: pulse-mic 1.2s infinite;
3251
+ }
3252
+
3253
+ .voice-mode-transcript {
3254
+ min-width: 0;
3255
+ overflow: hidden;
3256
+ color: var(--text-muted);
3257
+ text-overflow: ellipsis;
3258
+ white-space: nowrap;
3259
+ }
3260
+
2547
3261
  #mic-btn {
2548
- grid-column: 3;
2549
- grid-row: 2;
3262
+ grid-column: 4;
3263
+ grid-row: 3;
3264
+ }
3265
+
3266
+ #mic-btn.voice-mode-active {
3267
+ background: color-mix(in srgb, var(--accent) 18%, var(--surface-strong));
3268
+ border-color: color-mix(in srgb, var(--accent) 45%, var(--border));
3269
+ color: var(--accent-hover);
2550
3270
  }
2551
3271
 
2552
3272
  #send-btn {
2553
- grid-column: 4;
2554
- grid-row: 2;
3273
+ grid-column: 5;
3274
+ grid-row: 3;
2555
3275
  }
2556
3276
 
2557
3277
  #send-btn {
@@ -2562,7 +3282,8 @@ input:checked + .slider:before {
2562
3282
 
2563
3283
  #send-btn:hover,
2564
3284
  #mic-btn:hover,
2565
- #vision-btn:hover {
3285
+ #chat-tool-btn:hover,
3286
+ #screen-capture-btn:hover {
2566
3287
  background: var(--panel-raised);
2567
3288
  transform: none;
2568
3289
  }
@@ -2571,7 +3292,7 @@ input:checked + .slider:before {
2571
3292
  background: var(--accent-hover);
2572
3293
  }
2573
3294
 
2574
- #vision-btn {
3295
+ #chat-tool-btn {
2575
3296
  border: 1px solid rgba(255, 255, 255, 0.08);
2576
3297
  }
2577
3298
 
@@ -2602,6 +3323,22 @@ input:checked + .slider:before {
2602
3323
  color: #ff8a8a;
2603
3324
  }
2604
3325
 
3326
+ .assistant-workspace.layout-horizontal {
3327
+ grid-template-columns: 1fr;
3328
+ grid-template-rows: minmax(0, 1.1fr) minmax(0, 0.9fr);
3329
+ gap: 12px;
3330
+ }
3331
+
3332
+ .assistant-workspace.layout-horizontal .model-stage {
3333
+ min-width: 0;
3334
+ max-width: 100%;
3335
+ }
3336
+
3337
+ .assistant-workspace.layout-horizontal .conversation-panel {
3338
+ min-width: 0;
3339
+ max-width: 100%;
3340
+ }
3341
+
2605
3342
  @media (max-width: 760px) {
2606
3343
  .drag-region {
2607
3344
  grid-template-columns: auto 1fr auto;
@@ -2659,7 +3396,37 @@ input:checked + .slider:before {
2659
3396
  }
2660
3397
 
2661
3398
  .workspace-sidebar {
2662
- display: none;
3399
+ display: flex;
3400
+ position: fixed;
3401
+ top: 0;
3402
+ left: 0;
3403
+ bottom: 0;
3404
+ width: 260px !important;
3405
+ height: 100%;
3406
+ z-index: 9999;
3407
+ transform: translateX(-100%);
3408
+ transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
3409
+ background: var(--chrome-bg);
3410
+ padding: 20px 10px 12px 14px !important;
3411
+ }
3412
+ .app-body.mobile-sidebar-open .workspace-sidebar {
3413
+ transform: translateX(0) !important;
3414
+ box-shadow: 10px 0 30px rgba(0, 0, 0, 0.6) !important;
3415
+ }
3416
+ .app-body.sidebar-collapsed .workspace-sidebar {
3417
+ width: 260px !important;
3418
+ padding: 20px 10px 12px 14px !important;
3419
+ }
3420
+ .app-body.sidebar-collapsed .workspace-sidebar button > span:not([aria-hidden="true"]) {
3421
+ display: inline !important;
3422
+ opacity: 1 !important;
3423
+ }
3424
+ .app-body.sidebar-collapsed .workspace-sidebar .sidebar-brand-name {
3425
+ display: inline !important;
3426
+ opacity: 1 !important;
3427
+ }
3428
+ .app-body.sidebar-collapsed .workspace-sidebar .lan-info-box {
3429
+ display: block !important;
2663
3430
  }
2664
3431
 
2665
3432
  .model-stage {
@@ -2679,3 +3446,132 @@ input:checked + .slider:before {
2679
3446
  max-height: none;
2680
3447
  }
2681
3448
  }
3449
+
3450
+ /* Chat Bold Highlight styling */
3451
+ .chat-bold-highlight {
3452
+ color: #38bdf8; /* Soft blue (sky-400) for default/dark theme */
3453
+ font-weight: 600;
3454
+ }
3455
+
3456
+ [data-theme="light"] .chat-bold-highlight {
3457
+ color: #0284c7; /* Sky-600 for light theme */
3458
+ }
3459
+
3460
+ [data-theme="midnight"] .chat-bold-highlight {
3461
+ color: #38bdf8; /* Sky-400 for midnight theme */
3462
+ }
3463
+
3464
+ /* Web-Native Chat Header */
3465
+ .chat-header {
3466
+ display: flex;
3467
+ align-items: center;
3468
+ gap: 12px;
3469
+ padding: 10px 18px;
3470
+ background: var(--chrome-bg);
3471
+ backdrop-filter: var(--glass-blur);
3472
+ -webkit-backdrop-filter: var(--glass-blur);
3473
+ border-bottom: 1px solid var(--border);
3474
+ position: sticky;
3475
+ top: 0;
3476
+ z-index: 50;
3477
+ height: 52px;
3478
+ flex-shrink: 0;
3479
+ }
3480
+
3481
+ .mobile-menu-btn {
3482
+ display: none; /* Hidden on desktop */
3483
+ background: transparent;
3484
+ border: none;
3485
+ color: var(--text-main);
3486
+ font-size: 1.35rem;
3487
+ cursor: pointer;
3488
+ padding: 4px 8px;
3489
+ border-radius: 6px;
3490
+ align-items: center;
3491
+ justify-content: center;
3492
+ transition: background 0.2s;
3493
+ }
3494
+
3495
+ .mobile-menu-btn:hover {
3496
+ background: rgba(255, 255, 255, 0.08);
3497
+ }
3498
+
3499
+ .chat-header-title {
3500
+ display: flex;
3501
+ align-items: center;
3502
+ gap: 8px;
3503
+ font-weight: 600;
3504
+ color: var(--text-main);
3505
+ font-size: 0.92rem;
3506
+ }
3507
+
3508
+ .chat-header-logo {
3509
+ width: 20px;
3510
+ height: 20px;
3511
+ object-fit: contain;
3512
+ }
3513
+
3514
+ .chat-header-status {
3515
+ display: flex;
3516
+ align-items: center;
3517
+ gap: 6px;
3518
+ font-size: 0.74rem;
3519
+ color: var(--text-muted);
3520
+ }
3521
+
3522
+ .chat-header-status .status-dot {
3523
+ width: 7px;
3524
+ height: 7px;
3525
+ border-radius: 50%;
3526
+ box-shadow: 0 0 8px currentColor;
3527
+ }
3528
+
3529
+ /* Animations and Recording States */
3530
+ #mic-btn.is-recording {
3531
+ color: #ef4444 !important;
3532
+ background: rgba(239, 68, 68, 0.15) !important;
3533
+ box-shadow: 0 0 12px rgba(239, 68, 68, 0.4) !important;
3534
+ animation: pulseRed 1.2s infinite alternate ease-in-out;
3535
+ }
3536
+
3537
+ @keyframes pulseRed {
3538
+ from {
3539
+ transform: scale(1);
3540
+ box-shadow: 0 0 8px rgba(239, 68, 68, 0.3);
3541
+ }
3542
+ to {
3543
+ transform: scale(1.1);
3544
+ box-shadow: 0 0 16px rgba(239, 68, 68, 0.6);
3545
+ }
3546
+ }
3547
+
3548
+ @keyframes pulseGlow {
3549
+ 0% {
3550
+ box-shadow: 0 0 10px rgba(143, 108, 245, 0.2), inset 0 0 10px rgba(143, 108, 245, 0.1);
3551
+ border-color: rgba(143, 108, 245, 0.4);
3552
+ }
3553
+ 100% {
3554
+ box-shadow: 0 0 25px rgba(143, 108, 245, 0.6), inset 0 0 20px rgba(143, 108, 245, 0.3);
3555
+ border-color: rgba(143, 108, 245, 0.9);
3556
+ }
3557
+ }
3558
+
3559
+ .drag-drop-overlay {
3560
+ animation: pulseGlow 1.2s infinite alternate ease-in-out;
3561
+ }
3562
+
3563
+ /* TTS Speaking Badge animation */
3564
+ .tts-btn {
3565
+ border-radius: 4px;
3566
+ }
3567
+ .tts-btn:hover {
3568
+ background: rgba(255, 255, 255, 0.08);
3569
+ opacity: 1 !important;
3570
+ }
3571
+
3572
+ /* Mobile Media Query Enhancements */
3573
+ @media (max-width: 760px) {
3574
+ .mobile-menu-btn {
3575
+ display: flex;
3576
+ }
3577
+ }