lemonade-sdk 8.1.1__py3-none-any.whl → 8.1.3__py3-none-any.whl
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.
Potentially problematic release.
This version of lemonade-sdk might be problematic. Click here for more details.
- lemonade/common/inference_engines.py +1 -1
- lemonade/tools/llamacpp/utils.py +114 -14
- lemonade/tools/management_tools.py +1 -1
- lemonade/tools/oga/utils.py +54 -33
- lemonade/tools/server/llamacpp.py +96 -4
- lemonade/tools/server/serve.py +80 -10
- lemonade/tools/server/static/js/chat.js +735 -0
- lemonade/tools/server/static/js/model-settings.js +162 -0
- lemonade/tools/server/static/js/models.js +865 -0
- lemonade/tools/server/static/js/shared.js +491 -0
- lemonade/tools/server/static/styles.css +652 -26
- lemonade/tools/server/static/webapp.html +145 -1091
- lemonade/tools/server/tray.py +1 -1
- lemonade/tools/server/utils/port.py +5 -4
- lemonade/version.py +1 -1
- {lemonade_sdk-8.1.1.dist-info → lemonade_sdk-8.1.3.dist-info}/METADATA +7 -6
- {lemonade_sdk-8.1.1.dist-info → lemonade_sdk-8.1.3.dist-info}/RECORD +26 -22
- {lemonade_sdk-8.1.1.dist-info → lemonade_sdk-8.1.3.dist-info}/entry_points.txt +1 -0
- lemonade_server/cli.py +66 -17
- lemonade_server/model_manager.py +1 -1
- lemonade_server/pydantic_models.py +15 -3
- lemonade_server/server_models.json +54 -3
- {lemonade_sdk-8.1.1.dist-info → lemonade_sdk-8.1.3.dist-info}/WHEEL +0 -0
- {lemonade_sdk-8.1.1.dist-info → lemonade_sdk-8.1.3.dist-info}/licenses/LICENSE +0 -0
- {lemonade_sdk-8.1.1.dist-info → lemonade_sdk-8.1.3.dist-info}/licenses/NOTICE.md +0 -0
- {lemonade_sdk-8.1.1.dist-info → lemonade_sdk-8.1.3.dist-info}/top_level.txt +0 -0
|
@@ -14,6 +14,27 @@
|
|
|
14
14
|
--bg-secondary: #fff8dd;
|
|
15
15
|
--bg-tertiary: #fff5d1;
|
|
16
16
|
|
|
17
|
+
/* Cohesive Button Color Palette */
|
|
18
|
+
--success-primary: #2d7f47;
|
|
19
|
+
--success-hover: #236338;
|
|
20
|
+
--success-light: #e8f5e8;
|
|
21
|
+
|
|
22
|
+
--danger-primary: #c8586c;
|
|
23
|
+
--danger-hover: #a94858;
|
|
24
|
+
--danger-light: #fdf2f4;
|
|
25
|
+
|
|
26
|
+
--info-primary: #5b8db8;
|
|
27
|
+
--info-hover: #4a7396;
|
|
28
|
+
--info-light: #f0f5fa;
|
|
29
|
+
|
|
30
|
+
--neutral-primary: #6b7280;
|
|
31
|
+
--neutral-hover: #4b5563;
|
|
32
|
+
--neutral-light: #f9fafb;
|
|
33
|
+
|
|
34
|
+
--purple-primary: #8b5a96;
|
|
35
|
+
--purple-hover: #744f7e;
|
|
36
|
+
--purple-light: #f5f1f6;
|
|
37
|
+
|
|
17
38
|
/* Transitions */
|
|
18
39
|
--transition-fast: 0.2s ease;
|
|
19
40
|
--transition-medium: 0.3s ease;
|
|
@@ -146,6 +167,14 @@ body::before {
|
|
|
146
167
|
.tabs {
|
|
147
168
|
display: flex;
|
|
148
169
|
border-bottom: 1px solid #e0e0e0;
|
|
170
|
+
align-items: center;
|
|
171
|
+
padding: 0 1rem;
|
|
172
|
+
justify-content: space-between;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.tabs .tab-group {
|
|
176
|
+
display: flex;
|
|
177
|
+
align-items: center;
|
|
149
178
|
}
|
|
150
179
|
|
|
151
180
|
.tab {
|
|
@@ -165,6 +194,124 @@ body::before {
|
|
|
165
194
|
background: #fafafa;
|
|
166
195
|
}
|
|
167
196
|
|
|
197
|
+
/* Model Status Indicator integrated into tab bar */
|
|
198
|
+
.model-status-indicator {
|
|
199
|
+
display: flex;
|
|
200
|
+
align-items: center;
|
|
201
|
+
gap: 0.5rem;
|
|
202
|
+
padding: 0.6rem 1.2rem;
|
|
203
|
+
background: transparent;
|
|
204
|
+
border: none;
|
|
205
|
+
border-radius: 8px;
|
|
206
|
+
min-height: 38px;
|
|
207
|
+
font-size: 0.9rem;
|
|
208
|
+
position: relative;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.status-light {
|
|
212
|
+
width: 8px;
|
|
213
|
+
height: 8px;
|
|
214
|
+
border-radius: 50%;
|
|
215
|
+
position: relative;
|
|
216
|
+
transition: all var(--transition-fast);
|
|
217
|
+
flex-shrink: 0;
|
|
218
|
+
align-self: center;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.status-light::before {
|
|
222
|
+
content: '';
|
|
223
|
+
position: absolute;
|
|
224
|
+
top: -2px;
|
|
225
|
+
left: -2px;
|
|
226
|
+
width: 12px;
|
|
227
|
+
height: 12px;
|
|
228
|
+
border-radius: 50%;
|
|
229
|
+
opacity: 0.3;
|
|
230
|
+
animation: pulse-glow 2s infinite;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/* Online status (green) */
|
|
234
|
+
.model-status-indicator.online .status-light {
|
|
235
|
+
background: #28a745;
|
|
236
|
+
box-shadow: 0 0 8px rgba(40, 167, 69, 0.6);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
.model-status-indicator.online .status-light::before {
|
|
240
|
+
background: #28a745;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
.model-status-indicator.online .model-status-text {
|
|
244
|
+
color: #28a745;
|
|
245
|
+
font-weight: 600;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/* Offline status (red) */
|
|
249
|
+
.model-status-indicator.offline .status-light {
|
|
250
|
+
background: #dc3545;
|
|
251
|
+
box-shadow: 0 0 8px rgba(220, 53, 69, 0.6);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
.model-status-indicator.offline .status-light::before {
|
|
255
|
+
background: #dc3545;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.model-status-indicator.offline .model-status-text {
|
|
259
|
+
color: #dc3545;
|
|
260
|
+
font-weight: 600;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/* Model loaded status (same as online but with model name) */
|
|
264
|
+
.model-status-indicator.loaded .status-light {
|
|
265
|
+
background: #28a745;
|
|
266
|
+
box-shadow: 0 0 8px rgba(40, 167, 69, 0.6);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
.model-status-indicator.loaded .status-light::before {
|
|
270
|
+
background: #28a745;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
.model-status-indicator.loaded .model-status-text {
|
|
274
|
+
color: #28a745;
|
|
275
|
+
font-weight: 600;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
@keyframes pulse-glow {
|
|
279
|
+
0%, 100% {
|
|
280
|
+
transform: scale(1);
|
|
281
|
+
opacity: 0.3;
|
|
282
|
+
}
|
|
283
|
+
50% {
|
|
284
|
+
transform: scale(1.4);
|
|
285
|
+
opacity: 0.1;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
.model-status-text {
|
|
290
|
+
font-weight: 600;
|
|
291
|
+
font-size: 0.9rem;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.model-action-btn {
|
|
295
|
+
display: flex;
|
|
296
|
+
align-items: center;
|
|
297
|
+
justify-content: center;
|
|
298
|
+
width: 24px;
|
|
299
|
+
height: 24px;
|
|
300
|
+
background: transparent;
|
|
301
|
+
border: none;
|
|
302
|
+
border-radius: 50%;
|
|
303
|
+
cursor: pointer;
|
|
304
|
+
transition: all var(--transition-fast);
|
|
305
|
+
font-size: 0.9rem;
|
|
306
|
+
color: #666;
|
|
307
|
+
margin-left: 0.2rem;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
.model-action-btn:hover {
|
|
311
|
+
background: rgba(0, 0, 0, 0.1);
|
|
312
|
+
color: #333;
|
|
313
|
+
}
|
|
314
|
+
|
|
168
315
|
.tab-content {
|
|
169
316
|
display: none;
|
|
170
317
|
padding: 2em;
|
|
@@ -339,7 +486,7 @@ body::before {
|
|
|
339
486
|
}
|
|
340
487
|
|
|
341
488
|
.chat-bubble a {
|
|
342
|
-
color:
|
|
489
|
+
color: var(--info-primary);
|
|
343
490
|
text-decoration: none;
|
|
344
491
|
}
|
|
345
492
|
|
|
@@ -643,33 +790,48 @@ body::before {
|
|
|
643
790
|
}
|
|
644
791
|
|
|
645
792
|
.model-table button {
|
|
646
|
-
background:
|
|
793
|
+
background: var(--accent-gold);
|
|
647
794
|
color: #222;
|
|
648
795
|
border: none;
|
|
649
|
-
border-radius:
|
|
650
|
-
padding: 0.
|
|
796
|
+
border-radius: 6px;
|
|
797
|
+
padding: 0.4em 1em;
|
|
651
798
|
cursor: pointer;
|
|
652
|
-
font-weight:
|
|
653
|
-
transition:
|
|
799
|
+
font-weight: 500;
|
|
800
|
+
transition: all var(--transition-fast);
|
|
801
|
+
box-shadow: 0 2px 4px rgba(230, 184, 0, 0.15);
|
|
654
802
|
}
|
|
655
803
|
|
|
656
804
|
.model-table button:hover {
|
|
657
|
-
background:
|
|
805
|
+
background: var(--accent-gold-dark);
|
|
806
|
+
transform: translateY(-1px);
|
|
807
|
+
box-shadow: 0 3px 6px rgba(230, 184, 0, 0.25);
|
|
658
808
|
}
|
|
659
809
|
|
|
660
810
|
.installing-btn {
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
811
|
+
font-size: 0.75em !important;
|
|
812
|
+
padding: 0.5em 0.8em !important;
|
|
813
|
+
width: auto !important;
|
|
814
|
+
min-width: 90px !important;
|
|
815
|
+
height: 40px !important;
|
|
816
|
+
background: linear-gradient(145deg, rgba(107, 114, 128, 0.15), rgba(107, 114, 128, 0.08)) !important;
|
|
817
|
+
color: var(--neutral-primary) !important;
|
|
818
|
+
border: 1px solid rgba(107, 114, 128, 0.3) !important;
|
|
819
|
+
cursor: wait !important;
|
|
820
|
+
backdrop-filter: blur(8px) !important;
|
|
821
|
+
box-shadow:
|
|
822
|
+
0 2px 8px rgba(107, 114, 128, 0.1),
|
|
823
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.6) !important;
|
|
824
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif !important;
|
|
825
|
+
font-weight: 500;
|
|
664
826
|
opacity: 1 !important;
|
|
665
|
-
|
|
666
|
-
|
|
827
|
+
white-space: nowrap !important;
|
|
828
|
+
animation: gentle-pulse 2s ease-in-out infinite !important;
|
|
667
829
|
}
|
|
668
830
|
|
|
669
831
|
/* Model label styles */
|
|
670
832
|
.model-label {
|
|
671
833
|
display: inline-block;
|
|
672
|
-
background-color:
|
|
834
|
+
background-color: var(--info-primary);
|
|
673
835
|
color: white;
|
|
674
836
|
padding: 2px 8px;
|
|
675
837
|
margin-left: 8px;
|
|
@@ -680,19 +842,19 @@ body::before {
|
|
|
680
842
|
}
|
|
681
843
|
|
|
682
844
|
.model-label.reasoning {
|
|
683
|
-
background-color:
|
|
845
|
+
background-color: var(--neutral-primary);
|
|
684
846
|
}
|
|
685
847
|
|
|
686
848
|
.model-label.vision {
|
|
687
|
-
background-color:
|
|
849
|
+
background-color: var(--info-primary);
|
|
688
850
|
}
|
|
689
851
|
|
|
690
852
|
.model-label.other {
|
|
691
|
-
background-color:
|
|
853
|
+
background-color: var(--success-primary);
|
|
692
854
|
}
|
|
693
855
|
|
|
694
856
|
.model-label.embeddings {
|
|
695
|
-
background-color:
|
|
857
|
+
background-color: var(--purple-primary);
|
|
696
858
|
}
|
|
697
859
|
|
|
698
860
|
.model-label.reranking {
|
|
@@ -948,7 +1110,7 @@ body::before {
|
|
|
948
1110
|
|
|
949
1111
|
.register-doc-link {
|
|
950
1112
|
margin-left: 0.8em;
|
|
951
|
-
color:
|
|
1113
|
+
color: var(--info-primary);
|
|
952
1114
|
font-size: 0.9em;
|
|
953
1115
|
text-decoration: none;
|
|
954
1116
|
transition: all 0.2s ease;
|
|
@@ -961,10 +1123,10 @@ body::before {
|
|
|
961
1123
|
|
|
962
1124
|
.register-doc-link:hover {
|
|
963
1125
|
color: #fff;
|
|
964
|
-
background:
|
|
965
|
-
border-color:
|
|
1126
|
+
background: var(--info-primary);
|
|
1127
|
+
border-color: var(--info-primary);
|
|
966
1128
|
transform: translateY(-1px);
|
|
967
|
-
box-shadow: 0 2px 8px rgba(
|
|
1129
|
+
box-shadow: 0 2px 8px rgba(91, 141, 184, 0.3);
|
|
968
1130
|
}
|
|
969
1131
|
|
|
970
1132
|
#register-mmproj, #register-checkpoint {
|
|
@@ -1065,15 +1227,15 @@ body::before {
|
|
|
1065
1227
|
|
|
1066
1228
|
/* Error status styling */
|
|
1067
1229
|
.register-status.error {
|
|
1068
|
-
background: rgba(
|
|
1069
|
-
color:
|
|
1070
|
-
border: 1px solid rgba(
|
|
1230
|
+
background: rgba(200, 88, 108, 0.1);
|
|
1231
|
+
color: var(--danger-primary);
|
|
1232
|
+
border: 1px solid rgba(200, 88, 108, 0.3);
|
|
1071
1233
|
}
|
|
1072
1234
|
|
|
1073
1235
|
/* Tooltip styles */
|
|
1074
1236
|
.tooltip-icon {
|
|
1075
1237
|
display: inline;
|
|
1076
|
-
color:
|
|
1238
|
+
color: var(--info-primary);
|
|
1077
1239
|
font-size: 14px;
|
|
1078
1240
|
margin-left: 8px;
|
|
1079
1241
|
cursor: help;
|
|
@@ -1553,7 +1715,7 @@ body::before {
|
|
|
1553
1715
|
top: 10px;
|
|
1554
1716
|
left: 50%;
|
|
1555
1717
|
transform: translateX(-50%);
|
|
1556
|
-
background-color:
|
|
1718
|
+
background-color: var(--danger-primary);
|
|
1557
1719
|
color: #fff;
|
|
1558
1720
|
padding: 0.6em 1.2em;
|
|
1559
1721
|
border-radius: 6px;
|
|
@@ -1580,3 +1742,467 @@ body::before {
|
|
|
1580
1742
|
.error-banner .close-btn:hover {
|
|
1581
1743
|
opacity: 0.8;
|
|
1582
1744
|
}
|
|
1745
|
+
|
|
1746
|
+
/* === Model Settings === */
|
|
1747
|
+
.model-settings-container {
|
|
1748
|
+
max-width: 600px;
|
|
1749
|
+
margin: 0 auto;
|
|
1750
|
+
padding: 2rem;
|
|
1751
|
+
}
|
|
1752
|
+
|
|
1753
|
+
.settings-form {
|
|
1754
|
+
background: #fff;
|
|
1755
|
+
padding: 2rem;
|
|
1756
|
+
border-radius: 8px;
|
|
1757
|
+
border: 1px solid #e0e0e0;
|
|
1758
|
+
}
|
|
1759
|
+
|
|
1760
|
+
.setting-row {
|
|
1761
|
+
display: flex;
|
|
1762
|
+
flex-direction: column;
|
|
1763
|
+
gap: 0.5rem;
|
|
1764
|
+
margin-bottom: 1.5rem;
|
|
1765
|
+
}
|
|
1766
|
+
|
|
1767
|
+
.setting-row label {
|
|
1768
|
+
font-weight: 600;
|
|
1769
|
+
color: var(--text-primary);
|
|
1770
|
+
font-size: 1rem;
|
|
1771
|
+
}
|
|
1772
|
+
|
|
1773
|
+
.setting-row input {
|
|
1774
|
+
padding: 0.75rem;
|
|
1775
|
+
border: 1px solid #ddd;
|
|
1776
|
+
border-radius: 4px;
|
|
1777
|
+
font-size: 1rem;
|
|
1778
|
+
transition: border-color var(--transition-fast);
|
|
1779
|
+
}
|
|
1780
|
+
|
|
1781
|
+
.setting-row input:focus {
|
|
1782
|
+
outline: none;
|
|
1783
|
+
border-color: var(--accent-gold);
|
|
1784
|
+
box-shadow: 0 0 0 2px rgba(230, 184, 0, 0.2);
|
|
1785
|
+
}
|
|
1786
|
+
|
|
1787
|
+
.setting-description {
|
|
1788
|
+
font-size: 0.9rem;
|
|
1789
|
+
color: var(--text-muted);
|
|
1790
|
+
font-style: italic;
|
|
1791
|
+
}
|
|
1792
|
+
|
|
1793
|
+
.setting-actions {
|
|
1794
|
+
display: flex;
|
|
1795
|
+
gap: 1rem;
|
|
1796
|
+
margin-top: 2rem;
|
|
1797
|
+
justify-content: flex-end;
|
|
1798
|
+
}
|
|
1799
|
+
|
|
1800
|
+
.save-btn {
|
|
1801
|
+
padding: 0.75rem 1.5rem;
|
|
1802
|
+
background: var(--accent-gold);
|
|
1803
|
+
color: #222;
|
|
1804
|
+
border: none;
|
|
1805
|
+
border-radius: 4px;
|
|
1806
|
+
font-weight: 600;
|
|
1807
|
+
cursor: pointer;
|
|
1808
|
+
transition: background var(--transition-fast);
|
|
1809
|
+
}
|
|
1810
|
+
|
|
1811
|
+
.save-btn:hover {
|
|
1812
|
+
background: var(--accent-gold-dark);
|
|
1813
|
+
}
|
|
1814
|
+
|
|
1815
|
+
.reset-btn {
|
|
1816
|
+
padding: 0.75rem 1.5rem;
|
|
1817
|
+
background: #6c757d;
|
|
1818
|
+
color: white;
|
|
1819
|
+
border: none;
|
|
1820
|
+
border-radius: 4px;
|
|
1821
|
+
font-weight: 600;
|
|
1822
|
+
cursor: pointer;
|
|
1823
|
+
transition: background var(--transition-fast);
|
|
1824
|
+
}
|
|
1825
|
+
|
|
1826
|
+
.reset-btn:hover {
|
|
1827
|
+
background: #5a6268;
|
|
1828
|
+
}
|
|
1829
|
+
|
|
1830
|
+
/* === Model Browser === */
|
|
1831
|
+
.model-browser-container {
|
|
1832
|
+
display: flex;
|
|
1833
|
+
max-width: 1200px;
|
|
1834
|
+
margin: 0 auto;
|
|
1835
|
+
min-height: 600px;
|
|
1836
|
+
background: #fff;
|
|
1837
|
+
border-radius: 8px;
|
|
1838
|
+
border: 1px solid #e0e0e0;
|
|
1839
|
+
overflow: hidden;
|
|
1840
|
+
}
|
|
1841
|
+
|
|
1842
|
+
.model-browser-sidebar {
|
|
1843
|
+
width: 280px;
|
|
1844
|
+
background: #f8f9fa;
|
|
1845
|
+
border-right: 1px solid #e0e0e0;
|
|
1846
|
+
overflow-y: auto;
|
|
1847
|
+
}
|
|
1848
|
+
|
|
1849
|
+
.model-category {
|
|
1850
|
+
border-bottom: 1px solid #e0e0e0;
|
|
1851
|
+
}
|
|
1852
|
+
|
|
1853
|
+
.model-category-section {
|
|
1854
|
+
border-bottom: 1px solid #e0e0e0;
|
|
1855
|
+
padding: 0.5rem 0;
|
|
1856
|
+
}
|
|
1857
|
+
|
|
1858
|
+
.category-header {
|
|
1859
|
+
display: flex;
|
|
1860
|
+
align-items: center;
|
|
1861
|
+
gap: 0.75rem;
|
|
1862
|
+
padding: 1rem;
|
|
1863
|
+
cursor: pointer;
|
|
1864
|
+
transition: background var(--transition-fast);
|
|
1865
|
+
font-weight: 600;
|
|
1866
|
+
}
|
|
1867
|
+
|
|
1868
|
+
.section-header {
|
|
1869
|
+
display: flex;
|
|
1870
|
+
align-items: center;
|
|
1871
|
+
gap: 0.75rem;
|
|
1872
|
+
padding: 0.75rem 1rem;
|
|
1873
|
+
font-weight: 600;
|
|
1874
|
+
color: #6c757d;
|
|
1875
|
+
font-size: 0.9rem;
|
|
1876
|
+
text-transform: uppercase;
|
|
1877
|
+
letter-spacing: 0.5px;
|
|
1878
|
+
}
|
|
1879
|
+
|
|
1880
|
+
.category-header:hover {
|
|
1881
|
+
background: #e9ecef;
|
|
1882
|
+
}
|
|
1883
|
+
|
|
1884
|
+
.category-header.active {
|
|
1885
|
+
background: var(--primary-yellow);
|
|
1886
|
+
color: #333;
|
|
1887
|
+
font-weight: 600;
|
|
1888
|
+
}
|
|
1889
|
+
|
|
1890
|
+
.category-icon, .section-icon {
|
|
1891
|
+
font-size: 1.1rem;
|
|
1892
|
+
}
|
|
1893
|
+
|
|
1894
|
+
.category-name, .section-name {
|
|
1895
|
+
flex: 1;
|
|
1896
|
+
}
|
|
1897
|
+
|
|
1898
|
+
.category-content {
|
|
1899
|
+
display: none;
|
|
1900
|
+
padding: 0;
|
|
1901
|
+
}
|
|
1902
|
+
|
|
1903
|
+
.category-content.expanded {
|
|
1904
|
+
display: block;
|
|
1905
|
+
}
|
|
1906
|
+
|
|
1907
|
+
.section-content {
|
|
1908
|
+
padding: 0;
|
|
1909
|
+
}
|
|
1910
|
+
|
|
1911
|
+
.subcategory {
|
|
1912
|
+
padding: 0.75rem 1rem 0.75rem 3rem;
|
|
1913
|
+
cursor: pointer;
|
|
1914
|
+
transition: background var(--transition-fast);
|
|
1915
|
+
border-bottom: 1px solid #f0f0f0;
|
|
1916
|
+
}
|
|
1917
|
+
|
|
1918
|
+
.subcategory:hover {
|
|
1919
|
+
background: #e9ecef;
|
|
1920
|
+
}
|
|
1921
|
+
|
|
1922
|
+
.subcategory.active {
|
|
1923
|
+
background: var(--primary-yellow);
|
|
1924
|
+
color: #333;
|
|
1925
|
+
font-weight: 600;
|
|
1926
|
+
}
|
|
1927
|
+
|
|
1928
|
+
/* Add Model Form in Main Area */
|
|
1929
|
+
.add-model-form-main {
|
|
1930
|
+
padding: 1.5rem;
|
|
1931
|
+
max-width: 100%;
|
|
1932
|
+
box-sizing: border-box;
|
|
1933
|
+
}
|
|
1934
|
+
|
|
1935
|
+
.add-model-form-main .form-content {
|
|
1936
|
+
max-width: 800px;
|
|
1937
|
+
width: 100%;
|
|
1938
|
+
}
|
|
1939
|
+
|
|
1940
|
+
.add-model-form-main .register-form-row {
|
|
1941
|
+
display: flex;
|
|
1942
|
+
align-items: center;
|
|
1943
|
+
gap: 1.2em;
|
|
1944
|
+
margin-bottom: 1em;
|
|
1945
|
+
padding: 0.1em 0;
|
|
1946
|
+
position: relative;
|
|
1947
|
+
max-width: 100%;
|
|
1948
|
+
box-sizing: border-box;
|
|
1949
|
+
}
|
|
1950
|
+
|
|
1951
|
+
.add-model-form-main .register-model-name-group {
|
|
1952
|
+
display: flex;
|
|
1953
|
+
align-items: stretch;
|
|
1954
|
+
flex: 1;
|
|
1955
|
+
border-radius: 6px;
|
|
1956
|
+
overflow: hidden;
|
|
1957
|
+
transition: box-shadow 0.2s ease;
|
|
1958
|
+
min-width: 0;
|
|
1959
|
+
max-width: 400px;
|
|
1960
|
+
}
|
|
1961
|
+
|
|
1962
|
+
.add-model-form-main input[type="text"],
|
|
1963
|
+
.add-model-form-main select {
|
|
1964
|
+
max-width: 400px;
|
|
1965
|
+
width: 100%;
|
|
1966
|
+
box-sizing: border-box;
|
|
1967
|
+
}
|
|
1968
|
+
|
|
1969
|
+
.add-model-form-main #register-checkpoint {
|
|
1970
|
+
max-width: 500px;
|
|
1971
|
+
}
|
|
1972
|
+
|
|
1973
|
+
.model-browser-main {
|
|
1974
|
+
flex: 1;
|
|
1975
|
+
display: flex;
|
|
1976
|
+
flex-direction: column;
|
|
1977
|
+
overflow: hidden;
|
|
1978
|
+
}
|
|
1979
|
+
|
|
1980
|
+
.model-browser-header {
|
|
1981
|
+
padding: 1.5rem;
|
|
1982
|
+
border-bottom: 1px solid #e0e0e0;
|
|
1983
|
+
background: #f8f9fa;
|
|
1984
|
+
}
|
|
1985
|
+
|
|
1986
|
+
.model-browser-header h3 {
|
|
1987
|
+
margin: 0;
|
|
1988
|
+
color: var(--text-primary);
|
|
1989
|
+
font-size: 1.3rem;
|
|
1990
|
+
}
|
|
1991
|
+
|
|
1992
|
+
.model-list {
|
|
1993
|
+
flex: 1;
|
|
1994
|
+
padding: 1rem;
|
|
1995
|
+
overflow-y: auto;
|
|
1996
|
+
}
|
|
1997
|
+
|
|
1998
|
+
.model-item {
|
|
1999
|
+
display: flex;
|
|
2000
|
+
align-items: center;
|
|
2001
|
+
gap: 1rem;
|
|
2002
|
+
padding: 1rem;
|
|
2003
|
+
border: 1px solid #e0e0e0;
|
|
2004
|
+
border-radius: 6px;
|
|
2005
|
+
margin-bottom: 0.75rem;
|
|
2006
|
+
background: #fff;
|
|
2007
|
+
transition: all var(--transition-fast);
|
|
2008
|
+
}
|
|
2009
|
+
|
|
2010
|
+
.model-item:hover {
|
|
2011
|
+
border-color: var(--accent-gold);
|
|
2012
|
+
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
|
2013
|
+
}
|
|
2014
|
+
|
|
2015
|
+
.model-item-info {
|
|
2016
|
+
flex: 1;
|
|
2017
|
+
}
|
|
2018
|
+
|
|
2019
|
+
.model-item-name {
|
|
2020
|
+
font-weight: 600;
|
|
2021
|
+
font-size: 1rem;
|
|
2022
|
+
margin-bottom: 0.25rem;
|
|
2023
|
+
}
|
|
2024
|
+
|
|
2025
|
+
.model-item-description {
|
|
2026
|
+
font-size: 0.9rem;
|
|
2027
|
+
color: var(--text-muted);
|
|
2028
|
+
}
|
|
2029
|
+
|
|
2030
|
+
.model-item-actions {
|
|
2031
|
+
display: flex;
|
|
2032
|
+
gap: 0.5rem;
|
|
2033
|
+
}
|
|
2034
|
+
|
|
2035
|
+
/* Modern emoji button styling with clean glass effect */
|
|
2036
|
+
.model-item-btn {
|
|
2037
|
+
position: relative;
|
|
2038
|
+
border: none;
|
|
2039
|
+
border-radius: 12px;
|
|
2040
|
+
padding: 0.75em;
|
|
2041
|
+
cursor: pointer;
|
|
2042
|
+
font-weight: 500;
|
|
2043
|
+
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
2044
|
+
font-size: 1.3em;
|
|
2045
|
+
width: 48px;
|
|
2046
|
+
height: 48px;
|
|
2047
|
+
display: flex;
|
|
2048
|
+
align-items: center;
|
|
2049
|
+
justify-content: center;
|
|
2050
|
+
line-height: 1;
|
|
2051
|
+
background: linear-gradient(145deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.6));
|
|
2052
|
+
backdrop-filter: blur(10px);
|
|
2053
|
+
border: 1px solid rgba(255, 255, 255, 0.3);
|
|
2054
|
+
box-shadow:
|
|
2055
|
+
0 2px 8px rgba(0, 0, 0, 0.08),
|
|
2056
|
+
0 1px 3px rgba(0, 0, 0, 0.1),
|
|
2057
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.8);
|
|
2058
|
+
color: #555;
|
|
2059
|
+
text-align: center;
|
|
2060
|
+
overflow: hidden;
|
|
2061
|
+
font-family: "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "Android Emoji", "EmojiSymbols", sans-serif;
|
|
2062
|
+
}
|
|
2063
|
+
|
|
2064
|
+
/* Elegant hover animation with subtle scaling */
|
|
2065
|
+
.model-item-btn:hover {
|
|
2066
|
+
transform: translateY(-2px) scale(1.05);
|
|
2067
|
+
box-shadow:
|
|
2068
|
+
0 8px 25px rgba(0, 0, 0, 0.15),
|
|
2069
|
+
0 3px 10px rgba(0, 0, 0, 0.1),
|
|
2070
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.9);
|
|
2071
|
+
background: linear-gradient(145deg, rgba(255, 255, 255, 0.95), rgba(255, 255, 255, 0.8));
|
|
2072
|
+
border-color: rgba(255, 255, 255, 0.5);
|
|
2073
|
+
}
|
|
2074
|
+
|
|
2075
|
+
/* Satisfying active state */
|
|
2076
|
+
.model-item-btn:active {
|
|
2077
|
+
transform: translateY(-1px) scale(1.02);
|
|
2078
|
+
box-shadow:
|
|
2079
|
+
0 3px 12px rgba(0, 0, 0, 0.12),
|
|
2080
|
+
0 1px 5px rgba(0, 0, 0, 0.08),
|
|
2081
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.7);
|
|
2082
|
+
transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);
|
|
2083
|
+
}
|
|
2084
|
+
|
|
2085
|
+
/* Disabled state with reduced opacity */
|
|
2086
|
+
.model-item-btn:disabled {
|
|
2087
|
+
opacity: 0.4;
|
|
2088
|
+
cursor: not-allowed;
|
|
2089
|
+
transform: none !important;
|
|
2090
|
+
box-shadow:
|
|
2091
|
+
0 1px 3px rgba(0, 0, 0, 0.05),
|
|
2092
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.5) !important;
|
|
2093
|
+
background: linear-gradient(145deg, rgba(248, 248, 248, 0.8), rgba(240, 240, 240, 0.6)) !important;
|
|
2094
|
+
}
|
|
2095
|
+
|
|
2096
|
+
/* Special styling for loading/installing state with enhanced design */
|
|
2097
|
+
.model-item-btn.loading,
|
|
2098
|
+
.model-item-btn.installing {
|
|
2099
|
+
font-size: 0.75em;
|
|
2100
|
+
padding: 0.5em 0.8em;
|
|
2101
|
+
width: auto;
|
|
2102
|
+
min-width: 90px;
|
|
2103
|
+
height: 40px;
|
|
2104
|
+
background: linear-gradient(145deg, rgba(107, 114, 128, 0.15), rgba(107, 114, 128, 0.08));
|
|
2105
|
+
color: var(--neutral-primary);
|
|
2106
|
+
border: 1px solid rgba(107, 114, 128, 0.3);
|
|
2107
|
+
cursor: wait;
|
|
2108
|
+
backdrop-filter: blur(8px);
|
|
2109
|
+
box-shadow:
|
|
2110
|
+
0 2px 8px rgba(107, 114, 128, 0.1),
|
|
2111
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.6);
|
|
2112
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
|
|
2113
|
+
font-weight: 500;
|
|
2114
|
+
white-space: nowrap;
|
|
2115
|
+
}
|
|
2116
|
+
|
|
2117
|
+
/* Pulsing animation for loading states */
|
|
2118
|
+
.model-item-btn.loading,
|
|
2119
|
+
.model-item-btn.installing {
|
|
2120
|
+
animation: gentle-pulse 2s ease-in-out infinite;
|
|
2121
|
+
}
|
|
2122
|
+
|
|
2123
|
+
@keyframes gentle-pulse {
|
|
2124
|
+
0%, 100% {
|
|
2125
|
+
opacity: 1;
|
|
2126
|
+
transform: scale(1);
|
|
2127
|
+
}
|
|
2128
|
+
50% {
|
|
2129
|
+
opacity: 0.8;
|
|
2130
|
+
transform: scale(1.02);
|
|
2131
|
+
}
|
|
2132
|
+
}
|
|
2133
|
+
|
|
2134
|
+
/* Color-coded hover effects for different action types */
|
|
2135
|
+
.model-item-btn.install:hover {
|
|
2136
|
+
background: linear-gradient(145deg, rgba(230, 184, 0, 0.2), rgba(230, 184, 0, 0.1));
|
|
2137
|
+
border-color: rgba(230, 184, 0, 0.4);
|
|
2138
|
+
box-shadow:
|
|
2139
|
+
0 8px 25px rgba(230, 184, 0, 0.2),
|
|
2140
|
+
0 3px 10px rgba(0, 0, 0, 0.1),
|
|
2141
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.9);
|
|
2142
|
+
}
|
|
2143
|
+
|
|
2144
|
+
.model-item-btn.load:hover {
|
|
2145
|
+
background: linear-gradient(145deg, rgba(45, 127, 71, 0.2), rgba(45, 127, 71, 0.1));
|
|
2146
|
+
border-color: rgba(45, 127, 71, 0.4);
|
|
2147
|
+
box-shadow:
|
|
2148
|
+
0 8px 25px rgba(45, 127, 71, 0.2),
|
|
2149
|
+
0 3px 10px rgba(0, 0, 0, 0.1),
|
|
2150
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.9);
|
|
2151
|
+
}
|
|
2152
|
+
|
|
2153
|
+
.model-item-btn.unload:hover {
|
|
2154
|
+
background: linear-gradient(145deg, rgba(107, 114, 128, 0.2), rgba(107, 114, 128, 0.1));
|
|
2155
|
+
border-color: rgba(107, 114, 128, 0.4);
|
|
2156
|
+
box-shadow:
|
|
2157
|
+
0 8px 25px rgba(107, 114, 128, 0.2),
|
|
2158
|
+
0 3px 10px rgba(0, 0, 0, 0.1),
|
|
2159
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.9);
|
|
2160
|
+
}
|
|
2161
|
+
|
|
2162
|
+
.model-item-btn.delete:hover {
|
|
2163
|
+
background: linear-gradient(145deg, rgba(200, 88, 108, 0.2), rgba(200, 88, 108, 0.1));
|
|
2164
|
+
border-color: rgba(200, 88, 108, 0.4);
|
|
2165
|
+
box-shadow:
|
|
2166
|
+
0 8px 25px rgba(200, 88, 108, 0.2),
|
|
2167
|
+
0 3px 10px rgba(0, 0, 0, 0.1),
|
|
2168
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.9);
|
|
2169
|
+
}
|
|
2170
|
+
|
|
2171
|
+
/* Model select dropdown in chat */
|
|
2172
|
+
.model-select {
|
|
2173
|
+
padding: 0.5rem 0.75rem;
|
|
2174
|
+
border: 1px solid #ddd;
|
|
2175
|
+
border-radius: 6px;
|
|
2176
|
+
background: white;
|
|
2177
|
+
font-size: 0.9rem;
|
|
2178
|
+
min-width: 180px;
|
|
2179
|
+
margin-right: 0.75rem;
|
|
2180
|
+
cursor: pointer;
|
|
2181
|
+
transition: all var(--transition-fast);
|
|
2182
|
+
}
|
|
2183
|
+
|
|
2184
|
+
.model-select:focus {
|
|
2185
|
+
outline: none;
|
|
2186
|
+
border-color: var(--accent-gold);
|
|
2187
|
+
box-shadow: 0 0 0 2px rgba(255, 193, 7, 0.2);
|
|
2188
|
+
}
|
|
2189
|
+
|
|
2190
|
+
.model-select:disabled {
|
|
2191
|
+
background: #f5f5f5;
|
|
2192
|
+
cursor: not-allowed;
|
|
2193
|
+
opacity: 0.7;
|
|
2194
|
+
}
|
|
2195
|
+
|
|
2196
|
+
.model-select option {
|
|
2197
|
+
padding: 0.5rem;
|
|
2198
|
+
}
|
|
2199
|
+
|
|
2200
|
+
.chat-input-row {
|
|
2201
|
+
display: flex;
|
|
2202
|
+
align-items: center;
|
|
2203
|
+
gap: 0.5rem;
|
|
2204
|
+
}
|
|
2205
|
+
|
|
2206
|
+
.input-with-indicator {
|
|
2207
|
+
flex: 1;
|
|
2208
|
+
}
|