@pheem49/mint 1.8.2 → 1.10.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 (106) hide show
  1. package/Cargo.lock +55 -3
  2. package/Cargo.toml +2 -1
  3. package/Release_Note.md +297 -107
  4. package/bin/mint +0 -0
  5. package/crates/mint-cli/Cargo.toml +1 -0
  6. package/crates/mint-cli/src/actions.rs +233 -0
  7. package/crates/mint-cli/src/agent.rs +382 -127
  8. package/crates/mint-cli/src/gmail.rs +22 -2
  9. package/crates/mint-cli/src/image.rs +8 -8
  10. package/crates/mint-cli/src/interactive.rs +2888 -0
  11. package/crates/mint-cli/src/main.rs +391 -2506
  12. package/crates/mint-cli/src/markdown.rs +294 -0
  13. package/crates/mint-cli/src/onboard.rs +152 -109
  14. package/crates/mint-cli/src/setup.rs +143 -143
  15. package/crates/mint-cli/src/updater.rs +48 -6
  16. package/crates/mint-core/Cargo.toml +1 -0
  17. package/crates/mint-core/src/agent_loop.rs +1 -0
  18. package/crates/mint-core/src/api_server.rs +431 -65
  19. package/crates/mint-core/src/browser.rs +630 -102
  20. package/crates/mint-core/src/channels.rs +105 -6
  21. package/crates/mint-core/src/chat.rs +174 -11
  22. package/crates/mint-core/src/code_tools.rs +47 -31
  23. package/crates/mint-core/src/config.rs +302 -17
  24. package/crates/mint-core/src/image_gen.rs +299 -38
  25. package/crates/mint-core/src/lib.rs +10 -7
  26. package/crates/mint-core/src/mcp.rs +119 -6
  27. package/crates/mint-core/src/memory.rs +6 -1
  28. package/crates/mint-core/src/orchestration.rs +237 -96
  29. package/crates/mint-core/src/pictures.rs +67 -5
  30. package/crates/mint-core/src/semantic.rs +1 -1
  31. package/crates/mint-core/src/shell.rs +1 -1
  32. package/crates/mint-core/src/skills.rs +128 -25
  33. package/crates/mint-core/src/video_gen.rs +235 -0
  34. package/package.json +8 -2
  35. package/shared-modules/linux-audio/fluidsynth2-static.json +9 -3
  36. package/shared-modules/linux-audio/fluidsynth2.json +8 -2
  37. package/shared-modules/linux-audio/lilv.json +26 -19
  38. package/shared-modules/linux-audio/lv2.json +0 -1
  39. package/shared-modules/luajit/luajit.json +2 -2
  40. package/skills-lock.json +41 -0
  41. package/src/renderer/index-web.html +1 -1
  42. package/src/renderer/index.html +1 -1
  43. package/src/renderer/shared/components/AgentActivityTable.tsx +25 -6
  44. package/src/renderer/shared/constants/slashCommands.ts +27 -0
  45. package/src/renderer/shared/platform.ts +3 -0
  46. package/src/renderer/shared/types.ts +4 -0
  47. package/src/renderer/shared/utils/approval.tsx +86 -7
  48. package/src/renderer/shared/utils/fileIcons.ts +135 -0
  49. package/src/renderer/shared/utils/markdown.tsx +217 -88
  50. package/src/renderer/shared/utils/slashCommandProcessor.ts +239 -0
  51. package/src/renderer/src/components/ChatPanel.tsx +486 -69
  52. package/src/renderer/src/components/DashboardSidebar.tsx +11 -2
  53. package/src/renderer/src/components/ImageStudioPanel.tsx +87 -4
  54. package/src/renderer/src/components/MintDashboard.tsx +195 -7
  55. package/src/renderer/src/components/PicturesLibrary.tsx +156 -15
  56. package/src/renderer/src/components/Settings/AgentsTab.tsx +21 -2
  57. package/src/renderer/src/components/Settings/AutomationTab.tsx +316 -18
  58. package/src/renderer/src/components/Settings/GeneralTab.tsx +795 -413
  59. package/src/renderer/src/components/Settings/PluginsTab.tsx +304 -70
  60. package/src/renderer/src/components/Settings/ThemeTab.tsx +6 -1
  61. package/src/renderer/src/components/SettingsWindow.tsx +106 -3
  62. package/src/renderer/src/components/VeoStudioPanel.tsx +549 -0
  63. package/src/renderer/src/components/WorkspacePanel.tsx +7 -125
  64. package/src/renderer/src/css/image-studio.css +106 -0
  65. package/src/renderer/src/css/settings.css +158 -0
  66. package/src/renderer/src/css/styles.css +368 -1
  67. package/src/renderer/src/css/veo-studio.css +626 -0
  68. package/src/renderer/src/index.css +1 -0
  69. package/src/renderer/src/tauri.ts +144 -17
  70. package/src/renderer/src-web/components/ChatPanel.tsx +385 -93
  71. package/src/renderer/src-web/components/DashboardSidebar.tsx +16 -1
  72. package/src/renderer/src-web/components/ImageStudioPanel.tsx +87 -4
  73. package/src/renderer/src-web/components/MintDashboard.tsx +156 -5
  74. package/src/renderer/src-web/components/PicturesLibrary.tsx +155 -15
  75. package/src/renderer/src-web/components/Settings/AgentsTab.tsx +21 -2
  76. package/src/renderer/src-web/components/Settings/AutomationTab.tsx +316 -18
  77. package/src/renderer/src-web/components/Settings/GeneralTab.tsx +795 -411
  78. package/src/renderer/src-web/components/Settings/PluginsTab.tsx +304 -70
  79. package/src/renderer/src-web/components/Settings/ThemeTab.tsx +6 -1
  80. package/src/renderer/src-web/components/SettingsWindow.tsx +110 -3
  81. package/src/renderer/src-web/components/VeoStudioPanel.tsx +549 -0
  82. package/src/renderer/src-web/css/image-studio.css +106 -0
  83. package/src/renderer/src-web/css/settings.css +158 -0
  84. package/src/renderer/src-web/css/styles.css +369 -1
  85. package/src/renderer/src-web/css/veo-studio.css +650 -0
  86. package/src/renderer/src-web/index.css +1 -0
  87. package/src/renderer/src-web/tauri.ts +135 -16
  88. package/src-tauri/src/desktop.rs +18 -16
  89. package/src-tauri/src/discord_rpc.rs +1 -1
  90. package/src-tauri/src/lib.rs +155 -25
  91. package/src-tauri/src/webhooks.rs +45 -31
  92. package/src-tauri/src/workflows.rs +1 -0
  93. package/src-tauri/tauri.conf.json +1 -1
  94. package/temp_gridgeist/AGENTS.md +8 -0
  95. package/temp_gridgeist/CHANGELOG.md +130 -0
  96. package/temp_gridgeist/LICENSE +21 -0
  97. package/temp_gridgeist/README.md +323 -0
  98. package/temp_gridgeist/README.th.md +325 -0
  99. package/temp_gridgeist/skills/gridgeist/SKILL.md +88 -0
  100. package/temp_gridgeist/skills/gridgeist/agents/openai.yaml +9 -0
  101. package/temp_gridgeist/skills/gridgeist/assets/gridgeist-small.svg +10 -0
  102. package/temp_gridgeist/skills/gridgeist/assets/gridgeist.png +0 -0
  103. package/temp_gridgeist/skills/gridgeist/assets/gridgeist.svg +18 -0
  104. package/temp_gridgeist/skills/gridgeist/references/design-language.md +88 -0
  105. package/temp_gridgeist/skills/gridgeist/references/review-checklist.md +128 -0
  106. package/temp_gridgeist/skills/gridgeist/references/system-contract.md +109 -0
@@ -1113,6 +1113,131 @@ h1 {
1113
1113
  padding: 0 !important;
1114
1114
  }
1115
1115
 
1116
+ /* Thai Typography & Formatting Enhancement for Chat */
1117
+ .chat-formatted-body {
1118
+ display: flex;
1119
+ flex-direction: column;
1120
+ gap: 8px;
1121
+ width: 100%;
1122
+ font-family: 'Prompt', 'Sarabun', 'Noto Sans Thai', 'Kanit', Inter, ui-sans-serif, system-ui, -apple-system, sans-serif;
1123
+ font-size: 0.94rem;
1124
+ line-height: 1.7;
1125
+ letter-spacing: 0.01em;
1126
+ word-break: break-word;
1127
+ overflow-wrap: anywhere;
1128
+ line-break: relaxed;
1129
+ }
1130
+
1131
+ .chat-paragraph {
1132
+ margin: 0;
1133
+ margin-bottom: 6px;
1134
+ line-height: 1.7;
1135
+ white-space: pre-wrap;
1136
+ word-break: break-word;
1137
+ }
1138
+
1139
+ .chat-paragraph:last-child {
1140
+ margin-bottom: 0;
1141
+ }
1142
+
1143
+ .chat-heading {
1144
+ font-weight: 700;
1145
+ color: var(--text-main);
1146
+ margin-top: 14px;
1147
+ margin-bottom: 6px;
1148
+ line-height: 1.45;
1149
+ }
1150
+
1151
+ .chat-heading-1 { font-size: 1.25rem; color: var(--accent-hover, #34d399); }
1152
+ .chat-heading-2 { font-size: 1.15rem; color: var(--text-main); }
1153
+ .chat-heading-3 { font-size: 1.05rem; color: var(--text-main); }
1154
+
1155
+ .chat-section-title {
1156
+ font-size: 1.02rem;
1157
+ font-weight: 700;
1158
+ color: var(--accent-hover, #34d399);
1159
+ padding-bottom: 2px;
1160
+ margin-top: 12px;
1161
+ margin-bottom: 6px;
1162
+ }
1163
+
1164
+ .chat-list-item {
1165
+ display: flex;
1166
+ align-items: flex-start;
1167
+ gap: 8px;
1168
+ margin: 3px 0 3px 4px;
1169
+ line-height: 1.7;
1170
+ }
1171
+
1172
+ .chat-list-bullet {
1173
+ position: relative;
1174
+ display: inline-flex;
1175
+ align-items: center;
1176
+ justify-content: center;
1177
+ flex-shrink: 0;
1178
+ height: 1.7em;
1179
+ width: 14px;
1180
+ font-size: 0.94rem;
1181
+ line-height: 1.7;
1182
+ color: transparent;
1183
+ user-select: none;
1184
+ }
1185
+
1186
+ .chat-list-bullet::before {
1187
+ content: '';
1188
+ position: absolute;
1189
+ top: 50%;
1190
+ left: 50%;
1191
+ transform: translate(-50%, -50%);
1192
+ width: 7px;
1193
+ height: 7px;
1194
+ border-radius: 50%;
1195
+ background-color: var(--accent, #10b981);
1196
+ box-shadow: 0 0 5px color-mix(in srgb, var(--accent, #10b981) 35%, transparent);
1197
+ }
1198
+
1199
+ .chat-list-number {
1200
+ color: var(--accent-hover, #34d399);
1201
+ font-weight: 700;
1202
+ font-size: 0.9em;
1203
+ flex-shrink: 0;
1204
+ line-height: 1.7;
1205
+ min-width: 20px;
1206
+ }
1207
+
1208
+ .chat-list-text {
1209
+ flex: 1;
1210
+ min-width: 0;
1211
+ word-break: break-word;
1212
+ white-space: pre-wrap;
1213
+ }
1214
+
1215
+ .chat-link {
1216
+ color: var(--accent-hover, #34d399);
1217
+ text-decoration: underline;
1218
+ text-underline-offset: 3px;
1219
+ word-break: break-all;
1220
+ transition: opacity 0.15s ease;
1221
+ }
1222
+
1223
+ .chat-link:hover {
1224
+ opacity: 0.85;
1225
+ text-decoration: underline;
1226
+ }
1227
+
1228
+ .chat-bold-highlight {
1229
+ font-weight: 600;
1230
+ color: var(--text-main);
1231
+ }
1232
+
1233
+ .chat-inline-code {
1234
+ background: rgba(255, 255, 255, 0.08);
1235
+ padding: 2px 6px;
1236
+ border-radius: 4px;
1237
+ font-family: monospace;
1238
+ font-size: 0.88em;
1239
+ color: #38bdf8;
1240
+ }
1116
1241
 
1117
1242
  /* Typing Indicator */
1118
1243
  .typing-indicator {
@@ -1159,6 +1284,7 @@ h1 {
1159
1284
 
1160
1285
  /* Input Area */
1161
1286
  .input-area {
1287
+ position: relative;
1162
1288
  padding: 16px 20px;
1163
1289
  background: color-mix(in srgb, var(--panel-bg) 60%, transparent);
1164
1290
  backdrop-filter: var(--glass-blur);
@@ -1167,6 +1293,113 @@ h1 {
1167
1293
  box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.1);
1168
1294
  }
1169
1295
 
1296
+ /* Slash Command Suggestions Popup */
1297
+ .slash-suggestions-popup {
1298
+ position: absolute;
1299
+ bottom: calc(100% + 12px);
1300
+ left: 20px;
1301
+ right: 20px;
1302
+ max-height: 250px;
1303
+ background: color-mix(in srgb, var(--card-bg, #18191c) 92%, #000 8%);
1304
+ border: 1px solid var(--border, rgba(255, 255, 255, 0.15));
1305
+ border-radius: 14px;
1306
+ box-shadow: 0 -12px 40px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(45, 212, 191, 0.15);
1307
+ display: flex;
1308
+ flex-direction: column;
1309
+ overflow: hidden;
1310
+ z-index: 100;
1311
+ backdrop-filter: blur(16px);
1312
+ -webkit-backdrop-filter: blur(16px);
1313
+ transform-origin: bottom center;
1314
+ animation: slashPopupFadeIn 0.22s cubic-bezier(0.16, 1, 0.3, 1);
1315
+ will-change: transform, opacity;
1316
+ }
1317
+
1318
+ @keyframes slashPopupFadeIn {
1319
+ from {
1320
+ opacity: 0;
1321
+ transform: translateY(8px) scale(0.97);
1322
+ }
1323
+ to {
1324
+ opacity: 1;
1325
+ transform: translateY(0) scale(1);
1326
+ }
1327
+ }
1328
+
1329
+ .slash-suggestions-header {
1330
+ padding: 9px 16px;
1331
+ font-size: 0.75rem;
1332
+ font-weight: 700;
1333
+ color: var(--accent, #2dd4bf);
1334
+ border-bottom: 1px solid var(--border, rgba(255, 255, 255, 0.08));
1335
+ background: rgba(0, 0, 0, 0.3);
1336
+ letter-spacing: 0.03em;
1337
+ text-transform: uppercase;
1338
+ }
1339
+
1340
+ .slash-suggestions-list {
1341
+ overflow-y: auto;
1342
+ padding: 6px;
1343
+ display: flex;
1344
+ flex-direction: column;
1345
+ gap: 3px;
1346
+ scroll-behavior: smooth;
1347
+ }
1348
+
1349
+ .slash-suggestion-item {
1350
+ display: flex;
1351
+ align-items: center;
1352
+ gap: 12px;
1353
+ padding: 9px 14px;
1354
+ border-radius: 10px;
1355
+ background: transparent;
1356
+ border: none;
1357
+ text-align: left;
1358
+ cursor: pointer;
1359
+ width: 100%;
1360
+ transition: transform 0.18s cubic-bezier(0.16, 1, 0.3, 1), background 0.18s ease, box-shadow 0.18s ease;
1361
+ will-change: transform, background;
1362
+ }
1363
+
1364
+ .slash-suggestion-item:hover,
1365
+ .slash-suggestion-item.active {
1366
+ background: rgba(45, 212, 191, 0.12);
1367
+ transform: translateX(4px);
1368
+ box-shadow: inset 2px 0 0 var(--accent, #2dd4bf);
1369
+ }
1370
+
1371
+ .slash-cmd-name {
1372
+ font-size: 0.86rem;
1373
+ font-weight: 600;
1374
+ font-family: var(--font-mono, monospace);
1375
+ color: var(--accent, #2dd4bf);
1376
+ min-width: 140px;
1377
+ flex-shrink: 0;
1378
+ transition: color 0.15s ease;
1379
+ }
1380
+
1381
+ .slash-suggestion-item.active .slash-cmd-name {
1382
+ color: #5eead4;
1383
+ }
1384
+
1385
+ .skill-badge {
1386
+ font-size: 0.72rem;
1387
+ font-weight: 600;
1388
+ color: var(--accent, #2dd4bf);
1389
+ background: rgba(45, 212, 191, 0.16);
1390
+ padding: 2px 7px;
1391
+ border-radius: 6px;
1392
+ flex-shrink: 0;
1393
+ }
1394
+
1395
+ .slash-cmd-desc {
1396
+ font-size: 0.8rem;
1397
+ color: var(--text-soft, rgba(255, 255, 255, 0.65));
1398
+ overflow: hidden;
1399
+ text-overflow: ellipsis;
1400
+ white-space: nowrap;
1401
+ }
1402
+
1170
1403
  .input-disclaimer {
1171
1404
  text-align: center;
1172
1405
  font-size: 0.7rem;
@@ -1670,12 +1903,28 @@ h1 {
1670
1903
  width: 15px;
1671
1904
  }
1672
1905
 
1906
+ .agent-activity-icon[data-has-img="true"]::before,
1907
+ .agent-activity-icon[data-has-img="true"]::after {
1908
+ display: none !important;
1909
+ }
1910
+
1911
+ .agent-activity-icon img {
1912
+ width: 14px;
1913
+ height: 14px;
1914
+ display: block;
1915
+ object-fit: contain;
1916
+ filter: drop-shadow(0 1px 0 rgba(0, 0, 0, 0.12));
1917
+ pointer-events: none;
1918
+ user-select: none;
1919
+ }
1920
+
1673
1921
  .agent-activity-icon::before,
1674
1922
  .agent-activity-icon::after {
1675
1923
  content: "";
1676
1924
  position: absolute;
1677
1925
  }
1678
1926
 
1927
+
1679
1928
  .agent-activity-item[data-kind="folder"] .agent-activity-icon::before {
1680
1929
  background: var(--text-muted);
1681
1930
  border-radius: 2px 2px 1px 1px;
@@ -3167,6 +3416,52 @@ input:checked + .slider:before {
3167
3416
  cursor: not-allowed;
3168
3417
  }
3169
3418
 
3419
+ /* ── Pictures Type Filter & Video Card Styles ── */
3420
+ .pictures-type-filter {
3421
+ display: flex;
3422
+ gap: 8px;
3423
+ max-width: 1120px;
3424
+ margin: 0 auto 20px;
3425
+ padding: 0 10px;
3426
+ }
3427
+
3428
+ .filter-tab-btn {
3429
+ display: inline-flex;
3430
+ align-items: center;
3431
+ gap: 6px;
3432
+ padding: 6px 14px;
3433
+ border-radius: 20px;
3434
+ background: rgba(255, 255, 255, 0.04);
3435
+ border: 1px solid var(--border);
3436
+ color: var(--text-soft);
3437
+ font-size: 0.8rem;
3438
+ font-weight: 500;
3439
+ cursor: pointer;
3440
+ transition: all 0.15s ease;
3441
+ outline: none;
3442
+ }
3443
+
3444
+ .filter-tab-btn:hover {
3445
+ background: rgba(255, 255, 255, 0.08);
3446
+ color: var(--text-main);
3447
+ border-color: var(--accent);
3448
+ }
3449
+
3450
+ .filter-tab-btn.active {
3451
+ background: color-mix(in srgb, var(--accent) 15%, transparent);
3452
+ border-color: var(--accent);
3453
+ color: var(--accent-hover);
3454
+ font-weight: 600;
3455
+ }
3456
+
3457
+ .picture-card video {
3458
+ display: block;
3459
+ width: 100%;
3460
+ aspect-ratio: 4 / 3;
3461
+ object-fit: cover;
3462
+ background: var(--panel-soft);
3463
+ }
3464
+
3170
3465
  .pictures-empty {
3171
3466
  max-width: 360px;
3172
3467
  margin: 18vh auto 0;
@@ -3781,9 +4076,32 @@ input:checked + .slider:before {
3781
4076
  transform: translate(-50%, -50%);
3782
4077
  }
3783
4078
 
4079
+ #chat-tool-btn,
4080
+ #send-btn,
4081
+ #mic-btn,
4082
+ #screen-capture-btn {
4083
+ transition: transform 0.18s cubic-bezier(0.16, 1, 0.3, 1), background 0.18s ease, color 0.18s ease, box-shadow 0.18s ease;
4084
+ will-change: transform;
4085
+ }
4086
+
4087
+ #chat-tool-btn:hover,
4088
+ #send-btn:hover:not(:disabled),
4089
+ #mic-btn:hover,
4090
+ #screen-capture-btn:hover {
4091
+ transform: scale(1.08);
4092
+ }
4093
+
4094
+ #chat-tool-btn:active,
4095
+ #send-btn:active:not(:disabled),
4096
+ #mic-btn:active,
4097
+ #screen-capture-btn:active {
4098
+ transform: scale(0.92);
4099
+ }
4100
+
3784
4101
  #chat-tool-btn[aria-expanded='true'] {
3785
4102
  background: var(--panel-raised);
3786
4103
  color: var(--text-main);
4104
+ transform: rotate(45deg);
3787
4105
  }
3788
4106
 
3789
4107
  .chat-tool-menu {
@@ -3796,9 +4114,23 @@ input:checked + .slider:before {
3796
4114
  background: color-mix(in srgb, var(--panel-raised) 92%, #000 8%);
3797
4115
  border: 1px solid var(--border);
3798
4116
  border-radius: 16px;
3799
- box-shadow: 0 18px 50px rgba(0, 0, 0, 0.28);
4117
+ box-shadow: 0 18px 50px rgba(0, 0, 0, 0.35), 0 0 0 1px rgba(45, 212, 191, 0.12);
3800
4118
  backdrop-filter: var(--glass-blur);
3801
4119
  -webkit-backdrop-filter: var(--glass-blur);
4120
+ transform-origin: bottom left;
4121
+ animation: toolMenuPopIn 0.22s cubic-bezier(0.16, 1, 0.3, 1);
4122
+ will-change: transform, opacity;
4123
+ }
4124
+
4125
+ @keyframes toolMenuPopIn {
4126
+ from {
4127
+ opacity: 0;
4128
+ transform: translateY(8px) scale(0.94);
4129
+ }
4130
+ to {
4131
+ opacity: 1;
4132
+ transform: translateY(0) scale(1);
4133
+ }
3802
4134
  }
3803
4135
 
3804
4136
  .chat-tool-menu button {
@@ -3817,10 +4149,12 @@ input:checked + .slider:before {
3817
4149
  font-size: 0.92rem;
3818
4150
  text-align: left;
3819
4151
  cursor: pointer;
4152
+ transition: transform 0.16s cubic-bezier(0.16, 1, 0.3, 1), background 0.16s ease;
3820
4153
  }
3821
4154
 
3822
4155
  .chat-tool-menu button:hover {
3823
4156
  background: var(--surface-strong);
4157
+ transform: translateX(4px);
3824
4158
  }
3825
4159
 
3826
4160
  .chat-tool-menu button span:first-child {
@@ -4375,4 +4709,37 @@ input:checked + .slider:before {
4375
4709
  transform: scale(0.98);
4376
4710
  }
4377
4711
 
4712
+ /* Message action buttons (Copy, Read Aloud, Like, Dislike) */
4713
+ .msg-action-btn {
4714
+ background: transparent;
4715
+ border: none;
4716
+ color: var(--text-soft, #94a3b8);
4717
+ padding: 4px 6px;
4718
+ border-radius: 6px;
4719
+ cursor: pointer;
4720
+ display: inline-flex;
4721
+ align-items: center;
4722
+ justify-content: center;
4723
+ transition: all 0.15s ease-in-out;
4724
+ opacity: 0.75;
4725
+ }
4726
+
4727
+ .msg-action-btn:hover {
4728
+ background: rgba(255, 255, 255, 0.08);
4729
+ color: var(--text-main, #f8fafc);
4730
+ opacity: 1;
4731
+ }
4732
+
4733
+ .msg-action-btn.is-copied {
4734
+ color: var(--accent, #10b981) !important;
4735
+ opacity: 1 !important;
4736
+ }
4737
+
4738
+ .msg-action-btn.is-speaking {
4739
+ color: var(--accent, #10b981) !important;
4740
+ opacity: 1 !important;
4741
+ }
4742
+
4743
+
4744
+
4378
4745