@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
@@ -409,24 +409,24 @@ h1 {
409
409
  }
410
410
 
411
411
  .picture-refresh-btn {
412
- height: 28px;
413
- min-width: 0;
414
- padding: 0 8px;
412
+ height: 36px;
413
+ width: 36px;
414
+ padding: 0;
415
415
  display: inline-flex;
416
416
  align-items: center;
417
417
  justify-content: center;
418
- gap: 8px;
419
- border-radius: 6px;
420
- background: transparent;
421
- color: var(--text-muted);
422
- border: 1px solid transparent;
418
+ border-radius: 8px;
419
+ background: rgba(255, 255, 255, 0.04);
420
+ color: var(--text-soft);
421
+ border: 1px solid var(--border);
423
422
  cursor: pointer;
423
+ transition: background 0.15s, color 0.15s, border-color 0.15s;
424
424
  }
425
425
 
426
426
  .picture-refresh-btn:hover {
427
- background: color-mix(in srgb, var(--accent) 10%, transparent);
428
- border-color: color-mix(in srgb, var(--accent) 16%, transparent);
429
- color: var(--accent);
427
+ background: rgba(255, 255, 255, 0.08);
428
+ border-color: rgba(255, 255, 255, 0.15);
429
+ color: var(--text-main);
430
430
  }
431
431
 
432
432
  .maximize-btn:hover {
@@ -916,7 +916,7 @@ h1 {
916
916
 
917
917
  .assistant-workspace.model-hidden .conversation-panel {
918
918
  flex: 1;
919
- max-width: 900px;
919
+ max-width: 1100px;
920
920
  margin: 0 auto;
921
921
  }
922
922
 
@@ -1486,7 +1486,7 @@ h1 {
1486
1486
  gap: 8px;
1487
1487
  margin-bottom: 8px;
1488
1488
  margin-top: 0;
1489
- max-width: min(680px, 100%);
1489
+ max-width: 100%;
1490
1490
  }
1491
1491
 
1492
1492
  .agent-activity-toggle {
@@ -1521,7 +1521,7 @@ h1 {
1521
1521
  border: 0;
1522
1522
  border-radius: 0;
1523
1523
  color: var(--text-main);
1524
- width: min(680px, 100%);
1524
+ width: 100%;
1525
1525
  max-width: 100%;
1526
1526
  padding: 4px 0;
1527
1527
  box-shadow: none;
@@ -2150,7 +2150,7 @@ input:checked + .slider:before {
2150
2150
  -webkit-backdrop-filter: var(--glass-blur);
2151
2151
  border-right: 1px solid var(--border);
2152
2152
  color: var(--text-muted);
2153
- overflow: hidden;
2153
+ overflow: visible;
2154
2154
  transition: width 0.22s ease, padding 0.22s ease, opacity 0.18s ease, transform 0.22s ease;
2155
2155
  }
2156
2156
 
@@ -2661,7 +2661,8 @@ input:checked + .slider:before {
2661
2661
  transition: opacity 0.24s ease, transform 0.24s ease;
2662
2662
  }
2663
2663
 
2664
- .app-body.pictures-open .pictures-library {
2664
+ .app-body.pictures-open .pictures-library,
2665
+ .pictures-library.is-visible {
2665
2666
  opacity: 1;
2666
2667
  pointer-events: auto;
2667
2668
  transform: translateY(0);
@@ -2700,19 +2701,34 @@ input:checked + .slider:before {
2700
2701
  }
2701
2702
 
2702
2703
  .pictures-header-actions {
2703
- display: grid;
2704
- gap: 8px;
2705
- width: 130px;
2704
+ display: flex;
2705
+ align-items: center;
2706
+ gap: 10px;
2707
+ }
2708
+
2709
+ .pictures-header-actions .picture-folder-btn {
2710
+ display: none !important;
2706
2711
  }
2707
2712
 
2708
2713
  .pictures-close-btn {
2709
- height: 34px;
2710
- padding: 0 14px;
2714
+ height: 36px;
2715
+ padding: 0 16px;
2711
2716
  border: 1px solid var(--border);
2712
2717
  border-radius: 8px;
2713
- background: var(--surface-strong);
2718
+ background: rgba(255, 255, 255, 0.04);
2714
2719
  color: var(--text-main);
2720
+ font-size: 0.82rem;
2721
+ font-weight: 500;
2715
2722
  cursor: pointer;
2723
+ display: inline-flex;
2724
+ align-items: center;
2725
+ justify-content: center;
2726
+ transition: background 0.15s ease, border-color 0.15s ease;
2727
+ }
2728
+
2729
+ .pictures-close-btn:hover {
2730
+ background: rgba(255, 255, 255, 0.08);
2731
+ border-color: rgba(255, 255, 255, 0.15);
2716
2732
  }
2717
2733
 
2718
2734
  .pictures-grid {
@@ -2765,20 +2781,24 @@ input:checked + .slider:before {
2765
2781
  }
2766
2782
 
2767
2783
  .picture-folder-btn {
2768
- width: 100%;
2769
- height: 34px;
2784
+ height: 36px;
2785
+ padding: 0 16px;
2770
2786
  border: 1px solid var(--border);
2771
2787
  border-radius: 8px;
2772
- background: var(--panel-soft);
2773
- color: var(--text);
2774
- font-size: 0.75rem;
2775
- font-weight: 700;
2788
+ background: rgba(255, 255, 255, 0.04);
2789
+ color: var(--text-main);
2790
+ font-size: 0.82rem;
2791
+ font-weight: 500;
2776
2792
  cursor: pointer;
2793
+ display: inline-flex;
2794
+ align-items: center;
2795
+ justify-content: center;
2796
+ transition: background 0.15s ease, border-color 0.15s ease;
2777
2797
  }
2778
2798
 
2779
2799
  .picture-folder-btn:hover {
2780
- border-color: color-mix(in srgb, var(--accent) 48%, var(--border));
2781
- background: color-mix(in srgb, var(--accent) 12%, var(--panel-soft));
2800
+ background: rgba(255, 255, 255, 0.08);
2801
+ border-color: rgba(255, 255, 255, 0.15);
2782
2802
  }
2783
2803
 
2784
2804
  .picture-folder-btn:disabled {
@@ -3027,12 +3047,12 @@ input:checked + .slider:before {
3027
3047
  .assistant-workspace.model-hidden .conversation-panel {
3028
3048
  position: relative;
3029
3049
  display: grid;
3030
- grid-template-rows: minmax(0, 1fr) auto;
3031
- width: min(840px, calc(100% - 64px));
3050
+ grid-template-rows: auto minmax(0, 1fr) auto auto;
3051
+ width: min(1100px, calc(100% - 64px));
3032
3052
  height: 100%;
3033
3053
  max-width: none;
3034
3054
  margin: 0 auto;
3035
- padding: 56px 0 28px;
3055
+ padding: 32px 0 8px;
3036
3056
  grid-column: 1 / -1;
3037
3057
  z-index: 1;
3038
3058
  }
@@ -3055,13 +3075,13 @@ input:checked + .slider:before {
3055
3075
  }
3056
3076
 
3057
3077
  .assistant-workspace.model-hidden .conversation-panel.is-empty {
3058
- grid-template-rows: auto minmax(0, 1fr);
3059
- align-content: center;
3078
+ grid-template-rows: auto minmax(0, 1fr) auto auto;
3079
+ align-content: stretch;
3060
3080
  justify-content: stretch;
3061
3081
  width: min(840px, calc(100% - 64px));
3062
3082
  margin: 0 auto;
3063
- padding-top: 56px;
3064
- padding-bottom: 0;
3083
+ padding-top: 0;
3084
+ padding-bottom: 8px;
3065
3085
  }
3066
3086
 
3067
3087
  .conversation-panel.is-empty .chat-container {
@@ -3238,23 +3258,20 @@ input:checked + .slider:before {
3238
3258
 
3239
3259
  .mint-image-attachment {
3240
3260
  position: relative;
3241
- display: inline-flex;
3242
- width: auto;
3243
- height: auto;
3244
- max-width: min(360px, 72vw);
3245
- max-height: 196px;
3261
+ display: block;
3262
+ width: 80px;
3263
+ height: 80px;
3246
3264
  overflow: hidden;
3247
3265
  border: 1px solid var(--border);
3248
3266
  border-radius: 8px;
3249
3267
  background: color-mix(in srgb, var(--surface-strong) 78%, rgba(0, 0, 0, 0.22));
3250
3268
  }
3251
3269
 
3252
- .mint-image-preview {
3253
- width: auto;
3254
- height: auto;
3255
- max-width: min(360px, 72vw);
3256
- max-height: 196px;
3257
- display: block;
3270
+ .mint-image-attachment img.mint-image-preview {
3271
+ width: 100% !important;
3272
+ height: 100% !important;
3273
+ object-fit: cover !important;
3274
+ display: block !important;
3258
3275
  }
3259
3276
 
3260
3277
  .mint-attachment-remove {
@@ -3626,9 +3643,14 @@ input:checked + .slider:before {
3626
3643
 
3627
3644
  .assistant-workspace {
3628
3645
  display: flex;
3646
+ flex-direction: column;
3629
3647
  margin-left: 0;
3630
- padding: 12px;
3631
- gap: 12px;
3648
+ padding: 0;
3649
+ gap: 0;
3650
+ flex: 1;
3651
+ min-height: 0;
3652
+ height: 100%;
3653
+ overflow: hidden;
3632
3654
  }
3633
3655
 
3634
3656
  .assistant-workspace.layout-chat {
@@ -3637,6 +3659,10 @@ input:checked + .slider:before {
3637
3659
 
3638
3660
  .app-body {
3639
3661
  grid-template-columns: 1fr;
3662
+ display: flex;
3663
+ flex-direction: column;
3664
+ min-height: 0;
3665
+ flex: 1;
3640
3666
  }
3641
3667
 
3642
3668
  .sidebar-toggle {
@@ -3684,15 +3710,28 @@ input:checked + .slider:before {
3684
3710
  .conversation-panel {
3685
3711
  position: static;
3686
3712
  width: 100%;
3713
+ height: 100%;
3687
3714
  max-height: none;
3688
3715
  transform: none;
3689
3716
  flex: 1;
3690
3717
  min-width: 0;
3718
+ min-height: 0;
3719
+ border-radius: 0;
3720
+ overflow: hidden;
3691
3721
  }
3692
3722
 
3693
3723
  .chat-container {
3694
3724
  max-height: none;
3695
3725
  }
3726
+
3727
+ .input-area {
3728
+ padding: 10px;
3729
+ }
3730
+
3731
+ #chat-form {
3732
+ min-height: auto;
3733
+ padding: 6px;
3734
+ }
3696
3735
  }
3697
3736
 
3698
3737
  /* Chat Bold Highlight styling */
@@ -3709,6 +3748,19 @@ input:checked + .slider:before {
3709
3748
  color: #38bdf8; /* Sky-400 for midnight theme */
3710
3749
  }
3711
3750
 
3751
+ /* Input Disclaimer Footer */
3752
+ .input-disclaimer {
3753
+ text-align: center;
3754
+ font-size: 0.7rem;
3755
+ color: var(--text-muted);
3756
+ opacity: 0.55;
3757
+ padding: 6px 20px 10px;
3758
+ margin: 0;
3759
+ flex-shrink: 0;
3760
+ line-height: 1.5;
3761
+ user-select: none;
3762
+ }
3763
+
3712
3764
  /* Web-Native Chat Header */
3713
3765
  .chat-header {
3714
3766
  display: flex;
@@ -3822,4 +3874,296 @@ input:checked + .slider:before {
3822
3874
  .mobile-menu-btn {
3823
3875
  display: flex;
3824
3876
  }
3877
+
3878
+ /* Override desktop grid layout so chat-header (hamburger) is visible on mobile */
3879
+ .assistant-workspace.model-hidden .conversation-panel,
3880
+ .assistant-workspace.model-hidden .conversation-panel.is-empty {
3881
+ display: flex;
3882
+ flex-direction: column;
3883
+ width: 100%;
3884
+ height: 100%;
3885
+ padding: 0;
3886
+ margin: 0;
3887
+ grid-template-rows: none;
3888
+ grid-column: auto;
3889
+ }
3890
+
3891
+ /* Solid header fixed to top with background and blur */
3892
+ .chat-header {
3893
+ position: fixed;
3894
+ top: 0;
3895
+ left: 0;
3896
+ right: 0;
3897
+ z-index: 200;
3898
+ background: var(--chrome-bg);
3899
+ backdrop-filter: var(--glass-blur);
3900
+ -webkit-backdrop-filter: var(--glass-blur);
3901
+ border-bottom: 1px solid var(--border);
3902
+ height: 52px;
3903
+ padding: 10px 16px;
3904
+ }
3905
+
3906
+ .assistant-workspace.model-hidden .chat-header {
3907
+ display: flex;
3908
+ flex-shrink: 0;
3909
+ }
3910
+
3911
+ /* Push chat content below fixed header */
3912
+ .assistant-workspace.model-hidden .chat-container {
3913
+ flex: 1;
3914
+ overflow-y: auto;
3915
+ padding: 64px 12px 8px;
3916
+ }
3917
+
3918
+ .assistant-workspace.model-hidden .input-area {
3919
+ width: 100%;
3920
+ flex-shrink: 0;
3921
+ }
3922
+ }
3923
+
3924
+ /* System Event Divider with Pill */
3925
+ .system-event-divider {
3926
+ display: flex;
3927
+ align-items: center;
3928
+ justify-content: center;
3929
+ width: 100%;
3930
+ margin: 20px 0;
3931
+ flex-shrink: 0;
3932
+ }
3933
+
3934
+ .system-event-line {
3935
+ flex: 1;
3936
+ height: 1px;
3937
+ border-bottom: 1px dashed rgba(255, 255, 255, 0.1);
3938
+ }
3939
+
3940
+ [data-theme="light"] .system-event-line {
3941
+ border-bottom: 1px dashed rgba(0, 0, 0, 0.1);
3942
+ }
3943
+
3944
+ .system-event-pill {
3945
+ display: flex;
3946
+ align-items: center;
3947
+ gap: 6px;
3948
+ padding: 4px 14px;
3949
+ background: var(--panel-raised, rgba(30, 41, 59, 0.6));
3950
+ border: 1px solid rgba(255, 255, 255, 0.08);
3951
+ border-radius: 9999px;
3952
+ color: var(--text-soft, #94a3b8);
3953
+ font-size: 0.78rem;
3954
+ font-weight: 500;
3955
+ margin: 0 12px;
3956
+ white-space: nowrap;
3957
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
3958
+ }
3959
+
3960
+ [data-theme="light"] .system-event-pill {
3961
+ background: #f1f5f9;
3962
+ border-color: rgba(0, 0, 0, 0.06);
3963
+ color: #475569;
3964
+ }
3965
+
3966
+ .system-event-pill svg {
3967
+ color: var(--accent, #38bdf8);
3968
+ }
3969
+
3970
+ /* Sidebar Search Chats Button */
3971
+ .sidebar-search-btn {
3972
+ margin-top: 4px;
3825
3973
  }
3974
+
3975
+ /* Sidebar Search Modal Backdrop */
3976
+ .sidebar-search-modal-backdrop {
3977
+ position: fixed;
3978
+ inset: 0;
3979
+ z-index: 10000;
3980
+ background: rgba(0, 0, 0, 0.6);
3981
+ backdrop-filter: blur(8px);
3982
+ -webkit-backdrop-filter: blur(8px);
3983
+ display: flex;
3984
+ align-items: flex-start;
3985
+ justify-content: center;
3986
+ padding-top: 12vh;
3987
+ }
3988
+
3989
+ /* Sidebar Search Modal Box */
3990
+ .sidebar-search-modal {
3991
+ width: 100%;
3992
+ max-width: 520px;
3993
+ background: var(--surface-strong, #1e293b);
3994
+ border: 1px solid var(--border, rgba(255, 255, 255, 0.08));
3995
+ border-radius: 12px;
3996
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.5);
3997
+ display: flex;
3998
+ flex-direction: column;
3999
+ overflow: hidden;
4000
+ animation: modalFadeIn 0.2s cubic-bezier(0.16, 1, 0.3, 1);
4001
+ }
4002
+
4003
+ @keyframes modalFadeIn {
4004
+ from {
4005
+ opacity: 0;
4006
+ transform: translateY(-20px) scale(0.96);
4007
+ }
4008
+ to {
4009
+ opacity: 1;
4010
+ transform: translateY(0) scale(1);
4011
+ }
4012
+ }
4013
+
4014
+ /* Header */
4015
+ .search-modal-header {
4016
+ display: flex;
4017
+ align-items: center;
4018
+ gap: 12px;
4019
+ padding: 14px 16px;
4020
+ border-bottom: 1px solid var(--border, rgba(255, 255, 255, 0.08));
4021
+ position: relative;
4022
+ }
4023
+
4024
+ .search-icon-wrapper {
4025
+ color: var(--text-soft, #94a3b8);
4026
+ display: inline-flex;
4027
+ align-items: center;
4028
+ }
4029
+
4030
+ .search-modal-header input {
4031
+ flex: 1;
4032
+ background: transparent;
4033
+ border: 0;
4034
+ color: var(--text-main, #f8fafc);
4035
+ font: inherit;
4036
+ font-size: 0.95rem;
4037
+ outline: none;
4038
+ }
4039
+
4040
+ .search-modal-header input::placeholder {
4041
+ color: var(--text-muted, #64748b);
4042
+ }
4043
+
4044
+ .search-modal-close {
4045
+ background: transparent;
4046
+ border: 0;
4047
+ color: var(--text-muted, #64748b);
4048
+ cursor: pointer;
4049
+ display: inline-flex;
4050
+ align-items: center;
4051
+ justify-content: center;
4052
+ padding: 4px;
4053
+ border-radius: 4px;
4054
+ transition: color 0.15s ease, background 0.15s ease;
4055
+ }
4056
+
4057
+ .search-modal-close:hover {
4058
+ color: var(--text-main, #f8fafc);
4059
+ background: rgba(255, 255, 255, 0.05);
4060
+ }
4061
+
4062
+ /* Body */
4063
+ .search-modal-body {
4064
+ max-height: 480px;
4065
+ overflow-y: auto;
4066
+ padding: 12px;
4067
+ display: flex;
4068
+ flex-direction: column;
4069
+ gap: 14px;
4070
+ }
4071
+
4072
+ .search-new-chat-btn {
4073
+ display: flex;
4074
+ align-items: center;
4075
+ gap: 10px;
4076
+ background: rgba(255, 255, 255, 0.03);
4077
+ border: 1px solid var(--border, rgba(255, 255, 255, 0.08));
4078
+ border-radius: 8px;
4079
+ color: var(--text-main, #f8fafc);
4080
+ padding: 10px 14px;
4081
+ cursor: pointer;
4082
+ text-align: left;
4083
+ font: inherit;
4084
+ font-size: 0.9rem;
4085
+ transition: background 0.15s ease;
4086
+ }
4087
+
4088
+ .search-new-chat-btn:hover {
4089
+ background: rgba(255, 255, 255, 0.08);
4090
+ }
4091
+
4092
+ .search-modal-results {
4093
+ display: flex;
4094
+ flex-direction: column;
4095
+ gap: 14px;
4096
+ }
4097
+
4098
+ .search-results-group {
4099
+ display: flex;
4100
+ flex-direction: column;
4101
+ gap: 4px;
4102
+ }
4103
+
4104
+ .search-group-title {
4105
+ color: var(--accent, #10b981);
4106
+ font-size: 0.72rem;
4107
+ font-weight: 600;
4108
+ text-transform: uppercase;
4109
+ letter-spacing: 0.05em;
4110
+ padding: 4px 10px;
4111
+ }
4112
+
4113
+ .search-result-item {
4114
+ display: flex;
4115
+ align-items: center;
4116
+ gap: 10px;
4117
+ background: transparent;
4118
+ border: 0;
4119
+ border-radius: 6px;
4120
+ color: var(--text-soft, #94a3b8);
4121
+ padding: 8px 12px;
4122
+ cursor: pointer;
4123
+ text-align: left;
4124
+ font: inherit;
4125
+ font-size: 0.88rem;
4126
+ transition: background 0.15s ease, color 0.15s ease;
4127
+ white-space: nowrap;
4128
+ overflow: hidden;
4129
+ text-overflow: ellipsis;
4130
+ width: 100%;
4131
+ }
4132
+
4133
+ .search-result-item svg {
4134
+ color: var(--text-muted, #64748b);
4135
+ flex-shrink: 0;
4136
+ }
4137
+
4138
+ .search-result-item:hover,
4139
+ .search-result-item.active {
4140
+ background: rgba(255, 255, 255, 0.05);
4141
+ color: var(--text-main, #f8fafc);
4142
+ }
4143
+
4144
+ .search-result-item:hover svg,
4145
+ .search-result-item.active svg {
4146
+ color: var(--text-main, #f8fafc);
4147
+ }
4148
+
4149
+ .search-result-title {
4150
+ overflow: hidden;
4151
+ text-overflow: ellipsis;
4152
+ white-space: nowrap;
4153
+ }
4154
+
4155
+ .search-no-results {
4156
+ color: var(--text-muted, #64748b);
4157
+ text-align: center;
4158
+ padding: 30px 0;
4159
+ font-size: 0.9rem;
4160
+ }
4161
+
4162
+ /* Allow global text selection everywhere */
4163
+ * {
4164
+ user-select: text !important;
4165
+ -webkit-user-select: text !important;
4166
+ -moz-user-select: text !important;
4167
+ -ms-user-select: text !important;
4168
+ }
4169
+
@@ -11,6 +11,7 @@ interface Window {
11
11
  getChatHistory: () => Promise<any>;
12
12
  listSavedPictures: () => Promise<any>;
13
13
  openSettings: () => Promise<any>;
14
+ openWorkflows: () => Promise<any>;
14
15
  readClipboard: () => Promise<string>;
15
16
  writeClipboard: (text: string) => Promise<void>;
16
17
  getSystemInfo: () => Promise<any>;
@@ -46,6 +47,7 @@ interface Window {
46
47
  openFolder: (path: string) => Promise<void>;
47
48
  openCustomWorkflows: () => Promise<any>;
48
49
  reloadCustomWorkflows: () => Promise<any>;
50
+ saveCustomWorkflows: (workflows: any[]) => Promise<any>;
49
51
  };
50
52
  spotlightAPI: {
51
53
  submit: (query: string) => void;
@@ -379,7 +379,6 @@ button {
379
379
  }
380
380
  }
381
381
 
382
- /* Premium Markdown Styles for Chat Messages */
383
382
  .chat-inline-code {
384
383
  background: rgba(16, 185, 129, 0.15);
385
384
  border: 1px solid rgba(16, 185, 129, 0.25);
@@ -390,6 +389,18 @@ button {
390
389
  font-size: 0.88em;
391
390
  }
392
391
 
392
+ .chat-mention {
393
+ background: color-mix(in srgb, var(--accent, #10b981) 12%, transparent);
394
+ border: 1px solid color-mix(in srgb, var(--accent, #10b981) 25%, transparent);
395
+ color: var(--accent, #34d399);
396
+ padding: 2px 6px;
397
+ border-radius: 6px;
398
+ font-weight: 500;
399
+ font-size: 0.9em;
400
+ display: inline-block;
401
+ margin: 0 2px;
402
+ }
403
+
393
404
  .chat-code-block-container {
394
405
  display: flex;
395
406
  flex-direction: column;