@pheem49/mint 1.14.0 → 1.16.0

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 (925) hide show
  1. package/Cargo.lock +1258 -35
  2. package/Cargo.toml +5 -2
  3. package/LICENSE +21 -654
  4. package/README.md +93 -756
  5. package/Release_Note.md +53 -446
  6. package/apps/mint-companion/src-tauri/Cargo.toml +20 -0
  7. package/apps/mint-companion/src-tauri/build.rs +3 -0
  8. package/apps/mint-companion/src-tauri/src/main.rs +468 -0
  9. package/apps/mint-companion/tsconfig.json +20 -0
  10. package/apps/mint-companion/vite.config.ts +3 -0
  11. package/components.json +19 -0
  12. package/crates/mint-cli/Cargo.toml +9 -1
  13. package/crates/mint-cli/src/agent/approval_prompts.rs +16 -3
  14. package/crates/mint-cli/src/agent/live_status.rs +545 -148
  15. package/crates/mint-cli/src/agent/markdown_render.rs +601 -61
  16. package/crates/mint-cli/src/agent.rs +723 -258
  17. package/crates/mint-cli/src/commands/agent.rs +83 -74
  18. package/crates/mint-cli/src/commands/eval.rs +9 -5
  19. package/crates/mint-cli/src/commands/git.rs +204 -0
  20. package/crates/mint-cli/src/commands/integrations.rs +35 -0
  21. package/crates/mint-cli/src/commands/knowledge.rs +13 -32
  22. package/crates/mint-cli/src/commands/mod.rs +81 -2
  23. package/crates/mint-cli/src/commands/tailnet_web.rs +235 -0
  24. package/crates/mint-cli/src/image.rs +32 -11
  25. package/crates/mint-cli/src/interactive/chat_tui.rs +7853 -0
  26. package/crates/mint-cli/src/interactive/command_ui.rs +477 -0
  27. package/crates/mint-cli/src/interactive/format.rs +8 -0
  28. package/crates/mint-cli/src/interactive/input_box.rs +94 -8
  29. package/crates/mint-cli/src/interactive/picker.rs +180 -37
  30. package/crates/mint-cli/src/interactive/resume_picker.rs +686 -0
  31. package/crates/mint-cli/src/interactive/slash_commands.rs +1071 -501
  32. package/crates/mint-cli/src/interactive/thought_viewer.rs +286 -0
  33. package/crates/mint-cli/src/interactive/tool_activity.rs +328 -0
  34. package/crates/mint-cli/src/interactive.rs +454 -166
  35. package/crates/mint-cli/src/main.rs +93 -26
  36. package/crates/mint-cli/src/markdown.rs +12 -5
  37. package/crates/mint-cli/src/mcp.rs +5 -0
  38. package/crates/mint-cli/src/mod_host.rs +6 -0
  39. package/crates/mint-cli/src/mods_cli.rs +62 -0
  40. package/crates/mint-cli/src/mods_ui.rs +187 -0
  41. package/crates/mint-cli/src/onboard.rs +37 -61
  42. package/crates/mint-cli/src/plugins_cli.rs +8 -5
  43. package/crates/mint-cli/src/setup.rs +10 -8
  44. package/crates/mint-cli/src/terminal_theme.rs +189 -0
  45. package/crates/mint-cli/src/updater.rs +112 -23
  46. package/crates/mint-cli/tests/library_intake.rs +77 -0
  47. package/crates/mint-cli/tests/mods_testing.rs +133 -0
  48. package/crates/mint-companion-protocol/Cargo.toml +10 -0
  49. package/crates/mint-companion-protocol/src/lib.rs +163 -0
  50. package/crates/mint-core/Cargo.toml +6 -3
  51. package/crates/mint-core/build.rs +26 -0
  52. package/crates/mint-core/src/agent/agent_loop.rs +1 -0
  53. package/crates/mint-core/src/agent/chat.rs +1003 -209
  54. package/crates/mint-core/src/agent/code_tools.rs +98 -2
  55. package/crates/mint-core/src/agent/memory/sources.rs +240 -0
  56. package/crates/mint-core/src/agent/memory.rs +805 -33
  57. package/crates/mint-core/src/agent/skill_inventory.rs +325 -0
  58. package/crates/mint-core/src/agent/skills.rs +437 -90
  59. package/crates/mint-core/src/agent.rs +1 -0
  60. package/crates/mint-core/src/api_server/routes/background_jobs.rs +310 -0
  61. package/crates/mint-core/src/api_server/routes/chat.rs +233 -190
  62. package/crates/mint-core/src/api_server/routes/html_preview.rs +77 -0
  63. package/crates/mint-core/src/api_server/routes/library.rs +97 -0
  64. package/crates/mint-core/src/api_server/routes/linked_folders.rs +118 -3
  65. package/crates/mint-core/src/api_server/routes/media_gen.rs +10 -57
  66. package/crates/mint-core/src/api_server/routes/misc.rs +114 -121
  67. package/crates/mint-core/src/api_server/routes/mod.rs +6 -0
  68. package/crates/mint-core/src/api_server/routes/mods.rs +31 -0
  69. package/crates/mint-core/src/api_server/routes/sessions.rs +85 -0
  70. package/crates/mint-core/src/api_server/routes/skills_subagents.rs +12 -42
  71. package/crates/mint-core/src/api_server/routes/slash.rs +50 -1
  72. package/crates/mint-core/src/api_server/routes/sources.rs +101 -0
  73. package/crates/mint-core/src/api_server.rs +140 -12
  74. package/crates/mint-core/src/avatar_bridge.rs +13 -2
  75. package/crates/mint-core/src/browser/cdp.rs +74 -83
  76. package/crates/mint-core/src/browser/evidence.rs +260 -0
  77. package/crates/mint-core/src/browser/input.rs +1 -1
  78. package/crates/mint-core/src/browser/interact.rs +98 -124
  79. package/crates/mint-core/src/browser/lifecycle.rs +75 -4
  80. package/crates/mint-core/src/browser/mod.rs +16 -2
  81. package/crates/mint-core/src/browser/navigate.rs +27 -19
  82. package/crates/mint-core/src/browser/observe.js +40 -0
  83. package/crates/mint-core/src/browser/session.rs +1610 -0
  84. package/crates/mint-core/src/companion.rs +716 -0
  85. package/crates/mint-core/src/cron/scheduler.rs +34 -2
  86. package/crates/mint-core/src/git/branches.rs +348 -0
  87. package/crates/mint-core/src/git/checkpoint.rs +40 -0
  88. package/crates/mint-core/src/git/diff.rs +206 -0
  89. package/crates/mint-core/src/git/mod.rs +10 -2
  90. package/crates/mint-core/src/integrations/channels.rs +88 -345
  91. package/crates/mint-core/src/integrations/mcp.rs +397 -50
  92. package/crates/mint-core/src/integrations/mcp_calls.rs +823 -0
  93. package/crates/mint-core/src/integrations/mcp_catalog.rs +267 -0
  94. package/crates/mint-core/src/integrations/mcp_device.rs +319 -0
  95. package/crates/mint-core/src/integrations/mcp_result.rs +356 -0
  96. package/crates/mint-core/src/integrations/webhooks.rs +539 -0
  97. package/crates/mint-core/src/integrations.rs +2 -0
  98. package/crates/mint-core/src/lib.rs +107 -40
  99. package/crates/mint-core/src/live_sync.rs +28 -9
  100. package/crates/mint-core/src/media/auto_shorts.rs +1 -0
  101. package/crates/mint-core/src/media/gemini_live.rs +145 -14
  102. package/crates/mint-core/src/media/image_models.rs +3 -27
  103. package/crates/mint-core/src/media/image_workflow.rs +216 -0
  104. package/crates/mint-core/src/media/library/intake.rs +144 -0
  105. package/crates/mint-core/src/media/library/migration.rs +56 -0
  106. package/crates/mint-core/src/media/library/removal.rs +55 -0
  107. package/crates/mint-core/src/media/library/tests.rs +730 -0
  108. package/crates/mint-core/src/media/library/thumbnails.rs +72 -0
  109. package/crates/mint-core/src/media/library.rs +545 -0
  110. package/crates/mint-core/src/media/mic_transcribe.rs +1 -0
  111. package/crates/mint-core/src/media/model_catalog.rs +375 -0
  112. package/crates/mint-core/src/media/pictures.rs +79 -222
  113. package/crates/mint-core/src/media/subtitle.rs +1 -0
  114. package/crates/mint-core/src/media/video_models.rs +3 -22
  115. package/crates/mint-core/src/media.rs +3 -0
  116. package/crates/mint-core/src/mods/manager.rs +1124 -0
  117. package/crates/mint-core/src/mods/mod.rs +569 -0
  118. package/crates/mint-core/src/mods/operations.rs +204 -0
  119. package/crates/mint-core/src/mods/session.rs +146 -0
  120. package/crates/mint-core/src/mods/slash.rs +59 -0
  121. package/crates/mint-core/src/mods/telemetry.rs +306 -0
  122. package/crates/mint-core/src/orchestration/approvals.rs +344 -0
  123. package/crates/mint-core/src/orchestration/context_render.rs +105 -0
  124. package/crates/mint-core/src/orchestration/mcp_review.rs +153 -0
  125. package/crates/mint-core/src/orchestration/memory_skill.rs +110 -33
  126. package/crates/mint-core/src/orchestration/mod.rs +3129 -481
  127. package/crates/mint-core/src/orchestration/mod_authoring_regressions.rs +209 -0
  128. package/crates/mint-core/src/orchestration/progress_clock.rs +80 -0
  129. package/crates/mint-core/src/orchestration/repeated_failures.rs +116 -0
  130. package/crates/mint-core/src/orchestration/review_regressions.rs +449 -0
  131. package/crates/mint-core/src/orchestration/run_control.rs +196 -0
  132. package/crates/mint-core/src/orchestration/tools/browser.rs +16 -139
  133. package/crates/mint-core/src/orchestration/tools/files.rs +161 -14
  134. package/crates/mint-core/src/orchestration/tools/media.rs +37 -41
  135. package/crates/mint-core/src/orchestration/tools/misc.rs +5 -3
  136. package/crates/mint-core/src/orchestration/tools/mod.rs +2 -0
  137. package/crates/mint-core/src/orchestration/tools/mods.rs +161 -0
  138. package/crates/mint-core/src/orchestration/tools/plugins_mcp.rs +303 -71
  139. package/crates/mint-core/src/orchestration/tools/shell.rs +95 -2
  140. package/crates/mint-core/src/orchestration/tools/web.rs +1 -1
  141. package/crates/mint-core/src/orchestration/workspace_helpers.rs +4 -1
  142. package/crates/mint-core/src/prompts/agent.rs +75 -31
  143. package/crates/mint-core/src/prompts/chat.rs +1 -1
  144. package/crates/mint-core/src/prompts/persona.rs +1 -1
  145. package/crates/mint-core/src/prompts/tool_catalog.rs +121 -27
  146. package/crates/mint-core/src/search/knowledge.rs +7 -1
  147. package/crates/mint-core/src/search/linked_folders/index.rs +896 -0
  148. package/crates/mint-core/src/search/linked_folders.rs +473 -131
  149. package/crates/mint-core/src/slash/catalog.rs +1 -1
  150. package/crates/mint-core/src/slash/mod.rs +644 -33
  151. package/crates/mint-core/src/slash/model_fetcher.rs +12 -3
  152. package/crates/mint-core/src/slash/models.rs +66 -10
  153. package/crates/mint-core/src/slash/mods.rs +155 -0
  154. package/crates/mint-core/src/system/bg_shell.rs +1129 -95
  155. package/crates/mint-core/src/system/config.rs +235 -10
  156. package/crates/mint-core/src/system/html_preview.rs +398 -0
  157. package/crates/mint-core/src/system/mint_web.rs +164 -0
  158. package/crates/mint-core/src/system/release_notes.rs +18 -0
  159. package/crates/mint-core/src/system/shell.rs +21 -6
  160. package/crates/mint-core/src/system/workspace.rs +292 -0
  161. package/crates/mint-core/src/system/workspace_history.rs +604 -0
  162. package/crates/mint-core/src/system.rs +5 -0
  163. package/crates/mint-core/tests/background_retention.rs +34 -0
  164. package/crates/mint-core/tests/background_shutdown.rs +24 -0
  165. package/crates/mint-core/tests/library_http.rs +209 -0
  166. package/crates/mint-core/tests/mcp_contract.rs +283 -0
  167. package/crates/mint-core/tests/mcp_stdio.rs +11 -10
  168. package/crates/mint-core/tests/media_model_catalog_http.rs +403 -0
  169. package/crates/mint-core/tests/memory_persistence.rs +39 -0
  170. package/crates/mint-core/tests/mods_http.rs +215 -0
  171. package/crates/mint-core/tests/terminal_shutdown.rs +109 -0
  172. package/crates/mint-mod-runtime/Cargo.toml +18 -0
  173. package/crates/mint-mod-runtime/src/lib.rs +507 -0
  174. package/crates/mint-mod-runtime/src/sdk.js +56 -0
  175. package/crates/mint-mod-runtime/src/test_sdk.js +32 -0
  176. package/crates/mint-mod-runtime/src/testing.rs +94 -0
  177. package/crates/mint-mod-runtime/tests/runtime.rs +156 -0
  178. package/docs/mods/AUTHORING.md +61 -0
  179. package/docs/mods/README.md +139 -0
  180. package/docs/mods/TESTING.md +56 -0
  181. package/docs/mods/mint-mods.d.ts +66 -0
  182. package/examples/device-mcp/README.md +22 -0
  183. package/examples/device-mcp/contract.md +49 -0
  184. package/examples/device-mcp/mock-device.mjs +66 -0
  185. package/examples/device-mcp/server.mjs +48 -0
  186. package/examples/device-mcp/server.test.mjs +78 -0
  187. package/examples/mods/task-checklist/README.md +1 -0
  188. package/examples/mods/task-checklist/main.ts +17 -0
  189. package/examples/mods/task-checklist/manifest.json +1 -0
  190. package/examples/mods/task-checklist/tests/checklist.test.ts +15 -0
  191. package/examples/mods/token-meter/README.md +1 -0
  192. package/examples/mods/token-meter/main.ts +8 -0
  193. package/examples/mods/token-meter/manifest.json +1 -0
  194. package/examples/mods/tool-guard/README.md +1 -0
  195. package/examples/mods/tool-guard/main.ts +9 -0
  196. package/examples/mods/tool-guard/manifest.json +1 -0
  197. package/out/web/assets/CliSessionsView-CtzUJpK_.css +1 -0
  198. package/out/web/assets/CliSessionsView-D7hw0Mgj.js +1 -0
  199. package/out/web/assets/CodeReviewPage-C7bEOJfd.js +4 -0
  200. package/out/web/assets/CodeReviewPage-Dte9uLiL.css +1 -0
  201. package/out/web/assets/CommandPalette-0RrF-AOT.js +1 -0
  202. package/out/web/assets/ImageStudioPanel-CdxkAf_r.js +1 -0
  203. package/out/web/assets/ImageStudioPanel-D0lnhQV5.css +1 -0
  204. package/out/web/assets/LibraryPage--Qfisp6D.js +2 -0
  205. package/out/web/assets/LibraryPage-DAxUTAg7.css +1 -0
  206. package/out/web/assets/LinkedFoldersView-2nfZbDgN.js +1 -0
  207. package/out/web/assets/McpRegistryPicker-h9uS8_wT.js +1 -0
  208. package/out/web/assets/McpServersView-slfQJzNB.js +1 -0
  209. package/out/web/assets/MintDashboard-BSR5XpXh.js +25 -0
  210. package/out/web/assets/MintDashboard-CWUcCGhd.css +1 -0
  211. package/out/web/assets/PluginsView-l7LSm503.js +1 -0
  212. package/out/web/assets/ScheduledTasksView-CttmLbq1.js +1 -0
  213. package/out/web/assets/SettingsWindow-BCMLYvEV.js +4 -0
  214. package/out/web/assets/SettingsWindow-DcMVmU9u.css +1 -0
  215. package/out/web/assets/SkillsView-rNs1qr_U.js +2 -0
  216. package/out/web/assets/ToolSurfacePage-B9DzEPWN.js +37 -0
  217. package/out/web/assets/ToolSurfacePage-CTfgggF2.css +1 -0
  218. package/out/web/assets/VeoStudioPanel-DOj7_WR3.css +1 -0
  219. package/out/web/assets/VeoStudioPanel-DiJs_Cg2.js +4 -0
  220. package/out/web/assets/WorkspacePanel-CbJ1PFoZ.js +1 -0
  221. package/out/web/assets/WorkspaceSelector-B2xIp04D.js +1 -0
  222. package/out/web/assets/WorkspaceSelector-Ca8uJOsS.css +1 -0
  223. package/out/web/assets/{abnfDiagram-VCTEODGH-DAOBA7ZG.js → abnfDiagram-VCTEODGH-CD0CjoGl.js} +1 -1
  224. package/out/web/assets/{architecture-7GRP2DOG-CgSwQOPQ.js → architecture-7GRP2DOG-RKV83OeZ.js} +1 -1
  225. package/out/web/assets/{architectureDiagram-5GKGNRK7-CYp3yupP.js → architectureDiagram-5GKGNRK7-nN_HAFct.js} +1 -1
  226. package/out/web/assets/{blockDiagram-NRAW4CY4-CyWybDWr.js → blockDiagram-NRAW4CY4-BrrqzHW5.js} +1 -1
  227. package/out/web/assets/{c4Diagram-UCG6FXSJ-BvY3U709.js → c4Diagram-UCG6FXSJ-DTdV8_zE.js} +1 -1
  228. package/out/web/assets/{chunk-75Z2AOVW-TLXCoZYv.js → chunk-75Z2AOVW-_M0z5olV.js} +1 -1
  229. package/out/web/assets/chunk-CKBBP62Z-BpQEgeHF.js +2 -0
  230. package/out/web/assets/{chunk-CLGD4ZFX-xjsKtNS7.js → chunk-CLGD4ZFX-D54yGvGS.js} +1 -1
  231. package/out/web/assets/chunk-DSNCTWBM-C-gvT2ru.js +2 -0
  232. package/out/web/assets/chunk-DU6HZSFF-CnFngIhW.js +128 -0
  233. package/out/web/assets/{chunk-F27PBJKO-BFpgF55A.js → chunk-F27PBJKO-BqtWrnEO.js} +1 -1
  234. package/out/web/assets/{chunk-G27WJ6UU-DfF7qW-C.js → chunk-G27WJ6UU-Ckoq5mi2.js} +1 -1
  235. package/out/web/assets/{chunk-GMAD6QVW-C-558kh_.js → chunk-GMAD6QVW-BuhEcgHq.js} +1 -1
  236. package/out/web/assets/{chunk-JQ64N6SF-wJmeGKAw.js → chunk-JQ64N6SF-CF8T7GiZ.js} +1 -1
  237. package/out/web/assets/{chunk-LCL6LL3I-C1wHD8Ie.js → chunk-LCL6LL3I-BhXV9zyH.js} +1 -1
  238. package/out/web/assets/{chunk-OBVCFTLP-BsRTPBqs.js → chunk-OBVCFTLP-CRIkunUB.js} +1 -1
  239. package/out/web/assets/{chunk-P2QGCYS3-HZIiM7Ni.js → chunk-P2QGCYS3-UFEU6BxZ.js} +1 -1
  240. package/out/web/assets/{chunk-POPQ4Y6H-Dk9wvVb0.js → chunk-POPQ4Y6H-CQcrNbjr.js} +1 -1
  241. package/out/web/assets/{chunk-PWAF6VOD-BmjYLNbq.js → chunk-PWAF6VOD-Cc2uVDsG.js} +1 -1
  242. package/out/web/assets/{chunk-R7TYR2AO-CaHIf-lK.js → chunk-R7TYR2AO-DiCxzdAY.js} +1 -1
  243. package/out/web/assets/{chunk-RHFEMEQ7-_T561hOU.js → chunk-RHFEMEQ7-b7hnPmrR.js} +1 -1
  244. package/out/web/assets/{chunk-SVP7TREG-CM-GGYoY.js → chunk-SVP7TREG-Bu_yYb-V.js} +1 -1
  245. package/out/web/assets/{chunk-TEH6E4GO-K2A8Vg2C.js → chunk-TEH6E4GO-G4Cdlyrt.js} +1 -1
  246. package/out/web/assets/classDiagram-DTDB5LWJ-RnC2mYO4.js +1 -0
  247. package/out/web/assets/classDiagram-v2-JRS7N3AN-RnC2mYO4.js +1 -0
  248. package/out/web/assets/config-CnvCChUM.js +2 -0
  249. package/out/web/assets/config-DM6oIVO3.css +1 -0
  250. package/out/web/assets/core-DsKkQ7ig.js +1 -0
  251. package/out/web/assets/{cynefin-OW5HDTMX-ClzaB6cc.js → cynefin-OW5HDTMX-CnzQfOGp.js} +1 -1
  252. package/out/web/assets/{cynefinDiagram-5FMLGOSQ-D_JzZBzf.js → cynefinDiagram-5FMLGOSQ-DVtQnfpm.js} +1 -1
  253. package/out/web/assets/{dagre-3AP2YEHR-BDuUeMHj.js → dagre-3AP2YEHR-DG76_k5_.js} +1 -1
  254. package/out/web/assets/{diagram-S7CK7UJ4-DgtcfE8P.js → diagram-S7CK7UJ4-CaouUoze.js} +1 -1
  255. package/out/web/assets/{diagram-UQ7AKVKN-DTLoEYti.js → diagram-UQ7AKVKN-B4bEc26B.js} +1 -1
  256. package/out/web/assets/{diagram-VSXAHHWV-ChGl9pXz.js → diagram-VSXAHHWV-BJ86Ov2Y.js} +1 -1
  257. package/out/web/assets/{diagram-VX7I27RA-Be8DWz0S.js → diagram-VX7I27RA-7hH5IPYf.js} +1 -1
  258. package/out/web/assets/{diagram-Z3DM3KII-BMXjRTOF.js → diagram-Z3DM3KII-CCM4clo8.js} +1 -1
  259. package/out/web/assets/dist-js-BkYNznHX.js +1 -0
  260. package/out/web/assets/{ebnfDiagram-PWID7BFC-8Q9pl1CJ.js → ebnfDiagram-PWID7BFC-Da7WAM3k.js} +1 -1
  261. package/out/web/assets/{erDiagram-SSCWMZ5O-DjH8Lnkn.js → erDiagram-SSCWMZ5O-CzzmnZWT.js} +1 -1
  262. package/out/web/assets/event-Cdt7Byyj.js +1 -0
  263. package/out/web/assets/{eventmodeling-NTZA5JFV-BKUH_DOp.js → eventmodeling-NTZA5JFV-xcfsA0XD.js} +1 -1
  264. package/out/web/assets/fira-code-latin-600-normal-BmSSHshu.woff +0 -0
  265. package/out/web/assets/fira-code-latin-600-normal-CvYZpPHg.woff2 +0 -0
  266. package/out/web/assets/fira-code-symbols2-600-normal-Dvq6IQE5.woff +0 -0
  267. package/out/web/assets/flowDiagram-A5DVABFB-JdtH1673.js +1 -0
  268. package/out/web/assets/{ganttDiagram-EL5Y4UJY-D7fZKJNM.js → ganttDiagram-EL5Y4UJY-B3ClFGmL.js} +1 -1
  269. package/out/web/assets/{gitGraph-4MIJSDKK-BypWaaBU.js → gitGraph-4MIJSDKK-BZ_y_cDU.js} +1 -1
  270. package/out/web/assets/{gitGraphDiagram-WWUBYQGX-DWiw_3bq.js → gitGraphDiagram-WWUBYQGX-drhRSYm3.js} +1 -1
  271. package/out/web/assets/index-BZ9xgmMP.css +1 -0
  272. package/out/web/assets/index-Ca8cCS4h.js +168 -0
  273. package/out/web/assets/{info-A6RAGUB7-KkAUxT4j.js → info-A6RAGUB7-B7I3K0F1.js} +1 -1
  274. package/out/web/assets/{infoDiagram-RXCK75RN-BNb6E48y.js → infoDiagram-RXCK75RN-deX_1MPh.js} +1 -1
  275. package/out/web/assets/{ishikawaDiagram-5VMMS53U-Caa-JoAK.js → ishikawaDiagram-5VMMS53U-s38yo28y.js} +1 -1
  276. package/out/web/assets/{journeyDiagram-EYS64GPL-DOrmFGz6.js → journeyDiagram-EYS64GPL-CZn2kB8b.js} +1 -1
  277. package/out/web/assets/jsx-runtime-DN4NhQUK.js +1 -0
  278. package/out/web/assets/{kanban-definition-3QL26DDD-BOWCYcK0.js → kanban-definition-3QL26DDD-DodjgySL.js} +1 -1
  279. package/out/web/assets/markdown-CMhYIcWB.js +39 -0
  280. package/out/web/assets/{mermaid-parser.core-BQqjCkS_.js → mermaid-parser.core-Whu2rlJC.js} +3 -3
  281. package/out/web/assets/mermaid.core-CKyPo8VH.js +11 -0
  282. package/out/web/assets/{mindmap-definition-FBJOCRG2-jTceWpr0.js → mindmap-definition-FBJOCRG2-260WBDxZ.js} +1 -1
  283. package/out/web/assets/modelManager-CUaGWMWu.js +2 -0
  284. package/out/web/assets/oauthManager-DlNhXJr6.js +1 -0
  285. package/out/web/assets/{packet-AYTQ26CC-CJ5RXgol.js → packet-AYTQ26CC-CEeIRKRG.js} +1 -1
  286. package/out/web/assets/{pegDiagram-XKGWAZYB-y8wMtd0y.js → pegDiagram-XKGWAZYB-BYadI-KO.js} +1 -1
  287. package/out/web/assets/{pie-WAS4IAKB-72fTBbl4.js → pie-WAS4IAKB-D8uf4dh5.js} +1 -1
  288. package/out/web/assets/{pieDiagram-E7YTZNPT-e0O02qWq.js → pieDiagram-E7YTZNPT-CjSDy4hO.js} +1 -1
  289. package/out/web/assets/{quadrantDiagram-AXDQQJYC-C9phYLom.js → quadrantDiagram-AXDQQJYC-B8D3gU5d.js} +1 -1
  290. package/out/web/assets/{radar-RG4KPBEZ-BAU2hzUT.js → radar-RG4KPBEZ-DZJxnokY.js} +1 -1
  291. package/out/web/assets/{railroad-74A4TZTK-B0bCAVHC.js → railroad-74A4TZTK-DBysUiUi.js} +1 -1
  292. package/out/web/assets/{railroad-abnf-HS5TGJTU-WhxO7ndE.js → railroad-abnf-HS5TGJTU-CHWxoJYg.js} +1 -1
  293. package/out/web/assets/{railroad-ebnf-LZEXJU2U-BkA0m7-F.js → railroad-ebnf-LZEXJU2U-DDv7X6bY.js} +1 -1
  294. package/out/web/assets/{railroad-peg-WCYAUIDC-BsVpHIaj.js → railroad-peg-WCYAUIDC-DpfcYYNJ.js} +1 -1
  295. package/out/web/assets/{railroadDiagram-O6MQD6OU-CyOLN65Q.js → railroadDiagram-O6MQD6OU-CYtyv0t3.js} +1 -1
  296. package/out/web/assets/{requirementDiagram-EFPCY7ZU-DQXJ7Dud.js → requirementDiagram-EFPCY7ZU-D2X-Ewik.js} +1 -1
  297. package/out/web/assets/{sankeyDiagram-P5KCCOFB-B2XLyIIc.js → sankeyDiagram-P5KCCOFB-Bn2x6C4Y.js} +1 -1
  298. package/out/web/assets/{sequenceDiagram-WJ2MYXX4-DGQY4wwm.js → sequenceDiagram-WJ2MYXX4-BvFLKtPd.js} +1 -1
  299. package/out/web/assets/{stateDiagram-HBIQ2CUA-DHZpDwNy.js → stateDiagram-HBIQ2CUA-Bx0GWeaY.js} +1 -1
  300. package/out/web/assets/stateDiagram-v2-4QOOHH4V--hol1yg_.js +1 -0
  301. package/out/web/assets/studio-B1mk40wD.js +1 -0
  302. package/out/web/assets/{swimlanes-XN3QIQJK-Bn_jcZz-.js → swimlanes-XN3QIQJK-CCma0T7L.js} +1 -1
  303. package/out/web/assets/swimlanesDiagram-VK2B7HYN-BkohoVsU.js +8 -0
  304. package/out/web/assets/{timeline-definition-24CTP7MA-CdTERuJZ.js → timeline-definition-24CTP7MA-iCRhhJ7C.js} +1 -1
  305. package/out/web/assets/{treeView-Q6P3EWNA-TKBKQG6R.js → treeView-Q6P3EWNA-DZ-y08qp.js} +1 -1
  306. package/out/web/assets/{treemap-WGGIJYW6-BP7gQoiC.js → treemap-WGGIJYW6-De0CxzMx.js} +1 -1
  307. package/out/web/assets/{vennDiagram-4TSXK5OY-BHUmxDuK.js → vennDiagram-4TSXK5OY-w_7aZ6xe.js} +1 -1
  308. package/out/web/assets/{wardley-WFR3VGLG-9bct5AAN.js → wardley-WFR3VGLG-DT0y0xJ4.js} +1 -1
  309. package/out/web/assets/{wardleyDiagram-VM6X3IG4-BfJwDDso.js → wardleyDiagram-VM6X3IG4-DAdXELbQ.js} +1 -1
  310. package/out/web/assets/window-BJCVtyET.js +1 -0
  311. package/out/web/assets/{xychartDiagram-S5SC5T6Z-Dqd9Mvpo.js → xychartDiagram-S5SC5T6Z-IZIXf3Vo.js} +1 -1
  312. package/out/web/index-web.html +4 -4
  313. package/out/web/index.html +4 -4
  314. package/package.json +80 -20
  315. package/shared-modules/.github/workflows/ci.yml +120 -0
  316. package/shared-modules/.github/workflows/update.yaml +28 -0
  317. package/slash-commands.json +16 -2
  318. package/src/bin/auto-build.js +66 -0
  319. package/src/bin/desktop.js +113 -0
  320. package/src/bin/desktop.test.js +113 -0
  321. package/src/bin/index.js +18 -25
  322. package/src/bin/index.test.js +89 -0
  323. package/src/bin/measure-effects.mjs +53 -0
  324. package/src/bin/package.test.js +28 -0
  325. package/src/bin/release-notes.test.js +84 -0
  326. package/src/bin/styles.test.js +20 -0
  327. package/src/bin/web.js +5 -0
  328. package/src/bin/web.test.js +39 -0
  329. package/src/renderer/index-web.html +1 -0
  330. package/src/renderer/index.html +1 -2
  331. package/src/renderer/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  332. package/src/renderer/shared/agentProgress.ts +201 -3
  333. package/src/renderer/shared/components/AgentActivityDrawer.tsx +9 -8
  334. package/src/renderer/shared/components/AgentActivityTable.tsx +193 -133
  335. package/src/renderer/shared/components/ApprovalCard.test.tsx +24 -0
  336. package/src/renderer/shared/components/ApprovalCard.tsx +10 -3
  337. package/src/renderer/shared/components/ArtifactPreviewPanel.tsx +91 -40
  338. package/src/renderer/shared/components/AuthGate.tsx +79 -48
  339. package/src/renderer/shared/components/BackgroundTerminals.tsx +181 -0
  340. package/src/renderer/shared/components/CalculationCard.tsx +41 -15
  341. package/src/renderer/shared/components/ChatCodeBlock.tsx +8 -4
  342. package/src/renderer/shared/components/ChatMessageItem.test.tsx +68 -0
  343. package/src/renderer/shared/components/ChatMessageItem.tsx +52 -33
  344. package/src/renderer/shared/components/ChatPanel.test.tsx +21 -0
  345. package/src/renderer/shared/components/ChatPanel.tsx +676 -415
  346. package/src/renderer/shared/components/ChunkErrorBoundary.tsx +115 -64
  347. package/src/renderer/shared/components/CliSessionsView.test.tsx +125 -0
  348. package/src/renderer/shared/components/CliSessionsView.tsx +543 -0
  349. package/src/renderer/shared/components/CodeReviewPage.tsx +668 -0
  350. package/src/renderer/shared/components/CollapsiblePasteInput.tsx +90 -0
  351. package/src/renderer/shared/components/CommandPalette.tsx +8 -8
  352. package/src/renderer/shared/components/ContextCompactionStatus.tsx +17 -0
  353. package/src/renderer/shared/components/DashboardSidebar.tsx +853 -229
  354. package/src/renderer/shared/components/DesktopTitlebar.tsx +371 -0
  355. package/src/renderer/shared/components/DiffReviewModal.tsx +3 -3
  356. package/src/renderer/shared/components/ErrorNotice.tsx +29 -0
  357. package/src/renderer/shared/components/FormattedMessage.tsx +11 -0
  358. package/src/renderer/shared/components/GeminiLiveOverlay.css +86 -0
  359. package/src/renderer/shared/components/GeminiLiveOverlay.test.tsx +24 -0
  360. package/src/renderer/shared/components/GeminiLiveOverlay.tsx +85 -101
  361. package/src/renderer/shared/components/GitBranchSelector.tsx +442 -0
  362. package/src/renderer/shared/components/GlideSelect.css +138 -0
  363. package/src/renderer/shared/components/GlideSelect.d.ts +31 -0
  364. package/src/renderer/shared/components/GlideSelect.jsx +266 -0
  365. package/src/renderer/shared/components/ImageGenCard.tsx +31 -12
  366. package/src/renderer/shared/components/ImageSearchCard.tsx +76 -65
  367. package/src/renderer/shared/components/ImageStudioPanel.tsx +49 -49
  368. package/src/renderer/shared/components/InlineThoughtNote.tsx +27 -0
  369. package/src/renderer/shared/components/LibraryItemCard.tsx +72 -0
  370. package/src/renderer/shared/components/LibraryPage.tsx +165 -0
  371. package/src/renderer/shared/components/LibraryPreview.tsx +59 -0
  372. package/src/renderer/shared/components/LinkedFoldersView.tsx +365 -46
  373. package/src/renderer/shared/components/McpRegistryPicker.tsx +1 -1
  374. package/src/renderer/shared/components/McpServersView.tsx +51 -30
  375. package/src/renderer/shared/components/McpToolAllowlist.tsx +2 -4
  376. package/src/renderer/shared/components/McpToolResults.tsx +99 -0
  377. package/src/renderer/shared/components/MermaidCard.tsx +14 -8
  378. package/src/renderer/shared/components/MintDashboard.tsx +1002 -831
  379. package/src/renderer/shared/components/ModSessionControls.tsx +8 -0
  380. package/src/renderer/shared/components/ModUi.test.tsx +65 -0
  381. package/src/renderer/shared/components/ModUi.tsx +26 -0
  382. package/src/renderer/shared/components/ModelSelectorPopover.tsx +547 -219
  383. package/src/renderer/shared/components/ModsPanel.tsx +156 -0
  384. package/src/renderer/shared/components/PlanChecklistWidget.tsx +1 -1
  385. package/src/renderer/shared/components/PluginsView.tsx +1 -1
  386. package/src/renderer/shared/components/ProgressActivity.tsx +17 -0
  387. package/src/renderer/shared/components/ReviewHistory.tsx +42 -0
  388. package/src/renderer/shared/components/RewindModal.tsx +11 -18
  389. package/src/renderer/shared/components/RunSummaryDashboard.tsx +8 -14
  390. package/src/renderer/shared/components/ScheduledTasksView.tsx +11 -10
  391. package/src/renderer/shared/components/ScreenCaptureDialog.css +221 -0
  392. package/src/renderer/shared/components/ScreenCaptureDialog.tsx +199 -0
  393. package/src/renderer/shared/components/SelectField.test.tsx +27 -0
  394. package/src/renderer/shared/components/SelectField.tsx +38 -0
  395. package/src/renderer/shared/components/SessionSources.tsx +48 -0
  396. package/src/renderer/shared/components/SessionSourcesPopover.tsx +61 -0
  397. package/src/renderer/shared/components/Settings/AgentsTab.tsx +41 -45
  398. package/src/renderer/shared/components/Settings/AudioTab.tsx +16 -15
  399. package/src/renderer/shared/components/Settings/AutomationTab.tsx +10 -60
  400. package/src/renderer/shared/components/Settings/AvatarCropModal.tsx +368 -0
  401. package/src/renderer/shared/components/Settings/GeneralTab.tsx +368 -113
  402. package/src/renderer/shared/components/Settings/MemoryTab.test.tsx +37 -0
  403. package/src/renderer/shared/components/Settings/MemoryTab.tsx +71 -31
  404. package/src/renderer/shared/components/Settings/NotificationsTab.test.tsx +15 -0
  405. package/src/renderer/shared/components/Settings/NotificationsTab.tsx +84 -0
  406. package/src/renderer/shared/components/Settings/PluginsTab.tsx +20 -12
  407. package/src/renderer/shared/components/Settings/ProfileTab.tsx +29 -5
  408. package/src/renderer/shared/components/Settings/SearchableModelCombobox.tsx +411 -0
  409. package/src/renderer/shared/components/Settings/ThemeTab.tsx +416 -165
  410. package/src/renderer/shared/components/SkillsView.tsx +41 -16
  411. package/src/renderer/shared/components/SlashChoicePanel.tsx +88 -0
  412. package/src/renderer/shared/components/SlashSuggestions.test.tsx +33 -0
  413. package/src/renderer/shared/components/SlashSuggestions.tsx +41 -12
  414. package/src/renderer/shared/components/SourcesBlock.tsx +55 -51
  415. package/src/renderer/shared/components/StockCard.tsx +58 -24
  416. package/src/renderer/shared/components/SubagentDagView.tsx +4 -4
  417. package/src/renderer/shared/components/TerminalDock.tsx +241 -0
  418. package/src/renderer/shared/components/ThinkingBlock.tsx +14 -8
  419. package/src/renderer/shared/components/ToolSurfacePage.test.tsx +32 -0
  420. package/src/renderer/shared/components/ToolSurfacePage.tsx +568 -0
  421. package/src/renderer/shared/components/ToolsPanelToggle.tsx +13 -0
  422. package/src/renderer/shared/components/UiFeatureCard.tsx +267 -0
  423. package/src/renderer/shared/components/UiGridCard.tsx +188 -0
  424. package/src/renderer/shared/components/UiMockupWidget.tsx +149 -0
  425. package/src/renderer/shared/components/VeoStudioPanel.tsx +22 -37
  426. package/src/renderer/shared/components/ViewedImages.tsx +36 -0
  427. package/src/renderer/shared/components/VirtualChatHistory.tsx +82 -0
  428. package/src/renderer/shared/components/VoicePill.css +85 -0
  429. package/src/renderer/shared/components/VoicePill.d.ts +12 -0
  430. package/src/renderer/shared/components/VoicePill.jsx +190 -0
  431. package/src/renderer/shared/components/VoicePill.test.tsx +22 -0
  432. package/src/renderer/shared/components/WeatherCard.tsx +3 -3
  433. package/src/renderer/shared/components/WorkspaceContextPopover.tsx +138 -0
  434. package/src/renderer/shared/components/WorkspacePaneResizer.tsx +92 -0
  435. package/src/renderer/shared/components/WorkspacePreviewActions.test.tsx +44 -0
  436. package/src/renderer/shared/components/WorkspacePreviewActions.tsx +19 -0
  437. package/src/renderer/shared/components/WorkspaceSelector.tsx +154 -0
  438. package/src/renderer/shared/components/background-terminals.css +292 -0
  439. package/src/renderer/shared/components/ui/README.md +52 -0
  440. package/src/renderer/shared/components/ui/button.tsx +37 -0
  441. package/src/renderer/shared/components/ui/demo.tsx +26 -0
  442. package/src/renderer/shared/components/ui/error-recovery.css +35 -0
  443. package/src/renderer/shared/components/ui/error-recovery.tsx +35 -0
  444. package/src/renderer/shared/components/ui/voice-powered-orb.css +6 -0
  445. package/src/renderer/shared/components/ui/voice-powered-orb.tsx +374 -0
  446. package/src/renderer/shared/components/workspace-selector.css +248 -0
  447. package/src/renderer/shared/constants/config.ts +57 -3
  448. package/src/renderer/shared/constants/models.ts +189 -2
  449. package/src/renderer/shared/constants/slashCommands.ts +1 -1
  450. package/src/renderer/shared/conversation/coordinator.test.ts +27 -0
  451. package/src/renderer/shared/conversation/coordinator.ts +82 -0
  452. package/src/renderer/shared/conversation/lifecycle.test.ts +362 -0
  453. package/src/renderer/shared/conversation/lifecycle.ts +418 -0
  454. package/src/renderer/shared/conversation/projectNavigation.test.ts +105 -0
  455. package/src/renderer/shared/conversation/projectNavigation.ts +39 -0
  456. package/src/renderer/shared/conversation/sourcesTransport.ts +27 -0
  457. package/src/renderer/shared/conversation/syncView.test.ts +13 -0
  458. package/src/renderer/shared/conversation/syncView.ts +6 -0
  459. package/src/renderer/shared/conversation/transport.test.ts +163 -0
  460. package/src/renderer/shared/conversation/transport.ts +159 -0
  461. package/src/renderer/shared/conversation/useConversationCoordinator.ts +64 -0
  462. package/src/renderer/shared/css/agent-observability.css +46 -15
  463. package/src/renderer/shared/css/auth-gate.css +114 -15
  464. package/src/renderer/shared/css/chat-ui-cards.css +495 -0
  465. package/src/renderer/shared/css/code-review.css +856 -0
  466. package/src/renderer/shared/css/code-sessions.css +479 -0
  467. package/src/renderer/shared/css/collapsed-paste.css +35 -0
  468. package/src/renderer/shared/css/effects.css +15 -0
  469. package/src/renderer/shared/css/error-notice.css +60 -0
  470. package/src/renderer/shared/css/file-changes.css +132 -0
  471. package/src/renderer/shared/css/image-studio.css +16 -16
  472. package/src/renderer/shared/css/library.css +476 -0
  473. package/src/renderer/shared/css/management-views.css +415 -27
  474. package/src/renderer/shared/css/mcp-results.css +11 -0
  475. package/src/renderer/shared/css/model-selector.css +543 -85
  476. package/src/renderer/shared/css/mods.css +77 -0
  477. package/src/renderer/shared/css/notification-notice.css +28 -0
  478. package/src/renderer/shared/css/session-sources-popover.css +9 -0
  479. package/src/renderer/shared/css/session-sources.css +23 -0
  480. package/src/renderer/shared/css/settings/agents.css +1 -1
  481. package/src/renderer/shared/css/settings/automation.css +13 -13
  482. package/src/renderer/shared/css/settings/general.css +526 -5
  483. package/src/renderer/shared/css/settings/memory.css +154 -0
  484. package/src/renderer/shared/css/settings/notifications.css +11 -0
  485. package/src/renderer/shared/css/settings/plugins.css +5 -5
  486. package/src/renderer/shared/css/settings/profile.css +331 -1
  487. package/src/renderer/shared/css/settings/theme.css +656 -3
  488. package/src/renderer/shared/css/slash-choice.css +95 -0
  489. package/src/renderer/shared/css/slash-suggestions.css +68 -0
  490. package/src/renderer/shared/css/sources-block.css +91 -0
  491. package/src/renderer/shared/css/thinking-status.css +46 -0
  492. package/src/renderer/shared/css/tools-panel.css +7 -0
  493. package/src/renderer/shared/css/ui-tailwind.css +19 -0
  494. package/src/renderer/shared/css/veo-studio.css +16 -15
  495. package/src/renderer/shared/css/viewed-images.css +15 -0
  496. package/src/renderer/shared/fonts.css +46 -0
  497. package/src/renderer/shared/fonts.ts +10 -37
  498. package/src/renderer/shared/lib/utils.ts +6 -0
  499. package/src/renderer/shared/library/controller.test.ts +61 -0
  500. package/src/renderer/shared/library/controller.ts +57 -0
  501. package/src/renderer/shared/library/transport.test.ts +26 -0
  502. package/src/renderer/shared/library/transport.ts +60 -0
  503. package/src/renderer/shared/library/useLibraryFile.ts +38 -0
  504. package/src/renderer/shared/mods.ts +58 -0
  505. package/src/renderer/shared/platform.test.ts +90 -0
  506. package/src/renderer/shared/platform.ts +219 -7
  507. package/src/renderer/shared/theme/themeManager.test.ts +43 -0
  508. package/src/renderer/shared/theme/themeManager.ts +157 -0
  509. package/src/renderer/shared/theme/themes.ts +116 -0
  510. package/src/renderer/shared/theme/tokens.css +318 -0
  511. package/src/renderer/shared/types.ts +137 -2
  512. package/src/renderer/shared/utils/agentActivity.test.ts +75 -0
  513. package/src/renderer/shared/utils/agentActivity.ts +168 -8
  514. package/src/renderer/shared/utils/approval.tsx +7 -0
  515. package/src/renderer/shared/utils/artifactBrowser.test.ts +80 -0
  516. package/src/renderer/shared/utils/artifactBrowser.ts +41 -0
  517. package/src/renderer/shared/utils/cardJson.test.ts +35 -0
  518. package/src/renderer/shared/utils/cardJson.ts +30 -0
  519. package/src/renderer/shared/utils/contextCompaction.test.tsx +48 -0
  520. package/src/renderer/shared/utils/contextCompaction.ts +21 -0
  521. package/src/renderer/shared/utils/effectVisibility.ts +9 -0
  522. package/src/renderer/shared/utils/fileIcons.ts +1 -1
  523. package/src/renderer/shared/utils/markdown.tsx +330 -81
  524. package/src/renderer/shared/utils/markdown.webImages.test.tsx +40 -0
  525. package/src/renderer/shared/utils/mcpResults.test.tsx +91 -0
  526. package/src/renderer/shared/utils/modViewport.ts +7 -0
  527. package/src/renderer/shared/utils/nativeRecordingSession.test.ts +61 -0
  528. package/src/renderer/shared/utils/nativeRecordingSession.ts +46 -0
  529. package/src/renderer/shared/utils/notificationSettings.test.ts +14 -0
  530. package/src/renderer/shared/utils/notificationSettings.ts +23 -0
  531. package/src/renderer/shared/utils/notifications.test.ts +51 -0
  532. package/src/renderer/shared/utils/notifications.ts +54 -0
  533. package/src/renderer/shared/utils/pastedText.test.ts +20 -0
  534. package/src/renderer/shared/utils/pastedText.ts +13 -0
  535. package/src/renderer/shared/utils/progressCache.test.ts +32 -0
  536. package/src/renderer/shared/utils/providers.ts +8 -3
  537. package/src/renderer/shared/utils/screenCapture.ts +43 -0
  538. package/src/renderer/shared/utils/sessionSources.test.ts +31 -0
  539. package/src/renderer/shared/utils/sessionSources.ts +34 -0
  540. package/src/renderer/shared/utils/slashCommandProcessor.ts +5 -2
  541. package/src/renderer/shared/utils/sourceAttachments.ts +28 -0
  542. package/src/renderer/shared/utils/speech.ts +51 -9
  543. package/src/renderer/shared/utils/syntaxHighlight.test.tsx +22 -0
  544. package/src/renderer/shared/utils/syntaxHighlight.tsx +26 -0
  545. package/src/renderer/shared/utils/ui.ts +4 -64
  546. package/src/renderer/shared/utils/useGeminiLiveVoice.ts +49 -5
  547. package/src/renderer/shared/utils/useLatestCallback.ts +9 -0
  548. package/src/renderer/shared/utils/useNativeVoiceInput.ts +80 -72
  549. package/src/renderer/shared/utils/useSessionSources.ts +33 -0
  550. package/src/renderer/shared/utils/viewedImages.ts +26 -0
  551. package/src/renderer/shared/utils/workspacePane.test.ts +33 -0
  552. package/src/renderer/shared/utils/workspacePane.ts +20 -0
  553. package/src/renderer/shared/utils/workspacePreview.test.ts +24 -0
  554. package/src/renderer/shared/utils/workspacePreview.ts +16 -0
  555. package/src/renderer/shared/utils/workspaceSnapshot.test.ts +49 -0
  556. package/src/renderer/shared/utils/workspaceSnapshot.ts +26 -0
  557. package/src/renderer/shared/utils/workspaces.ts +10 -0
  558. package/src/renderer/shared/workspaceUndo.ts +88 -0
  559. package/src/renderer/src/App.tsx +16 -1
  560. package/src/renderer/src/components/BrowserShell.tsx +108 -0
  561. package/src/renderer/src/components/BrowserSuggestionsPopup.tsx +91 -0
  562. package/src/renderer/src/components/LiveTranslateControls.tsx +65 -0
  563. package/src/renderer/src/components/MintDashboard.tsx +4 -2
  564. package/src/renderer/src/components/PicturesLibrary.tsx +2 -287
  565. package/src/renderer/src/components/ScreenPicker.css +227 -0
  566. package/src/renderer/src/components/ScreenPicker.tsx +312 -526
  567. package/src/renderer/src/components/SettingsWindow.tsx +48 -5
  568. package/src/renderer/src/components/SpotlightWindow.tsx +1 -0
  569. package/src/renderer/src/components/WidgetWindow.tsx +27 -3
  570. package/src/renderer/src/components/WorkspacePanel.tsx +269 -61
  571. package/src/renderer/src/components/browser-shell.css +185 -0
  572. package/src/renderer/src/components/browser-suggestions-popup.css +55 -0
  573. package/src/renderer/src/components/liveTranslateFrames.test.ts +44 -0
  574. package/src/renderer/src/components/liveTranslateFrames.ts +45 -0
  575. package/src/renderer/src/components/liveTranslateLanguage.ts +6 -0
  576. package/src/renderer/src/css/app-shell.css +400 -204
  577. package/src/renderer/src/css/chat.css +1666 -594
  578. package/src/renderer/src/css/dashboard.css +11 -0
  579. package/src/renderer/src/css/desktop-tools.css +928 -0
  580. package/src/renderer/src/css/misc.css +5 -60
  581. package/src/renderer/src/css/pictures.css +2 -407
  582. package/src/renderer/src/css/settings/base.css +394 -157
  583. package/src/renderer/src/css/sidebar-workspace.css +1072 -376
  584. package/src/renderer/src/css/spotlight.css +15 -26
  585. package/src/renderer/src/css/tool-surfaces.css +784 -0
  586. package/src/renderer/src/css/widget.css +36 -8
  587. package/src/renderer/src/env.d.ts +4 -9
  588. package/src/renderer/src/hooks/useProviderModels.ts +2 -9
  589. package/src/renderer/src/index.css +53 -46
  590. package/src/renderer/src/main.tsx +12 -0
  591. package/src/renderer/src/proactiveSuggestions.ts +29 -0
  592. package/src/renderer/src/tauri.ts +302 -339
  593. package/src/renderer/src/voiceInput.ts +2 -1
  594. package/src/renderer/src-web/App.tsx +40 -0
  595. package/src/renderer/src-web/components/MintDashboard.tsx +4 -2
  596. package/src/renderer/src-web/components/PicturesLibrary.tsx +2 -284
  597. package/src/renderer/src-web/components/PullToRefresh.tsx +107 -0
  598. package/src/renderer/src-web/components/SettingsWindow.tsx +36 -5
  599. package/src/renderer/src-web/css/app-shell.css +188 -207
  600. package/src/renderer/src-web/css/chat.css +1236 -507
  601. package/src/renderer/src-web/css/dashboard.css +11 -0
  602. package/src/renderer/src-web/css/misc.css +3 -55
  603. package/src/renderer/src-web/css/mobile.css +679 -0
  604. package/src/renderer/src-web/css/pictures.css +2 -415
  605. package/src/renderer/src-web/css/pull-to-refresh.css +54 -0
  606. package/src/renderer/src-web/css/settings/base.css +353 -134
  607. package/src/renderer/src-web/css/settings/mobile.css +320 -0
  608. package/src/renderer/src-web/css/sidebar-workspace.css +546 -187
  609. package/src/renderer/src-web/css/spotlight.css +9 -26
  610. package/src/renderer/src-web/css/widget.css +1 -6
  611. package/src/renderer/src-web/env.d.ts +4 -12
  612. package/src/renderer/src-web/hooks/useProviderModels.ts +2 -9
  613. package/src/renderer/src-web/index.css +53 -96
  614. package/src/renderer/src-web/main.tsx +12 -0
  615. package/src/renderer/src-web/proactiveSuggestions.ts +3 -0
  616. package/src/renderer/src-web/tauri.ts +309 -364
  617. package/src/renderer/tests/backgroundTerminals.browser.html +81 -0
  618. package/src/renderer/tests/chatPanelFixture.ts +23 -0
  619. package/src/renderer/tests/chatPerformance.browser.html +71 -0
  620. package/src/renderer/tests/cliSessions.browser.html +82 -0
  621. package/src/renderer/tests/collapsedPaste.browser.html +70 -0
  622. package/src/renderer/tests/composerMenus.browser.html +116 -0
  623. package/src/renderer/tests/contextCompaction.browser.html +17 -0
  624. package/src/renderer/tests/conversationLifecycle.browser.html +70 -0
  625. package/src/renderer/tests/effectsPerformance.browser.html +13 -0
  626. package/src/renderer/tests/errorRecovery.browser.html +21 -0
  627. package/src/renderer/tests/glideSelect.browser.html +71 -0
  628. package/src/renderer/tests/glideSelect.preview.html +27 -0
  629. package/src/renderer/tests/library.browser.html +1 -0
  630. package/src/renderer/tests/library.browser.tsx +78 -0
  631. package/src/renderer/tests/liveOrb.browser.html +49 -0
  632. package/src/renderer/tests/liveVoice.browser.html +29 -0
  633. package/src/renderer/tests/modInput.browser.html +22 -0
  634. package/src/renderer/tests/sessionSources.browser.html +1 -0
  635. package/src/renderer/tests/sessionSources.browser.tsx +107 -0
  636. package/src/renderer/tests/skills.browser.html +24 -0
  637. package/src/renderer/tests/toolsPanel.browser.html +1 -0
  638. package/src/renderer/tests/toolsPanel.browser.tsx +113 -0
  639. package/src/renderer/tests/viewedImages.browser.html +1 -0
  640. package/src/renderer/tests/viewedImages.browser.tsx +93 -0
  641. package/src/renderer/tests/voicePill.browser.html +80 -0
  642. package/src/renderer/tests/voicePill.preview.html +34 -0
  643. package/src/renderer/tests/webSources.browser.html +1 -0
  644. package/src/renderer/tests/webSources.browser.tsx +98 -0
  645. package/src/renderer/tests/workspaceUndo.browser.html +92 -0
  646. package/src-tauri/Cargo.toml +40 -0
  647. package/src-tauri/build.rs +3 -0
  648. package/src-tauri/src/app/lifecycle.rs +277 -0
  649. package/src-tauri/src/app/mod.rs +4 -0
  650. package/src-tauri/src/app/shortcuts.rs +40 -0
  651. package/src-tauri/src/app/tray.rs +52 -0
  652. package/src-tauri/src/background/events.rs +70 -0
  653. package/src-tauri/src/background/headless.rs +230 -0
  654. package/src-tauri/src/background/mod.rs +4 -0
  655. package/src-tauri/src/background/proactive.rs +262 -0
  656. package/src-tauri/src/commands/approvals.rs +20 -0
  657. package/src-tauri/src/commands/auth.rs +127 -0
  658. package/src-tauri/src/commands/conversation.rs +642 -0
  659. package/src-tauri/src/commands/integrations.rs +157 -0
  660. package/src-tauri/src/commands/media.rs +179 -0
  661. package/src-tauri/src/commands/mod.rs +11 -0
  662. package/src-tauri/src/commands/mods.rs +6 -0
  663. package/src-tauri/src/commands/settings.rs +141 -0
  664. package/src-tauri/src/commands/voice.rs +153 -0
  665. package/src-tauri/src/commands/workspace.rs +501 -0
  666. package/src-tauri/src/lib.rs +10 -0
  667. package/src-tauri/src/main.rs +3 -0
  668. package/src-tauri/src/native/actions.rs +206 -0
  669. package/src-tauri/src/native/browser.rs +252 -0
  670. package/src-tauri/src/native/capture.rs +695 -0
  671. package/src-tauri/src/native/discord_rpc.rs +99 -0
  672. package/src-tauri/src/native/integrations.rs +126 -0
  673. package/src-tauri/src/native/mod.rs +12 -0
  674. package/src-tauri/src/native/notifications.rs +51 -0
  675. package/src-tauri/src/native/plugins.rs +14 -0
  676. package/src-tauri/src/native/system.rs +250 -0
  677. package/src-tauri/src/native/terminal.rs +201 -0
  678. package/src-tauri/src/native/updater.rs +148 -0
  679. package/src-tauri/src/native/windows.rs +143 -0
  680. package/tsconfig.json +2 -0
  681. package/vite.config.ts +4 -1
  682. package/vite.config.web.ts +5 -0
  683. package/.cargo/config.toml +0 -13
  684. package/.claude/settings.local.json +0 -182
  685. package/.codex +0 -0
  686. package/CLAUDE.md +0 -102
  687. package/out/web/Live2DCubismCore.js +0 -9
  688. package/out/web/assets/MintDashboard-DWSqucgb.js +0 -57
  689. package/out/web/assets/SettingsWindow-DFM2aj5B.js +0 -2
  690. package/out/web/assets/chunk-CKBBP62Z-nr1uKPj9.js +0 -2
  691. package/out/web/assets/chunk-DSNCTWBM-Dtj8Rqsd.js +0 -2
  692. package/out/web/assets/chunk-DU6HZSFF-2tv5K1wT.js +0 -128
  693. package/out/web/assets/classDiagram-DTDB5LWJ-BdSFArgw.js +0 -1
  694. package/out/web/assets/classDiagram-v2-JRS7N3AN-BdSFArgw.js +0 -1
  695. package/out/web/assets/core-DImejIUG.js +0 -1
  696. package/out/web/assets/dist-js-BxuKEVWM.js +0 -1
  697. package/out/web/assets/event-BNl8Zahw.js +0 -1
  698. package/out/web/assets/fira-code-cyrillic-400-normal-UC0NFL4U.woff2 +0 -0
  699. package/out/web/assets/fira-code-cyrillic-400-normal-dc1q3VD7.woff +0 -0
  700. package/out/web/assets/fira-code-cyrillic-500-normal-Bu7VCL72.woff +0 -0
  701. package/out/web/assets/fira-code-cyrillic-500-normal-CX35h3Mg.woff2 +0 -0
  702. package/out/web/assets/fira-code-cyrillic-ext-400-normal-Buh61xzB.woff +0 -0
  703. package/out/web/assets/fira-code-cyrillic-ext-400-normal-txZ9Fk_1.woff2 +0 -0
  704. package/out/web/assets/fira-code-cyrillic-ext-500-normal-CYRspHgm.woff2 +0 -0
  705. package/out/web/assets/fira-code-cyrillic-ext-500-normal-CwtLmSFD.woff +0 -0
  706. package/out/web/assets/fira-code-greek-400-normal-B2Gh_Y8s.woff2 +0 -0
  707. package/out/web/assets/fira-code-greek-400-normal-DobhaxvF.woff +0 -0
  708. package/out/web/assets/fira-code-greek-500-normal-CVO0IRNt.woff2 +0 -0
  709. package/out/web/assets/fira-code-greek-500-normal-DEXIWiey.woff +0 -0
  710. package/out/web/assets/fira-code-greek-ext-400-normal-DR7mBgIM.woff2 +0 -0
  711. package/out/web/assets/fira-code-greek-ext-400-normal-DSPUheWg.woff +0 -0
  712. package/out/web/assets/fira-code-greek-ext-500-normal-BO3iq16n.woff2 +0 -0
  713. package/out/web/assets/fira-code-greek-ext-500-normal-CMiNLXER.woff +0 -0
  714. package/out/web/assets/fira-code-latin-ext-400-normal-DG73JjOf.woff +0 -0
  715. package/out/web/assets/fira-code-latin-ext-400-normal-KSMg0QLl.woff2 +0 -0
  716. package/out/web/assets/fira-code-latin-ext-500-normal-CaANqXjI.woff +0 -0
  717. package/out/web/assets/fira-code-latin-ext-500-normal-Crd9e_oI.woff2 +0 -0
  718. package/out/web/assets/flowDiagram-A5DVABFB-BpnHUSU7.js +0 -1
  719. package/out/web/assets/index-CVRg270z.css +0 -1
  720. package/out/web/assets/index-DxZQr9yD.js +0 -10
  721. package/out/web/assets/inter-cyrillic-400-normal-HOLc17fK.woff +0 -0
  722. package/out/web/assets/inter-cyrillic-400-normal-obahsSVq.woff2 +0 -0
  723. package/out/web/assets/inter-cyrillic-500-normal-BasfLYem.woff2 +0 -0
  724. package/out/web/assets/inter-cyrillic-500-normal-CxZf_p3X.woff +0 -0
  725. package/out/web/assets/inter-cyrillic-600-normal-4D_pXhcN.woff +0 -0
  726. package/out/web/assets/inter-cyrillic-600-normal-CWCymEST.woff2 +0 -0
  727. package/out/web/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2 +0 -0
  728. package/out/web/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff +0 -0
  729. package/out/web/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2 +0 -0
  730. package/out/web/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff +0 -0
  731. package/out/web/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.woff +0 -0
  732. package/out/web/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2 +0 -0
  733. package/out/web/assets/inter-greek-400-normal-B4URO6DV.woff2 +0 -0
  734. package/out/web/assets/inter-greek-400-normal-q2sYcFCs.woff +0 -0
  735. package/out/web/assets/inter-greek-500-normal-BIZE56-Y.woff2 +0 -0
  736. package/out/web/assets/inter-greek-500-normal-Xzm54t5V.woff +0 -0
  737. package/out/web/assets/inter-greek-600-normal-BZpKdvQh.woff +0 -0
  738. package/out/web/assets/inter-greek-600-normal-plRanbMR.woff2 +0 -0
  739. package/out/web/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2 +0 -0
  740. package/out/web/assets/inter-greek-ext-400-normal-KugGGMne.woff +0 -0
  741. package/out/web/assets/inter-greek-ext-500-normal-2j5mBUwD.woff +0 -0
  742. package/out/web/assets/inter-greek-ext-500-normal-C4iEst2y.woff2 +0 -0
  743. package/out/web/assets/inter-greek-ext-600-normal-B8X0CLgF.woff +0 -0
  744. package/out/web/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2 +0 -0
  745. package/out/web/assets/inter-latin-400-normal-C38fXH4l.woff2 +0 -0
  746. package/out/web/assets/inter-latin-400-normal-CyCys3Eg.woff +0 -0
  747. package/out/web/assets/inter-latin-500-normal-BL9OpVg8.woff +0 -0
  748. package/out/web/assets/inter-latin-500-normal-Cerq10X2.woff2 +0 -0
  749. package/out/web/assets/inter-latin-600-normal-CiBQ2DWP.woff +0 -0
  750. package/out/web/assets/inter-latin-600-normal-LgqL8muc.woff2 +0 -0
  751. package/out/web/assets/inter-latin-ext-400-normal-77YHD8bZ.woff +0 -0
  752. package/out/web/assets/inter-latin-ext-400-normal-C1nco2VV.woff2 +0 -0
  753. package/out/web/assets/inter-latin-ext-500-normal-BxGbmqWO.woff +0 -0
  754. package/out/web/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2 +0 -0
  755. package/out/web/assets/inter-latin-ext-600-normal-CIVaiw4L.woff +0 -0
  756. package/out/web/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2 +0 -0
  757. package/out/web/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff +0 -0
  758. package/out/web/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
  759. package/out/web/assets/inter-vietnamese-500-normal-DOriooB6.woff2 +0 -0
  760. package/out/web/assets/inter-vietnamese-500-normal-mJboJaSs.woff +0 -0
  761. package/out/web/assets/inter-vietnamese-600-normal-BuLX-rYi.woff +0 -0
  762. package/out/web/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2 +0 -0
  763. package/out/web/assets/kanit-latin-400-normal-BUlsQXH3.woff2 +0 -0
  764. package/out/web/assets/kanit-latin-400-normal-HVZWrfev.woff +0 -0
  765. package/out/web/assets/kanit-latin-500-normal-CX_4XcKi.woff2 +0 -0
  766. package/out/web/assets/kanit-latin-500-normal-qBha86O4.woff +0 -0
  767. package/out/web/assets/kanit-latin-600-normal-0lS78yAd.woff2 +0 -0
  768. package/out/web/assets/kanit-latin-600-normal-DlacpeTg.woff +0 -0
  769. package/out/web/assets/kanit-latin-ext-400-normal-B2xPf58u.woff2 +0 -0
  770. package/out/web/assets/kanit-latin-ext-400-normal-CHvNKHHD.woff +0 -0
  771. package/out/web/assets/kanit-latin-ext-500-normal-BFdWrG22.woff +0 -0
  772. package/out/web/assets/kanit-latin-ext-500-normal-EHs3suD6.woff2 +0 -0
  773. package/out/web/assets/kanit-latin-ext-600-normal-BBDzoLaj.woff +0 -0
  774. package/out/web/assets/kanit-latin-ext-600-normal-DAX3wtuq.woff2 +0 -0
  775. package/out/web/assets/kanit-thai-400-normal-D2nliXKa.woff +0 -0
  776. package/out/web/assets/kanit-thai-400-normal-D80Pglro.woff2 +0 -0
  777. package/out/web/assets/kanit-thai-500-normal-BB8gri04.woff2 +0 -0
  778. package/out/web/assets/kanit-thai-500-normal-Iy_w0a80.woff +0 -0
  779. package/out/web/assets/kanit-thai-600-normal-Bj6oiaDc.woff2 +0 -0
  780. package/out/web/assets/kanit-thai-600-normal-wbTlPO7I.woff +0 -0
  781. package/out/web/assets/kanit-vietnamese-400-normal-DRI8YWyb.woff2 +0 -0
  782. package/out/web/assets/kanit-vietnamese-400-normal-dow6Bnto.woff +0 -0
  783. package/out/web/assets/kanit-vietnamese-500-normal-BzTrpCM3.woff2 +0 -0
  784. package/out/web/assets/kanit-vietnamese-500-normal-T1ndT7MF.woff +0 -0
  785. package/out/web/assets/kanit-vietnamese-600-normal-Bi7fw3I4.woff2 +0 -0
  786. package/out/web/assets/kanit-vietnamese-600-normal-DXCRAa_8.woff +0 -0
  787. package/out/web/assets/mali-latin-400-normal-ByPcZ8Gx.woff +0 -0
  788. package/out/web/assets/mali-latin-400-normal-Cuc6Ykl8.woff2 +0 -0
  789. package/out/web/assets/mali-latin-500-normal-B01M-LP6.woff2 +0 -0
  790. package/out/web/assets/mali-latin-500-normal-Thgqw_9f.woff +0 -0
  791. package/out/web/assets/mali-latin-600-normal-B9TiUNpT.woff2 +0 -0
  792. package/out/web/assets/mali-latin-600-normal-CycpQCwU.woff +0 -0
  793. package/out/web/assets/mali-latin-ext-400-normal-DUVdJQO4.woff +0 -0
  794. package/out/web/assets/mali-latin-ext-400-normal-iCG1ALuJ.woff2 +0 -0
  795. package/out/web/assets/mali-latin-ext-500-normal-BfJE4UMZ.woff2 +0 -0
  796. package/out/web/assets/mali-latin-ext-500-normal-FoLEyOKS.woff +0 -0
  797. package/out/web/assets/mali-latin-ext-600-normal-BTvIfiCp.woff2 +0 -0
  798. package/out/web/assets/mali-latin-ext-600-normal-DAQcLVmD.woff +0 -0
  799. package/out/web/assets/mali-thai-400-normal-BO7A3bLZ.woff2 +0 -0
  800. package/out/web/assets/mali-thai-400-normal-CX9VrjTn.woff +0 -0
  801. package/out/web/assets/mali-thai-500-normal-Cph2qha9.woff +0 -0
  802. package/out/web/assets/mali-thai-500-normal-D89rMT77.woff2 +0 -0
  803. package/out/web/assets/mali-thai-600-normal-DPgXT6rZ.woff +0 -0
  804. package/out/web/assets/mali-thai-600-normal-DlTx3OsB.woff2 +0 -0
  805. package/out/web/assets/mali-vietnamese-400-normal-DUKxzXaz.woff2 +0 -0
  806. package/out/web/assets/mali-vietnamese-400-normal-gFDLvsOK.woff +0 -0
  807. package/out/web/assets/mali-vietnamese-500-normal--OY07q2c.woff +0 -0
  808. package/out/web/assets/mali-vietnamese-500-normal-KDrNRwfW.woff2 +0 -0
  809. package/out/web/assets/mali-vietnamese-600-normal-CtTMUU7T.woff +0 -0
  810. package/out/web/assets/mali-vietnamese-600-normal-DFlJr66u.woff2 +0 -0
  811. package/out/web/assets/mermaid.core-DYGGlqOf.js +0 -11
  812. package/out/web/assets/mitr-latin-400-normal-Cb18vPmZ.woff +0 -0
  813. package/out/web/assets/mitr-latin-400-normal-CwbkLQ4a.woff2 +0 -0
  814. package/out/web/assets/mitr-latin-500-normal-B4JOhzAi.woff +0 -0
  815. package/out/web/assets/mitr-latin-500-normal-BmClOow2.woff2 +0 -0
  816. package/out/web/assets/mitr-latin-ext-400-normal-B3CPG7Yo.woff2 +0 -0
  817. package/out/web/assets/mitr-latin-ext-400-normal-DTx65hiC.woff +0 -0
  818. package/out/web/assets/mitr-latin-ext-500-normal-B_Diajz1.woff2 +0 -0
  819. package/out/web/assets/mitr-latin-ext-500-normal-DYOsVaVT.woff +0 -0
  820. package/out/web/assets/mitr-thai-400-normal-CS4Do6aM.woff +0 -0
  821. package/out/web/assets/mitr-thai-400-normal-CXWaAdVj.woff2 +0 -0
  822. package/out/web/assets/mitr-thai-500-normal-CVdBrEVH.woff2 +0 -0
  823. package/out/web/assets/mitr-thai-500-normal-CW_B5D-i.woff +0 -0
  824. package/out/web/assets/mitr-vietnamese-400-normal-CPMGWyoC.woff2 +0 -0
  825. package/out/web/assets/mitr-vietnamese-400-normal-Z6XhIpdY.woff +0 -0
  826. package/out/web/assets/mitr-vietnamese-500-normal-CDrv0585.woff2 +0 -0
  827. package/out/web/assets/mitr-vietnamese-500-normal-CMQWyq-Z.woff +0 -0
  828. package/out/web/assets/noto-sans-thai-latin-400-normal-BaWBrqFP.woff2 +0 -0
  829. package/out/web/assets/noto-sans-thai-latin-400-normal-Dh_FJjOB.woff +0 -0
  830. package/out/web/assets/noto-sans-thai-latin-500-normal-BC04jsmm.woff +0 -0
  831. package/out/web/assets/noto-sans-thai-latin-500-normal-fyBKClF1.woff2 +0 -0
  832. package/out/web/assets/noto-sans-thai-latin-600-normal-CemcjnVR.woff2 +0 -0
  833. package/out/web/assets/noto-sans-thai-latin-600-normal-Dbc-dNO6.woff +0 -0
  834. package/out/web/assets/noto-sans-thai-latin-ext-400-normal-B-1H0YkH.woff +0 -0
  835. package/out/web/assets/noto-sans-thai-latin-ext-400-normal-nBP59pVw.woff2 +0 -0
  836. package/out/web/assets/noto-sans-thai-latin-ext-500-normal-B-ZWb8SZ.woff2 +0 -0
  837. package/out/web/assets/noto-sans-thai-latin-ext-500-normal-CrEHO7C8.woff +0 -0
  838. package/out/web/assets/noto-sans-thai-latin-ext-600-normal-PkMZo0xa.woff +0 -0
  839. package/out/web/assets/noto-sans-thai-latin-ext-600-normal-maHHBsez.woff2 +0 -0
  840. package/out/web/assets/noto-sans-thai-thai-400-normal-BEOmKAI1.woff2 +0 -0
  841. package/out/web/assets/noto-sans-thai-thai-400-normal-Dxb_unuU.woff +0 -0
  842. package/out/web/assets/noto-sans-thai-thai-500-normal-BOGXO2tw.woff +0 -0
  843. package/out/web/assets/noto-sans-thai-thai-500-normal-CU_X86GQ.woff2 +0 -0
  844. package/out/web/assets/noto-sans-thai-thai-600-normal-CmgB8_JK.woff +0 -0
  845. package/out/web/assets/noto-sans-thai-thai-600-normal-Cs73sVjl.woff2 +0 -0
  846. package/out/web/assets/oauthManager-DNiwM8Rn.js +0 -2
  847. package/out/web/assets/oauthManager-DuamS1Av.css +0 -1
  848. package/out/web/assets/outfit-latin-300-normal-AWLfuCom.woff +0 -0
  849. package/out/web/assets/outfit-latin-300-normal-CRYTwY6m.woff2 +0 -0
  850. package/out/web/assets/outfit-latin-400-normal-BGsTXAXT.woff2 +0 -0
  851. package/out/web/assets/outfit-latin-400-normal-DMwTpYkH.woff +0 -0
  852. package/out/web/assets/outfit-latin-500-normal-ClnHRwRh.woff +0 -0
  853. package/out/web/assets/outfit-latin-500-normal-DKnIMDSk.woff2 +0 -0
  854. package/out/web/assets/outfit-latin-600-normal-B7SfZ07L.woff2 +0 -0
  855. package/out/web/assets/outfit-latin-600-normal-BEfTtDA7.woff +0 -0
  856. package/out/web/assets/outfit-latin-ext-300-normal-BYS6Dpvq.woff2 +0 -0
  857. package/out/web/assets/outfit-latin-ext-300-normal-CMIMshEd.woff +0 -0
  858. package/out/web/assets/outfit-latin-ext-400-normal-5tcqmc2S.woff2 +0 -0
  859. package/out/web/assets/outfit-latin-ext-400-normal-DHm7mdGe.woff +0 -0
  860. package/out/web/assets/outfit-latin-ext-500-normal-DrCvqoFD.woff +0 -0
  861. package/out/web/assets/outfit-latin-ext-500-normal-zeox_O30.woff2 +0 -0
  862. package/out/web/assets/outfit-latin-ext-600-normal-B85nYjL1.woff2 +0 -0
  863. package/out/web/assets/outfit-latin-ext-600-normal-CWJcPgd7.woff +0 -0
  864. package/out/web/assets/preload-helper-D0uHx7FM.js +0 -1
  865. package/out/web/assets/prompt-latin-400-normal-BQ9zjSN8.woff2 +0 -0
  866. package/out/web/assets/prompt-latin-400-normal-CxU4ec_r.woff +0 -0
  867. package/out/web/assets/prompt-latin-500-normal-B1edBDQ9.woff +0 -0
  868. package/out/web/assets/prompt-latin-500-normal-CxzxEHZc.woff2 +0 -0
  869. package/out/web/assets/prompt-latin-600-normal-CSDDLorv.woff +0 -0
  870. package/out/web/assets/prompt-latin-600-normal-hKZWXsc1.woff2 +0 -0
  871. package/out/web/assets/prompt-latin-ext-400-normal-1pHbN9uy.woff +0 -0
  872. package/out/web/assets/prompt-latin-ext-400-normal-DdSafGZ9.woff2 +0 -0
  873. package/out/web/assets/prompt-latin-ext-500-normal--EZ1um7s.woff2 +0 -0
  874. package/out/web/assets/prompt-latin-ext-500-normal-D-lI1EVT.woff +0 -0
  875. package/out/web/assets/prompt-latin-ext-600-normal-C8b50x67.woff +0 -0
  876. package/out/web/assets/prompt-latin-ext-600-normal-Cg9L7iJU.woff2 +0 -0
  877. package/out/web/assets/prompt-thai-400-normal-BrkKv8cO.woff2 +0 -0
  878. package/out/web/assets/prompt-thai-400-normal-DJypnfr3.woff +0 -0
  879. package/out/web/assets/prompt-thai-500-normal-C18pDUoL.woff2 +0 -0
  880. package/out/web/assets/prompt-thai-500-normal-D7YNqUJD.woff +0 -0
  881. package/out/web/assets/prompt-thai-600-normal-CYPViXds.woff +0 -0
  882. package/out/web/assets/prompt-thai-600-normal-MrdfU7zR.woff2 +0 -0
  883. package/out/web/assets/prompt-vietnamese-400-normal-BCPzsgPT.woff2 +0 -0
  884. package/out/web/assets/prompt-vietnamese-400-normal-D4pLyeNK.woff +0 -0
  885. package/out/web/assets/prompt-vietnamese-500-normal-DmzxmPwa.woff2 +0 -0
  886. package/out/web/assets/prompt-vietnamese-500-normal-w_sS_j2F.woff +0 -0
  887. package/out/web/assets/prompt-vietnamese-600-normal-1dyohtNh.woff +0 -0
  888. package/out/web/assets/prompt-vietnamese-600-normal-7QWjJBsF.woff2 +0 -0
  889. package/out/web/assets/sarabun-latin-400-normal-DmguIS-7.woff +0 -0
  890. package/out/web/assets/sarabun-latin-400-normal-URPBxl-K.woff2 +0 -0
  891. package/out/web/assets/sarabun-latin-500-normal-BjUTcdxu.woff2 +0 -0
  892. package/out/web/assets/sarabun-latin-500-normal-CJexTAnl.woff +0 -0
  893. package/out/web/assets/sarabun-latin-600-normal-9FonlkKx.woff +0 -0
  894. package/out/web/assets/sarabun-latin-600-normal-DMD3TROr.woff2 +0 -0
  895. package/out/web/assets/sarabun-latin-ext-400-normal-BbP7GpLL.woff2 +0 -0
  896. package/out/web/assets/sarabun-latin-ext-400-normal-BsmTn0SS.woff +0 -0
  897. package/out/web/assets/sarabun-latin-ext-500-normal-Cot16Bd2.woff +0 -0
  898. package/out/web/assets/sarabun-latin-ext-500-normal-DE1LysqI.woff2 +0 -0
  899. package/out/web/assets/sarabun-latin-ext-600-normal-0tXu9x_i.woff +0 -0
  900. package/out/web/assets/sarabun-latin-ext-600-normal-BRxjKUQ6.woff2 +0 -0
  901. package/out/web/assets/sarabun-thai-400-normal-C2DaJlKK.woff2 +0 -0
  902. package/out/web/assets/sarabun-thai-400-normal-CH-UbWgg.woff +0 -0
  903. package/out/web/assets/sarabun-thai-500-normal-BVssjame.woff2 +0 -0
  904. package/out/web/assets/sarabun-thai-500-normal-C3iDLEzi.woff +0 -0
  905. package/out/web/assets/sarabun-thai-600-normal-3dIAQ-_s.woff2 +0 -0
  906. package/out/web/assets/sarabun-thai-600-normal-DWKeTe6a.woff +0 -0
  907. package/out/web/assets/sarabun-vietnamese-400-normal-DPfkSCMy.woff +0 -0
  908. package/out/web/assets/sarabun-vietnamese-400-normal-igdrzAGY.woff2 +0 -0
  909. package/out/web/assets/sarabun-vietnamese-500-normal-CpRVvGRU.woff +0 -0
  910. package/out/web/assets/sarabun-vietnamese-500-normal-Dpe7Br9m.woff2 +0 -0
  911. package/out/web/assets/sarabun-vietnamese-600-normal-BMbOgAW-.woff +0 -0
  912. package/out/web/assets/sarabun-vietnamese-600-normal-DkxrOlLB.woff2 +0 -0
  913. package/out/web/assets/stateDiagram-v2-4QOOHH4V-s6P9g2_b.js +0 -1
  914. package/out/web/assets/swimlanesDiagram-VK2B7HYN-CV9fOLrV.js +0 -8
  915. package/out/web/assets/tauri-CNrHQ2Gb.js +0 -3
  916. package/out/web/assets/window-DkIhgI7B.js +0 -1
  917. package/skills-lock.json +0 -41
  918. package/src/renderer/public/Live2DCubismCore.js +0 -9
  919. package/src/renderer/src/companionWidget.ts +0 -95
  920. package/src/renderer/src/components/Live2DStage.tsx +0 -389
  921. package/src/renderer/src/components/ModelPanel.tsx +0 -154
  922. package/src/renderer/src/css/model.css +0 -627
  923. package/src/renderer/src-web/companionWidget.ts +0 -37
  924. package/src/renderer/src-web/components/ModelPanel.tsx +0 -12
  925. package/src/renderer/src-web/css/model.css +0 -628
@@ -1,10 +1,122 @@
1
1
  /* desktop: sidebar-workspace.css — split from styles.css, rules kept in original order */
2
2
 
3
- .toggle-model-btn,
4
- .change-expression-btn,
5
- .accessory-cycle-btn,
6
- .toggle-interaction-btn,
7
- .interaction-guide-btn,
3
+ .workspace-file-menu {
4
+ position: fixed;
5
+ z-index: 10000;
6
+ width: 184px;
7
+ padding: 4px;
8
+ border: 1px solid var(--border-default);
9
+ border-radius: var(--radius-md, 8px);
10
+ background: var(--bg-surface-raised, #202126);
11
+ box-shadow: var(--shadow-lg, 0 8px 24px rgba(0, 0, 0, .3));
12
+ -webkit-app-region: no-drag;
13
+ }
14
+
15
+ .workspace-file-menu button {
16
+ width: 100%;
17
+ padding: 8px 10px;
18
+ border: 0;
19
+ border-radius: var(--radius-sm, 5px);
20
+ background: transparent;
21
+ color: var(--text-primary);
22
+ font: inherit;
23
+ font-size: .8rem;
24
+ text-align: left;
25
+ cursor: pointer;
26
+ }
27
+
28
+ .workspace-file-menu button:not(:disabled):hover,
29
+ .workspace-file-menu button:not(:disabled):focus-visible {
30
+ background: var(--bg-surface-hover);
31
+ }
32
+
33
+ .workspace-file-menu button:focus-visible {
34
+ outline: 2px solid var(--border-focus);
35
+ outline-offset: -2px;
36
+ }
37
+
38
+ .workspace-file-menu button.is-danger {
39
+ color: var(--status-error);
40
+ }
41
+
42
+ .workspace-file-menu button.is-danger:not(:disabled):hover,
43
+ .workspace-file-menu button.is-danger:not(:disabled):focus-visible {
44
+ background: color-mix(in srgb, var(--status-error) 12%, transparent);
45
+ }
46
+
47
+ .workspace-file-menu button:disabled {
48
+ color: var(--text-muted);
49
+ cursor: default;
50
+ }
51
+
52
+ .workspace-undo-bar {
53
+ margin: 12px 8px;
54
+ padding: 10px;
55
+ border: 1px solid var(--border-default);
56
+ border-radius: var(--radius-md, 8px);
57
+ background: var(--bg-surface-raised);
58
+ color: var(--text-primary);
59
+ font-size: .78rem;
60
+ overflow-wrap: anywhere;
61
+ }
62
+ .workspace-undo-bar > span { display: block; margin-bottom: 6px; }
63
+ .workspace-undo-bar button {
64
+ border: 0;
65
+ border-radius: var(--radius-sm, 5px);
66
+ padding: 6px 8px;
67
+ background: var(--bg-surface-hover);
68
+ color: var(--text-primary);
69
+ font: inherit;
70
+ text-align: left;
71
+ cursor: pointer;
72
+ }
73
+ .workspace-undo-bar button:disabled { opacity: .5; cursor: default; }
74
+ .workspace-undo-bar details { margin-top: 8px; color: var(--text-muted); }
75
+ .workspace-undo-bar summary { cursor: pointer; }
76
+ .workspace-undo-bar ol { padding-left: 18px; }
77
+ .workspace-undo-bar li { margin: 6px 0; }
78
+ .workspace-history-error { padding: 10px; color: var(--color-danger, #f87171); font-size: .8rem; }
79
+ .workspace-file-dialog-backdrop {
80
+ position: fixed;
81
+ inset: 0;
82
+ z-index: 10001;
83
+ display: grid;
84
+ place-items: center;
85
+ padding: 20px;
86
+ background: rgba(0, 0, 0, .45);
87
+ }
88
+ .workspace-file-dialog {
89
+ width: min(420px, 100%);
90
+ padding: 20px;
91
+ border: 1px solid var(--border-default);
92
+ border-radius: var(--radius-md, 8px);
93
+ background: var(--bg-surface-raised, #202126);
94
+ color: var(--text-primary);
95
+ box-shadow: var(--shadow-lg);
96
+ }
97
+ .workspace-file-dialog h3 { margin: 0 0 16px; overflow-wrap: anywhere; }
98
+ .workspace-file-dialog label { display: grid; gap: 8px; font-size: .85rem; }
99
+ .workspace-file-dialog input {
100
+ width: 100%;
101
+ padding: 8px;
102
+ border: 1px solid var(--border-default);
103
+ border-radius: var(--radius-sm, 5px);
104
+ background: var(--bg-surface);
105
+ color: var(--text-primary);
106
+ font: inherit;
107
+ box-sizing: border-box;
108
+ }
109
+ .workspace-file-dialog p { color: var(--color-danger, #f87171); font-size: .8rem; }
110
+ .workspace-file-dialog > div { display: flex; justify-content: flex-end; gap: 8px; margin-top: 16px; }
111
+ .workspace-file-dialog button {
112
+ padding: 7px 12px;
113
+ border: 1px solid var(--border-default);
114
+ border-radius: var(--radius-sm, 5px);
115
+ background: var(--bg-surface-hover);
116
+ color: var(--text-primary);
117
+ font: inherit;
118
+ cursor: pointer;
119
+ }
8
120
  .clear-btn,
9
121
  .settings-btn {
10
122
  -webkit-app-region: no-drag;
@@ -26,43 +138,21 @@
26
138
  white-space: nowrap;
27
139
  transition: background 0.18s ease, border-color 0.18s ease, color 0.18s ease;
28
140
  }
29
-
30
- .toggle-model-btn svg,
31
- .change-expression-btn svg,
32
- .accessory-cycle-btn svg,
33
- .toggle-interaction-btn svg,
34
- .interaction-guide-btn svg,
35
141
  .clear-btn svg,
36
142
  .settings-btn svg {
37
143
  flex: 0 0 auto;
38
144
  }
39
145
 
40
- .change-expression-btn:hover {
41
- background: rgba(251, 191, 36, 0.15);
42
- border-color: rgba(251, 191, 36, 0.2);
43
- color: #fbbf24;
44
- }
45
-
46
- .toggle-interaction-btn .interaction-off-mark {
47
- opacity: 0;
48
- }
49
-
50
- .interaction-guide-btn:hover {
51
- background: rgba(34, 211, 238, 0.14);
52
- border-color: rgba(34, 211, 238, 0.2);
53
- color: #67e8f9;
54
- }
55
-
56
146
  .clear-btn:hover {
57
- background: rgba(251, 191, 36, 0.15);
58
- border-color: rgba(251, 191, 36, 0.2);
59
- color: #fbbf24;
147
+ background: color-mix(in srgb, var(--flavor-amber) 15%, transparent);
148
+ border-color: color-mix(in srgb, var(--flavor-amber) 20%, transparent);
149
+ color: var(--flavor-amber);
60
150
  }
61
151
 
62
152
  .settings-btn:hover {
63
153
  background: color-mix(in srgb, var(--accent) 15%, transparent);
64
154
  border-color: color-mix(in srgb, var(--accent) 20%, transparent);
65
- color: var(--accent);
155
+ color: var(--interactive-fg);
66
156
  }
67
157
 
68
158
  .sidebar-toggle {
@@ -128,12 +218,16 @@
128
218
  }
129
219
  }
130
220
 
221
+ .sidebar-mobile-close {
222
+ display: none;
223
+ }
224
+
131
225
  .sidebar-brand {
132
226
  display: flex;
133
227
  align-items: center;
134
228
  gap: 10px;
135
229
  padding: 0 8px 16px 2px;
136
- border-bottom: 1px solid rgba(255, 255, 255, 0.05);
230
+ border-bottom: 1px solid var(--border-subtle);
137
231
  margin-bottom: 14px;
138
232
  overflow: hidden;
139
233
  transition: all 0.22s ease;
@@ -147,7 +241,7 @@
147
241
  }
148
242
 
149
243
  .sidebar-brand.clickable:hover .sidebar-brand-name {
150
- color: var(--accent-hover);
244
+ color: var(--interactive-fg-hover);
151
245
  }
152
246
 
153
247
  .sidebar-brand.clickable:hover .sidebar-logo {
@@ -203,10 +297,10 @@
203
297
  }
204
298
 
205
299
  .sidebar-new-chat {
206
- background: var(--surface-strong);
207
- color: var(--text-main);
300
+ background: var(--bg-surface-raised);
301
+ color: var(--text-primary);
208
302
  margin-bottom: 4px;
209
- border: 1px solid var(--border);
303
+ border: 1px solid var(--border-default);
210
304
  }
211
305
 
212
306
  .sidebar-new-chat:hover,
@@ -217,8 +311,8 @@
217
311
  .sidebar-settings:hover,
218
312
  .sidebar-bottom-actions .clear-btn:hover,
219
313
  .sidebar-bottom-actions .settings-btn:hover {
220
- background: var(--surface-strong);
221
- color: var(--text-main);
314
+ background: var(--bg-surface-hover);
315
+ color: var(--text-primary);
222
316
  }
223
317
 
224
318
  .sidebar-account-container {
@@ -233,9 +327,9 @@
233
327
  width: 100%;
234
328
  padding: 8px;
235
329
  border-radius: var(--radius-lg);
236
- border: 1px solid var(--border);
237
- background: var(--panel-raised);
238
- color: inherit;
330
+ border: 1px solid var(--border-default);
331
+ background: var(--bg-surface-raised);
332
+ color: var(--text-primary);
239
333
  font: inherit;
240
334
  text-align: left;
241
335
  cursor: pointer;
@@ -243,7 +337,7 @@
243
337
  }
244
338
 
245
339
  .sidebar-account:hover {
246
- background: var(--surface-strong);
340
+ background: var(--bg-surface-hover);
247
341
  }
248
342
 
249
343
  .sidebar-account-chevron {
@@ -260,22 +354,21 @@
260
354
  right: 0;
261
355
  bottom: calc(100% + 8px);
262
356
  z-index: 1000;
263
- background: var(--surface-strong);
264
- border: 1px solid var(--border);
265
- border-radius: var(--radius-lg);
357
+ background: var(--bg-surface-raised);
358
+ border: 1px solid var(--border-default);
359
+ border-radius: var(--radius-lg, 12px);
266
360
  padding: 6px;
267
361
  display: flex;
268
362
  flex-direction: column;
269
363
  gap: 4px;
270
- box-shadow: var(--shadow-md);
271
- backdrop-filter: blur(12px);
272
- -webkit-backdrop-filter: blur(12px);
364
+ box-shadow: var(--shadow-lg);
273
365
  }
274
366
 
275
367
  .sidebar-account-menu-header {
276
- padding: 6px 10px 8px;
368
+ padding: 8px 12px 6px;
277
369
  color: var(--text-muted);
278
- font-size: 0.72rem;
370
+ font-size: 0.74rem;
371
+ font-weight: 600;
279
372
  overflow: hidden;
280
373
  text-overflow: ellipsis;
281
374
  white-space: nowrap;
@@ -284,53 +377,7 @@
284
377
  .sidebar-account-menu-divider {
285
378
  height: 1px;
286
379
  margin: 4px 2px;
287
- background: var(--border);
288
- }
289
-
290
- .sidebar-account-avatar {
291
- flex-shrink: 0;
292
- width: 30px;
293
- height: 30px;
294
- border-radius: 50%;
295
- overflow: hidden;
296
- display: flex;
297
- align-items: center;
298
- justify-content: center;
299
- background: var(--accent);
300
- color: #06120c;
301
- font-size: 0.72rem;
302
- font-weight: 700;
303
- }
304
-
305
- .sidebar-account-avatar img {
306
- width: 100%;
307
- height: 100%;
308
- object-fit: cover;
309
- }
310
-
311
- .sidebar-account-info {
312
- flex: 1;
313
- min-width: 0;
314
- display: flex;
315
- flex-direction: column;
316
- line-height: 1.25;
317
- }
318
-
319
- .sidebar-account-name {
320
- font-size: 0.78rem;
321
- font-weight: 600;
322
- color: var(--text-main);
323
- overflow: hidden;
324
- text-overflow: ellipsis;
325
- white-space: nowrap;
326
- }
327
-
328
- .sidebar-top-action {
329
- margin-bottom: 4px;
330
- }
331
-
332
- .sidebar-top-action:last-of-type {
333
- margin-bottom: 12px;
380
+ background: var(--border-subtle);
334
381
  }
335
382
 
336
383
  .sidebar-more-container {
@@ -345,117 +392,135 @@
345
392
  top: 0;
346
393
  margin-left: 8px;
347
394
  z-index: 1000;
348
- background: var(--surface-strong);
349
- border: 1px solid var(--border);
350
- border-radius: var(--radius-md);
395
+ background: var(--bg-surface-raised);
396
+ border: 1px solid var(--border-default);
397
+ border-radius: var(--radius-md, 8px);
351
398
  padding: 6px;
352
399
  min-width: 160px;
353
400
  display: flex;
354
401
  flex-direction: column;
355
402
  gap: 4px;
356
- box-shadow: var(--shadow-md);
357
- backdrop-filter: blur(12px);
358
- -webkit-backdrop-filter: blur(12px);
403
+ box-shadow: var(--shadow-lg);
359
404
  }
360
405
 
361
406
  .sidebar-more-popover .popover-item,
362
407
  .sidebar-account-menu .popover-item {
363
408
  width: 100%;
364
- height: 32px;
409
+ height: 36px;
365
410
  display: flex;
366
411
  align-items: center;
367
- gap: 9px;
412
+ gap: 10px;
368
413
  border: 0;
369
- border-radius: var(--radius-sm);
414
+ border-radius: var(--radius-sm, 6px);
370
415
  background: transparent;
371
- color: var(--text-soft);
416
+ color: var(--text-primary);
417
+ font-weight: 500;
372
418
  cursor: pointer;
373
- padding: 0 10px;
419
+ padding: 0 12px;
374
420
  text-align: left;
375
421
  font: inherit;
376
422
  font-size: 0.9rem;
377
- transition: background 0.16s ease, color 0.16s ease;
423
+ transition: background 0.15s ease, color 0.15s ease;
378
424
  }
379
425
 
380
426
  .sidebar-more-popover .popover-item:hover,
381
427
  .sidebar-more-popover .popover-item.active,
382
428
  .sidebar-account-menu .popover-item:hover,
383
429
  .sidebar-account-menu .popover-item.active {
384
- background: var(--surface-main);
385
- color: var(--text-main);
430
+ background: var(--bg-surface-hover);
431
+ color: var(--text-primary);
386
432
  }
387
433
 
388
- .sidebar-model-controls {
389
- display: grid;
390
- width: 100%;
391
- align-items: stretch;
392
- justify-items: stretch;
393
- justify-content: stretch;
394
- gap: 2px;
395
- padding: 10px 0 18px;
396
- border-top: 1px solid rgba(255, 255, 255, 0.035);
397
- border-bottom: 1px solid rgba(255, 255, 255, 0.035);
398
- margin-bottom: 6px;
434
+ .sidebar-account-avatar {
435
+ flex-shrink: 0;
436
+ width: 30px;
437
+ height: 30px;
438
+ border-radius: 50%;
439
+ overflow: hidden;
440
+ display: flex;
441
+ align-items: center;
442
+ justify-content: center;
443
+ background: var(--accent);
444
+ color: var(--text-on-accent);
445
+ font-size: 0.72rem;
446
+ font-weight: 700;
399
447
  }
400
448
 
401
- .workspace-sidebar .toggle-model-btn,
402
- .workspace-sidebar .change-expression-btn,
403
- .workspace-sidebar .accessory-cycle-btn,
404
- .workspace-sidebar .toggle-interaction-btn,
405
- .workspace-sidebar .interaction-guide-btn {
449
+ .sidebar-account-avatar img {
406
450
  width: 100%;
451
+ height: 100%;
452
+ object-fit: cover;
453
+ }
454
+
455
+ .sidebar-account-info {
456
+ flex: 1;
407
457
  min-width: 0;
408
- max-width: none;
409
- height: 32px;
410
- justify-content: flex-start;
411
- padding: 0 10px;
412
- color: var(--text-soft);
413
- font-weight: 400;
414
- gap: 9px;
458
+ display: flex;
459
+ flex-direction: column;
460
+ line-height: 1.25;
415
461
  }
416
462
 
417
- .workspace-sidebar .toggle-model-btn:hover,
418
- .workspace-sidebar .toggle-model-btn.active,
419
- .workspace-sidebar .change-expression-btn:hover,
420
- .workspace-sidebar .accessory-cycle-btn:hover,
421
- .workspace-sidebar .accessory-cycle-btn.active,
422
- .workspace-sidebar .toggle-interaction-btn:hover,
423
- .workspace-sidebar .toggle-interaction-btn.active,
424
- .workspace-sidebar .interaction-guide-btn:hover,
425
- .workspace-sidebar .interaction-guide-btn.active {
426
- background: var(--surface-strong);
427
- border-color: transparent;
463
+ .sidebar-account-name {
464
+ font-size: 0.78rem;
465
+ font-weight: 600;
428
466
  color: var(--text-main);
467
+ overflow: hidden;
468
+ text-overflow: ellipsis;
469
+ white-space: nowrap;
470
+ }
471
+
472
+ .sidebar-top-action {
473
+ margin-bottom: 4px;
474
+ }
475
+
476
+ .sidebar-top-action:last-of-type {
477
+ margin-bottom: 12px;
429
478
  }
430
479
 
431
480
  .sidebar-section {
432
- flex: 1;
481
+ flex: 1 1 0;
433
482
  min-height: 0;
434
- overflow: hidden;
483
+ overflow-y: auto;
484
+ overflow-x: hidden;
485
+ overscroll-behavior: contain;
435
486
  padding-top: 6px;
436
- border-top: 1px solid rgba(255, 255, 255, 0.035);
487
+ padding-right: 2px;
488
+ padding-bottom: 12px;
489
+ border-top: 1px solid var(--border-subtle);
437
490
  display: flex;
438
491
  flex-direction: column;
492
+ scrollbar-color: color-mix(in srgb, var(--text-muted) 38%, transparent) transparent;
493
+ scrollbar-width: thin;
439
494
  }
440
495
 
441
- .sidebar-chat-list.sidebar-cli-list {
442
- flex: 0 0 auto;
496
+ .sidebar-section::-webkit-scrollbar {
497
+ width: 6px;
443
498
  }
444
499
 
445
- .sidebar-chat-list:not(.sidebar-cli-list) {
446
- flex: 1 1 auto;
447
- min-height: 0;
500
+ .sidebar-section::-webkit-scrollbar-track {
501
+ background: transparent;
502
+ }
503
+
504
+ .sidebar-section::-webkit-scrollbar-thumb {
505
+ border: 1px solid transparent;
506
+ border-radius: var(--radius-full);
507
+ background: color-mix(in srgb, var(--text-muted) 38%, transparent);
508
+ background-clip: padding-box;
448
509
  }
449
510
 
450
511
  .sidebar-section-title {
451
- padding: 0 10px 12px;
452
- color: var(--text-muted);
453
- font-size: 0.9rem;
512
+ padding: 8px 10px 6px;
513
+ color: var(--text-muted, #94a3b8);
514
+ font-size: 0.76rem;
515
+ font-weight: 600;
516
+ text-transform: none;
517
+ letter-spacing: 0.05em;
518
+ flex-shrink: 0;
454
519
  }
455
520
 
456
521
  .sidebar-subsection-title {
457
522
  padding-top: 14px;
458
- padding-bottom: 8px;
523
+ padding-bottom: 6px;
459
524
  }
460
525
 
461
526
  .sidebar-section-title.clickable {
@@ -469,51 +534,50 @@
469
534
  }
470
535
 
471
536
  .sidebar-project {
472
- height: 32px;
537
+ height: 36px;
473
538
  display: flex;
474
539
  align-items: center;
475
540
  gap: 9px;
476
541
  padding: 0 10px;
477
- color: var(--text-muted);
478
- border-radius: 3px;
542
+ color: var(--text-secondary);
543
+ border-radius: 7px;
479
544
  white-space: nowrap;
480
545
  overflow: hidden;
481
546
  text-overflow: ellipsis;
482
547
  border: 0;
483
548
  background: transparent;
484
549
  width: 100%;
485
- cursor: default;
550
+ cursor: pointer;
486
551
  text-align: left;
552
+ transition: background 0.14s ease, color 0.14s ease;
553
+ font-size: 0.89rem;
554
+ flex-shrink: 0;
487
555
  }
488
556
 
489
- .sidebar-chat-list {
490
- display: grid;
491
- gap: 0px;
492
- max-height: 360px;
493
- overflow-y: auto;
494
- padding-right: 2px;
495
- scrollbar-color: color-mix(in srgb, var(--text-muted) 38%, transparent) transparent;
496
- scrollbar-width: thin;
497
- }
498
-
499
- .sidebar-chat-list::-webkit-scrollbar {
500
- width: 8px;
557
+ .sidebar-chat-list.sidebar-cli-list {
558
+ flex: 0 0 auto;
559
+ display: flex;
560
+ flex-direction: column;
561
+ gap: 3px;
501
562
  }
502
563
 
503
- .sidebar-chat-list::-webkit-scrollbar-thumb {
504
- border: 2px solid transparent;
505
- border-radius: var(--radius-full);
506
- background: color-mix(in srgb, var(--text-muted) 38%, transparent);
507
- background-clip: padding-box;
564
+ .sidebar-chat-list:not(.sidebar-cli-list) {
565
+ flex: 0 0 auto;
566
+ display: flex;
567
+ flex-direction: column;
568
+ gap: 3px;
508
569
  }
509
570
 
510
571
  .sidebar-chat-item {
511
572
  cursor: pointer;
573
+ color: var(--text-secondary);
512
574
  }
513
575
 
514
- .sidebar-chat-item:hover {
515
- background: var(--surface-strong);
516
- color: var(--text-main);
576
+ .sidebar-chat-item:hover,
577
+ .sidebar-project:hover,
578
+ .sidebar-project.active {
579
+ background: var(--bg-surface-hover);
580
+ color: var(--text-primary);
517
581
  }
518
582
 
519
583
  .sidebar-chat-title {
@@ -522,29 +586,32 @@
522
586
  overflow: hidden;
523
587
  text-overflow: ellipsis;
524
588
  white-space: nowrap;
589
+ font-size: 0.89rem;
590
+ line-height: 1.45;
591
+ color: var(--text-primary);
525
592
  }
526
593
 
527
594
  .sidebar-chat-delete {
528
- width: 24px;
529
- height: 24px;
595
+ width: 26px;
596
+ height: 26px;
530
597
  margin-left: 2px;
531
598
  display: inline-flex;
532
599
  align-items: center;
533
600
  justify-content: center;
534
- border-radius: var(--radius-xs);
601
+ border-radius: var(--radius-xs, 4px);
535
602
  color: var(--text-muted);
536
603
  opacity: 0;
537
604
  flex: 0 0 auto;
538
605
  }
539
606
 
540
607
  .sidebar-chat-edit {
541
- width: 24px;
542
- height: 24px;
608
+ width: 26px;
609
+ height: 26px;
543
610
  margin-left: auto;
544
611
  display: inline-flex;
545
612
  align-items: center;
546
613
  justify-content: center;
547
- border-radius: var(--radius-xs);
614
+ border-radius: var(--radius-xs, 4px);
548
615
  color: var(--text-muted);
549
616
  opacity: 0;
550
617
  flex: 0 0 auto;
@@ -567,11 +634,59 @@
567
634
  background: var(--hover-edit-bg);
568
635
  }
569
636
 
637
+ .sidebar-chat-edit,
638
+ .sidebar-chat-delete { display: none !important; }
639
+ .sidebar-conversation-menu-trigger {
640
+ display: inline-flex;
641
+ align-items: center;
642
+ justify-content: center;
643
+ width: 24px;
644
+ height: 24px;
645
+ margin-left: auto;
646
+ flex: 0 0 auto;
647
+ border-radius: var(--radius-xs, 4px);
648
+ color: var(--text-muted);
649
+ opacity: 0;
650
+ cursor: pointer;
651
+ }
652
+ .sidebar-chat-item:hover .sidebar-conversation-menu-trigger,
653
+ .sidebar-conversation-menu-trigger:focus-visible { opacity: 1; }
654
+ .sidebar-conversation-menu-trigger:hover { color: var(--text-primary); background: var(--bg-surface-hover); }
655
+ .sidebar-conversation-menu-popover {
656
+ position: fixed;
657
+ z-index: 1000;
658
+ width: 190px;
659
+ padding: 4px;
660
+ border: 1px solid var(--border-subtle, rgba(255,255,255,.12));
661
+ border-radius: var(--radius-md, 8px);
662
+ background: var(--bg-surface, #202126);
663
+ box-shadow: 0 8px 24px rgba(0,0,0,.3);
664
+ }
665
+ .sidebar-conversation-menu-popover button {
666
+ display: flex;
667
+ gap: 8px;
668
+ align-items: center;
669
+ width: 100%;
670
+ padding: 7px 8px;
671
+ border: 0;
672
+ border-radius: var(--radius-sm, 5px);
673
+ color: var(--text-primary);
674
+ background: transparent;
675
+ text-align: left;
676
+ font-size: .8rem;
677
+ cursor: pointer;
678
+ }
679
+ .sidebar-conversation-menu-popover button:hover { background: var(--bg-surface-hover); }
680
+ .sidebar-conversation-menu-popover button.is-destructive { color: var(--color-danger, #f87171); }
681
+ .sidebar-conversation-menu-popover button span { flex: 1; }
682
+ .workspace-sidebar .sidebar-menu-icon { flex: 0 0 14px; }
683
+ @media (pointer: coarse) { .sidebar-conversation-menu-trigger { opacity: 1; } }
684
+
570
685
  .sidebar-chat-rename-input {
571
- background: rgba(255, 255, 255, 0.08);
572
- border: 1px solid rgba(255, 255, 255, 0.16);
686
+ background: var(--bg-input);
687
+ border: 1px solid var(--border-default);
573
688
  border-radius: var(--radius-xs);
574
- color: var(--text-main);
689
+ color: var(--text-primary);
575
690
  font-family: inherit;
576
691
  font-size: 0.82rem;
577
692
  padding: 2px 6px;
@@ -583,23 +698,17 @@
583
698
 
584
699
  .sidebar-chat-rename-input:focus {
585
700
  border-color: var(--accent);
586
- background: rgba(255, 255, 255, 0.12);
701
+ background: var(--bg-input-focus);
587
702
  }
588
703
 
589
704
  .sidebar-chat-item.active:hover .mint-status-pill {
590
705
  display: none;
591
706
  }
592
-
593
707
  .app-body.sidebar-collapsed .sidebar-new-chat,
594
708
  .app-body.sidebar-collapsed .sidebar-top-action,
595
709
  .app-body.sidebar-collapsed .sidebar-settings,
596
710
  .app-body.sidebar-collapsed .sidebar-bottom-actions .clear-btn,
597
711
  .app-body.sidebar-collapsed .sidebar-bottom-actions .settings-btn,
598
- .app-body.sidebar-collapsed .workspace-sidebar .toggle-model-btn,
599
- .app-body.sidebar-collapsed .workspace-sidebar .change-expression-btn,
600
- .app-body.sidebar-collapsed .workspace-sidebar .accessory-cycle-btn,
601
- .app-body.sidebar-collapsed .workspace-sidebar .toggle-interaction-btn,
602
- .app-body.sidebar-collapsed .workspace-sidebar .interaction-guide-btn,
603
712
  .app-body.sidebar-collapsed .sidebar-project {
604
713
  width: 40px;
605
714
  height: 34px;
@@ -630,17 +739,117 @@
630
739
  gap: 4px;
631
740
  }
632
741
 
633
- .app-body.sidebar-collapsed .sidebar-account {
634
- width: 40px;
635
- margin: 0 auto;
636
- padding: 4px;
637
- justify-content: center;
638
- gap: 0;
639
- }
640
-
641
- .app-body.sidebar-collapsed .sidebar-account-info,
642
- .app-body.sidebar-collapsed .sidebar-account-chevron {
643
- display: none;
742
+ /* Collapsed Sessions Rail */
743
+ .sidebar-collapsed-sessions {
744
+ flex: 1 1 0;
745
+ min-height: 0;
746
+ overflow-y: auto;
747
+ overflow-x: hidden;
748
+ display: flex;
749
+ flex-direction: column;
750
+ align-items: center;
751
+ gap: 4px;
752
+ padding: 8px 0;
753
+ margin-top: 4px;
754
+ width: 100%;
755
+ border-top: 1px solid var(--border-subtle);
756
+ scrollbar-width: none;
757
+ }
758
+
759
+ .sidebar-collapsed-sessions::-webkit-scrollbar {
760
+ display: none;
761
+ }
762
+
763
+ .sidebar-collapsed-item {
764
+ position: relative;
765
+ width: 40px;
766
+ height: 34px;
767
+ display: flex;
768
+ align-items: center;
769
+ justify-content: center;
770
+ background: transparent;
771
+ border: 1px solid transparent;
772
+ border-radius: var(--radius-sm, 6px);
773
+ color: var(--text-soft, #94a3b8);
774
+ cursor: pointer;
775
+ transition: all 0.16s ease;
776
+ flex-shrink: 0;
777
+ padding: 0;
778
+ }
779
+
780
+ .sidebar-collapsed-item:hover {
781
+ background: var(--bg-surface-hover, rgba(255, 255, 255, 0.08));
782
+ color: var(--text-primary, #ffffff);
783
+ border-color: rgba(255, 255, 255, 0.08);
784
+ }
785
+
786
+ .sidebar-collapsed-item.is-active {
787
+ background: var(--bg-surface-active, rgba(255, 255, 255, 0.12));
788
+ color: var(--text-main);
789
+ border-color: rgba(255, 255, 255, 0.15);
790
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.25);
791
+ }
792
+
793
+ .sidebar-collapsed-dot {
794
+ position: absolute;
795
+ right: 6px;
796
+ top: 6px;
797
+ width: 6px;
798
+ height: 6px;
799
+ border-radius: 50%;
800
+ background: var(--accent, #6366f1);
801
+ box-shadow: 0 0 6px var(--accent, #6366f1);
802
+ }
803
+
804
+ .app-body.sidebar-collapsed .sidebar-account-container {
805
+ margin-top: auto;
806
+ padding-top: 6px;
807
+ border-top: 1px solid var(--border-subtle);
808
+ display: flex;
809
+ justify-content: center;
810
+ width: 100%;
811
+ }
812
+
813
+ .app-body.sidebar-collapsed .sidebar-account {
814
+ width: 36px;
815
+ height: 36px;
816
+ margin: 0 auto;
817
+ padding: 0;
818
+ justify-content: center;
819
+ align-items: center;
820
+ border-radius: 50%;
821
+ border: 1px solid var(--border-default);
822
+ background: var(--bg-surface-raised);
823
+ overflow: hidden;
824
+ box-sizing: border-box;
825
+ }
826
+
827
+ .app-body.sidebar-collapsed .sidebar-account:hover {
828
+ border-color: var(--accent);
829
+ box-shadow: 0 0 8px color-mix(in srgb, var(--accent) 30%, transparent);
830
+ }
831
+
832
+ .app-body.sidebar-collapsed .sidebar-account-avatar {
833
+ width: 100%;
834
+ height: 100%;
835
+ border-radius: 50%;
836
+ overflow: hidden;
837
+ display: flex;
838
+ align-items: center;
839
+ justify-content: center;
840
+ font-size: 0.85rem;
841
+ font-weight: 600;
842
+ }
843
+
844
+ .app-body.sidebar-collapsed .sidebar-account-avatar img {
845
+ width: 100%;
846
+ height: 100%;
847
+ object-fit: cover;
848
+ }
849
+
850
+ .app-body.sidebar-collapsed .sidebar-account-info,
851
+ .app-body.sidebar-collapsed .sidebar-account-chevron {
852
+ display: none;
644
853
  }
645
854
 
646
855
  .app-body.sidebar-collapsed .sidebar-account-menu {
@@ -651,6 +860,14 @@
651
860
  min-width: 200px;
652
861
  }
653
862
 
863
+ .sidebar-generating-text {
864
+ margin-left: auto;
865
+ font-size: 0.72rem;
866
+ font-weight: 500;
867
+ color: var(--interactive-fg);
868
+ opacity: 0.85;
869
+ }
870
+
654
871
  .mint-status-pill {
655
872
  margin-left: auto;
656
873
  min-width: 0;
@@ -659,7 +876,7 @@
659
876
  gap: 6px;
660
877
  padding: 3px 7px;
661
878
  border-radius: var(--radius-full);
662
- background: rgba(255, 255, 255, 0.055);
879
+ background: var(--bg-surface-soft);
663
880
  color: var(--text-muted);
664
881
  font-size: 0.68rem;
665
882
  line-height: 1;
@@ -670,8 +887,8 @@
670
887
  width: 7px;
671
888
  height: 7px;
672
889
  border-radius: 50%;
673
- background: #94a3b8;
674
- box-shadow: 0 0 0 3px rgba(148, 163, 184, 0.12);
890
+ background: var(--text-muted);
891
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--text-muted) 12%, transparent);
675
892
  flex: 0 0 auto;
676
893
  }
677
894
 
@@ -749,117 +966,190 @@
749
966
  gap: 2px;
750
967
  margin-top: auto;
751
968
  padding-top: 10px;
752
- border-top: 1px solid rgba(255, 255, 255, 0.035);
969
+ border-top: 1px solid var(--border);
753
970
  }
754
971
 
972
+ /* Workspace file explorer
973
+ A compact, flat tool surface: hierarchy comes from alignment and rules,
974
+ rather than decorative cards, gradients, or elevated chrome. */
975
+
755
976
  .workspace-panel {
756
977
  min-width: 0;
757
978
  min-height: 0;
758
979
  height: 100%;
759
980
  display: grid;
760
- grid-template-rows: auto auto minmax(0, 1fr);
761
- padding: 16px 0 16px 14px;
762
- color: var(--text-main);
763
- animation: panelFadeIn 0.22s cubic-bezier(0.4, 0, 0.2, 1) forwards;
981
+ grid-template-rows: 54px minmax(0, 1fr);
982
+ padding: 0 0 20px 28px;
983
+ color: var(--text-primary);
984
+ overflow: hidden;
985
+ position: relative;
986
+ z-index: 1;
987
+ animation: workspacePanelEnter 0.32s cubic-bezier(0.16, 1, 0.3, 1) both;
988
+ }
989
+
990
+ @keyframes workspacePanelEnter {
991
+ from {
992
+ opacity: 0;
993
+ transform: translateX(-10px);
994
+ }
995
+ to {
996
+ opacity: 1;
997
+ transform: translateX(0);
998
+ }
764
999
  }
765
1000
 
766
1001
  .workspace-panel-header {
1002
+ min-width: 0;
767
1003
  display: flex;
768
1004
  align-items: center;
769
1005
  justify-content: space-between;
770
1006
  gap: 12px;
771
- padding: 0 10px 12px 0;
1007
+ padding: 0 18px 0 0;
1008
+ border-bottom: 1px solid var(--border-subtle);
772
1009
  }
773
1010
 
774
- .workspace-kicker {
1011
+ .workspace-title-group {
1012
+ display: flex;
1013
+ align-items: center;
1014
+ gap: 10px;
1015
+ min-width: 0;
1016
+ }
1017
+
1018
+ .workspace-title-icon {
1019
+ width: 18px;
1020
+ height: 18px;
1021
+ flex: 0 0 18px;
1022
+ color: var(--text-secondary);
1023
+ }
1024
+
1025
+ .workspace-title-icon img {
775
1026
  display: block;
776
- margin-bottom: 4px;
777
- color: var(--accent-hover);
778
- font-size: 0.68rem;
779
- font-weight: 700;
780
- letter-spacing: 0.08em;
781
- text-transform: uppercase;
1027
+ width: 18px;
1028
+ height: 18px;
1029
+ object-fit: contain;
1030
+ }
1031
+
1032
+ .workspace-title-copy {
1033
+ min-width: 0;
782
1034
  }
783
1035
 
784
1036
  .workspace-panel-header h2 {
785
- font-size: 1.05rem;
786
- font-weight: 650;
1037
+ overflow: hidden;
1038
+ margin: 0;
1039
+ color: var(--text-primary);
1040
+ font-size: 0.82rem;
1041
+ font-weight: 500;
1042
+ line-height: 1.35;
1043
+ text-overflow: ellipsis;
1044
+ white-space: nowrap;
787
1045
  }
788
1046
 
789
1047
  .workspace-agent-pill {
1048
+ flex: 0 0 auto;
790
1049
  display: inline-flex;
791
1050
  align-items: center;
792
- height: 24px;
793
- padding: 0 8px;
794
- border: 1px solid var(--border);
795
- border-radius: var(--radius-full);
796
- background: var(--surface-bg);
1051
+ gap: 7px;
1052
+ min-height: 20px;
1053
+ margin-left: 4px;
797
1054
  color: var(--text-muted);
798
- font-size: 0.68rem;
1055
+ font-size: 0.65rem;
1056
+ font-weight: 500;
1057
+ line-height: 1;
799
1058
  white-space: nowrap;
800
1059
  }
801
1060
 
802
- .workspace-agent-pill[data-state="agent"],
1061
+ .workspace-agent-pill::before {
1062
+ content: "";
1063
+ width: 6px;
1064
+ height: 6px;
1065
+ border-radius: 50%;
1066
+ background: currentColor;
1067
+ opacity: 0.72;
1068
+ }
1069
+
1070
+ .workspace-agent-pill[data-state="agent"] {
1071
+ color: var(--status-success);
1072
+ }
1073
+
803
1074
  .workspace-agent-pill[data-state="thinking"] {
804
- border-color: color-mix(in srgb, var(--accent) 38%, var(--border));
805
- color: var(--accent-hover);
1075
+ color: var(--status-thinking);
1076
+ }
1077
+
1078
+ .workspace-agent-pill[data-state="thinking"]::before {
1079
+ animation: workspaceStatusPulse 1.1s ease-in-out infinite;
806
1080
  }
807
1081
 
808
1082
  .workspace-panel-actions {
809
- display: grid;
810
- grid-template-columns: repeat(3, 1fr);
811
- gap: 8px;
812
- padding: 0 10px 12px 0;
1083
+ min-width: 0;
1084
+ display: flex;
1085
+ align-items: center;
1086
+ gap: 4px;
813
1087
  }
814
1088
 
815
1089
  .workspace-panel-actions button {
816
- height: 31px;
817
- border: 1px solid var(--border);
818
- border-radius: var(--radius-sm);
819
- background: linear-gradient(180deg, color-mix(in srgb, var(--surface-bg) 92%, #ffffff 4%), var(--surface-bg));
820
- color: var(--text-main);
821
- font-size: 0.75rem;
822
- font-weight: 650;
1090
+ width: 30px;
1091
+ height: 30px;
1092
+ flex: 0 0 30px;
1093
+ display: inline-flex;
1094
+ align-items: center;
1095
+ justify-content: center;
1096
+ border: 1px solid transparent;
1097
+ border-radius: var(--radius-xs);
1098
+ background: transparent;
1099
+ color: var(--text-secondary);
1100
+ padding: 0;
823
1101
  cursor: pointer;
1102
+ transition: background-color 120ms ease, color 120ms ease;
824
1103
  }
825
1104
 
826
- .workspace-panel-actions button:hover {
827
- border-color: color-mix(in srgb, var(--accent) 42%, var(--border));
828
- background: color-mix(in srgb, var(--accent) 12%, var(--surface-bg));
1105
+ .workspace-panel-actions button:hover:not(:disabled) {
1106
+ border-color: var(--border-subtle);
1107
+ background: var(--bg-surface-hover);
1108
+ color: var(--text-primary);
829
1109
  }
830
1110
 
831
- .workspace-panel-actions button:disabled {
832
- opacity: 0.45;
833
- cursor: not-allowed;
1111
+ .workspace-panel-actions button:active:not(:disabled) {
1112
+ background: var(--accent-subtle);
1113
+ color: var(--text-primary);
1114
+ }
1115
+
1116
+ .workspace-panel-actions button:focus-visible,
1117
+ .workspace-tree-row:focus-visible {
1118
+ outline: 2px solid var(--border-focus);
1119
+ outline-offset: -2px;
834
1120
  }
835
1121
 
836
- .workspace-panel-actions button:disabled:hover {
837
- border-color: var(--border);
838
- background: var(--surface-bg);
1122
+ .workspace-panel-actions button:disabled {
1123
+ color: var(--text-disabled);
1124
+ cursor: not-allowed;
1125
+ opacity: 0.62;
839
1126
  }
840
1127
 
841
1128
  .workspace-tree-shell {
1129
+ min-width: 0;
842
1130
  min-height: 0;
1131
+ margin-right: 18px;
843
1132
  overflow: auto;
844
- border: 1px solid color-mix(in srgb, var(--border) 86%, #ffffff 4%);
845
- border-radius: var(--radius-sm);
846
- background:
847
- linear-gradient(90deg, transparent calc(100% - 1px), color-mix(in srgb, var(--border) 72%, transparent) calc(100% - 1px)),
848
- color-mix(in srgb, var(--surface-bg) 80%, #060708 20%);
849
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.025);
850
- scrollbar-color: color-mix(in srgb, var(--text-muted) 38%, transparent) transparent;
1133
+ overscroll-behavior: contain;
1134
+ background: var(--bg-surface);
1135
+ border-bottom: 1px solid var(--border-default);
1136
+ scrollbar-color: var(--border-strong) transparent;
851
1137
  scrollbar-width: thin;
852
1138
  }
853
1139
 
854
1140
  .workspace-tree-shell::-webkit-scrollbar {
855
- width: 10px;
856
- height: 10px;
1141
+ width: 9px;
1142
+ height: 9px;
1143
+ }
1144
+
1145
+ .workspace-tree-shell::-webkit-scrollbar-track {
1146
+ background: transparent;
857
1147
  }
858
1148
 
859
1149
  .workspace-tree-shell::-webkit-scrollbar-thumb {
860
1150
  border: 3px solid transparent;
861
1151
  border-radius: var(--radius-full);
862
- background: color-mix(in srgb, var(--text-muted) 38%, transparent);
1152
+ background: var(--border-strong);
863
1153
  background-clip: padding-box;
864
1154
  }
865
1155
 
@@ -867,16 +1157,16 @@
867
1157
  .workspace-tree-row {
868
1158
  width: 100%;
869
1159
  min-width: 0;
870
- height: 24px;
871
1160
  display: grid;
872
- grid-template-columns: 14px 18px minmax(0, 1fr);
1161
+ grid-template-columns: 14px 20px minmax(0, 1fr);
873
1162
  align-items: center;
874
- gap: 3px;
1163
+ gap: 5px;
875
1164
  border: 0;
1165
+ border-radius: 0;
876
1166
  background: transparent;
877
- color: var(--text-soft);
1167
+ color: var(--text-secondary);
878
1168
  font: inherit;
879
- font-size: 0.8rem;
1169
+ font-size: 0.78rem;
880
1170
  line-height: 1;
881
1171
  text-align: left;
882
1172
  }
@@ -884,45 +1174,58 @@
884
1174
  .workspace-root-row {
885
1175
  position: sticky;
886
1176
  top: 0;
887
- z-index: 1;
888
- height: 27px;
889
- padding: 0 8px 0 10px;
890
- border-bottom: 1px solid color-mix(in srgb, var(--border) 82%, transparent);
891
- background: color-mix(in srgb, var(--surface-strong) 88%, #ffffff 3%);
892
- color: var(--text-main);
893
- font-weight: 650;
894
- box-shadow: 0 1px 0 rgba(0, 0, 0, 0.18);
1177
+ z-index: 2;
1178
+ height: 34px;
1179
+ padding: 0 12px;
1180
+ border-bottom: 1px solid var(--border-default);
1181
+ background: var(--bg-surface-raised);
1182
+ color: var(--text-primary);
1183
+ font-weight: 600;
895
1184
  }
896
1185
 
897
- .workspace-tree-row {
898
- position: relative;
899
- cursor: default;
900
- padding-right: 8px;
1186
+ .workspace-root-row > span:last-child {
1187
+ min-width: 0;
1188
+ overflow: hidden;
1189
+ text-overflow: ellipsis;
1190
+ white-space: nowrap;
901
1191
  }
902
1192
 
903
- .workspace-tree-row.is-directory {
904
- color: var(--text-main);
905
- cursor: grab;
1193
+ .workspace-tree {
1194
+ min-width: 0;
1195
+ width: 100%;
1196
+ padding: 5px 0 10px;
906
1197
  }
907
1198
 
908
- .workspace-tree-row.is-file {
1199
+ .workspace-tree-row {
1200
+ position: relative;
1201
+ height: 29px;
1202
+ padding-right: 12px;
909
1203
  cursor: grab;
910
- }
911
-
912
- .workspace-tree-row:active {
913
- cursor: grabbing;
1204
+ user-select: none;
1205
+ transition: background-color 100ms ease, color 100ms ease;
914
1206
  }
915
1207
 
916
1208
  .workspace-tree-row:hover {
917
- background: color-mix(in srgb, var(--accent) 12%, transparent);
1209
+ background: var(--bg-surface-hover);
1210
+ color: var(--text-primary);
918
1211
  }
919
1212
 
920
- .workspace-tree-row:hover::before {
1213
+ .workspace-tree-row:hover::after,
1214
+ .workspace-tree-row:focus-visible::after {
921
1215
  content: "";
922
1216
  position: absolute;
923
- inset: 0 auto 0 0;
1217
+ inset: 5px auto 5px 0;
924
1218
  width: 2px;
925
- background: color-mix(in srgb, var(--accent) 74%, transparent);
1219
+ background: var(--accent);
1220
+ }
1221
+
1222
+ .workspace-tree-row:active {
1223
+ cursor: grabbing;
1224
+ }
1225
+
1226
+ .workspace-tree-row.is-directory {
1227
+ color: var(--text-primary);
1228
+ font-weight: 500;
926
1229
  }
927
1230
 
928
1231
  .workspace-tree-chevron {
@@ -942,8 +1245,9 @@
942
1245
  border-top: 4px solid transparent;
943
1246
  border-bottom: 4px solid transparent;
944
1247
  border-left: 5px solid currentColor;
945
- opacity: 0.82;
1248
+ opacity: 0.78;
946
1249
  transform-origin: 45% 50%;
1250
+ transition: transform 120ms ease;
947
1251
  }
948
1252
 
949
1253
  .workspace-tree-chevron[data-open="true"]::before {
@@ -956,106 +1260,54 @@
956
1260
 
957
1261
  .workspace-tree-icon {
958
1262
  position: relative;
959
- width: 18px;
960
- height: 18px;
1263
+ width: 20px;
1264
+ height: 20px;
961
1265
  display: inline-grid;
962
1266
  place-items: center;
963
1267
  overflow: hidden;
964
- color: #94a3b8;
965
- font-size: 0.54rem;
966
- font-weight: 800;
967
- letter-spacing: 0;
968
- text-align: center;
1268
+ color: var(--text-muted);
1269
+ font-family: 'Fira Code', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
1270
+ font-size: 0.5rem;
1271
+ font-weight: 600;
1272
+ letter-spacing: -0.04em;
969
1273
  white-space: nowrap;
970
1274
  }
971
1275
 
972
1276
  .workspace-tree-icon.material-icon {
973
1277
  overflow: visible;
974
- color: inherit;
975
- }
976
-
977
- .workspace-tree-icon.material-icon::before,
978
- .workspace-tree-icon.material-icon::after {
979
- display: none;
980
1278
  }
981
1279
 
982
1280
  .workspace-tree-icon.material-icon img {
983
- width: 17px;
984
- height: 17px;
1281
+ width: 18px;
1282
+ height: 18px;
985
1283
  display: block;
986
1284
  object-fit: contain;
987
1285
  flex: 0 0 auto;
988
- filter: drop-shadow(0 1px 0 rgba(0, 0, 0, 0.18));
989
1286
  pointer-events: none;
990
1287
  user-select: none;
991
1288
  }
992
1289
 
993
- .workspace-tree-icon.folder {
994
- color: #7ee787;
995
- }
996
-
997
- .workspace-tree-icon.folder::before {
998
- content: "";
999
- position: absolute;
1000
- left: 2px;
1001
- right: 2px;
1002
- bottom: 4px;
1003
- height: 9px;
1004
- border-radius: 2px;
1005
- background: currentColor;
1006
- box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.24);
1007
- }
1008
-
1009
- .workspace-tree-icon.folder::after {
1010
- content: "";
1011
- position: absolute;
1012
- left: 3px;
1013
- top: 4px;
1014
- width: 7px;
1015
- height: 4px;
1016
- border-radius: 2px 2px 0 0;
1017
- background: currentColor;
1018
- }
1019
-
1020
1290
  .workspace-tree-icon.ts,
1021
1291
  .workspace-tree-icon.tsx {
1022
- color: #58a6ff;
1292
+ color: var(--syntax-property);
1023
1293
  }
1024
1294
 
1025
1295
  .workspace-tree-icon.js,
1026
1296
  .workspace-tree-icon.json {
1027
- color: #f2cc60;
1297
+ color: var(--syntax-flag);
1028
1298
  }
1029
1299
 
1030
1300
  .workspace-tree-icon.css {
1031
- color: #c297ff;
1301
+ color: var(--syntax-type);
1032
1302
  }
1033
1303
 
1034
1304
  .workspace-tree-icon.html,
1035
1305
  .workspace-tree-icon.md {
1036
- color: #7aa2f7;
1306
+ color: var(--syntax-function);
1037
1307
  }
1038
1308
 
1039
1309
  .workspace-tree-icon.rs {
1040
- color: #ffab70;
1041
- }
1042
-
1043
- .workspace-tree-icon.file::before,
1044
- .workspace-tree-icon.css::before,
1045
- .workspace-tree-icon.html::before,
1046
- .workspace-tree-icon.js::before,
1047
- .workspace-tree-icon.json::before,
1048
- .workspace-tree-icon.md::before,
1049
- .workspace-tree-icon.rs::before,
1050
- .workspace-tree-icon.ts::before,
1051
- .workspace-tree-icon.tsx::before {
1052
- content: "";
1053
- position: absolute;
1054
- inset: 2px 3px;
1055
- border: 1px solid currentColor;
1056
- border-radius: 2px;
1057
- background: color-mix(in srgb, currentColor 13%, transparent);
1058
- opacity: 0.84;
1310
+ color: var(--syntax-number);
1059
1311
  }
1060
1312
 
1061
1313
  .workspace-tree-name {
@@ -1066,36 +1318,102 @@
1066
1318
  }
1067
1319
 
1068
1320
  .workspace-tree-empty {
1069
- padding: 18px;
1321
+ max-width: 48ch;
1322
+ padding: 18px 12px;
1070
1323
  color: var(--text-muted);
1071
- font-size: 0.82rem;
1324
+ font-size: 0.78rem;
1325
+ line-height: 1.55;
1326
+ }
1327
+
1328
+ @keyframes workspaceStatusPulse {
1329
+ 0%, 100% {
1330
+ opacity: 0.45;
1331
+ transform: scale(0.9);
1332
+ }
1333
+ 50% {
1334
+ opacity: 1;
1335
+ transform: scale(1.15);
1336
+ }
1337
+ }
1338
+
1339
+ @media (prefers-reduced-motion: reduce) {
1340
+ .workspace-panel {
1341
+ animation: none;
1342
+ }
1343
+
1344
+ .workspace-agent-pill[data-state="thinking"]::before {
1345
+ animation: none;
1346
+ }
1347
+
1348
+ .workspace-panel-actions button,
1349
+ .workspace-tree-row,
1350
+ .workspace-tree-chevron::before {
1351
+ transition: none;
1352
+ }
1353
+ }
1354
+
1355
+ @media (forced-colors: active) {
1356
+ .workspace-panel-actions button:focus-visible,
1357
+ .workspace-tree-row:focus-visible {
1358
+ outline-color: Highlight;
1359
+ }
1360
+
1361
+ .workspace-tree-row:hover::after,
1362
+ .workspace-tree-row:focus-visible::after {
1363
+ background: Highlight;
1364
+ }
1072
1365
  }
1073
1366
 
1074
1367
  @media (max-width: 760px) {
1075
1368
 
1076
- .toggle-model-btn,
1077
- .change-expression-btn,
1078
- .accessory-cycle-btn,
1079
- .toggle-interaction-btn,
1080
- .interaction-guide-btn {
1081
- width: 34px;
1082
- padding: 0;
1369
+ .workspace-panel {
1370
+ grid-template-rows: 54px minmax(0, 1fr);
1371
+ padding: 0 12px 12px;
1372
+ }
1373
+
1374
+ .workspace-panel-header {
1375
+ padding-right: 0;
1376
+ }
1377
+
1378
+ .workspace-tree-shell {
1379
+ margin-right: 0;
1083
1380
  }
1084
1381
 
1085
- .toggle-model-btn span,
1086
- .change-expression-btn span,
1087
- .accessory-cycle-btn span,
1088
- .toggle-interaction-btn span,
1089
- .interaction-guide-btn span {
1382
+ .workspace-agent-pill {
1090
1383
  display: none;
1091
1384
  }
1092
1385
 
1386
+ .workspace-panel-actions button {
1387
+ width: 34px;
1388
+ height: 34px;
1389
+ flex-basis: 34px;
1390
+ }
1391
+
1392
+ .workspace-tree-row {
1393
+ height: 34px;
1394
+ }
1395
+
1093
1396
  .sidebar-toggle {
1094
1397
  display: none;
1095
1398
  }
1096
1399
 
1097
1400
  .workspace-sidebar {
1098
- display: none;
1401
+ display: flex;
1402
+ position: fixed;
1403
+ top: 0;
1404
+ left: 0;
1405
+ bottom: 0;
1406
+ width: 260px !important;
1407
+ height: 100%;
1408
+ z-index: 9999;
1409
+ transform: translateX(-100%);
1410
+ transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1411
+ background: var(--chrome-bg);
1412
+ padding: 20px 10px 12px 14px !important;
1413
+ }
1414
+ .app-body.sidebar-collapsed .workspace-sidebar .sidebar-brand-name {
1415
+ display: inline !important;
1416
+ opacity: 1 !important;
1099
1417
  }
1100
1418
  }
1101
1419
 
@@ -1104,3 +1422,381 @@
1104
1422
  .sidebar-search-btn {
1105
1423
  margin-top: 4px;
1106
1424
  }
1425
+
1426
+ /* Sidebar Projects Grouping */
1427
+
1428
+ .sidebar-projects-list {
1429
+ display: flex;
1430
+ flex-direction: column;
1431
+ gap: 4px;
1432
+ margin-bottom: 8px;
1433
+ }
1434
+
1435
+ .sidebar-project-group {
1436
+ display: flex;
1437
+ flex-direction: column;
1438
+ position: relative;
1439
+ transition: opacity 0.15s ease, transform 0.15s ease;
1440
+ }
1441
+
1442
+ .sidebar-project-group.is-dragging {
1443
+ opacity: 0.35;
1444
+ transform: scale(0.98);
1445
+ }
1446
+
1447
+ .sidebar-project-group.drop-before::before {
1448
+ content: "";
1449
+ position: absolute;
1450
+ top: -2px;
1451
+ left: 4px;
1452
+ right: 4px;
1453
+ height: 2px;
1454
+ background: var(--flavor-teal, #2dd4bf);
1455
+ border-radius: 9999px;
1456
+ box-shadow: 0 0 8px var(--flavor-teal, #2dd4bf);
1457
+ z-index: 10;
1458
+ pointer-events: none;
1459
+ }
1460
+
1461
+ .sidebar-project-group.drop-after::after {
1462
+ content: "";
1463
+ position: absolute;
1464
+ bottom: -2px;
1465
+ left: 4px;
1466
+ right: 4px;
1467
+ height: 2px;
1468
+ background: var(--flavor-teal, #2dd4bf);
1469
+ border-radius: 9999px;
1470
+ box-shadow: 0 0 8px var(--flavor-teal, #2dd4bf);
1471
+ z-index: 10;
1472
+ pointer-events: none;
1473
+ }
1474
+
1475
+ .sidebar-project-drag-grip {
1476
+ display: inline-flex;
1477
+ align-items: center;
1478
+ justify-content: center;
1479
+ color: var(--text-muted);
1480
+ opacity: 0.25;
1481
+ cursor: grab;
1482
+ margin-right: 2px;
1483
+ flex-shrink: 0;
1484
+ transition: opacity 0.15s ease, color 0.15s ease;
1485
+ }
1486
+
1487
+ .sidebar-project-group-header:hover .sidebar-project-drag-grip {
1488
+ opacity: 0.85;
1489
+ color: var(--text-secondary);
1490
+ }
1491
+
1492
+ .sidebar-project-group-header:active .sidebar-project-drag-grip {
1493
+ cursor: grabbing;
1494
+ }
1495
+
1496
+ .sidebar-project-group-header {
1497
+ width: 100%;
1498
+ display: flex;
1499
+ align-items: center;
1500
+ justify-content: space-between;
1501
+ padding: 6px 8px;
1502
+ background: transparent;
1503
+ border: 1px solid transparent;
1504
+ border-radius: var(--radius-sm, 6px);
1505
+ color: var(--text-secondary);
1506
+ cursor: pointer;
1507
+ user-select: none;
1508
+ transition: background 0.15s ease, color 0.15s ease;
1509
+ text-align: left;
1510
+ }
1511
+
1512
+ .sidebar-project-group-header:hover {
1513
+ background: var(--bg-surface-hover);
1514
+ color: var(--text-primary);
1515
+ }
1516
+
1517
+ .sidebar-project-group-left {
1518
+ display: flex;
1519
+ align-items: center;
1520
+ gap: 7px;
1521
+ min-width: 0;
1522
+ flex: 1;
1523
+ }
1524
+
1525
+ .sidebar-project-folder-icon {
1526
+ flex-shrink: 0;
1527
+ color: var(--text-muted);
1528
+ }
1529
+
1530
+ .sidebar-project-group-header:hover .sidebar-project-folder-icon {
1531
+ color: var(--text-secondary);
1532
+ }
1533
+
1534
+ .sidebar-project-group-name {
1535
+ overflow: hidden;
1536
+ text-overflow: ellipsis;
1537
+ white-space: nowrap;
1538
+ font-size: 0.82rem;
1539
+ font-weight: 500;
1540
+ color: var(--text-primary);
1541
+ }
1542
+
1543
+ .sidebar-project-group-right {
1544
+ display: flex;
1545
+ align-items: center;
1546
+ gap: 5px;
1547
+ flex-shrink: 0;
1548
+ margin-left: 6px;
1549
+ }
1550
+
1551
+ .sidebar-project-add-btn {
1552
+ display: inline-flex;
1553
+ align-items: center;
1554
+ justify-content: center;
1555
+ width: 18px;
1556
+ height: 18px;
1557
+ border-radius: var(--radius-sm, 4px);
1558
+ color: var(--text-muted);
1559
+ cursor: pointer;
1560
+ opacity: 0;
1561
+ transition: opacity 0.15s ease, background 0.15s ease, color 0.15s ease, transform 0.15s ease;
1562
+ }
1563
+
1564
+ .sidebar-project-group-header:hover .sidebar-project-add-btn {
1565
+ opacity: 0.65;
1566
+ }
1567
+
1568
+ .sidebar-project-add-btn:hover {
1569
+ opacity: 1 !important;
1570
+ background: rgba(255, 255, 255, 0.1);
1571
+ color: var(--text-primary);
1572
+ transform: scale(1.1);
1573
+ }
1574
+
1575
+ .sidebar-project-menu-trigger {
1576
+ display: inline-flex;
1577
+ align-items: center;
1578
+ justify-content: center;
1579
+ width: 22px;
1580
+ height: 22px;
1581
+ padding: 0;
1582
+ border: 0;
1583
+ border-radius: var(--radius-sm, 4px);
1584
+ background: transparent;
1585
+ color: var(--text-muted);
1586
+ opacity: 0;
1587
+ cursor: pointer;
1588
+ }
1589
+ .sidebar-project-group-header:hover .sidebar-project-menu-trigger,
1590
+ .sidebar-project-menu-trigger:focus-visible { opacity: 1; }
1591
+ .sidebar-project-menu-trigger:hover { color: var(--text-primary); background: var(--bg-surface-hover); }
1592
+ @media (pointer: coarse) { .sidebar-project-menu-trigger { opacity: 1; } }
1593
+ .sidebar-project-menu-popover {
1594
+ position: fixed;
1595
+ z-index: 1000;
1596
+ width: 190px;
1597
+ padding: 4px;
1598
+ border: 1px solid var(--border-subtle, rgba(255,255,255,.12));
1599
+ border-radius: var(--radius-md, 8px);
1600
+ background: var(--bg-surface, #202126);
1601
+ box-shadow: 0 8px 24px rgba(0,0,0,.3);
1602
+ }
1603
+ .sidebar-project-menu-popover button {
1604
+ display: flex;
1605
+ gap: 8px;
1606
+ align-items: center;
1607
+ width: 100%;
1608
+ padding: 7px 8px;
1609
+ border: 0;
1610
+ border-radius: var(--radius-sm, 5px);
1611
+ color: var(--text-primary);
1612
+ background: transparent;
1613
+ text-align: left;
1614
+ font-size: .8rem;
1615
+ cursor: pointer;
1616
+ }
1617
+ .sidebar-project-menu-popover button:hover { background: var(--bg-surface-hover); }
1618
+ .sidebar-project-menu-popover button.is-destructive { color: var(--color-danger, #f87171); }
1619
+ .sidebar-project-menu-popover button span { flex: 1; }
1620
+
1621
+ .sidebar-project-group-count {
1622
+ font-size: 0.7rem;
1623
+ font-variant-numeric: tabular-nums;
1624
+ color: var(--text-muted);
1625
+ background: rgba(255, 255, 255, 0.06);
1626
+ padding: 1px 6px;
1627
+ border-radius: 9999px;
1628
+ line-height: 1.2;
1629
+ }
1630
+
1631
+ .sidebar-project-group-chevron {
1632
+ display: inline-flex;
1633
+ align-items: center;
1634
+ justify-content: center;
1635
+ color: var(--text-muted);
1636
+ }
1637
+
1638
+ .sidebar-project-sessions {
1639
+ margin-top: 2px;
1640
+ margin-left: 12px;
1641
+ padding-left: 6px;
1642
+ border-left: 1px solid rgba(255, 255, 255, 0.08);
1643
+ display: flex;
1644
+ flex-direction: column;
1645
+ gap: 2px;
1646
+ }
1647
+
1648
+ .sidebar-chat-item.is-indented {
1649
+ font-size: 0.84rem;
1650
+ padding-left: 8px;
1651
+ }
1652
+
1653
+ .sidebar-show-more-btn {
1654
+ display: inline-flex;
1655
+ align-items: center;
1656
+ gap: 4px;
1657
+ background: transparent;
1658
+ border: none;
1659
+ color: var(--text-muted);
1660
+ font-size: 0.75rem;
1661
+ padding: 4px 8px;
1662
+ text-align: left;
1663
+ cursor: pointer;
1664
+ border-radius: var(--radius-xs, 4px);
1665
+ margin-top: 2px;
1666
+ transition: color 0.15s ease, background 0.15s ease;
1667
+ }
1668
+ .sidebar-show-more-btn svg { flex: 0 0 auto; transition: transform 0.15s ease; }
1669
+ .sidebar-show-more-btn svg.is-expanded { transform: rotate(180deg); }
1670
+
1671
+ .sidebar-show-more-btn:hover {
1672
+ color: var(--text-secondary);
1673
+ background: var(--bg-surface-hover);
1674
+ }
1675
+
1676
+ /* Sidebar Move Popover */
1677
+
1678
+ .sidebar-move-popover {
1679
+ position: fixed;
1680
+ z-index: 99999;
1681
+ min-width: 200px;
1682
+ max-width: 280px;
1683
+ background: var(--bg-surface-raised, #18181b);
1684
+ border: 1px solid var(--border-default, #27272a);
1685
+ border-radius: var(--radius-md, 8px);
1686
+ padding: 6px;
1687
+ box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.5), 0 8px 10px -6px rgba(0, 0, 0, 0.4);
1688
+ display: flex;
1689
+ flex-direction: column;
1690
+ gap: 2px;
1691
+ animation: sidebarMoveFadeIn 0.12s ease-out;
1692
+ }
1693
+
1694
+ @keyframes sidebarMoveFadeIn {
1695
+ from {
1696
+ opacity: 0;
1697
+ transform: translateY(-4px) scale(0.98);
1698
+ }
1699
+ to {
1700
+ opacity: 1;
1701
+ transform: translateY(0) scale(1);
1702
+ }
1703
+ }
1704
+
1705
+ .sidebar-move-header {
1706
+ font-size: 0.7rem;
1707
+ font-weight: 600;
1708
+ color: var(--text-muted);
1709
+ padding: 4px 8px 4px;
1710
+ text-transform: uppercase;
1711
+ letter-spacing: 0.05em;
1712
+ }
1713
+
1714
+ .sidebar-move-list {
1715
+ display: flex;
1716
+ flex-direction: column;
1717
+ gap: 2px;
1718
+ max-height: 200px;
1719
+ overflow-y: auto;
1720
+ }
1721
+
1722
+ .sidebar-move-item {
1723
+ display: flex;
1724
+ align-items: center;
1725
+ gap: 8px;
1726
+ padding: 6px 8px;
1727
+ border-radius: var(--radius-sm, 6px);
1728
+ font-size: 0.82rem;
1729
+ color: var(--text-primary);
1730
+ background: transparent;
1731
+ border: none;
1732
+ cursor: pointer;
1733
+ text-align: left;
1734
+ width: 100%;
1735
+ transition: background 0.12s ease;
1736
+ }
1737
+
1738
+ .sidebar-move-item:hover {
1739
+ background: var(--bg-surface-hover, rgba(255, 255, 255, 0.08));
1740
+ }
1741
+
1742
+ .sidebar-move-item.is-current {
1743
+ color: var(--text-secondary);
1744
+ font-weight: 500;
1745
+ }
1746
+
1747
+ .sidebar-move-item-icon {
1748
+ display: inline-flex;
1749
+ align-items: center;
1750
+ justify-content: center;
1751
+ width: 16px;
1752
+ flex-shrink: 0;
1753
+ color: var(--text-muted);
1754
+ }
1755
+
1756
+ .sidebar-move-item-name {
1757
+ flex: 1;
1758
+ overflow: hidden;
1759
+ text-overflow: ellipsis;
1760
+ white-space: nowrap;
1761
+ }
1762
+
1763
+ .sidebar-move-item-check {
1764
+ display: inline-flex;
1765
+ align-items: center;
1766
+ margin-left: auto;
1767
+ font-size: 0.85rem;
1768
+ color: var(--flavor-teal, #2dd4bf);
1769
+ font-weight: 600;
1770
+ }
1771
+
1772
+ .sidebar-move-divider {
1773
+ height: 1px;
1774
+ background: var(--border-subtle, rgba(255, 255, 255, 0.08));
1775
+ margin: 4px 2px;
1776
+ }
1777
+
1778
+ /* The resize target stays inside the panel so its overflow cannot clip it. */
1779
+ .workspace-pane-resizer {
1780
+ position: absolute;
1781
+ inset: 0 0 0 auto;
1782
+ width: 8px;
1783
+ z-index: 4;
1784
+ cursor: col-resize;
1785
+ touch-action: none;
1786
+ user-select: none;
1787
+ }
1788
+ .workspace-pane-resizer::after {
1789
+ content: '';
1790
+ position: absolute;
1791
+ inset: 8px 3px;
1792
+ border-radius: 2px;
1793
+ background: var(--border-default);
1794
+ transition: background 0.15s ease;
1795
+ }
1796
+ .workspace-pane-resizer:hover::after,
1797
+ .workspace-pane-resizer:focus-visible::after,
1798
+ .is-workspace-resizing .workspace-pane-resizer::after { background: var(--border-focus); }
1799
+ .workspace-pane-resizer:focus-visible { outline: 2px solid var(--border-focus); outline-offset: -2px; }
1800
+ .workspace-pane-resizer[hidden] { display: none; }
1801
+ @media (prefers-reduced-motion: reduce) { .workspace-pane-resizer::after { transition: none; } }
1802
+ @media (forced-colors: active) { .workspace-pane-resizer::after { background: Highlight; } }