@wendellresearch-ai/benchwarmers 0.6.2 → 0.6.4

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.
package/ui/bench.css CHANGED
@@ -117,8 +117,6 @@ main { max-width: var(--page, 104rem); margin: 0 auto; padding: 0 var(--gutter)
117
117
 
118
118
  /* Action needed: its own page, a panel per connection as on Models, each a
119
119
  table (name, state, the provider's words, actions). */
120
- .a-line { display: flex; flex-wrap: wrap; align-items: baseline; gap: .25rem .6rem; margin: 1.4rem 1.6rem 0;
121
- padding: .45rem .75rem; background: var(--err-ground); border-radius: var(--radius); }
122
120
  .a-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: .25rem .6rem; }
123
121
  .a-head .why { font-size: .875rem; }
124
122
  .a-head .why:empty { display: none; }
@@ -293,10 +291,11 @@ td.num, th.num { text-align: right; }
293
291
  table.model-cards { table-layout: fixed; min-width: 52rem; }
294
292
  .panel:has(> table.model-cards) { overflow-x: auto; } /* scrolls on a narrow window instead of wrapping numbers */
295
293
  table.model-cards td.num { white-space: nowrap; }
296
- table.model-cards col.c-model { width: 24%; }
297
- table.model-cards col.c-via { width: 13%; }
294
+ table.model-cards col.c-model { width: 23%; }
295
+ table.model-cards col.c-via { width: 11%; }
298
296
  table.model-cards col.c-n { width: 10%; }
299
- table.model-cards col.c-input { width: 19%; }
297
+ table.model-cards col.c-input { width: 15%; }
298
+ table.model-cards col.c-reply { width: 7%; }
300
299
  table.model-cards col.c-lim { width: 6%; }
301
300
  table.model-cards td { overflow-wrap: anywhere; }
302
301
  tbody tr:hover > td { background: var(--step-1); }
@@ -319,6 +318,7 @@ a.model:hover .alias { box-shadow: inset 0 -.3em 0 var(--signal); }
319
318
  .chip.err { background: var(--err-ground); color: var(--err); }
320
319
  .chip.new { background: var(--sky); color: var(--ink-deep); }
321
320
  /* an endpoint a model is reached through: outlined, so it reads as a place, not a state */
321
+ .chip.adhoc { background: color-mix(in oklab, var(--sky) 55%, var(--paper-2)); color: var(--ink-deep); }
322
322
  .chip.via { background: transparent; border: 1px solid var(--line); color: var(--ink); font-family: var(--font-mono); }
323
323
  button.chip { font-family: inherit; border: 0; cursor: pointer; }
324
324
  button.chip:hover { outline: 1px solid currentColor; }
@@ -334,6 +334,8 @@ td.why { white-space: nowrap; } /* Uptime's down / left out,
334
334
  dialog { border: 1px solid var(--ink); border-radius: var(--radius); padding: 1.25rem 1.4rem;
335
335
  width: min(40rem, calc(100vw - 2rem)); max-height: calc(100vh - 2rem);
336
336
  background: var(--paper-2); color: var(--ink); box-shadow: 6px 6px 0 var(--ink); }
337
+ /* The collection popup holds the member table: wider, so names and chips sit on one line. */
338
+ dialog#c-form { width: min(54rem, calc(100vw - 2rem)); }
337
339
  dialog::backdrop { background: color-mix(in oklab, var(--ink-deep) 45%, transparent); }
338
340
  dialog h2 { margin: 0 0 .2rem; font-size: 1.375rem; font-weight: 700; }
339
341
  :is(dialog, .form-panel) .served { color: var(--muted); font-size: .9375rem; margin: 0 0 .9rem; overflow-wrap: anywhere; }
@@ -344,11 +346,23 @@ dialog h2 { margin: 0 0 .2rem; font-size: 1.375rem; font-weight: 700; }
344
346
  :is(dialog, .form-panel) .rules { font-size: .875rem; color: var(--muted); margin: .35rem 0 0; }
345
347
  :is(dialog, .form-panel) label.check { display: flex; align-items: center; gap: .5rem; margin-top: 1rem; cursor: pointer; }
346
348
  :is(dialog, .form-panel) fieldset { border: 0; padding: 0; margin: 1rem 0 0; }
347
- :is(dialog, .form-panel) .members { max-height: 18rem; overflow: auto; border-top: 1px solid var(--line); }
348
- /* One row per model: its name and what it holds, then a chip per provider it
349
- is on, each ticking that alias (bench.js fillForm). */
350
- :is(dialog, .form-panel) .members .m-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .2rem 1rem;
351
- align-items: center; padding: .4rem 0; border-bottom: 1px solid var(--line); }
349
+ :is(dialog, .form-panel) .members { max-height: min(30rem, 55vh); overflow: auto; border: 1px solid var(--line);
350
+ border-radius: var(--radius); }
351
+ /* A table to scan: the model (its name opens it), context, what it can do, then a
352
+ chip per provider it is on, each ticking that alias (bench.js drawMembers). */
353
+ :is(dialog, .form-panel) .members :is(.m-row, .m-head) { display: grid; gap: .2rem .8rem; align-items: center;
354
+ grid-template-columns: minmax(9rem, 1.4fr) 3.6rem minmax(0, 1fr) minmax(0, 1.3fr); padding: .4rem .6rem; }
355
+ :is(dialog, .form-panel) .members .m-head { position: sticky; top: 0; z-index: 1; background: var(--paper-2);
356
+ border-bottom: 1px solid var(--ink); font-size: .75rem; font-weight: 600; color: var(--muted); }
357
+ :is(dialog, .form-panel) .members .m-row { border-bottom: 1px solid var(--line); }
358
+ :is(dialog, .form-panel) .members .m-row:nth-child(odd) { background: color-mix(in oklab, var(--band) 45%, transparent); }
359
+ :is(dialog, .form-panel) .members .m-row:has(input:checked) { box-shadow: inset 3px 0 0 var(--bench-seat, var(--brand)); }
360
+ :is(dialog, .form-panel) .members .m-name a.model { font-size: .875rem; }
361
+ :is(dialog, .form-panel) .members .m-ctx { font-family: var(--font-mono); font-size: .8125rem; color: var(--muted); text-align: right; }
362
+ :is(dialog, .form-panel) .members .m-can { display: flex; flex-wrap: wrap; gap: .2rem; }
363
+ :is(dialog, .form-panel) .members .m-can .chip { font-size: .6875rem; padding: 0 .4rem; }
364
+ #c-form .members-head { display: flex; align-items: baseline; gap: .6rem; flex-wrap: wrap; }
365
+ #c-form .members-head .field { margin-right: auto; }
352
366
  :is(dialog, .form-panel) .members .m-name { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 .5rem;
353
367
  font-size: .875rem; overflow-wrap: anywhere; }
354
368
  :is(dialog, .form-panel) .members .m-facts { color: var(--muted); font-size: .8125rem; }
@@ -380,6 +394,8 @@ dialog h2 { margin: 0 0 .2rem; font-size: 1.375rem; font-weight: 700; }
380
394
  :is(dialog, .form-panel) .profile .src { font-size: .75rem; color: var(--muted); }
381
395
  :is(dialog, .form-panel) .settings { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 1rem; }
382
396
  @media (max-width: 40rem) { :is(dialog, .form-panel) :is(.settings, .members .m-row) { grid-template-columns: minmax(0, 1fr); }
397
+ :is(dialog, .form-panel) .members .m-head { display: none; }
398
+ :is(dialog, .form-panel) .members .m-ctx { text-align: left; }
383
399
  :is(dialog, .form-panel) .members .m-routes { justify-content: flex-start; } }
384
400
  :is(dialog, .form-panel) fieldset label.check { margin-top: .4rem; flex-wrap: wrap; }
385
401
  :is(dialog, .form-panel) fieldset label.check .muted { font-size: .875rem; }
@@ -519,6 +535,17 @@ pre.log.answer { max-height: 40vh; }
519
535
  .chart { margin: .5rem 0 .75rem; overflow-x: auto; }
520
536
  .chart.muted { font-size: .875rem; }
521
537
  h3.chart-head { font-size: 1rem; margin: 1rem 0 .2rem; }
538
+ .chart-label { font-size: .875rem; font-weight: 600; margin: .9rem 0 .1rem; }
539
+ /* Models: each connection a fold, its heading the summary */
540
+ .model-card > summary h3.chart-head { display: inline; margin: 0; }
541
+ /* Expand all / Collapse all: a text toggle with a chevron that turns, like a fold's own marker */
542
+ button.fold-all { display: inline-flex; align-items: center; gap: .4rem; margin-left: auto; border: 0; padding: .2rem 0;
543
+ background: none; color: var(--link); font: inherit; font-size: .9375rem; cursor: pointer; }
544
+ button.fold-all:hover, button.fold-all:focus-visible { text-decoration: underline; text-underline-offset: .18em; }
545
+ .fold-chev { width: .5rem; height: .5rem; border: solid currentColor; border-width: 0 2px 2px 0;
546
+ transform: rotate(-45deg); transition: transform .15s; }
547
+ button.fold-all[aria-expanded="true"] .fold-chev { transform: rotate(45deg); margin-top: -.3rem; }
548
+ @media (prefers-reduced-motion: reduce) { .fold-chev { transition: none; } }
522
549
  /* the Collections tab: the dialog's form, kept to a readable width */
523
550
  .panel.form-panel > :not(#c-list, table) { max-width: 46rem; }
524
551
  /* a list of things you open (collections), with its New button above */
@@ -573,7 +600,6 @@ dialog .pick { display: flex; gap: 1.5rem; }
573
600
  .toolbar input[type=search] { min-width: 0; width: 100%; }
574
601
  button.c-row { grid-template-columns: minmax(0, 1fr); } /* the seats get the width; the whole row opens */
575
602
  .c-row .open-hint { display: none; }
576
- .a-line { margin: 1rem 1rem 0; }
577
603
  }
578
604
  /* A narrow page (a phone, or a window with the sidebar beside it): name and
579
605
  state on one line, the words and actions under them. No gap between name