@pheem49/mint 1.6.3 → 1.6.4

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 (50) hide show
  1. package/Cargo.lock +3 -3
  2. package/Cargo.toml +1 -1
  3. package/README.md +82 -21
  4. package/assets/Mint_CLI.png +0 -0
  5. package/assets/Mint_Desktop.png +0 -0
  6. package/assets/Mint_Web.png +0 -0
  7. package/assets/Mint_WorkSpace.png +0 -0
  8. package/assets/Setting.png +0 -0
  9. package/assets/bridges.svg +4 -0
  10. package/assets/chat.svg +3 -0
  11. package/assets/code.svg +4 -0
  12. package/assets/features.svg +3 -0
  13. package/assets/imagegen.svg +5 -0
  14. package/assets/live2d.svg +6 -0
  15. package/assets/memory.svg +5 -0
  16. package/assets/screencapture.svg +4 -0
  17. package/assets/setup.svg +3 -0
  18. package/assets/tools.svg +4 -0
  19. package/bin/mint +0 -0
  20. package/crates/mint-cli/src/agent.rs +6 -2
  21. package/crates/mint-cli/src/main.rs +145 -5
  22. package/crates/mint-cli/src/onboard.rs +134 -1
  23. package/crates/mint-core/src/api_server.rs +108 -3
  24. package/crates/mint-core/src/config.rs +20 -1
  25. package/crates/mint-core/src/image_gen.rs +895 -0
  26. package/crates/mint-core/src/lib.rs +4 -0
  27. package/package.json +1 -1
  28. package/src/bin/index.js +0 -0
  29. package/src/renderer/src/components/ChatPanel.tsx +252 -26
  30. package/src/renderer/src/components/DashboardSidebar.tsx +9 -1
  31. package/src/renderer/src/components/ImageStudioPanel.tsx +638 -0
  32. package/src/renderer/src/components/MintDashboard.tsx +13 -4
  33. package/src/renderer/src/components/SettingsWindow.tsx +29 -20
  34. package/src/renderer/src/css/image-studio.css +722 -0
  35. package/src/renderer/src/css/settings.css +13 -3
  36. package/src/renderer/src/css/styles.css +50 -26
  37. package/src/renderer/src/index.css +106 -0
  38. package/src/renderer/src/tauri.ts +123 -0
  39. package/src/renderer/src-web/components/ChatPanel.tsx +272 -24
  40. package/src/renderer/src-web/components/DashboardSidebar.tsx +9 -1
  41. package/src/renderer/src-web/components/ImageStudioPanel.tsx +638 -0
  42. package/src/renderer/src-web/components/MintDashboard.tsx +12 -3
  43. package/src/renderer/src-web/components/SettingsWindow.tsx +29 -20
  44. package/src/renderer/src-web/css/image-studio.css +722 -0
  45. package/src/renderer/src-web/css/settings.css +14 -4
  46. package/src/renderer/src-web/css/styles.css +50 -26
  47. package/src/renderer/src-web/index.css +106 -0
  48. package/src/renderer/src-web/tauri.ts +124 -0
  49. package/src-tauri/src/lib.rs +48 -5
  50. package/src-tauri/tauri.conf.json +1 -1
@@ -21,6 +21,7 @@ import {
21
21
  } from '../tauri'
22
22
  import ChatPanel from './ChatPanel'
23
23
  import DashboardSidebar, { type DashboardView } from './DashboardSidebar'
24
+ import ImageStudioPanel from './ImageStudioPanel'
24
25
  import ModelPanel from './ModelPanel'
25
26
  import type { ModelInteraction } from './ModelPanel'
26
27
  import PicturesLibrary from './PicturesLibrary'
@@ -44,14 +45,14 @@ const ACCESSORIES = [
44
45
 
45
46
  const DEFAULT_CONFIG = {
46
47
  theme: 'dark',
47
- accentColor: '#4f83e6',
48
+ accentColor: '#10b981',
48
49
  systemTextColor: '#f8fafc',
49
50
  customBgStart: '#0f172a',
50
51
  customBgEnd: '#1e1b4b',
51
52
  customPanelBg: '#1e293b',
52
53
  glassBlur: 'blur(16px)',
53
54
  fontFamily: "'Outfit', sans-serif",
54
- fontSize: '15px',
55
+ fontSize: '18px',
55
56
  }
56
57
 
57
58
  const LAST_WORKSPACE_PATH_KEY = 'mint:last-workspace-path'
@@ -187,7 +188,7 @@ const applyThemeStyles = (cfg: any) => {
187
188
  document.documentElement.style.setProperty('--text-main', systemTextColor)
188
189
  document.documentElement.style.setProperty('--glass-blur', cfg.glassBlur || 'blur(16px)')
189
190
  document.body.style.fontFamily = cfg.fontFamily || "'Outfit', sans-serif"
190
- document.documentElement.style.fontSize = cfg.fontSize || '15px'
191
+ document.documentElement.style.fontSize = cfg.fontSize || '18px'
191
192
 
192
193
  if (theme === 'custom') {
193
194
  if (cfg.customBgStart && cfg.customBgEnd) {
@@ -342,7 +343,7 @@ export default function MintDashboard() {
342
343
  }, [])
343
344
 
344
345
  useEffect(() => {
345
- if (view === 'pictures') refreshPictures().catch((reason: unknown) => setError(errorMessage(reason)))
346
+ if (view === 'pictures' || view === 'imagine') refreshPictures().catch((reason: unknown) => setError(errorMessage(reason)))
346
347
  }, [view])
347
348
 
348
349
  useEffect(() => {
@@ -927,6 +928,14 @@ export default function MintDashboard() {
927
928
  />
928
929
  </main>
929
930
  <PicturesLibrary view={view} pictures={pictures} onSetView={setView} />
931
+ <ImageStudioPanel
932
+ view={view}
933
+ onRefreshPictures={refreshPictures}
934
+ onSendToChat={(_url, imgPrompt) => {
935
+ setView('chat')
936
+ setMessage(imgPrompt)
937
+ }}
938
+ />
930
939
  </div>
931
940
  <div className={`startup-loading ${startupReady ? 'is-hidden' : ''}`} aria-live="polite" aria-busy={!startupReady}>
932
941
  <div className="startup-loading-content">
@@ -3,14 +3,14 @@ import { getProfileValue, setProfileValue } from '../tauri'
3
3
 
4
4
  const DEFAULT_CONFIG = {
5
5
  theme: 'dark',
6
- accentColor: '#4f83e6',
6
+ accentColor: '#10b981',
7
7
  systemTextColor: '#f8fafc',
8
8
  customBgStart: '#0f172a',
9
9
  customBgEnd: '#1e1b4b',
10
10
  customPanelBg: '#1e293b',
11
11
  glassBlur: 'blur(16px)',
12
12
  fontFamily: "'Outfit', sans-serif",
13
- fontSize: '15px',
13
+ fontSize: '18px',
14
14
  apiKey: '',
15
15
  aiProvider: 'gemini',
16
16
  geminiModel: 'gemini-2.5-flash',
@@ -143,6 +143,8 @@ const OLLAMA_MODELS = [
143
143
  'qwen2.5:latest'
144
144
  ]
145
145
 
146
+
147
+
146
148
  export default function SettingsWindow() {
147
149
  const [activeTab, setActiveTab] = useState<TabType>('sect-general')
148
150
  const [config, setConfig] = useState(DEFAULT_CONFIG)
@@ -169,6 +171,8 @@ export default function SettingsWindow() {
169
171
  const [updateMessage, setUpdateMessage] = useState('')
170
172
  const [updateAvailable, setUpdateAvailable] = useState(false)
171
173
 
174
+
175
+
172
176
  // Load settings on mount
173
177
  useEffect(() => {
174
178
  async function loadSettings() {
@@ -942,24 +946,28 @@ export default function SettingsWindow() {
942
946
  <div className="form-grid single">
943
947
  <div className="setting-row">
944
948
  <label>Your Name / Nickname</label>
945
- <input
946
- type="text"
947
- value={userName}
948
- onChange={(e) => setUserName(e.target.value)}
949
- placeholder="e.g. Pheem, Jane"
950
- />
951
- <p className="hint">Used by the assistant to address you in conversation.</p>
949
+ <div className="memory-field-container">
950
+ <input
951
+ type="text"
952
+ value={userName}
953
+ onChange={(e) => setUserName(e.target.value)}
954
+ placeholder="e.g. Pheem, Jane"
955
+ />
956
+ <p className="hint">Used by the assistant to address you in conversation.</p>
957
+ </div>
952
958
  </div>
953
959
 
954
960
  <div className="setting-row">
955
961
  <label>Custom Instructions & Preferences</label>
956
- <textarea
957
- value={userPreferences}
958
- onChange={(e) => setUserPreferences(e.target.value)}
959
- placeholder="e.g. Explain coding concepts step-by-step. Prefer TypeScript. Talk in Thai. Keep explanations concise."
960
- style={{ minHeight: '150px', resize: 'vertical' }}
961
- />
962
- <p className="hint">Preferences, guidelines, or persona instructions for the assistant.</p>
962
+ <div className="memory-field-container">
963
+ <textarea
964
+ value={userPreferences}
965
+ onChange={(e) => setUserPreferences(e.target.value)}
966
+ placeholder="e.g. Explain coding concepts step-by-step. Prefer TypeScript. Talk in Thai. Keep explanations concise."
967
+ style={{ minHeight: '150px', resize: 'vertical' }}
968
+ />
969
+ <p className="hint">Preferences, guidelines, or persona instructions for the assistant.</p>
970
+ </div>
963
971
  </div>
964
972
  </div>
965
973
  </section>
@@ -1342,10 +1350,11 @@ export default function SettingsWindow() {
1342
1350
  <div className="setting-row">
1343
1351
  <label>Font Size</label>
1344
1352
  <select value={config.fontSize} onChange={(e) => updateField('fontSize', e.target.value)}>
1345
- <option value="14px">Small</option>
1346
- <option value="15px">Medium (Default)</option>
1347
- <option value="16px">Large</option>
1348
- <option value="17px">Extra Large</option>
1353
+ <option value="16px">Small</option>
1354
+ <option value="18px">Medium (Default)</option>
1355
+ <option value="22px">Large</option>
1356
+ <option value="26px">Extra Large</option>
1357
+ <option value="30px">Extra Extra Large</option>
1349
1358
  </select>
1350
1359
  </div>
1351
1360
  </div>