bosun 0.36.2 → 0.36.3
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/analyze-agent-work-helpers.mjs +308 -0
- package/analyze-agent-work.mjs +926 -0
- package/autofix.mjs +2 -0
- package/codex-shell.mjs +85 -10
- package/git-editor-fix.mjs +273 -0
- package/mcp-registry.mjs +579 -0
- package/meeting-workflow-service.mjs +631 -0
- package/monitor.mjs +18 -103
- package/package.json +13 -2
- package/primary-agent.mjs +32 -12
- package/session-tracker.mjs +68 -0
- package/stream-resilience.mjs +17 -7
- package/ui/app.js +19 -4
- package/ui/components/chat-view.js +108 -5
- package/ui/components/session-list.js +1 -1
- package/ui/components/shared.js +188 -15
- package/ui/modules/icons.js +13 -0
- package/ui/modules/utils.js +44 -0
- package/ui/modules/voice.js +15 -6
- package/ui/styles/components.css +99 -3
- package/ui/styles/sessions.css +84 -12
- package/ui/tabs/chat.js +5 -1
- package/ui/tabs/control.js +16 -22
- package/ui/tabs/dashboard.js +85 -8
- package/ui/tabs/library.js +113 -17
- package/ui/tabs/settings.js +116 -2
- package/ui/tabs/tasks.js +388 -39
- package/ui/tabs/telemetry.js +0 -1
- package/ui/tabs/workflows.js +4 -0
- package/ui-server.mjs +193 -19
- package/update-check.mjs +41 -13
- package/voice-relay.mjs +816 -0
- package/voice-tools.mjs +679 -0
- package/workflow-templates/agents.mjs +6 -2
- package/workflow-templates/github.mjs +154 -12
- package/workflow-templates.mjs +3 -0
- package/github-reconciler.mjs +0 -506
- package/merge-strategy.mjs +0 -1210
- package/pr-cleanup-daemon.mjs +0 -992
- package/workspace-reaper.mjs +0 -405
package/ui/tabs/settings.js
CHANGED
|
@@ -59,6 +59,17 @@ import {
|
|
|
59
59
|
|
|
60
60
|
/* ─── Scoped Styles ─── */
|
|
61
61
|
const SETTINGS_STYLES = `
|
|
62
|
+
/* Category navigation */
|
|
63
|
+
.settings-category-mobile {
|
|
64
|
+
display: none;
|
|
65
|
+
margin-bottom: 10px;
|
|
66
|
+
}
|
|
67
|
+
.settings-category-mobile-label {
|
|
68
|
+
display: block;
|
|
69
|
+
font-size: 12px;
|
|
70
|
+
color: var(--text-tertiary, #8a8a8a);
|
|
71
|
+
margin: 0 0 6px 2px;
|
|
72
|
+
}
|
|
62
73
|
/* Category pill tabs — horizontal scrollable row */
|
|
63
74
|
.settings-category-tabs {
|
|
64
75
|
display: flex;
|
|
@@ -111,9 +122,9 @@ const SETTINGS_STYLES = `
|
|
|
111
122
|
flex-wrap: wrap;
|
|
112
123
|
row-gap: 8px;
|
|
113
124
|
padding: 10px 16px;
|
|
114
|
-
min-width: 240px;
|
|
125
|
+
min-width: min(240px, calc(100vw - 24px));
|
|
115
126
|
max-width: 480px;
|
|
116
|
-
width:
|
|
127
|
+
width: min(480px, calc(100vw - 24px));
|
|
117
128
|
background: var(--glass-bg, rgba(30,30,46,0.95));
|
|
118
129
|
backdrop-filter: blur(20px);
|
|
119
130
|
-webkit-backdrop-filter: blur(20px);
|
|
@@ -340,6 +351,10 @@ const SETTINGS_STYLES = `
|
|
|
340
351
|
color: var(--accent, #5a7cff);
|
|
341
352
|
}
|
|
342
353
|
.settings-banner-text { flex: 1; }
|
|
354
|
+
.settings-banner code {
|
|
355
|
+
overflow-wrap: anywhere;
|
|
356
|
+
word-break: break-word;
|
|
357
|
+
}
|
|
343
358
|
/* Diff display for confirm dialog */
|
|
344
359
|
.settings-diff {
|
|
345
360
|
max-height: 300px;
|
|
@@ -388,6 +403,18 @@ const SETTINGS_STYLES = `
|
|
|
388
403
|
width: 100%;
|
|
389
404
|
box-sizing: border-box;
|
|
390
405
|
padding-bottom: 80px;
|
|
406
|
+
overflow-x: clip;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
.setting-row .segmented-control {
|
|
410
|
+
display: flex;
|
|
411
|
+
width: 100%;
|
|
412
|
+
flex-wrap: wrap;
|
|
413
|
+
margin-bottom: 0;
|
|
414
|
+
}
|
|
415
|
+
.setting-row .segmented-btn {
|
|
416
|
+
flex: 1 1 96px;
|
|
417
|
+
min-width: 0;
|
|
391
418
|
}
|
|
392
419
|
|
|
393
420
|
body.settings-save-open .main-content {
|
|
@@ -455,6 +482,78 @@ body.settings-save-open .main-content {
|
|
|
455
482
|
color: var(--text-tertiary, #666);
|
|
456
483
|
text-align: center;
|
|
457
484
|
}
|
|
485
|
+
|
|
486
|
+
@media (max-width: 900px) {
|
|
487
|
+
.settings-category-mobile {
|
|
488
|
+
display: block;
|
|
489
|
+
}
|
|
490
|
+
.settings-category-tabs {
|
|
491
|
+
display: grid;
|
|
492
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
493
|
+
gap: 8px;
|
|
494
|
+
overflow-x: visible;
|
|
495
|
+
padding: 4px 0 8px;
|
|
496
|
+
}
|
|
497
|
+
.settings-category-tab {
|
|
498
|
+
width: 100%;
|
|
499
|
+
border-radius: 12px;
|
|
500
|
+
min-height: 42px;
|
|
501
|
+
padding: 10px 12px;
|
|
502
|
+
justify-content: flex-start;
|
|
503
|
+
white-space: normal;
|
|
504
|
+
line-height: 1.25;
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
@media (max-width: 700px) {
|
|
509
|
+
.settings-save-bar {
|
|
510
|
+
left: 12px;
|
|
511
|
+
right: 12px;
|
|
512
|
+
width: auto;
|
|
513
|
+
max-width: none;
|
|
514
|
+
transform: none;
|
|
515
|
+
padding: 10px 12px;
|
|
516
|
+
}
|
|
517
|
+
@keyframes slideUp {
|
|
518
|
+
from { transform: translateY(20px); opacity: 0; }
|
|
519
|
+
to { transform: translateY(0); opacity: 1; }
|
|
520
|
+
}
|
|
521
|
+
.settings-save-bar .save-bar-actions {
|
|
522
|
+
width: 100%;
|
|
523
|
+
justify-content: flex-end;
|
|
524
|
+
}
|
|
525
|
+
.setting-input-wrap {
|
|
526
|
+
flex-direction: column;
|
|
527
|
+
align-items: stretch;
|
|
528
|
+
gap: 6px;
|
|
529
|
+
}
|
|
530
|
+
.setting-input-wrap input[type="text"],
|
|
531
|
+
.setting-input-wrap input[type="number"],
|
|
532
|
+
.setting-input-wrap input[type="password"],
|
|
533
|
+
.setting-input-wrap textarea,
|
|
534
|
+
.setting-input-wrap select {
|
|
535
|
+
width: 100%;
|
|
536
|
+
flex: 1 1 auto;
|
|
537
|
+
}
|
|
538
|
+
.setting-unit {
|
|
539
|
+
align-self: flex-end;
|
|
540
|
+
}
|
|
541
|
+
.setting-help-tooltip {
|
|
542
|
+
left: 0;
|
|
543
|
+
transform: none;
|
|
544
|
+
min-width: 0;
|
|
545
|
+
max-width: min(92vw, 360px);
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
@media (max-width: 640px) {
|
|
550
|
+
.settings-category-tabs {
|
|
551
|
+
display: none;
|
|
552
|
+
}
|
|
553
|
+
.setting-row .segmented-btn {
|
|
554
|
+
flex: 1 1 calc(50% - 4px);
|
|
555
|
+
}
|
|
556
|
+
}
|
|
458
557
|
`;
|
|
459
558
|
|
|
460
559
|
/* ─── Inject styles once ─── */
|
|
@@ -1172,6 +1271,21 @@ function ServerConfigMode() {
|
|
|
1172
1271
|
const activeCat = CATEGORIES.find((c) => c.id === activeCategory);
|
|
1173
1272
|
|
|
1174
1273
|
return html`
|
|
1274
|
+
<div class="settings-category-mobile">
|
|
1275
|
+
<label class="settings-category-mobile-label">Category</label>
|
|
1276
|
+
<div class="setting-input-wrap">
|
|
1277
|
+
<select
|
|
1278
|
+
value=${activeCategory}
|
|
1279
|
+
onChange=${(e) => {
|
|
1280
|
+
setActiveCategory(e.target.value);
|
|
1281
|
+
haptic("light");
|
|
1282
|
+
}}
|
|
1283
|
+
>
|
|
1284
|
+
${CATEGORIES.map((cat) => html`<option key=${cat.id} value=${cat.id}>${cat.label}</option>`)}
|
|
1285
|
+
</select>
|
|
1286
|
+
</div>
|
|
1287
|
+
</div>
|
|
1288
|
+
|
|
1175
1289
|
<!-- Category tabs -->
|
|
1176
1290
|
<div class="settings-category-tabs">
|
|
1177
1291
|
${CATEGORIES.map(
|