@pheem49/mint 1.7.1 → 1.8.1

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 (66) hide show
  1. package/.github/workflows/release.yml +1 -1
  2. package/Cargo.lock +34 -3
  3. package/Cargo.toml +2 -2
  4. package/README.md +40 -0
  5. package/Release_Note.md +95 -0
  6. package/assets/Mint_CLI.png +0 -0
  7. package/crates/mint-cli/Cargo.toml +1 -0
  8. package/crates/mint-cli/src/agent.rs +142 -48
  9. package/crates/mint-cli/src/main.rs +231 -22
  10. package/crates/mint-core/src/api_server.rs +71 -4
  11. package/crates/mint-core/src/browser.rs +401 -0
  12. package/crates/mint-core/src/chat.rs +79 -0
  13. package/crates/mint-core/src/config.rs +69 -1
  14. package/crates/mint-core/src/lib.rs +6 -1
  15. package/crates/mint-core/src/orchestration.rs +137 -1
  16. package/crates/mint-core/src/skills.rs +113 -4
  17. package/crates/mint-core/src/workflows.rs +9 -22
  18. package/package.json +2 -1
  19. package/src/renderer/src/App.tsx +1 -1
  20. package/src/renderer/src/components/ChatPanel.tsx +197 -47
  21. package/src/renderer/src/components/DashboardSidebar.tsx +71 -12
  22. package/src/renderer/src/components/ImageStudioPanel.tsx +18 -4
  23. package/src/renderer/src/components/MintDashboard.tsx +239 -7
  24. package/src/renderer/src/components/PicturesLibrary.tsx +1 -3
  25. package/src/renderer/src/components/Settings/AudioTab.tsx +97 -0
  26. package/src/renderer/src/components/Settings/AutomationTab.tsx +195 -0
  27. package/src/renderer/src/components/Settings/GeneralTab.tsx +950 -0
  28. package/src/renderer/src/components/Settings/MemoryTab.tsx +60 -0
  29. package/src/renderer/src/components/Settings/PluginsTab.tsx +632 -0
  30. package/src/renderer/src/components/Settings/ShortcutsTab.tsx +30 -0
  31. package/src/renderer/src/components/Settings/ThemeTab.tsx +129 -0
  32. package/src/renderer/src/components/SettingsWindow.tsx +175 -970
  33. package/src/renderer/src/components/WorkflowBuilderPanel.tsx +536 -0
  34. package/src/renderer/src/components/WorkflowsWindow.tsx +46 -0
  35. package/src/renderer/src/components/WorkspacePanel.tsx +66 -9
  36. package/src/renderer/src/css/image-studio.css +15 -4
  37. package/src/renderer/src/css/settings.css +75 -6
  38. package/src/renderer/src/css/styles.css +419 -49
  39. package/src/renderer/src/css/workflows.css +542 -0
  40. package/src/renderer/src/env.d.ts +2 -0
  41. package/src/renderer/src/index.css +13 -1
  42. package/src/renderer/src/tauri.ts +140 -2
  43. package/src/renderer/src-web/components/ChatPanel.tsx +190 -46
  44. package/src/renderer/src-web/components/DashboardSidebar.tsx +17 -1
  45. package/src/renderer/src-web/components/ImageStudioPanel.tsx +18 -4
  46. package/src/renderer/src-web/components/MintDashboard.tsx +197 -3
  47. package/src/renderer/src-web/components/PicturesLibrary.tsx +1 -3
  48. package/src/renderer/src-web/components/Settings/AudioTab.tsx +97 -0
  49. package/src/renderer/src-web/components/Settings/AutomationTab.tsx +196 -0
  50. package/src/renderer/src-web/components/Settings/GeneralTab.tsx +948 -0
  51. package/src/renderer/src-web/components/Settings/MemoryTab.tsx +60 -0
  52. package/src/renderer/src-web/components/Settings/PluginsTab.tsx +632 -0
  53. package/src/renderer/src-web/components/Settings/ShortcutsTab.tsx +30 -0
  54. package/src/renderer/src-web/components/Settings/ThemeTab.tsx +129 -0
  55. package/src/renderer/src-web/components/SettingsWindow.tsx +187 -976
  56. package/src/renderer/src-web/css/image-studio.css +15 -4
  57. package/src/renderer/src-web/css/settings.css +75 -6
  58. package/src/renderer/src-web/css/styles.css +394 -50
  59. package/src/renderer/src-web/env.d.ts +2 -0
  60. package/src/renderer/src-web/index.css +12 -1
  61. package/src/renderer/src-web/tauri.ts +60 -2
  62. package/src-tauri/src/browser.rs +1 -141
  63. package/src-tauri/src/headless.rs +3 -2
  64. package/src-tauri/src/lib.rs +195 -111
  65. package/src-tauri/src/workflows.rs +56 -4
  66. package/src-tauri/tauri.conf.json +1 -1
@@ -0,0 +1,129 @@
1
+ import React from 'react'
2
+ import { DEFAULT_CONFIG } from '../SettingsWindow' // we can import it or define type locally
3
+
4
+ interface ThemeTabProps {
5
+ config: typeof DEFAULT_CONFIG
6
+ updateField: (field: keyof typeof DEFAULT_CONFIG, value: any) => void
7
+ }
8
+
9
+ export default function ThemeTab({ config, updateField }: ThemeTabProps) {
10
+ return (
11
+ <div className="tab-pane active">
12
+ <section className="setting-section">
13
+ <div className="section-heading">
14
+ <div>
15
+ <p className="section-kicker">Appearance</p>
16
+ <h2 className="section-title">Theme</h2>
17
+ </div>
18
+ </div>
19
+ <div className="theme-grid" style={{ display: 'grid', gridTemplateColumns: 'repeat(4, 1fr)', gap: '12px' }}>
20
+ {(['dark', 'light', 'midnight', 'custom'] as const).map(t => (
21
+ <button
22
+ key={t}
23
+ className={`theme-card ${config.theme === t ? 'active' : ''}`}
24
+ onClick={() => updateField('theme', t)}
25
+ >
26
+ <div className={`theme-preview ${t}-preview`}></div>
27
+ <span style={{ textTransform: 'capitalize' }}>{t}</span>
28
+ </button>
29
+ ))}
30
+ </div>
31
+
32
+ {config.theme === 'custom' && (
33
+ <div className="custom-theme-panel" style={{ marginTop: '15px' }}>
34
+ <div className="setting-row">
35
+ <label>Background Gradient</label>
36
+ <div className="color-range" style={{ display: 'flex', gap: '8px', alignItems: 'center' }}>
37
+ <input type="color" value={config.customBgStart} onChange={(e) => updateField('customBgStart', e.target.value)} />
38
+ <span style={{ display: 'inline-flex', alignItems: 'center', color: 'var(--text-soft)' }}>
39
+ <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round">
40
+ <line x1="5" y1="12" x2="19" y2="12"></line>
41
+ <polyline points="12 5 19 12 12 19"></polyline>
42
+ </svg>
43
+ </span>
44
+ <input type="color" value={config.customBgEnd} onChange={(e) => updateField('customBgEnd', e.target.value)} />
45
+ </div>
46
+ </div>
47
+ <div className="setting-row">
48
+ <label>Panel Background</label>
49
+ <input type="color" value={config.customPanelBg} onChange={(e) => updateField('customPanelBg', e.target.value)} />
50
+ </div>
51
+ </div>
52
+ )}
53
+ </section>
54
+
55
+ <section className="setting-section">
56
+ <div className="section-heading">
57
+ <div>
58
+ <p className="section-kicker">Color</p>
59
+ <h2 className="section-title">Accent & Text</h2>
60
+ </div>
61
+ </div>
62
+ <div className="color-section">
63
+ <div>
64
+ <label>Accent Color</label>
65
+ <div className="color-presets">
66
+ {['#8b5cf6', '#06b6d4', '#10b981', '#f59e0b', '#ef4444', '#ec4899'].map(c => (
67
+ <button
68
+ key={c}
69
+ className="color-dot"
70
+ style={{ backgroundColor: c, border: config.accentColor === c ? '2px solid white' : 'none' }}
71
+ onClick={() => updateField('accentColor', c)}
72
+ />
73
+ ))}
74
+ </div>
75
+ </div>
76
+ <div className="color-inputs" style={{ display: 'flex', gap: '15px', marginTop: '12px' }}>
77
+ <div>
78
+ <label>Custom Accent</label>
79
+ <input type="color" value={config.accentColor} onChange={(e) => updateField('accentColor', e.target.value)} style={{ display: 'block', marginTop: '4px' }} />
80
+ </div>
81
+ <div>
82
+ <label>System Text</label>
83
+ <input type="color" value={config.systemTextColor} onChange={(e) => updateField('systemTextColor', e.target.value)} style={{ display: 'block', marginTop: '4px' }} />
84
+ </div>
85
+ </div>
86
+ </div>
87
+ </section>
88
+
89
+ <section className="setting-section">
90
+ <div className="section-heading">
91
+ <div>
92
+ <p className="section-kicker">Surface</p>
93
+ <h2 className="section-title">Interface Style</h2>
94
+ </div>
95
+ </div>
96
+ <div className="form-grid">
97
+ <div className="setting-row">
98
+ <label>Glass Blur</label>
99
+ <select value={config.glassBlur} onChange={(e) => updateField('glassBlur', e.target.value)}>
100
+ <option value="blur(4px)">Low (4px)</option>
101
+ <option value="blur(16px)">Medium (16px) - Default</option>
102
+ <option value="blur(32px)">High (32px)</option>
103
+ <option value="none">Off (Solid)</option>
104
+ </select>
105
+ </div>
106
+ <div className="setting-row">
107
+ <label>Font Family</label>
108
+ <select value={config.fontFamily} onChange={(e) => updateField('fontFamily', e.target.value)}>
109
+ <option value="'Outfit', sans-serif">Outfit (Default)</option>
110
+ <option value="'Mali', cursive">Mali (Cute Thai Font)</option>
111
+ <option value="'Prompt', sans-serif">Prompt (Modern Thai)</option>
112
+ <option value="'Sarabun', sans-serif">Sarabun (Formal Thai)</option>
113
+ </select>
114
+ </div>
115
+ <div className="setting-row">
116
+ <label>Font Size</label>
117
+ <select value={config.fontSize} onChange={(e) => updateField('fontSize', e.target.value)}>
118
+ <option value="16px">Small</option>
119
+ <option value="18px">Medium (Default)</option>
120
+ <option value="22px">Large</option>
121
+ <option value="26px">Extra Large</option>
122
+ <option value="30px">Extra Extra Large</option>
123
+ </select>
124
+ </div>
125
+ </div>
126
+ </section>
127
+ </div>
128
+ )
129
+ }