@yemi33/minions 0.1.2109 → 0.1.2111
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/dashboard/js/command-center.js +36 -36
- package/dashboard/js/detail-panel.js +12 -12
- package/dashboard/js/fre.js +9 -9
- package/dashboard/js/live-stream.js +2 -2
- package/dashboard/js/modal-qa.js +17 -17
- package/dashboard/js/qa.js +3 -3
- package/dashboard/js/refresh.js +8 -8
- package/dashboard/js/render-agents.js +12 -12
- package/dashboard/js/render-dispatch.js +8 -8
- package/dashboard/js/render-inbox.js +5 -5
- package/dashboard/js/render-managed.js +16 -16
- package/dashboard/js/render-meetings.js +36 -36
- package/dashboard/js/render-other.js +23 -23
- package/dashboard/js/render-pinned.js +1 -1
- package/dashboard/js/render-pipelines.js +36 -36
- package/dashboard/js/render-plans.js +23 -23
- package/dashboard/js/render-prd.js +100 -100
- package/dashboard/js/render-prs.js +10 -10
- package/dashboard/js/render-schedules.js +23 -23
- package/dashboard/js/render-skills.js +7 -7
- package/dashboard/js/render-utils.js +22 -22
- package/dashboard/js/render-watches.js +37 -37
- package/dashboard/js/render-work-items.js +34 -34
- package/dashboard/js/utils.js +8 -8
- package/dashboard/layout.html +20 -20
- package/dashboard/pages/engine.html +4 -4
- package/dashboard/pages/home.html +4 -4
- package/dashboard/pages/inbox.html +3 -3
- package/dashboard/pages/meetings.html +2 -2
- package/dashboard/pages/pipelines.html +2 -2
- package/dashboard/pages/plans.html +3 -3
- package/dashboard/pages/prs.html +2 -2
- package/dashboard/pages/schedule.html +2 -2
- package/dashboard/pages/tools.html +1 -1
- package/dashboard/pages/watches.html +2 -2
- package/dashboard/pages/work.html +3 -3
- package/dashboard/styles.css +38 -38
- package/docs/onboarding.md +2 -2
- package/engine.js +52 -6
- package/package.json +1 -1
package/dashboard/layout.html
CHANGED
|
@@ -26,11 +26,11 @@
|
|
|
26
26
|
<h1>Minions Mission Control</h1>
|
|
27
27
|
<div style="display:flex;align-items:center;gap:8px;">
|
|
28
28
|
<span class="engine-badge stopped" id="engine-badge">STOPPED</span>
|
|
29
|
-
<span id="version-banner" style="font-size:
|
|
29
|
+
<span id="version-banner" style="font-size:var(--text-xs);color:var(--muted)"></span>
|
|
30
30
|
<div class="timestamp" id="ts">—</div>
|
|
31
|
-
<button onclick="toggleCommandCenter()" style="background:none;border:none;cursor:pointer;font-size:
|
|
32
|
-
<button onclick="openBugReport()" style="background:none;border:none;cursor:pointer;font-size:
|
|
33
|
-
<button onclick="openSettings()" style="background:none;border:none;cursor:pointer;font-size:
|
|
31
|
+
<button onclick="toggleCommandCenter()" style="background:none;border:none;cursor:pointer;font-size:var(--text-md);color:var(--blue);padding:4px 10px;line-height:1;font-weight:700;border:1px solid var(--blue);border-radius:4px" title="Command Center" id="cc-toggle-btn">Command Center</button>
|
|
32
|
+
<button onclick="openBugReport()" style="background:none;border:none;cursor:pointer;font-size:var(--text-base);color:var(--muted);padding:4px 8px;line-height:1;border:1px solid var(--border);border-radius:4px" title="Report a bug in Minions">Report Bug</button>
|
|
33
|
+
<button onclick="openSettings()" style="background:none;border:none;cursor:pointer;font-size:var(--text-2xl);color:var(--muted);padding:4px;line-height:1" title="Settings">⚙</button>
|
|
34
34
|
</div>
|
|
35
35
|
</header>
|
|
36
36
|
<div class="engine-alert" id="engine-alert"></div>
|
|
@@ -41,36 +41,36 @@
|
|
|
41
41
|
<div id="cc-resize-handle" class="cc-resize-handle"></div>
|
|
42
42
|
<div style="padding:12px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between">
|
|
43
43
|
<div style="display:flex;align-items:center;gap:8px">
|
|
44
|
-
<span style="font-weight:700;color:var(--blue);font-size:
|
|
45
|
-
<span id="cc-session-info" style="font-size:
|
|
44
|
+
<span style="font-weight:700;color:var(--blue);font-size:var(--text-xl)">Command Center</span>
|
|
45
|
+
<span id="cc-session-info" style="font-size:var(--text-sm);color:var(--muted)">New session</span>
|
|
46
46
|
</div>
|
|
47
47
|
<div style="display:flex;align-items:center;gap:8px">
|
|
48
|
-
<button onclick="ccNewSession()" style="background:none;border:1px solid var(--border);color:var(--muted);font-size:
|
|
49
|
-
<button onclick="toggleCommandCenter()" style="background:none;border:none;color:var(--muted);font-size:
|
|
48
|
+
<button onclick="ccNewSession()" style="background:none;border:1px solid var(--border);color:var(--muted);font-size:var(--text-sm);padding:2px 8px;border-radius:3px;cursor:pointer">Clear Chat</button>
|
|
49
|
+
<button onclick="toggleCommandCenter()" style="background:none;border:none;color:var(--muted);font-size:var(--text-xl);cursor:pointer;padding:2px 6px">✕</button>
|
|
50
50
|
</div>
|
|
51
51
|
</div>
|
|
52
52
|
<div id="cc-tab-bar" style="display:flex;gap:8px;padding:4px 12px;border-bottom:1px solid var(--border);overflow:hidden;align-items:center;flex-shrink:0"></div>
|
|
53
53
|
<div id="cc-messages" style="flex:1;overflow-y:auto;padding:12px 16px;display:flex;flex-direction:column;gap:10px"></div>
|
|
54
54
|
<div style="padding:12px 16px;border-top:1px solid var(--border)">
|
|
55
55
|
<div style="display:flex;gap:8px">
|
|
56
|
-
<textarea id="cc-input" rows="2" placeholder="Ask anything or give a command..." style="flex:1;padding:8px 10px;background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:
|
|
57
|
-
<button onclick="ccSend()" style="background:var(--blue);color:#fff;border:none;border-radius:6px;padding:8px 14px;font-size:
|
|
56
|
+
<textarea id="cc-input" rows="2" placeholder="Ask anything or give a command..." style="flex:1;padding:8px 10px;background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:var(--text-md);resize:none;font-family:inherit" onkeydown="if(event.key==='Enter'&&!event.shiftKey){event.preventDefault();ccSend()}"></textarea>
|
|
57
|
+
<button onclick="ccSend()" style="background:var(--blue);color:#fff;border:none;border-radius:6px;padding:8px 14px;font-size:var(--text-md);font-weight:600;cursor:pointer;align-self:flex-end">Send</button>
|
|
58
58
|
</div>
|
|
59
|
-
<div id="cc-powered-by" style="font-size:
|
|
59
|
+
<div id="cc-powered-by" style="font-size:var(--text-xs);color:var(--muted);margin-top:4px">Full minions context. Enter to send, Shift+Enter for newline.</div>
|
|
60
60
|
</div>
|
|
61
61
|
</div>
|
|
62
62
|
|
|
63
|
-
<div id="projects-bar" style="background:var(--surface);border-bottom:1px solid var(--border);padding:8px 24px;display:flex;align-items:center;gap:12px;font-size:
|
|
64
|
-
<span style="color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:0.5px;font-size:
|
|
63
|
+
<div id="projects-bar" style="background:var(--surface);border-bottom:1px solid var(--border);padding:8px 24px;display:flex;align-items:center;gap:12px;font-size:var(--text-md);">
|
|
64
|
+
<span style="color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:0.5px;font-size:var(--text-sm);">Projects</span>
|
|
65
65
|
<div id="projects-list" style="display:flex;gap:8px;flex-wrap:wrap;">—</div>
|
|
66
66
|
</div>
|
|
67
67
|
|
|
68
68
|
<div id="setup-banner" style="display:none;margin:16px 24px;padding:16px 20px;background:var(--surface2);border:1px dashed var(--blue);border-radius:8px;color:var(--text)">
|
|
69
|
-
<div style="font-size:
|
|
70
|
-
<div style="color:var(--muted);font-size:
|
|
69
|
+
<div style="font-size:var(--text-2xl);margin-bottom:6px;text-align:center">Getting Started</div>
|
|
70
|
+
<div style="color:var(--muted);font-size:var(--text-lg);margin-bottom:12px;text-align:center">No projects linked yet. Link a project so agents know what code to work on.</div>
|
|
71
71
|
<div style="display:flex;flex-direction:column;gap:8px;align-items:center">
|
|
72
|
-
<button onclick="openScanProjectsModal()" style="padding:8px 20px;background:var(--blue);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:
|
|
73
|
-
<div style="font-size:
|
|
72
|
+
<button onclick="openScanProjectsModal()" style="padding:8px 20px;background:var(--blue);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--text-lg);font-weight:600">Scan for Projects</button>
|
|
73
|
+
<div style="font-size:var(--text-base);color:var(--muted)">Or via CLI: <code style="background:var(--bg);padding:2px 6px;border-radius:3px;font-size:var(--text-base)">minions add <path-to-your-repo></code></div>
|
|
74
74
|
</div>
|
|
75
75
|
</div>
|
|
76
76
|
|
|
@@ -131,15 +131,15 @@
|
|
|
131
131
|
<div class="modal-body" id="modal-body"></div>
|
|
132
132
|
<div class="modal-qa" id="modal-qa" style="display:none">
|
|
133
133
|
<div id="qa-expand-bar" style="display:none;text-align:center;padding:2px 0">
|
|
134
|
-
<button style="background:none;border:none;color:var(--muted);font-size:
|
|
134
|
+
<button style="background:none;border:none;color:var(--muted);font-size:var(--text-sm);cursor:pointer;padding:2px 6px" onclick="toggleDocChat()" title="Expand thread">▲ Expand chat</button>
|
|
135
135
|
</div>
|
|
136
136
|
<div id="modal-qa-thread-wrap" style="display:none">
|
|
137
137
|
<div id="qa-resize-handle" style="height:6px;cursor:ns-resize;display:flex;align-items:center;justify-content:center;user-select:none;touch-action:none" title="Drag to resize">
|
|
138
138
|
<div style="width:32px;height:3px;border-radius:2px;background:var(--border)"></div>
|
|
139
139
|
</div>
|
|
140
140
|
<div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:4px">
|
|
141
|
-
<button id="qa-clear-btn" style="background:none;border:none;color:var(--muted);font-size:
|
|
142
|
-
<button style="background:none;border:none;color:var(--muted);font-size:
|
|
141
|
+
<button id="qa-clear-btn" style="background:none;border:none;color:var(--muted);font-size:var(--text-sm);cursor:pointer;padding:2px 6px" onclick="clearQaConversation()" title="Clear conversation">Clear</button>
|
|
142
|
+
<button style="background:none;border:none;color:var(--muted);font-size:var(--text-sm);cursor:pointer;padding:2px 6px" onclick="toggleDocChat()" id="qa-toggle-btn" title="Collapse thread">▼ Collapse</button>
|
|
143
143
|
</div>
|
|
144
144
|
<div class="modal-qa-thread" id="modal-qa-thread"></div>
|
|
145
145
|
</div>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<div class="engine-alert" id="ado-throttle-alert" style="display:none"></div>
|
|
2
2
|
<div class="engine-alert" id="gh-throttle-alert" style="display:none"></div>
|
|
3
3
|
<section>
|
|
4
|
-
<div id="engine-quick-stats" style="display:flex;gap:16px;margin-bottom:12px;font-size:
|
|
4
|
+
<div id="engine-quick-stats" style="display:flex;gap:16px;margin-bottom:12px;font-size:var(--text-base);color:var(--muted)"></div>
|
|
5
5
|
</section>
|
|
6
6
|
<section>
|
|
7
|
-
<h2>Engine Log <span style="font-size:
|
|
7
|
+
<h2>Engine Log <span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">tick-by-tick audit trail of engine operations</span></h2>
|
|
8
8
|
<div class="log-list" id="engine-log">No log entries yet.</div>
|
|
9
9
|
</section>
|
|
10
10
|
<section>
|
|
@@ -21,13 +21,13 @@
|
|
|
21
21
|
</section>
|
|
22
22
|
<section id="keep-processes-section">
|
|
23
23
|
<h2>Keep-Processes <span class="count" id="keep-processes-count">0</span>
|
|
24
|
-
<span style="font-size:
|
|
24
|
+
<span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">processes left running by agents</span>
|
|
25
25
|
</h2>
|
|
26
26
|
<div id="keep-processes-content"><p class="empty">No agents have left processes running. Set <code>meta.keep_processes: true</code> on a work item to enable.</p></div>
|
|
27
27
|
</section>
|
|
28
28
|
<section id="managed-processes-section">
|
|
29
29
|
<h2>Managed Processes <span class="count" id="managed-processes-count">0</span>
|
|
30
|
-
<span style="font-size:
|
|
30
|
+
<span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">engine-managed long-running services</span>
|
|
31
31
|
</h2>
|
|
32
32
|
<div id="managed-processes-content"><p class="empty">No managed processes. Agents declare them via <code>agents/<id>/managed-spawn.json</code>.</p></div>
|
|
33
33
|
</section>
|
|
@@ -12,19 +12,19 @@
|
|
|
12
12
|
<span style="color:var(--blue);font-weight:600">Command Center</span>
|
|
13
13
|
<span id="cmd-powered-by">Ask anything, dispatch work, manage plans</span>
|
|
14
14
|
<button class="cmd-history-btn" onclick="cmdShowHistory()">Past Commands</button>
|
|
15
|
-
<button class="pr-pager-btn" style="font-size:
|
|
15
|
+
<button class="pr-pager-btn" style="font-size:var(--text-xs);padding:2px 8px;color:var(--green);border-color:var(--green)" onclick="openQuickNoteModal()">+ Note</button>
|
|
16
16
|
</div>
|
|
17
17
|
</section>
|
|
18
18
|
<section>
|
|
19
|
-
<h2>Minions Members <span style="font-size:
|
|
19
|
+
<h2>Minions Members <span style="font-size:var(--text-sm);color:var(--border);font-weight:400;text-transform:none;letter-spacing:0">click for details</span></h2>
|
|
20
20
|
<div class="agents" id="agents-grid">Loading...</div>
|
|
21
21
|
</section>
|
|
22
22
|
<section>
|
|
23
|
-
<h2>Pinned Context <button class="pr-pager-btn" style="font-size:
|
|
23
|
+
<h2>Pinned Context <button class="pr-pager-btn" style="font-size:var(--text-xs);padding:1px 6px;color:var(--green);border-color:var(--green);margin-left:8px" onclick="openPinNoteModal()">+ Pin</button> <span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">injected into all agent prompts</span></h2>
|
|
24
24
|
<div id="pinned-content"><p class="empty">No pinned notes.</p></div>
|
|
25
25
|
</section>
|
|
26
26
|
<section>
|
|
27
|
-
<h2>Dispatch Queue <span style="font-size:
|
|
27
|
+
<h2>Dispatch Queue <span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">agents being assigned and completing tasks</span></h2>
|
|
28
28
|
<div class="dispatch-stats" id="dispatch-stats"></div>
|
|
29
29
|
<div id="dispatch-active"></div>
|
|
30
30
|
<div id="dispatch-pending"></div>
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<section>
|
|
2
|
-
<h2>Notes Inbox <span class="count" id="inbox-count">0</span> <button class="pr-pager-btn" style="font-size:
|
|
2
|
+
<h2>Notes Inbox <span class="count" id="inbox-count">0</span> <button class="pr-pager-btn" style="font-size:var(--text-xs);padding:1px 6px;color:var(--green);border-color:var(--green);margin-left:8px" onclick="openQuickNoteModal()">+ Note</button> <span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">auto-consolidates at <span id="inbox-threshold">3</span> notes</span></h2>
|
|
3
3
|
<div class="inbox-list" id="inbox-list">Loading...</div>
|
|
4
4
|
</section>
|
|
5
5
|
<section>
|
|
6
|
-
<h2 data-file="notes.md" style="position:relative">Team Notes <span style="font-size:
|
|
6
|
+
<h2 data-file="notes.md" style="position:relative">Team Notes <span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0" id="notes-updated"></span></h2>
|
|
7
7
|
<div id="notes-list">Loading...</div>
|
|
8
8
|
</section>
|
|
9
9
|
<section>
|
|
10
|
-
<h2>Knowledge Base <span class="count" id="kb-count">0</span> <button class="pr-pager-btn" style="font-size:
|
|
10
|
+
<h2>Knowledge Base <span class="count" id="kb-count">0</span> <button class="pr-pager-btn" style="font-size:var(--text-xs);padding:1px 6px;color:var(--green);border-color:var(--green);margin-left:8px" onclick="openCreateKbModal()">+ New</button><button id="kb-sweep-btn" onclick="kbSweep()" style="font-size:var(--text-xs);padding:2px 8px;background:var(--surface2);border:1px solid var(--border);color:var(--muted);border-radius:4px;cursor:pointer;margin-left:8px;vertical-align:middle">sweep</button><span id="kb-swept-time" style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0;margin-left:8px"></span></h2>
|
|
11
11
|
<div id="kb-sweep-toast" class="cmd-toast cmd-toast-inline" style="margin:6px 0"></div>
|
|
12
12
|
<div class="kb-tabs" id="kb-tabs"></div>
|
|
13
13
|
<div class="kb-list" id="kb-list"><p class="empty">No knowledge entries yet. Notes are classified here after consolidation.</p></div>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<section>
|
|
2
2
|
<h2>Team Meetings <span class="count" id="meetings-count">0</span>
|
|
3
|
-
<button class="pr-pager-btn" style="font-size:
|
|
4
|
-
<span style="font-size:
|
|
3
|
+
<button class="pr-pager-btn" style="font-size:var(--text-xs);padding:1px 6px;color:var(--green);border-color:var(--green);margin-left:8px" onclick="openCreateMeetingModal()">+ New Meeting</button>
|
|
4
|
+
<span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">multi-round agent discussions — investigate, debate, conclude</span>
|
|
5
5
|
</h2>
|
|
6
6
|
<div id="meetings-content"><p class="empty">No meetings yet. Start one to have agents investigate, debate, and conclude on a topic.</p></div>
|
|
7
7
|
</section>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<section>
|
|
2
2
|
<h2>Pipelines <span class="count" id="pipelines-count">0</span>
|
|
3
|
-
<button class="pr-pager-btn" style="font-size:
|
|
4
|
-
<span style="font-size:
|
|
3
|
+
<button class="pr-pager-btn" style="font-size:var(--text-xs);padding:1px 6px;color:var(--green);border-color:var(--green);margin-left:8px" onclick="openCreatePipelineModal()">+ New Pipeline</button>
|
|
4
|
+
<span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">multi-stage workflows with dependencies — chain meetings, plans, tasks, merges in any order, on a schedule or manual</span>
|
|
5
5
|
</h2>
|
|
6
6
|
<div id="pipelines-content"><p class="empty">No pipelines yet. Create one to chain stages like audit → meeting → plan → merge.</p></div>
|
|
7
7
|
</section>
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
<section>
|
|
2
2
|
<h2>Plans <span class="count" id="plans-count">0</span>
|
|
3
|
-
<button class="pr-pager-btn" style="font-size:
|
|
4
|
-
<span style="font-size:
|
|
3
|
+
<button class="pr-pager-btn" style="font-size:var(--text-xs);padding:1px 6px;color:var(--green);border-color:var(--green);margin-left:8px" onclick="openCreatePlanModal()">+ New Plan</button>
|
|
4
|
+
<span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">create via CC or + New Plan, then execute to generate a PRD</span>
|
|
5
5
|
</h2>
|
|
6
6
|
<div id="plans-list"><p class="empty">No plans yet. Create one via the command center or click + New Plan.</p></div>
|
|
7
7
|
</section>
|
|
8
8
|
<section class="prd-panel" id="prd-section">
|
|
9
|
-
<h2>PRD <span class="count" id="prd-progress-count">0%</span> <span id="prd-badge"></span> <span id="auto-approve-badge"></span> <span id="archive-btns"></span> <span style="font-size:
|
|
9
|
+
<h2>PRD <span class="count" id="prd-progress-count">0%</span> <span id="prd-badge"></span> <span id="auto-approve-badge"></span> <span id="archive-btns"></span> <span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">auto-generated when a plan is executed</span></h2>
|
|
10
10
|
<div id="prd-content"><p class="prd-pending">No PRD found.</p></div>
|
|
11
11
|
<div id="prd-progress-content" style="margin-top:12px"></div>
|
|
12
12
|
</section>
|
package/dashboard/pages/prs.html
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<section class="pr-panel" id="pr-section">
|
|
2
2
|
<h2>Pull Requests <span class="count" id="pr-count">0</span>
|
|
3
|
-
<button class="pr-pager-btn" style="font-size:
|
|
4
|
-
<span style="font-size:
|
|
3
|
+
<button class="pr-pager-btn" style="font-size:var(--text-xs);padding:1px 6px;color:var(--green);border-color:var(--green);margin-left:8px" onclick="openAddPrModal()">+ Link PR</button>
|
|
4
|
+
<span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">created by agents, tracked with review + build status</span>
|
|
5
5
|
</h2>
|
|
6
6
|
<div id="pr-toast" class="cmd-toast cmd-toast-inline" style="margin:6px 0"></div>
|
|
7
7
|
<div id="pr-content"><p class="pr-empty">No pull requests yet.</p></div>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<section id="scheduled-section">
|
|
2
2
|
<h2>Scheduled Tasks <span class="count" id="scheduled-count">0</span>
|
|
3
|
-
<button class="pr-pager-btn" style="font-size:
|
|
4
|
-
<span style="font-size:
|
|
3
|
+
<button class="pr-pager-btn" style="font-size:var(--text-xs);padding:1px 6px;color:var(--green);border-color:var(--green);margin-left:8px" onclick="openCreateScheduleModal()">+ New</button>
|
|
4
|
+
<span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">single recurring tasks on a cron — for multi-step workflows, use Pipelines</span>
|
|
5
5
|
</h2>
|
|
6
6
|
<div id="scheduled-content"><p class="empty">No scheduled tasks. Add one to automate recurring work.</p></div>
|
|
7
7
|
</section>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<section>
|
|
2
|
-
<h2>Minions Skills <span class="count" id="skills-count">0</span> <span style="font-size:
|
|
2
|
+
<h2>Minions Skills <span class="count" id="skills-count">0</span> <span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">discovered from runtime native dirs, plugin installs, and configured project repos</span></h2>
|
|
3
3
|
<div id="skills-list"><p class="empty">No skills yet. Agents create these when they discover repeatable workflows.</p></div>
|
|
4
4
|
</section>
|
|
5
5
|
<section>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<section id="watches-section">
|
|
2
2
|
<h2>Watches <span class="count" id="watches-count">0</span>
|
|
3
|
-
<button class="pr-pager-btn" style="font-size:
|
|
4
|
-
<span style="font-size:
|
|
3
|
+
<button class="pr-pager-btn" style="font-size:var(--text-xs);padding:1px 6px;color:var(--green);border-color:var(--green);margin-left:8px" onclick="openCreateWatchModal()">+ New</button>
|
|
4
|
+
<span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">persistent watches that monitor PRs, work items, and branches for changes</span>
|
|
5
5
|
</h2>
|
|
6
6
|
<div id="watches-content"><p class="empty">No active watches. Create one to monitor PRs, work items, or branches.</p></div>
|
|
7
7
|
</section>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<section id="work-items-section" style="overflow:visible">
|
|
2
2
|
<h2>Work Items <span class="count" id="wi-count">0</span>
|
|
3
|
-
<button class="pr-pager-btn" style="font-size:
|
|
4
|
-
<button class="pr-pager-btn" style="font-size:
|
|
5
|
-
<span style="font-size:
|
|
3
|
+
<button class="pr-pager-btn" style="font-size:var(--text-xs);padding:1px 6px;color:var(--green);border-color:var(--green);margin-left:8px" onclick="openCreateWorkItemModal()">+ New</button>
|
|
4
|
+
<button class="pr-pager-btn" style="font-size:var(--text-xs);padding:2px 8px;margin-left:4px" onclick="toggleWorkItemArchive()">See Archive</button>
|
|
5
|
+
<span style="font-size:var(--text-sm);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0">tasks dispatched to agents — auto-created from PRDs or added manually</span>
|
|
6
6
|
</h2>
|
|
7
7
|
<div id="work-items-content"><p class="empty">No work items yet.</p></div>
|
|
8
8
|
<div id="work-items-archive" style="display:none;margin-top:12px"></div>
|
package/dashboard/styles.css
CHANGED
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
--space-5: 10px; --space-6: 12px; --space-7: 16px; --space-8: 20px; --space-9: 24px;
|
|
17
17
|
|
|
18
18
|
/* Typography scale */
|
|
19
|
-
--text-xs:
|
|
20
|
-
--text-md:
|
|
21
|
-
--text-stat:
|
|
19
|
+
--text-xs: 10px; --text-sm: 11px; --text-base: 12px;
|
|
20
|
+
--text-md: 13px; --text-lg: 14px; --text-xl: 16px; --text-2xl: 18px;
|
|
21
|
+
--text-stat: 22px; --text-stat-lg: 28px; --text-display: 32px;
|
|
22
22
|
|
|
23
23
|
/* Border radius */
|
|
24
24
|
--radius-sm: 4px; --radius-md: 6px; --radius-lg: 8px; --radius-xl: 10px; --radius-full: 50%;
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
.sidebar-link .notif-badge.done { top: 50%; right: 6px; transform: translateY(-50%); width: 6px; height: 6px; }
|
|
65
65
|
.sidebar-link:hover { color: var(--text); background: var(--surface2); }
|
|
66
66
|
.sidebar-link.active { color: var(--blue); border-left-color: var(--blue); background: var(--surface2); font-weight: 600; }
|
|
67
|
-
.sidebar-count { font-size:
|
|
67
|
+
.sidebar-count { font-size: var(--text-xs); color: var(--muted); background: var(--surface2); padding: 1px 5px; border-radius: 8px; min-width: 16px; text-align: center; }
|
|
68
68
|
.page-content { flex: 1; overflow-y: auto; min-width: 0; }
|
|
69
69
|
.page { display: none; }
|
|
70
70
|
.page.active { display: block; }
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
.modal-qa-q { font-size: var(--text-md); color: var(--blue); margin-bottom: var(--space-2); font-weight: 600; }
|
|
93
93
|
.modal-qa-q .selection-ref { font-weight: 400; color: var(--muted); font-style: italic; display: block; font-size: var(--text-sm); margin-top: var(--space-1); }
|
|
94
94
|
.modal-qa-a { font-size: var(--text-md); color: var(--text); margin-bottom: var(--space-6); padding: var(--space-4) var(--space-5); background: var(--surface2); border-radius: var(--radius-md); border-left: 2px solid var(--blue); white-space: pre-wrap; word-break: break-word; line-height: 1.5; position: relative; }
|
|
95
|
-
.llm-copy-btn { position:absolute;bottom:4px;right:4px;background:none;border:none;color:var(--muted);cursor:pointer;font-size:
|
|
95
|
+
.llm-copy-btn { position:absolute;bottom:4px;right:4px;background:none;border:none;color:var(--muted);cursor:pointer;font-size:var(--text-lg);padding:2px 4px;line-height:1 }
|
|
96
96
|
.llm-copy-btn:hover { color:var(--text) }
|
|
97
97
|
.modal-qa-loading { font-size: var(--text-base); color: var(--muted); padding: var(--space-4) var(--space-5); display: flex; align-items: center; gap: var(--space-4); }
|
|
98
98
|
.modal-qa-loading .dot-pulse { display: inline-flex; gap: 3px; }
|
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
.modal-qa-selection-pill { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-2) var(--space-4); margin-bottom: var(--space-3); background: rgba(88,166,255,0.08); border: 1px solid rgba(88,166,255,0.25); border-radius: var(--radius-sm); font-size: var(--text-base); }
|
|
104
104
|
.modal-qa-selection-pill .pill-label { color: var(--blue); font-weight: 600; white-space: nowrap; }
|
|
105
105
|
.modal-qa-selection-pill .pill-text { color: var(--muted); flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-style: italic; }
|
|
106
|
-
.modal-qa-selection-pill .pill-clear { background: none; border: none; color: var(--muted); cursor: pointer; font-size:
|
|
106
|
+
.modal-qa-selection-pill .pill-clear { background: none; border: none; color: var(--muted); cursor: pointer; font-size: var(--text-xl); padding: 0 2px; line-height: 1; }
|
|
107
107
|
.modal-qa-selection-pill .pill-clear:hover { color: var(--red); }
|
|
108
108
|
.modal-qa-input-wrap { display: flex; gap: 6px; }
|
|
109
109
|
.modal-qa-input { flex: 1; background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: var(--space-3) var(--space-5); font-size: var(--text-md); color: var(--text); font-family: inherit; }
|
|
@@ -144,16 +144,16 @@
|
|
|
144
144
|
.token-chart { display: flex; align-items: flex-end; gap: 3px; height: 80px; margin: 8px 0; }
|
|
145
145
|
.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; }
|
|
146
146
|
.token-bar:hover { background: var(--green); }
|
|
147
|
-
.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:
|
|
147
|
+
.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-xs); white-space: nowrap; z-index: 10; color: var(--text); }
|
|
148
148
|
.token-bar:hover .token-bar-tip { display: block; }
|
|
149
149
|
.token-chart-labels { display: flex; gap: 3px; }
|
|
150
|
-
.token-chart-labels span { flex: 1; min-width: 8px; max-width: 24px; font-size:
|
|
150
|
+
.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; }
|
|
151
151
|
/* Schedule calendar */
|
|
152
152
|
.sched-cal { display: grid; grid-template-columns: 50px repeat(7, 1fr); gap: 1px; background: var(--border); border-radius: var(--radius-md); overflow: hidden; }
|
|
153
|
-
.sched-cal-header { background: var(--surface2); padding: 6px 4px; text-align: center; font-size:
|
|
154
|
-
.sched-cal-hour { background: var(--surface); padding: 6px 6px 6px 0; font-size:
|
|
153
|
+
.sched-cal-header { background: var(--surface2); padding: 6px 4px; text-align: center; font-size: var(--text-sm); font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: 0.5px; }
|
|
154
|
+
.sched-cal-hour { background: var(--surface); padding: 6px 6px 6px 0; font-size: var(--text-sm); color: var(--muted); text-align: right; font-variant-numeric: tabular-nums; display: flex; align-items: flex-start; justify-content: flex-end; }
|
|
155
155
|
.sched-cal-cell { background: var(--surface); padding: 3px; min-height: 44px; display: flex; flex-direction: column; gap: 2px; }
|
|
156
|
-
.sched-cal-slot { padding: 3px 6px; border-radius: 3px; font-size:
|
|
156
|
+
.sched-cal-slot { padding: 3px 6px; border-radius: 3px; font-size: var(--text-sm); cursor: pointer; border-left: 3px solid; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transition: filter 0.15s; }
|
|
157
157
|
.sched-cal-slot:hover { filter: brightness(1.2); }
|
|
158
158
|
|
|
159
159
|
.token-agent-table { width: 100%; margin-top: var(--space-5); }
|
|
@@ -190,7 +190,7 @@
|
|
|
190
190
|
.prd-progress-bar .seg.updated { background: var(--purple); }
|
|
191
191
|
.prd-progress-bar .seg.paused { background: var(--muted); opacity: 0.5; }
|
|
192
192
|
.prd-progress-bar .seg.missing { background: var(--border); }
|
|
193
|
-
.prd-progress-pct { font-size:
|
|
193
|
+
.prd-progress-pct { font-size: var(--text-stat); font-weight: 700; color: var(--green); margin-bottom: var(--space-4); }
|
|
194
194
|
.prd-progress-legend { display: flex; flex-wrap: wrap; gap: var(--space-6); margin-bottom: var(--space-6); }
|
|
195
195
|
.prd-legend-item { display: flex; align-items: center; gap: 5px; font-size: var(--text-base); color: var(--muted); }
|
|
196
196
|
.prd-legend-dot { width: 10px; height: 10px; border-radius: 2px; }
|
|
@@ -209,10 +209,10 @@
|
|
|
209
209
|
.pl-prog-seg.waiting { background: var(--yellow); }
|
|
210
210
|
.pl-prog-seg.pending { background: transparent; }
|
|
211
211
|
@keyframes plSegPulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
|
|
212
|
-
.pl-progress-label { display: flex; gap: 8px; align-items: center; margin-top: 4px; font-size:
|
|
212
|
+
.pl-progress-label { display: flex; gap: 8px; align-items: center; margin-top: 4px; font-size: var(--text-sm); }
|
|
213
213
|
.pl-node-chain { display: flex; align-items: flex-start; gap: 2px; overflow-x: auto; padding: 8px 0; }
|
|
214
214
|
.pl-node { display: flex; flex-direction: column; align-items: center; flex-shrink: 0; }
|
|
215
|
-
.pl-node-box { padding: 4px 8px; border-radius: 6px; border: 1px solid var(--border); background: var(--surface2); text-align: center; font-size:
|
|
215
|
+
.pl-node-box { padding: 4px 8px; border-radius: 6px; border: 1px solid var(--border); background: var(--surface2); text-align: center; font-size: var(--text-sm); transition: border-color 0.2s; white-space: nowrap; }
|
|
216
216
|
.pl-node-box.complete { border-color: var(--green); background: rgba(63,185,80,0.08); }
|
|
217
217
|
.pl-node-box.running { border-color: var(--blue); animation: plSegPulse 1.5s ease-in-out infinite; }
|
|
218
218
|
.pl-node-box.failed { border-color: var(--red); background: rgba(248,81,73,0.08); }
|
|
@@ -220,9 +220,9 @@
|
|
|
220
220
|
.pl-node-box.pending { border-color: var(--border); opacity: 0.6; }
|
|
221
221
|
.pl-node-box.condition { border-style: dashed; }
|
|
222
222
|
.pl-node-box.pl-node-stop { border-style: dotted; border-color: var(--muted); opacity: 0.7; }
|
|
223
|
-
.pl-node-arrow { display: flex; align-items: center; padding: 0 2px; color: var(--muted); font-size:
|
|
224
|
-
.pl-node-meta { font-size:
|
|
225
|
-
.pl-node-loop { font-size:
|
|
223
|
+
.pl-node-arrow { display: flex; align-items: center; padding: 0 2px; color: var(--muted); font-size: var(--text-md); flex-shrink: 0; margin-top: 8px; }
|
|
224
|
+
.pl-node-meta { font-size: var(--text-xs); color: var(--muted); margin-top: 2px; text-align: center; max-width: 120px; overflow: hidden; text-overflow: ellipsis; }
|
|
225
|
+
.pl-node-loop { font-size: var(--text-sm); color: var(--muted); margin-top: 6px; display: flex; align-items: center; gap: 6px; }
|
|
226
226
|
.pipeline-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 12px 16px; margin-bottom: var(--space-4); cursor: pointer; transition: border-color var(--transition-fast), transform var(--transition-fast); }
|
|
227
227
|
.pipeline-card:hover { border-color: var(--blue); transform: translateY(-1px); }
|
|
228
228
|
.pipeline-card-header { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-6); }
|
|
@@ -264,7 +264,7 @@
|
|
|
264
264
|
.prd-inner { display: flex; gap: 16px; align-items: flex-start; }
|
|
265
265
|
.prd-stats { display: flex; gap: 16px; }
|
|
266
266
|
.prd-stat { text-align: center; background: var(--surface2); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: var(--space-6) var(--space-8); }
|
|
267
|
-
.prd-stat-num { font-size:
|
|
267
|
+
.prd-stat-num { font-size: var(--text-stat-lg); font-weight: 700; color: var(--blue); }
|
|
268
268
|
.prd-stat-num.green { color: var(--green); }
|
|
269
269
|
.prd-stat-num.red { color: var(--red); }
|
|
270
270
|
.prd-stat-num.orange { color: var(--orange); }
|
|
@@ -475,7 +475,7 @@
|
|
|
475
475
|
.cmd-input-wrap:focus-within { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(88,166,255,0.12); }
|
|
476
476
|
.cmd-highlight-layer {
|
|
477
477
|
position: absolute; top: 0; left: 0; right: 0; bottom: 0;
|
|
478
|
-
padding: 14px 16px; font-size:
|
|
478
|
+
padding: 14px 16px; font-size: var(--text-xl); font-family: inherit; line-height: 1.5;
|
|
479
479
|
white-space: pre-wrap; word-wrap: break-word; overflow: hidden;
|
|
480
480
|
pointer-events: none; color: transparent; border-radius: 10px;
|
|
481
481
|
}
|
|
@@ -487,7 +487,7 @@
|
|
|
487
487
|
.cmd-input-wrap textarea {
|
|
488
488
|
position: relative; z-index: 1;
|
|
489
489
|
flex: 1; background: transparent; border: none; color: var(--text);
|
|
490
|
-
padding: 14px 16px; font-size:
|
|
490
|
+
padding: 14px 16px; font-size: var(--text-xl); font-family: inherit; resize: none;
|
|
491
491
|
outline: none; line-height: 1.5; min-height: 48px; max-height: 200px;
|
|
492
492
|
}
|
|
493
493
|
.cmd-input-wrap textarea::placeholder { color: var(--muted); }
|
|
@@ -499,7 +499,7 @@
|
|
|
499
499
|
}
|
|
500
500
|
.cmd-send-btn:hover { background: rgba(88,166,255,0.1); }
|
|
501
501
|
.cmd-send-btn:disabled { opacity: 0.4; cursor: not-allowed; }
|
|
502
|
-
.cmd-send-btn kbd { font-size:
|
|
502
|
+
.cmd-send-btn kbd { font-size: var(--text-sm); opacity: 0.7; font-family: inherit; }
|
|
503
503
|
|
|
504
504
|
/* Intent & meta chips */
|
|
505
505
|
.cmd-meta { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 4px; align-items: center; min-height: 0; }
|
|
@@ -515,10 +515,10 @@
|
|
|
515
515
|
.cmd-chip.priority-medium { color: var(--yellow); border-color: rgba(210,153,34,0.3); background: rgba(210,153,34,0.08); }
|
|
516
516
|
.cmd-chip.priority-low { color: var(--muted); }
|
|
517
517
|
.cmd-chip.project-chip { color: var(--green); border-color: rgba(63,185,80,0.3); background: rgba(63,185,80,0.08); }
|
|
518
|
-
.cmd-chip .chip-x { cursor: pointer; opacity: 0.5; margin-left: 2px; font-size:
|
|
518
|
+
.cmd-chip .chip-x { cursor: pointer; opacity: 0.5; margin-left: 2px; font-size: var(--text-lg); }
|
|
519
519
|
.cmd-chip .chip-x:hover { opacity: 1; }
|
|
520
520
|
.cmd-chip select {
|
|
521
|
-
background: transparent; border: none; color: inherit; font-size:
|
|
521
|
+
background: transparent; border: none; color: inherit; font-size: var(--text-base);
|
|
522
522
|
font-weight: 500; font-family: inherit; cursor: pointer; outline: none;
|
|
523
523
|
-webkit-appearance: none; appearance: none; padding-right: 2px;
|
|
524
524
|
}
|
|
@@ -604,12 +604,12 @@
|
|
|
604
604
|
body.minions-test-mode > header { box-shadow: inset 0 -3px 0 var(--orange); }
|
|
605
605
|
.engine-alert {
|
|
606
606
|
display: none; margin: 8px 24px 0; padding: 8px 10px; border: 1px solid rgba(248,81,73,0.45);
|
|
607
|
-
background: rgba(248,81,73,0.1); border-radius: var(--radius-sm); font-size:
|
|
607
|
+
background: rgba(248,81,73,0.1); border-radius: var(--radius-sm); font-size: var(--text-base); color: var(--text);
|
|
608
608
|
align-items: center; gap: 8px; flex-wrap: wrap;
|
|
609
609
|
}
|
|
610
610
|
.engine-alert .engine-alert-msg { color: var(--red); font-weight: 600; }
|
|
611
611
|
.engine-alert .engine-alert-action {
|
|
612
|
-
color: var(--blue); cursor: pointer; font-size:
|
|
612
|
+
color: var(--blue); cursor: pointer; font-size: var(--text-sm); padding: 2px 8px;
|
|
613
613
|
border: 1px solid rgba(56,139,253,0.35); border-radius: 4px; background: rgba(56,139,253,0.08);
|
|
614
614
|
transition: opacity 0.2s;
|
|
615
615
|
}
|
|
@@ -692,12 +692,12 @@
|
|
|
692
692
|
.detail-content .section { margin-bottom: var(--space-7); padding: var(--space-6); background: var(--surface2); border: 1px solid var(--border); border-radius: var(--radius-md); }
|
|
693
693
|
|
|
694
694
|
/* Markdown content — consistent styling everywhere renderMd() is used */
|
|
695
|
-
.md-content { font-family: 'Segoe UI', system-ui, sans-serif; font-size:
|
|
695
|
+
.md-content { font-family: 'Segoe UI', system-ui, sans-serif; font-size: var(--text-md); line-height: 1.6; white-space: normal; word-break: break-word; overflow-x: auto; }
|
|
696
696
|
.md-content pre { font-family: Consolas, 'Courier New', monospace; white-space: pre-wrap; }
|
|
697
697
|
.md-content code { font-family: Consolas, 'Courier New', monospace; }
|
|
698
698
|
.md-content table { border-collapse: collapse; margin: 6px 0; width: max-content; min-width: 100%; }
|
|
699
699
|
.md-content .md-table-wrap { overflow-x: auto; margin: 6px 0; }
|
|
700
|
-
.md-content th, .md-content td { padding: 4px 8px; border: 1px solid var(--border); text-align: left; font-size:
|
|
700
|
+
.md-content th, .md-content td { padding: 4px 8px; border: 1px solid var(--border); text-align: left; font-size: var(--text-base); white-space: nowrap; }
|
|
701
701
|
.md-content td { white-space: normal; min-width: 60px; }
|
|
702
702
|
.md-content th { background: var(--surface); font-weight: 600; }
|
|
703
703
|
.status-line { display: flex; align-items: center; gap: var(--space-5); padding: var(--space-5) var(--space-7); background: var(--bg); border-bottom: 1px solid var(--border); font-size: var(--text-md); }
|
|
@@ -713,7 +713,7 @@
|
|
|
713
713
|
.modal-copy { background: var(--surface2); border: 1px solid var(--border); color: var(--muted); font-size: var(--text-base); cursor: pointer; padding: var(--space-2) var(--space-5); border-radius: var(--radius-sm); display: flex; align-items: center; gap: var(--space-2); transition: all var(--transition-base); }
|
|
714
714
|
.modal-copy:hover { color: var(--text); border-color: var(--text); }
|
|
715
715
|
.modal-copy.copied { color: var(--green); border-color: var(--green); }
|
|
716
|
-
.modal-close { background: none; border: none; color: var(--muted); font-size:
|
|
716
|
+
.modal-close { background: none; border: none; color: var(--muted); font-size: var(--text-2xl); cursor: pointer; padding: var(--space-2) var(--space-4); }
|
|
717
717
|
.modal-close:hover { color: var(--text); }
|
|
718
718
|
.notif-badge { position: absolute; top: -5px; right: -5px; pointer-events: none; }
|
|
719
719
|
.notif-badge.done { width: 8px; height: 8px; background: var(--red); border-radius: 50%; animation: notifPulse 2s infinite; }
|
|
@@ -729,7 +729,7 @@
|
|
|
729
729
|
|
|
730
730
|
/* Command Center tab bar */
|
|
731
731
|
.cc-tab-scroll { display: flex; gap: 4px; align-items: center; overflow-x: auto; overflow-y: hidden; flex: 1 1 auto; min-width: 0; scrollbar-width: thin; }
|
|
732
|
-
.cc-tab { padding: 4px 10px; font-size:
|
|
732
|
+
.cc-tab { padding: 4px 10px; font-size: var(--text-sm); border: 1px solid var(--border); border-bottom: none; border-radius: 6px 6px 0 0; background: var(--surface2); color: var(--muted); cursor: grab; white-space: nowrap; max-width: 140px; display: inline-flex; align-items: center; gap: 2px; flex-shrink: 0; margin-bottom: -1px; position: relative; }
|
|
733
733
|
.cc-tab:active { cursor: grabbing; }
|
|
734
734
|
.cc-tab.cc-tab-dragging { opacity: 0.5; cursor: grabbing; }
|
|
735
735
|
.cc-tab.cc-tab-drop-target { box-shadow: inset 2px 0 0 0 var(--blue); }
|
|
@@ -740,7 +740,7 @@
|
|
|
740
740
|
.cc-tab.working::before { content: ''; position: absolute; top: 3px; left: 5px; width: 4px; height: 4px; border-radius: 50%; background: var(--blue); animation: pulse 1.5s infinite; }
|
|
741
741
|
.cc-tab.working.active::before { background: var(--blue); }
|
|
742
742
|
.cc-tab .notif-badge.done { top: 3px; left: 5px; right: auto; width: 4px; height: 4px; }
|
|
743
|
-
.cc-tab-close { flex-shrink: 0; margin-left: 4px; opacity: 0; cursor: pointer; font-size:
|
|
743
|
+
.cc-tab-close { flex-shrink: 0; margin-left: 4px; opacity: 0; cursor: pointer; font-size: var(--text-md); line-height: 1; }
|
|
744
744
|
.cc-tab:hover .cc-tab-close { opacity: 0.5; }
|
|
745
745
|
.cc-tab-close:hover { opacity: 1; color: var(--red); }
|
|
746
746
|
|
|
@@ -803,7 +803,7 @@
|
|
|
803
803
|
/* Responsive: mobile / very narrow */
|
|
804
804
|
@media (max-width: 640px) {
|
|
805
805
|
header { padding: 10px 14px; flex-wrap: wrap; gap: 6px; }
|
|
806
|
-
header h1 { font-size:
|
|
806
|
+
header h1 { font-size: var(--text-xl); }
|
|
807
807
|
header h1 span { display: none; }
|
|
808
808
|
section { padding: 14px 12px; }
|
|
809
809
|
.agents { grid-template-columns: 1fr; }
|
|
@@ -811,10 +811,10 @@
|
|
|
811
811
|
.prd-stat { padding: 8px 12px; }
|
|
812
812
|
.dispatch-stats { gap: 8px; }
|
|
813
813
|
.dispatch-stat { padding: 8px 12px; flex: 1; min-width: 80px; }
|
|
814
|
-
.dispatch-stat-num { font-size:
|
|
815
|
-
.pr-table { font-size:
|
|
814
|
+
.dispatch-stat-num { font-size: var(--text-2xl); }
|
|
815
|
+
.pr-table { font-size: var(--text-base); }
|
|
816
816
|
.pr-table td { padding: 8px 6px; }
|
|
817
|
-
.pr-table th { padding: 6px; font-size:
|
|
817
|
+
.pr-table th { padding: 6px; font-size: var(--text-sm); }
|
|
818
818
|
.cmd-input-wrap { flex-direction: column; }
|
|
819
819
|
.cmd-send-btn { width: 100%; }
|
|
820
820
|
.cmd-hints { gap: 8px; }
|
|
@@ -831,7 +831,7 @@
|
|
|
831
831
|
* past the viewport. Full text remains available via the title attribute
|
|
832
832
|
* added in render-other.js _renderProjectBranch. (W-mpayac6d000b7d33) */
|
|
833
833
|
.project-branch {
|
|
834
|
-
font-size:
|
|
834
|
+
font-size: var(--text-sm); color: var(--muted); font-weight: 400;
|
|
835
835
|
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
836
836
|
display: inline-block; max-width: 240px; overflow: hidden;
|
|
837
837
|
text-overflow: ellipsis; white-space: nowrap; vertical-align: bottom;
|
|
@@ -841,17 +841,17 @@
|
|
|
841
841
|
/* Ahead/behind compact chip (W-mpg3whgp000d09ec, #2732). Renders as
|
|
842
842
|
* "↑N ↓M" next to the branch chip when local diverges from origin/<main>. */
|
|
843
843
|
.project-ab {
|
|
844
|
-
font-size:
|
|
844
|
+
font-size: var(--text-sm); color: var(--muted); font-weight: 400;
|
|
845
845
|
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
846
846
|
margin-left: 4px; white-space: nowrap;
|
|
847
847
|
}
|
|
848
848
|
.project-warn {
|
|
849
|
-
font-size:
|
|
849
|
+
font-size: var(--text-sm); color: var(--yellow); font-style: italic; font-weight: 400;
|
|
850
850
|
display: inline-block; max-width: 240px; overflow: hidden;
|
|
851
851
|
text-overflow: ellipsis; white-space: nowrap; vertical-align: bottom;
|
|
852
852
|
}
|
|
853
853
|
.project-muted {
|
|
854
|
-
font-size:
|
|
854
|
+
font-size: var(--text-sm); color: var(--muted); font-style: italic; font-weight: 400;
|
|
855
855
|
display: inline-block; max-width: 240px; overflow: hidden;
|
|
856
856
|
text-overflow: ellipsis; white-space: nowrap; vertical-align: bottom;
|
|
857
857
|
}
|
package/docs/onboarding.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
A fast, hands-on walkthrough for new contributors. Follow the eight steps below in order. Each step is independent enough that you can stop, take a break, and resume without losing state.
|
|
4
4
|
|
|
5
|
-
> **Prerequisites:** Node.js
|
|
5
|
+
> **Prerequisites:** Node.js 22.5+ (required by `package.json#engines` for the `node:sqlite` runtime backing the state DB), Git, and a working Claude Code CLI (`npm install -g @anthropic-ai/claude-code`) authenticated against your Anthropic API key or Claude Max subscription. See the top-level [README.md](../README.md#prerequisites) for the full list.
|
|
6
6
|
|
|
7
7
|
> **Screenshots:** This walkthrough is intentionally text-only on the first pass. If you want annotated dashboard screenshots, run the [`capture-demos`](../README.md#dashboard) skill after Step 5; it drives Playwright over the running dashboard and writes images you can drop alongside each section.
|
|
8
8
|
|
|
@@ -15,7 +15,7 @@ You only need to clone if you intend to modify Minions itself. End users normall
|
|
|
15
15
|
```bash
|
|
16
16
|
git clone https://github.com/yemi33/minions.git ~/minions-dev
|
|
17
17
|
cd ~/minions-dev
|
|
18
|
-
npm install # installs dev tooling (Playwright); engine
|
|
18
|
+
npm install # installs dev tooling (Playwright) + the lone runtime dep (@azure-devops/mcp); engine is otherwise built on Node built-ins
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
You should now have:
|