@yemi33/minions 0.1.2423 → 0.1.2425
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/bin/install-internal-minions.js +1209 -0
- package/bin/minions.js +75 -9
- package/dashboard/docs/typography.md +27 -12
- package/dashboard/js/command-center.js +13 -11
- package/dashboard/js/live-stream.js +1 -1
- package/dashboard/js/memory-search.js +388 -43
- package/dashboard/js/modal-qa.js +5 -5
- package/dashboard/js/qa.js +39 -26
- package/dashboard/js/refresh.js +37 -18
- package/dashboard/js/render-agents.js +14 -18
- package/dashboard/js/render-dispatch.js +14 -74
- package/dashboard/js/render-inbox.js +3 -3
- package/dashboard/js/render-meetings.js +8 -8
- package/dashboard/js/render-other.js +45 -20
- package/dashboard/js/render-pipelines.js +6 -6
- package/dashboard/js/render-plans.js +14 -14
- package/dashboard/js/render-prd.js +46 -46
- package/dashboard/js/render-prs.js +9 -65
- package/dashboard/js/render-schedules.js +5 -5
- package/dashboard/js/render-skills.js +6 -6
- package/dashboard/js/render-utils.js +4 -4
- package/dashboard/js/render-watches.js +4 -16
- package/dashboard/js/render-work-items.js +95 -107
- package/dashboard/js/settings.js +175 -74
- package/dashboard/layout.html +3 -2
- package/dashboard/pages/inbox.html +1 -1
- package/dashboard/pages/work.html +1 -1
- package/dashboard/shared/model-display.js +9 -0
- package/dashboard/shared/watches-source.js +43 -0
- package/dashboard/shared/welcome-popup.js +259 -0
- package/dashboard/slim/body.html +6 -6
- package/dashboard/slim/js/chat.js +4 -2
- package/dashboard/slim/js/history.js +10 -3
- package/dashboard/slim/js/modals-tiles.js +85 -16
- package/dashboard/slim/js/status.js +12 -16
- package/dashboard/slim/styles.css +24 -4
- package/dashboard/styles.css +62 -27
- package/dashboard-build.js +8 -2
- package/dashboard.js +3854 -2514
- package/docs/README.md +6 -4
- package/docs/api-errors.md +144 -0
- package/docs/auto-discovery.md +83 -61
- package/docs/capture-demos.js +173 -30
- package/docs/command-center.md +5 -1
- package/docs/completion-reports.md +127 -11
- package/docs/constants.md +15 -3
- package/docs/constellation-style-telemetry.md +2 -2
- package/docs/copilot-cli-schema.md +32 -22
- package/docs/cross-repo-plans.md +30 -30
- package/docs/demo/memory-system.html +1 -1
- package/docs/deprecated.json +132 -18
- package/docs/diagnostics-memory.md +8 -4
- package/docs/human-vs-automated.md +2 -2
- package/docs/internal-install.md +190 -0
- package/docs/kb-pr3223-cascade-archiving.md +16 -0
- package/docs/kb-pr696-merge-conflict-docs.md +23 -0
- package/docs/kb-sweep.md +2 -2
- package/docs/keep-processes.md +8 -1
- package/docs/live-checkout-mode.md +12 -7
- package/docs/managed-spawn.md +21 -3
- package/docs/named-agents.md +3 -2
- package/docs/plan-lifecycle.md +32 -32
- package/docs/pr-auto-fix-dispatch.md +3 -3
- package/docs/pr-review-fix-loop.md +6 -6
- package/docs/pr-screenshots/pr-899/worker-pool-worktrees-AFTER.png +0 -0
- package/docs/pr-screenshots/pr-899/worker-pool-worktrees-BEFORE.png +0 -0
- package/docs/pr-screenshots/pr-979/auto-fix-pane-AFTER.png +0 -0
- package/docs/pr-screenshots/pr-979/auto-fix-pane-BEFORE.png +0 -0
- package/docs/pr-screenshots/pr-985/pr-column-em-dash-AFTER.png +0 -0
- package/docs/pr-screenshots/pr-985/pr-column-em-dash-BEFORE.png +0 -0
- package/docs/qa-runbook-lifecycle.md +67 -51
- package/docs/qa-runbooks.md +2 -2
- package/docs/runtime-adapters.md +101 -50
- package/docs/security.md +28 -0
- package/docs/self-improvement.md +47 -13
- package/docs/skills.md +29 -0
- package/docs/slim-ux/concepts.md +2 -2
- package/docs/specs/agent-configurability.md +43 -41
- package/docs/specs/agent-rename.md +13 -13
- package/docs/team-memory.md +283 -14
- package/docs/tutorials/03-plan-driven-feature.md +3 -3
- package/docs/tutorials/04-runtimes-and-harness.md +18 -21
- package/docs/tutorials/08-operations-and-recovery.md +3 -2
- package/docs/tutorials/README.md +4 -3
- package/docs/visual-evidence-ci.md +103 -0
- package/docs/watches.md +35 -30
- package/docs/worktree-lifecycle.md +151 -13
- package/engine/acp-transport.js +1 -0
- package/engine/ado.js +80 -33
- package/engine/agent-api-validation.js +571 -0
- package/engine/agent-worker-pool.js +7 -6
- package/engine/api-contracts/agent-content.js +761 -0
- package/engine/api-contracts/cc-ops.js +219 -0
- package/engine/api-contracts/config-runtime.js +419 -0
- package/engine/api-contracts/core.js +138 -0
- package/engine/api-contracts/index.js +506 -0
- package/engine/api-contracts/orchestration.js +602 -0
- package/engine/api-contracts/pull-requests.js +323 -0
- package/engine/api-contracts/qa-process.js +764 -0
- package/engine/api-contracts/work-plan-prd.js +494 -0
- package/engine/api-validation.js +543 -0
- package/engine/cc-api-validation.js +586 -0
- package/engine/cc-worker-pool.js +9 -1
- package/engine/cleanup.js +393 -271
- package/engine/cli.js +65 -7
- package/engine/comment-classifier.js +70 -5
- package/engine/consolidation.js +123 -5
- package/engine/content-api-validation.js +606 -0
- package/engine/create-pr-worktree.js +22 -1
- package/engine/db/migrations/027-review-learning-lifecycle.js +162 -0
- package/engine/dispatch.js +33 -0
- package/engine/distribution.js +189 -0
- package/engine/execution-model.js +59 -0
- package/engine/features.js +12 -0
- package/engine/github.js +67 -25
- package/engine/harness-context.js +313 -0
- package/engine/inbox-store.js +1 -1
- package/engine/kb-sweep.js +161 -38
- package/engine/keep-process-sweep.js +43 -3
- package/engine/lifecycle.js +1066 -165
- package/engine/llm.js +4 -0
- package/engine/managed-spawn.js +463 -48
- package/engine/meeting.js +197 -34
- package/engine/memory-retrieval.js +280 -0
- package/engine/memory-store.js +821 -38
- package/engine/model-discovery.js +17 -3
- package/engine/pipeline.js +802 -14
- package/engine/plan-prd-validation.js +745 -0
- package/engine/playbook.js +206 -17
- package/engine/pooled-agent-process.js +6 -1
- package/engine/pr-action.js +1 -1
- package/engine/pr-issue-validation.js +653 -0
- package/engine/pr-resolve.js +75 -13
- package/engine/prd-store.js +39 -6
- package/engine/preflight.js +7 -2
- package/engine/process-utils.js +79 -31
- package/engine/projects.js +198 -12
- package/engine/promotion.js +371 -0
- package/engine/qa-from-prd.js +3 -0
- package/engine/qa-process-validation.js +572 -0
- package/engine/qa-runbooks.js +41 -37
- package/engine/qa-runners/maestro.js +11 -7
- package/engine/qa-runners/playwright.js +37 -14
- package/engine/qa-runners.js +9 -10
- package/engine/qa-runs.js +124 -11
- package/engine/qa-sessions.js +139 -40
- package/engine/quarantine-refs.js +81 -11
- package/engine/queries.js +163 -9
- package/engine/review-learning-backfill.js +482 -0
- package/engine/review-learning.js +1236 -0
- package/engine/runtimes/claude.js +60 -2
- package/engine/runtimes/codex.js +57 -16
- package/engine/runtimes/contract.js +21 -0
- package/engine/runtimes/copilot.js +51 -3
- package/engine/runtimes/index.js +1 -0
- package/engine/scheduler.js +201 -32
- package/engine/settings-validation.js +909 -0
- package/engine/shared.js +705 -208
- package/engine/spawn-agent.js +48 -21
- package/engine/steering-constraints.js +31 -0
- package/engine/steering-store.js +10 -2
- package/engine/steering.js +14 -2
- package/engine/timeout.js +404 -111
- package/engine/untrusted-fence.js +24 -10
- package/engine/watch-actions.js +7 -2
- package/engine/watches.js +353 -51
- package/engine/work-item-validation.js +561 -0
- package/engine/work-items-store.js +61 -1
- package/engine/worktree-gc.js +656 -37
- package/engine/worktree-preflight.js +154 -0
- package/engine.js +2068 -342
- package/package.json +1 -1
- package/playbooks/_pr-description-audit.md +88 -41
- package/playbooks/build-fix-complex.md +3 -3
- package/playbooks/docs.md +2 -2
- package/playbooks/fix.md +18 -18
- package/playbooks/implement.md +18 -18
- package/playbooks/qa-session-draft.md +10 -12
- package/playbooks/qa-session-execute.md +16 -12
- package/playbooks/qa-validate.md +8 -7
- package/playbooks/shared-rules.md +45 -0
- package/playbooks/test.md +4 -0
- package/prompts/cc-system.md +1 -1
- package/skills/check-self-authored-review-comment/SKILL.md +2 -2
|
@@ -119,19 +119,13 @@
|
|
|
119
119
|
// Reflect the Command Center's resolved runtime + model in the Actions panel
|
|
120
120
|
// header (slim-ux only — classic chrome is untouched). Source is the same
|
|
121
121
|
// /api/status payload the cockpit polls: autoMode.ccModel (config.engine
|
|
122
|
-
// ccModel → defaultModel → runtime default) and autoMode.ccCli. When
|
|
123
|
-
//
|
|
124
|
-
//
|
|
122
|
+
// ccModel → defaultModel → runtime default) and autoMode.ccCli. When the
|
|
123
|
+
// runtime picks its own model, autoMode.ccModelDisplay carries the latest
|
|
124
|
+
// concrete model reported by that runtime. textContent keeps config values XSS-safe.
|
|
125
125
|
function updateCcModelBadge(model, cli) {
|
|
126
126
|
var badge = document.getElementById('cc-model-badge');
|
|
127
127
|
if (!badge) return;
|
|
128
|
-
var m = (model
|
|
129
|
-
if (!m) {
|
|
130
|
-
badge.hidden = true;
|
|
131
|
-
badge.textContent = '';
|
|
132
|
-
badge.removeAttribute('title');
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
128
|
+
var m = MinionsModelDisplay.label(model);
|
|
135
129
|
var c = (cli === null || cli === undefined) ? '' : String(cli).trim();
|
|
136
130
|
var label = c ? (c + ' · ' + m) : m;
|
|
137
131
|
badge.textContent = label;
|
|
@@ -144,7 +138,7 @@
|
|
|
144
138
|
lastStatusData = data;
|
|
145
139
|
// ── Command Center model badge (Actions panel header) ──────
|
|
146
140
|
var autoMode = data.autoMode || {};
|
|
147
|
-
updateCcModelBadge(autoMode.ccModel, autoMode.ccCli);
|
|
141
|
+
updateCcModelBadge(autoMode.ccModelDisplay || autoMode.ccModel, autoMode.ccCli);
|
|
148
142
|
|
|
149
143
|
// ── Engine tile ────────────────────────────────────────────
|
|
150
144
|
var engine = data.engine || {};
|
|
@@ -231,13 +225,17 @@
|
|
|
231
225
|
activePrs.length === 0 ? null : (failingPrs.length ? 'red' : 'blue')
|
|
232
226
|
);
|
|
233
227
|
|
|
234
|
-
// ──
|
|
228
|
+
// ── Automation tile (Watches · Schedules · Pipelines) ─────────
|
|
229
|
+
// The at-a-glance indicator stays watches-driven: schedule/pipeline
|
|
230
|
+
// counts are not carried by the status poll, and the task explicitly
|
|
231
|
+
// says not to invent new API calls just for the tile count. The detail
|
|
232
|
+
// modal (renderAutomationTileBody) embeds all three classic screens.
|
|
235
233
|
var watches = Array.isArray(data.watches) ? data.watches : [];
|
|
236
234
|
var activeWatches = watches.filter(function(w) { return w && w.status === 'active'; });
|
|
237
235
|
updateTile(
|
|
238
|
-
'
|
|
236
|
+
'automation',
|
|
239
237
|
activeWatches.length,
|
|
240
|
-
activeWatches.length ? 'monitoring' : 'no
|
|
238
|
+
activeWatches.length ? 'monitoring' : 'no automation set',
|
|
241
239
|
activeWatches.length ? 'blue' : null
|
|
242
240
|
);
|
|
243
241
|
|
|
@@ -266,5 +264,3 @@
|
|
|
266
264
|
if (hStamp) hStamp.textContent = relTime(data.timestamp || Date.now());
|
|
267
265
|
}
|
|
268
266
|
|
|
269
|
-
|
|
270
|
-
|
|
@@ -368,16 +368,25 @@
|
|
|
368
368
|
text-align: center;
|
|
369
369
|
margin-top: 24px;
|
|
370
370
|
}
|
|
371
|
+
/* Suggested starter prompts (W-ms0vc4d0000ve615). Slim's global scale only
|
|
372
|
+
defines --space-1..5 (4/8/12/16/20); --space-6 / --space-8 exist solely
|
|
373
|
+
inside the #detail-panel scope, so referencing them here made `padding`
|
|
374
|
+
and `margin` invalid at computed-value time — the pill rendered with
|
|
375
|
+
zero padding and the group lost its spacing. Stay on the slim scale. */
|
|
371
376
|
.cc-suggestions {
|
|
372
377
|
display: flex;
|
|
378
|
+
flex-wrap: wrap;
|
|
373
379
|
justify-content: center;
|
|
380
|
+
align-items: center;
|
|
381
|
+
gap: var(--space-2);
|
|
374
382
|
width: 100%;
|
|
375
|
-
margin: var(--space-
|
|
383
|
+
margin: var(--space-3) auto;
|
|
376
384
|
}
|
|
385
|
+
#chat-suggestions-host .cc-suggestions { margin: var(--space-2) 0; }
|
|
377
386
|
.cc-suggestion {
|
|
378
387
|
appearance: none;
|
|
379
388
|
max-width: 100%;
|
|
380
|
-
padding: var(--space-
|
|
389
|
+
padding: var(--space-2) var(--space-4);
|
|
381
390
|
border: 1px solid var(--border);
|
|
382
391
|
border-radius: 999px;
|
|
383
392
|
background: var(--surface2);
|
|
@@ -721,11 +730,13 @@
|
|
|
721
730
|
#slim-tile-modal.tile-modal--work .modal,
|
|
722
731
|
#slim-tile-modal.tile-modal--plans .modal,
|
|
723
732
|
#slim-tile-modal.tile-modal--prs .modal,
|
|
733
|
+
#slim-tile-modal.tile-modal--automation .modal,
|
|
724
734
|
#slim-settings-modal .modal { width: calc(100vw - 32px); max-width: 1600px; }
|
|
725
735
|
#slim-tile-modal.tile-modal--engine .modal-body,
|
|
726
736
|
#slim-tile-modal.tile-modal--work .modal-body,
|
|
727
737
|
#slim-tile-modal.tile-modal--plans .modal-body,
|
|
728
738
|
#slim-tile-modal.tile-modal--prs .modal-body,
|
|
739
|
+
#slim-tile-modal.tile-modal--automation .modal-body,
|
|
729
740
|
#slim-settings-modal .modal-body { padding: 0; }
|
|
730
741
|
.slim-engine-embed,
|
|
731
742
|
.slim-work-embed,
|
|
@@ -735,6 +746,15 @@
|
|
|
735
746
|
display: block; width: 100%; height: calc(100vh - 96px); min-height: 420px;
|
|
736
747
|
border: 0; background: var(--bg);
|
|
737
748
|
}
|
|
749
|
+
/* Automation tile (Watches · Schedules · Pipelines) — a tabbed composite
|
|
750
|
+
inside the shared wide tile-modal. The tab bar sits above the embedded
|
|
751
|
+
classic screen, so the iframe height leaves room for it (vs the padless
|
|
752
|
+
full-height embeds above). Reuses the .kn-tab pill primitive. */
|
|
753
|
+
.slim-automation-tabs { padding: 12px 16px 0; }
|
|
754
|
+
.slim-automation-embed {
|
|
755
|
+
display: block; width: 100%; height: calc(100vh - 148px); min-height: 320px;
|
|
756
|
+
border: 0; background: var(--bg);
|
|
757
|
+
}
|
|
738
758
|
.tile-item {
|
|
739
759
|
display: block;
|
|
740
760
|
text-decoration: none;
|
|
@@ -1049,8 +1069,8 @@
|
|
|
1049
1069
|
.cockpit-grid > [data-tile="queued"],
|
|
1050
1070
|
.cockpit-grid > [data-tile="dispatches"],
|
|
1051
1071
|
.cockpit-grid > [data-tile="prs"] { grid-column: span 2; }
|
|
1052
|
-
/* Row 3:
|
|
1053
|
-
.cockpit-grid > [data-tile="
|
|
1072
|
+
/* Row 3: Automation | Knowledge | Plans — three equal columns (2 of 6 each). */
|
|
1073
|
+
.cockpit-grid > [data-tile="automation"],
|
|
1054
1074
|
.cockpit-grid > [data-tile="knowledge"],
|
|
1055
1075
|
.cockpit-grid > [data-tile="plans"] { grid-column: span 2; }
|
|
1056
1076
|
.cockpit-tile {
|
package/dashboard/styles.css
CHANGED
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
.token-chart { display: flex; align-items: flex-end; gap: 3px; height: 80px; margin: 8px 0; }
|
|
188
188
|
.token-bar { flex: 1; min-width: 8px; max-width: 24px; background: var(--blue); border-radius: 2px 2px 0 0; position: relative; cursor: default; transition: background 0.15s; }
|
|
189
189
|
.token-bar:hover { background: var(--green); }
|
|
190
|
-
.token-bar-tip { display: none; position: absolute; bottom: 100%; left: 50%; transform: translateX(-50%); background: var(--surface); border: 1px solid var(--border); border-radius: 4px; padding: 3px 6px; font-size: var(--text-
|
|
190
|
+
.token-bar-tip { display: none; position: absolute; bottom: 100%; left: 50%; transform: translateX(-50%); background: var(--surface); border: 1px solid var(--border); border-radius: 4px; padding: 3px 6px; font-size: var(--text-sm); white-space: nowrap; z-index: 10; color: var(--text); }
|
|
191
191
|
.token-bar:hover .token-bar-tip { display: block; }
|
|
192
192
|
.token-chart-labels { display: flex; gap: 3px; }
|
|
193
193
|
.token-chart-labels span { flex: 1; min-width: 8px; max-width: 24px; font-size: var(--text-xs); color: var(--muted); text-align: center; overflow: hidden; }
|
|
@@ -208,7 +208,7 @@
|
|
|
208
208
|
.kb-tab { background: var(--surface2); border: 1px solid var(--border); color: var(--muted); font-size: var(--text-base); cursor: pointer; padding: var(--space-1) var(--space-5); border-radius: var(--radius-sm); transition: all var(--transition-base); }
|
|
209
209
|
.kb-tab:hover { color: var(--text); border-color: var(--text); }
|
|
210
210
|
.kb-tab.active { color: var(--blue); border-color: var(--blue); background: rgba(88,166,255,0.08); }
|
|
211
|
-
.kb-tab .badge { background: var(--border); color: var(--text); font-size: var(--text-
|
|
211
|
+
.kb-tab .badge { background: var(--border); color: var(--text); font-size: var(--text-sm); padding: 0 5px; border-radius: var(--radius-lg); margin-left: var(--space-2); }
|
|
212
212
|
.kb-list { max-height: 400px; overflow-y: auto; padding: var(--space-3) var(--space-4) 0 0; }
|
|
213
213
|
.kb-item { display: flex; align-items: flex-start; gap: var(--space-5); padding: var(--space-4) 0; border-bottom: 1px solid var(--border); cursor: pointer; transition: background var(--transition-fast); }
|
|
214
214
|
.kb-item:hover { background: var(--surface2); }
|
|
@@ -293,7 +293,7 @@
|
|
|
293
293
|
.prd-item-priority.high { background: rgba(248,81,73,0.15); color: var(--red); }
|
|
294
294
|
.prd-item-priority.medium { background: rgba(210,153,34,0.15); color: var(--yellow); }
|
|
295
295
|
.prd-item-priority.low { background: rgba(139,148,158,0.15); color: var(--muted); }
|
|
296
|
-
.prd-project-badge { font-size: var(--text-
|
|
296
|
+
.prd-project-badge { font-size: var(--text-sm); padding: var(--space-1) 5px; border-radius: var(--radius-md); background: rgba(56,139,253,0.12); color: var(--blue); border: 1px solid rgba(56,139,253,0.25); white-space: nowrap; }
|
|
297
297
|
|
|
298
298
|
.notes-preview { max-height: 400px; overflow-y: auto; font-size: var(--text-md); line-height: 1.6; color: var(--muted); font-family: 'Segoe UI', system-ui, sans-serif; white-space: normal; word-wrap: break-word; background: var(--surface2); border: 1px solid var(--border); border-radius: var(--radius-md); padding: var(--space-6) var(--space-7); cursor: pointer; transition: border-color var(--transition-base); }
|
|
299
299
|
.notes-preview:hover { border-color: var(--blue); }
|
|
@@ -421,7 +421,7 @@
|
|
|
421
421
|
.pr-title:hover { text-decoration: underline; }
|
|
422
422
|
.pr-desc { color: var(--muted); font-size: var(--text-sm); font-weight: 400; margin-top: 2px; line-height: 1.4; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 400px; }
|
|
423
423
|
.pr-id { color: var(--muted); font-family: Consolas, monospace; font-size: var(--text-base); }
|
|
424
|
-
.pr-id-project { max-width: 120px; font-size: var(--text-
|
|
424
|
+
.pr-id-project { max-width: 120px; font-size: var(--text-sm); }
|
|
425
425
|
.pr-agent { font-size: var(--text-base); color: var(--text); }
|
|
426
426
|
.pr-branch { display: inline-block; max-width: 280px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: middle; font-family: Consolas, monospace; font-size: var(--text-sm); color: var(--muted); background: var(--bg); padding: var(--space-1) var(--space-3); border-radius: 3px; border: 1px solid var(--border); }
|
|
427
427
|
.pr-branch.branch-missing { color: var(--red); border-color: var(--red); background: rgba(248,81,73,0.12); }
|
|
@@ -538,7 +538,7 @@
|
|
|
538
538
|
.btn:disabled { opacity: 0.4; cursor: not-allowed; }
|
|
539
539
|
.btn-primary { background: var(--blue); color: #fff; border: none; }
|
|
540
540
|
.btn-primary:hover { opacity: 0.9; }
|
|
541
|
-
.btn-sm { font-size: var(--text-
|
|
541
|
+
.btn-sm { font-size: var(--text-sm); padding: var(--space-1) var(--space-3); }
|
|
542
542
|
.btn-success { color: var(--green); border-color: var(--green); }
|
|
543
543
|
.btn-danger { color: var(--red); border-color: var(--red); }
|
|
544
544
|
.btn-warning { color: var(--yellow); border-color: var(--yellow); }
|
|
@@ -559,7 +559,7 @@
|
|
|
559
559
|
background: var(--surface2);
|
|
560
560
|
border: 1px solid var(--green);
|
|
561
561
|
color: var(--green);
|
|
562
|
-
font-size: var(--text-
|
|
562
|
+
font-size: var(--text-sm);
|
|
563
563
|
padding: 1px 6px;
|
|
564
564
|
border-radius: var(--radius-sm);
|
|
565
565
|
cursor: pointer;
|
|
@@ -593,7 +593,7 @@
|
|
|
593
593
|
background: var(--surface2);
|
|
594
594
|
border: 1px solid var(--green);
|
|
595
595
|
color: var(--green);
|
|
596
|
-
font-size: var(--text-
|
|
596
|
+
font-size: var(--text-sm);
|
|
597
597
|
padding: 1px 6px;
|
|
598
598
|
border-radius: var(--radius-sm);
|
|
599
599
|
cursor: pointer;
|
|
@@ -626,7 +626,7 @@
|
|
|
626
626
|
background: var(--surface2);
|
|
627
627
|
border: 1px solid var(--red);
|
|
628
628
|
color: var(--red);
|
|
629
|
-
font-size: var(--text-
|
|
629
|
+
font-size: var(--text-sm);
|
|
630
630
|
padding: 1px 6px;
|
|
631
631
|
border-radius: var(--radius-sm);
|
|
632
632
|
cursor: pointer;
|
|
@@ -653,7 +653,7 @@
|
|
|
653
653
|
background: var(--surface2);
|
|
654
654
|
border: 1px solid var(--blue);
|
|
655
655
|
color: var(--blue);
|
|
656
|
-
font-size: var(--text-
|
|
656
|
+
font-size: var(--text-sm);
|
|
657
657
|
padding: 1px 6px;
|
|
658
658
|
border-radius: var(--radius-sm);
|
|
659
659
|
cursor: pointer;
|
|
@@ -1205,7 +1205,7 @@
|
|
|
1205
1205
|
.modal-back-btn:hover { color: var(--text); border-color: var(--blue); }
|
|
1206
1206
|
.modal-stack-chip {
|
|
1207
1207
|
display: inline-flex; align-items: center; padding: var(--space-1) var(--space-4);
|
|
1208
|
-
border-radius: 10px; font-size: var(--text-
|
|
1208
|
+
border-radius: 10px; font-size: var(--text-sm); color: var(--muted);
|
|
1209
1209
|
background: var(--surface2); border: 1px solid var(--border);
|
|
1210
1210
|
font-variant-numeric: tabular-nums;
|
|
1211
1211
|
}
|
|
@@ -1254,15 +1254,20 @@
|
|
|
1254
1254
|
normal spacing relative to non-action neighbors (parent flex gap:10px). */
|
|
1255
1255
|
#cc-messages > .cc-msg-action + .cc-msg-action { margin-top: -8px; }
|
|
1256
1256
|
|
|
1257
|
+
/* Suggested starter prompts (W-ms0vc4d0000ve615): content-sized pills in a
|
|
1258
|
+
centered wrapping row, NOT full-width bars. `max-width` (not `width`) keeps
|
|
1259
|
+
a long prompt inside the 420px drawer without stretching a short one. */
|
|
1257
1260
|
.cc-suggestions {
|
|
1258
|
-
display: flex; flex-
|
|
1261
|
+
display: flex; flex-wrap: wrap; justify-content: center; align-items: center;
|
|
1262
|
+
gap: var(--space-3);
|
|
1259
1263
|
width: 100%; margin: var(--space-7) auto 0;
|
|
1260
1264
|
}
|
|
1265
|
+
#cc-suggestions-host .cc-suggestions { margin: 0 0 var(--space-4); }
|
|
1261
1266
|
.cc-suggestion {
|
|
1262
|
-
appearance: none; width: 100%; padding: var(--space-
|
|
1263
|
-
border: 1px solid var(--border); border-radius:
|
|
1267
|
+
appearance: none; max-width: 100%; padding: var(--space-3) var(--space-7);
|
|
1268
|
+
border: 1px solid var(--border); border-radius: 999px;
|
|
1264
1269
|
background: var(--surface2); color: var(--text); font: inherit;
|
|
1265
|
-
font-size: var(--text-md); line-height: 1.4; text-align:
|
|
1270
|
+
font-size: var(--text-md); line-height: 1.4; text-align: center; cursor: pointer;
|
|
1266
1271
|
transition: border-color var(--transition-base), color var(--transition-base);
|
|
1267
1272
|
}
|
|
1268
1273
|
.cc-suggestion:hover { border-color: var(--blue); color: var(--blue); }
|
|
@@ -1295,7 +1300,7 @@
|
|
|
1295
1300
|
#cc-drawer.cc-dragover { outline: 2px dashed var(--blue); outline-offset: -2px; }
|
|
1296
1301
|
.cc-attach-chip { display: inline-flex; align-items: center; gap: 6px; max-width: 180px;
|
|
1297
1302
|
padding: 4px 6px; background: var(--surface2); border: 1px solid var(--border);
|
|
1298
|
-
border-radius: var(--radius-sm); font-size: var(--text-
|
|
1303
|
+
border-radius: var(--radius-sm); font-size: var(--text-sm); }
|
|
1299
1304
|
.cc-attach-thumb { width: 28px; height: 28px; object-fit: cover; border-radius: 3px;
|
|
1300
1305
|
flex-shrink: 0; background: var(--bg); }
|
|
1301
1306
|
.cc-attach-name { color: var(--muted); white-space: nowrap; overflow: hidden;
|
|
@@ -1303,7 +1308,7 @@
|
|
|
1303
1308
|
.cc-attach-remove { flex-shrink: 0; background: none; border: none; color: var(--muted);
|
|
1304
1309
|
cursor: pointer; font-size: var(--text-md); line-height: 1; padding: 0 2px; }
|
|
1305
1310
|
.cc-attach-remove:hover { color: var(--red); }
|
|
1306
|
-
.cc-msg-attach-note { margin-top: 4px; font-size: var(--text-
|
|
1311
|
+
.cc-msg-attach-note { margin-top: 4px; font-size: var(--text-sm); opacity: 0.85; }
|
|
1307
1312
|
|
|
1308
1313
|
.modal-body { padding: var(--space-7) var(--space-8); overflow-y: auto; overflow-x: auto; white-space: pre-wrap; font-size: var(--text-md); line-height: 1.7; color: var(--muted); font-family: Consolas, monospace; }
|
|
1309
1314
|
|
|
@@ -1328,7 +1333,7 @@
|
|
|
1328
1333
|
.settings-rail-btn:hover { color: var(--text); background: var(--surface); }
|
|
1329
1334
|
.settings-rail-btn.active { color: var(--blue); border-left-color: var(--blue); background: var(--surface); font-weight: 600; }
|
|
1330
1335
|
.settings-rail-btn.no-match { opacity: 0.3; }
|
|
1331
|
-
.settings-rail-btn .match-count { font-size: var(--text-
|
|
1336
|
+
.settings-rail-btn .match-count { font-size: var(--text-sm); color: var(--blue); background: var(--bg); border-radius: var(--radius-xl); padding: 1px 6px; min-width: 18px; text-align: center; }
|
|
1332
1337
|
/* W-mryz3r7h — collapsible rail fold ("Advanced"). The fold header is a real
|
|
1333
1338
|
<button> (keyboard-operable); child rail buttons live in a container that
|
|
1334
1339
|
is hidden unless the fold is .open. Children are indented under the header. */
|
|
@@ -1363,6 +1368,36 @@
|
|
|
1363
1368
|
.settings-body.searching .settings-project-block.project-config-hidden { display: block; }
|
|
1364
1369
|
.settings-pane-empty { font-size: var(--text-base); color: var(--muted); padding: var(--space-6) 0; font-style: italic; }
|
|
1365
1370
|
|
|
1371
|
+
/* W-mryyzhug000454b7 — enable/disabled tile grid for the per-cause auto-fix
|
|
1372
|
+
gates. The real checkbox stays the source of truth (id-based save path is
|
|
1373
|
+
untouched); it is visually hidden but still focusable so the tile is fully
|
|
1374
|
+
keyboard-accessible. The visible box is .settings-tile-inner so we can flip
|
|
1375
|
+
its enabled/dimmed state via the :checked sibling selector without :has(). */
|
|
1376
|
+
.settings-tile-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: var(--space-3); }
|
|
1377
|
+
.settings-tile { display: block; position: relative; cursor: pointer; margin: 0; }
|
|
1378
|
+
.settings-tile.no-match { display: none; }
|
|
1379
|
+
.settings-tile-input { position: absolute; width: 1px; height: 1px; opacity: 0; margin: 0; pointer-events: none; }
|
|
1380
|
+
.settings-tile-inner {
|
|
1381
|
+
display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-1);
|
|
1382
|
+
padding: var(--space-4) var(--space-4); height: 100%;
|
|
1383
|
+
border: 1px solid var(--border); border-radius: var(--radius-md, 8px);
|
|
1384
|
+
background: var(--surface); opacity: 0.55;
|
|
1385
|
+
transition: border-color .12s ease, background .12s ease, opacity .12s ease;
|
|
1386
|
+
}
|
|
1387
|
+
.settings-tile:hover .settings-tile-inner { border-color: var(--blue); }
|
|
1388
|
+
.settings-tile-input:focus-visible ~ .settings-tile-inner,
|
|
1389
|
+
.settings-tile-input:focus ~ .settings-tile-inner { outline: 2px solid var(--blue); outline-offset: 2px; }
|
|
1390
|
+
.settings-tile-input:checked ~ .settings-tile-inner {
|
|
1391
|
+
opacity: 1; border-color: var(--blue); background: rgba(88,166,255,0.10);
|
|
1392
|
+
}
|
|
1393
|
+
.settings-tile.match-highlight .settings-tile-inner { box-shadow: 0 0 0 2px var(--blue); }
|
|
1394
|
+
.settings-tile-icon { font-size: var(--text-2xl, 20px); line-height: 1; }
|
|
1395
|
+
.settings-tile-label { font-size: var(--text-md); color: var(--text); font-weight: 600; }
|
|
1396
|
+
.settings-tile-state { font-size: var(--text-xs); color: var(--muted); text-transform: uppercase; letter-spacing: 0.04em; }
|
|
1397
|
+
.settings-tile-state::after { content: "Off"; }
|
|
1398
|
+
.settings-tile-input:checked ~ .settings-tile-inner .settings-tile-state { color: var(--blue); }
|
|
1399
|
+
.settings-tile-input:checked ~ .settings-tile-inner .settings-tile-state::after { content: "On"; }
|
|
1400
|
+
|
|
1366
1401
|
/* Responsive: tablet / narrow window */
|
|
1367
1402
|
@media (max-width: 1100px) {
|
|
1368
1403
|
.layout { grid-template-columns: 1fr; }
|
|
@@ -1458,7 +1493,7 @@
|
|
|
1458
1493
|
* runs in-place in the operator's working tree — the riskier/special mode,
|
|
1459
1494
|
* so it gets a more prominent (yellow) color. Mirrors the .badge palette. */
|
|
1460
1495
|
.project-mode-pill {
|
|
1461
|
-
font-size: var(--text-
|
|
1496
|
+
font-size: var(--text-sm); font-weight: 600;
|
|
1462
1497
|
border-radius: var(--radius-lg); padding: 0 6px;
|
|
1463
1498
|
white-space: nowrap; vertical-align: bottom; cursor: help;
|
|
1464
1499
|
}
|
|
@@ -1505,7 +1540,7 @@
|
|
|
1505
1540
|
}
|
|
1506
1541
|
.checkout-mode-menu-item-active { color: var(--blue); font-weight: 600; }
|
|
1507
1542
|
.checkout-mode-menu-item-desc {
|
|
1508
|
-
font-size: var(--text-
|
|
1543
|
+
font-size: var(--text-sm); color: var(--muted); font-weight: 400;
|
|
1509
1544
|
margin-top: 2px; line-height: 1.35;
|
|
1510
1545
|
}
|
|
1511
1546
|
.checkout-mode-menu-checkboxes {
|
|
@@ -1570,7 +1605,7 @@
|
|
|
1570
1605
|
.qa-target-project { color: var(--muted); font-size: var(--text-base); }
|
|
1571
1606
|
.qa-target-source {
|
|
1572
1607
|
display: inline-block; margin-left: var(--space-3);
|
|
1573
|
-
font-size: var(--text-
|
|
1608
|
+
font-size: var(--text-sm); color: var(--muted);
|
|
1574
1609
|
border: 1px solid var(--border); border-radius: var(--radius-sm);
|
|
1575
1610
|
padding: 1px var(--space-3); text-transform: uppercase;
|
|
1576
1611
|
}
|
|
@@ -1633,7 +1668,7 @@
|
|
|
1633
1668
|
}
|
|
1634
1669
|
.qa-run-head { display: flex; align-items: center; gap: var(--space-4); flex-wrap: wrap; font-size: var(--text-md); }
|
|
1635
1670
|
.qa-run-status {
|
|
1636
|
-
display: inline-block; font-size: var(--text-
|
|
1671
|
+
display: inline-block; font-size: var(--text-sm); font-weight: 700;
|
|
1637
1672
|
padding: 2px var(--space-3); border-radius: var(--radius-sm);
|
|
1638
1673
|
text-transform: uppercase; letter-spacing: 0.5px;
|
|
1639
1674
|
background: var(--surface); color: var(--muted); border: 1px solid var(--border);
|
|
@@ -1665,7 +1700,7 @@
|
|
|
1665
1700
|
background: var(--bg);
|
|
1666
1701
|
}
|
|
1667
1702
|
.qa-artifact-caption {
|
|
1668
|
-
font-size: var(--text-
|
|
1703
|
+
font-size: var(--text-sm); color: var(--muted);
|
|
1669
1704
|
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
1670
1705
|
word-break: break-all;
|
|
1671
1706
|
}
|
|
@@ -1674,7 +1709,7 @@
|
|
|
1674
1709
|
.qa-artifact-log-preview {
|
|
1675
1710
|
background: var(--bg); color: var(--text);
|
|
1676
1711
|
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
1677
|
-
font-size: var(--text-
|
|
1712
|
+
font-size: var(--text-sm); padding: var(--space-3);
|
|
1678
1713
|
border-radius: var(--radius-sm); margin: 0;
|
|
1679
1714
|
max-height: 160px; overflow: auto; white-space: pre;
|
|
1680
1715
|
}
|
|
@@ -1720,7 +1755,7 @@
|
|
|
1720
1755
|
}
|
|
1721
1756
|
.qa-session-id { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; color: var(--text); }
|
|
1722
1757
|
.qa-session-state {
|
|
1723
|
-
display: inline-block; font-size: var(--text-
|
|
1758
|
+
display: inline-block; font-size: var(--text-sm); font-weight: 700;
|
|
1724
1759
|
padding: 2px var(--space-3); border-radius: var(--radius-sm);
|
|
1725
1760
|
text-transform: uppercase; letter-spacing: 0.5px;
|
|
1726
1761
|
background: var(--surface); color: var(--muted); border: 1px solid var(--border);
|
|
@@ -1743,7 +1778,7 @@
|
|
|
1743
1778
|
background: var(--surface); color: var(--muted);
|
|
1744
1779
|
border: 1px solid var(--border);
|
|
1745
1780
|
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
1746
|
-
font-size: var(--text-
|
|
1781
|
+
font-size: var(--text-sm);
|
|
1747
1782
|
}
|
|
1748
1783
|
.qa-phase-chip--pending { opacity: 0.5; }
|
|
1749
1784
|
.qa-phase-chip--active {
|
|
@@ -1778,7 +1813,7 @@
|
|
|
1778
1813
|
.qa-session-flows-preview,
|
|
1779
1814
|
.qa-session-flows-full { overflow-wrap: anywhere; }
|
|
1780
1815
|
.qa-session-flows-affordance {
|
|
1781
|
-
color: var(--blue); font-size: var(--text-
|
|
1816
|
+
color: var(--blue); font-size: var(--text-sm); white-space: nowrap;
|
|
1782
1817
|
}
|
|
1783
1818
|
.qa-session-flows-affordance::before { content: '+ '; }
|
|
1784
1819
|
.qa-session-flows-collapse-label { display: none; }
|
|
@@ -1815,7 +1850,7 @@
|
|
|
1815
1850
|
border-left: 3px solid var(--red); border-radius: var(--radius-sm);
|
|
1816
1851
|
color: var(--red); font-size: var(--text-sm); }
|
|
1817
1852
|
.cc-error strong { color: var(--red); }
|
|
1818
|
-
.cc-error code { font-family: monospace; font-size: var(--text-
|
|
1853
|
+
.cc-error code { font-family: monospace; font-size: var(--text-sm);
|
|
1819
1854
|
color: var(--muted); }
|
|
1820
1855
|
|
|
1821
1856
|
/* W-mqrdggys000f94a4 — chrome-off "embed" mode (?embed=1). Strips the global
|
package/dashboard-build.js
CHANGED
|
@@ -8,7 +8,7 @@ const shared = require('./engine/shared');
|
|
|
8
8
|
const { safeRead } = shared;
|
|
9
9
|
|
|
10
10
|
const MINIONS_DIR = __dirname;
|
|
11
|
-
const DASHBOARD_SHARED_JS = ['pr-merge-state', 'pr-filters', 'cc-suggestions'];
|
|
11
|
+
const DASHBOARD_SHARED_JS = ['pr-merge-state', 'pr-filters', 'cc-suggestions', 'model-display', 'watches-source', 'welcome-popup'];
|
|
12
12
|
|
|
13
13
|
function buildDashboardHtml() {
|
|
14
14
|
const dashDir = path.join(MINIONS_DIR, 'dashboard');
|
|
@@ -171,4 +171,10 @@ function buildSlimHtml(opts) {
|
|
|
171
171
|
// observe a cold first call without depending on test execution order.
|
|
172
172
|
function _resetSlimPartsCacheForTest() { _slimPartsCache = null; }
|
|
173
173
|
|
|
174
|
-
module.exports = {
|
|
174
|
+
module.exports = {
|
|
175
|
+
buildDashboardHtml,
|
|
176
|
+
buildSlimHtml,
|
|
177
|
+
DASHBOARD_SHARED_JS,
|
|
178
|
+
SLIM_JS_ORDER,
|
|
179
|
+
_resetSlimPartsCacheForTest,
|
|
180
|
+
};
|