@pheem49/mint 1.14.0 → 1.15.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 (585) hide show
  1. package/CLAUDE.md +1 -1
  2. package/Cargo.lock +291 -11
  3. package/Cargo.toml +1 -1
  4. package/README.md +71 -9
  5. package/ROADMAP.md +30 -0
  6. package/Release_Note.md +579 -465
  7. package/crates/mint-cli/Cargo.toml +3 -1
  8. package/crates/mint-cli/src/agent/approval_prompts.rs +16 -3
  9. package/crates/mint-cli/src/agent/live_status.rs +367 -118
  10. package/crates/mint-cli/src/agent/markdown_render.rs +601 -61
  11. package/crates/mint-cli/src/agent.rs +452 -215
  12. package/crates/mint-cli/src/commands/agent.rs +16 -21
  13. package/crates/mint-cli/src/commands/eval.rs +9 -5
  14. package/crates/mint-cli/src/commands/git.rs +204 -0
  15. package/crates/mint-cli/src/commands/integrations.rs +28 -0
  16. package/crates/mint-cli/src/commands/knowledge.rs +1 -0
  17. package/crates/mint-cli/src/commands/mod.rs +37 -2
  18. package/crates/mint-cli/src/commands/tailnet_web.rs +235 -0
  19. package/crates/mint-cli/src/image.rs +26 -3
  20. package/crates/mint-cli/src/interactive/chat_tui.rs +4742 -0
  21. package/crates/mint-cli/src/interactive/command_ui.rs +477 -0
  22. package/crates/mint-cli/src/interactive/format.rs +8 -0
  23. package/crates/mint-cli/src/interactive/input_box.rs +38 -2
  24. package/crates/mint-cli/src/interactive/picker.rs +180 -37
  25. package/crates/mint-cli/src/interactive/resume_picker.rs +686 -0
  26. package/crates/mint-cli/src/interactive/slash_commands.rs +868 -450
  27. package/crates/mint-cli/src/interactive/thought_viewer.rs +286 -0
  28. package/crates/mint-cli/src/interactive.rs +400 -136
  29. package/crates/mint-cli/src/main.rs +84 -23
  30. package/crates/mint-cli/src/markdown.rs +12 -5
  31. package/crates/mint-cli/src/onboard.rs +32 -30
  32. package/crates/mint-cli/src/plugins_cli.rs +8 -5
  33. package/crates/mint-cli/src/setup.rs +10 -8
  34. package/crates/mint-cli/src/terminal_theme.rs +187 -0
  35. package/crates/mint-cli/src/updater.rs +56 -21
  36. package/crates/mint-core/src/agent/agent_loop.rs +1 -0
  37. package/crates/mint-core/src/agent/chat.rs +843 -177
  38. package/crates/mint-core/src/agent/code_tools.rs +83 -2
  39. package/crates/mint-core/src/agent/memory.rs +658 -20
  40. package/crates/mint-core/src/agent/skills.rs +1 -1
  41. package/crates/mint-core/src/api_server/routes/chat.rs +31 -5
  42. package/crates/mint-core/src/api_server/routes/linked_folders.rs +118 -3
  43. package/crates/mint-core/src/api_server/routes/misc.rs +10 -14
  44. package/crates/mint-core/src/api_server/routes/sessions.rs +44 -0
  45. package/crates/mint-core/src/api_server.rs +22 -3
  46. package/crates/mint-core/src/avatar_bridge.rs +2 -0
  47. package/crates/mint-core/src/browser/cdp.rs +74 -83
  48. package/crates/mint-core/src/browser/evidence.rs +260 -0
  49. package/crates/mint-core/src/browser/input.rs +1 -1
  50. package/crates/mint-core/src/browser/interact.rs +98 -124
  51. package/crates/mint-core/src/browser/lifecycle.rs +75 -4
  52. package/crates/mint-core/src/browser/mod.rs +16 -2
  53. package/crates/mint-core/src/browser/navigate.rs +27 -19
  54. package/crates/mint-core/src/browser/observe.js +40 -0
  55. package/crates/mint-core/src/browser/session.rs +1558 -0
  56. package/crates/mint-core/src/git/branches.rs +348 -0
  57. package/crates/mint-core/src/git/checkpoint.rs +40 -0
  58. package/crates/mint-core/src/git/diff.rs +206 -0
  59. package/crates/mint-core/src/git/mod.rs +10 -2
  60. package/crates/mint-core/src/integrations/channels.rs +1 -0
  61. package/crates/mint-core/src/lib.rs +22 -14
  62. package/crates/mint-core/src/live_sync.rs +28 -9
  63. package/crates/mint-core/src/media/auto_shorts.rs +1 -0
  64. package/crates/mint-core/src/media/gemini_live.rs +12 -1
  65. package/crates/mint-core/src/media/mic_transcribe.rs +1 -0
  66. package/crates/mint-core/src/media/subtitle.rs +1 -0
  67. package/crates/mint-core/src/orchestration/context_render.rs +1 -0
  68. package/crates/mint-core/src/orchestration/memory_skill.rs +6 -1
  69. package/crates/mint-core/src/orchestration/mod.rs +1024 -271
  70. package/crates/mint-core/src/orchestration/tools/browser.rs +16 -139
  71. package/crates/mint-core/src/orchestration/tools/misc.rs +2 -1
  72. package/crates/mint-core/src/orchestration/tools/web.rs +1 -1
  73. package/crates/mint-core/src/prompts/agent.rs +58 -29
  74. package/crates/mint-core/src/prompts/chat.rs +1 -1
  75. package/crates/mint-core/src/prompts/persona.rs +1 -1
  76. package/crates/mint-core/src/prompts/tool_catalog.rs +93 -25
  77. package/crates/mint-core/src/search/linked_folders/index.rs +732 -0
  78. package/crates/mint-core/src/search/linked_folders.rs +391 -130
  79. package/crates/mint-core/src/slash/mod.rs +470 -22
  80. package/crates/mint-core/src/slash/model_fetcher.rs +12 -3
  81. package/crates/mint-core/src/slash/models.rs +66 -10
  82. package/crates/mint-core/src/system/config.rs +230 -0
  83. package/crates/mint-core/src/system/workspace.rs +228 -0
  84. package/crates/mint-core/src/system.rs +1 -0
  85. package/crates/mint-core/tests/memory_persistence.rs +39 -0
  86. package/mint-presentation-demo.mp4 +0 -0
  87. package/out/web/assets/CliSessionsView-BxUVWEEL.js +1 -0
  88. package/out/web/assets/CliSessionsView-CBDTXuQv.css +1 -0
  89. package/out/web/assets/CodeReviewPage-DkMgfcos.css +1 -0
  90. package/out/web/assets/CodeReviewPage-jKlmLJwT.js +3 -0
  91. package/out/web/assets/CommandPalette-DnwPA5hy.js +1 -0
  92. package/out/web/assets/ImageStudioPanel-BR1XFwhR.js +1 -0
  93. package/out/web/assets/ImageStudioPanel-D0lnhQV5.css +1 -0
  94. package/out/web/assets/LinkedFoldersView-bi-CWQ-I.js +1 -0
  95. package/out/web/assets/McpRegistryPicker-D5tEFnyq.js +1 -0
  96. package/out/web/assets/McpServersView-BGG1dhFM.js +1 -0
  97. package/out/web/assets/MintDashboard-BIglDEWX.js +20 -0
  98. package/out/web/assets/MintDashboard-DSMywSgs.css +1 -0
  99. package/out/web/assets/ModelPanel-CbJ1PFoZ.js +1 -0
  100. package/out/web/assets/PicturesLibrary-CQP0fLP1.css +1 -0
  101. package/out/web/assets/PicturesLibrary-DoYN7T1p.js +1 -0
  102. package/out/web/assets/PluginsView-CU1HWXGk.js +1 -0
  103. package/out/web/assets/ScheduledTasksView-Bnl36y2N.js +1 -0
  104. package/out/web/assets/SettingsWindow-DhWLAn9T.css +1 -0
  105. package/out/web/assets/SettingsWindow-Dw8L01pw.js +2 -0
  106. package/out/web/assets/SkillsView-cnl8aY5p.js +2 -0
  107. package/out/web/assets/ToolSurfacePage-CgsQw6l5.css +1 -0
  108. package/out/web/assets/ToolSurfacePage-Cz2VJAPZ.js +37 -0
  109. package/out/web/assets/VeoStudioPanel-D4JnERWR.js +4 -0
  110. package/out/web/assets/VeoStudioPanel-DOj7_WR3.css +1 -0
  111. package/out/web/assets/WorkspacePanel-CbJ1PFoZ.js +1 -0
  112. package/out/web/assets/{abnfDiagram-VCTEODGH-DAOBA7ZG.js → abnfDiagram-VCTEODGH-ByMyfanq.js} +1 -1
  113. package/out/web/assets/{architecture-7GRP2DOG-CgSwQOPQ.js → architecture-7GRP2DOG-CLq2kEOB.js} +1 -1
  114. package/out/web/assets/{architectureDiagram-5GKGNRK7-CYp3yupP.js → architectureDiagram-5GKGNRK7-6PoVSmNG.js} +1 -1
  115. package/out/web/assets/{blockDiagram-NRAW4CY4-CyWybDWr.js → blockDiagram-NRAW4CY4-cKw9mAKi.js} +1 -1
  116. package/out/web/assets/{c4Diagram-UCG6FXSJ-BvY3U709.js → c4Diagram-UCG6FXSJ-Cqy8N5Ge.js} +1 -1
  117. package/out/web/assets/{chunk-75Z2AOVW-TLXCoZYv.js → chunk-75Z2AOVW-3qybijF5.js} +1 -1
  118. package/out/web/assets/chunk-CKBBP62Z-cIrXq6jN.js +2 -0
  119. package/out/web/assets/{chunk-CLGD4ZFX-xjsKtNS7.js → chunk-CLGD4ZFX-CndDQkww.js} +1 -1
  120. package/out/web/assets/chunk-DSNCTWBM-Cc4NxvgD.js +2 -0
  121. package/out/web/assets/chunk-DU6HZSFF-drzh6GsU.js +128 -0
  122. package/out/web/assets/{chunk-F27PBJKO-BFpgF55A.js → chunk-F27PBJKO-FiY35l4v.js} +1 -1
  123. package/out/web/assets/{chunk-G27WJ6UU-DfF7qW-C.js → chunk-G27WJ6UU-Bjt9Il4A.js} +1 -1
  124. package/out/web/assets/{chunk-GMAD6QVW-C-558kh_.js → chunk-GMAD6QVW-Bppi3Ctd.js} +1 -1
  125. package/out/web/assets/{chunk-JQ64N6SF-wJmeGKAw.js → chunk-JQ64N6SF-DGg5kcEV.js} +1 -1
  126. package/out/web/assets/{chunk-LCL6LL3I-C1wHD8Ie.js → chunk-LCL6LL3I-CCYcjd7p.js} +1 -1
  127. package/out/web/assets/{chunk-OBVCFTLP-BsRTPBqs.js → chunk-OBVCFTLP-DJeNil5M.js} +1 -1
  128. package/out/web/assets/{chunk-P2QGCYS3-HZIiM7Ni.js → chunk-P2QGCYS3-lRzkRjBB.js} +1 -1
  129. package/out/web/assets/{chunk-POPQ4Y6H-Dk9wvVb0.js → chunk-POPQ4Y6H-DouASMBW.js} +1 -1
  130. package/out/web/assets/{chunk-PWAF6VOD-BmjYLNbq.js → chunk-PWAF6VOD-DMmD1vVf.js} +1 -1
  131. package/out/web/assets/{chunk-R7TYR2AO-CaHIf-lK.js → chunk-R7TYR2AO-CYLA5UC5.js} +1 -1
  132. package/out/web/assets/{chunk-RHFEMEQ7-_T561hOU.js → chunk-RHFEMEQ7-BiXwEcUT.js} +1 -1
  133. package/out/web/assets/{chunk-SVP7TREG-CM-GGYoY.js → chunk-SVP7TREG-BV-zPslF.js} +1 -1
  134. package/out/web/assets/{chunk-TEH6E4GO-K2A8Vg2C.js → chunk-TEH6E4GO-B2RGEohZ.js} +1 -1
  135. package/out/web/assets/classDiagram-DTDB5LWJ-Dq0smRWk.js +1 -0
  136. package/out/web/assets/classDiagram-v2-JRS7N3AN-Dq0smRWk.js +1 -0
  137. package/out/web/assets/config-C-ZFtipU.css +1 -0
  138. package/out/web/assets/config-eEDngJXO.js +1 -0
  139. package/out/web/assets/core-hQ2VA9Ti.js +1 -0
  140. package/out/web/assets/{cynefin-OW5HDTMX-ClzaB6cc.js → cynefin-OW5HDTMX-Cas4csHM.js} +1 -1
  141. package/out/web/assets/{cynefinDiagram-5FMLGOSQ-D_JzZBzf.js → cynefinDiagram-5FMLGOSQ-Bbpj66Y3.js} +1 -1
  142. package/out/web/assets/{dagre-3AP2YEHR-BDuUeMHj.js → dagre-3AP2YEHR-B0-2RDEd.js} +1 -1
  143. package/out/web/assets/{diagram-S7CK7UJ4-DgtcfE8P.js → diagram-S7CK7UJ4-BdzEjUyH.js} +1 -1
  144. package/out/web/assets/{diagram-UQ7AKVKN-DTLoEYti.js → diagram-UQ7AKVKN-CJDwyPxF.js} +1 -1
  145. package/out/web/assets/{diagram-VSXAHHWV-ChGl9pXz.js → diagram-VSXAHHWV-BxaG1r_B.js} +1 -1
  146. package/out/web/assets/{diagram-VX7I27RA-Be8DWz0S.js → diagram-VX7I27RA-BMmUqm8f.js} +1 -1
  147. package/out/web/assets/{diagram-Z3DM3KII-BMXjRTOF.js → diagram-Z3DM3KII-CFtd03eE.js} +1 -1
  148. package/out/web/assets/dist-js-Bf2bhoku.js +1 -0
  149. package/out/web/assets/{ebnfDiagram-PWID7BFC-8Q9pl1CJ.js → ebnfDiagram-PWID7BFC-DwAen1hO.js} +1 -1
  150. package/out/web/assets/{erDiagram-SSCWMZ5O-DjH8Lnkn.js → erDiagram-SSCWMZ5O-BCZSHACj.js} +1 -1
  151. package/out/web/assets/event-ChBVpRy0.js +1 -0
  152. package/out/web/assets/{eventmodeling-NTZA5JFV-BKUH_DOp.js → eventmodeling-NTZA5JFV-XHStE4E_.js} +1 -1
  153. package/out/web/assets/fira-code-latin-600-normal-BmSSHshu.woff +0 -0
  154. package/out/web/assets/fira-code-latin-600-normal-CvYZpPHg.woff2 +0 -0
  155. package/out/web/assets/fira-code-symbols2-600-normal-Dvq6IQE5.woff +0 -0
  156. package/out/web/assets/flowDiagram-A5DVABFB-BLg7nEcd.js +1 -0
  157. package/out/web/assets/{ganttDiagram-EL5Y4UJY-D7fZKJNM.js → ganttDiagram-EL5Y4UJY-BAEu1Cql.js} +1 -1
  158. package/out/web/assets/{gitGraph-4MIJSDKK-BypWaaBU.js → gitGraph-4MIJSDKK-r32Vyper.js} +1 -1
  159. package/out/web/assets/{gitGraphDiagram-WWUBYQGX-DWiw_3bq.js → gitGraphDiagram-WWUBYQGX-z9o9qt6V.js} +1 -1
  160. package/out/web/assets/index-Btsf4L8M.css +1 -0
  161. package/out/web/assets/index-D8D9MeRA.js +11 -0
  162. package/out/web/assets/{info-A6RAGUB7-KkAUxT4j.js → info-A6RAGUB7-BvLaC2cw.js} +1 -1
  163. package/out/web/assets/{infoDiagram-RXCK75RN-BNb6E48y.js → infoDiagram-RXCK75RN-Be6WAXXw.js} +1 -1
  164. package/out/web/assets/{ishikawaDiagram-5VMMS53U-Caa-JoAK.js → ishikawaDiagram-5VMMS53U-DZjoHJHC.js} +1 -1
  165. package/out/web/assets/{journeyDiagram-EYS64GPL-DOrmFGz6.js → journeyDiagram-EYS64GPL-CtVkjkGm.js} +1 -1
  166. package/out/web/assets/{kanban-definition-3QL26DDD-BOWCYcK0.js → kanban-definition-3QL26DDD-CW5FMv1w.js} +1 -1
  167. package/out/web/assets/lucide-react-Ip3L6Jtn.js +1 -0
  168. package/out/web/assets/markdown-BSeeUbJH.js +38 -0
  169. package/out/web/assets/{mermaid-parser.core-BQqjCkS_.js → mermaid-parser.core-aUgCqsZ5.js} +3 -3
  170. package/out/web/assets/mermaid.core-D57sEiSL.js +11 -0
  171. package/out/web/assets/{mindmap-definition-FBJOCRG2-jTceWpr0.js → mindmap-definition-FBJOCRG2-DAmSpM3a.js} +1 -1
  172. package/out/web/assets/modelManager-tMVmJVAW.js +2 -0
  173. package/out/web/assets/oauthManager-9jxicDWJ.js +1 -0
  174. package/out/web/assets/{packet-AYTQ26CC-CJ5RXgol.js → packet-AYTQ26CC-DJ27iIoJ.js} +1 -1
  175. package/out/web/assets/{pegDiagram-XKGWAZYB-y8wMtd0y.js → pegDiagram-XKGWAZYB-Bj3ii-gS.js} +1 -1
  176. package/out/web/assets/{pie-WAS4IAKB-72fTBbl4.js → pie-WAS4IAKB-DG5mCUbc.js} +1 -1
  177. package/out/web/assets/{pieDiagram-E7YTZNPT-e0O02qWq.js → pieDiagram-E7YTZNPT-BrJLPnDA.js} +1 -1
  178. package/out/web/assets/prompt-latin-700-normal-BfbftDSq.woff +0 -0
  179. package/out/web/assets/prompt-latin-700-normal-I2gc831J.woff2 +0 -0
  180. package/out/web/assets/prompt-thai-700-normal-Cb5ilR-c.woff +0 -0
  181. package/out/web/assets/prompt-thai-700-normal-Cg4aQ0Nn.woff2 +0 -0
  182. package/out/web/assets/{quadrantDiagram-AXDQQJYC-C9phYLom.js → quadrantDiagram-AXDQQJYC-3x_TmF3j.js} +1 -1
  183. package/out/web/assets/{radar-RG4KPBEZ-BAU2hzUT.js → radar-RG4KPBEZ-CrXaTTuV.js} +1 -1
  184. package/out/web/assets/{railroad-74A4TZTK-B0bCAVHC.js → railroad-74A4TZTK-BpqMH9BE.js} +1 -1
  185. package/out/web/assets/{railroad-abnf-HS5TGJTU-WhxO7ndE.js → railroad-abnf-HS5TGJTU-DHI0uLlV.js} +1 -1
  186. package/out/web/assets/{railroad-ebnf-LZEXJU2U-BkA0m7-F.js → railroad-ebnf-LZEXJU2U-CQCb316y.js} +1 -1
  187. package/out/web/assets/{railroad-peg-WCYAUIDC-BsVpHIaj.js → railroad-peg-WCYAUIDC-Ph1giKkH.js} +1 -1
  188. package/out/web/assets/{railroadDiagram-O6MQD6OU-CyOLN65Q.js → railroadDiagram-O6MQD6OU-BRq6wIxx.js} +1 -1
  189. package/out/web/assets/{requirementDiagram-EFPCY7ZU-DQXJ7Dud.js → requirementDiagram-EFPCY7ZU-DIJj6G1g.js} +1 -1
  190. package/out/web/assets/{sankeyDiagram-P5KCCOFB-B2XLyIIc.js → sankeyDiagram-P5KCCOFB-DZajSryq.js} +1 -1
  191. package/out/web/assets/{sequenceDiagram-WJ2MYXX4-DGQY4wwm.js → sequenceDiagram-WJ2MYXX4-DxJCWyZS.js} +1 -1
  192. package/out/web/assets/{stateDiagram-HBIQ2CUA-DHZpDwNy.js → stateDiagram-HBIQ2CUA-k6voi8Vf.js} +1 -1
  193. package/out/web/assets/stateDiagram-v2-4QOOHH4V-DeEc0lGZ.js +1 -0
  194. package/out/web/assets/studio-B1mk40wD.js +1 -0
  195. package/out/web/assets/{swimlanes-XN3QIQJK-Bn_jcZz-.js → swimlanes-XN3QIQJK-igYhTjXB.js} +1 -1
  196. package/out/web/assets/swimlanesDiagram-VK2B7HYN-DpVik9v7.js +8 -0
  197. package/out/web/assets/{timeline-definition-24CTP7MA-CdTERuJZ.js → timeline-definition-24CTP7MA-Dke2p93p.js} +1 -1
  198. package/out/web/assets/{treeView-Q6P3EWNA-TKBKQG6R.js → treeView-Q6P3EWNA-hNELnXUs.js} +1 -1
  199. package/out/web/assets/{treemap-WGGIJYW6-BP7gQoiC.js → treemap-WGGIJYW6-D2B6wDsx.js} +1 -1
  200. package/out/web/assets/{vennDiagram-4TSXK5OY-BHUmxDuK.js → vennDiagram-4TSXK5OY-CDkW7rUP.js} +1 -1
  201. package/out/web/assets/{wardley-WFR3VGLG-9bct5AAN.js → wardley-WFR3VGLG-BECdXETi.js} +1 -1
  202. package/out/web/assets/{wardleyDiagram-VM6X3IG4-BfJwDDso.js → wardleyDiagram-VM6X3IG4-B5BycpQ4.js} +1 -1
  203. package/out/web/assets/window-5qYXKoW7.js +1 -0
  204. package/out/web/assets/{xychartDiagram-S5SC5T6Z-Dqd9Mvpo.js → xychartDiagram-S5SC5T6Z-CtJS3b--.js} +1 -1
  205. package/out/web/index-web.html +3 -4
  206. package/out/web/index.html +3 -4
  207. package/package.json +17 -6
  208. package/skills-lock.json +36 -0
  209. package/slash-commands.json +9 -0
  210. package/src/renderer/index-web.html +1 -0
  211. package/src/renderer/index.html +1 -0
  212. package/src/renderer/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  213. package/src/renderer/shared/agentProgress.ts +168 -3
  214. package/src/renderer/shared/components/AgentActivityDrawer.tsx +6 -6
  215. package/src/renderer/shared/components/AgentActivityTable.tsx +192 -132
  216. package/src/renderer/shared/components/ArtifactPreviewPanel.tsx +4 -4
  217. package/src/renderer/shared/components/AuthGate.tsx +4 -9
  218. package/src/renderer/shared/components/CalculationCard.tsx +41 -15
  219. package/src/renderer/shared/components/ChatMessageItem.tsx +20 -21
  220. package/src/renderer/shared/components/ChatPanel.tsx +432 -193
  221. package/src/renderer/shared/components/ChunkErrorBoundary.tsx +198 -49
  222. package/src/renderer/shared/components/CliSessionsView.tsx +495 -0
  223. package/src/renderer/shared/components/CodeReviewPage.tsx +565 -0
  224. package/src/renderer/shared/components/CommandPalette.tsx +8 -8
  225. package/src/renderer/shared/components/DashboardSidebar.tsx +862 -125
  226. package/src/renderer/shared/components/DesktopTitlebar.tsx +345 -0
  227. package/src/renderer/shared/components/DiffReviewModal.tsx +3 -3
  228. package/src/renderer/shared/components/GitBranchSelector.tsx +442 -0
  229. package/src/renderer/shared/components/ImageGenCard.tsx +31 -12
  230. package/src/renderer/shared/components/ImageSearchCard.tsx +59 -38
  231. package/src/renderer/shared/components/ImageStudioPanel.tsx +40 -41
  232. package/src/renderer/shared/components/InlineThoughtNote.tsx +27 -0
  233. package/src/renderer/shared/components/LinkedFoldersView.tsx +365 -46
  234. package/src/renderer/shared/components/McpRegistryPicker.tsx +1 -1
  235. package/src/renderer/shared/components/McpServersView.tsx +24 -22
  236. package/src/renderer/shared/components/MermaidCard.tsx +14 -8
  237. package/src/renderer/shared/components/MintDashboard.tsx +1141 -508
  238. package/src/renderer/shared/components/ModelSelectorPopover.tsx +535 -214
  239. package/src/renderer/shared/components/PlanChecklistWidget.tsx +1 -1
  240. package/src/renderer/shared/components/PluginsView.tsx +1 -1
  241. package/src/renderer/shared/components/RewindModal.tsx +6 -6
  242. package/src/renderer/shared/components/RunSummaryDashboard.tsx +3 -3
  243. package/src/renderer/shared/components/ScheduledTasksView.tsx +4 -4
  244. package/src/renderer/shared/components/ScreenCaptureDialog.css +221 -0
  245. package/src/renderer/shared/components/ScreenCaptureDialog.tsx +199 -0
  246. package/src/renderer/shared/components/Settings/AgentsTab.tsx +34 -39
  247. package/src/renderer/shared/components/Settings/AudioTab.tsx +8 -8
  248. package/src/renderer/shared/components/Settings/AutomationTab.tsx +8 -58
  249. package/src/renderer/shared/components/Settings/AvatarCropModal.tsx +368 -0
  250. package/src/renderer/shared/components/Settings/GeneralTab.tsx +335 -81
  251. package/src/renderer/shared/components/Settings/MemoryTab.tsx +3 -3
  252. package/src/renderer/shared/components/Settings/PluginsTab.tsx +20 -12
  253. package/src/renderer/shared/components/Settings/ProfileTab.tsx +29 -5
  254. package/src/renderer/shared/components/Settings/SearchableModelCombobox.tsx +411 -0
  255. package/src/renderer/shared/components/Settings/ThemeTab.tsx +401 -158
  256. package/src/renderer/shared/components/SkillsView.tsx +41 -16
  257. package/src/renderer/shared/components/SlashSuggestions.tsx +3 -2
  258. package/src/renderer/shared/components/SourcesBlock.tsx +44 -32
  259. package/src/renderer/shared/components/StockCard.tsx +58 -24
  260. package/src/renderer/shared/components/SubagentDagView.tsx +4 -4
  261. package/src/renderer/shared/components/TerminalDock.tsx +241 -0
  262. package/src/renderer/shared/components/ThinkingBlock.tsx +14 -8
  263. package/src/renderer/shared/components/ToolSurfacePage.tsx +520 -0
  264. package/src/renderer/shared/components/UiFeatureCard.tsx +267 -0
  265. package/src/renderer/shared/components/UiGridCard.tsx +188 -0
  266. package/src/renderer/shared/components/UiMockupWidget.tsx +149 -0
  267. package/src/renderer/shared/components/VeoStudioPanel.tsx +13 -29
  268. package/src/renderer/shared/components/WeatherCard.tsx +3 -3
  269. package/src/renderer/shared/components/WorkspaceContextPopover.tsx +133 -0
  270. package/src/renderer/shared/components/WorkspaceSelector.tsx +149 -0
  271. package/src/renderer/shared/constants/config.ts +28 -3
  272. package/src/renderer/shared/constants/models.ts +189 -2
  273. package/src/renderer/shared/conversation/coordinator.test.ts +27 -0
  274. package/src/renderer/shared/conversation/coordinator.ts +82 -0
  275. package/src/renderer/shared/conversation/syncView.test.ts +46 -0
  276. package/src/renderer/shared/conversation/syncView.ts +43 -0
  277. package/src/renderer/shared/conversation/useConversationCoordinator.ts +106 -0
  278. package/src/renderer/shared/css/agent-observability.css +35 -3
  279. package/src/renderer/shared/css/auth-gate.css +2 -2
  280. package/src/renderer/shared/css/chat-ui-cards.css +495 -0
  281. package/src/renderer/shared/css/code-review.css +823 -0
  282. package/src/renderer/shared/css/code-sessions.css +452 -0
  283. package/src/renderer/shared/css/file-changes.css +132 -0
  284. package/src/renderer/shared/css/image-studio.css +16 -16
  285. package/src/renderer/shared/css/management-views.css +277 -27
  286. package/src/renderer/shared/css/model-selector.css +442 -42
  287. package/src/renderer/shared/css/settings/agents.css +1 -1
  288. package/src/renderer/shared/css/settings/automation.css +13 -13
  289. package/src/renderer/shared/css/settings/general.css +526 -5
  290. package/src/renderer/shared/css/settings/plugins.css +5 -5
  291. package/src/renderer/shared/css/settings/profile.css +331 -1
  292. package/src/renderer/shared/css/settings/theme.css +651 -3
  293. package/src/renderer/shared/css/veo-studio.css +16 -15
  294. package/src/renderer/shared/fonts.ts +19 -37
  295. package/src/renderer/shared/platform.test.ts +34 -0
  296. package/src/renderer/shared/platform.ts +173 -6
  297. package/src/renderer/shared/theme/themeManager.ts +144 -0
  298. package/src/renderer/shared/theme/themes.ts +116 -0
  299. package/src/renderer/shared/theme/tokens.css +318 -0
  300. package/src/renderer/shared/types.ts +82 -1
  301. package/src/renderer/shared/utils/agentActivity.ts +126 -5
  302. package/src/renderer/shared/utils/cardJson.test.ts +35 -0
  303. package/src/renderer/shared/utils/cardJson.ts +30 -0
  304. package/src/renderer/shared/utils/fileIcons.ts +1 -1
  305. package/src/renderer/shared/utils/markdown.tsx +329 -80
  306. package/src/renderer/shared/utils/markdown.webImages.test.tsx +40 -0
  307. package/src/renderer/shared/utils/providers.ts +8 -3
  308. package/src/renderer/shared/utils/screenCapture.ts +43 -0
  309. package/src/renderer/shared/utils/slashCommandProcessor.ts +4 -1
  310. package/src/renderer/shared/utils/ui.ts +4 -64
  311. package/src/renderer/src/App.tsx +7 -0
  312. package/src/renderer/src/components/BrowserShell.tsx +108 -0
  313. package/src/renderer/src/components/BrowserSuggestionsPopup.tsx +91 -0
  314. package/src/renderer/src/components/Live2DStage.tsx +32 -9
  315. package/src/renderer/src/components/MintDashboard.tsx +4 -2
  316. package/src/renderer/src/components/ModelPanel.tsx +2 -1
  317. package/src/renderer/src/components/PicturesLibrary.tsx +3 -2
  318. package/src/renderer/src/components/ScreenPicker.css +190 -0
  319. package/src/renderer/src/components/ScreenPicker.tsx +185 -540
  320. package/src/renderer/src/components/SettingsWindow.tsx +40 -2
  321. package/src/renderer/src/components/SpotlightWindow.tsx +1 -0
  322. package/src/renderer/src/components/WidgetWindow.tsx +27 -3
  323. package/src/renderer/src/components/WorkspacePanel.tsx +61 -43
  324. package/src/renderer/src/components/browser-shell.css +185 -0
  325. package/src/renderer/src/components/browser-suggestions-popup.css +55 -0
  326. package/src/renderer/src/components/liveTranslateFrames.test.ts +23 -0
  327. package/src/renderer/src/components/liveTranslateFrames.ts +34 -0
  328. package/src/renderer/src/css/app-shell.css +394 -113
  329. package/src/renderer/src/css/chat.css +1926 -380
  330. package/src/renderer/src/css/dashboard.css +11 -0
  331. package/src/renderer/src/css/desktop-tools.css +730 -0
  332. package/src/renderer/src/css/misc.css +19 -22
  333. package/src/renderer/src/css/model.css +49 -48
  334. package/src/renderer/src/css/pictures.css +144 -136
  335. package/src/renderer/src/css/settings/base.css +357 -123
  336. package/src/renderer/src/css/sidebar-workspace.css +930 -291
  337. package/src/renderer/src/css/spotlight.css +15 -26
  338. package/src/renderer/src/css/tool-surfaces.css +728 -0
  339. package/src/renderer/src/css/widget.css +35 -7
  340. package/src/renderer/src/env.d.ts +3 -0
  341. package/src/renderer/src/hooks/useProviderModels.ts +2 -9
  342. package/src/renderer/src/index.css +53 -46
  343. package/src/renderer/src/main.tsx +11 -0
  344. package/src/renderer/src/tauri.ts +201 -30
  345. package/src/renderer/src-web/App.tsx +40 -0
  346. package/src/renderer/src-web/components/MintDashboard.tsx +4 -2
  347. package/src/renderer/src-web/components/PicturesLibrary.tsx +3 -2
  348. package/src/renderer/src-web/components/PullToRefresh.tsx +107 -0
  349. package/src/renderer/src-web/components/SettingsWindow.tsx +28 -2
  350. package/src/renderer/src-web/css/app-shell.css +174 -96
  351. package/src/renderer/src-web/css/chat.css +1519 -316
  352. package/src/renderer/src-web/css/dashboard.css +11 -0
  353. package/src/renderer/src-web/css/misc.css +17 -17
  354. package/src/renderer/src-web/css/mobile.css +678 -0
  355. package/src/renderer/src-web/css/model.css +46 -46
  356. package/src/renderer/src-web/css/pictures.css +81 -34
  357. package/src/renderer/src-web/css/pull-to-refresh.css +54 -0
  358. package/src/renderer/src-web/css/settings/base.css +316 -100
  359. package/src/renderer/src-web/css/settings/mobile.css +320 -0
  360. package/src/renderer/src-web/css/sidebar-workspace.css +545 -100
  361. package/src/renderer/src-web/css/spotlight.css +9 -26
  362. package/src/renderer/src-web/css/widget.css +0 -5
  363. package/src/renderer/src-web/env.d.ts +3 -0
  364. package/src/renderer/src-web/hooks/useProviderModels.ts +2 -9
  365. package/src/renderer/src-web/index.css +53 -96
  366. package/src/renderer/src-web/main.tsx +11 -0
  367. package/src/renderer/src-web/tauri.ts +200 -30
  368. package/vite.config.web.ts +1 -0
  369. package/out/web/assets/MintDashboard-DWSqucgb.js +0 -57
  370. package/out/web/assets/SettingsWindow-DFM2aj5B.js +0 -2
  371. package/out/web/assets/chunk-CKBBP62Z-nr1uKPj9.js +0 -2
  372. package/out/web/assets/chunk-DSNCTWBM-Dtj8Rqsd.js +0 -2
  373. package/out/web/assets/chunk-DU6HZSFF-2tv5K1wT.js +0 -128
  374. package/out/web/assets/classDiagram-DTDB5LWJ-BdSFArgw.js +0 -1
  375. package/out/web/assets/classDiagram-v2-JRS7N3AN-BdSFArgw.js +0 -1
  376. package/out/web/assets/core-DImejIUG.js +0 -1
  377. package/out/web/assets/dist-js-BxuKEVWM.js +0 -1
  378. package/out/web/assets/event-BNl8Zahw.js +0 -1
  379. package/out/web/assets/fira-code-cyrillic-400-normal-UC0NFL4U.woff2 +0 -0
  380. package/out/web/assets/fira-code-cyrillic-400-normal-dc1q3VD7.woff +0 -0
  381. package/out/web/assets/fira-code-cyrillic-500-normal-Bu7VCL72.woff +0 -0
  382. package/out/web/assets/fira-code-cyrillic-500-normal-CX35h3Mg.woff2 +0 -0
  383. package/out/web/assets/fira-code-cyrillic-ext-400-normal-Buh61xzB.woff +0 -0
  384. package/out/web/assets/fira-code-cyrillic-ext-400-normal-txZ9Fk_1.woff2 +0 -0
  385. package/out/web/assets/fira-code-cyrillic-ext-500-normal-CYRspHgm.woff2 +0 -0
  386. package/out/web/assets/fira-code-cyrillic-ext-500-normal-CwtLmSFD.woff +0 -0
  387. package/out/web/assets/fira-code-greek-400-normal-B2Gh_Y8s.woff2 +0 -0
  388. package/out/web/assets/fira-code-greek-400-normal-DobhaxvF.woff +0 -0
  389. package/out/web/assets/fira-code-greek-500-normal-CVO0IRNt.woff2 +0 -0
  390. package/out/web/assets/fira-code-greek-500-normal-DEXIWiey.woff +0 -0
  391. package/out/web/assets/fira-code-greek-ext-400-normal-DR7mBgIM.woff2 +0 -0
  392. package/out/web/assets/fira-code-greek-ext-400-normal-DSPUheWg.woff +0 -0
  393. package/out/web/assets/fira-code-greek-ext-500-normal-BO3iq16n.woff2 +0 -0
  394. package/out/web/assets/fira-code-greek-ext-500-normal-CMiNLXER.woff +0 -0
  395. package/out/web/assets/fira-code-latin-ext-400-normal-DG73JjOf.woff +0 -0
  396. package/out/web/assets/fira-code-latin-ext-400-normal-KSMg0QLl.woff2 +0 -0
  397. package/out/web/assets/fira-code-latin-ext-500-normal-CaANqXjI.woff +0 -0
  398. package/out/web/assets/fira-code-latin-ext-500-normal-Crd9e_oI.woff2 +0 -0
  399. package/out/web/assets/flowDiagram-A5DVABFB-BpnHUSU7.js +0 -1
  400. package/out/web/assets/index-CVRg270z.css +0 -1
  401. package/out/web/assets/index-DxZQr9yD.js +0 -10
  402. package/out/web/assets/inter-cyrillic-400-normal-HOLc17fK.woff +0 -0
  403. package/out/web/assets/inter-cyrillic-400-normal-obahsSVq.woff2 +0 -0
  404. package/out/web/assets/inter-cyrillic-500-normal-BasfLYem.woff2 +0 -0
  405. package/out/web/assets/inter-cyrillic-500-normal-CxZf_p3X.woff +0 -0
  406. package/out/web/assets/inter-cyrillic-600-normal-4D_pXhcN.woff +0 -0
  407. package/out/web/assets/inter-cyrillic-600-normal-CWCymEST.woff2 +0 -0
  408. package/out/web/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2 +0 -0
  409. package/out/web/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff +0 -0
  410. package/out/web/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2 +0 -0
  411. package/out/web/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff +0 -0
  412. package/out/web/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.woff +0 -0
  413. package/out/web/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2 +0 -0
  414. package/out/web/assets/inter-greek-400-normal-B4URO6DV.woff2 +0 -0
  415. package/out/web/assets/inter-greek-400-normal-q2sYcFCs.woff +0 -0
  416. package/out/web/assets/inter-greek-500-normal-BIZE56-Y.woff2 +0 -0
  417. package/out/web/assets/inter-greek-500-normal-Xzm54t5V.woff +0 -0
  418. package/out/web/assets/inter-greek-600-normal-BZpKdvQh.woff +0 -0
  419. package/out/web/assets/inter-greek-600-normal-plRanbMR.woff2 +0 -0
  420. package/out/web/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2 +0 -0
  421. package/out/web/assets/inter-greek-ext-400-normal-KugGGMne.woff +0 -0
  422. package/out/web/assets/inter-greek-ext-500-normal-2j5mBUwD.woff +0 -0
  423. package/out/web/assets/inter-greek-ext-500-normal-C4iEst2y.woff2 +0 -0
  424. package/out/web/assets/inter-greek-ext-600-normal-B8X0CLgF.woff +0 -0
  425. package/out/web/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2 +0 -0
  426. package/out/web/assets/inter-latin-400-normal-C38fXH4l.woff2 +0 -0
  427. package/out/web/assets/inter-latin-400-normal-CyCys3Eg.woff +0 -0
  428. package/out/web/assets/inter-latin-500-normal-BL9OpVg8.woff +0 -0
  429. package/out/web/assets/inter-latin-500-normal-Cerq10X2.woff2 +0 -0
  430. package/out/web/assets/inter-latin-600-normal-CiBQ2DWP.woff +0 -0
  431. package/out/web/assets/inter-latin-600-normal-LgqL8muc.woff2 +0 -0
  432. package/out/web/assets/inter-latin-ext-400-normal-77YHD8bZ.woff +0 -0
  433. package/out/web/assets/inter-latin-ext-400-normal-C1nco2VV.woff2 +0 -0
  434. package/out/web/assets/inter-latin-ext-500-normal-BxGbmqWO.woff +0 -0
  435. package/out/web/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2 +0 -0
  436. package/out/web/assets/inter-latin-ext-600-normal-CIVaiw4L.woff +0 -0
  437. package/out/web/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2 +0 -0
  438. package/out/web/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff +0 -0
  439. package/out/web/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
  440. package/out/web/assets/inter-vietnamese-500-normal-DOriooB6.woff2 +0 -0
  441. package/out/web/assets/inter-vietnamese-500-normal-mJboJaSs.woff +0 -0
  442. package/out/web/assets/inter-vietnamese-600-normal-BuLX-rYi.woff +0 -0
  443. package/out/web/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2 +0 -0
  444. package/out/web/assets/kanit-latin-400-normal-BUlsQXH3.woff2 +0 -0
  445. package/out/web/assets/kanit-latin-400-normal-HVZWrfev.woff +0 -0
  446. package/out/web/assets/kanit-latin-500-normal-CX_4XcKi.woff2 +0 -0
  447. package/out/web/assets/kanit-latin-500-normal-qBha86O4.woff +0 -0
  448. package/out/web/assets/kanit-latin-600-normal-0lS78yAd.woff2 +0 -0
  449. package/out/web/assets/kanit-latin-600-normal-DlacpeTg.woff +0 -0
  450. package/out/web/assets/kanit-latin-ext-400-normal-B2xPf58u.woff2 +0 -0
  451. package/out/web/assets/kanit-latin-ext-400-normal-CHvNKHHD.woff +0 -0
  452. package/out/web/assets/kanit-latin-ext-500-normal-BFdWrG22.woff +0 -0
  453. package/out/web/assets/kanit-latin-ext-500-normal-EHs3suD6.woff2 +0 -0
  454. package/out/web/assets/kanit-latin-ext-600-normal-BBDzoLaj.woff +0 -0
  455. package/out/web/assets/kanit-latin-ext-600-normal-DAX3wtuq.woff2 +0 -0
  456. package/out/web/assets/kanit-thai-400-normal-D2nliXKa.woff +0 -0
  457. package/out/web/assets/kanit-thai-400-normal-D80Pglro.woff2 +0 -0
  458. package/out/web/assets/kanit-thai-500-normal-BB8gri04.woff2 +0 -0
  459. package/out/web/assets/kanit-thai-500-normal-Iy_w0a80.woff +0 -0
  460. package/out/web/assets/kanit-thai-600-normal-Bj6oiaDc.woff2 +0 -0
  461. package/out/web/assets/kanit-thai-600-normal-wbTlPO7I.woff +0 -0
  462. package/out/web/assets/kanit-vietnamese-400-normal-DRI8YWyb.woff2 +0 -0
  463. package/out/web/assets/kanit-vietnamese-400-normal-dow6Bnto.woff +0 -0
  464. package/out/web/assets/kanit-vietnamese-500-normal-BzTrpCM3.woff2 +0 -0
  465. package/out/web/assets/kanit-vietnamese-500-normal-T1ndT7MF.woff +0 -0
  466. package/out/web/assets/kanit-vietnamese-600-normal-Bi7fw3I4.woff2 +0 -0
  467. package/out/web/assets/kanit-vietnamese-600-normal-DXCRAa_8.woff +0 -0
  468. package/out/web/assets/mali-latin-400-normal-ByPcZ8Gx.woff +0 -0
  469. package/out/web/assets/mali-latin-400-normal-Cuc6Ykl8.woff2 +0 -0
  470. package/out/web/assets/mali-latin-500-normal-B01M-LP6.woff2 +0 -0
  471. package/out/web/assets/mali-latin-500-normal-Thgqw_9f.woff +0 -0
  472. package/out/web/assets/mali-latin-600-normal-B9TiUNpT.woff2 +0 -0
  473. package/out/web/assets/mali-latin-600-normal-CycpQCwU.woff +0 -0
  474. package/out/web/assets/mali-latin-ext-400-normal-DUVdJQO4.woff +0 -0
  475. package/out/web/assets/mali-latin-ext-400-normal-iCG1ALuJ.woff2 +0 -0
  476. package/out/web/assets/mali-latin-ext-500-normal-BfJE4UMZ.woff2 +0 -0
  477. package/out/web/assets/mali-latin-ext-500-normal-FoLEyOKS.woff +0 -0
  478. package/out/web/assets/mali-latin-ext-600-normal-BTvIfiCp.woff2 +0 -0
  479. package/out/web/assets/mali-latin-ext-600-normal-DAQcLVmD.woff +0 -0
  480. package/out/web/assets/mali-thai-400-normal-BO7A3bLZ.woff2 +0 -0
  481. package/out/web/assets/mali-thai-400-normal-CX9VrjTn.woff +0 -0
  482. package/out/web/assets/mali-thai-500-normal-Cph2qha9.woff +0 -0
  483. package/out/web/assets/mali-thai-500-normal-D89rMT77.woff2 +0 -0
  484. package/out/web/assets/mali-thai-600-normal-DPgXT6rZ.woff +0 -0
  485. package/out/web/assets/mali-thai-600-normal-DlTx3OsB.woff2 +0 -0
  486. package/out/web/assets/mali-vietnamese-400-normal-DUKxzXaz.woff2 +0 -0
  487. package/out/web/assets/mali-vietnamese-400-normal-gFDLvsOK.woff +0 -0
  488. package/out/web/assets/mali-vietnamese-500-normal--OY07q2c.woff +0 -0
  489. package/out/web/assets/mali-vietnamese-500-normal-KDrNRwfW.woff2 +0 -0
  490. package/out/web/assets/mali-vietnamese-600-normal-CtTMUU7T.woff +0 -0
  491. package/out/web/assets/mali-vietnamese-600-normal-DFlJr66u.woff2 +0 -0
  492. package/out/web/assets/mermaid.core-DYGGlqOf.js +0 -11
  493. package/out/web/assets/mitr-latin-400-normal-Cb18vPmZ.woff +0 -0
  494. package/out/web/assets/mitr-latin-400-normal-CwbkLQ4a.woff2 +0 -0
  495. package/out/web/assets/mitr-latin-500-normal-B4JOhzAi.woff +0 -0
  496. package/out/web/assets/mitr-latin-500-normal-BmClOow2.woff2 +0 -0
  497. package/out/web/assets/mitr-latin-ext-400-normal-B3CPG7Yo.woff2 +0 -0
  498. package/out/web/assets/mitr-latin-ext-400-normal-DTx65hiC.woff +0 -0
  499. package/out/web/assets/mitr-latin-ext-500-normal-B_Diajz1.woff2 +0 -0
  500. package/out/web/assets/mitr-latin-ext-500-normal-DYOsVaVT.woff +0 -0
  501. package/out/web/assets/mitr-thai-400-normal-CS4Do6aM.woff +0 -0
  502. package/out/web/assets/mitr-thai-400-normal-CXWaAdVj.woff2 +0 -0
  503. package/out/web/assets/mitr-thai-500-normal-CVdBrEVH.woff2 +0 -0
  504. package/out/web/assets/mitr-thai-500-normal-CW_B5D-i.woff +0 -0
  505. package/out/web/assets/mitr-vietnamese-400-normal-CPMGWyoC.woff2 +0 -0
  506. package/out/web/assets/mitr-vietnamese-400-normal-Z6XhIpdY.woff +0 -0
  507. package/out/web/assets/mitr-vietnamese-500-normal-CDrv0585.woff2 +0 -0
  508. package/out/web/assets/mitr-vietnamese-500-normal-CMQWyq-Z.woff +0 -0
  509. package/out/web/assets/noto-sans-thai-latin-400-normal-BaWBrqFP.woff2 +0 -0
  510. package/out/web/assets/noto-sans-thai-latin-400-normal-Dh_FJjOB.woff +0 -0
  511. package/out/web/assets/noto-sans-thai-latin-500-normal-BC04jsmm.woff +0 -0
  512. package/out/web/assets/noto-sans-thai-latin-500-normal-fyBKClF1.woff2 +0 -0
  513. package/out/web/assets/noto-sans-thai-latin-600-normal-CemcjnVR.woff2 +0 -0
  514. package/out/web/assets/noto-sans-thai-latin-600-normal-Dbc-dNO6.woff +0 -0
  515. package/out/web/assets/noto-sans-thai-latin-ext-400-normal-B-1H0YkH.woff +0 -0
  516. package/out/web/assets/noto-sans-thai-latin-ext-400-normal-nBP59pVw.woff2 +0 -0
  517. package/out/web/assets/noto-sans-thai-latin-ext-500-normal-B-ZWb8SZ.woff2 +0 -0
  518. package/out/web/assets/noto-sans-thai-latin-ext-500-normal-CrEHO7C8.woff +0 -0
  519. package/out/web/assets/noto-sans-thai-latin-ext-600-normal-PkMZo0xa.woff +0 -0
  520. package/out/web/assets/noto-sans-thai-latin-ext-600-normal-maHHBsez.woff2 +0 -0
  521. package/out/web/assets/noto-sans-thai-thai-400-normal-BEOmKAI1.woff2 +0 -0
  522. package/out/web/assets/noto-sans-thai-thai-400-normal-Dxb_unuU.woff +0 -0
  523. package/out/web/assets/noto-sans-thai-thai-500-normal-BOGXO2tw.woff +0 -0
  524. package/out/web/assets/noto-sans-thai-thai-500-normal-CU_X86GQ.woff2 +0 -0
  525. package/out/web/assets/noto-sans-thai-thai-600-normal-CmgB8_JK.woff +0 -0
  526. package/out/web/assets/noto-sans-thai-thai-600-normal-Cs73sVjl.woff2 +0 -0
  527. package/out/web/assets/oauthManager-DNiwM8Rn.js +0 -2
  528. package/out/web/assets/oauthManager-DuamS1Av.css +0 -1
  529. package/out/web/assets/outfit-latin-300-normal-AWLfuCom.woff +0 -0
  530. package/out/web/assets/outfit-latin-300-normal-CRYTwY6m.woff2 +0 -0
  531. package/out/web/assets/outfit-latin-400-normal-BGsTXAXT.woff2 +0 -0
  532. package/out/web/assets/outfit-latin-400-normal-DMwTpYkH.woff +0 -0
  533. package/out/web/assets/outfit-latin-500-normal-ClnHRwRh.woff +0 -0
  534. package/out/web/assets/outfit-latin-500-normal-DKnIMDSk.woff2 +0 -0
  535. package/out/web/assets/outfit-latin-600-normal-B7SfZ07L.woff2 +0 -0
  536. package/out/web/assets/outfit-latin-600-normal-BEfTtDA7.woff +0 -0
  537. package/out/web/assets/outfit-latin-ext-300-normal-BYS6Dpvq.woff2 +0 -0
  538. package/out/web/assets/outfit-latin-ext-300-normal-CMIMshEd.woff +0 -0
  539. package/out/web/assets/outfit-latin-ext-400-normal-5tcqmc2S.woff2 +0 -0
  540. package/out/web/assets/outfit-latin-ext-400-normal-DHm7mdGe.woff +0 -0
  541. package/out/web/assets/outfit-latin-ext-500-normal-DrCvqoFD.woff +0 -0
  542. package/out/web/assets/outfit-latin-ext-500-normal-zeox_O30.woff2 +0 -0
  543. package/out/web/assets/outfit-latin-ext-600-normal-B85nYjL1.woff2 +0 -0
  544. package/out/web/assets/outfit-latin-ext-600-normal-CWJcPgd7.woff +0 -0
  545. package/out/web/assets/preload-helper-D0uHx7FM.js +0 -1
  546. package/out/web/assets/prompt-latin-ext-400-normal-1pHbN9uy.woff +0 -0
  547. package/out/web/assets/prompt-latin-ext-400-normal-DdSafGZ9.woff2 +0 -0
  548. package/out/web/assets/prompt-latin-ext-500-normal--EZ1um7s.woff2 +0 -0
  549. package/out/web/assets/prompt-latin-ext-500-normal-D-lI1EVT.woff +0 -0
  550. package/out/web/assets/prompt-latin-ext-600-normal-C8b50x67.woff +0 -0
  551. package/out/web/assets/prompt-latin-ext-600-normal-Cg9L7iJU.woff2 +0 -0
  552. package/out/web/assets/prompt-vietnamese-400-normal-BCPzsgPT.woff2 +0 -0
  553. package/out/web/assets/prompt-vietnamese-400-normal-D4pLyeNK.woff +0 -0
  554. package/out/web/assets/prompt-vietnamese-500-normal-DmzxmPwa.woff2 +0 -0
  555. package/out/web/assets/prompt-vietnamese-500-normal-w_sS_j2F.woff +0 -0
  556. package/out/web/assets/prompt-vietnamese-600-normal-1dyohtNh.woff +0 -0
  557. package/out/web/assets/prompt-vietnamese-600-normal-7QWjJBsF.woff2 +0 -0
  558. package/out/web/assets/sarabun-latin-400-normal-DmguIS-7.woff +0 -0
  559. package/out/web/assets/sarabun-latin-400-normal-URPBxl-K.woff2 +0 -0
  560. package/out/web/assets/sarabun-latin-500-normal-BjUTcdxu.woff2 +0 -0
  561. package/out/web/assets/sarabun-latin-500-normal-CJexTAnl.woff +0 -0
  562. package/out/web/assets/sarabun-latin-600-normal-9FonlkKx.woff +0 -0
  563. package/out/web/assets/sarabun-latin-600-normal-DMD3TROr.woff2 +0 -0
  564. package/out/web/assets/sarabun-latin-ext-400-normal-BbP7GpLL.woff2 +0 -0
  565. package/out/web/assets/sarabun-latin-ext-400-normal-BsmTn0SS.woff +0 -0
  566. package/out/web/assets/sarabun-latin-ext-500-normal-Cot16Bd2.woff +0 -0
  567. package/out/web/assets/sarabun-latin-ext-500-normal-DE1LysqI.woff2 +0 -0
  568. package/out/web/assets/sarabun-latin-ext-600-normal-0tXu9x_i.woff +0 -0
  569. package/out/web/assets/sarabun-latin-ext-600-normal-BRxjKUQ6.woff2 +0 -0
  570. package/out/web/assets/sarabun-thai-400-normal-C2DaJlKK.woff2 +0 -0
  571. package/out/web/assets/sarabun-thai-400-normal-CH-UbWgg.woff +0 -0
  572. package/out/web/assets/sarabun-thai-500-normal-BVssjame.woff2 +0 -0
  573. package/out/web/assets/sarabun-thai-500-normal-C3iDLEzi.woff +0 -0
  574. package/out/web/assets/sarabun-thai-600-normal-3dIAQ-_s.woff2 +0 -0
  575. package/out/web/assets/sarabun-thai-600-normal-DWKeTe6a.woff +0 -0
  576. package/out/web/assets/sarabun-vietnamese-400-normal-DPfkSCMy.woff +0 -0
  577. package/out/web/assets/sarabun-vietnamese-400-normal-igdrzAGY.woff2 +0 -0
  578. package/out/web/assets/sarabun-vietnamese-500-normal-CpRVvGRU.woff +0 -0
  579. package/out/web/assets/sarabun-vietnamese-500-normal-Dpe7Br9m.woff2 +0 -0
  580. package/out/web/assets/sarabun-vietnamese-600-normal-BMbOgAW-.woff +0 -0
  581. package/out/web/assets/sarabun-vietnamese-600-normal-DkxrOlLB.woff2 +0 -0
  582. package/out/web/assets/stateDiagram-v2-4QOOHH4V-s6P9g2_b.js +0 -1
  583. package/out/web/assets/swimlanesDiagram-VK2B7HYN-CV9fOLrV.js +0 -8
  584. package/out/web/assets/tauri-CNrHQ2Gb.js +0 -3
  585. package/out/web/assets/window-DkIhgI7B.js +0 -1
package/Release_Note.md CHANGED
@@ -1,465 +1,579 @@
1
- # Release Notes - Mint Agent v1.14.0
2
-
3
- ## Smart Consecutive Tool Grouping & Modern Activity Feed UI (Desktop & Web)
4
-
5
- Eliminated repetitive tool execution rows (e.g. `calculation >` repeated 6–7 times) by introducing consecutive tool grouping, rich category iconography, and accurate input target parsing:
6
-
7
- - **Smart Consecutive Tool Grouping (`agentActivity.ts` & `AgentActivityTable.tsx`)**:
8
- - Automatically aggregates consecutive executions of the same tool into a single, clean collapsible group row by default (e.g. `Calculated 7 expressions` with `7 steps` badge).
9
- - Designed with an interactive accordion: clicking the group reveals the granular sub-items connected by fine branch lines (`├─`, `└─`).
10
- - Single tool executions remain unnested for instant visibility.
11
- - **Resilient Group Status Rollup & Smart Error Recovery**:
12
- - Fixed false-positive red `Failed` badges on tool groups when searches or tool calls experienced intermediate non-fatal hiccups or trailing redundant calls.
13
- - Group status in `agentActivity.ts` now rolls up to `done` (`✓`) if at least one sub-step succeeded (`hasDone`), marking a group as `error` only if zero sub-steps succeeded.
14
- - Non-fatal tool errors occurring before an overall successful run (`RunCompleted` with `SUCCESS`) are marked as `retry` / recovered rather than fatal failures.
15
- - Granular sub-step badges remain fully transparent when expanding the accordion.
16
- - **Cross-Platform Parameter Alias Resolution (CLI, Desktop & Web)**:
17
- - **Rust Backend (`crates/mint-core`)**: Added Serde aliases on `AgentInput` for `query` (`q`, `keyword`, `search`, `searchTerm`, `search_term`), `symbol` (`ticker`), `city` (`location`, `place`), `expression` (`expr`, `math`), and `command` (`cmd`). In `tools/web.rs`, added fallback checks against `prompt`, `command`, and `symbol` to eliminate `(empty query)` errors.
18
- - **CLI (`crates/mint-cli`)**: Added matching alias support in `generic_tool_label`, `explored_action_label`, and `ran_command_labels` ensuring 100% Platform Parity.
19
- - **Frontend (`agentActivity.ts`)**: Enhanced `describeTool` to parse all parameter aliases and prioritized `query` over generic placeholders.
20
- - **Accurate Tool Target & Inline Result Extraction**:
21
- - Enhanced `describeTool` in `agentActivity.ts` to extract `expression` / `expr` for math queries, `city` / `location` for weather, `symbol` for stock tickers, and `url` / `selector` for browser automation.
22
- - Eliminated the fallback where target duplicated the action name (e.g. `calculation` repeating as target `calculation`).
23
- - Added concise inline result previews (e.g. `16 - 28 + 12 → 0`).
24
- - **Modern Activity Feed Architecture (`AgentActivityTable.tsx`)**:
25
- - Replaced the rigid 4-column raw table (`Tool | Target | >`) with a modern Activity Feed with category icons (Lucide `Calculator`, `FileCode`, `Folder`, `Terminal`, `Search`, `Wrench`), status badges, and expandable output logs.
26
- - Synchronized CSS stylesheets across Desktop (`src/renderer/src/css/chat.css`) and Web (`src/renderer/src-web/css/chat.css`).
27
-
28
- ## Model Chip, Ghost Message Actions & Enhanced Reasoning Block (Desktop & Web UI)
29
-
30
- Elevated the visual hierarchy, micro-interactions, and status indicators of conversation messages and reasoning chains:
31
-
32
- - **Modern Model Chip (`.provider-model-chip`)**:
33
- - Replaced plain text provider badge with a sleek, pill-shaped chip displaying provider indicator dot, clean provider name, and model tag.
34
- - Dynamic indicator dot styling tailored to provider archetype (Anthropic amber, OpenAI green, Google/Gemini cyan, DeepSeek blue, Ollama purple, Groq orange, Mint emerald).
35
- - Built with theme-adaptive background (`var(--surface-bg)`), subtle border, and interactive hover illumination.
36
- - Implemented across completed chat turns (`ChatMessageItem.tsx`) and live streaming responses (`ChatPanel.tsx`).
37
- - **Ghost Message Actions (`.msg-action-btn`)**:
38
- - Upgraded action buttons (Copy, Read Aloud / TTS, Edit) into polished 26x26px ghost buttons.
39
- - Smooth hover backgrounds, micro-border feedback, and prominent emerald accent states with pulsing glow for active playback and copy confirmation.
40
- - **Thinking / Reasoning CoT Block Overhaul (`ThinkingBlock.tsx`)**:
41
- - **Quiet UI Aesthetic**: Replaced neon cyberpunk green borders and radioactive glowing effects with refined, quiet neutral borders (`var(--border, rgba(255, 255, 255, 0.08))`) inspired by Claude 3.7 and Cursor.
42
- - Replaced legacy question-mark icon with an authentic, neutral **Brain** icon (`<Brain size={14} />`) from Lucide.
43
- - Added a gentle, non-distracting live breathing pulse indicator (`@keyframes thinkingDotPulse`) without high-intensity colored halos.
44
- - **Secondary Role Typography & Visual Hierarchy**:
45
- - Downscaled reasoning body text size to `12.5px` (compact and distinct from the `15px` primary chat messages) with line-height `1.55`.
46
- - Dropped text color to muted slate (`var(--text-muted, #94a3b8)` with `opacity: 0.88`), communicating its role as internal background reasoning / secondary metadata.
47
- - Scoped all markdown children inside reasoning steps (`.chat-formatted-body`, `.chat-paragraph`, `.chat-heading`, `.chat-list-*`, `.chat-bold-highlight`, `.chat-inline-code`): clamped headings to `12.8px`, subdued bold highlights, neutralized list bullets and numbering from neon green to muted slate, and tightened vertical margins.
48
- - Added custom ultra-slim 3px scrollbar (`.thinking-block-content::-webkit-scrollbar`) with translucent thumb for deep reasoning chains.
49
- - **Complete Desktop & Web Parity**:
50
- - Unified component logic in `src/renderer/shared` and synchronized stylesheet updates across `src/renderer/src/css/chat.css` and `src/renderer/src-web/css/chat.css`.
51
-
52
- ## Native Chain-of-Thought Reasoning Extraction & Full Provider Parity (CLI, Desktop & Web)
53
-
54
- Resolved an issue where reasoning models (such as `deepseek-reasoner` / DeepSeek-R1) appeared with `"Model didn't send thinking steps this time"` when executing tools in Agent Mode:
55
-
56
- - **Multi-Provider Reasoning & CoT Ingestion (`crates/mint-core/src/agent/chat.rs`)**:
57
- - **DeepSeek Reasoner**: Extracted `message["reasoning_content"]` emitted during native tool calling and conversation turns.
58
- - **OpenRouter & Compatible Endpoints**: Extracted `message["reasoning"]` and `message["thought"]` fields.
59
- - **Embedded `<think>` Tags**: Added `extract_think_tag` parser to detect and extract `<think>...</think>` blocks embedded in model text streams (such as Ollama or local QwQ/R1 deployments).
60
- - **Google Gemini 2.0 Flash Thinking**: Separated candidate parts with `thought: true` into the reasoning thought stream instead of blending into the final content string.
61
- - **Anthropic Claude 3.7 Sonnet**: Ingested native `thinking` content blocks.
62
- - **Ollama**: Extracted `message["thinking"]` and `message["reasoning_content"]`.
63
- - **Orchestration Agent Loop Integration (`crates/mint-core/src/orchestration/mod.rs`)**:
64
- - Attached extracted `thought` tokens to `AgentDecision` across tool-calling and completion turns.
65
- - Guaranteed `AgentProgress::Thought` is emitted for every step containing reasoning traces, allowing the frontend's `ThinkingBlock` to render the live pulsing brain icon and step-by-step reasoning steps.
66
- - Added unit test coverage for each reasoning provider schema.
67
-
68
-
69
- ## Minimalist AI Workspace Code Block & Command Styling (Desktop & Web UI)
70
-
71
- Mint's code block rendering and inline command displays have been redesigned to deliver a minimalist, high-clarity developer workspace aesthetic inspired by Claude and Cursor:
72
-
73
- - **Zero-Dependency Syntax Highlighting Engine (`src/renderer/shared/utils/syntaxHighlight.tsx`)**:
74
- - Implemented a fast, lightweight, and resilient tokenization engine tailored for developer commands and code snippets.
75
- - **Bash / Shell / Terminal Commands**: Intelligent distinction between primary commands (`ffmpeg`, `git`, `docker`, `cargo`, `npm`, etc.), command-line flags and options (`-i`, `-vf`, `--help`), string parameters, variables (`$VAR`), property assignments (`key=value`), comments, and pipe operators (`|`, `&&`).
76
- - **Comprehensive Multi-Language Support**: Dedicated tokenizers for JavaScript, TypeScript, Python, Rust, JSON, SQL, HTML, CSS, and YAML with universal fallback handling.
77
- - **Low-Saturation Aesthetic**: High-contrast, easy-on-the-eyes palette (soft sky blue commands, calm emerald strings, warm amber flags, muted slate comments).
78
- - **Redesigned Minimalist Header & Controls (`ChatCodeBlock.tsx`)**:
79
- - Monospace lowercase language badge (`bash`, `typescript`, `python`, etc.) with subtle metadata tracking code line count for multi-line snippets.
80
- - **Interactive Copy Action**: Added clear "Copy" label alongside the clipboard icon with fluid animated transition to green checkmark and "Copied!" confirmation.
81
- - **Ghost Download Button**: Clean, unobtrusive button for downloading the snippet with the appropriate file extension.
82
- - **Line Numbers & Non-Selectable Gutter**:
83
- - Automatically displays a neat gutter with line numbers for multi-line snippets (`> 1` lines).
84
- - Designed with `user-select: none` so selecting code or copying to clipboard preserves clean code without stray line numbers.
85
- - Single-line terminal commands (e.g. `ffmpeg ...`) remain uncluttered with full padding and zero gutter distraction.
86
- - **Refined Tech Pill Inline Code (`.chat-inline-code`)**:
87
- - Updated inline code pills across Desktop and Web with subtle dark translucent background (`rgba(255, 255, 255, 0.06)`), fine border, and crisp typography for clear readability in paragraphs and lists.
88
- - **Full Platform Parity**:
89
- - Shared component `ChatCodeBlock` and identical CSS rules implemented across both Desktop (`src/renderer/src/index.css`) and Web (`src/renderer/src-web/index.css`).
90
-
91
- ## Dynamic Model Temperature Control, Per-Model Persistence & Interactive Wizard (CLI, Desktop & Web)
92
-
93
- Mint now provides comprehensive model temperature management with **per-model persistence**, interactive multi-step selection wizard, and fine-grained, model-aware defaults tailored to prevent repetitive reasoning loops on reasoning models while preserving strict precision on coding backends:
94
-
95
- - **Per-Model Persistence & Model-Aware Defaults (`crates/mint-core/src/system/config.rs`)**:
96
- - **Independent Per-Model Overrides**: Stores custom temperatures in `modelTemperatures: HashMap<String, f64>` so each model independently remembers its configured temperature (e.g. `deepseek-chat` at `0.65`, `claude-sonnet-5` at `0.15`, while unset models seamlessly use smart defaults).
97
- - Automatically sets temperature to **`0.6`** for Open-Weight Reasoning / CoT models (DeepSeek-R1/V3, Qwen-QwQ, and thinking/reasoner fine-tunes), directly mitigating the known agent looping/stagnation behavior caused by greedy decoding (`0.0`) or unconstrained drift (`1.0`).
98
- - Sets temperature to **`0.1`** for Codestral and pure code completion models to maximize deterministic completion accuracy.
99
- - Defaults to **`0.2`** for general coding and tool-calling models (Claude 3.5/3.7, GPT-4o, Gemini 2.5, Qwen 2.5 Coder, Llama 3.3, Ollama, etc.) for high accuracy, strict JSON schema adherence, and reliable tool execution.
100
- - Automatically omits the `temperature` parameter for OpenAI reasoning architectures (`o1`, `o3`), which reject explicit temperature values with HTTP 400 Bad Request.
101
- - Clamps all user values safely between `0.0` and `2.0`.
102
- - **Interactive Multi-Step `/temperature` Selection Flow (`crates/mint-core/src/slash/mod.rs` & `slash-commands.json`)**:
103
- - **Interactive Wizard**: Pressing Enter on bare `/temperature` or `/temp` launches an interactive multi-step picker via `SlashResponse::NeedsChoice`:
104
- 1. **Provider / Active Model Shortcut**: Quickly choose between the currently active model shortcut or any configured/standard provider.
105
- 2. **Model Selection**: Lists provider models dynamically or from presets, tagged with current `[Custom: 0.XX]` or `[Auto: 0.XX]` status.
106
- 3. **Temperature Presets**: Choose from curated presets (`Auto`, `0.0 Deterministic`, `0.1 Codestral`, `0.2 Standard Coding`, `0.4 Balanced`, `0.6 DeepSeek/Reasoning`, `0.8 Creative`, `1.0 Brainstorming`) or specify custom values.
107
- - **Fast Shorthands**:
108
- - `/temperature <0.0-2.0>` sets custom temperature for the active model.
109
- - `/temperature <model> <0.0-2.0>` sets temperature for a specific model directly.
110
- - `/temperature default` resets the active model to smart defaults.
111
- - `/temperature <model> default` resets that specific model.
112
- - `/temperature status` displays a formatted markdown status table listing active model effective temperature, reasoning mode handling, and all configured per-model overrides.
113
- - Available across all 3 interfaces with unified terminal interactive selection (CLI) and clickable chip selectors (Desktop & Web UI).
114
- - **Interactive UI Slider with Per-Model Binding in Settings (`GeneralTab.tsx` & `config.ts`)**:
115
- - Added a dedicated **Model Temperature** control card under **AI Routing: Provider & Model** in Settings.
116
- - Dynamically binds to `config.modelTemperatures[activeModel]`, displaying dynamic status badges (`Custom for <model> (0.XX)` or `Auto (<rationale>)`).
117
- - Smooth slider (range `0.00` to `1.50`, step `0.05`) with live numerical display and an instant **`Reset to Auto`** action that removes the override for the active model while preserving other model configurations.
118
- - Informative contextual tooltip explaining the optimal sampling entropy for each model archetype.
119
-
120
- ## Remote MCP Server Connections via URL / SSE & Live Connection Testing (CLI, Desktop & Web)
121
-
122
- Mint now natively supports connecting to remote Model Context Protocol (MCP) servers hosted over HTTP / HTTPS with Server-Sent Events (SSE) streaming and direct HTTP POST JSON-RPC transports.
123
-
124
- - **Remote MCP Protocol Support (`crates/mint-core/src/integrations/mcp.rs`)**:
125
- - Extended `McpServer` configuration with `url: Option<String>`, `headers: Option<BTreeMap<String, String>>`, and `transport: Option<String>`.
126
- - Added `McpRemoteSession` with an SSE event listener thread and endpoint discovery (`endpoint` SSE events), dual-channel JSON-RPC dispatch (direct POST responses with SSE event fallback), and background keepalive.
127
- - Unified local stdio processes and remote network connections under the `McpSession` abstraction.
128
- - Implemented `test_remote_mcp_connection` for pre-flight connection verification and discovery of remote tools, prompts, and resources.
129
- - **Interactive UI with Segmented Transport Toggle & Live Testing (`McpServersView.tsx`)**:
130
- - **Segmented Toggle**: Switch effortlessly between **`🌐 Remote Server (URL / SSE)`** and **`💻 Local Command (stdio)`** in the Add Server modal.
131
- - **Remote Endpoint & Authentication Setup**: Configure Remote Server URL (`https://...`), choose Authentication type (`None`, `Bearer Token`, or `Custom Headers JSON`), and provide optional custom server icons.
132
- - **Live Connection Testing**: Interactive **`Test Connection`** button triggers a non-blocking diagnostic test against the endpoint, displaying live loading states, success verification (reporting available tools, resources, and prompts count), or detailed error diagnostics before saving.
133
- - **Enterprise-Grade Security Notice & Risk Acknowledgement**: Custom warning banner with `<ShieldAlert />` icon and safety acknowledgement checkbox before adding external endpoints, ensuring users review risks prior to granting remote tool execution.
134
- - **Server Card & Details Parity**: Remote servers display a distinct `Remote` badge with Lucide vector icon on their card and reveal their full endpoint URL and custom headers in the server detail modal.
135
- - **Full Platform Parity across CLI, Desktop & Web**:
136
- - **CLI (`crates/mint-cli`)**:
137
- - `mint mcp add <name> <url>` auto-detects remote URLs and accepts authentication headers via `--env "Authorization=Bearer <token>"`.
138
- - Interactive slash command `/mcp add <name> <url>` seamlessly adds remote servers with SSE transport.
139
- - `mint mcp list` displays `(url: <url>)` for remote servers.
140
- - **Desktop Tauri (`src-tauri` & `src/renderer/src`)**:
141
- - Registered `test_mcp_connection` Tauri command for native asynchronous ping and schema validation.
142
- - **Web UI & Server (`crates/mint-core/src/api_server/routes/cron_mcp.rs` & `src/renderer/src-web`)**:
143
- - Added `POST /api/mcp/test` REST route running on a dedicated blocking task to prevent event-loop starvation.
144
- - Updated Web `MintPlatformApi` with `testMcpConnection` bridging to the backend endpoint.
145
-
146
- ## Rewind System Overhaul: Themed Confirmation Modal, Targeted Step Checkpoints & Rescue Undo (CLI, Desktop & Web)
147
-
148
- A comprehensive upgrade to Mint's file rewind and Git time machine capabilities:
149
-
150
- - **Custom Themed Rewind Confirmation Modal (`RewindModal.tsx`)**:
151
- - Replaced raw browser `window.confirm()` and `alert()` with a custom, theme-aware review dialog (`.rewind-modal`).
152
- - Highlights safety guarantee, target step badge, short commit hash, action type, timestamp, and the exact files to be reverted (with line addition/deletion indicators and `[NEW FILE]` tags).
153
- - Supports keyboard shortcuts (`Escape` to dismiss, `Cmd/Ctrl + Enter` to confirm) and includes safety loading states.
154
- - **Targeted Step Checkpoint Matching**:
155
- - Rewind buttons on file changes summary cards now dynamically bind to the exact pre-edit checkpoint for that specific interaction/turn, rather than defaulting to the latest session checkpoint.
156
- - Matches checkpoints against files touched in that turn or interaction creation timestamp, ensuring rolling back an earlier turn restores the workspace to the exact state before that turn began.
157
- - **Rescue Snapshot Safety Net & Instant Undo (`/rewind undo`)**:
158
- - Before any rollback occurs, Mint creates a safety rescue snapshot in Git (`refs/mint/rescue/<timestamp>`).
159
- - **Floating Undo Banner**: After rewinding, an interactive floating notification appears in the chat panel with a prominent **`[ ↩ Undo Rewind ]`** button, allowing users to restore reverted files with a single click.
160
- - **Full Platform Parity**:
161
- - **CLI**: Run `/rewind undo` to recover from the latest rescue snapshot.
162
- - **Backend Slash Command**: `/rewind undo` supported via `cmd_rewind`.
163
- - **Desktop Tauri Command**: `undo_git_checkpoint` native invocation.
164
- - **Web REST API**: `POST /api/checkpoints/undo` endpoint.
165
-
166
- ## Live Preview Path Resolution & File Changes Deduplication (CLI, Desktop & Web)
167
-
168
- - **Intelligent Path Resolution (`mint_core::files::resolve_readable_path`)**:
169
- - Solved `Failed to read file: Not Found` preview errors when viewing files with relative paths, tilde (`~`) prefixes, or notes stored in `~/.config/mint/notes/`.
170
- - Automatically resolves file targets across candidates: user home directory expansion, active workspace root, current working directory, and system config note locations.
171
- - Implemented with complete parity across all three interfaces: Web API endpoint (`/api/file/read`), Desktop Tauri command (`read_workspace_file`), and CLI (`mint preview` / `handle_preview`).
172
- - **Distinct Operation Tracking for Creation & Modifications (`agentProgress.ts`)**:
173
- - Preserved distinct file change records for separate tool actions (e.g. initial file creation via `note_write` vs subsequent edits via `apply_patch`), ensuring the summary accurately reflects `1 created, 1 modified` with dedicated diff inspection for each step.
174
- - Both cards link to the resolved target on disk so clicking Preview on either the created or modified entry works seamlessly without path errors.
175
- - **Preview Resiliency & Fallback Content**:
176
- - Pass initial created file content as in-memory fallback to `ArtifactPreviewPanel`, ensuring previews render instantly and gracefully even before disk sync or in transient environments.
177
- - **Chat Scroll Preservation on Preview Toggle**:
178
- - Eliminated the issue where opening or closing the Live Preview panel caused the chat messages container to unmount and reset its scroll position (`scrollTop = 0`) to the top of history.
179
- - Stabilized the split view wrapper DOM hierarchy (`.chat-panel-split-wrapper` with `display: contents` in `no-preview` mode) so the conversation panel never unmounts, while anchoring the scroll position to the active message.
180
- - **Draggable & Resizable Split Pane Divider**:
181
- - Added an interactive divider bar (`.preview-split-resizer`) between the Chat Panel and Live Preview panel.
182
- - Smooth 60fps mouse drag-to-resize using direct CSS variable updates (`--preview-width`), preventing costly re-renders of the chat conversation while dragging.
183
- - Double-click on the divider grip bar instantly snaps back to 50/50 balance.
184
- - Automatically persists the user's preferred split ratio in `localStorage` (`mint_preview_split_ratio`), preserving custom sizing across sessions.
185
- - Safety constraints prevent either pane from collapsing (Chat >= 340px, Preview >= 280px).
186
-
187
- ## File Changes, Live Preview & Diff Viewer Theme Parity (Desktop & Web UI)
188
-
189
- - **Comprehensive Theme Alignment**:
190
- - Replaced hardcoded inline styles (`#10b981`, `#0b0f19`, `rgba(15, 23, 42, 0.6)`, `#a7f3d0`) in the File Changes summary and live Diff viewer with dynamic CSS theme variables (`var(--accent)`, `var(--surface-bg)`, `var(--input-bg)`, `var(--border)`, `var(--text-chat, var(--text-main))`, `var(--text-muted)`).
191
- - Ensured complete visual parity across default dark, light (`[data-theme="light"]`), midnight (`[data-theme="midnight"]`), and custom themes.
192
- - **Live Preview Split View Panel (`ArtifactPreviewPanel.tsx`)**:
193
- - Replaced legacy fallback colors (`#232730`, `#111317`, `#f3f4f6`, `#181a20`, `#10b981`) across the entire Preview panel with native Mint theme tokens: `--panel-bg`, `--surface-bg`, `--border`, `--text-main`, and `--accent`.
194
- - Preview/Code tab toggles, device viewport selectors (Desktop/Tablet/Mobile), artifact badges, and markdown view now fully match the active system theme.
195
- - **Diff Review Modal (`DiffReviewModal.tsx`)**:
196
- - Split and unified diff panes, header diff badge, and addition/deletion counters now track the active theme accent, error, and text variables.
197
- - **Readable Diff Line Highlighting**:
198
- - Diff hunk lines now preserve the user's configured chat text color (`var(--text-chat, var(--text-main))`) while clearly highlighting additions and deletions with subtle background tints, accent/error border indicators, and separate unselectable sign markers (`+` in `var(--accent)`, `-` in `var(--status-error)`).
199
- - **Rewind Action & Status Badges**:
200
- - Rewind checkpoint button, [NEW FILE] badge, and Preview button now cleanly utilize system theme tokens (`var(--status-error)`, `var(--hover-delete-bg)`, `var(--accent)`, `var(--radius-xs)`).
201
- - **Platform Parity**:
202
- - Reusable `.file-changes-*` styling standardized across both Desktop (`src/renderer/src/css/chat.css`) and Web (`src/renderer/src-web/css/chat.css`).
203
-
204
- ## Claude Desktop Style Choice Cards UI Overhaul (Web & Desktop)
205
-
206
- Redesigned the Action Approval and AskUser Question interface across both Web (`src/renderer/src-web`) and Desktop (`src/renderer/src`):
207
-
208
- - **Claude Desktop "Choice Cards" Layout**:
209
- - Replaced legacy small horizontal buttons with vertical, interactive Choice Cards featuring dedicated hotkey badges (`[ 1 ]`, `[ 2 ]`, `[ 3 ]`), titles, and explanatory subtitles.
210
- - Distinct hover accents for Approve (emerald), Session Allow (sky blue), and Deny/Cancel (rose red).
211
- - Clean header with tool-specific badges (RunShell 🐚, File Edit 📝, MCP 🔌, Question 💬) and risk tiers (`DANGEROUS`, `APPROVAL REQUIRED`).
212
- - Monospace code box for shell commands and diffs with quick syntax review.
213
- - **Global Keyboard Hotkey Triggers**:
214
- - Pressing `1`, `2`, `3` on the keyboard instantly selects or approves the corresponding choice card when not actively typing in an input field.
215
- - **Enhanced AskUser Selection & Custom Answer**:
216
- - Full support for single-select choices, multi-select checkboxes, and custom write-in answers with `Enter`-to-submit.
217
- - **Full Platform Parity**:
218
- - Unified across Desktop and Web via the shared `ApprovalCard.tsx` component and matching CSS tokens.
219
-
220
- ## Web UI Performance & Reliability Overhaul
221
-
222
- This update resolves intermittent slow loading, white screens, and update error loops when accessing Mint via web browser:
223
-
224
- - **Decoupled Build Output Targets (`out/web` vs `out/renderer`)**:
225
- - Web UI now builds cleanly to `out/web` while Desktop UI continues building to `out/renderer`.
226
- - Completely eliminates output clobbering where desktop builds wiped out `index-web.html` or chunk hashes.
227
- - **Same-Origin Vite API Reverse Proxying**:
228
- - Added reverse proxy configuration for `/api` in Vite dev and preview modes routing to backend port 3000.
229
- - Eliminated CORS preflight `OPTIONS` requests, dramatically reducing API response times.
230
- - Resolves browser mixed-content blocks when accessing over HTTPS, SSH tunnels, or VS Code port forwarding.
231
- - **Removed Render-Blocking Unused Live2D Script**:
232
- - Removed 150 KB synchronous `Live2DCubismCore.js` script tag from `index-web.html` `<head>`, as Live2D companion rendering is desktop-only.
233
- - **Service Worker Dev Isolation & Smart Fallbacks**:
234
- - Dev mode now automatically purges leftover service workers from preview/production runs so Vite HMR is never intercepted or corrupted.
235
- - Added strict exclusions in `sw.js` for Vite internal endpoints.
236
- - **Resilient Chunk Error Boundary & Dark Recovery Screen**:
237
- - Replaced the harsh white `#ffffff` error screen with an on-theme Mint dark card.
238
- - "Refresh & Update" button automatically clears stale `caches` and unregisters old service workers before reloading to guarantee a clean recovery loop.
239
- - **Failsafe Timeout Guards**:
240
- - Added 5-second fetch timeouts to `authGetCurrentUser`, `getRuntimeStatus`, and `getSettings` with a 6-second failsafe in `AuthGate`, preventing indefinite hangs on "Loading Mint…".
241
- - **Intelligent CLI Binary Discovery & Fast Dev Iteration**:
242
- - Rewrote [src/bin/index.js](file:///home/pheem49/vscode/Project/Mint-CLI/src/bin/index.js) to resolve binaries dynamically across local release (`target/release/mint`), fast local debug (`target/debug/mint`), user Cargo installation (`~/.cargo/bin/mint`), user local bin (`~/.local/bin/mint`), and global system paths (`/usr/local/bin`).
243
- - Running `cargo build -p mint-cli` (debug) is now immediately picked up by the CLI runner without requiring a full 5-10 minute `--release` build or reinstall.
244
- - Added `npm run install:cli` (`cargo install --path crates/mint-cli --locked`) to install the native binary permanently to `~/.cargo/bin`.
245
-
246
- ## Agent Harness Engineering Upgrade (9-Pillar System)
247
-
248
- This release introduces a major architectural overhaul transforming Mint Agent into an enterprise-grade Autonomous Agent Harness. Grounded in systematic harness engineering principles, this upgrade equips Mint with deep workspace awareness, precise code navigation, safe autonomous verification loops, git checkpointing, structured knowledge authoring, run-level observability, and benchmarking across CLI, Desktop, and Web.
249
-
250
- ### 1. Workspace & Monorepo Architecture Detection (Pillar 1)
251
- - **Deep Architecture Scanner (`mint_core::system::project_detector`)**:
252
- - Automatically identifies monorepo structures (Cargo workspaces, pnpm-workspaces, Turborepo, Lerna, Nx) and primary project ecosystems (Rust, Node/TypeScript, Python, Go, Java).
253
- - Scans workspace roots and sub-crates/packages, extracting build scripts, package managers, and test runner configurations.
254
- - Automatically injects an architectural briefing directly into the Agent's system prompt before the first turn, eliminating exploratory "what kind of project is this?" steps.
255
- - **Custom Rules Auto-Ingestion**:
256
- - Automatically scans and injects project rules from `CLAUDE.md`, `.cursorrules`, `.github/copilot-instructions.md`, `.agents/rules/`, and `.agents/AGENTS.md` into the agent's context.
257
-
258
- ### 2. Code Intelligence & AST Symbol Navigation (Pillar 2)
259
- - **AST / Syntax-Aware Symbol Extraction (`mint_core::search::symbols`)**:
260
- - Added native symbol navigation without requiring heavyweight external Language Server Protocol (LSP) daemons.
261
- - **`find_definition` Tool**: Locates definitions of functions, structs, classes, enums, interfaces, types, and traits across Rust, TypeScript, JavaScript, Python, and Go codebases.
262
- - **`find_references` Tool**: Scans call-sites, usages, and implementations across workspace files.
263
- - Eliminates blind full-text grep hallucinations when refactoring or tracing complex type hierarchies.
264
-
265
- ### 3. Safe Automated Tooling & Zero-Prompt Pre-Approval Policy (Pillar 3)
266
- - **Dedicated Validation Tools (`mint_core::orchestration::tools::safe_tools`)**:
267
- - **`run_tests`**: Automatically discovers and invokes test runners (`cargo test`, `npm test`, `pytest`, `go test`) or executes targeted test suites.
268
- - **`run_typecheck`**: Invokes project type-checkers (`tsc`, `cargo check`, `pyright`, `mypy`) to catch compiler-level errors early.
269
- - **`run_linter`**: Runs code linters (`clippy`, `eslint`, `flake8`/`ruff`, `golangci-lint`) to enforce style and correctness.
270
- - **Zero-Prompt Pre-Approval Policy**:
271
- - Classified validation and test-running tools as non-destructive safe operations, allowing autonomous execution in the background without prompting the user for repetitive command approvals.
272
-
273
- ### 4. Task Planning Checklist & State Machine (Pillar 4)
274
- - **Structured Plan State Machine (`mint_core::orchestration::tools::planning`)**:
275
- - Introduces `plan_task` and `update_plan_step` tools enabling agents to establish structured, multi-step implementation workflows.
276
- - Supports dynamic step states: `Pending`, `InProgress`, `Completed`, `Failed`, and `Skipped`.
277
- - **Live Terminal & UI Checklist Cards**:
278
- - **CLI**: Live ANSI progress cards with status glyphs (`[ ]`, `[-]`, `[x]`, `[!]`, `[~]`) and dynamic step updates in `mint-cli`.
279
- - **Desktop & Web**: Dedicated `PlanChecklistWidget` displaying interactive progress, step state transitions, and step timing.
280
-
281
- ### 5. Active Verification Loop & Balanced Log Engineering (Pillar 5)
282
- - **Automatic Post-Modification Verification Hook**:
283
- - Integrated post-edit verification passes in the orchestration loop to trigger targeted checks before declaring tasks completed.
284
- - **Balanced Log Truncation Engine (`Head + Tail Windowing`)**:
285
- - Implemented 3 KB Head + 12 KB Tail balanced buffer windowing for command and test outputs.
286
- - Preserves both invocation parameters at the start and critical failure stack traces/compiler errors at the end, joining them with a `[... N bytes truncated ...]` marker to avoid context blowup while retaining actionable diagnostic data.
287
-
288
- ### 6. Git Safety Harness & Rollback Checkpoints (Pillar 6)
289
- - **Automatic Checkpoint & Rollback Engine (`mint_core::git::checkpoint`)**:
290
- - **`git_checkpoint`**: Snapshots working tree state and stash references before risky multi-file edits.
291
- - **`git_rollback`**: Safely reverts working directory changes back to the pre-task snapshot when tasks fail or the agent goes astray.
292
- - **`git_restore_file`**: Precision rollbacks of individual modified files (`git checkout -- <file>`).
293
- - **`git_create_branch`**: Automatically spins up isolated task branches (`mint/<task-id>-<slug>`).
294
- - **`git_commit`**: Generates context-aware commit messages based on diff analysis and commits verified changes.
295
-
296
- ### 7. Autonomous Knowledge Engine & Documentation (Pillar 8)
297
- - **Tiered Documentation Search & Authoring (`mint_core::system::knowledge_engine`)**:
298
- - Recursively indexes repository knowledge repositories across `docs/`, `architecture/`, `decisions/` (ADRs), `api/`, and `troubleshooting/`.
299
- - **`search_docs`**: High-speed keyword and semantic search across local project documentation before falling back to external sources.
300
- - **`create_project_doc`**: Enables the agent to author, persist, and update Architecture Decision Records (ADRs), API guides, and troubleshooting runbooks directly in the workspace.
301
-
302
- ### 8. Run Observability Dashboard & Telemetry (Pillar 9)
303
- - **Run Telemetry & Metrics Collection (`mint_core::orchestration`)**:
304
- - Tracks total execution duration, step counts, token usage, tool breakdown counts, and per-tool execution latency via `RunTelemetrySummary` and `ToolExecutionRecord`.
305
- - Emits `AgentProgress::RunCompleted` event upon task finalization.
306
- - **Cross-Platform Telemetry Dashboards**:
307
- - **CLI**: Rich ANSI terminal summary card rendered upon agent turn completion.
308
- - **Desktop UI & Web UI**: Themed `RunSummaryDashboard` component featuring execution statistics, status indicators, and an expandable tool-call latency drawer with platform parity across `src/renderer/src` and `src/renderer/src-web`.
309
-
310
- ### 9. Benchmark Evaluation System (Pillar 10)
311
- - **Evaluation Suite Engine (`mint_core::eval`) & CLI Subcommand (`mint eval`)**:
312
- - Added `mint eval --suite <path> [--concurrency <N>] [--output <path>]` command for automated benchmarking of agent models and harnesses.
313
- - Evaluates benchmark cases against prompt instructions, file modifications, and unit test pass criteria.
314
- - Includes benchmark suite templates under `benchmarks/mint_eval.json`.
315
-
316
- ### 10. Design System & Theming Refactoring (`agent-observability.css`)
317
- - **Semantic CSS Token Integration**:
318
- - Extracted all ad-hoc styles from `RunSummaryDashboard.tsx` and `PlanChecklistWidget.tsx` into a shared stylesheet `src/renderer/shared/css/agent-observability.css`.
319
- - Strictly bound all components to Mint design tokens:
320
- - Surfaces & borders: `var(--surface-bg)`, `var(--surface-bg-alt)`, `var(--border)`, `var(--border-light)`.
321
- - Typography: `var(--text-main)`, `var(--text-muted)`.
322
- - Accents & status: `var(--accent)`, `var(--accent-hover)`, `var(--status-speaking)` (success), `var(--status-error)` (failure), `var(--status-listening)` (warning).
323
- - Guarantees seamless aesthetics and readability across Dark, Light, and Midnight themes on both Desktop and Web interfaces.
324
-
325
-
326
- ## Agent Activity Retry & Self-Correction UX Refinement
327
-
328
- - **Soft Recovered / Retry State for Intermediate Tool Errors**:
329
- - When an intermediate tool step encounters an error (e.g. missing arguments or transient failures) but the Agent subsequently retries, self-corrects, or finishes the task, the activity table now marks the step as `'retry'` with an amber badge (`[Retried]`) instead of a harsh red `Failed` label.
330
- - The tool/action name (e.g., `web_search`) is preserved in the "Tool" column rather than being wiped out by the word "Failed".
331
- - Terminal red `[Failed]` badges are reserved strictly for unrecovered errors where the agent halted without subsequent success.
332
- - Added descriptive fallback targets (e.g. `(empty query)`, `(empty path)`) when a tool was invoked without required arguments so users immediately understand why a step required a retry.
333
- - Implemented across both Desktop (`src/renderer/src`) and Web (`src/renderer/src-web`) interfaces with consistent theme styling.
334
-
335
- ## Settings First-Load Reliability & Route Resilience
336
-
337
- - **Eliminated Circular Dependency Cycle in Settings Tabs**:
338
- - Moved `CustomProviderConfig`, `CustomProviderModel`, and `CustomProviderHeader` to `shared/types.ts` as the canonical source of truth.
339
- - Updated all settings tab components (`GeneralTab`, `AgentsTab`, `PluginsTab`, `ThemeTab`, `AutomationTab`, `AudioTab`) to import config, models, and types directly from `@shared/constants` and `@shared/types` instead of `@/components/SettingsWindow`.
340
- - Fixes uninitialized `undefined` exports during initial module evaluation in Vite ESM, which caused first-load crashes (`ChunkErrorBoundary`) in Web and Desktop.
341
-
342
- - **Hashbang Route Normalization (`#!/settings` & `#/settings`)**:
343
- - `getCurrentRoute()` in both `src-web/App.tsx` and `src/App.tsx` now normalizes both `#/` and `#!/` prefixes cleanly to prevent route mismatch on direct navigation or hashbang links.
344
-
345
- - **Resilient Lazy Chunk Loading & Preload**:
346
- - Implemented `lazyWithRetry` with automatic backoff retry to prevent transient chunk fetch failures from unmounting the app.
347
- - Added background idle preloading for the Settings bundle so opening Settings is instant and reliable.
348
- - Added a localized `ModalErrorBoundary` inside the settings modal container to prevent any modal rendering exception from bubbling up and unmounting the main dashboard and chat.
349
-
350
- ## UI Stylesheet Cleanup & Theme Token Consistency
351
-
352
- - **Removed the legacy `mint-*` layout CSS** (~330 lines per copy) from `src/renderer/src/index.css` and `src/renderer/src-web/index.css`:
353
- - `.mint-app`, `.mint-sidebar`, `.mint-toolbar`, `.mint-composer`, `.mint-message`, `.mint-model`, `.mint-picture(s)`, `.mint-empty`, `.mint-workspace` and their `@media` block were dead — no component renders those classes anymore.
354
- - Fixed a real styling conflict: the leftover `.mint-attachment` / `.mint-attachment button` rules were overriding the current composer-attachment styles in `chat.css` (transparent remove button, stray slate background/padding). The attachment strip now renders exactly as `chat.css` defines it, including the red circular remove button.
355
- - Removed the duplicate `.chat-inline-code` definition (two conflicting blocks in the same file) and the unused `.chat-ordered-list` / `.chat-unordered-list` rules.
356
-
357
- - **Hard-coded colors replaced with theme tokens** so chat tables, code blocks, and error banners now follow the active theme (dark/light/midnight) instead of assuming a dark background:
358
- - `.mint-error` now derives from `--status-error` / `--text-main` via `color-mix`.
359
- - `.chat-table*` and `.chat-code-*` rules use `--border`, `--border-light`, `--shadow-sm`, and `color-mix` tints of `--text-main` instead of `rgba(255,255,255,…)` values that were invisible on the light theme.
360
- - Markdown table renderer (`src/renderer/shared/utils/markdown.tsx`) inline styles (container border/shadow, header tint, zebra rows, row borders) — these override the CSS, so they are now token-based too, fixing themed tables on Desktop and Web at once.
361
- - `body`/`html` base text color now uses `var(--text-main)` instead of a fixed dark-theme hex.
362
-
363
- ## Web Search Image Hotlink Protection & Direct URL Resolution
364
-
365
- - **Unwrapped Web Search Image Proxy URLs**:
366
- - Automatically unwraps Brave Search internal proxy URLs (`imgs.search.brave.com`) back to direct source image URLs in both backend and frontend, eliminating 403 Forbidden errors.
367
- - Fixes images failing to display in Web and Desktop message bubbles while appearing as raw Markdown links in the CLI.
368
- - Automatically decodes existing image URLs stored in past conversation history upon rendering.
369
-
370
- - **Referrer Policy Hardening**:
371
- - Added `referrerPolicy="no-referrer"` to image tags across Markdown bubbles, Image Search tiles, and Search Source drawer thumbnails to bypass third-party image hotlink protection.
372
-
373
- ## CLI UX & Ergonomics Improvements
374
-
375
- - **Direct One-Shot Prompt Execution (`mint [PROMPT]...`)**:
376
- - Running `mint "explain this function"` or `mint explain this function` now directly executes the code agent on that task without needing `mint agent "..."` or entering the interactive TUI.
377
- - Returns exit code `0` on successful completion or `130` on cancellation.
378
-
379
- - **Top-Level Global Flags (`-m`, `-C`, `--fast`, `--plan`, `--image`)**:
380
- - Added `-C / --cwd <DIR>` to set the workspace directory upfront (mirroring `git -C`).
381
- - Added `-m / --model <MODEL>` for temporary in-memory model overrides per session or task (e.g. `mint -m claude-3-7-sonnet "..."` or `mint -m gemini-2.5-flash`), with automatic provider detection.
382
- - Added `--fast` and `--plan` flags at the root CLI level.
383
- - Added `--image <PATH>` to attach image files directly to one-shot prompts.
384
-
385
- - **Graceful Interruption & Ctrl+C Handling**:
386
- - Fixed an issue where `Ctrl+C` was swallowed while the queueing box held raw terminal mode. `Ctrl+C` and `Esc` now cleanly interrupt agent turns in both normal and fast modes.
387
- - Pressing `Ctrl+C` on an empty prompt now displays the yellow `{WARN}Press Ctrl+C again or Ctrl+D to exit{RESET}` notice below the input box (matching `Ctrl+D`'s notification behavior) instead of overriding the prompt placeholder. Pressing either key again cleanly closes the session.
388
-
389
- - **Robust Piped Input, Non-TTY Fallbacks & Scriptability**:
390
- - Fixed TTY detection across `confirm.rs`, `picker.rs`, `approval_prompts.rs`, and `agent.rs` by checking `!io::stdin().is_tty()` alongside `stdout`.
391
- - When `stdin` is piped (e.g. `echo "y" | mint run ...` or in CI/CD scripts), prompts automatically fall back to line-oriented reading (`read_line`) instead of attempting raw-mode key polling or hanging on terminal escape sequences.
392
- - Interactive arrow-key selection (`prompt_interactive_select`) safely returns `None` immediately when input is not a terminal.
393
- - `mint run <COMMAND>` now prompts for confirmation via `confirm()` when `--approve` is omitted, allowing interactive confirmation in terminals or automated pipeline approvals via `printf "y\n" | mint run ...`.
394
-
395
- - **Fast Mode Esc & Ctrl+C Cancellation**:
396
- - Unified turn cancellation in `agent.rs` so that `--fast` mode can be interrupted immediately with either `Esc` or `Ctrl+C`, without leaving terminal cursor or raw mode in an inconsistent state.
397
-
398
- - **Streaming Stability & Localization Audit**:
399
- - Replaced `lines().flatten()` with `.map_while(Result::ok)` in the `mint auto` log watcher, preventing infinite loop risks on broken file streams or invalid UTF-8 bytes.
400
- - Fixed UTF-8 character boundary panics in tool output truncation (`hooks.rs`) and agent instruction summaries (`agent.rs`). Slicing strings with non-ASCII multi-byte characters (e.g. Thai `\u{0e38}`, Japanese, emojis) now safely snaps backward to the nearest valid character boundary.
401
- - Audited all user-facing CLI prompts across `crates/mint-cli` to ensure 100% English language consistency (e.g. `$skill` prompts).
402
-
403
- ## Architecture & Platform Parity (CLI, Desktop & Web)
404
-
405
- - **Core Slash Command Engine Unification (`mint_core::slash::execute`)**:
406
- - Connected CLI interactive mode (`interactive/slash_commands.rs`) directly to `mint_core::slash::execute`.
407
- - Guarantees 100% feature and behavioral parity across CLI, Desktop, and Web: commands like `/models`, `/fast`, `/autoskill`, `/autorecall`, `/autofacts`, `/factrecall`, `/multi-agent`, `/release-notes`, `/clear`, `/init`, `/remember`, `/memory`, `/link`, `/plugin`, `/code`, `/generate-image`, `/cd`, `/stats` now share identical backend logic, options, persistence, and Markdown rendering across all platforms.
408
- - Interactive choice requests (`SlashResponse::NeedsChoice`) seamlessly invoke the CLI's interactive arrow-key selector (`prompt_interactive_select`) with live selection re-dispatch.
409
- - Preserved CLI-specific specialized commands (`/plan`, `/palette`, `/bg`, `/jobs`, `/shells`, `/exit`, `/image`, `/paste`, `/avatar`, and interactive TUI wizards for bare `/mcp`, `/cron`, `/subagent`).
410
-
411
- - **Comprehensive `@` Mention Parity with GUI**:
412
- - Upgraded the CLI's `@` mention and autocompletion system from only listing MCP servers to a unified multi-category completion popup matching the Desktop & Web interface:
413
- - Configured MCP servers (`[Plugin]`): `@<server>` with tool details (ordered at the very top).
414
- - Builtin contexts (`[Context]`): `@workspace`, `@file`, `@docs`, `@memory` with descriptive badges.
415
- - Workspace files and directories (`[File]`, `[Folder]`): Automatically scans the active workspace directory, skipping build artifacts (`target`, `.git`, `node_modules`).
416
- - Supports `@` mention autocomplete anywhere in the input line (not only at the start of the line), correctly replacing the active token at the cursor.
417
-
418
- - **Subcommand Modularization (`main.rs` Refactoring)**:
419
- - De-monolithized the 3,190-line `main.rs` down to ~400 lines by decomposing subcommand handlers into dedicated modules under `crates/mint-cli/src/commands/`:
420
- - `commands/config.rs`: `Status`, `Config`, `Providers`, `Update`, `Onboard`, `Setup`.
421
- - `commands/system.rs`: `Run`, `Open`, `OpenApp`, `Preview`, `ReadFile`, `ReadFolder`, `Safety`, `Files`.
422
- - `commands/agent.rs`: `Agent`, `Rewind`, `Auto`, `Web`, `Api`, `Gateway`, `Chat`, `Imagine`, `Veo`, `Video`, `Avatar`.
423
- - `commands/integrations.rs`: `Mcp`, `Link`, `Hooks`, `Gmail`, `Plugins`.
424
- - `commands/knowledge.rs`: `Learn`, `Symbols`, `SemanticCode`, `Knowledge`, `Code`, `Skills`.
425
- - `commands/tasks.rs`: `Memory`, `Task`, `Cron`.
426
- - `commands/mod.rs`: Unified `Command` enum and clean `dispatch()` router.
427
- - **Config Safety & Test Environment Isolation**:
428
- - Added automatic test environment isolation (`is_test_environment()` in `crates/mint-core`) so test runners never read or write user configuration files (`~/.config/mint/mint-config.json`), preventing accidental config wiping during unit tests.
429
- - Added automatic backup preservation (`mint-config.json.bak`) before every configuration write operation in `save_config_to`.
430
- - Added `MINT_CONFIG_PATH` environment variable override support for testing and custom config paths.
431
-
432
- - **Dynamic Model Fetching (Hybrid Approach)**:
433
- - Replaced hardcoded model presets with live API discovery across Gemini (`/v1beta/models`), Anthropic (`/v1/models`), OpenAI (`/v1/models`), OpenRouter (`/api/v1/models`), DeepSeek (`/v1/models`), and local OpenAI-compatible endpoints (e.g. LM Studio).
434
- - **In-Memory Cache & Network Resilience**: Live model lists are cached process-wide for 1 hour (`CACHE_TTL`). Configured a 6-second HTTP request timeout in `mint_core::slash::model_fetcher` to promptly and silently fall back to static presets on network/DNS errors, authentication failures, or offline environments without hanging.
435
- - **Cross-Platform Parity across CLI, Desktop, and Web**:
436
- - **CLI (`crates/mint-cli`)**: Integrated async live model fetching into `/models <provider>` selection and the interactive onboarding wizard (`mint onboard`), complete with transient terminal loading feedback (`Fetching available models...`).
437
- - **Desktop UI (`src/renderer/src`)**: Added Tauri command `fetch_provider_models` and React hook `useProviderModels` powering the Settings General tab for hosted providers and LM Studio.
438
- - **Web UI (`src/renderer/src-web`)**: Added API endpoint `GET /api/models` on the core API server, web-runtime shim in `src-web/tauri.ts`, and Web UI `useProviderModels` hook ensuring identical dynamic model lists.
439
-
440
- - **Dynamic Image Model Fetching (Hybrid Approach)**:
441
- - Replaced hardcoded image model presets with live API discovery across Google Gemini / NanoBanana (`/v1beta/models`), OpenAI DALL·E (`/v1/models`), and Replicate (`/v1/collections/text-to-image`), with immediate static fallback for Stability AI, Ideogram, and Black Forest Labs (FLUX).
442
- - **In-Memory Cache & Network Resilience**: Live image model lists are cached process-wide for 1 hour (`CACHE_TTL`), with a 6-second HTTP request timeout in `mint_core::media::image_model_fetcher` falling back gracefully to static presets on offline or auth errors.
443
- - **Cross-Platform Parity across CLI, Desktop, and Web**:
444
- - **CLI (`crates/mint-cli`)**: Added `/image-models` slash command, enhanced `/image-provider` with live model fetching, and integrated live model discovery into `mint onboard` Step 4 with transient loading indicators.
445
- - **Desktop UI (`src/renderer/src`)**: Added Tauri command `fetch_image_provider_models`, React hook `useImageProviderModels`, and updated Settings General Tab & Image Studio Panel (`ImageStudioPanel.tsx`) with dynamic dropdown selection.
446
- - **Web UI (`src/renderer/src-web`)**: Added API endpoint `GET /api/image-models` on `mint_core` API server, web-runtime shim in `src-web/tauri.ts`, and Web UI `useImageProviderModels` hook ensuring identical dynamic image model discovery.
447
- - **Dynamic Video Generation Model Fetching & Studio Parity (Google Veo)**:
448
- - Transitioned Google Veo video generation from hardcoded strings to dynamic API-discovered model discovery with static fallback presets (`veo-3.1-generate-preview`, `veo-3.1-fast-generate-preview`, `veo-3.1-lite-generate-preview`, `veo-2.0-generate-001`).
449
- - **In-Memory Cache & Network Resilience (`mint_core::media::video_model_fetcher`)**:
450
- - Live video models queried from Gemini API (`/v1beta/models`), filtered by `veo`/`video` keywords, with `models/` prefix stripping.
451
- - Cached process-wide for 1 hour (`CACHE_TTL = 3600s`) with a 6-second timeout guard, falling back instantly to canonical presets in `mint_core::media::video_models` on network or authentication errors.
452
- - **Full Platform Parity across CLI, Desktop, and Web**:
453
- - **CLI (`crates/mint-cli`)**: Added `/video-models` (and `/videomodels`) slash command, upgraded `/video-provider` with live discovery and interactive selection prompts (`SlashResponse::NeedsChoice`), and integrated live model fetching into `mint onboard` with transient terminal loading indicators (`Fetching available models...`).
454
- - **Desktop UI (`src/renderer/src`)**: Added Tauri IPC command `fetch_video_provider_models`, created React hook `useVideoProviderModels`, and updated the Settings General tab to render dynamic model dropdowns with bidirectional configuration persistence.
455
- - **Web UI (`src/renderer/src-web`)**: Added REST API endpoint `GET /api/video-models` and dedicated `GET /api/video-gen/providers`, web-runtime IPC shim in `src-web/tauri.ts`, and Web `useVideoProviderModels` hook.
456
- - **Veo Studio Panel (`VeoStudioPanel.tsx`)**: Upgraded studio model selection dropdown to dynamically load available live models while preserving static presets, synchronizing the active model seamlessly with settings and CLI commands via the centralized `modelManager`.
457
-
458
- - **Application Version & Community Links in Settings Footer**:
459
- - Replaced the legacy "Quit Application" button in the Settings modal footer with a clean metadata block.
460
- - Displays application version (`Version: {APP_VERSION}`) dynamically sourced from `version.ts`.
461
- - Added external link to GitHub repository ([GitHub](https://github.com/Pheem49/Mint)) with external link indicator icon (`↗`).
462
- - Added external link to Mint website ([Website](https://mint.aemeth.xyz/)) with external link indicator icon (`↗`).
463
- - Implemented across both Desktop UI (`src/renderer/src`) and Web UI (`src/renderer/src-web`) with responsive wrapping on compact viewports (< 620px).
464
- - Exported `APP_VERSION` from `package.json` into a centralized frontend module (`src/renderer/shared/version.ts`) ensuring a single source of truth without manual string duplication.
465
- - Added `"version"` reporting to the core API server `/api/status` endpoint.
1
+ # Release Notes - Mint Agent v1.15.0
2
+
3
+ - Applied workspace Rust formatting required by CI and fixed the browser transport test's handling of empty reads so Clippy passes its I/O check.
4
+ - Updated brace-expansion, qs, and DOMPurify dependency resolutions to patched versions; raised the brace-expansion override minimum to 5.0.12.
5
+
6
+ - Added the active model's thinking level to the Full-Screen TUI footer, including an `off` indicator when thinking is disabled.
7
+
8
+ ## Mint Auto Browser Reliability
9
+
10
+ - Gemini Live voice sessions now keep one shared browser session across tool calls and spoken turns. Selected tabs, DOM references, screenshots, and recovery stops remain available until the voice task ends; ending the task releases tab leases, and a new voice session starts independently.
11
+ - Screenshot capture now retains DOM/layout snapshots from before and after the image. Coordinate validation checks only the intended target in both snapshots and retries a current capture once if that target changes. Continuously updating distant tickers and carousels no longer invalidate stable targets, while target replacement, movement, obstruction, and local pixel changes still prevent clicks.
12
+ - Coordinate hit tests now account for document scroll offsets, so a fresh screenshot taken after scrolling remains usable.
13
+ - Added headless Chrome regressions through the production Gemini Live background runner and agent executor for session continuity, recovery, screenshot reuse, lease release, and continuously changing unrelated DOM/layout.
14
+
15
+ - Fixed empty/default tab URLs to open `about:blank`; invalid supplied URLs are rejected before tab creation. Recovery stops now cover opening and closing tabs and survive tab selection.
16
+ - Browser retry counts follow the action and DOM target, so clocks, carousels, and refreshed references cannot hide ineffective retries. Navigation, new tabs, target value/checked/expanded changes, verified scrolling, and explicit confirmation waits establish progress for the relevant attempt.
17
+ - Typing and filling pin the original editable node and check focus after clicking and keyboard preparation. Focus redirects and replaced fields stop before text insertion or deletion.
18
+ - Coordinate input now validates screenshot target identity, geometry, current hit testing, and a 64×64 pixel region, including another check after hover. Distant page updates remain allowed; Mint cursor/aura overlays are excluded from evidence.
19
+ - Added isolated headless Chrome regression coverage through real agent argument parsing and tool execution for tab defaults, recovery, changing pages, redirected focus, shadow inputs, replaced targets, modals, hover overlays, and canvas changes.
20
+
21
+ - Browser agent runs now use dedicated tabs with pinned CDP targeting and exclusive tab leases across Mint processes. Popup tabs are reported for explicit selection; closed tabs fail instead of silently switching pages.
22
+ - Added structured browser observations with accessible element names, fresh DOM references, open shadow-root discovery, pagination, password-value masking, and explicit unsupported-frame counts.
23
+ - Added browser tab management, verified field replacement, native dropdown selection, scrolling, and bounded waits for URL, text, and element visibility conditions. Existing plain-text reads and selector arguments remain supported.
24
+ - Browser clicks now scroll targets into view and reject hidden, disabled, or covered elements. Removed the JavaScript click fallback; CDP errors, script exceptions, navigation failures, and stalled responses no longer count as successful input.
25
+ - Browser actions return page observations and distinguish dispatched input from verified outcomes. Repeated attempts without progress stop for manual takeover, and browser task completion requires a verification statement. Coordinate actions require a recent screenshot from the selected tab.
26
+ - Desktop browser commands accept optional tab IDs. Browser launch, tool availability, and CLI status honor the configured debugging endpoint. Browser typing logs contain character counts instead of field contents.
27
+ - Added unit checks and opt-in headless Chrome acceptance scenarios for forms, search, delayed content, popups, stale references, tab isolation, takeover, and recovery.
28
+
29
+ ## Sidebar Projects
30
+
31
+ - Added a three-dot menu to each project in the sidebar. New chat actions are available from the menu, and projects can be removed from the sidebar without deleting their conversations; those conversations move to Recents.
32
+ - Moved conversation rename, move, and delete actions into a three-dot menu in both project lists and Recents.
33
+
34
+ ## Linked Folders
35
+
36
+ - Linked folders now index supported files in nested directories and use relevant excerpts to decide where to save useful chat notes. The index refreshes on link, periodically during note processing, or with `/link refresh <name>`.
37
+ - Added `/link save <name> | <text>` and `/link notes <name>` across CLI, Desktop, and Web. A single turn can save separate notes in multiple relevant folders.
38
+ - Notes receive unique IDs and are appended under a cross-process file lock. A SQLite job and note ledger records pending, saved, skipped, and failed work and allows interrupted work to resume.
39
+ - The Linked Folders view shows index status, recent notes, errors, and note previews. Desktop can open the source note file; Web previews it in the app and can copy its path.
40
+
41
+ ## Opaque Chat Surfaces
42
+
43
+ - Made source cards, their links popover, and markdown callouts use solid theme surfaces when Opaque is selected, while keeping their translucent treatment in Glassmorphism mode.
44
+ - Raised an open source-links popover above later chat messages so callout text and backgrounds do not overlap its links.
45
+ - Removed the remaining fixed blur on chat headers and rich grid cards while Opaque mode is active.
46
+
47
+ ## Consistent Provider Model Lists
48
+
49
+ - Made CLI, Desktop, and Web use the same Rust model-list fallback policy. When a provider responds, its model IDs are shown as returned; static presets are used only if the fetch fails. Desktop and Web no longer append separate frontend presets, and their initial DeepSeek options match the Rust fallback, so models absent from the provider response no longer appear only in the app picker.
50
+ - Reused the fetched provider lists in the Desktop and Web Agents settings model picker, so its Gemini, Anthropic, OpenAI, OpenRouter, DeepSeek, and local model choices follow the main picker.
51
+
52
+ ## Monochrome Theme Contrast
53
+
54
+ - Corrected text and icon contrast on accent-filled controls in Skills, MCP management, Image Studio, Veo Studio, chat, and Settings. These controls now use the theme's text-on-accent color, including selected, hovered, and disabled states.
55
+ - Made the custom checkbox checkmark follow the same contrast token and fixed selected sidebar items and light-theme management hover text.
56
+
57
+ ## Live Translate
58
+
59
+ - Rebuilt the Desktop live translation picker as a transparent overlay: select a screen region, choose a target language (including a custom language), and read the translated text over the selected area.
60
+ - Live translation now samples only the selected region, checks for meaningful visual changes, and sends a new request only when the region changes. Sampling pauses cleanly when the user pauses, changes area or language, or closes the picker.
61
+ - The selected target language is remembered between sessions. Mint stays hidden while the live overlay is open so it does not cover the app being translated, then reappears when the overlay closes.
62
+ - Passed the initial screen preview through Tauri's in-memory handoff instead of browser localStorage, avoiding storage limits for large screenshots.
63
+
64
+ ## Manual Screen Capture
65
+
66
+ - Rebuilt the Desktop and Web manual screen capture flow around a shared review dialog: capture, select an area or full image, retake, and explicitly attach to chat.
67
+ - Fixed the Web capture button, which previously called a no-op adapter. Web now requests browser screen sharing and shows capture errors in the dialog; Desktop uses native capture on Linux and browser screen sharing on other systems. Native capture briefly hides Mint to avoid capturing its own window.
68
+ - Replaced the ambiguous eye button icon with a screen capture icon and kept captured images out of the conversation until the user attaches them.
69
+ - Kept the existing Desktop live translation picker reachable from the new capture dialog.
70
+ - Prevented native capture retries from reading a stale screenshot left by an earlier failed command.
71
+ - Fixed screen capture button text contrast in the Dark Monochrome theme, including the disabled Attach to chat state.
72
+
73
+ ## Chat Composer Controls
74
+
75
+ - Removed the inactive Smart Context Auto-Screen toggle from Desktop and Web chat. Manual screen capture and the Agent/Plan mode controls remain available.
76
+ - Removed the dormant Proactive Assistant screen-capture interval and suggestion-cooldown controls from Desktop and Web Settings; existing saved config values remain intact.
77
+
78
+ ## Mint Persona
79
+
80
+ - Made Mint's female persona explicit in the shared system prompt used by chat and agent modes across CLI, Desktop, and Web. Mint now follows the user's current language or an explicitly requested language instead of defaulting to Thai; Thai feminine polite particles apply only to Thai replies.
81
+ - Removed Thai/English-only Web Search text appended after agent answers, so the model can explain search results and failures in the user's language without a mismatched-language suffix.
82
+ - Identified Mint explicitly as an AI coding agent in both native-tool and JSON-action agent prompts, while keeping plain chat as a general AI assistant and allowing non-coding tasks in Agent mode.
83
+
84
+ ## Web Search Image Navigation
85
+
86
+ - Linked Web Search thumbnails to their actual result pages using the image and page URLs paired in agent progress, with a separate “View full image” link for opening the image file. The same rendering applies to Desktop and Web, including live replies and chat history.
87
+ - Added a separate “View full image” link to Image Search tiles while keeping a click on the thumbnail directed to its source page. CLI search results continue to show both URLs in text.
88
+ - Made both “View full image” links use the theme's interactive text color; the Image Search link background also follows the active surface theme.
89
+
90
+ ## Shared Conversation Turns
91
+
92
+ - Sent prompts now enter the shared session immediately; the same turn receives the complete reply when it finishes. TUI, Web, and Desktop show queued, running, failed, and interrupted turns.
93
+ - Turns submitted to the same session run in order across processes. A short lease marks abandoned work interrupted and lets later turns continue.
94
+ - Added a change feed and paged snapshots for cross-surface updates. The TUI redraws when shared content changes, while Web and Desktop refresh the active conversation and session list and can load older messages.
95
+ - Web and Desktop receive the persisted turn ID as soon as a response starts, so their live reply is matched to the shared turn without showing a duplicate prompt or answer.
96
+ - Kept late replies and history loads from an earlier session out of the currently open chat, attached agent activity by persisted turn ID, and preserved identical prompts from other surfaces while a local reply is pending.
97
+ - Redrew the Full-Screen TUI once when a timed notice expires, so it disappears even while the terminal is idle.
98
+ - Made the conversation snapshot and change cursor authoritative for Web/Desktop history loads, preventing an older request for the same session from replacing newer turns.
99
+ - Kept tool approvals associated with their originating chat across session switches; returning to that chat restores its approval card, including for Desktop approval events.
100
+ - Preserved the chronological order of tool activity cards, timeline notes, and turn completion summaries in the Full-Screen TUI by switching live sync to an incremental feed that appends incoming external turns without wiping local in-memory transcripts or displacing notices to the bottom.
101
+ - Advanced the CLI's shared conversation cursor and interaction ID immediately upon local turn completion, preventing idle sync checks from treating a completed local turn as an external change.
102
+ - Fixed scoped session ID resolution in the TUI live sync poller so workspace-scoped conversations query their matching change sequences.
103
+ - Persisted agent activity timelines (tool execution cards, file changes/diffs, extended thinking, and run telemetry) directly from the engine level (`TurnLease`) into SQLite upon turn completion, failure, or interruption, establishing full cross-surface visibility across CLI, Desktop, and Web.
104
+ - Enabled real-time merging of agent activity snapshots during live conversation polling on Web and Desktop, dynamically rendering tool cards, file diffs, and thinking blocks for CLI/TUI turns without requiring a manual page reload.
105
+
106
+ ## Shared Terminal Color Palette
107
+
108
+ - Centralized terminal and TUI colors in `terminal_theme.rs` and consolidated similar accent colors into Mint green, with shared blue, text, muted, warning, error, selection, and panel tokens.
109
+ - Kept code syntax highlighting on its dedicated theme so language tokens remain distinguishable.
110
+ - Restored the original four-line `Mint` ASCII wordmark in the Full-Screen TUI header, styled with the shared palette.
111
+ - Restored the animated white shimmer on the TUI thinking status, with its dim and bright endpoints defined in the shared palette.
112
+ - Corrected transcript scrollbar position mapping so the thumb reaches both ends of its track.
113
+
114
+ ## Private Mobile Web Access with Tailscale
115
+
116
+ - Added opt-in `mint web --tailscale` to serve the production Web UI over a private Tailscale HTTPS URL suitable for installing the existing PWA on a phone.
117
+ - Bound the Web UI and API to localhost in this mode, checked for an existing Serve configuration before starting, and tied the Serve session to the Mint command. Normal `mint web` behavior is unchanged.
118
+ - Documented Tailscale, HTTPS, production build, and mobile installation requirements.
119
+ - Added a separate English setup and usage guide in `docs/MOBILE_PWA_TAILSCALE.md`.
120
+
121
+ ## Interactive CLI Mode Switching
122
+
123
+ - Refreshed `/resume` in Classic CLI and Full-Screen TUI with compact one-line session rows, search, project/branch filters, Updated/Created sorting, and a restrained monochrome palette. Both views mark the current session.
124
+ - Added a clickable "↓ Back to bottom" button to the full-screen TUI transcript. It appears only while the transcript is scrolled above the latest message, disappears at the bottom, and keeps `End` available for the same action while typing or waiting for an agent turn.
125
+ - Added `$` skill and `@` mention suggestions to the full-screen TUI composer. Up/Down selects a match and Tab completes it; `@` completion replaces only the word at the cursor, including mentions within a sentence. The existing Enter submission behavior remains available.
126
+ - Press F6 at the prompt to choose whether to switch between the full-screen TUI and Classic CLI without ending the current session. The default choice keeps the current interface; an unfinished prompt is preserved whether the switch is confirmed or cancelled.
127
+ - Fixed TUI choice dialogs clipping the last option when their description spans several lines. Dialogs now use the available terminal height to show every choice that fits, including three-option approvals and lists longer than eight choices.
128
+ - Choice dialogs now measure wrapped command text at the current terminal width and reserve a footer row below the options, so approval choices remain visible in narrower terminal windows.
129
+ - Kept live `run_shell` activity visible while parallel tools are active: a thought from another tool no longer commits the in-flight status, and TUI tool-start events are retained during approval dialogs.
130
+ - Kept completed shell-command labels visible while Mint prepares its reply: the eight-row TUI live-status area now omits long stdout/stderr previews, which remain available in the completed turn's transcript.
131
+
132
+ ## Full-Screen Interactive Chat TUI (Complete Default Interface)
133
+
134
+ - **Native-Feeling TUI Mouse Selection**: Added Mint-managed click-drag selection across the entire rendered TUI while preserving mouse-wheel transcript scrolling and physical `Up`/`Down` prompt-history navigation. Selected screen cells stay highlighted after mouse release and are copied with right-click, using the native system clipboard first with OSC52 fallback for terminal/remote sessions.
135
+ - **Markdown Table Rendering (TUI)**: Fixed tables showing as raw `| # | ไฟล์ | สถานะ |` / `|---|---|---|` in the TUI. `format_markdown_bold()` now detects consecutive `|...|` lines (using `is_table_line()`), buffers them, and flushes through `render_markdown_table()` — the same box-drawing Unicode renderer used in classic terminal mode. Tables at any position in the response (middle or end) are handled correctly. Code blocks containing `|`-separated content are exempt.
136
+
137
+ - **Status Line Color Refinement**: Improved visual hierarchy of live status lines and agent timeline notes.
138
+ - **Tree branch connector `└`**: Styled in `DarkGray` (dim) — fades into the background as a subtle structural guide.
139
+ - **Tool action text** (`[read_file] Read file.rs #L1-50`, etc.): Styled in **Plain White** (`Color::White`) without bold styling — clean, readable, and perfectly balanced with the dim branch connector.
140
+ - **Short Thoughts & Timeline Notes**: Step-by-step thinking notes (e.g. intermediate thought records) now render in **Plain White** (`Color::White`) instead of dim gray, keeping AI notes clean and clearly legible across TUI transcript and live status.
141
+ - Applied consistently across both **TUI mode** and **classic terminal mode**.
142
+ - **Thinking Line Shimmer Animation**: The `Pondering (5s · …)` / `Thinking…` status line renders with a smooth left-to-right shimmer effect in TUI mode. Each character is individually colored: the bright spot (full **#ffffff** white) sweeps from left to right across the verb text, fading to a dim gray at the trailing edge. The animation is driven by wall-clock time (≈12 fps), independent of the render loop speed. The timer suffix `(elapsed · Esc)` remains in dim gray and does not participate in the shimmer.
143
+ - **Turn Completion Summary & Token Statistics (`Worked for`)**: Restored the turn completion footer in full-screen TUI mode. After every turn, a styled rule (`─ Worked for 1.2s • ↑ 1.5k · ↓ 42 • anthropic • claude-3-5-sonnet ──────`) displays elapsed seconds, input tokens (`↑`), generated tokens (`↓`), and provider/model information directly beneath the assistant's response. Fallback providers and reasons are clearly noted if a fallback occurred.
144
+ - **Tool Activity Summary & Layout Alignment**:
145
+ - **Active Tool Spinner & Real-Time Elapsed Timer**: The tool currently in flight now features an animated Braille spinner (`⠋ ⠙ ⠹ ...` in bold `Cyan`) and a live elapsed timer (`(1.8s)`) directly on the command line. Users get immediate feedback that a command is running without feeling frozen.
146
+ - **Completed Tool Checkmarks (`✓`)**: Tools that have completed execution render with a crisp Mint Green checkmark (`✓` in `#69e6a6`), cleanly distinguishing finished actions from in-flight ones. Once committed to history, all executed actions retain the `✓` badge.
147
+ - **Eliminated Generic `● activity` Fallback**: Expanded `activity_summary_line` to count all tool operations (editing files with `write_file`/`apply_patch`, git checks, background shell jobs, subagents, etc.). Fallbacks now display meaningful action counts (e.g. `Running 1 tool…` or `Editing 1 file…`) instead of the bare word `activity`.
148
+ - **Single Tree Branch Connector**: All child tool actions under an activity group now share a single ` └` tree connector on the first item, with subsequent items cleanly indented by 6 spaces (` [tool] ...`) rather than restarting multiple disconnected `└` branches.
149
+ - **Bullet & Continuation Styling**: Activity bullets (`●` / `○`) highlight in bold `Cyan`, header text in bold `White`, continuation tool lines in plain unbolded `White`, and the commit divider line (`───`) is aligned with a 2-space margin to match the activity indentation.
150
+ - **Dynamic Status Viewport**: Increased status height clamp to 8 lines and automatically displays the tail of status lines so the active tool and thinking/deliberating spinner are never clipped at the bottom.
151
+ - **Numbered Image Placeholders (`[Image #1]`, `[Image #2]`)**: Pasting images (`Ctrl+V`) into the TUI composer now sequentially numbers attached images (`[Image #1]`, `[Image #2]`, etc.) matching the classic CLI behavior. All image and pasted-text placeholders are styled with a bold Cyan badge in the input composer.
152
+ - **Auto-Dismissing Footer Notices (2.5s)**: Temporary status bar notices (`Image attached`, `Image saved to gallery (filename)`, `Transcript copied with OSC52`, `No image found in clipboard`, etc.) automatically expire after 2.5 seconds, cleanly restoring the default workspace and agent model info bar (`[Agent] <model> path: <workspace>`). Notices are also dismissed immediately as soon as the user starts typing in the prompt composer. Eliminates raw stdout `Saved image: ...` bleeding into the prompt composer (`› `). Undersized terminal warnings (`Terminal too small`) persist until the terminal window is resized.
153
+ - **Docked Thought Process Panel (`Ctrl+T`)**: Relocated the Thought Process modal from floating in the dead center of the screen to a docked bottom panel (sharing the layout mechanism with the `/model` dialog). The chat transcript remains fully visible in the top area while viewing thought traces. Supports keyboard navigation (`↑`/`↓`/`PgUp`/`PgDn`), mouse wheel scrolling, and quick close (`Esc`, `Enter`, `q`, or `Ctrl+T`).
154
+
155
+ - **Default Full-Screen Interface**: Made Ratatui the complete, default interface for interactive `mint` sessions, keeping the entire workflow inside the terminal alternate screen. Retained `--tui` for compatibility and `--classic` (plus automatic fallback on non-TTY or undersized terminals `< 60x12`).
156
+ - **Eliminated Terminal Suspensions**: Completely removed `terminal.suspend()` and deleted the disruptive `"Press Enter to return to Mint TUI"` prompt. All interactions remain inside the TUI session from start to finish.
157
+ - **Unified `CommandUi` Abstraction**: Routed all slash commands (`/branch`, `/resume`, `/palette`, `/mcp`, `/plan`, `/fast`, `/clear`, `/jobs`, `/shells`, `/stats`, etc.) and `$skill` execution through a unified `CommandUi` trait. Interactive prompts, confirmations, and selections render as native, centered Ratatui modal dialogs with arrow-key navigation, numeric shortcuts (`1`–`9`), viewport scrolling, and type-to-filter support.
158
+ - **Clean Startup & Session Picker**: Eliminated raw stdout banner pollution prior to alternate screen initialization. Running `mint -r` (no ID) now launches the interactive session picker directly within an alternate-screen modal dialog, seamlessly switching sessions and re-populating the transcript.
159
+ - **Enhanced Transcript & Roles**: Added styled roles for command outputs (`Command ›` in magenta) and system notices (`System ›` in yellow), providing clear visual separation between user prompts, agent turns, tool activities, and command results.
160
+ - **Parity Across Interfaces**: Verified full feature consistency across CLI (`crates/mint-cli`), Desktop (`src/renderer/src`), and Web (`src/renderer/src-web`), maintaining parity in workspace diffing, branching, session management, and MCP configurations.
161
+
162
+ ## Real Git Workspace Diff and Code Review
163
+
164
+ - Implemented real Git workspace diffing across CLI, Desktop, and Web using `git diff -U3 HEAD` and `git status --porcelain` to detect uncommitted, staged, and untracked file changes.
165
+ - Removed mock and sample diffs entirely; Code Review now inspects actual files within the active workspace.
166
+ - Added working tree scope toggling between `Workspace Git` (all project-level repository changes) and `AI Edits` (edits accumulated during the current chat session).
167
+ - Integrated live branch switching via `GitBranchSelector` in the review header, allowing users to view and switch branches directly.
168
+ - Added clean working tree detection with a refresh action when no uncommitted changes exist.
169
+
170
+ ## Sidebar Workspace Projects and Session Organization
171
+
172
+ - Grouped conversations into collapsible project workspace folders under **Projects**, with unassigned chats organized under **Recents**.
173
+ - **Stable Project Order**: Eliminated project list jumping when selecting conversations; project order remains deterministic.
174
+ - **Drag-to-Reorder**: Added drag-and-drop reordering for project folders with smooth visual indicators, persisted to `localStorage` (`mint_project_order`).
175
+ - **Unified Smooth Scrolling**: Enabled full-height scrolling on `.sidebar-section`, ensuring `Code`, `Projects`, and `Recents` scroll together smoothly without being cut off behind the bottom account footer.
176
+ - **Recents Stability**: Conversations in Recents strictly remain in Recents when viewed or active, avoiding unintentional auto-linking to projects.
177
+ - **Move Conversation Popover**: Added an inline move action to easily transfer chat sessions between Projects or back to Recents.
178
+ - **Inline Project Chat Creation**: Added a `+` button on hover for each project folder in the sidebar to create new chats directly scoped to that project.
179
+ - **Project Context Indicators**: Added a subtle `📁 ProjectName` badge in the chat header and empty chat welcome screen across both Desktop and Web to clearly indicate the active project context.
180
+
181
+ ## README Positioning
182
+
183
+ - Reworked the top of the README around the primary use case: assigning coding tasks from Telegram or other messaging apps while Mint runs locally, verifies changes, and requests approval before risky actions.
184
+ - Added a concrete interaction example, focused value proposition, quick-start commands, and a short description of the intended audience.
185
+
186
+ ## Installation
187
+
188
+ - Added SHA-256 checksum assets for standalone CLI release binaries.
189
+ - Updated `install.sh` and `install.ps1` to install a matching verified prebuilt CLI binary first, with automatic fallback to the existing source-based npm installation when no matching release asset exists.
190
+ - Added `MINT_SOURCE_INSTALL=1` to force the source-install fallback when needed.
191
+
192
+ ## Community and Contributions
193
+
194
+ - Added a public roadmap covering near-term installation, onboarding, messaging, contributor, and platform priorities.
195
+ - Added `CONTRIBUTING.md` with setup, validation, issue, good-first-issue, and pull-request guidance.
196
+ - Added GitHub issue and discussion templates plus links from the README to the project community resources.
197
+
198
+ ## Tool Surface Tabs & Modernized Terminal UI
199
+
200
+ - **Unified Single Header**: Removed the duplicate inner terminal header (`.terminal-dock-header`); path, active cwd badge (`~/.../folder`), and window controls are now seamlessly unified into the topmost Tab Bar.
201
+ - **Inline `+` New Terminal Tab**: Added a dedicated `+` button directly after the tabs to open additional terminal sessions quickly.
202
+ - **Project-Scoped Tab Titles**: Terminal tabs now clearly display the active project/folder name (e.g., `>_ Mint-CLI`, `>_ Mint-CLI (2)`) along with a modern SVG prompt icon (`>_`).
203
+ - **Maximize & Split Toggle (`⤢`)**: Added a maximize/restore button in the header actions allowing instant expansion across the full workspace or collapsing back to the split side view, with automatic `xterm` terminal re-fitting via `ResizeObserver`.
204
+ - Removed the legacy Terminal/Browser dropdown from the chat header; desktop tools are now opened through the Apps launcher and right-side tool panel.
205
+ - Added a draggable resize handle to the Apps/tool panel, with the selected width persisted for the next opening.
206
+ - Changed the active tool switcher into a working floating menu that opens Review, Terminal, Browser, Files, or Side chat without leaving the current tool page.
207
+ - Removed the horizontal bottom-docked Terminal layout; Terminal now opens only as a resizable right-side tool page.
208
+ - Fixed the Switch tools button being blocked by the active Terminal surface; the tool header now stays above Terminal content for reliable clicks.
209
+ - Fixed the Apps launcher button being pushed onto a second titlebar row by the titlebar grid; it now stays in the main toolbar and opens the Tools panel correctly.
210
+ - Removed the redundant Open tools launcher button; Open tools panel is now the single titlebar control for the Tools surface.
211
+ - Fixed the Switch tools menu being hidden behind the active Terminal surface; the tool header now renders above Terminal content.
212
+ - Improved Browser surfaces with loading/error states, Home and Stop controls, clearer external-browser fallback, persistent per-tab history while switching tools, same-surface iframe navigation, and Duplicate/Rename/Close-other tab actions.
213
+ - Replaced the Browser address bar's text `Go` action with a compact arrow icon while preserving Enter-to-navigate behavior.
214
+ - Changed the Apps Browser action to open the native Tauri Mint Browser window, allowing sites such as Google and YouTube to run with normal cookies, JavaScript, navigation, and login behavior.
215
+ - Added a native Mint Browser toolbar with URL input, Home, Back, Forward, Reload, and direct navigation through the embedded native page WebView.
216
+ - Refined the native Mint Browser shell with a browser-style tab row, full-width URL toolbar, active-site label, and functional tab close/new-tab controls.
217
+ - Fixed the native browser toolbar WebView overlapping the page WebView and leaving a black/blank tab area; the shell now occupies only its 92px toolbar region.
218
+ - Added browser-style URL autocomplete suggestions for web searches, domains, and direct addresses.
219
+ - Fixed URL suggestions being clipped or moving the toolbar below the page; the native layout now keeps the toolbar first and temporarily moves the page below the expanded suggestion area.
220
+ - Replaced the expanded browser suggestion area with a separate floating Tauri popup, keeping the page WebView fixed while suggestions open, update, and close independently.
221
+
222
+ - Fixed the native window Minimize, Maximize, and Close controls being pushed out of narrow titlebars after adding the Tools and Apps launcher buttons; window controls now stay pinned to the far-right edge.
223
+ - Restored a dedicated Apps launcher button in the desktop titlebar; it always opens the right-side tool launcher even after the panel has been collapsed.
224
+ - Added a visible collapse button inside the right-side Tools panel, including the empty launcher state, so the panel can be dismissed without reaching back to the titlebar.
225
+ - Replaced the tool dropdown with a right-side tool panel launcher; the titlebar Tools button opens the panel and presents Review, Terminal, Browser, Files, and Side chat as a vertical launcher before a surface is selected.
226
+ - Added Review, Files, and Side chat actions alongside Terminal and Browser; Review opens the current conversation-wide change set, Files returns to the workspace view, and Side chat returns to the conversation.
227
+ - Updated Review to aggregate code changes across the entire conversation instead of only the latest turn; repeated edits to the same file are combined into one review entry with accumulated additions, deletions, and hunks.
228
+ - Changed the Review surface to render every changed file in one scrollable conversation-wide diff, with the changed-file list on the right acting as an anchor navigator.
229
+ - Added a compact composer status pill for the current or latest Agent run: it shows files changed with green additions and red deletions, switches to a live editing state while work is running, and opens Review when clicked.
230
+ - Moved preview, code review, and desktop terminal into dedicated tool pages with a shared tab strip.
231
+ - Added per-tool close buttons and a close-all action so open tool pages can be removed without clearing chat history.
232
+ - Preserved terminal resizing and bottom/right layout controls inside the dedicated terminal page.
233
+ - Added a plus-menu beside the tool tabs for opening the existing Terminal and Browser actions.
234
+ - Terminal entries from the plus-menu now create independent terminal tabs and sessions, with numbered titles when more than one is open.
235
+ - Added embedded Browser surfaces with independent tabs, URL navigation, reload, and per-tab back/forward history.
236
+ - Deferred xterm and embedded-page initialization until after the surface header paints, reducing perceived lag when opening Terminal or Browser.
237
+ - Added an `Open in Mint Browser` fallback button for sites that refuse embedded previews.
238
+ - Fixed the Terminal orientation control so it actually switches the terminal surface between the right-side and bottom layouts.
239
+ - Fixed desktop minimize and maximize/restore controls by calling the Tauri window API directly and surfacing failures in the console.
240
+ - Added transparent edge and corner hit areas so the frameless desktop window can be resized by dragging its borders or corners.
241
+ - Reduced chat-stream jank by batching automatic scrolls to one animation frame, skipping them while the user reads older messages, and throttling live Markdown rendering to 120 ms.
242
+ - Deferred loading workspace, tools, media studios, management views, and the command palette until each is opened, reducing the initial chat bundle and avoiding background effects from hidden panels.
243
+ - Split route-specific styles into their own lazy-loaded panels, so settings, media studios, pictures, spotlight, widget, and tool-surface CSS no longer block the initial chat UI.
244
+ - Reduced Live2D's idle renderer budget to 24 FPS, raising it only while the pointer is over the model and limiting pointer tracking to the model itself.
245
+ - Kept opened terminal tabs mounted while inactive so changing tabs preserves the existing shell process and scrollback instead of restarting them.
246
+ - Reduced chat and workspace background polling: refreshes now run only while the app is visible and focused, prevent overlapping reads, refresh immediately when returning to the app, and use a lighter 15-second chat / 30-second workspace cadence.
247
+ - Reduced initial font downloads by removing duplicated Google Fonts requests and cutting the self-hosted font bundle from 25 broad imports to Thai/Latin Prompt plus Latin/symbol Fira Code subsets; Prompt now covers the default Thai and Latin UI while Fira Code remains available for code and terminals.
248
+ - Split dashboard CSS from the app bootstrap for desktop and web: chat, sidebar, desktop tools, observability, model selector, and UI-card styles now load only with the lazy dashboard route, while page-specific panels retain their own CSS chunks.
249
+ - Fixed right-side terminal resizing so dragging its divider updates the outer tool surface and available chat width, not only the terminal's internal viewport.
250
+ - Increased chat density: the default UI scale is now 16px, conversation text and composer use 16px, code blocks use 13px, and message metadata uses a compact 12.5px-equivalent scale. Existing 18px default settings migrate once to the new 16px default; any size selected afterward is retained. The typography controls now clearly identify Compact, Default, and larger sizes.
251
+ - Fixed chat-panel overflow from agent telemetry and tool activity: activity cards, KPI summaries, and timeline labels now shrink, truncate, or wrap within the available panel width, and the chat container no longer exposes a page-level horizontal scrollbar.
252
+ - Changed the default surface style to Opaque for clearer text and lower compositing cost; Glassmorphism remains available, with selectable blur intensity, in Theme Settings.
253
+ - Separate desktop launch modes: `npm run dev` keeps the Tauri/Vite development session with HMR, while `npm start` opens the local production binary without leaving Vite running (building only when that binary does not exist); `npm run start:rebuild` explicitly refreshes it.
254
+ - Fixed web tool actions: Browser now opens the requested URL in a real browser tab, Preview and Review use the chat split view, and the native-shell Terminal remains desktop-only instead of exposing an unusable web control.
255
+ - Fixed the web Browser launch menu losing its styling after the dashboard CSS split by loading its shared menu stylesheet in both the desktop and web bundles.
256
+ - Fixed web file-change cards falling back to unstyled Review controls by sharing the current summary, action, and list layout CSS between the desktop and web dashboards.
257
+ - Fixed the web full-page Review view rendering as raw HTML by loading its toolbar, diff, and changed-file-list styles from a shared dashboard stylesheet.
258
+ - Fixed the web Settings modal rendering without its layout or tab styles by bundling the settings base and tab styles with its lazy-loaded web component.
259
+ - Made code-review diffs semantic in Dark Monochrome: added lines and counts now use green success styling, while deleted lines and counts use red error styling instead of inheriting the white accent color.
260
+ - Applied the same green-added and red-deleted semantics to inline file-change previews in the normal chat timeline.
261
+ - Improved Dark Monochrome contrast across shared controls by separating interactive text/icon color from the white accent surface; primary actions remain white with dark labels, while accent-colored labels use zinc shades that remain readable on selected or light surfaces.
262
+
263
+ ## Desktop Terminal and Browser
264
+
265
+ - Added an interactive desktop terminal backed by a persistent pseudo-terminal session, with workspace-aware startup, live output, keyboard input, and terminal resizing.
266
+ - Added bottom/right terminal docking with a header control; Mint remembers the selected dock position across launches.
267
+ - Added drag and keyboard resizing for the terminal dock and persisted bottom height/right width separately. Switching workspaces restarts the terminal in the newly selected folder.
268
+ - Added a desktop tools menu for opening the terminal or launching a URL in a native Mint Browser window. Browser navigation is limited to HTTP and HTTPS pages and does not receive Mint's Tauri IPC access.
269
+
270
+ ## Agent Reply Completion and CLI Rendering
271
+
272
+ - Wait for the authoritative completed Agent response before displaying assistant text across CLI, Desktop, and Web, while tool activity and working status remain live.
273
+ - Added the native `finish` tool and require Agent mode to put its final response in `finish.summary`, ensuring every surface renders the same complete answer.
274
+ - Render complete Markdown documents in the CLI so long paragraphs, tables, and rich option cards are not split at provider chunk boundaries.
275
+ - Render Markdown tables through the CLI terminal-table renderer instead of showing raw pipe-delimited source.
276
+ - Measure final CLI scrollback with Ratatui's actual Unicode-aware wrapping before insertion, preventing Thai text, emoji, and rich option cards from clipping the end of a complete response.
277
+ - Removed the redundant CLI `Verification:` footer; verification remains part of the internal agent result while relevant test outcomes and limitations stay in the main response.
278
+ - Print collected web sources after the completed response.
279
+ - Added a consistent two-column left margin to CLI progress notes, including wrapped Thai text, so live activity no longer touches the terminal edge.
280
+ - Replaced the verbose CLI Agent Run card and duplicated tool timeline with a one-line completion summary; changed files and failed tools appear only when relevant.
281
+ - Made terminal-table width tests deterministic by injecting an explicit width while production rendering continues to use the live terminal size.
282
+
283
+ ## JSON Card Parsing
284
+
285
+ - Recover all JSON-backed chat cards (weather, stock, calculation, image, UI grid, feature, and mockup) when a simple field is accidentally emitted outside its object; unrelated malformed JSON still falls back safely rather than being guessed at.
286
+ - Strengthened card-generation instructions and added regression coverage for the malformed three-option payload and detached scalar fields.
287
+
288
+ ## Assistant Presence Widget
289
+
290
+ - Made the floating assistant open the main chat when clicked and added a hover-only control that turns Assistant Presence off.
291
+ - Fixed widget dragging by starting Tauri's native drag from the mouse-down event and granting the widget window the required permission; clicking still opens chat.
292
+ - Persisted the Assistant Presence toggle immediately, so its enabled/disabled state survives closing Settings and restarting Mint.
293
+
294
+ ## Model Provider Icons
295
+
296
+ - Added bundled brand logos for supported AI providers beside models in the selector, with larger logos in group headings and the detail pane. Providers without a dedicated logo keep the generic fallback icon.
297
+ - Fixed monochrome logos rendering black on the dark selector by using available color variants and provider-colored masks for monochrome marks.
298
+ - Reused the same provider brand logos in General settings' AI provider cards.
299
+ - Added optional custom-provider logos in General settings. PNG, JPEG, and WebP files up to 256 KB are saved in configuration and shown in the provider card and model selector.
300
+ - Fixed logos disappearing after save in the web settings flow by preserving the logo data URL through backend config serialization.
301
+ - Refresh the chat's provider configuration and availability immediately after web settings are saved, so custom providers and models appear without reloading the page.
302
+
303
+ ## Skills List Descriptions
304
+
305
+ - Replaced YAML frontmatter separators in skill list previews with each skill's description, falling back to the first content line when no description exists.
306
+
307
+ ## Empty Chat Welcome Alignment
308
+
309
+ - Centered the empty-chat welcome message above the composer on desktop while keeping the composer anchored at the bottom.
310
+ - Centered the web empty-chat welcome message in the main workspace while keeping the composer anchored at the bottom.
311
+
312
+ ## Workspace Chat Width
313
+
314
+ - Let chat messages use the available pane width when Workspace and Chat are open together, instead of keeping the standalone chat's 620px message limit.
315
+
316
+ ## Workspace Opening Motion
317
+
318
+ - Smoothed the Workspace transition by keeping grid tracks interpolable, fading the Live2D stage out instead of removing it instantly, and animating the file panel's entrance; respects reduced-motion settings.
319
+
320
+ ## Image Studio Send-to-Chat Draft
321
+
322
+ - Changed Image Studio's Send to chat action to attach the selected full-size image to Chat input and keep its prompt editable as a draft; it no longer only fills text or sends automatically.
323
+
324
+ ## Sentence-Case UI Copy
325
+
326
+ - Standardized English interface copy across Desktop and Web to sentence case, removing forced all-caps/capitalize styling and adjusting common navigation, settings, workspace, gallery, and action labels while preserving product names, acronyms, and model identifiers.
327
+
328
+ ## Image Studio Sentence-Case Copy
329
+
330
+ - Removed forced uppercase styling from Image Studio labels and provider badges, and standardized visible actions and section titles to sentence case with clearer image-upload wording.
331
+
332
+ ## Skills Workspace Scope Labels
333
+
334
+ - Fixed Skills and Plugins views labeling workspace skill files as Global by recognizing Tauri's `location` field as well as the Web API's `is_workspace` flag.
335
+
336
+ ## Image Studio Gallery Image Loading
337
+
338
+ - Fixed saved image thumbnails failing to load in the desktop gallery by preferring the filesystem thumbnail path over the `file://` URL when converting image sources for Tauri.
339
+ - Added a one-time fallback to the original image when a saved thumbnail cannot be loaded.
340
+
341
+ ## Desktop Workspace File Explorer UI
342
+
343
+ - Rebuilt the missing Workspace stylesheet as a compact desktop file explorer with a clear header, flat action toolbar, sticky project root, correctly sized material file icons, and dense scannable tree rows.
344
+ - Restored the intended two-pane Workspace layout with the file explorer on the left and chat composer on the right, while hiding the Live2D stage and preventing empty-chat positioning rules from overlaying the full workspace.
345
+ - Reworked the workspace selector from a prominent accent card into a compact project-context row integrated with the composer, using neutral surfaces and restrained hover/focus feedback while preserving folder selection and full-path tooltips.
346
+ - Added a compact Local Branch selector beside the active workspace, including branch search, current and detached-HEAD states, dirty-worktree warnings, safe Git switching, and immediate workspace-tree refresh after a successful switch.
347
+ - Extended the Branch selector with create-and-switch, locally known remote tracking branches, and an in-place Git graph showing the latest decorated repository history without performing an implicit network fetch.
348
+ - Replaced decorative gradients, glow effects, elevated cards, and AI-style status capsules with restrained surfaces, structural dividers, typography, and a small state indicator suited to a developer tool.
349
+ - Added keyboard focus treatments, disabled and active control states, long-name truncation, contained scrolling, narrow-window adjustments, reduced-motion behavior, and forced-colors support.
350
+ - Preserved the existing workspace file creation, folder creation, refresh, drag-to-mention, expand/collapse, delete, and automatic refresh behavior without changing component logic.
351
+ - Bound workspace mutations to an explicit workspace root and relative path, rejected traversal and symlink escapes, and carried the workspace revision through consecutive file operations.
352
+ - Unified workspace reads and mutations around `{ root, relativePath, revision }`; every operation now returns a complete snapshot containing the canonical root, tree, Git state, and revision.
353
+ - Added grouped renderer platform seams for authentication, conversations, catalogs, media, runtime capabilities, and workspaces, removing direct runtime-adapter imports from shared UI modules.
354
+ - Replaced generic conversation field setters with semantic transitions for composing, attachments, workspace selection, run lifecycle, streaming, progress, approvals, cancellation, and session switching.
355
+ - Added interface tests for Git branch outcomes, Workspace containment and revisions, renderer platform routing, and conversation transitions.
356
+ - Restored immediate Workspace snapshot refresh after branch changes, removed stale polling revisions, strengthened typed platform dispatch, and included interface tests in the default test command.
357
+
358
+ ## Git Branches in CLI & Desktop
359
+
360
+ - Moved shared branch inspection and switching into `mint-core`, then added `mint git status|list|switch|create|track|graph` so CLI and Desktop follow the same branch, dirty-worktree, and remote-tracking rules.
361
+ - Added the current Git branch beside the workspace path in the interactive CLI prompt, `/cd` update, session stats, and exit summary.
362
+ - Added the CLI-only `/branch` slash command with an interactive local/remote branch picker, direct `/branch <name>` switching, and dirty-worktree confirmation.
363
+ - Preserved the semantic Git branch-change outcome through Tauri so Desktop requests dirty-worktree confirmation only after `mint-core` returns `confirmation_required`.
364
+
365
+ ## Desktop Empty Chat Layout & Workspace Selector
366
+
367
+ - Fixed the empty-chat header so the Mint Agent identity and conversation actions stay anchored at the top of the workspace instead of moving into the centered composer area, including Tauri's WebKitGTK renderer where an inline positioned wrapper previously made the header follow the centered chat column.
368
+ - Rebuilt the desktop workspace picker as a full-width project-context control with the selected folder name, clear Choose/Change action, long-path tooltip, keyboard focus treatment, and light/dark theme support.
369
+ - Preserved the native folder picker and existing workspace-switch behavior while making the control visible in both empty and active chats.
370
+ - Constrained the desktop chat, workspace context, and composer to a centered 1100px content rail with responsive side gutters, preventing active conversations from touching the workspace edges.
371
+ - Kept active-chat headers aligned with the New Chat header by pinning the chat wrapper to the first workspace grid row when the Live2D model is hidden.
372
+ - Made the hidden-Live2D desktop chat wrapper a full-height layer anchored directly to the workspace bounds, giving Active Chat and New Chat one stable containing block so the composer remains visible and the message area fills the window consistently in WebKitGTK.
373
+ - Anchored the New Chat welcome/composer group above the footer instead of relying on WebKitGTK's inconsistent percentage-based vertical centering, keeping the complete composer visible at desktop window heights.
374
+
375
+ ## Live Thought Streaming (CLI, Desktop & Web)
376
+
377
+ - Agent reasoning now appears incrementally while supported models are still thinking, instead of waiting for the entire provider response to finish.
378
+ - Added a provider-neutral reasoning stream that preserves native tool calls, token usage, stop reasons, Gemini thought signatures, and `<think>` blocks split across network chunks.
379
+ - Desktop and Web merge deltas into one live Thought card, throttle rendering to 75ms, show elapsed time and a streaming cursor, and persist only the completed Thought rather than every transport chunk.
380
+ - CLI updates the `Ctrl+T` Thought viewer live while keeping terminal scrollback compact, then finalizes the existing record without duplicating it.
381
+ - Providers that do not emit reasoning deltas retain the previous completed-Thought fallback behavior.
382
+
383
+ ## Light Mint Theme Contrast & Clarity Overhaul (Desktop & Web UI)
384
+
385
+ Refined the **Light Mint** theme palette across Desktop and Web to eliminate blinding flat white surfaces and washed-out elements:
386
+ - **Soft Slate Canvas (`#f0f2f5`) & Crisp White Cards**: Replaced the glaring near-white canvas (`#f8fafc`) with a soothing soft slate tone, creating immediate card elevation and depth between the canvas, sidebar, floating header, and chat input.
387
+ - **High-Contrast Slate Typography**: Upgraded text tokens from flat black and washed-out grays to a rich slate scale (`--text-primary: #0f172a`, `--text-secondary: #334155`, `--text-muted: #475569`, `--placeholder: #64748b`), ensuring crisp, effortless readability for all labels, placeholders, and subtitles.
388
+ - **Clearly Defined Component Boundaries**: Boosted border definition (`--border-subtle: rgba(15, 23, 42, 0.08)`, `--border-default: rgba(15, 23, 42, 0.14)`) so the sidebar divider, input card, and header are distinct.
389
+ - **Input & Control Polish**: Replaced hardcoded dark-mode white alpha values in the model selector pill, smart context bar labels, toggle switch tracks, and tool action buttons with adaptive semantic tokens for clean light mode contrast.
390
+ - **Settings Modal & Cards Overhaul**:
391
+ - **Zero Background Bleed-Through**: Rendered the modal container with a solid pure-white card and soft elevation drop shadow over a darkened blur scrim backdrop, preventing underlying chat text from bleeding through.
392
+ - **Unified & Polished Card System**: Eliminated mismatched muddy-slate backgrounds on Temperature and Thinking cards; all setting cards now share consistent, crisp `#f8fafc` soft-slate containers with refined slate borders (`1px solid rgba(15, 23, 42, 0.1)`).
393
+ - **Elevated Segmented Controls (`pill-segmented`)**: Upgraded provider selection and reasoning effort pills to modern iOS/macOS-style segmented controls featuring an elevated crisp white pill for the active selection and clear slate text for inactive options.
394
+ - **Readable Search & Navigation**: Upgraded the settings sidebar with high-contrast group labels, clean search input styling, and active tab highlights featuring mint accent icons.
395
+ - **Model Combobox Dropdown**: Restyled the searchable model picker in light mode with crisp white backgrounds, subtle slate borders, and readable search input.
396
+
397
+ ## Interactive Profile Photo Crop & Rotate Modal (Desktop & Web UI)
398
+
399
+ Added an interactive image editor modal when updating the user profile photo:
400
+ - **Pan & Position Adjustment with Edge Clamping**: Allows drag-to-reposition with mouse and touch gestures to frame the exact part of the image desired, with intelligent boundary constraints that prevent dragging past the edges of the image (eliminating empty black margins).
401
+ - **Smooth Zoom Control**: Intuitive zoom slider (minimum zoom locked to 1.0 to prevent gaps) with step buttons, mouse wheel zooming, and 2-finger pinch-to-zoom on touch screens.
402
+ - **90° Stepped Rotation**: Instant rotate button with clean icon to orient sideways or inverted photos correctly, automatically re-clamping coordinates.
403
+ - **Visual Circular Avatar Framing & Corner Brackets**: Renders a circular vignette guide with white corner brackets (`┌ ┐ └ ┘`) matching modern photo crop standards.
404
+ - **High-Resolution Canvas Export**: Automatically processes and renders the transformed image through an HTML5 canvas at 512×512 resolution before saving.
405
+
406
+ ## Floating Glass Capsule Chat Header (Desktop & Web UI)
407
+
408
+ Redesigned the top chat header across both Desktop and Web interfaces into a modern, aesthetic floating glass capsule (Island/Capsule design):
409
+ - **Floating Island Geometry & Glassmorphism**: Transformed the previously disconnected, flat rectangular header into an elegant floating capsule (`backdrop-filter: blur(20px) saturate(180%)`, rounded corners `border-radius: 14px`, sleek inner/outer border glows, and balanced top padding).
410
+ - **Contextual Conversation Title**: Displays the current conversation topic/title dynamically instead of an empty, redundant "Mint Agent" title, with automatic truncation and tooltip for long titles.
411
+ - **Clean Minimalist Balance**: Kept the floating capsule minimal and focused, avoiding artificial AI status badges to keep the conversation space calm and distraction-free.
412
+ - **Polished Glass Action Buttons**: Redesigned the clear conversation button and preview toggles with smooth micro-interactions, subtle glass backgrounds, and clean hover feedback.
413
+ - **Mobile Responsive Full-Width Integration**: Automatically transitions gracefully into a flush top navigation bar on screens under 760px without edge clipping.
414
+
415
+ ## Unified Agent Loop Timeline & Unboxed Chat Stream (CLI, Desktop & Web UI)
416
+
417
+ Overhauled the agent execution flow and timeline UI/UX across all 3 platforms (**CLI**, **Desktop UI**, and **Web UI**), aligning with modern developer assistant standards (Codex Desktop & Antigravity/Claude style):
418
+
419
+ - **Unboxed Conversational Flow (Codex Desktop Standard)**:
420
+ - **Removed Monolithic Bounding Container**: Eliminated the rigid dark bounding box around `.agent-activity-list` (`border: none; background: transparent; overflow: visible;`).
421
+ - **Natural Unboxed Chat Text (`InlineThoughtNote`)**: Intermediate narration and speech spoken by the agent prior to tool calls (e.g. *"มิ้นจะลองดูไฟล์ CONTRIBUTING.md ให้ก่อนนะคะ ว่าเจอตรงไหน แล้วค่อยสรุปให้ฟังค่ะ"*) now flows directly as **normal, unboxed conversation text** in standard font size (`0.92rem`) and natural text color, completely freed from tool boxes.
422
+ - **Standalone Collapsible Thought Box (`[Brain] Thought >`)**: Deep model reasoning (`extendedThinking` / Chain-of-Thought) is isolated into its own sleek, standalone collapsible card (`.agent-activity-thought-step`) with subtle borders, rather than trapping the entire conversation.
423
+ - **Independent Compact Tool Rows**: Each tool call (e.g. `read_file`, `search_code`, `execute_command`) renders as an individual compact pill/row with smooth collapsible input/output drawers.
424
+ - **Deduplication & Automatic Greeting Cleanup**:
425
+ - **Smart Greeting Stripping (`cleanIntermediateThought` & `strip_intermediate_greeting`)**: Automatically detects and strips repetitive conversational greetings (e.g. *"สวัสดีค่ะพี่ภีม 🌿"*, *"Hello..."*) from intermediate progress notes across Web/Desktop frontend (`agentActivity.ts`) and CLI live status (`crates/mint-cli/src/agent/live_status.rs`).
426
+ - **Prompt Guidance (`crates/mint-core/src/prompts/agent.rs`)**: Updated system instructions so models jump directly to describing the technical action during intermediate turns without repeating opening greetings.
427
+ - **Eliminated Redundant "Step" Badges**: Completely removed clutter labels like `"Step 1"`, `"(1 steps)"`, and `"{count} steps"` across `ThinkingBlock.tsx`, `AgentActivityTable.tsx`, and `agentActivity.ts`.
428
+ - **Fixed Duplicate Thought Boxes**: Removed the redundant external `ThinkingBlock` wrapper in `ChatMessageItem.tsx` that previously caused double thought boxes.
429
+ - **Natural Multi-Language Reasoning (Chain-of-Thought)**:
430
+ - Removed obsolete English-only restrictions in JSON fallback mode (`crates/mint-core/src/prompts/agent.rs`), allowing models to think naturally in their preferred reasoning language (e.g., DeepSeek/Claude English CoT) while keeping all user-facing communication in natural Thai.
431
+ - **Strict Platform Parity Across CLI, Desktop, and Web**:
432
+ - **CLI (`crates/mint-cli`)**: Streamlined terminal timeline with clean progress narration, greeting stripping, and collapsed reasoning (` • Thought for Xs (Ctrl+T to view)`).
433
+ - **Desktop UI (`src/renderer/src`)**: Unboxed conversational stream, standalone thought boxes, and compact tool pills in `src/renderer/src/css/chat.css`.
434
+ - **Web UI (`src/renderer/src-web`)**: 100% visual and functional parity matching Desktop UI in `src/renderer/src-web/css/chat.css`.
435
+
436
+ ## Custom Provider Fallback & Groq TPM Optimization (CLI, Desktop & Web)
437
+
438
+ Fixed provider failover tracking and optimized request payloads for custom providers (especially Groq):
439
+
440
+ - **Correct Fallback Provider Attribution Across All 3 Surfaces (CLI, Desktop, Web)**:
441
+ - Fixed an inversion bug in `crates/mint-core/src/orchestration/mod.rs` where `final_fallback` stored the *new fallback provider* instead of the *original failed provider*. This previously caused the UI to render contradictory badges like `"Gemini unavailable, fell back to Gemini."`.
442
+ - Propagated `fallback_reason` through `AgentResult` to `ChatResponse` across `api_server`, `src-tauri`, and `mint-cli`, allowing Desktop and Web UI to explain why failover occurred (e.g. `Groq unavailable (Groq payload too large (HTTP 413)), fell back to Gemini.`).
443
+ - Updated CLI (`crates/mint-cli/src/agent.rs`) badge formatting to accurately reflect `original • original_model (reason) → fallback: new • new_model`.
444
+ - **Groq Token Limit & TPM Optimization (`openai_chat_payload`)**:
445
+ - Dynamically throttles `max_tokens` for Groq custom endpoints (to `2048` when tools are present, or `4096` in chat) instead of hardcoding `8192`, preventing requests from instantly exceeding Groq free tier's strict 8,000 TPM limit with HTTP 413.
446
+ - **Provider Label Formatting**:
447
+ - Updated `providerLabel` in `src/renderer/shared/utils/providers.ts` to automatically strip `custom:` prefixes and format provider names cleanly (e.g., `custom:groq` -> `Groq`).
448
+
449
+ ## Theme Presets: 3 One-Click Visual Themes (Web & Desktop UI)
450
+
451
+ Added ready-to-use **Theme Presets** to the **Settings > Appearance > Theme & UI** panel for Web and Desktop UI:
452
+
453
+ 1. **Dark Mint**: พื้นหลังสีดำ (`#0a0a0b`) · สีองค์ประกอบสีเขียว (`#10b981`) · สีตัวหนังสือสีขาว (`#ffffff`)
454
+ 2. **Light Mint**: พื้นหลังสีขาว (`#f8fafc`) · สีองค์ประกอบสีเขียว (`#10b981`) · สีตัวหนังสือสีดำ (`#000000` / `#0f172a`)
455
+ 3. **Dark Monochrome**: พื้นหลังสีดำ (`#0a0a0b`) · สีองค์ประกอบสีขาว (`#ffffff`) · สีตัวหนังสือสีขาว (`#ffffff`)
456
+
457
+ - **Interactive Preset Grid**:
458
+ - Interactive cards featuring miniature preview windows showing simulated UI elements (window dots, accent pill badge, typography preview, and color swatch dots).
459
+ - One-click application updating theme, accent color, system text color, and chat text color simultaneously.
460
+ - Active checkmark badge and glowing border when the active settings match a preset.
461
+ - **Dynamic Contrast & Light Mode Audits**:
462
+ - Automatically calculates `--accent-contrast` based on accent relative luminance, ensuring buttons and chips with white accent backgrounds (Preset 3) maintain dark, high-contrast text rather than white-on-white.
463
+ - Fixed hardcoded `#ffffff !important` on `.chat-bold-highlight` across Web and Desktop CSS, resolving invisible bold text in light mode.
464
+ - Fixed hardcoded `#ffffff` on `.chat-heading-1..3` and `.chat-section-title` in `chat.css` to use dynamic `var(--text-main)`.
465
+ - Refactored `.btn-secondary` in settings (`base.css`) from hardcoded `#252526` to `var(--surface-strong)` and `var(--text-main)`, allowing "Reset Defaults", "Set active", and secondary buttons to adapt cleanly to light backgrounds.
466
+ - Added dedicated light-theme styling for `.chat-inline-code` badges and code syntax highlight tokens.
467
+ - **White Accent Support**:
468
+ - Added `#ffffff` directly to Accent Color swatches with high-contrast checkmarks.
469
+
470
+ ## Next-Gen Rich Markdown System: UI Components, Concept Mockups & Callouts (Desktop, Web & CLI)
471
+
472
+ Inspired by modern generative UI design, overhauled the markdown presentation pipeline across all 3 platforms (**Desktop UI**, **Web UI**, and **CLI**):
473
+
474
+ - **Interactive UI Cards & Grids (`ui-grid` & `ui-card`)**:
475
+ - **`UiGridCard.tsx`**: Renders 2x2 or responsive multi-column option cards with dynamic Lucide icons (`message-square`, `mail`, `smartphone`, `video`, `code`, `database`, etc.), titles, descriptions, and badge tags.
476
+ - **`UiFeatureCard.tsx`**: Renders rich feature showcase cards with thumbnail image support, status pill badges (`green`, `blue`, `purple`, `amber`, `red`), and key-value specs (`ปัญหา`, `วิธีแก้`, `กลุ่มผู้ใช้`).
477
+ - Interactive hover elevations, glassmorphic dark-mode backgrounds, and responsive collapsing.
478
+ - **Generative UI Mockup Widget (`ui-mockup`)**:
479
+ - **`UiMockupWidget.tsx`**: Renders interactive UI prototype mockups directly inside chat responses.
480
+ - Features macOS-style window header, interactive file dropzone area with simulated toggle, parameter metric badges, and interactive option toggles with concept disclaimer.
481
+ - **GitHub Alert Callouts & Inline Badges**:
482
+ - **GitHub Alerts in Markdown (`markdown.tsx`)**: Custom blockquote rendering for `> [!NOTE]`, `> [!TIP]`, `> [!IMPORTANT]`, `> [!WARNING]`, and `> [!CAUTION]` featuring themed borders, tinted backgrounds, and Lucide icons (`Info`, `Lightbulb`, `AlertCircle`, `AlertTriangle`, `ShieldAlert`).
483
+ - **Inline Badges**: Added syntax support for `[badge:color text]` (colors: green, blue, purple, amber, red) and default `[badge:text]`, rendered as clean pill badges.
484
+ - **Complete CLI Terminal Parity (`crates/mint-cli`)**:
485
+ - **`markdown_render.rs`**: Built native ANSI and Unicode box-drawing renderers for `ui-grid`, `ui-card`, and `ui-mockup` code fences (`┌─┐`, `│`, `└─┘`, `[◆]`).
486
+ - Implemented terminal callout formatting for GitHub alerts with colored left borders and clean status headers (e.g. `│ NOTE:`, `│ TIP:`, `│ IMPORTANT:`, `│ WARNING:`, `│ CAUTION:`).
487
+ - Implemented inline ANSI badge styling with subtle background colors.
488
+ - **Dedicated Shared Stylesheet (`chat-ui-cards.css`)**:
489
+ - Centralized all styling for UI feature cards, grid cards, mockup widgets, and alert callouts into [`src/renderer/shared/css/chat-ui-cards.css`](file:///home/pheem49/vscode/Project/Mint-CLI/src/renderer/shared/css/chat-ui-cards.css) with semantic classes, making theme customization and styling tweaks straightforward.
490
+ - **Agent Prompt Guidance (`crates/mint-core`)**:
491
+ - Added Rule 11c guiding the model on when to leverage `ui-grid`, `ui-card`, `ui-mockup`, and GitHub callouts for rich answers.
492
+
493
+ ## Collapsible TUI Reasoning & Interactive Thought Viewer (`Ctrl+T` & `/thought`)
494
+
495
+ Streamlined AI reasoning / thinking display in the CLI to keep chat history clean and focused while giving full access to deep thought processes:
496
+
497
+ - **Collapsed Thought Summary in Chat Stream**:
498
+ - Instead of dumping raw reasoning text onto the terminal scrollback, thoughts are now neatly collapsed into a single muted line:
499
+ ` • Thought for 2.4s (Ctrl+T to view)`
500
+ - Tracks and formats duration accurately with sub-second precision (`{:.1}s`).
501
+ - **Interactive Scrollable Thought Viewer (`Ctrl+T`)**:
502
+ - At the prompt box, pressing `Ctrl+T` opens an inline, scrollable Ratatui thought viewer displaying the full thought process.
503
+ - Supports keyboard navigation: `↑`/`↓`/`j`/`k` (line scrolling), `PageUp`/`PageDown` (page scrolling), `Home`/`End`/`g`/`G` (top/bottom), and `Esc`/`Enter`/`q`/`Ctrl+T` to close.
504
+ - Automatically restores any active draft input in the prompt box upon exit.
505
+ - **Cross-Platform Slash Command Parity (`/thought` & `/think`)**:
506
+ - Registered `/thought` across CLI, Web, and Desktop interfaces in `slash-commands.json` and `mint-core`.
507
+ - In CLI, running `/thought` opens the full thought viewer for the previous turn.
508
+ - **Smart Progress Notes & CoT Separation (Claude Code Style)**:
509
+ - Intelligently distinguishes internal chain-of-thought (CoT) reasoning from actionable progress notes.
510
+ - Deep multi-paragraph internal reasoning is collapsed into ` • Thought for Xs (Ctrl+T to view)`.
511
+ - Concise progress notes and step-by-step narration (e.g. `เดี๋ยวจะลองเปิดอ่านไฟล์ Cargo.toml ดูก่อนนะคะ...`) are displayed directly on the timeline before each tool call for maximum visibility.
512
+
513
+ ## CLI Conversation Isolation & Interactive Session Resumption (`/resume`, `mint -r`, Claude Code Style)
514
+
515
+ Overhauled session management in the CLI to give every conversation its own isolated lifecycle with Claude Code-style interactive session resuming across all 3 platforms:
516
+
517
+ - **Isolated CLI Sessions & Auto-Titling**:
518
+ - Each CLI session now receives a unique, dedicated session ID (`cli::<short-uuid>`) rather than grouping all historical conversations into a single monolithic `"cli"` identifier.
519
+ - Automatically captures workspace directory (`workspace_path`), current git branch (`git_branch`), primary project language (`main_language`), message turn counts, and total payload bytes in SQLite.
520
+ - Automatically titles sessions according to the user's opening prompt (e.g. `> Scheduled Tasks bug`).
521
+ - Existing legacy CLI history in `"cli"` remains 100% preserved and accessible.
522
+ - **Claude Code-Style Interactive Resume Picker (`resume_picker.rs`)**:
523
+ - Built an interactive Ratatui + Crossterm TUI picker mirroring Claude Code's session resume interface:
524
+ - **Strict CLI-Scoped Isolation**: Filters out general Web and Desktop conversations as well as background cron tasks, presenting only authentic CLI sessions in the terminal picker.
525
+ - **Live Search**: `[⌕ Search...]` box with instantaneous substring/fuzzy filtering across titles, branch names, and IDs.
526
+ - **Rich Session Cards**: 2-line cards displaying Title (`> Scheduled Tasks bug`) with relative timestamps, language tag, git branch, and total size (e.g. `2 weeks ago · Rust · 6.3MB`).
527
+ - **Cross-Project Navigation (`Ctrl+A`)**: Toggle between filtering by the current workspace versus browsing sessions across all projects on the system.
528
+ - **Branch Scoping (`Ctrl+B`)**: Quick-filter sessions to only those active on the current Git branch.
529
+ - **Session Quick Preview (`Space`)**: Pop-up drawer displaying recent user/assistant turns from the highlighted session without leaving the picker.
530
+ - **Inline Session Renaming (`Ctrl+R`)**: Change any session's title inline and persist it immediately to SQLite.
531
+ - **Unicode / UTF-8 Multi-Byte Safety**: Replaced unsafe byte slicing with codepoint-aware truncation (`truncate_utf8`) for message snippets and previews, ensuring flawless rendering for non-ASCII languages (Thai, Japanese, Chinese, emojis) without panicking.
532
+ - **Dedicated CLI Flags & Subcommands**:
533
+ - `mint --resume` / `mint -r`: Opens the interactive session picker on CLI launch before entering the prompt loop.
534
+ - `mint resume [id]`: Direct subcommand to resume by ID or launch the picker.
535
+ - `/resume [id|query]`: Slash command in interactive chat to hot-swap sessions mid-conversation.
536
+ - **Exit Banner Resume Hint**: Upon exiting the interactive CLI session via `Ctrl+D`, `Ctrl+C`, or `/exit`, the closing banner displays the exact command to resume the session (`mint --resume <session_id>`), matching Claude Code's session exit experience.
537
+ - **Platform Parity across CLI, Desktop, and Web**:
538
+ - Registered `/resume` in `slash-commands.json` for all three surfaces (`["cli", "web", "desktop"]`).
539
+ - Integrated `/resume` dispatch in `slashCommandProcessor.ts` and `MintDashboard.tsx` to hot-swap active conversations seamlessly on Desktop and Web.
540
+ # Unreleased
541
+
542
+ - Changed the Full-Screen TUI watermark to turn from M to the leaf in 0.75 seconds, pause there for two seconds, then turn back to M in 0.75 seconds.
543
+ - Smoothed the Full-Screen TUI watermark rotation to about 33 frames per second and kept its timing steady while mouse or keyboard events arrive.
544
+ - Matched the Web/Desktop TUI theme cards' previews to the `/theme` code sample, including syntax colors and added/removed diff rows.
545
+ - Separated the TUI color choice into `tuiTheme`, preserving the previous terminal choice when loading older configs. Web and Desktop Theme & UI now offer Auto, Dark, and Light TUI previews without changing their own appearance.
546
+ - Added `/theme` to the Full-Screen TUI with Auto, Dark, and Light choices, a changing color preview, and saved theme selection.
547
+ - Fixed the Mint watermark's front M by making the emblem face opaque to its rear leaf pattern, so the two symbols no longer overlap.
548
+ - Set the terminal tab/window title to `Mint Agent | <workspace>` while the Full-Screen TUI is active.
549
+ - Replaced the empty CLI chat wordmark with a layered dotted Mint emblem: an M on the front, a leaf on the back, and a shaded circular rim. Clicking rotates it once in 3D; clicking during the turn restarts it.
550
+ - Fixed CLI TUI mouse selection so Ctrl+C copies selected text, while Delete/Backspace remove selected characters from the input composer.
551
+ - Fixed the TUI mouse-selection hint overlapping the copy confirmation; the hint now names Ctrl+C and yields the footer to copy status messages.
552
+ - Fixed long pasted input wrapping at the wrong positions for Thai and wide Unicode text; the composer now wraps by terminal display width and scrolls to keep the cursor visible.
553
+ - Changed CLI TUI update alerts from a brief footer message to a persistent bordered card with the current and latest versions, `mint update --approve`, and the release notes link.
554
+ - Kept the mobile chat header anchored inside the chat panel during iPhone keyboard panning, and made keyboard detection use the pre-focus viewport height so the empty prompt and footer make room for typing.
555
+ - Fixed the iPhone keyboard layout by keeping Mint Web aligned with the visual viewport as Safari pans it, while reclaiming chat space from the footer during typing.
556
+ - Fixed the mobile sidebar's More menu to expand inside the drawer instead of beyond the screen, and added a visible close button and roomier menu targets.
557
+ - Added pull-to-refresh on mobile Mint Web content pages, with a visible release indicator and protection against accidental refresh while editing Settings or generating a chat response.
558
+ - Reworked Web Settings on phones so form rows and provider cards use the available width, Thinking controls wrap into readable rows, effort buttons form a two-column grid, the close button sits in the header, and fields no longer cause page-wide horizontal scrolling.
559
+ - Reflowed the mobile Chat composer into distinct message, full-width model, and action rows so icon buttons no longer overlap the model label. The mobile model picker now fits the composer width and offers Models/Options tabs without a desktop-width panel spilling past the screen.
560
+ - Matched the mobile Chat navigation button to the new 44px rounded menu button used on other Web pages, including its icon size, themed surface, border, and keyboard focus state.
561
+ - Added a mobile-only rounded surface treatment that follows the existing Opaque and Glassmorphism theme setting. Opaque chrome is fully solid; Glassmorphism frosts navigation and control bars while the composer, message bubbles, studio content, settings, and confirmation modals stay opaque for readability.
562
+ - Added a consistent mobile navigation button to every non-chat Mint Web page, including Image Studio, Veo Studio, Pictures, and management views. Image and Veo Studio now use one vertical scroll flow for controls and results on phones, with compact headers and mobile-sized form fields.
563
+ - Reworked Mint Web's phone layout: the chat now follows the visible viewport when the mobile keyboard opens, the composer and header have larger touch targets and safe-area spacing, artifact/code previews use the full screen instead of a cramped split pane, and the Pictures gallery has compact responsive spacing and filters.
564
+ - Made Web settings full screen on phones with horizontally scrollable section navigation and persistent Reset/Save actions; the mobile navigation backdrop is now a keyboard-accessible button and closes with Escape.
565
+ - Fixed the web Pictures page not loading its gallery stylesheet, which caused saved images to render at their intrinsic size instead of inside the responsive card grid.
566
+ - Changed `npm start` to reuse the existing desktop binary and build only when it is missing; `npm run start:rebuild` now explicitly refreshes the fast local release.
567
+ - Changed `npm run cli` to use the existing compiled CLI binary; added `npm run cli:rebuild` for an explicit release rebuild and `npm run cli:dev` for Cargo development runs.
568
+ - Added a desktop Workspace context popover in the titlebar for on-demand workspace, Git branch/status, recent agent-change review, terminal-tab, attachment-source, and refresh information without consuming chat space.
569
+ - Fixed Theme & UI's live Opaque/Glass, preset, and accent choices so they save as one complete configuration immediately and synchronize the main window instead of leaving stale surface-style values behind.
570
+ - Expanded the desktop File, Edit, View, and Help menus with usable workspace, tool-surface, settings, zoom, fullscreen, update, clipboard, and keyboard-shortcut actions. Edit commands now disable when focus is outside an editable field, and application shortcuts are owned by the titlebar to prevent duplicate Terminal toggles.
571
+ - Fixed the Git branch menu clipping behind the Workspace pane by positioning it within the conversation panel and aligning to the side with more available room.
572
+ - Added a searchable Workspace menu with up to eight recent folders, a current-workspace checkmark, and an Open folder action that reuses the native folder picker.
573
+ - Restyled Workspace and Git branch selection as a compact project-context bar with a distinct workspace chip and adjacent branch control, preserving folder selection, branch menus, and responsive truncation on Desktop and Web.
574
+ - Matched the Chat composer frame's top and bottom corner radii at 16px across Desktop and Web, including the workspace selector, mode bar, and input form.
575
+ - Refined the Chat composer mode controls into unified, fully clickable options with clearer active, hover, keyboard-focus, and narrow-screen states; preserved the existing Smart Context, Agent Mode, and Plan Mode behavior across Desktop and Web.
576
+ - Centralized Git branch-change safety decisions in mint-core; CLI, interactive /branch, and Desktop now use the same workspace-change module before switching, creating, or tracking a branch.
577
+ - Added a shared workspace platform module. Shared Git and workspace renderer modules now cross one interface, while Desktop and Web install their own adapters at startup.
578
+ - Started moving workspace tree and relative-path policy into mint-core's Workspace module.
579
+ - Deepened conversation coordination with a shared reducer and React adapter. Conversation run state, composer attachments, draft/workspace persistence, streaming callbacks, approvals, progress, and cancellation now cross one coordinator interface; ChatPanel now receives only a view model and actions.