@pheem49/mint 1.17.0 → 1.18.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 (421) hide show
  1. package/Cargo.lock +6 -6
  2. package/Cargo.toml +2 -2
  3. package/README.md +8 -2
  4. package/Release_Note.md +222 -71
  5. package/crates/mint-cli/src/agent/diff_render.rs +66 -44
  6. package/crates/mint-cli/src/agent/live_status.rs +21 -4
  7. package/crates/mint-cli/src/agent/markdown_render.rs +342 -5
  8. package/crates/mint-cli/src/agent.rs +25 -10
  9. package/crates/mint-cli/src/commands/agent.rs +4 -92
  10. package/crates/mint-cli/src/commands/browser.rs +2 -15
  11. package/crates/mint-cli/src/commands/integrations.rs +3 -3
  12. package/crates/mint-cli/src/commands/mod.rs +0 -3
  13. package/crates/mint-cli/src/commands/tailnet_web.rs +1 -0
  14. package/crates/mint-cli/src/interactive/chat_tui/dialog.rs +572 -0
  15. package/crates/mint-cli/src/interactive/chat_tui/mod.rs +1427 -0
  16. package/crates/mint-cli/src/interactive/chat_tui/render.rs +1524 -0
  17. package/crates/mint-cli/src/interactive/chat_tui/selection.rs +401 -0
  18. package/crates/mint-cli/src/interactive/chat_tui/state.rs +1833 -0
  19. package/crates/mint-cli/src/interactive/chat_tui/tests.rs +3414 -0
  20. package/crates/mint-cli/src/interactive/chat_tui/thought.rs +202 -0
  21. package/crates/mint-cli/src/interactive/chat_tui/transcript.rs +728 -0
  22. package/crates/mint-cli/src/interactive/chat_tui/watermark.rs +148 -0
  23. package/crates/mint-cli/src/interactive/command_ui.rs +53 -5
  24. package/crates/mint-cli/src/interactive/composer.rs +186 -0
  25. package/crates/mint-cli/src/interactive/format.rs +78 -3
  26. package/crates/mint-cli/src/interactive/input_box.rs +61 -1
  27. package/crates/mint-cli/src/interactive/resume_picker.rs +367 -25
  28. package/crates/mint-cli/src/interactive/slash_commands.rs +648 -371
  29. package/crates/mint-cli/src/interactive/tool_activity.rs +93 -20
  30. package/crates/mint-cli/src/interactive.rs +37 -0
  31. package/crates/mint-cli/src/main.rs +6 -3
  32. package/crates/mint-cli/src/markdown.rs +2 -37
  33. package/crates/mint-cli/src/onboard.rs +700 -282
  34. package/crates/mint-cli/src/setup.rs +1342 -624
  35. package/crates/mint-cli/src/terminal_theme.rs +159 -35
  36. package/crates/mint-cli/tests/library_intake.rs +1 -0
  37. package/crates/mint-core/src/agent/chat/anthropic.rs +318 -0
  38. package/crates/mint-core/src/agent/chat/custom.rs +149 -0
  39. package/crates/mint-core/src/agent/chat/gemini.rs +518 -0
  40. package/crates/mint-core/src/agent/chat/mod.rs +857 -0
  41. package/crates/mint-core/src/agent/chat/ollama.rs +321 -0
  42. package/crates/mint-core/src/agent/chat/openai.rs +582 -0
  43. package/crates/mint-core/src/agent/chat/streaming.rs +469 -0
  44. package/crates/mint-core/src/agent/chat/tests.rs +1479 -0
  45. package/crates/mint-core/src/agent/memory.rs +56 -2
  46. package/crates/mint-core/src/agent/tasks.rs +2 -2
  47. package/crates/mint-core/src/api_server/routes/chat.rs +24 -2
  48. package/crates/mint-core/src/api_server/routes/gemini_live.rs +14 -1
  49. package/crates/mint-core/src/api_server/routes/html_preview.rs +1 -8
  50. package/crates/mint-core/src/api_server/routes/sessions.rs +21 -0
  51. package/crates/mint-core/src/avatar_bridge.rs +0 -22
  52. package/crates/mint-core/src/browser/cdp.rs +10 -4
  53. package/crates/mint-core/src/browser/headless.rs +582 -0
  54. package/crates/mint-core/src/browser/input.rs +7 -62
  55. package/crates/mint-core/src/browser/interact.rs +0 -14
  56. package/crates/mint-core/src/browser/mod.rs +8 -29
  57. package/crates/mint-core/src/browser/navigate.rs +2 -36
  58. package/crates/mint-core/src/browser/runtime.rs +2 -4
  59. package/crates/mint-core/src/browser/session.rs +50 -466
  60. package/crates/mint-core/src/browser/workflow.rs +142 -32
  61. package/crates/mint-core/src/cron/store.rs +2 -2
  62. package/crates/mint-core/src/integrations/mcp.rs +6 -8
  63. package/crates/mint-core/src/lib.rs +0 -5
  64. package/crates/mint-core/src/media/gemini_live.rs +636 -86
  65. package/crates/mint-core/src/media/library/migration.rs +26 -0
  66. package/crates/mint-core/src/media/library/tests.rs +1 -1
  67. package/crates/mint-core/src/media/library/thumbnails.rs +8 -2
  68. package/crates/mint-core/src/media/pictures.rs +1 -1
  69. package/crates/mint-core/src/media/tool_images.rs +92 -1
  70. package/crates/mint-core/src/mods/manager.rs +101 -35
  71. package/crates/mint-core/src/orchestration/context_render.rs +441 -24
  72. package/crates/mint-core/src/orchestration/decision_parsing.rs +531 -16
  73. package/crates/mint-core/src/orchestration/full_skill_result_tests.rs +12 -0
  74. package/crates/mint-core/src/orchestration/loop_guard.rs +145 -0
  75. package/crates/mint-core/src/orchestration/mcp_outcome_tests.rs +864 -0
  76. package/crates/mint-core/src/orchestration/memory_skill.rs +88 -28
  77. package/crates/mint-core/src/orchestration/mod.rs +320 -4249
  78. package/crates/mint-core/src/orchestration/reliability.rs +67 -27
  79. package/crates/mint-core/src/orchestration/review_regressions.rs +5 -0
  80. package/crates/mint-core/src/orchestration/tests.rs +1665 -0
  81. package/crates/mint-core/src/orchestration/tools/dispatch.rs +967 -0
  82. package/crates/mint-core/src/orchestration/tools/files.rs +1 -0
  83. package/crates/mint-core/src/orchestration/tools/mod.rs +5 -1
  84. package/crates/mint-core/src/orchestration/tools/planning.rs +102 -42
  85. package/crates/mint-core/src/orchestration/tools/shell.rs +129 -58
  86. package/crates/mint-core/src/orchestration/truncation.rs +170 -13
  87. package/crates/mint-core/src/orchestration/types.rs +648 -0
  88. package/crates/mint-core/src/orchestration/verification.rs +0 -3
  89. package/crates/mint-core/src/orchestration/workspace_helpers.rs +24 -6
  90. package/crates/mint-core/src/prompts/agent.rs +52 -76
  91. package/crates/mint-core/src/prompts/tool_catalog.rs +8 -151
  92. package/crates/mint-core/src/search/files.rs +20 -0
  93. package/crates/mint-core/src/slash/mod.rs +228 -265
  94. package/crates/mint-core/src/slash/models.rs +6 -1
  95. package/crates/mint-core/src/system/bg_shell.rs +1 -0
  96. package/crates/mint-core/src/system/config.rs +176 -34
  97. package/crates/mint-mod-runtime/src/lib.rs +37 -23
  98. package/out/web/assets/ArtifactPreviewPanel-Cx6BVOOF.js +2 -0
  99. package/out/web/assets/CalculationCard-D2E74u5q.js +1 -0
  100. package/out/web/assets/CliSessionsView-ZbdtSjvK.css +1 -0
  101. package/out/web/assets/{CliSessionsView-MI8kXMAb.js → CliSessionsView-z5i6qGyb.js} +1 -1
  102. package/out/web/assets/CodeReviewPage-BK2bOScd.css +1 -0
  103. package/out/web/assets/CodeReviewPage-Dp6zHuHu.js +2 -0
  104. package/out/web/assets/{CommandPalette-BD8SlTE5.js → CommandPalette-DaKlzbKs.js} +1 -1
  105. package/out/web/assets/ImageGenCard-BMCJHP9O.js +1 -0
  106. package/out/web/assets/ImageSearchCard-Cld_SOUg.js +1 -0
  107. package/out/web/assets/{ImageStudioPanel-BP7N4rLr.js → ImageStudioPanel-B5N7TjeB.js} +1 -1
  108. package/out/web/assets/LibraryPage-CMB89rJ0.css +1 -0
  109. package/out/web/assets/LibraryPage-DbZEi4W_.js +2 -0
  110. package/out/web/assets/LinkedFoldersView-9B9DIPoZ.js +1 -0
  111. package/out/web/assets/{McpRegistryPicker-CoS83vtc.js → McpRegistryPicker-DnXPlzI7.js} +1 -1
  112. package/out/web/assets/McpServersView-CiNBNUl4.js +1 -0
  113. package/out/web/assets/MermaidCard-BBDNEXbY.js +2 -0
  114. package/out/web/assets/MintDashboard-C_UYPoNV.js +119 -0
  115. package/out/web/assets/MintDashboard-DTd8C_c8.css +1 -0
  116. package/out/web/assets/PlanCard-C2x5pajq.js +1 -0
  117. package/out/web/assets/{PluginsView-jBYmcKh4.js → PluginsView-DoTg9MVa.js} +1 -1
  118. package/out/web/assets/RewindModal-B5oowrR0.js +1 -0
  119. package/out/web/assets/{ScheduledTasksView-5uw9-V9H.js → ScheduledTasksView-BD5DVPkZ.js} +1 -1
  120. package/out/web/assets/{SelectField-DXBQtrUK.js → SelectField-Cy6CghrU.js} +1 -1
  121. package/out/web/assets/SettingsWindow-BYl_oCFh.js +4 -0
  122. package/out/web/assets/SettingsWindow-Ckcgnjt8.css +1 -0
  123. package/out/web/assets/{SkillsView-C-gp9J7m.js → SkillsView-CIeWwq5z.js} +1 -1
  124. package/out/web/assets/StockCard-DxUciKyp.js +1 -0
  125. package/out/web/assets/ToolSurfacePage-qBgs_VHq.css +1 -0
  126. package/out/web/assets/ToolSurfacePage-saVbVrkE.js +38 -0
  127. package/out/web/assets/{UiFeatureCard-6BwxTOCe.js → UiFeatureCard-CdY0hGWy.js} +1 -1
  128. package/out/web/assets/{UiGridCard-DvZcLNxb.js → UiGridCard-BBK3I5hC.js} +1 -1
  129. package/out/web/assets/UiMockupWidget-CpR9EDuc.js +1 -0
  130. package/out/web/assets/{VeoStudioPanel-DOj7_WR3.css → VeoStudioPanel-9kU9YLEN.css} +1 -1
  131. package/out/web/assets/{VeoStudioPanel-DfsOJKv0.js → VeoStudioPanel-Co6-wEWM.js} +2 -2
  132. package/out/web/assets/WeatherCard-Buzi7Vfu.js +1 -0
  133. package/out/web/assets/WorkspacePdfPreview-Bi8Zzyir.js +2 -0
  134. package/out/web/assets/{abnfDiagram-VCTEODGH-BOo3Ckng.js → abnfDiagram-VCTEODGH-CMfR95N2.js} +1 -1
  135. package/out/web/assets/{architecture-7GRP2DOG-ZOwheW3n.js → architecture-7GRP2DOG-DhAM4HyO.js} +1 -1
  136. package/out/web/assets/{architectureDiagram-5GKGNRK7-DC2FDzVd.js → architectureDiagram-5GKGNRK7-Yk3TUJ_F.js} +1 -1
  137. package/out/web/assets/{blockDiagram-I7D4REHJ-BrKFWdAH.js → blockDiagram-I7D4REHJ-X9fBgJik.js} +1 -1
  138. package/out/web/assets/{c4Diagram-7LVT6UL2-BHTHK1Yd.js → c4Diagram-7LVT6UL2-Bk9x7N-8.js} +1 -1
  139. package/out/web/assets/{chunk-4HAMMTFA-BYFkZwNj.js → chunk-4HAMMTFA-Dx5fk1_0.js} +1 -1
  140. package/out/web/assets/{chunk-75Z2AOVW-BSKfSKSA.js → chunk-75Z2AOVW-BszTQoM4.js} +1 -1
  141. package/out/web/assets/{chunk-DU6HZSFF-vIhsiW6n.js → chunk-DU6HZSFF-DK-As3rk.js} +1 -1
  142. package/out/web/assets/{chunk-F27PBJKO-BlYpW9xq.js → chunk-F27PBJKO-LmncZZIS.js} +1 -1
  143. package/out/web/assets/{chunk-GMAD6QVW-BIBz_Ug5.js → chunk-GMAD6QVW-DSQ_sDRJ.js} +1 -1
  144. package/out/web/assets/{chunk-GVQU2GXP-NPSHxeqC.js → chunk-GVQU2GXP-Cno3ulje.js} +1 -1
  145. package/out/web/assets/{chunk-IMKFNOWR-YlJK8_Fp.js → chunk-IMKFNOWR-bIzfY9Jc.js} +1 -1
  146. package/out/web/assets/{chunk-L3NEJ4N5-DMYi4-af.js → chunk-L3NEJ4N5-Dl6eOa0D.js} +1 -1
  147. package/out/web/assets/{chunk-OSK3NFVY-Begd3-jA.js → chunk-OSK3NFVY-BaUGJ-cM.js} +1 -1
  148. package/out/web/assets/{chunk-P2QGCYS3-D1I4xFHN.js → chunk-P2QGCYS3-_066ndhH.js} +1 -1
  149. package/out/web/assets/{chunk-POPQ4Y6H-CafZZzNE.js → chunk-POPQ4Y6H-YT1AKhTv.js} +1 -1
  150. package/out/web/assets/{chunk-PWAF6VOD-Dwh6_Lnt.js → chunk-PWAF6VOD-CrEgDsxh.js} +1 -1
  151. package/out/web/assets/{chunk-SHT3W25Y-B0XrCSEb.js → chunk-SHT3W25Y-_KwaRLOl.js} +1 -1
  152. package/out/web/assets/{chunk-SVP7TREG-CxLsddxC.js → chunk-SVP7TREG-BQ1qb32L.js} +1 -1
  153. package/out/web/assets/{chunk-TICWLB2K-y156QInb.js → chunk-TICWLB2K-BDyehCtg.js} +1 -1
  154. package/out/web/assets/classDiagram-ZZMXUADV-BoSpzRCJ.js +1 -0
  155. package/out/web/assets/classDiagram-v2-VYDZK3BY-BoSpzRCJ.js +1 -0
  156. package/out/web/assets/{config-DqXJXeZM.css → config-2suVFPZg.css} +1 -1
  157. package/out/web/assets/config-CkRCdkxn.js +2 -0
  158. package/out/web/assets/{cynefin-OW5HDTMX-SMVvrLf-.js → cynefin-OW5HDTMX-Dl_31aaN.js} +1 -1
  159. package/out/web/assets/{cynefinDiagram-5FMLGOSQ-rZznN24T.js → cynefinDiagram-5FMLGOSQ-Bpir8jha.js} +1 -1
  160. package/out/web/assets/{dagre-GXQ25YYZ-BOToydFu.js → dagre-GXQ25YYZ-D9xu3nsq.js} +1 -1
  161. package/out/web/assets/{diagram-S7CK7UJ4-TMVaGQEJ.js → diagram-S7CK7UJ4-DeveoEeB.js} +1 -1
  162. package/out/web/assets/{diagram-UQ7AKVKN-C2JK-GP2.js → diagram-UQ7AKVKN-p4xWRESV.js} +1 -1
  163. package/out/web/assets/{diagram-VSXAHHWV-Cw8VSi2K.js → diagram-VSXAHHWV-C7qz9NDF.js} +1 -1
  164. package/out/web/assets/{diagram-VX7I27RA-DXp4fKk9.js → diagram-VX7I27RA-DRiCa3Vd.js} +1 -1
  165. package/out/web/assets/{diagram-Z3DM3KII-CzSicYiW.js → diagram-Z3DM3KII-Bt7zduQX.js} +1 -1
  166. package/out/web/assets/{ebnfDiagram-PWID7BFC-Dqj-zqPu.js → ebnfDiagram-PWID7BFC-DV9WpwdR.js} +1 -1
  167. package/out/web/assets/{erDiagram-RLTQ6QDP-DZwFZAuD.js → erDiagram-RLTQ6QDP-BJ_nwG2m.js} +1 -1
  168. package/out/web/assets/{eventmodeling-NTZA5JFV-C0O-Lvgp.js → eventmodeling-NTZA5JFV-BTBMrfVa.js} +1 -1
  169. package/out/web/assets/flowDiagram-HODETNUW-Cdlq3cJL.js +1 -0
  170. package/out/web/assets/{ganttDiagram-EL5Y4UJY-Da4ULXTl.js → ganttDiagram-EL5Y4UJY-DQLdsXrC.js} +1 -1
  171. package/out/web/assets/{gitGraph-4MIJSDKK-B9wNFZIP.js → gitGraph-4MIJSDKK-CL1OEOQ_.js} +1 -1
  172. package/out/web/assets/{gitGraphDiagram-WWUBYQGX-RjrhB0MP.js → gitGraphDiagram-WWUBYQGX-8cSi42H7.js} +1 -1
  173. package/out/web/assets/index-BocxnrDG.js +168 -0
  174. package/out/web/assets/index-yeh_r55a.css +1 -0
  175. package/out/web/assets/{info-A6RAGUB7-B3dfCpeY.js → info-A6RAGUB7-C1zsX5sc.js} +1 -1
  176. package/out/web/assets/{infoDiagram-27XIBGKW-QVWkLVx7.js → infoDiagram-27XIBGKW-DsRYtIyI.js} +1 -1
  177. package/out/web/assets/{ishikawaDiagram-5VMMS53U-CLFNIRI9.js → ishikawaDiagram-5VMMS53U-B2crwIXj.js} +1 -1
  178. package/out/web/assets/{journeyDiagram-3NMN7TZE-fgOQadYF.js → journeyDiagram-3NMN7TZE-BTH-GyVR.js} +1 -1
  179. package/out/web/assets/{kanban-definition-UXKFOSKX-G3Q_9g9O.js → kanban-definition-UXKFOSKX-BeRfCnuA.js} +1 -1
  180. package/out/web/assets/{mermaid-parser.core-v3Jm7nco.js → mermaid-parser.core-BJwgCBBc.js} +3 -3
  181. package/out/web/assets/{mermaid.core-DTEjLUA1.js → mermaid.core-CsDDodN8.js} +4 -4
  182. package/out/web/assets/{mindmap-definition-YA3MSWOX-C_D42_fF.js → mindmap-definition-YA3MSWOX-B42efOQ1.js} +1 -1
  183. package/out/web/assets/{modelManager-BPLycQrN.js → modelManager-B3ZFMh8v.js} +2 -2
  184. package/out/web/assets/{oauthManager-BUK7ic7q.js → oauthManager-Ch5Du2fF.js} +1 -1
  185. package/out/web/assets/{packet-AYTQ26CC-B-R-SHlF.js → packet-AYTQ26CC-B6xUyE6r.js} +1 -1
  186. package/out/web/assets/{pegDiagram-XKGWAZYB-Da2q_giz.js → pegDiagram-XKGWAZYB-1LabVycL.js} +1 -1
  187. package/out/web/assets/{pie-WAS4IAKB-BC8F0N7-.js → pie-WAS4IAKB-DJwo-nf_.js} +1 -1
  188. package/out/web/assets/{pieDiagram-E7YTZNPT-Iy9REJNC.js → pieDiagram-E7YTZNPT-icmAqzy4.js} +1 -1
  189. package/out/web/assets/{quadrantDiagram-AXDQQJYC-ztsiYw7h.js → quadrantDiagram-AXDQQJYC-CZ-wEx41.js} +1 -1
  190. package/out/web/assets/{radar-RG4KPBEZ-B_1P8Z_z.js → radar-RG4KPBEZ-D7d-Xriw.js} +1 -1
  191. package/out/web/assets/{railroad-74A4TZTK-DuTqczSo.js → railroad-74A4TZTK-viuhdYbs.js} +1 -1
  192. package/out/web/assets/{railroad-abnf-HS5TGJTU-Df29WLmp.js → railroad-abnf-HS5TGJTU-DNXiCNea.js} +1 -1
  193. package/out/web/assets/{railroad-ebnf-LZEXJU2U-ePFMo-qp.js → railroad-ebnf-LZEXJU2U-nkSu1-0C.js} +1 -1
  194. package/out/web/assets/{railroad-peg-WCYAUIDC-DYXLW4_E.js → railroad-peg-WCYAUIDC-BhbMeQzz.js} +1 -1
  195. package/out/web/assets/{railroadDiagram-O6MQD6OU-LStnZf2S.js → railroadDiagram-O6MQD6OU-CLpG1jUX.js} +1 -1
  196. package/out/web/assets/{requirementDiagram-BXWQKSXE-DmzonMH-.js → requirementDiagram-BXWQKSXE-kRDrvWrc.js} +1 -1
  197. package/out/web/assets/{sankeyDiagram-P5KCCOFB-B8vjmUU1.js → sankeyDiagram-P5KCCOFB-DxAwmq4x.js} +1 -1
  198. package/out/web/assets/{sequenceDiagram-WJ2MYXX4-CTnplOAX.js → sequenceDiagram-WJ2MYXX4-aLgY-6Wz.js} +1 -1
  199. package/out/web/assets/{stateDiagram-D77RDMKH-BFrIaLdI.js → stateDiagram-D77RDMKH-D5QWfOhp.js} +1 -1
  200. package/out/web/assets/stateDiagram-v2-MP3YSRHH-D6OiZoAP.js +1 -0
  201. package/out/web/assets/{swimlanes-42K2YHIH-BXGngUNU.js → swimlanes-42K2YHIH-CRs5UyA-.js} +1 -1
  202. package/out/web/assets/swimlanesDiagram-VR7AAH4N-UgEXIsV0.js +8 -0
  203. package/out/web/assets/syntaxHighlight-C-wAGT84.js +3 -0
  204. package/out/web/assets/{timeline-definition-24CTP7MA-CegH7n43.js → timeline-definition-24CTP7MA-Denqd9qb.js} +1 -1
  205. package/out/web/assets/{treeView-Q6P3EWNA-DTpJv2Tw.js → treeView-Q6P3EWNA-0my3Z3s4.js} +1 -1
  206. package/out/web/assets/{treemap-WGGIJYW6-i8M9iJU6.js → treemap-WGGIJYW6-B_EjkLYq.js} +1 -1
  207. package/out/web/assets/{vennDiagram-4TSXK5OY-Dpzo1S8U.js → vennDiagram-4TSXK5OY-DxVg3Ewr.js} +1 -1
  208. package/out/web/assets/{wardley-WFR3VGLG-BrNsgtfw.js → wardley-WFR3VGLG-CGD-Tj4p.js} +1 -1
  209. package/out/web/assets/{wardleyDiagram-VM6X3IG4-lQ92LFE1.js → wardleyDiagram-VM6X3IG4-CmfS39Xm.js} +1 -1
  210. package/out/web/assets/{xychartDiagram-S5SC5T6Z-BaOaEoBd.js → xychartDiagram-S5SC5T6Z-BVM9bKis.js} +1 -1
  211. package/out/web/index-web.html +2 -2
  212. package/out/web/index.html +2 -2
  213. package/package.json +2 -2
  214. package/shared-modules/CODEOWNERS +3 -3
  215. package/shared-modules/SDL2/SDL2_mixer.json +27 -0
  216. package/shared-modules/appstream/README.md +13 -0
  217. package/shared-modules/appstream/appstream-compose.json +111 -0
  218. package/shared-modules/dbus-glib/dbus-glib.json +2 -2
  219. package/shared-modules/libportal/libportal.json +23 -0
  220. package/shared-modules/linux-audio/fluidsynth2-static.json +2 -2
  221. package/shared-modules/linux-audio/fluidsynth2.json +2 -2
  222. package/shared-modules/linux-audio/libinstpatch.json +2 -2
  223. package/shared-modules/linux-audio/liblo-static.json +3 -0
  224. package/shared-modules/luajit/luajit.json +2 -2
  225. package/shared-modules/squashfs-tools/squashfs-tools.json +0 -3
  226. package/slash-commands.json +7 -2
  227. package/src/renderer/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  228. package/src/renderer/shared/agentProgress.ts +51 -3
  229. package/src/renderer/shared/components/Settings/AutomationTab.tsx +2 -56
  230. package/src/renderer/shared/components/Settings/AvatarCropModal.tsx +15 -1
  231. package/src/renderer/shared/components/Settings/GeneralTab.tsx +25 -12
  232. package/src/renderer/shared/components/Settings/ThemeTab.test.tsx +45 -0
  233. package/src/renderer/shared/components/Settings/ThemeTab.tsx +106 -3
  234. package/src/renderer/shared/components/activity/AgentActivityDrawer.tsx +67 -17
  235. package/src/renderer/shared/components/activity/AgentActivityTable.tsx +376 -134
  236. package/src/renderer/shared/components/activity/AskUserActivityCard.test.tsx +122 -0
  237. package/src/renderer/shared/components/activity/AskUserActivityCard.tsx +70 -0
  238. package/src/renderer/shared/components/activity/McpToolResults.tsx +39 -2
  239. package/src/renderer/shared/components/activity/SubagentDagView.tsx +7 -7
  240. package/src/renderer/shared/components/activity/ViewedImages.tsx +41 -2
  241. package/src/renderer/shared/components/app/ChunkErrorBoundary.tsx +3 -3
  242. package/src/renderer/shared/components/app/CommandPalette.tsx +7 -7
  243. package/src/renderer/shared/components/app/DesktopTitlebar.tsx +2 -2
  244. package/src/renderer/shared/components/app/MintDashboard.tsx +27 -17
  245. package/src/renderer/shared/components/app/ModalErrorBoundary.tsx +3 -3
  246. package/src/renderer/shared/components/cards/CalculationCard.tsx +3 -3
  247. package/src/renderer/shared/components/cards/ImageGenCard.tsx +2 -2
  248. package/src/renderer/shared/components/cards/ImageSearchCard.tsx +2 -2
  249. package/src/renderer/shared/components/cards/MermaidCard.tsx +1 -1
  250. package/src/renderer/shared/components/cards/PlanCard.test.tsx +41 -0
  251. package/src/renderer/shared/components/cards/PlanCard.tsx +32 -0
  252. package/src/renderer/shared/components/cards/ReleaseNotesCard.test.tsx +29 -0
  253. package/src/renderer/shared/components/cards/ReleaseNotesCard.tsx +137 -0
  254. package/src/renderer/shared/components/cards/StockCard.tsx +7 -7
  255. package/src/renderer/shared/components/cards/ToolResultCards.tsx +11 -3
  256. package/src/renderer/shared/components/cards/UiMockupWidget.tsx +4 -4
  257. package/src/renderer/shared/components/cards/WeatherCard.tsx +5 -5
  258. package/src/renderer/shared/components/chat/ApprovalCard.test.tsx +11 -0
  259. package/src/renderer/shared/components/chat/ApprovalCard.tsx +21 -2
  260. package/src/renderer/shared/components/chat/ArtifactCards.test.tsx +69 -0
  261. package/src/renderer/shared/components/chat/ArtifactCards.tsx +238 -0
  262. package/src/renderer/shared/components/chat/AttachedDocumentCard.test.tsx +39 -0
  263. package/src/renderer/shared/components/chat/AttachedDocumentCard.tsx +220 -0
  264. package/src/renderer/shared/components/chat/ChatCodeBlock.test.tsx +33 -0
  265. package/src/renderer/shared/components/chat/ChatCodeBlock.tsx +15 -1
  266. package/src/renderer/shared/components/chat/ChatMessageItem.test.tsx +40 -2
  267. package/src/renderer/shared/components/chat/ChatMessageItem.tsx +180 -34
  268. package/src/renderer/shared/components/chat/ChatModeSelector.css +227 -0
  269. package/src/renderer/shared/components/chat/ChatModeSelector.test.tsx +45 -0
  270. package/src/renderer/shared/components/chat/ChatModeSelector.tsx +198 -0
  271. package/src/renderer/shared/components/chat/ChatPanel.test.tsx +22 -0
  272. package/src/renderer/shared/components/chat/ChatPanel.tsx +227 -53
  273. package/src/renderer/shared/components/chat/DiffReviewModal.tsx +6 -6
  274. package/src/renderer/shared/components/chat/GeminiLiveOverlay.test.tsx +142 -1
  275. package/src/renderer/shared/components/chat/GeminiLiveOverlay.tsx +45 -3
  276. package/src/renderer/shared/components/chat/ModelSelectorPopover.tsx +42 -14
  277. package/src/renderer/shared/components/chat/RewindModal.tsx +10 -10
  278. package/src/renderer/shared/components/chat/SlashSuggestions.test.tsx +14 -0
  279. package/src/renderer/shared/components/chat/SourcesBlock.test.tsx +53 -0
  280. package/src/renderer/shared/components/chat/SourcesBlock.tsx +236 -90
  281. package/src/renderer/shared/components/chat/TurnFileChanges.test.tsx +45 -1
  282. package/src/renderer/shared/components/chat/TurnFileChanges.tsx +202 -169
  283. package/src/renderer/shared/components/extensions/CliSessionsView.tsx +5 -4
  284. package/src/renderer/shared/components/extensions/McpRegistryPicker.tsx +3 -3
  285. package/src/renderer/shared/components/studio/LibraryPage.tsx +48 -5
  286. package/src/renderer/shared/components/workspace/ArtifactPreviewPanel.tsx +125 -13
  287. package/src/renderer/shared/components/workspace/CodeReviewPage.test.tsx +50 -0
  288. package/src/renderer/shared/components/workspace/CodeReviewPage.tsx +77 -16
  289. package/src/renderer/shared/components/workspace/GitBranchSelector.tsx +78 -22
  290. package/src/renderer/shared/components/workspace/ToolSurfacePage.test.tsx +13 -0
  291. package/src/renderer/shared/components/workspace/ToolSurfacePage.tsx +48 -28
  292. package/src/renderer/shared/components/workspace/WorkspacePdfPreview.tsx +266 -47
  293. package/src/renderer/shared/components/workspace/WorkspacePreviewActions.test.tsx +18 -6
  294. package/src/renderer/shared/components/workspace/background-terminals.css +11 -11
  295. package/src/renderer/shared/constants/config.ts +1 -5
  296. package/src/renderer/shared/constants/models.test.ts +51 -0
  297. package/src/renderer/shared/constants/models.ts +139 -32
  298. package/src/renderer/shared/conversation/lifecycle.test.ts +91 -3
  299. package/src/renderer/shared/conversation/lifecycle.ts +104 -5
  300. package/src/renderer/shared/conversation/progressiveStream.test.ts +83 -0
  301. package/src/renderer/shared/conversation/progressiveStream.ts +219 -0
  302. package/src/renderer/shared/css/agent-observability.css +133 -0
  303. package/src/renderer/shared/css/chat-ui-cards.css +13 -13
  304. package/src/renderer/shared/css/code-review.css +63 -34
  305. package/src/renderer/shared/css/code-sessions.css +47 -18
  306. package/src/renderer/shared/css/collapsed-paste.css +1 -1
  307. package/src/renderer/shared/css/error-notice.css +1 -1
  308. package/src/renderer/shared/css/file-changes.css +165 -80
  309. package/src/renderer/shared/css/library.css +105 -10
  310. package/src/renderer/shared/css/management-views.css +1 -1
  311. package/src/renderer/shared/css/mcp-results.css +5 -5
  312. package/src/renderer/shared/css/model-selector.css +18 -18
  313. package/src/renderer/shared/css/mods.css +7 -7
  314. package/src/renderer/shared/css/notification-notice.css +2 -2
  315. package/src/renderer/shared/css/queued-messages.css +5 -5
  316. package/src/renderer/shared/css/settings/general.css +18 -13
  317. package/src/renderer/shared/css/settings/profile.css +5 -5
  318. package/src/renderer/shared/css/settings/theme.css +5 -5
  319. package/src/renderer/shared/css/slash-choice.css +2 -2
  320. package/src/renderer/shared/css/slash-suggestions.css +3 -3
  321. package/src/renderer/shared/css/sources-block.css +41 -2
  322. package/src/renderer/shared/css/tools-panel.css +2 -2
  323. package/src/renderer/shared/css/ui-tailwind.css +8 -0
  324. package/src/renderer/shared/css/veo-studio.css +2 -2
  325. package/src/renderer/shared/css/viewed-images.css +7 -7
  326. package/src/renderer/shared/platform.ts +2 -1
  327. package/src/renderer/shared/theme/themeManager.test.ts +17 -0
  328. package/src/renderer/shared/theme/themeManager.ts +21 -4
  329. package/src/renderer/shared/theme/themes.ts +54 -0
  330. package/src/renderer/shared/theme/tokens.css +6 -4
  331. package/src/renderer/shared/types.ts +1 -1
  332. package/src/renderer/shared/utils/agentActivity.test.ts +468 -2
  333. package/src/renderer/shared/utils/agentActivity.ts +602 -35
  334. package/src/renderer/shared/utils/artifactBrowser.test.ts +37 -32
  335. package/src/renderer/shared/utils/artifactBrowser.ts +17 -19
  336. package/src/renderer/shared/utils/attachedDocument.test.ts +73 -0
  337. package/src/renderer/shared/utils/attachedDocument.ts +49 -0
  338. package/src/renderer/shared/utils/fileIcons.test.ts +59 -0
  339. package/src/renderer/shared/utils/fileIcons.ts +149 -16
  340. package/src/renderer/shared/utils/markdown.tsx +72 -19
  341. package/src/renderer/shared/utils/markdown.webImages.test.tsx +16 -0
  342. package/src/renderer/shared/utils/mcpResults.test.tsx +29 -0
  343. package/src/renderer/shared/utils/slashCommandProcessor.ts +4 -1
  344. package/src/renderer/shared/utils/syntaxHighlight.test.tsx +11 -1
  345. package/src/renderer/shared/utils/syntaxHighlight.tsx +51 -3
  346. package/src/renderer/shared/utils/useGeminiLiveVoice.ts +324 -51
  347. package/src/renderer/shared/utils/workspaceDrag.test.ts +153 -0
  348. package/src/renderer/shared/utils/workspaceDrag.ts +142 -0
  349. package/src/renderer/shared/utils/workspaceMedia.ts +10 -2
  350. package/src/renderer/src/App.tsx +14 -8
  351. package/src/renderer/src/agentProgress.ts +1 -0
  352. package/src/renderer/src/components/ScreenPicker.css +1 -1
  353. package/src/renderer/src/components/WorkspacePanel.tsx +6 -5
  354. package/src/renderer/src/css/app-shell.css +4 -4
  355. package/src/renderer/src/css/chat.css +1261 -241
  356. package/src/renderer/src/css/desktop-tools.css +11 -11
  357. package/src/renderer/src/css/sidebar-workspace.css +2 -2
  358. package/src/renderer/src/css/tool-surfaces.css +12 -12
  359. package/src/renderer/src/index.css +38 -20
  360. package/src/renderer/src/tauri.ts +22 -2
  361. package/src/renderer/src-web/App.tsx +14 -0
  362. package/src/renderer/src-web/agentProgress.ts +1 -0
  363. package/src/renderer/src-web/css/app-shell.css +4 -4
  364. package/src/renderer/src-web/css/chat.css +1278 -190
  365. package/src/renderer/src-web/css/mobile.css +29 -13
  366. package/src/renderer/src-web/css/settings/mobile.css +2 -2
  367. package/src/renderer/src-web/css/sidebar-workspace.css +1 -1
  368. package/src/renderer/src-web/index.css +38 -20
  369. package/src/renderer/src-web/tauri.ts +22 -2
  370. package/src/renderer/tests/browserArtifacts.browser.tsx +1 -1
  371. package/src/renderer/tests/library.browser.tsx +3 -0
  372. package/src/renderer/tests/liveVoice.browser.html +1 -0
  373. package/src/renderer/tests/workspaceDrop.browser.tsx +1 -1
  374. package/src-tauri/src/app/lifecycle.rs +1 -14
  375. package/src-tauri/src/background/headless.rs +14 -8
  376. package/src-tauri/src/commands/conversation.rs +38 -0
  377. package/src-tauri/src/native/mod.rs +0 -1
  378. package/src-tauri/src/native/system.rs +4 -47
  379. package/crates/mint-cli/src/interactive/chat_tui.rs +0 -8855
  380. package/crates/mint-core/src/agent/chat.rs +0 -4394
  381. package/crates/mint-core/src/browser/lifecycle.rs +0 -291
  382. package/crates/mint-core/src/browser/logging.rs +0 -20
  383. package/crates/mint-core/src/orchestration/tools/browser.rs +0 -31
  384. package/out/web/assets/ArtifactPreviewPanel-S0dPfYFx.js +0 -2
  385. package/out/web/assets/CalculationCard-CRjP3E1j.js +0 -1
  386. package/out/web/assets/CliSessionsView-C3Br2v5Y.css +0 -1
  387. package/out/web/assets/CodeReviewPage-CUJceQme.css +0 -1
  388. package/out/web/assets/CodeReviewPage-VCUgPla_.js +0 -2
  389. package/out/web/assets/ImageGenCard-BCXxkVJX.js +0 -1
  390. package/out/web/assets/ImageSearchCard-N3yQOr8Z.js +0 -1
  391. package/out/web/assets/LibraryPage-DAxUTAg7.css +0 -1
  392. package/out/web/assets/LibraryPage-WlviRdR8.js +0 -2
  393. package/out/web/assets/LinkedFoldersView-CKRgroWK.js +0 -1
  394. package/out/web/assets/McpServersView-D3wHnuHg.js +0 -1
  395. package/out/web/assets/MermaidCard-NqrHdyJW.js +0 -2
  396. package/out/web/assets/MintDashboard-B2DJsDDO.css +0 -1
  397. package/out/web/assets/MintDashboard-COw_xol7.js +0 -63
  398. package/out/web/assets/RewindModal-DempuDod.js +0 -1
  399. package/out/web/assets/SettingsWindow-2YP3yj7s.js +0 -4
  400. package/out/web/assets/SettingsWindow-Dz8LQVgD.css +0 -1
  401. package/out/web/assets/StockCard-BDMCe7mx.js +0 -1
  402. package/out/web/assets/ToolSurfacePage-B0J_q0Jl.js +0 -38
  403. package/out/web/assets/ToolSurfacePage-CRIQ1owD.css +0 -1
  404. package/out/web/assets/UiMockupWidget-DD73QWg1.js +0 -1
  405. package/out/web/assets/WeatherCard-CPucIfq8.js +0 -1
  406. package/out/web/assets/WorkspacePdfPreview-Dx_lkjNu.js +0 -2
  407. package/out/web/assets/classDiagram-ZZMXUADV-BgJ5WtSp.js +0 -1
  408. package/out/web/assets/classDiagram-v2-VYDZK3BY-BgJ5WtSp.js +0 -1
  409. package/out/web/assets/config-CvIO5hkn.js +0 -2
  410. package/out/web/assets/flowDiagram-HODETNUW-uqCHJond.js +0 -1
  411. package/out/web/assets/index-BmpulIkg.js +0 -168
  412. package/out/web/assets/index-CkvBwhX_.css +0 -1
  413. package/out/web/assets/stateDiagram-v2-MP3YSRHH-uf3kdNW4.js +0 -1
  414. package/out/web/assets/swimlanesDiagram-VR7AAH4N-Y8q5bQce.js +0 -8
  415. package/shared-modules/libsecret/libsecret.json +0 -23
  416. package/shared-modules/libusb/libusb.json +0 -27
  417. package/shared-modules/lzo/lzo.json +0 -27
  418. package/src/renderer/src/components/BrowserShell.tsx +0 -108
  419. package/src/renderer/src/components/BrowserSuggestionsPopup.tsx +0 -91
  420. package/src/renderer/src/components/browser-shell.css +0 -185
  421. package/src-tauri/src/native/browser.rs +0 -252
@@ -46,7 +46,7 @@
46
46
  .mint-titlebar-icon-button {
47
47
  width: 30px;
48
48
  height: 28px;
49
- border-radius: 5px;
49
+ border-radius: var(--radius-xs, 6px);
50
50
  }
51
51
 
52
52
  .mint-titlebar-icon-button svg {
@@ -93,7 +93,7 @@
93
93
  min-width: 38px;
94
94
  height: 28px;
95
95
  padding: 0 9px;
96
- border-radius: 5px;
96
+ border-radius: var(--radius-xs, 6px);
97
97
  font: inherit;
98
98
  font-size: 0.76rem;
99
99
  }
@@ -106,7 +106,7 @@
106
106
  min-width: 210px;
107
107
  padding: 5px;
108
108
  border: 1px solid var(--border-default, rgba(255, 255, 255, 0.14));
109
- border-radius: 8px;
109
+ border-radius: var(--radius-sm, 8px);
110
110
  background: var(--bg-surface, #20232a);
111
111
  box-shadow: var(--shadow-md, 0 8px 24px rgba(0, 0, 0, 0.3));
112
112
  }
@@ -120,7 +120,7 @@
120
120
  min-height: 32px;
121
121
  padding: 0 9px;
122
122
  border: 0;
123
- border-radius: 5px;
123
+ border-radius: var(--radius-xs, 6px);
124
124
  color: var(--text-main, #f1f2f4);
125
125
  background: transparent;
126
126
  font: inherit;
@@ -256,7 +256,7 @@
256
256
  width: min(420px, calc(100vw - 32px));
257
257
  overflow: hidden;
258
258
  border: 1px solid var(--border-default, rgba(255, 255, 255, 0.14));
259
- border-radius: 10px;
259
+ border-radius: var(--radius-lg, 14px);
260
260
  color: var(--text-main, #f1f2f4);
261
261
  background: var(--bg-surface, #20232a);
262
262
  box-shadow: var(--shadow-lg, 0 18px 48px rgba(0, 0, 0, 0.42));
@@ -280,7 +280,7 @@
280
280
  width: 28px;
281
281
  height: 28px;
282
282
  border: 0;
283
- border-radius: 5px;
283
+ border-radius: var(--radius-xs, 6px);
284
284
  color: var(--text-secondary, #aeb4c0);
285
285
  background: transparent;
286
286
  font-size: 1.2rem;
@@ -306,7 +306,7 @@
306
306
  gap: 16px;
307
307
  min-height: 34px;
308
308
  padding: 0 8px;
309
- border-radius: 5px;
309
+ border-radius: var(--radius-xs, 6px);
310
310
  }
311
311
 
312
312
  .mint-shortcuts-dialog dl > div:hover {
@@ -328,7 +328,7 @@
328
328
  .mint-shortcuts-dialog kbd {
329
329
  padding: 2px 5px;
330
330
  border: 1px solid var(--border-default, rgba(255, 255, 255, 0.14));
331
- border-radius: 4px;
331
+ border-radius: var(--radius-2xs, 4px);
332
332
  color: var(--text-secondary, #aeb4c0);
333
333
  background: var(--bg-canvas, #18191d);
334
334
  font: 0.68rem/1.25 var(--font-mono, monospace);
@@ -482,7 +482,7 @@
482
482
  padding: 0 11px;
483
483
  border: 1px solid var(--border-default, rgba(255, 255, 255, 0.12));
484
484
  border-bottom: 0;
485
- border-radius: 10px 10px 0 0;
485
+ border-radius: var(--radius-lg, 14px) var(--radius-lg, 14px) 0 0;
486
486
  color: var(--text-main, #e5e7eb);
487
487
  background: var(--bg-surface, #20232a);
488
488
  }
@@ -516,7 +516,7 @@
516
516
  width: 26px;
517
517
  height: 26px;
518
518
  border: 0;
519
- border-radius: 6px;
519
+ border-radius: var(--radius-xs, 6px);
520
520
  color: var(--text-muted, #9ca3af);
521
521
  background: transparent;
522
522
  font-size: 20px;
@@ -541,7 +541,7 @@
541
541
  width: 26px;
542
542
  height: 26px;
543
543
  border: 0;
544
- border-radius: 6px;
544
+ border-radius: var(--radius-xs, 6px);
545
545
  color: var(--text-muted, #9ca3af);
546
546
  background: transparent;
547
547
  font-size: 20px;
@@ -540,7 +540,7 @@
540
540
  gap: 9px;
541
541
  padding: 0 10px;
542
542
  color: var(--text-secondary);
543
- border-radius: 7px;
543
+ border-radius: var(--radius-sm, 8px);
544
544
  white-space: nowrap;
545
545
  overflow: hidden;
546
546
  text-overflow: ellipsis;
@@ -1809,7 +1809,7 @@
1809
1809
  content: '';
1810
1810
  position: absolute;
1811
1811
  inset: 8px 3px;
1812
- border-radius: 2px;
1812
+ border-radius: var(--radius-2xs, 4px);
1813
1813
  background: var(--border-default);
1814
1814
  transition: background 0.15s ease;
1815
1815
  }
@@ -301,7 +301,7 @@ body.is-tool-resizing .assistant-workspace {
301
301
 
302
302
  .tool-surface-switch-menu .tool-surface-launcher-item kbd {
303
303
  padding: 3px 5px;
304
- border-radius: 5px;
304
+ border-radius: var(--radius-xs, 6px);
305
305
  font-size: 0.64rem;
306
306
  }
307
307
 
@@ -359,7 +359,7 @@ body.is-tool-resizing .assistant-workspace {
359
359
  min-width: 16px;
360
360
  height: 16px;
361
361
  padding: 0 4px;
362
- border-radius: 8px;
362
+ border-radius: var(--radius-full, 9999px);
363
363
  background: var(--bg-surface-hover);
364
364
  color: var(--text-main, #f1f5f9);
365
365
  font-size: 0.65rem;
@@ -447,8 +447,8 @@ body.is-tool-resizing .assistant-workspace {
447
447
  }
448
448
 
449
449
  .tool-surface-tabs-dropdown-item.is-active {
450
- background: var(--accent-subtle);
451
- color: var(--interactive-fg);
450
+ background: var(--bg-surface-active, var(--surface-strong));
451
+ color: var(--text-main, #f8fafc);
452
452
  font-weight: 550;
453
453
  }
454
454
 
@@ -474,7 +474,7 @@ body.is-tool-resizing .assistant-workspace {
474
474
  width: 20px;
475
475
  height: 20px;
476
476
  border: 0;
477
- border-radius: 4px;
477
+ border-radius: var(--radius-2xs, 4px);
478
478
  background: transparent;
479
479
  color: var(--text-muted, #94a3b8);
480
480
  opacity: 0.5;
@@ -672,7 +672,7 @@ body.is-tool-resizing .assistant-workspace {
672
672
  height: 28px;
673
673
  flex: 0 0 auto;
674
674
  border: 0;
675
- border-radius: 5px 0 0 5px;
675
+ border-radius: var(--radius-xs, 6px) 0 0 var(--radius-xs, 6px);
676
676
  color: var(--text-muted, #9ca3af);
677
677
  background: transparent;
678
678
  cursor: pointer;
@@ -821,7 +821,7 @@ body.is-tool-resizing .assistant-workspace {
821
821
  max-width: clamp(140px, 20vw, 320px);
822
822
  padding: 3px 9px;
823
823
  border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.08));
824
- border-radius: 9999px;
824
+ border-radius: var(--radius-full, 9999px);
825
825
  background: var(--bg-surface-soft);
826
826
  font: 500 0.72rem ui-monospace, SFMono-Regular, Menlo, monospace;
827
827
  color: var(--text-muted, #94a3b8);
@@ -906,9 +906,9 @@ body.is-tool-resizing .assistant-workspace {
906
906
  .tool-surface-drop-error { color: var(--status-error); }
907
907
  .tool-surface-sources { width: 100%; height: 100%; min-width: 0; overflow-y: auto; padding: 12px; }
908
908
  .tool-surface-sources .session-sources { margin: 0; padding: 0; border: 0; }
909
- .tool-surface-menu-icon.is-sources, .tool-surface-tab-icon.is-sources { color: var(--accent); }
910
- .tool-surface-menu-icon.is-mods, .tool-surface-tab-icon.is-mods { color: var(--accent); }
911
- .tool-surface-menu-icon.is-background, .tool-surface-tab-icon.is-background { color: var(--accent); }
909
+ .tool-surface-menu-icon.is-sources, .tool-surface-tab-icon.is-sources { color: var(--text-main, #e2e8f0); }
910
+ .tool-surface-menu-icon.is-mods, .tool-surface-tab-icon.is-mods { color: var(--text-main, #e2e8f0); }
911
+ .tool-surface-menu-icon.is-background, .tool-surface-tab-icon.is-background { color: var(--text-main, #e2e8f0); }
912
912
 
913
913
  .tool-surface-launcher {
914
914
  display: flex;
@@ -924,7 +924,7 @@ body.is-tool-resizing .assistant-workspace {
924
924
  gap: 12px;
925
925
  padding: 0 16px;
926
926
  border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.08));
927
- border-radius: 12px;
927
+ border-radius: var(--radius-xl, 18px);
928
928
  color: var(--text-main, #e2e8f0);
929
929
  background: var(--bg-surface-soft);
930
930
  text-align: left;
@@ -956,7 +956,7 @@ body.is-tool-resizing .assistant-workspace {
956
956
  margin-left: auto;
957
957
  padding: 3px 8px;
958
958
  border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.09));
959
- border-radius: 6px;
959
+ border-radius: var(--radius-xs, 6px);
960
960
  color: var(--text-muted, #94a3b8);
961
961
  background: var(--bg-surface-soft);
962
962
  font: 500 0.72rem ui-monospace, SFMono-Regular, Menlo, monospace;
@@ -51,12 +51,26 @@ button {
51
51
  background: color-mix(in srgb, var(--accent, #10b981) 12%, transparent);
52
52
  border: 1px solid color-mix(in srgb, var(--accent, #10b981) 25%, transparent);
53
53
  color: var(--interactive-fg);
54
- padding: 2px 6px;
55
- border-radius: 6px;
54
+ padding: 1px 6px;
55
+ border-radius: var(--radius-xs, 6px);
56
56
  font-weight: 500;
57
- font-size: 0.9em;
58
- display: inline-block;
57
+ font-size: 0.88em;
58
+ display: inline-flex;
59
+ align-items: center;
60
+ gap: 4px;
61
+ vertical-align: middle;
59
62
  margin: 0 2px;
63
+ line-height: 1.4;
64
+ }
65
+
66
+ .chat-mention.chat-file-mention {
67
+ cursor: pointer;
68
+ transition: background 0.15s ease, border-color 0.15s ease;
69
+ }
70
+
71
+ .chat-mention.chat-file-mention:hover {
72
+ background: color-mix(in srgb, var(--accent, #10b981) 20%, transparent);
73
+ border-color: color-mix(in srgb, var(--accent, #10b981) 40%, transparent);
60
74
  }
61
75
 
62
76
  .chat-ui-grid-item:hover {
@@ -75,7 +89,7 @@ button {
75
89
  flex-direction: column;
76
90
  background: var(--panel-soft, #121214);
77
91
  border: 1px solid var(--border, rgba(255, 255, 255, 0.08));
78
- border-radius: 16px;
92
+ border-radius: var(--radius-xl, 18px);
79
93
  margin: 12px 0;
80
94
  overflow: hidden;
81
95
  box-shadow: var(--shadow-sm, 0 4px 16px rgba(0, 0, 0, 0.18));
@@ -110,7 +124,7 @@ button {
110
124
  color: var(--text-soft, #64748b);
111
125
  background: var(--bg-surface-soft);
112
126
  padding: 1px 6px;
113
- border-radius: 4px;
127
+ border-radius: var(--radius-2xs, 4px);
114
128
  }
115
129
 
116
130
  .chat-code-block-actions {
@@ -125,7 +139,7 @@ button {
125
139
  color: var(--text-soft, #94a3b8);
126
140
  cursor: pointer;
127
141
  padding: 4px 8px;
128
- border-radius: 5px;
142
+ border-radius: var(--radius-xs, 6px);
129
143
  display: inline-flex;
130
144
  align-items: center;
131
145
  gap: 5px;
@@ -143,6 +157,10 @@ button {
143
157
  padding: 4px 6px;
144
158
  }
145
159
 
160
+ .chat-code-toggle-lines-btn.is-active {
161
+ color: var(--interactive-fg, #38bdf8);
162
+ }
163
+
146
164
  .chat-code-copy-btn.is-copied {
147
165
  color: var(--interactive-fg);
148
166
  }
@@ -164,9 +182,9 @@ button {
164
182
  }
165
183
 
166
184
  .chat-code-block-body code {
167
- font-family: 'Fira Code', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
168
- font-size: 13px;
169
- line-height: 1.6;
185
+ font-family: 'Fira Code', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Noto Sans Thai', monospace;
186
+ font-size: 14.5px;
187
+ line-height: 1.65;
170
188
  white-space: pre;
171
189
  color: var(--text-chat, var(--text-main, #e2e8f0));
172
190
  display: block;
@@ -197,7 +215,7 @@ button {
197
215
  padding-right: 14px;
198
216
  text-align: right;
199
217
  color: var(--text-soft, #475569);
200
- font-size: 0.76rem;
218
+ font-size: 0.82rem;
201
219
  user-select: none;
202
220
  opacity: 0.65;
203
221
  }
@@ -219,6 +237,7 @@ button {
219
237
  /* Code Syntax Highlighting (Driven by tokens.css) */
220
238
  .token-command { color: var(--syntax-command); font-weight: 500; }
221
239
  .token-keyword { color: var(--syntax-keyword); font-weight: 500; }
240
+ .token-tag { color: var(--syntax-variable, #f43f5e); font-weight: 500; }
222
241
  .token-string { color: var(--syntax-string); }
223
242
  .token-flag { color: var(--syntax-flag); }
224
243
  .token-comment { color: var(--syntax-comment); font-style: italic; }
@@ -231,19 +250,18 @@ button {
231
250
  .token-operator { color: var(--syntax-operator); }
232
251
  .token-punctuation { color: var(--syntax-punctuation); }
233
252
 
234
- /* Tech Pill Inline Code (ChatGPT style) */
253
+ /* Minimal Inline Code */
235
254
  .chat-inline-code {
236
- background: var(--bg-surface-soft);
237
- border: 1px solid var(--border-default);
238
- color: var(--text-primary);
239
- padding: 2px 7px;
240
- border-radius: var(--radius-sm, 6px);
255
+ background: var(--bg-surface-hover, rgba(127, 127, 127, 0.14));
256
+ border: none;
257
+ color: var(--text-chat, var(--text-primary, inherit));
258
+ padding: 1.5px 5px;
259
+ border-radius: var(--radius-xs, 4px);
241
260
  font-family: 'Fira Code', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
242
- font-size: 0.86em;
261
+ font-size: 0.88em;
243
262
  font-weight: 500;
244
263
  letter-spacing: -0.01em;
245
- box-shadow: var(--shadow-sm);
246
- display: inline-block;
264
+ box-shadow: none;
247
265
  vertical-align: baseline;
248
266
  }
249
267
 
@@ -986,6 +986,25 @@ export async function clearChatHistory(chatId?: string | null): Promise<number>
986
986
  return invoke<number>('clear_chat_history', { chatId })
987
987
  }
988
988
 
989
+ export async function truncateInteractionsFrom(chatId: string | null | undefined, fromId: number): Promise<number> {
990
+ if (!isTauriRuntime()) {
991
+ const API_BASE = getLocalApiBase();
992
+ try {
993
+ const params = new URLSearchParams();
994
+ if (chatId) params.set('chatId', chatId);
995
+ params.set('fromId', String(fromId));
996
+ const res = await authFetch(`${API_BASE}/interactions/truncate?${params.toString()}`, { method: 'POST' });
997
+ const data = await res.json();
998
+ return data.status === 'ok' ? 1 : 0;
999
+ } catch (e) {
1000
+ console.error("Failed to truncate interactions on local server:", e);
1001
+ return 0;
1002
+ }
1003
+ }
1004
+ const { invoke } = await import('@tauri-apps/api/core')
1005
+ return invoke<number>('truncate_interactions_from', { chatId, fromId })
1006
+ }
1007
+
989
1008
  export async function listSavedPictures(): Promise<PictureEntry[]> {
990
1009
  if (!isTauriRuntime()) {
991
1010
  const API_BASE = getLocalApiBase();
@@ -2255,6 +2274,7 @@ const _apiCheck: MintPlatformApi = {
2255
2274
  saveSubagent,
2256
2275
  deleteSubagent,
2257
2276
  clearChatHistory,
2277
+ truncateInteractionsFrom,
2258
2278
  listSavedPictures,
2259
2279
  deleteSavedPicture,
2260
2280
  generateImages,
@@ -2305,9 +2325,9 @@ export async function getBackgroundJob(id: string) { if (isTauriRuntime()) { con
2305
2325
  export async function stopBackgroundJob(id: string) { if (isTauriRuntime()) { const { invoke } = await import('@tauri-apps/api/core'); return invoke<import('../shared/types').BackgroundJob>('stop_background_job', { id, ownerToken: getStoredAuthToken() }) } return backgroundRequest<import('../shared/types').BackgroundJob>(`/${encodeURIComponent(id)}/stop`, 'POST') }
2306
2326
  export async function deleteBackgroundJob(id: string) { if (isTauriRuntime()) { const { invoke } = await import('@tauri-apps/api/core'); await invoke('remove_background_job', { id, ownerToken: getStoredAuthToken() }); return } await backgroundRequest<{deleted: boolean}>(`/${encodeURIComponent(id)}`, 'DELETE') }
2307
2327
 
2308
- export async function startHtmlPreview(root: string, relativePath: string, mintBrowser = false): Promise<{url: string; jobId: string}> {
2328
+ export async function startHtmlPreview(root: string, relativePath: string, _mintBrowser = false): Promise<{url: string; jobId: string}> {
2309
2329
  if (isTauriRuntime()) { const { invoke } = await import('@tauri-apps/api/core'); return invoke('start_html_preview', { root, relativePath, ownerToken: getStoredAuthToken() }) }
2310
- const response = await authFetch(`${getLocalApiBase()}/html-preview`, { method: 'POST', headers: {'Content-Type':'application/json'}, body: JSON.stringify({root, relativePath, mintBrowser}) })
2330
+ const response = await authFetch(`${getLocalApiBase()}/html-preview`, { method: 'POST', headers: {'Content-Type':'application/json'}, body: JSON.stringify({root, relativePath}) })
2311
2331
  const value = await response.json()
2312
2332
  if (!response.ok) throw new Error(value.message || 'Could not start HTML preview')
2313
2333
  return value
@@ -2,6 +2,7 @@ import React, { Suspense, useEffect, useState } from 'react'
2
2
  import AuthGate from '../shared/components/app/AuthGate'
3
3
  import ChunkErrorBoundary from '../shared/components/app/ChunkErrorBoundary'
4
4
  import ModalErrorBoundary from '../shared/components/app/ModalErrorBoundary'
5
+ import { ErrorRecovery } from '../shared/components/ui/error-recovery'
5
6
  import PullToRefresh from './components/PullToRefresh'
6
7
  import { lazyWithRetry, scheduleIdlePreload } from '../shared/utils/lazyWithRetry'
7
8
 
@@ -92,6 +93,19 @@ export default function App() {
92
93
  }, [])
93
94
 
94
95
 
96
+ if (route.startsWith('/error-preview') || route.startsWith('/error-recovery')) {
97
+ return (
98
+ <div style={{ width: '100%', height: '100vh', display: 'flex', flexDirection: 'column', background: 'var(--bg-canvas, #09090b)' }}>
99
+ <ErrorRecovery
100
+ onBackToChat={() => {
101
+ window.location.hash = '#/'
102
+ }}
103
+ onRefresh={() => window.location.reload()}
104
+ />
105
+ </div>
106
+ )
107
+ }
108
+
95
109
  let content = <MintDashboard />
96
110
 
97
111
  // For web, show settings as a centered modal overlay instead of a full-page route
@@ -5,6 +5,7 @@ export {
5
5
  thoughtsFrom,
6
6
  trimAgentProgress,
7
7
  hasAgentToolActivity,
8
+ hasAgentDrawerActivity,
8
9
  mergeActivitySnapshots,
9
10
  parseAgentActivity,
10
11
  parseFileChangesFromProgress,
@@ -789,7 +789,7 @@ h1 {
789
789
  .preview-split-resizer-grip {
790
790
  width: 4px;
791
791
  height: 28px;
792
- border-radius: 2px;
792
+ border-radius: var(--radius-2xs, 4px);
793
793
  background: var(--border);
794
794
  position: relative;
795
795
  z-index: 1;
@@ -1224,7 +1224,7 @@ h1 {
1224
1224
  backdrop-filter: blur(14px);
1225
1225
  -webkit-backdrop-filter: blur(14px);
1226
1226
  border: 1px solid var(--border, rgba(255, 255, 255, 0.12));
1227
- border-radius: 12px;
1227
+ border-radius: var(--radius-xl, 12px);
1228
1228
  padding: 10px 16px;
1229
1229
  display: flex;
1230
1230
  align-items: center;
@@ -1275,7 +1275,7 @@ h1 {
1275
1275
  color: var(--interactive-fg);
1276
1276
  border: 1px solid color-mix(in srgb, var(--accent) 35%, transparent);
1277
1277
  padding: 5px 12px;
1278
- border-radius: 6px;
1278
+ border-radius: var(--radius-sm, 6px);
1279
1279
  font-size: 12px;
1280
1280
  font-weight: 600;
1281
1281
  cursor: pointer;
@@ -1300,7 +1300,7 @@ h1 {
1300
1300
  cursor: pointer;
1301
1301
  padding: 4px;
1302
1302
  font-size: 12px;
1303
- border-radius: 4px;
1303
+ border-radius: var(--radius-xs, 4px);
1304
1304
  display: flex;
1305
1305
  align-items: center;
1306
1306
  justify-content: center;