Skip to content

Commit f3351f0

Browse files
Kasper Jungeclaude
authored andcommitted
feat: redesign New Run modal to be prompt-centric with simplified flow
Remove Command, Args, and Project Dir fields from the New Run form. Users now pick a named prompt (shown as rich cards with icons) or write an ad-hoc prompt. Settings (iterations, delay, timeout) are collapsed behind a toggle to reduce clutter. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent dde1f78 commit f3351f0

2 files changed

Lines changed: 407 additions & 97 deletions

File tree

src/ralphify/ui/static/dashboard.css

Lines changed: 259 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1211,67 +1211,306 @@ body {
12111211
margin-top: 24px;
12121212
}
12131213

1214-
/* ── Prompt picker ──────────────────────────────────────────────── */
1214+
/* ── Redesigned New Run Modal ───────────────────────────────────── */
12151215

1216-
.prompt-picker {
1216+
.modal-new-run {
1217+
width: 540px;
1218+
padding: 0;
1219+
}
1220+
1221+
.modal-header-row {
1222+
display: flex;
1223+
align-items: center;
1224+
justify-content: space-between;
1225+
padding: 24px 28px 0;
1226+
}
1227+
1228+
.modal-header-row .modal-title {
1229+
margin-bottom: 0;
1230+
}
1231+
1232+
.modal-close {
1233+
width: 32px;
1234+
height: 32px;
1235+
border-radius: 8px;
1236+
border: none;
1237+
background: transparent;
1238+
color: var(--text-secondary);
1239+
cursor: pointer;
12171240
display: flex;
1218-
flex-wrap: wrap;
1241+
align-items: center;
1242+
justify-content: center;
1243+
transition: all 0.15s ease;
1244+
}
1245+
1246+
.modal-close:hover {
1247+
background: var(--bg);
1248+
color: var(--text);
1249+
}
1250+
1251+
.modal-section {
1252+
padding: 0 28px;
1253+
}
1254+
1255+
.modal-section-label {
1256+
display: flex;
1257+
align-items: center;
12191258
gap: 8px;
1220-
margin-bottom: 10px;
1259+
font-size: 13px;
1260+
font-weight: 600;
1261+
color: var(--text);
1262+
margin: 20px 0 12px;
12211263
}
12221264

1223-
.prompt-chip {
1265+
.modal-section-label svg {
1266+
color: var(--primary);
1267+
flex-shrink: 0;
1268+
}
1269+
1270+
.prompt-loading {
1271+
font-size: 13px;
1272+
color: var(--text-muted);
1273+
padding: 12px 0;
1274+
}
1275+
1276+
.prompt-card-grid {
12241277
display: flex;
12251278
flex-direction: column;
1226-
align-items: flex-start;
1227-
padding: 8px 14px;
1279+
gap: 8px;
1280+
}
1281+
1282+
.prompt-card {
1283+
display: flex;
1284+
align-items: center;
1285+
gap: 12px;
1286+
padding: 12px 14px;
12281287
background: var(--bg);
12291288
border: 1.5px solid var(--border);
1230-
border-radius: var(--radius);
1289+
border-radius: 10px;
12311290
cursor: pointer;
1232-
transition: all 0.15s ease;
1291+
transition: all 0.18s ease;
12331292
font-family: var(--font-sans);
1234-
font-size: 13px;
12351293
text-align: left;
1294+
width: 100%;
12361295
}
12371296

1238-
.prompt-chip:hover {
1297+
.prompt-card:hover {
12391298
border-color: var(--primary-border);
12401299
background: var(--primary-light);
1300+
box-shadow: var(--shadow-sm);
12411301
}
12421302

1243-
.prompt-chip.selected {
1303+
.prompt-card.selected {
12441304
border-color: var(--primary);
12451305
background: var(--primary-light);
12461306
box-shadow: 0 0 0 3px rgba(109, 74, 232, 0.1);
12471307
}
12481308

1249-
.prompt-chip-name {
1309+
.prompt-card-icon {
1310+
width: 36px;
1311+
height: 36px;
1312+
border-radius: 8px;
1313+
background: var(--surface);
1314+
border: 1px solid var(--border);
1315+
display: flex;
1316+
align-items: center;
1317+
justify-content: center;
1318+
flex-shrink: 0;
1319+
color: var(--text-secondary);
1320+
}
1321+
1322+
.prompt-card.selected .prompt-card-icon {
1323+
background: var(--primary);
1324+
border-color: var(--primary);
1325+
color: white;
1326+
}
1327+
1328+
.prompt-card-body {
1329+
display: flex;
1330+
flex-direction: column;
1331+
gap: 2px;
1332+
flex: 1;
1333+
min-width: 0;
1334+
}
1335+
1336+
.prompt-card-name {
1337+
font-size: 14px;
12501338
font-weight: 600;
12511339
color: var(--text);
1340+
white-space: nowrap;
1341+
overflow: hidden;
1342+
text-overflow: ellipsis;
12521343
}
12531344

1254-
.prompt-chip-desc {
1255-
font-size: 11px;
1345+
.prompt-card-desc {
1346+
font-size: 12px;
12561347
color: var(--text-secondary);
1257-
margin-top: 2px;
1348+
white-space: nowrap;
1349+
overflow: hidden;
1350+
text-overflow: ellipsis;
12581351
}
12591352

1260-
.prompt-selected-note {
1353+
.prompt-card-check {
1354+
width: 24px;
1355+
height: 24px;
1356+
border-radius: 50%;
1357+
background: var(--primary);
1358+
color: white;
1359+
display: flex;
1360+
align-items: center;
1361+
justify-content: center;
1362+
flex-shrink: 0;
1363+
}
1364+
1365+
.prompt-empty-hint {
12611366
font-size: 13px;
12621367
color: var(--text-secondary);
1263-
padding: 8px 12px;
1368+
padding: 16px;
1369+
background: var(--bg);
1370+
border-radius: 10px;
1371+
border: 1px dashed var(--border);
1372+
line-height: 1.6;
1373+
}
1374+
1375+
.prompt-empty-hint code {
1376+
font-family: var(--font-mono);
1377+
font-size: 12px;
1378+
background: var(--surface);
1379+
padding: 2px 6px;
1380+
border-radius: 4px;
1381+
border: 1px solid var(--border);
1382+
color: var(--primary);
1383+
}
1384+
1385+
.modal-divider {
1386+
display: flex;
1387+
align-items: center;
1388+
padding: 16px 28px;
1389+
gap: 16px;
1390+
}
1391+
1392+
.modal-divider::before,
1393+
.modal-divider::after {
1394+
content: '';
1395+
flex: 1;
1396+
height: 1px;
1397+
background: var(--border);
1398+
}
1399+
1400+
.modal-divider-text {
1401+
font-size: 12px;
1402+
color: var(--text-muted);
1403+
white-space: nowrap;
1404+
cursor: pointer;
1405+
transition: color 0.15s ease;
1406+
}
1407+
1408+
.modal-divider-text:hover {
1409+
color: var(--primary);
1410+
}
1411+
1412+
.adhoc-textarea {
1413+
width: 100%;
1414+
min-height: 100px;
1415+
background: var(--bg);
1416+
border: 1.5px solid var(--border);
1417+
border-radius: 10px;
1418+
color: var(--text);
1419+
font-family: var(--font-sans);
1420+
font-size: 13px;
1421+
padding: 14px 16px;
1422+
resize: vertical;
1423+
line-height: 1.6;
1424+
transition: all 0.15s ease;
1425+
}
1426+
1427+
.adhoc-textarea:focus {
1428+
outline: none;
1429+
border-color: var(--primary);
1430+
box-shadow: 0 0 0 3px var(--primary-light);
1431+
}
1432+
1433+
.adhoc-textarea::placeholder {
1434+
color: var(--text-muted);
1435+
}
1436+
1437+
.prompt-selected-banner {
1438+
display: flex;
1439+
align-items: center;
1440+
gap: 8px;
1441+
font-size: 13px;
1442+
color: var(--text-secondary);
1443+
padding: 10px 14px;
12641444
background: var(--primary-light);
1265-
border-radius: var(--radius);
1445+
border-radius: 8px;
12661446
border: 1px solid var(--primary-border);
12671447
}
12681448

1269-
.prompt-selected-note strong {
1449+
.prompt-selected-banner svg {
1450+
color: var(--primary);
1451+
flex-shrink: 0;
1452+
}
1453+
1454+
.prompt-selected-banner strong {
12701455
color: var(--primary);
12711456
font-family: var(--font-mono);
12721457
font-size: 12px;
12731458
}
12741459

1460+
.modal-settings-toggle {
1461+
display: flex;
1462+
align-items: center;
1463+
gap: 8px;
1464+
padding: 10px 28px;
1465+
font-size: 13px;
1466+
font-weight: 500;
1467+
color: var(--text-secondary);
1468+
cursor: pointer;
1469+
transition: color 0.15s ease;
1470+
user-select: none;
1471+
}
1472+
1473+
.modal-settings-toggle:hover {
1474+
color: var(--text);
1475+
}
1476+
1477+
.settings-badge {
1478+
font-size: 10px;
1479+
font-weight: 600;
1480+
background: var(--accent-light);
1481+
color: var(--accent);
1482+
padding: 2px 8px;
1483+
border-radius: 4px;
1484+
letter-spacing: 0.02em;
1485+
}
1486+
1487+
.modal-settings {
1488+
padding: 0 28px 8px;
1489+
}
1490+
1491+
.checkbox-row {
1492+
display: flex;
1493+
align-items: center;
1494+
gap: 8px;
1495+
font-size: 13px;
1496+
color: var(--text);
1497+
cursor: pointer;
1498+
padding: 4px 0;
1499+
}
1500+
1501+
.checkbox-row input[type="checkbox"] {
1502+
accent-color: var(--primary);
1503+
width: 16px;
1504+
height: 16px;
1505+
cursor: pointer;
1506+
}
1507+
1508+
.modal-new-run .modal-actions {
1509+
padding: 16px 28px 24px;
1510+
margin-top: 0;
1511+
border-top: 1px solid var(--border);
1512+
}
1513+
12751514
.run-prompt-tag {
12761515
display: inline-flex;
12771516
align-items: center;

0 commit comments

Comments
 (0)