more-compute 0.4.4__py3-none-any.whl → 0.5.0__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.
- frontend/app/globals.css +734 -27
- frontend/app/layout.tsx +13 -3
- frontend/components/Notebook.tsx +2 -14
- frontend/components/cell/MonacoCell.tsx +99 -5
- frontend/components/layout/Sidebar.tsx +39 -4
- frontend/components/panels/ClaudePanel.tsx +461 -0
- frontend/components/popups/ComputePopup.tsx +738 -447
- frontend/components/popups/FilterPopup.tsx +305 -189
- frontend/components/popups/MetricsPopup.tsx +20 -1
- frontend/components/popups/ProviderConfigModal.tsx +322 -0
- frontend/components/popups/ProviderDropdown.tsx +398 -0
- frontend/components/popups/SettingsPopup.tsx +1 -1
- frontend/contexts/ClaudeContext.tsx +392 -0
- frontend/contexts/PodWebSocketContext.tsx +16 -21
- frontend/hooks/useInlineDiff.ts +269 -0
- frontend/lib/api.ts +323 -12
- frontend/lib/settings.ts +5 -0
- frontend/lib/websocket-native.ts +4 -8
- frontend/lib/websocket.ts +1 -2
- frontend/package-lock.json +733 -36
- frontend/package.json +2 -0
- frontend/public/assets/icons/providers/lambda_labs.svg +22 -0
- frontend/public/assets/icons/providers/prime_intellect.svg +18 -0
- frontend/public/assets/icons/providers/runpod.svg +9 -0
- frontend/public/assets/icons/providers/vastai.svg +1 -0
- frontend/settings.md +54 -0
- frontend/tsconfig.tsbuildinfo +1 -0
- frontend/types/claude.ts +194 -0
- kernel_run.py +13 -0
- {more_compute-0.4.4.dist-info → more_compute-0.5.0.dist-info}/METADATA +53 -11
- {more_compute-0.4.4.dist-info → more_compute-0.5.0.dist-info}/RECORD +56 -37
- {more_compute-0.4.4.dist-info → more_compute-0.5.0.dist-info}/WHEEL +1 -1
- morecompute/__init__.py +1 -1
- morecompute/__version__.py +1 -1
- morecompute/execution/executor.py +24 -67
- morecompute/execution/worker.py +6 -72
- morecompute/models/api_models.py +62 -0
- morecompute/notebook.py +11 -0
- morecompute/server.py +641 -133
- morecompute/services/claude_service.py +392 -0
- morecompute/services/pod_manager.py +168 -67
- morecompute/services/pod_monitor.py +67 -39
- morecompute/services/prime_intellect.py +0 -4
- morecompute/services/providers/__init__.py +92 -0
- morecompute/services/providers/base_provider.py +336 -0
- morecompute/services/providers/lambda_labs_provider.py +394 -0
- morecompute/services/providers/provider_factory.py +194 -0
- morecompute/services/providers/runpod_provider.py +504 -0
- morecompute/services/providers/vastai_provider.py +407 -0
- morecompute/utils/cell_magics.py +0 -3
- morecompute/utils/config_util.py +93 -3
- morecompute/utils/special_commands.py +5 -32
- morecompute/utils/version_check.py +117 -0
- frontend/styling_README.md +0 -23
- {more_compute-0.4.4.dist-info/licenses → more_compute-0.5.0.dist-info}/LICENSE +0 -0
- {more_compute-0.4.4.dist-info → more_compute-0.5.0.dist-info}/entry_points.txt +0 -0
- {more_compute-0.4.4.dist-info → more_compute-0.5.0.dist-info}/top_level.txt +0 -0
frontend/app/globals.css
CHANGED
|
@@ -454,7 +454,7 @@ body {
|
|
|
454
454
|
.cell-status-indicator .status-timer {
|
|
455
455
|
margin-left: 0;
|
|
456
456
|
font-size: 9px;
|
|
457
|
-
color:
|
|
457
|
+
color: var(--text-secondary);
|
|
458
458
|
min-width: auto;
|
|
459
459
|
text-align: center;
|
|
460
460
|
line-height: 1;
|
|
@@ -855,8 +855,8 @@ body {
|
|
|
855
855
|
right: auto;
|
|
856
856
|
opacity: 1;
|
|
857
857
|
padding: 8px 12px;
|
|
858
|
-
background:
|
|
859
|
-
border-bottom: 1px solid
|
|
858
|
+
background: var(--mc-cell-background);
|
|
859
|
+
border-bottom: 1px solid var(--mc-border);
|
|
860
860
|
justify-content: flex-end;
|
|
861
861
|
}
|
|
862
862
|
}
|
|
@@ -864,6 +864,7 @@ body {
|
|
|
864
864
|
/* Sidebar Styles */
|
|
865
865
|
.sidebar {
|
|
866
866
|
width: 60px;
|
|
867
|
+
height: 100vh;
|
|
867
868
|
background: var(--mc-sidebar-background);
|
|
868
869
|
border-right: 1px solid var(--mc-border);
|
|
869
870
|
display: flex;
|
|
@@ -1089,13 +1090,13 @@ body {
|
|
|
1089
1090
|
padding: 8px 0;
|
|
1090
1091
|
margin-bottom: 12px;
|
|
1091
1092
|
font-size: 12px;
|
|
1092
|
-
color:
|
|
1093
|
-
border-bottom: 1px solid
|
|
1093
|
+
color: var(--text-secondary);
|
|
1094
|
+
border-bottom: 1px solid var(--mc-border);
|
|
1094
1095
|
}
|
|
1095
1096
|
|
|
1096
1097
|
.file-path-label {
|
|
1097
1098
|
font-weight: 600;
|
|
1098
|
-
color:
|
|
1099
|
+
color: var(--mc-sidebar-foreground);
|
|
1099
1100
|
}
|
|
1100
1101
|
|
|
1101
1102
|
.popup-body {
|
|
@@ -1138,7 +1139,7 @@ body {
|
|
|
1138
1139
|
width: 18px;
|
|
1139
1140
|
height: 18px;
|
|
1140
1141
|
margin-right: 10px;
|
|
1141
|
-
color:
|
|
1142
|
+
color: var(--mc-sidebar-foreground);
|
|
1142
1143
|
}
|
|
1143
1144
|
|
|
1144
1145
|
.file-meta {
|
|
@@ -1153,22 +1154,22 @@ body {
|
|
|
1153
1154
|
|
|
1154
1155
|
.file-details {
|
|
1155
1156
|
font-size: 11px;
|
|
1156
|
-
color:
|
|
1157
|
+
color: var(--text-secondary);
|
|
1157
1158
|
}
|
|
1158
1159
|
|
|
1159
1160
|
.file-preview {
|
|
1160
1161
|
display: flex;
|
|
1161
1162
|
flex-direction: column;
|
|
1162
1163
|
flex: 1;
|
|
1163
|
-
border: 1px solid
|
|
1164
|
+
border: 1px solid var(--mc-border);
|
|
1164
1165
|
border-radius: 8px;
|
|
1165
1166
|
overflow: hidden;
|
|
1166
1167
|
}
|
|
1167
1168
|
|
|
1168
1169
|
.file-preview-header {
|
|
1169
1170
|
padding: 12px 16px;
|
|
1170
|
-
background:
|
|
1171
|
-
border-bottom: 1px solid
|
|
1171
|
+
background: var(--mc-cell-background);
|
|
1172
|
+
border-bottom: 1px solid var(--mc-border);
|
|
1172
1173
|
}
|
|
1173
1174
|
|
|
1174
1175
|
.file-preview-body {
|
|
@@ -1182,7 +1183,7 @@ body {
|
|
|
1182
1183
|
}
|
|
1183
1184
|
|
|
1184
1185
|
.file-preview-loading {
|
|
1185
|
-
color:
|
|
1186
|
+
color: var(--text-secondary);
|
|
1186
1187
|
font-size: 13px;
|
|
1187
1188
|
}
|
|
1188
1189
|
|
|
@@ -1195,7 +1196,7 @@ body {
|
|
|
1195
1196
|
}
|
|
1196
1197
|
|
|
1197
1198
|
.file-tree.empty {
|
|
1198
|
-
color:
|
|
1199
|
+
color: var(--text-secondary);
|
|
1199
1200
|
font-style: italic;
|
|
1200
1201
|
padding: 8px;
|
|
1201
1202
|
}
|
|
@@ -1235,12 +1236,12 @@ body {
|
|
|
1235
1236
|
|
|
1236
1237
|
.env-name {
|
|
1237
1238
|
font-weight: 500;
|
|
1238
|
-
color:
|
|
1239
|
+
color: var(--mc-text-color);
|
|
1239
1240
|
}
|
|
1240
1241
|
|
|
1241
1242
|
.env-path {
|
|
1242
1243
|
font-size: 12px;
|
|
1243
|
-
color:
|
|
1244
|
+
color: var(--text-secondary);
|
|
1244
1245
|
margin-top: 2px;
|
|
1245
1246
|
}
|
|
1246
1247
|
|
|
@@ -1304,6 +1305,39 @@ body {
|
|
|
1304
1305
|
font-size: 14px;
|
|
1305
1306
|
}
|
|
1306
1307
|
|
|
1308
|
+
.metrics-provider-badge {
|
|
1309
|
+
display: flex;
|
|
1310
|
+
align-items: center;
|
|
1311
|
+
gap: 6px;
|
|
1312
|
+
padding: 6px 10px;
|
|
1313
|
+
margin-bottom: 10px;
|
|
1314
|
+
border-radius: 6px;
|
|
1315
|
+
font-size: 11px;
|
|
1316
|
+
font-weight: 500;
|
|
1317
|
+
}
|
|
1318
|
+
|
|
1319
|
+
.metrics-provider-badge.ssh-provider {
|
|
1320
|
+
background: rgba(16, 185, 129, 0.15);
|
|
1321
|
+
color: #10b981;
|
|
1322
|
+
}
|
|
1323
|
+
|
|
1324
|
+
.metrics-provider-badge.modal-provider {
|
|
1325
|
+
background: rgba(245, 158, 11, 0.15);
|
|
1326
|
+
color: #f59e0b;
|
|
1327
|
+
}
|
|
1328
|
+
|
|
1329
|
+
.metrics-provider-badge .provider-dot {
|
|
1330
|
+
width: 6px;
|
|
1331
|
+
height: 6px;
|
|
1332
|
+
border-radius: 50%;
|
|
1333
|
+
background-color: currentColor;
|
|
1334
|
+
}
|
|
1335
|
+
|
|
1336
|
+
.metrics-provider-badge .provider-note {
|
|
1337
|
+
opacity: 0.7;
|
|
1338
|
+
font-size: 10px;
|
|
1339
|
+
}
|
|
1340
|
+
|
|
1307
1341
|
.metrics-grid {
|
|
1308
1342
|
display: grid;
|
|
1309
1343
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
@@ -1357,19 +1391,19 @@ body {
|
|
|
1357
1391
|
display: flex;
|
|
1358
1392
|
align-items: center;
|
|
1359
1393
|
justify-content: space-between;
|
|
1360
|
-
color:
|
|
1394
|
+
color: var(--text-secondary);
|
|
1361
1395
|
}
|
|
1362
1396
|
|
|
1363
1397
|
.metrics-placeholder {
|
|
1364
1398
|
text-align: center;
|
|
1365
1399
|
padding: 40px 20px;
|
|
1366
|
-
color:
|
|
1400
|
+
color: var(--text-secondary);
|
|
1367
1401
|
}
|
|
1368
1402
|
|
|
1369
1403
|
.metrics-placeholder h3 {
|
|
1370
1404
|
font-size: 24px;
|
|
1371
1405
|
margin-bottom: 16px;
|
|
1372
|
-
color:
|
|
1406
|
+
color: var(--mc-text-color);
|
|
1373
1407
|
}
|
|
1374
1408
|
|
|
1375
1409
|
.metrics-placeholder p {
|
|
@@ -1378,8 +1412,8 @@ body {
|
|
|
1378
1412
|
}
|
|
1379
1413
|
|
|
1380
1414
|
.coming-soon {
|
|
1381
|
-
background:
|
|
1382
|
-
border: 1px solid
|
|
1415
|
+
background: var(--mc-cell-background);
|
|
1416
|
+
border: 1px solid var(--mc-border);
|
|
1383
1417
|
border-radius: 8px;
|
|
1384
1418
|
padding: 24px;
|
|
1385
1419
|
margin: 20px 0;
|
|
@@ -1397,7 +1431,7 @@ body {
|
|
|
1397
1431
|
display: flex;
|
|
1398
1432
|
align-items: center;
|
|
1399
1433
|
font-size: 14px;
|
|
1400
|
-
color:
|
|
1434
|
+
color: var(--mc-text-color);
|
|
1401
1435
|
}
|
|
1402
1436
|
|
|
1403
1437
|
.coming-soon li:last-child {
|
|
@@ -1447,7 +1481,7 @@ body {
|
|
|
1447
1481
|
}
|
|
1448
1482
|
|
|
1449
1483
|
.packages-search-icon {
|
|
1450
|
-
color:
|
|
1484
|
+
color: var(--text-secondary);
|
|
1451
1485
|
}
|
|
1452
1486
|
|
|
1453
1487
|
.packages-subtext {
|
|
@@ -1455,7 +1489,7 @@ body {
|
|
|
1455
1489
|
align-items: center;
|
|
1456
1490
|
gap: 6px;
|
|
1457
1491
|
font-size: 12px;
|
|
1458
|
-
color:
|
|
1492
|
+
color: var(--text-secondary);
|
|
1459
1493
|
}
|
|
1460
1494
|
|
|
1461
1495
|
.packages-table {
|
|
@@ -1525,7 +1559,7 @@ body {
|
|
|
1525
1559
|
}
|
|
1526
1560
|
|
|
1527
1561
|
.package-version {
|
|
1528
|
-
color:
|
|
1562
|
+
color: var(--mc-text-color);
|
|
1529
1563
|
}
|
|
1530
1564
|
|
|
1531
1565
|
.file-tree-container {
|
|
@@ -1607,7 +1641,7 @@ body {
|
|
|
1607
1641
|
|
|
1608
1642
|
.monaco-editor .margin-view-overlays {
|
|
1609
1643
|
background: var(--mc-cell-background) !important;
|
|
1610
|
-
border-right: 1px solid
|
|
1644
|
+
border-right: 1px solid var(--mc-border) !important;
|
|
1611
1645
|
}
|
|
1612
1646
|
|
|
1613
1647
|
/* Remove all line highlights */
|
|
@@ -1656,7 +1690,7 @@ body {
|
|
|
1656
1690
|
|
|
1657
1691
|
/* Monaco hover widget styling */
|
|
1658
1692
|
.monaco-editor .monaco-hover {
|
|
1659
|
-
border: 1px solid
|
|
1693
|
+
border: 1px solid var(--mc-border) !important;
|
|
1660
1694
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important;
|
|
1661
1695
|
border-radius: 6px !important;
|
|
1662
1696
|
background: white !important;
|
|
@@ -1665,7 +1699,7 @@ body {
|
|
|
1665
1699
|
|
|
1666
1700
|
/* Monaco parameter hints */
|
|
1667
1701
|
.monaco-editor .parameter-hints-widget {
|
|
1668
|
-
border: 1px solid
|
|
1702
|
+
border: 1px solid var(--mc-border) !important;
|
|
1669
1703
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important;
|
|
1670
1704
|
border-radius: 6px !important;
|
|
1671
1705
|
z-index: 100000 !important;
|
|
@@ -1689,3 +1723,676 @@ body {
|
|
|
1689
1723
|
padding: 0 !important;
|
|
1690
1724
|
overflow: visible;
|
|
1691
1725
|
}
|
|
1726
|
+
|
|
1727
|
+
/* ============================================================================
|
|
1728
|
+
Claude AI Panel Styles
|
|
1729
|
+
============================================================================ */
|
|
1730
|
+
|
|
1731
|
+
/* Sidebar spacer to push Claude icon to bottom */
|
|
1732
|
+
/* Claude sidebar item - follows standard theming */
|
|
1733
|
+
.sidebar-item.claude-item.active .sidebar-icon-wrapper {
|
|
1734
|
+
color: var(--mc-primary);
|
|
1735
|
+
}
|
|
1736
|
+
|
|
1737
|
+
/* Claude Panel - Right Side */
|
|
1738
|
+
.claude-panel {
|
|
1739
|
+
position: fixed;
|
|
1740
|
+
right: 0;
|
|
1741
|
+
top: 0;
|
|
1742
|
+
width: 400px;
|
|
1743
|
+
height: 100vh;
|
|
1744
|
+
background: var(--mc-background);
|
|
1745
|
+
border-left: 1px solid var(--mc-border);
|
|
1746
|
+
box-shadow: -2px 0 10px rgba(0, 0, 0, 0.1);
|
|
1747
|
+
z-index: 45;
|
|
1748
|
+
display: flex;
|
|
1749
|
+
flex-direction: column;
|
|
1750
|
+
}
|
|
1751
|
+
|
|
1752
|
+
.claude-panel-header {
|
|
1753
|
+
display: flex;
|
|
1754
|
+
align-items: center;
|
|
1755
|
+
justify-content: space-between;
|
|
1756
|
+
padding: 16px 20px;
|
|
1757
|
+
border-bottom: 1px solid var(--mc-border);
|
|
1758
|
+
background: var(--mc-cell-background);
|
|
1759
|
+
}
|
|
1760
|
+
|
|
1761
|
+
.claude-panel-title {
|
|
1762
|
+
display: flex;
|
|
1763
|
+
align-items: center;
|
|
1764
|
+
gap: 8px;
|
|
1765
|
+
font-weight: 600;
|
|
1766
|
+
font-size: 14px;
|
|
1767
|
+
color: var(--mc-text-color);
|
|
1768
|
+
}
|
|
1769
|
+
|
|
1770
|
+
.claude-panel-title svg {
|
|
1771
|
+
color: var(--mc-primary);
|
|
1772
|
+
}
|
|
1773
|
+
|
|
1774
|
+
/* Model selector segmented control */
|
|
1775
|
+
.claude-model-selector {
|
|
1776
|
+
display: flex;
|
|
1777
|
+
background: var(--mc-secondary);
|
|
1778
|
+
border-radius: 6px;
|
|
1779
|
+
padding: 2px;
|
|
1780
|
+
gap: 2px;
|
|
1781
|
+
}
|
|
1782
|
+
|
|
1783
|
+
.claude-model-option {
|
|
1784
|
+
padding: 4px 8px;
|
|
1785
|
+
font-size: 11px;
|
|
1786
|
+
font-weight: 500;
|
|
1787
|
+
background: transparent;
|
|
1788
|
+
color: var(--mc-text-color);
|
|
1789
|
+
border: none;
|
|
1790
|
+
border-radius: 4px;
|
|
1791
|
+
cursor: pointer;
|
|
1792
|
+
transition: all 0.15s ease;
|
|
1793
|
+
opacity: 0.7;
|
|
1794
|
+
}
|
|
1795
|
+
|
|
1796
|
+
.claude-model-option:hover {
|
|
1797
|
+
opacity: 1;
|
|
1798
|
+
background: var(--mc-secondary-hover);
|
|
1799
|
+
}
|
|
1800
|
+
|
|
1801
|
+
.claude-model-option.active {
|
|
1802
|
+
background: var(--mc-cell-background);
|
|
1803
|
+
color: var(--mc-text-color);
|
|
1804
|
+
opacity: 1;
|
|
1805
|
+
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
|
|
1806
|
+
}
|
|
1807
|
+
|
|
1808
|
+
/* Model row at bottom */
|
|
1809
|
+
.claude-model-row {
|
|
1810
|
+
display: flex;
|
|
1811
|
+
align-items: center;
|
|
1812
|
+
gap: 8px;
|
|
1813
|
+
padding: 8px 12px;
|
|
1814
|
+
border-top: 1px solid var(--mc-border);
|
|
1815
|
+
}
|
|
1816
|
+
|
|
1817
|
+
.claude-model-label {
|
|
1818
|
+
font-size: 11px;
|
|
1819
|
+
color: var(--mc-text-color);
|
|
1820
|
+
opacity: 0.6;
|
|
1821
|
+
}
|
|
1822
|
+
|
|
1823
|
+
.claude-panel-actions {
|
|
1824
|
+
display: flex;
|
|
1825
|
+
gap: 4px;
|
|
1826
|
+
}
|
|
1827
|
+
|
|
1828
|
+
.claude-panel-btn {
|
|
1829
|
+
background: transparent;
|
|
1830
|
+
border: none;
|
|
1831
|
+
padding: 6px;
|
|
1832
|
+
border-radius: 6px;
|
|
1833
|
+
cursor: pointer;
|
|
1834
|
+
color: var(--mc-text-color);
|
|
1835
|
+
opacity: 0.6;
|
|
1836
|
+
transition: all 0.2s ease;
|
|
1837
|
+
}
|
|
1838
|
+
|
|
1839
|
+
.claude-panel-btn:hover {
|
|
1840
|
+
background: var(--mc-secondary);
|
|
1841
|
+
opacity: 1;
|
|
1842
|
+
}
|
|
1843
|
+
|
|
1844
|
+
/* API Key Configuration */
|
|
1845
|
+
.claude-config-banner {
|
|
1846
|
+
padding: 14px 16px;
|
|
1847
|
+
margin: 0 16px 12px;
|
|
1848
|
+
background: var(--mc-cell-background);
|
|
1849
|
+
border: 1px solid var(--mc-border);
|
|
1850
|
+
border-radius: 10px;
|
|
1851
|
+
display: flex;
|
|
1852
|
+
flex-direction: column;
|
|
1853
|
+
gap: 10px;
|
|
1854
|
+
font-size: 12px;
|
|
1855
|
+
color: var(--mc-text-color);
|
|
1856
|
+
}
|
|
1857
|
+
|
|
1858
|
+
.claude-config-title {
|
|
1859
|
+
display: flex;
|
|
1860
|
+
align-items: center;
|
|
1861
|
+
gap: 8px;
|
|
1862
|
+
font-weight: 600;
|
|
1863
|
+
}
|
|
1864
|
+
|
|
1865
|
+
.claude-config-form {
|
|
1866
|
+
display: flex;
|
|
1867
|
+
gap: 8px;
|
|
1868
|
+
}
|
|
1869
|
+
|
|
1870
|
+
.claude-config-input {
|
|
1871
|
+
flex: 1;
|
|
1872
|
+
padding: 8px 12px;
|
|
1873
|
+
border: 1px solid var(--mc-border);
|
|
1874
|
+
border-radius: 8px;
|
|
1875
|
+
font-size: 12px;
|
|
1876
|
+
background: var(--mc-input-background);
|
|
1877
|
+
color: var(--mc-text-color);
|
|
1878
|
+
}
|
|
1879
|
+
|
|
1880
|
+
.claude-config-btn {
|
|
1881
|
+
padding: 8px 16px;
|
|
1882
|
+
background: var(--mc-primary);
|
|
1883
|
+
color: var(--mc-button-foreground);
|
|
1884
|
+
border: none;
|
|
1885
|
+
border-radius: 8px;
|
|
1886
|
+
font-weight: 600;
|
|
1887
|
+
cursor: pointer;
|
|
1888
|
+
transition: background 0.2s ease;
|
|
1889
|
+
}
|
|
1890
|
+
|
|
1891
|
+
.claude-config-btn:hover:not(:disabled) {
|
|
1892
|
+
background: var(--mc-primary-hover);
|
|
1893
|
+
}
|
|
1894
|
+
|
|
1895
|
+
.claude-config-btn:disabled {
|
|
1896
|
+
opacity: 0.6;
|
|
1897
|
+
cursor: not-allowed;
|
|
1898
|
+
}
|
|
1899
|
+
|
|
1900
|
+
/* Error Banner */
|
|
1901
|
+
.claude-error-banner {
|
|
1902
|
+
padding: 12px 20px;
|
|
1903
|
+
background: #fef2f2;
|
|
1904
|
+
border-bottom: 1px solid #fecaca;
|
|
1905
|
+
display: flex;
|
|
1906
|
+
align-items: center;
|
|
1907
|
+
gap: 8px;
|
|
1908
|
+
font-size: 13px;
|
|
1909
|
+
color: #dc2626;
|
|
1910
|
+
}
|
|
1911
|
+
|
|
1912
|
+
/* Messages Container */
|
|
1913
|
+
.claude-messages {
|
|
1914
|
+
flex: 1;
|
|
1915
|
+
overflow-y: auto;
|
|
1916
|
+
padding: 16px;
|
|
1917
|
+
display: flex;
|
|
1918
|
+
flex-direction: column;
|
|
1919
|
+
gap: 16px;
|
|
1920
|
+
}
|
|
1921
|
+
|
|
1922
|
+
/* Empty State */
|
|
1923
|
+
.claude-empty-state {
|
|
1924
|
+
display: flex;
|
|
1925
|
+
flex-direction: column;
|
|
1926
|
+
align-items: center;
|
|
1927
|
+
justify-content: center;
|
|
1928
|
+
height: 100%;
|
|
1929
|
+
color: var(--mc-text-color);
|
|
1930
|
+
opacity: 0.6;
|
|
1931
|
+
text-align: center;
|
|
1932
|
+
gap: 12px;
|
|
1933
|
+
}
|
|
1934
|
+
|
|
1935
|
+
.claude-empty-state svg {
|
|
1936
|
+
color: var(--mc-primary);
|
|
1937
|
+
opacity: 0.6;
|
|
1938
|
+
}
|
|
1939
|
+
|
|
1940
|
+
.claude-empty-hint {
|
|
1941
|
+
font-size: 12px;
|
|
1942
|
+
opacity: 0.7;
|
|
1943
|
+
}
|
|
1944
|
+
|
|
1945
|
+
/* Message Bubbles */
|
|
1946
|
+
.claude-message {
|
|
1947
|
+
display: flex;
|
|
1948
|
+
flex-direction: column;
|
|
1949
|
+
}
|
|
1950
|
+
|
|
1951
|
+
.claude-message.user {
|
|
1952
|
+
align-items: flex-end;
|
|
1953
|
+
}
|
|
1954
|
+
|
|
1955
|
+
.claude-message.assistant {
|
|
1956
|
+
align-items: flex-start;
|
|
1957
|
+
}
|
|
1958
|
+
|
|
1959
|
+
.claude-message-content {
|
|
1960
|
+
max-width: 90%;
|
|
1961
|
+
padding: 12px 16px;
|
|
1962
|
+
border-radius: 12px;
|
|
1963
|
+
font-size: 13px;
|
|
1964
|
+
line-height: 1.5;
|
|
1965
|
+
}
|
|
1966
|
+
|
|
1967
|
+
.claude-message.user .claude-message-content {
|
|
1968
|
+
background: var(--mc-primary);
|
|
1969
|
+
color: var(--mc-button-foreground);
|
|
1970
|
+
border-bottom-right-radius: 4px;
|
|
1971
|
+
}
|
|
1972
|
+
|
|
1973
|
+
.claude-message.assistant .claude-message-content {
|
|
1974
|
+
background: var(--mc-cell-background);
|
|
1975
|
+
border: 1px solid var(--mc-border);
|
|
1976
|
+
color: var(--mc-text-color);
|
|
1977
|
+
border-bottom-left-radius: 4px;
|
|
1978
|
+
}
|
|
1979
|
+
|
|
1980
|
+
.claude-message-text {
|
|
1981
|
+
white-space: normal;
|
|
1982
|
+
word-wrap: break-word;
|
|
1983
|
+
}
|
|
1984
|
+
|
|
1985
|
+
/* Claude Markdown Rendering */
|
|
1986
|
+
.claude-markdown h1,
|
|
1987
|
+
.claude-markdown h2,
|
|
1988
|
+
.claude-markdown h3 {
|
|
1989
|
+
margin: 12px 0 8px 0;
|
|
1990
|
+
font-weight: 600;
|
|
1991
|
+
color: var(--mc-text-color);
|
|
1992
|
+
}
|
|
1993
|
+
|
|
1994
|
+
.claude-markdown h1 { font-size: 1.25em; }
|
|
1995
|
+
.claude-markdown h2 { font-size: 1.1em; }
|
|
1996
|
+
.claude-markdown h3 { font-size: 1em; }
|
|
1997
|
+
|
|
1998
|
+
.claude-markdown p {
|
|
1999
|
+
margin: 8px 0;
|
|
2000
|
+
}
|
|
2001
|
+
|
|
2002
|
+
.claude-markdown ul,
|
|
2003
|
+
.claude-markdown ol {
|
|
2004
|
+
margin: 8px 0;
|
|
2005
|
+
padding-left: 20px;
|
|
2006
|
+
}
|
|
2007
|
+
|
|
2008
|
+
.claude-markdown li {
|
|
2009
|
+
margin: 4px 0;
|
|
2010
|
+
}
|
|
2011
|
+
|
|
2012
|
+
.claude-markdown strong {
|
|
2013
|
+
font-weight: 600;
|
|
2014
|
+
}
|
|
2015
|
+
|
|
2016
|
+
.claude-markdown em {
|
|
2017
|
+
font-style: italic;
|
|
2018
|
+
}
|
|
2019
|
+
|
|
2020
|
+
.claude-markdown a {
|
|
2021
|
+
color: var(--mc-primary);
|
|
2022
|
+
text-decoration: none;
|
|
2023
|
+
}
|
|
2024
|
+
|
|
2025
|
+
.claude-markdown a:hover {
|
|
2026
|
+
text-decoration: underline;
|
|
2027
|
+
}
|
|
2028
|
+
|
|
2029
|
+
/* Inline code */
|
|
2030
|
+
.claude-inline-code {
|
|
2031
|
+
background: var(--mc-secondary);
|
|
2032
|
+
padding: 2px 6px;
|
|
2033
|
+
border-radius: 4px;
|
|
2034
|
+
font-family: 'Fira', 'SF Mono', Monaco, monospace;
|
|
2035
|
+
font-size: 0.9em;
|
|
2036
|
+
}
|
|
2037
|
+
|
|
2038
|
+
/* Code blocks in Claude messages */
|
|
2039
|
+
.claude-code-block {
|
|
2040
|
+
margin: 12px 0;
|
|
2041
|
+
border-radius: 8px;
|
|
2042
|
+
overflow: hidden;
|
|
2043
|
+
background: var(--mc-cell-background);
|
|
2044
|
+
border: 1px solid var(--mc-border);
|
|
2045
|
+
}
|
|
2046
|
+
|
|
2047
|
+
.claude-code-header {
|
|
2048
|
+
display: flex;
|
|
2049
|
+
align-items: center;
|
|
2050
|
+
justify-content: space-between;
|
|
2051
|
+
padding: 6px 12px;
|
|
2052
|
+
background: var(--mc-secondary);
|
|
2053
|
+
border-bottom: 1px solid var(--mc-border);
|
|
2054
|
+
}
|
|
2055
|
+
|
|
2056
|
+
.claude-code-lang {
|
|
2057
|
+
font-size: 11px;
|
|
2058
|
+
font-weight: 500;
|
|
2059
|
+
color: var(--mc-text-color);
|
|
2060
|
+
opacity: 0.7;
|
|
2061
|
+
text-transform: lowercase;
|
|
2062
|
+
}
|
|
2063
|
+
|
|
2064
|
+
.claude-code-block pre {
|
|
2065
|
+
margin: 0;
|
|
2066
|
+
padding: 12px;
|
|
2067
|
+
overflow-x: auto;
|
|
2068
|
+
background: var(--mc-cell-background);
|
|
2069
|
+
}
|
|
2070
|
+
|
|
2071
|
+
.claude-code-block code {
|
|
2072
|
+
font-family: 'Fira', 'SF Mono', Monaco, monospace;
|
|
2073
|
+
font-size: 12px;
|
|
2074
|
+
line-height: 1.5;
|
|
2075
|
+
color: var(--mc-text-color);
|
|
2076
|
+
}
|
|
2077
|
+
|
|
2078
|
+
/* Streaming indicator */
|
|
2079
|
+
.claude-streaming {
|
|
2080
|
+
white-space: normal;
|
|
2081
|
+
}
|
|
2082
|
+
|
|
2083
|
+
.claude-cursor {
|
|
2084
|
+
animation: blink 1s infinite;
|
|
2085
|
+
}
|
|
2086
|
+
|
|
2087
|
+
@keyframes cursor-blink {
|
|
2088
|
+
0%, 50% { opacity: 1; }
|
|
2089
|
+
51%, 100% { opacity: 0; }
|
|
2090
|
+
}
|
|
2091
|
+
|
|
2092
|
+
/* Edit Cards */
|
|
2093
|
+
.claude-edits {
|
|
2094
|
+
margin-top: 12px;
|
|
2095
|
+
display: flex;
|
|
2096
|
+
flex-direction: column;
|
|
2097
|
+
gap: 8px;
|
|
2098
|
+
}
|
|
2099
|
+
|
|
2100
|
+
.claude-edit-card {
|
|
2101
|
+
background: var(--mc-background);
|
|
2102
|
+
border: 1px solid var(--mc-border);
|
|
2103
|
+
border-radius: 8px;
|
|
2104
|
+
overflow: hidden;
|
|
2105
|
+
}
|
|
2106
|
+
|
|
2107
|
+
.claude-edit-card.applied {
|
|
2108
|
+
border-color: #22c55e;
|
|
2109
|
+
background: rgba(34, 197, 94, 0.05);
|
|
2110
|
+
}
|
|
2111
|
+
|
|
2112
|
+
.claude-edit-card.rejected {
|
|
2113
|
+
border-color: #ef4444;
|
|
2114
|
+
background: rgba(239, 68, 68, 0.05);
|
|
2115
|
+
opacity: 0.6;
|
|
2116
|
+
}
|
|
2117
|
+
|
|
2118
|
+
.claude-edit-header {
|
|
2119
|
+
display: flex;
|
|
2120
|
+
align-items: center;
|
|
2121
|
+
justify-content: space-between;
|
|
2122
|
+
padding: 8px 12px;
|
|
2123
|
+
border-bottom: 1px solid var(--mc-border);
|
|
2124
|
+
background: var(--mc-secondary);
|
|
2125
|
+
}
|
|
2126
|
+
|
|
2127
|
+
.claude-edit-cell {
|
|
2128
|
+
font-size: 11px;
|
|
2129
|
+
font-weight: 600;
|
|
2130
|
+
color: var(--mc-text-color);
|
|
2131
|
+
opacity: 0.8;
|
|
2132
|
+
}
|
|
2133
|
+
|
|
2134
|
+
.claude-edit-actions {
|
|
2135
|
+
display: flex;
|
|
2136
|
+
gap: 4px;
|
|
2137
|
+
}
|
|
2138
|
+
|
|
2139
|
+
.claude-edit-btn {
|
|
2140
|
+
display: flex;
|
|
2141
|
+
align-items: center;
|
|
2142
|
+
gap: 4px;
|
|
2143
|
+
padding: 4px 8px;
|
|
2144
|
+
border: none;
|
|
2145
|
+
border-radius: 4px;
|
|
2146
|
+
font-size: 11px;
|
|
2147
|
+
font-weight: 500;
|
|
2148
|
+
cursor: pointer;
|
|
2149
|
+
transition: all 0.2s ease;
|
|
2150
|
+
}
|
|
2151
|
+
|
|
2152
|
+
.claude-edit-btn.accept {
|
|
2153
|
+
background: #22c55e;
|
|
2154
|
+
color: white;
|
|
2155
|
+
}
|
|
2156
|
+
|
|
2157
|
+
.claude-edit-btn.accept:hover {
|
|
2158
|
+
background: #16a34a;
|
|
2159
|
+
}
|
|
2160
|
+
|
|
2161
|
+
.claude-edit-btn.reject {
|
|
2162
|
+
background: var(--mc-cell-background);
|
|
2163
|
+
color: var(--mc-text-color);
|
|
2164
|
+
border: 1px solid var(--mc-border);
|
|
2165
|
+
}
|
|
2166
|
+
|
|
2167
|
+
.claude-edit-btn.reject:hover {
|
|
2168
|
+
background: #fef2f2;
|
|
2169
|
+
border-color: #ef4444;
|
|
2170
|
+
color: #ef4444;
|
|
2171
|
+
}
|
|
2172
|
+
|
|
2173
|
+
.claude-edit-status {
|
|
2174
|
+
font-size: 11px;
|
|
2175
|
+
font-weight: 500;
|
|
2176
|
+
padding: 2px 8px;
|
|
2177
|
+
border-radius: 4px;
|
|
2178
|
+
}
|
|
2179
|
+
|
|
2180
|
+
.claude-edit-status.applied {
|
|
2181
|
+
background: #dcfce7;
|
|
2182
|
+
color: #16a34a;
|
|
2183
|
+
}
|
|
2184
|
+
|
|
2185
|
+
.claude-edit-status.rejected {
|
|
2186
|
+
background: #fef2f2;
|
|
2187
|
+
color: #dc2626;
|
|
2188
|
+
}
|
|
2189
|
+
|
|
2190
|
+
.claude-edit-explanation {
|
|
2191
|
+
padding: 8px 12px;
|
|
2192
|
+
font-size: 12px;
|
|
2193
|
+
color: var(--mc-text-color);
|
|
2194
|
+
opacity: 0.8;
|
|
2195
|
+
border-bottom: 1px solid var(--mc-border);
|
|
2196
|
+
}
|
|
2197
|
+
|
|
2198
|
+
.claude-edit-preview {
|
|
2199
|
+
max-height: 300px;
|
|
2200
|
+
overflow-y: auto;
|
|
2201
|
+
background: var(--mc-cell-background);
|
|
2202
|
+
}
|
|
2203
|
+
|
|
2204
|
+
.claude-edit-code {
|
|
2205
|
+
margin: 0;
|
|
2206
|
+
padding: 12px;
|
|
2207
|
+
font-family: 'Fira', 'SF Mono', Monaco, monospace;
|
|
2208
|
+
font-size: 12px;
|
|
2209
|
+
line-height: 1.5;
|
|
2210
|
+
white-space: pre;
|
|
2211
|
+
overflow-x: auto;
|
|
2212
|
+
color: var(--mc-text-color);
|
|
2213
|
+
background: transparent;
|
|
2214
|
+
}
|
|
2215
|
+
|
|
2216
|
+
.claude-edit-code code {
|
|
2217
|
+
font-family: inherit;
|
|
2218
|
+
background: transparent;
|
|
2219
|
+
}
|
|
2220
|
+
|
|
2221
|
+
/* Copy button in edit card */
|
|
2222
|
+
.claude-edit-btn.copy {
|
|
2223
|
+
background: transparent;
|
|
2224
|
+
color: var(--mc-text-color);
|
|
2225
|
+
opacity: 0.6;
|
|
2226
|
+
padding: 4px 6px;
|
|
2227
|
+
}
|
|
2228
|
+
|
|
2229
|
+
.claude-edit-btn.copy:hover {
|
|
2230
|
+
opacity: 1;
|
|
2231
|
+
background: var(--mc-secondary);
|
|
2232
|
+
}
|
|
2233
|
+
|
|
2234
|
+
/* Input Container */
|
|
2235
|
+
.claude-input-container {
|
|
2236
|
+
display: flex;
|
|
2237
|
+
gap: 8px;
|
|
2238
|
+
padding: 16px;
|
|
2239
|
+
border-top: 1px solid var(--mc-border);
|
|
2240
|
+
background: var(--mc-cell-background);
|
|
2241
|
+
}
|
|
2242
|
+
|
|
2243
|
+
.claude-input {
|
|
2244
|
+
flex: 1;
|
|
2245
|
+
padding: 10px 14px;
|
|
2246
|
+
border: 1px solid var(--mc-border);
|
|
2247
|
+
border-radius: 8px;
|
|
2248
|
+
font-size: 13px;
|
|
2249
|
+
background: var(--mc-background);
|
|
2250
|
+
color: var(--mc-text-color);
|
|
2251
|
+
resize: none;
|
|
2252
|
+
min-height: 40px;
|
|
2253
|
+
max-height: 120px;
|
|
2254
|
+
font-family: inherit;
|
|
2255
|
+
}
|
|
2256
|
+
|
|
2257
|
+
.claude-input:focus {
|
|
2258
|
+
outline: none;
|
|
2259
|
+
border-color: var(--mc-primary);
|
|
2260
|
+
}
|
|
2261
|
+
|
|
2262
|
+
.claude-input:disabled {
|
|
2263
|
+
opacity: 0.6;
|
|
2264
|
+
cursor: not-allowed;
|
|
2265
|
+
}
|
|
2266
|
+
|
|
2267
|
+
.claude-send-btn {
|
|
2268
|
+
padding: 10px 14px;
|
|
2269
|
+
background: var(--mc-primary);
|
|
2270
|
+
color: var(--mc-button-foreground);
|
|
2271
|
+
border: none;
|
|
2272
|
+
border-radius: 8px;
|
|
2273
|
+
cursor: pointer;
|
|
2274
|
+
transition: background 0.2s ease;
|
|
2275
|
+
display: flex;
|
|
2276
|
+
align-items: center;
|
|
2277
|
+
justify-content: center;
|
|
2278
|
+
}
|
|
2279
|
+
|
|
2280
|
+
.claude-send-btn:hover:not(:disabled) {
|
|
2281
|
+
background: var(--mc-primary-hover);
|
|
2282
|
+
}
|
|
2283
|
+
|
|
2284
|
+
.claude-send-btn:disabled {
|
|
2285
|
+
opacity: 0.6;
|
|
2286
|
+
cursor: not-allowed;
|
|
2287
|
+
}
|
|
2288
|
+
|
|
2289
|
+
.claude-loading-spinner {
|
|
2290
|
+
width: 16px;
|
|
2291
|
+
height: 16px;
|
|
2292
|
+
border: 2px solid rgba(255, 255, 255, 0.3);
|
|
2293
|
+
border-radius: 50%;
|
|
2294
|
+
border-top-color: white;
|
|
2295
|
+
animation: spin 1s linear infinite;
|
|
2296
|
+
}
|
|
2297
|
+
|
|
2298
|
+
@keyframes spin {
|
|
2299
|
+
to { transform: rotate(360deg); }
|
|
2300
|
+
}
|
|
2301
|
+
|
|
2302
|
+
/* ============================================================================
|
|
2303
|
+
Monaco Inline Diff Styles
|
|
2304
|
+
============================================================================ */
|
|
2305
|
+
|
|
2306
|
+
/* Added lines - green */
|
|
2307
|
+
.monaco-diff-added {
|
|
2308
|
+
background: rgba(34, 197, 94, 0.15) !important;
|
|
2309
|
+
border-left: 3px solid #22c55e !important;
|
|
2310
|
+
}
|
|
2311
|
+
|
|
2312
|
+
.monaco-diff-added-glyph {
|
|
2313
|
+
background: #22c55e;
|
|
2314
|
+
width: 4px !important;
|
|
2315
|
+
margin-left: 2px;
|
|
2316
|
+
}
|
|
2317
|
+
|
|
2318
|
+
/* Removed lines glyph indicator */
|
|
2319
|
+
.monaco-diff-removed-glyph {
|
|
2320
|
+
background: #ef4444;
|
|
2321
|
+
width: 4px !important;
|
|
2322
|
+
margin-left: 2px;
|
|
2323
|
+
}
|
|
2324
|
+
|
|
2325
|
+
/* Removed lines indicator */
|
|
2326
|
+
.monaco-diff-removed-indicator {
|
|
2327
|
+
background: rgba(239, 68, 68, 0.15);
|
|
2328
|
+
color: #ef4444;
|
|
2329
|
+
padding: 0 4px;
|
|
2330
|
+
border-radius: 2px;
|
|
2331
|
+
font-size: 10px;
|
|
2332
|
+
font-weight: 500;
|
|
2333
|
+
margin-left: 4px;
|
|
2334
|
+
}
|
|
2335
|
+
|
|
2336
|
+
/* Diff widget overlay - accept/reject buttons */
|
|
2337
|
+
.diff-widget-overlay {
|
|
2338
|
+
display: flex;
|
|
2339
|
+
gap: 8px;
|
|
2340
|
+
padding: 8px 12px;
|
|
2341
|
+
background: var(--mc-cell-background);
|
|
2342
|
+
border: 1px solid var(--mc-border);
|
|
2343
|
+
border-radius: 8px;
|
|
2344
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
2345
|
+
z-index: 1000;
|
|
2346
|
+
}
|
|
2347
|
+
|
|
2348
|
+
.diff-widget-btn {
|
|
2349
|
+
display: flex;
|
|
2350
|
+
align-items: center;
|
|
2351
|
+
gap: 8px;
|
|
2352
|
+
padding: 6px 12px;
|
|
2353
|
+
border: none;
|
|
2354
|
+
border-radius: 6px;
|
|
2355
|
+
font-size: 12px;
|
|
2356
|
+
font-weight: 500;
|
|
2357
|
+
cursor: pointer;
|
|
2358
|
+
transition: all 0.2s ease;
|
|
2359
|
+
}
|
|
2360
|
+
|
|
2361
|
+
.diff-widget-btn kbd {
|
|
2362
|
+
background: rgba(0, 0, 0, 0.1);
|
|
2363
|
+
padding: 2px 4px;
|
|
2364
|
+
border-radius: 3px;
|
|
2365
|
+
font-size: 10px;
|
|
2366
|
+
font-family: inherit;
|
|
2367
|
+
}
|
|
2368
|
+
|
|
2369
|
+
.diff-widget-btn.accept {
|
|
2370
|
+
background: #22c55e;
|
|
2371
|
+
color: white;
|
|
2372
|
+
}
|
|
2373
|
+
|
|
2374
|
+
.diff-widget-btn.accept:hover {
|
|
2375
|
+
background: #16a34a;
|
|
2376
|
+
}
|
|
2377
|
+
|
|
2378
|
+
.diff-widget-btn.accept kbd {
|
|
2379
|
+
background: rgba(255, 255, 255, 0.2);
|
|
2380
|
+
}
|
|
2381
|
+
|
|
2382
|
+
.diff-widget-btn.reject {
|
|
2383
|
+
background: var(--mc-background);
|
|
2384
|
+
color: var(--mc-text-color);
|
|
2385
|
+
border: 1px solid var(--mc-border);
|
|
2386
|
+
}
|
|
2387
|
+
|
|
2388
|
+
.diff-widget-btn.reject:hover {
|
|
2389
|
+
background: #fef2f2;
|
|
2390
|
+
border-color: #ef4444;
|
|
2391
|
+
color: #ef4444;
|
|
2392
|
+
}
|
|
2393
|
+
|
|
2394
|
+
/* Cell with pending diff */
|
|
2395
|
+
.cell.has-pending-diff {
|
|
2396
|
+
border-color: var(--mc-primary) !important;
|
|
2397
|
+
box-shadow: 0 0 0 2px rgba(var(--mc-primary-rgb, 139, 92, 246), 0.2) !important;
|
|
2398
|
+
}
|