@pennyfarthing/cyclist 10.1.0 → 10.3.0

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 (102) hide show
  1. package/dist/api/agent-load.js +1 -1
  2. package/dist/api/agent-load.js.map +1 -1
  3. package/dist/api/health-score.d.ts.map +1 -1
  4. package/dist/api/health-score.js +12 -3
  5. package/dist/api/health-score.js.map +1 -1
  6. package/dist/api/index.d.ts +1 -1
  7. package/dist/api/index.d.ts.map +1 -1
  8. package/dist/api/index.js +1 -2
  9. package/dist/api/index.js.map +1 -1
  10. package/dist/api/persona.d.ts +2 -0
  11. package/dist/api/persona.d.ts.map +1 -1
  12. package/dist/api/persona.js +19 -1
  13. package/dist/api/persona.js.map +1 -1
  14. package/dist/api/settings.js +1 -1
  15. package/dist/api/settings.js.map +1 -1
  16. package/dist/api/theme-agents.js +2 -2
  17. package/dist/api/theme-agents.js.map +1 -1
  18. package/dist/bikerack.d.ts +2 -0
  19. package/dist/bikerack.d.ts.map +1 -0
  20. package/dist/bikerack.js +43 -0
  21. package/dist/bikerack.js.map +1 -0
  22. package/dist/claude-service.d.ts +8 -2
  23. package/dist/claude-service.d.ts.map +1 -1
  24. package/dist/claude-service.js +21 -2
  25. package/dist/claude-service.js.map +1 -1
  26. package/dist/main.d.ts.map +1 -1
  27. package/dist/main.js +11 -2
  28. package/dist/main.js.map +1 -1
  29. package/dist/plugin-loader.d.ts +49 -0
  30. package/dist/plugin-loader.d.ts.map +1 -0
  31. package/dist/plugin-loader.js +92 -0
  32. package/dist/plugin-loader.js.map +1 -0
  33. package/dist/plugin-loader.test.d.ts +17 -0
  34. package/dist/plugin-loader.test.d.ts.map +1 -0
  35. package/dist/plugin-loader.test.js +407 -0
  36. package/dist/plugin-loader.test.js.map +1 -0
  37. package/dist/preload.js +1 -1
  38. package/dist/preload.js.map +1 -1
  39. package/dist/public/css/react.css +1 -1
  40. package/dist/public/js/react/react.js +42 -42
  41. package/dist/server.d.ts +1 -0
  42. package/dist/server.d.ts.map +1 -1
  43. package/dist/server.js +16 -15
  44. package/dist/server.js.map +1 -1
  45. package/dist/sprint-data.d.ts +21 -0
  46. package/dist/sprint-data.d.ts.map +1 -1
  47. package/dist/sprint-data.js +63 -1
  48. package/dist/sprint-data.js.map +1 -1
  49. package/dist/story-parser.js +1 -1
  50. package/dist/story-parser.js.map +1 -1
  51. package/dist/theme-metadata.js +3 -3
  52. package/dist/theme-metadata.js.map +1 -1
  53. package/dist/websocket.d.ts +0 -6
  54. package/dist/websocket.d.ts.map +1 -1
  55. package/dist/websocket.js +32 -37
  56. package/dist/websocket.js.map +1 -1
  57. package/package.json +2 -1
  58. package/portraits/fifth-element/large/cornelius-54343.png +0 -0
  59. package/portraits/fifth-element/large/diva-53453.png +0 -0
  60. package/portraits/fifth-element/large/korben-34232.png +0 -0
  61. package/portraits/fifth-element/large/leeloo-54333.png +0 -0
  62. package/portraits/fifth-element/large/lindberg-34432.png +0 -0
  63. package/portraits/fifth-element/large/mondoshawan-55131.png +0 -0
  64. package/portraits/fifth-element/large/munro-25321.png +0 -0
  65. package/portraits/fifth-element/large/pacoli-45232.png +0 -0
  66. package/portraits/fifth-element/large/ruby-53544.png +0 -0
  67. package/portraits/fifth-element/large/zorg-45312.png +0 -0
  68. package/portraits/fifth-element/medium/cornelius-54343.png +0 -0
  69. package/portraits/fifth-element/medium/diva-53453.png +0 -0
  70. package/portraits/fifth-element/medium/korben-34232.png +0 -0
  71. package/portraits/fifth-element/medium/leeloo-54333.png +0 -0
  72. package/portraits/fifth-element/medium/lindberg-34432.png +0 -0
  73. package/portraits/fifth-element/medium/mondoshawan-55131.png +0 -0
  74. package/portraits/fifth-element/medium/munro-25321.png +0 -0
  75. package/portraits/fifth-element/medium/pacoli-45232.png +0 -0
  76. package/portraits/fifth-element/medium/ruby-53544.png +0 -0
  77. package/portraits/fifth-element/medium/zorg-45312.png +0 -0
  78. package/src/public/App.tsx +34 -0
  79. package/src/public/components/AgentPopup.tsx +3 -5
  80. package/src/public/components/BikeRackIndex.tsx +54 -0
  81. package/src/public/components/BikeRackWorkspace.tsx +140 -0
  82. package/src/public/components/ContextSparkline.tsx +56 -0
  83. package/src/public/components/ControlBar.tsx +137 -4
  84. package/src/public/components/DockviewWorkspace.tsx +5 -6
  85. package/src/public/components/HealthGauge.tsx +64 -27
  86. package/src/public/components/PersonaHeader.tsx +46 -3
  87. package/src/public/components/StandalonePanel.tsx +84 -0
  88. package/src/public/components/TandemPortrait.tsx +71 -0
  89. package/src/public/components/panel-registry.ts +11 -0
  90. package/src/public/components/panels/ACPanel.tsx +1 -1
  91. package/src/public/components/panels/DebugPanel.tsx +50 -57
  92. package/src/public/components/panels/GitPanel.tsx +22 -21
  93. package/src/public/components/panels/MessagePanel.tsx +44 -2
  94. package/src/public/components/panels/SettingsPanel.tsx +4 -4
  95. package/src/public/components/panels/SprintPanel.tsx +199 -144
  96. package/src/public/css/theme-system.css +93 -0
  97. package/src/public/hooks/useHealthScore.ts +6 -14
  98. package/src/public/hooks/usePersona.ts +26 -3
  99. package/src/public/hooks/useSprint.ts +1 -1
  100. package/src/public/styles/dockview-theme.css +1 -1
  101. package/src/public/styles/tailwind.css +337 -43
  102. package/src/public/utils/slash-commands.ts +3 -15
@@ -7,6 +7,19 @@
7
7
  Docking Workspace Styles
8
8
  ============================================================================= */
9
9
 
10
+ /* Screen reader only — visually hidden but accessible */
11
+ .visually-hidden {
12
+ position: absolute;
13
+ width: 1px;
14
+ height: 1px;
15
+ padding: 0;
16
+ margin: -1px;
17
+ overflow: hidden;
18
+ clip: rect(0, 0, 0, 0);
19
+ white-space: nowrap;
20
+ border: 0;
21
+ }
22
+
10
23
  .cyclist-app {
11
24
  position: absolute;
12
25
  top: 0;
@@ -266,6 +279,8 @@
266
279
  border-bottom: 1px solid var(--border-color, #3c3c3c);
267
280
  flex-shrink: 0;
268
281
  position: relative;
282
+ overflow: visible;
283
+ min-width: 0;
269
284
  }
270
285
 
271
286
  .persona-header.empty {
@@ -287,10 +302,23 @@
287
302
  outline-offset: 2px;
288
303
  }
289
304
 
290
- /* Portrait group: portrait + badge positioned together */
305
+ /* Portrait group: portrait + tandem positioned together */
291
306
  .persona-portrait-group {
292
- position: relative;
307
+ container-type: inline-size;
308
+ container-name: portrait-group;
309
+ display: flex;
310
+ flex-direction: column;
311
+ align-items: flex-start;
312
+ gap: 8px;
293
313
  flex-shrink: 0;
314
+ width: 100px;
315
+ }
316
+
317
+ /* Container query: hide backseat portrait when panel is narrow */
318
+ @container portrait-group (max-width: 180px) {
319
+ .persona-tandem-portrait {
320
+ display: none;
321
+ }
294
322
  }
295
323
 
296
324
  .persona-portrait {
@@ -299,6 +327,9 @@
299
327
  border-radius: 50%;
300
328
  overflow: hidden;
301
329
  flex-shrink: 0;
330
+ min-width: 48px;
331
+ min-height: 48px;
332
+ aspect-ratio: 1;
302
333
  background: var(--bg-tertiary, #2d2d2d);
303
334
  display: flex;
304
335
  align-items: center;
@@ -333,8 +364,10 @@
333
364
  display: flex;
334
365
  flex-direction: column;
335
366
  gap: 2px;
336
- min-width: 0;
337
367
  flex: 1;
368
+ min-width: 0;
369
+ width: 0;
370
+ overflow: hidden;
338
371
  }
339
372
 
340
373
  .persona-branding {
@@ -356,10 +389,48 @@
356
389
  font-size: 1.2rem;
357
390
  }
358
391
 
392
+ .persona-header.compact .persona-tandem-portrait {
393
+ display: none;
394
+ }
395
+
359
396
  .persona-header.compact .persona-branding {
360
397
  height: 32px;
361
398
  }
362
399
 
400
+ /* Tandem portrait: backseat agent below primary (Story 96-1) */
401
+ .persona-tandem-portrait {
402
+ width: 48px;
403
+ height: 48px;
404
+ border-radius: 50%;
405
+ opacity: 0.55;
406
+ transition: opacity 300ms ease-in-out;
407
+ position: relative;
408
+ overflow: hidden;
409
+ }
410
+
411
+ .persona-tandem-portrait .tandem-portrait-image {
412
+ width: 100%;
413
+ height: 100%;
414
+ object-fit: cover;
415
+ }
416
+
417
+ .persona-tandem-portrait .tandem-portrait-fallback {
418
+ font-size: 1.2rem;
419
+ }
420
+
421
+ .tandem-role-badge {
422
+ position: absolute;
423
+ bottom: -2px;
424
+ right: -2px;
425
+ font-size: 9px;
426
+ font-weight: 700;
427
+ line-height: 16px;
428
+ padding: 0 4px;
429
+ border-radius: 8px;
430
+ background: var(--accent-color, #007acc);
431
+ color: #fff;
432
+ }
433
+
363
434
  .persona-header.compact .persona-catchphrase {
364
435
  display: none;
365
436
  }
@@ -391,18 +462,25 @@
391
462
  display: flex;
392
463
  align-items: center;
393
464
  gap: 8px;
394
- flex-wrap: wrap;
465
+ flex-wrap: nowrap;
466
+ overflow: hidden;
395
467
  }
396
468
 
397
469
  .persona-character {
398
470
  font-weight: 600;
399
471
  color: var(--text-primary, #d4d4d4);
400
472
  font-size: 0.95rem;
473
+ overflow: hidden;
474
+ text-overflow: ellipsis;
475
+ white-space: nowrap;
401
476
  }
402
477
 
403
478
  .persona-theme {
404
479
  color: var(--text-secondary, #8b8b8b);
405
480
  font-size: 0.8rem;
481
+ overflow: hidden;
482
+ text-overflow: ellipsis;
483
+ white-space: nowrap;
406
484
  }
407
485
 
408
486
  .persona-catchphrase {
@@ -429,10 +507,25 @@
429
507
  min-height: 0;
430
508
  }
431
509
 
510
+ .message-panel-resize-handle {
511
+ height: 4px;
512
+ flex-shrink: 0;
513
+ cursor: row-resize;
514
+ background: var(--border-color, #3c3c3c);
515
+ transition: background 0.15s ease;
516
+ }
517
+
518
+ .message-panel-resize-handle:hover {
519
+ background: var(--accent-color, #007acc);
520
+ }
521
+
432
522
  .message-panel-editor {
433
523
  flex-shrink: 0;
434
- border-top: 1px solid var(--border-color, #3c3c3c);
435
524
  background: var(--bg-secondary, #252526);
525
+ overflow: visible;
526
+ display: flex;
527
+ flex-direction: column;
528
+ min-height: 120px;
436
529
  }
437
530
 
438
531
  /* Message View - the conversation area */
@@ -753,6 +846,54 @@
753
846
  animation: avatar-throb 1.2s ease-in-out infinite;
754
847
  }
755
848
 
849
+ /* Backseat thinking indicator - subtler throb for tandem portrait */
850
+ @keyframes tandem-throb {
851
+ 0%, 100% {
852
+ transform: scale(1);
853
+ box-shadow: 0 0 0 0 var(--accent-color, #007acc);
854
+ }
855
+ 50% {
856
+ transform: scale(1.04);
857
+ box-shadow: 0 0 6px 1px var(--accent-color, #007acc);
858
+ }
859
+ }
860
+
861
+ .avatar-tandem-thinking {
862
+ animation: tandem-throb 1.8s ease-in-out infinite;
863
+ }
864
+
865
+ /* Observation pulse - one-shot on primary portrait when backseat observation injected */
866
+ @keyframes observation-pulse {
867
+ 0% {
868
+ box-shadow: 0 0 12px 4px var(--accent-color, #007acc);
869
+ }
870
+ 100% {
871
+ box-shadow: 0 0 0 0 var(--accent-color, #007acc);
872
+ }
873
+ }
874
+
875
+ .avatar-observation-pulse {
876
+ animation: observation-pulse 600ms ease-out 1;
877
+ }
878
+
879
+ @media (prefers-reduced-motion: reduce) {
880
+ .avatar-thinking {
881
+ animation: none;
882
+ opacity: 0.85;
883
+ border: 2px solid var(--accent-color, #007acc);
884
+ }
885
+ .avatar-tandem-thinking {
886
+ animation: none;
887
+ opacity: 0.85;
888
+ border: 2px solid var(--accent-color, #007acc);
889
+ }
890
+ .avatar-observation-pulse {
891
+ animation: none;
892
+ opacity: 0.9;
893
+ border: 2px solid var(--accent-color, #007acc);
894
+ }
895
+ }
896
+
756
897
  .message-avatar.avatar-fallback::after {
757
898
  content: '🤖';
758
899
  font-size: 1.25rem;
@@ -987,12 +1128,15 @@
987
1128
  .editor-with-controls {
988
1129
  display: flex;
989
1130
  gap: 8px;
990
- align-items: flex-end;
1131
+ align-items: stretch;
1132
+ height: 100%;
991
1133
  }
992
1134
 
993
1135
  .editor-area {
994
1136
  flex: 1;
995
1137
  min-width: 0; /* Prevent overflow */
1138
+ display: flex;
1139
+ flex-direction: column;
996
1140
  }
997
1141
 
998
1142
  .editor-container {
@@ -1000,6 +1144,7 @@
1000
1144
  flex-direction: column;
1001
1145
  padding: 8px;
1002
1146
  min-width: 0; /* Prevent overflow */
1147
+ flex: 1;
1003
1148
  }
1004
1149
 
1005
1150
  .mode-toolbar {
@@ -1033,12 +1178,15 @@
1033
1178
  .editor-wrapper {
1034
1179
  position: relative;
1035
1180
  min-width: 0; /* Prevent overflow */
1181
+ flex: 1;
1182
+ display: flex;
1183
+ flex-direction: column;
1036
1184
  }
1037
1185
 
1038
1186
  .editor-textarea {
1039
1187
  width: 100%;
1040
1188
  min-height: 60px;
1041
- max-height: 200px;
1189
+ flex: 1;
1042
1190
  padding: 8px;
1043
1191
  background: var(--bg-primary, #1e1e1e);
1044
1192
  border: 1px solid var(--border-color, #3c3c3c);
@@ -1182,6 +1330,7 @@
1182
1330
  gap: 4px;
1183
1331
  padding: 8px;
1184
1332
  flex-shrink: 0;
1333
+ align-self: flex-end;
1185
1334
  }
1186
1335
 
1187
1336
  .btn-stop {
@@ -1397,6 +1546,16 @@
1397
1546
  opacity: 0.7;
1398
1547
  }
1399
1548
 
1549
+ /* Completed Epics Section */
1550
+ .enhanced-sprint-panel [data-section="completed-epics"] .epic-group {
1551
+ opacity: 0.5;
1552
+ border-color: var(--border-color, #3c3c3c);
1553
+ }
1554
+
1555
+ .enhanced-sprint-panel [data-section="completed-epics"] .epic-group:hover {
1556
+ opacity: 0.7;
1557
+ }
1558
+
1400
1559
  /* Epic Header */
1401
1560
  .enhanced-sprint-panel .epic-header {
1402
1561
  display: flex;
@@ -1555,23 +1714,13 @@
1555
1714
  color: var(--text-tertiary, #6b6b6b);
1556
1715
  }
1557
1716
 
1558
- .enhanced-sprint-panel .story-item .priority-dot {
1559
- width: 6px;
1560
- height: 6px;
1561
- border-radius: 50%;
1717
+ .enhanced-sprint-panel .story-item .priority-label {
1718
+ font-size: 0.6rem;
1719
+ font-weight: 500;
1720
+ color: var(--text-tertiary, #6b6b6b);
1562
1721
  flex-shrink: 0;
1563
- }
1564
-
1565
- .enhanced-sprint-panel .story-item .priority-dot.priority-p0 {
1566
- background: var(--error-color, #f14c4c);
1567
- }
1568
-
1569
- .enhanced-sprint-panel .story-item .priority-dot.priority-p1 {
1570
- background: var(--warning-color, #cca700);
1571
- }
1572
-
1573
- .enhanced-sprint-panel .story-item .priority-dot.priority-p2 {
1574
- background: var(--text-tertiary, #6b6b6b);
1722
+ opacity: 0.7;
1723
+ font-family: var(--font-mono, 'SF Mono', Monaco, monospace);
1575
1724
  }
1576
1725
 
1577
1726
  .enhanced-sprint-panel .story-item .story-points {
@@ -1846,25 +1995,41 @@
1846
1995
  margin-bottom: 4px;
1847
1996
  }
1848
1997
 
1849
- /* Sync develop button — subtle icon inline with sync counts */
1850
- .git-panel .sync-develop-btn {
1851
- display: inline-flex;
1852
- align-items: center;
1853
- gap: 3px;
1854
- padding: 1px 5px;
1855
- border: none;
1856
- border-radius: 3px;
1857
- background: none;
1998
+ /* Develop-behind indicator */
1999
+ .git-panel .develop-behind {
1858
2000
  color: var(--status-warning, #cca700);
1859
- font-size: 0.7rem;
1860
- font-family: var(--font-mono);
2001
+ }
2002
+
2003
+ /* Sync all repos action bar */
2004
+ .git-panel .git-panel-actions {
2005
+ padding: 0 0 4px;
2006
+ }
2007
+
2008
+ .git-panel .sync-all-btn {
2009
+ display: flex;
2010
+ align-items: center;
2011
+ justify-content: center;
2012
+ gap: 6px;
2013
+ width: 100%;
2014
+ padding: 6px 10px;
2015
+ border: 1px solid var(--border-secondary, rgba(255, 255, 255, 0.08));
2016
+ border-radius: 4px;
2017
+ background: var(--bg-tertiary, #2d2d2d);
2018
+ color: var(--text-secondary, #8b8b8b);
2019
+ font-size: 0.75rem;
2020
+ font-family: var(--font-mono, 'SF Mono', Monaco, monospace);
1861
2021
  cursor: pointer;
1862
- transition: background-color 0.15s ease, color 0.15s ease;
2022
+ transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
1863
2023
  }
1864
2024
 
1865
- .git-panel .sync-develop-btn:hover {
1866
- background: rgba(204, 167, 0, 0.15);
1867
- color: var(--text-primary);
2025
+ .git-panel .sync-all-btn:hover {
2026
+ background: var(--bg-hover, #3d3d3d);
2027
+ color: var(--text-primary, #e0e0e0);
2028
+ border-color: var(--accent-color, #007acc);
2029
+ }
2030
+
2031
+ .git-panel .sync-all-btn:active {
2032
+ background: var(--bg-active, #4d4d4d);
1868
2033
  }
1869
2034
 
1870
2035
  .git-panel .repo-status .file-status {
@@ -2463,6 +2628,17 @@
2463
2628
  background: var(--accent-color, #007acc);
2464
2629
  }
2465
2630
 
2631
+ .context-sparkline {
2632
+ width: 100%;
2633
+ height: 32px;
2634
+ margin: 4px 0;
2635
+ }
2636
+
2637
+ .context-sparkline svg {
2638
+ width: 100%;
2639
+ height: 100%;
2640
+ }
2641
+
2466
2642
  .debug-panel .context-text {
2467
2643
  font-size: 0.75rem;
2468
2644
  color: var(--text-primary, #d4d4d4);
@@ -2632,12 +2808,82 @@
2632
2808
  font-family: var(--font-mono, 'SF Mono', Monaco, monospace);
2633
2809
  }
2634
2810
 
2635
- /* Tool launcher - MSSCI-14443 */
2636
- .debug-panel .tool-launcher {
2811
+ /* HealthGauge header and controls */
2812
+
2813
+ .health-gauge-header {
2637
2814
  display: flex;
2638
- flex-wrap: wrap;
2639
- gap: 6px;
2640
- margin-top: 4px;
2815
+ justify-content: space-between;
2816
+ align-items: center;
2817
+ margin-bottom: 0.25rem;
2818
+ }
2819
+
2820
+ .health-gauge-age {
2821
+ font-size: 0.75rem;
2822
+ color: var(--text-muted);
2823
+ }
2824
+
2825
+ .health-gauge-error {
2826
+ font-size: 0.75rem;
2827
+ color: var(--color-danger, #ef4444);
2828
+ }
2829
+
2830
+ /* HealthGauge SVG */
2831
+
2832
+ [data-testid="health-gauge"] svg {
2833
+ display: block;
2834
+ margin: 0 auto;
2835
+ }
2836
+
2837
+ /* HealthGauge dimension breakdown */
2838
+
2839
+ .health-gauge-partial {
2840
+ text-align: center;
2841
+ font-size: 0.75rem;
2842
+ color: var(--text-muted);
2843
+ margin-top: 0.25rem;
2844
+ }
2845
+
2846
+ .health-gauge-breakdown {
2847
+ display: flex;
2848
+ flex-direction: column;
2849
+ gap: 0.25rem;
2850
+ margin-top: 0.5rem;
2851
+ padding: 0.5rem 0;
2852
+ border-top: 1px solid var(--border);
2853
+ }
2854
+
2855
+ .health-gauge-dimension {
2856
+ display: flex;
2857
+ justify-content: space-between;
2858
+ align-items: center;
2859
+ cursor: pointer;
2860
+ padding: 0.25rem 0.5rem;
2861
+ border-radius: 4px;
2862
+ }
2863
+
2864
+ .health-gauge-dimension:hover {
2865
+ background: var(--border);
2866
+ }
2867
+
2868
+ .dimension-label {
2869
+ font-size: 0.8125rem;
2870
+ color: var(--text-secondary);
2871
+ text-decoration: underline;
2872
+ text-decoration-color: transparent;
2873
+ transition: text-decoration-color 0.15s, color 0.15s;
2874
+ }
2875
+
2876
+ .health-gauge-dimension:hover .dimension-label {
2877
+ text-decoration-color: currentColor;
2878
+ color: var(--text-primary);
2879
+ }
2880
+
2881
+ .dimension-score {
2882
+ font-size: 0.8125rem;
2883
+ font-variant-numeric: tabular-nums;
2884
+ text-align: right;
2885
+ font-family: var(--font-mono, monospace);
2886
+ color: var(--text-primary);
2641
2887
  }
2642
2888
 
2643
2889
  /* Settings panel */
@@ -4012,6 +4258,54 @@
4012
4258
  margin-bottom: 4px;
4013
4259
  }
4014
4260
 
4261
+ /* Agent Quick Picker (MSSCI-14762) */
4262
+ .agent-quick-picker-wrapper {
4263
+ position: relative;
4264
+ }
4265
+
4266
+ .agent-quick-picker-dropdown {
4267
+ position: absolute;
4268
+ bottom: 100%;
4269
+ left: 0;
4270
+ margin-bottom: 4px;
4271
+ min-width: 120px;
4272
+ max-height: 300px;
4273
+ overflow-y: auto;
4274
+ background: var(--bg-secondary, #1e1e1e);
4275
+ border: 1px solid var(--border-color, #3c3c3c);
4276
+ border-radius: 6px;
4277
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
4278
+ z-index: 100;
4279
+ padding: 4px;
4280
+ }
4281
+
4282
+ .agent-quick-picker-option {
4283
+ display: flex;
4284
+ align-items: center;
4285
+ gap: 8px;
4286
+ padding: 6px 8px;
4287
+ border-radius: 4px;
4288
+ cursor: pointer;
4289
+ transition: background 0.1s ease;
4290
+ }
4291
+
4292
+ .agent-quick-picker-option:hover {
4293
+ background: var(--bg-hover, #3c3c3c);
4294
+ }
4295
+
4296
+ .agent-quick-picker-option.current {
4297
+ background: var(--bg-tertiary, #2d2d2d);
4298
+ border-left: 2px solid var(--accent, #007acc);
4299
+ }
4300
+
4301
+ .agent-option-role {
4302
+ font-size: 0.7rem;
4303
+ text-transform: uppercase;
4304
+ color: var(--text-secondary, #8b8b8b);
4305
+ min-width: 64px;
4306
+ }
4307
+
4308
+
4015
4309
  .btn-toggle {
4016
4310
  display: flex;
4017
4311
  align-items: center;
@@ -37,12 +37,8 @@ export const SLASH_COMMANDS: SlashCommand[] = [
37
37
  "description": "System Architect - Technical design and architecture"
38
38
  },
39
39
  {
40
- "name": "/benchmark",
41
- "description": "Compare an agent's performance against a stored baseline"
42
- },
43
- {
44
- "name": "/benchmark-control",
45
- "description": "Create control baseline for a scenario (shortcut for /benchmark control <agent>)"
40
+ "name": "/ba",
41
+ "description": "Business Analyst - Requirements discovery and stakeholder analysis"
46
42
  },
47
43
  {
48
44
  "name": "/brainstorming",
@@ -120,10 +116,6 @@ export const SLASH_COMMANDS: SlashCommand[] = [
120
116
  "name": "/init",
121
117
  "description": "Initialize CLAUDE.md"
122
118
  },
123
- {
124
- "name": "/job-fair",
125
- "description": "Discover which characters in a theme excel at each role"
126
- },
127
119
  {
128
120
  "name": "/login",
129
121
  "description": "Authenticate with Anthropic"
@@ -202,16 +194,12 @@ export const SLASH_COMMANDS: SlashCommand[] = [
202
194
  },
203
195
  {
204
196
  "name": "/setup",
205
- "description": "setup"
197
+ "description": "/setup - Interactive Project Setup"
206
198
  },
207
199
  {
208
200
  "name": "/sm",
209
201
  "description": "Scrum Master - Story coordination and sprint management"
210
202
  },
211
- {
212
- "name": "/solo",
213
- "description": "Run a single agent on a scenario with absolute rubric scoring"
214
- },
215
203
  {
216
204
  "name": "/sprint",
217
205
  "description": "Sprint status, backlog, and story management - check status, find work, archive completed stories"