@yemi33/minions 0.1.2418 → 0.1.2419
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 +17 -2
- package/dashboard/styles.css +21 -0
- package/package.json +1 -1
|
@@ -626,6 +626,15 @@ function ccAbort() {
|
|
|
626
626
|
}
|
|
627
627
|
}
|
|
628
628
|
|
|
629
|
+
function _ccSetButtonProcessing(on) {
|
|
630
|
+
// Toggle the animated gradient shimmer on the Command Center header button while
|
|
631
|
+
// CC is working. Driven purely by _ccSending so it reflects busy state whether the
|
|
632
|
+
// drawer is open or closed. Replaces the old top-right "..." processing notif-badge.
|
|
633
|
+
var btn = document.getElementById('cc-toggle-btn');
|
|
634
|
+
if (!btn) return;
|
|
635
|
+
btn.classList.toggle('cc-processing', !!on);
|
|
636
|
+
}
|
|
637
|
+
|
|
629
638
|
function _ccRenderSuggestedPrompts() {
|
|
630
639
|
var el = document.getElementById('cc-messages');
|
|
631
640
|
var tab = _ccActiveTab();
|
|
@@ -656,9 +665,10 @@ function toggleCommandCenter() {
|
|
|
656
665
|
ccRenderTabBar();
|
|
657
666
|
document.getElementById('cc-input').focus();
|
|
658
667
|
ccRestoreMessages();
|
|
659
|
-
} else if (_ccSending) {
|
|
660
|
-
showNotifBadge(document.getElementById('cc-toggle-btn'), 'processing');
|
|
661
668
|
}
|
|
669
|
+
// Shimmer persists on the button element across open/close — it is driven by
|
|
670
|
+
// _ccSending (see _ccSetButtonProcessing call sites), so reopening while still
|
|
671
|
+
// sending keeps it consistent without any extra work here.
|
|
662
672
|
}
|
|
663
673
|
|
|
664
674
|
|
|
@@ -770,6 +780,7 @@ function ccCloseTab(id) {
|
|
|
770
780
|
closingTab._sending = false;
|
|
771
781
|
closingTab._queue = [];
|
|
772
782
|
_ccSending = (_ccTabs.some(function(t) { return t._sending; }));
|
|
783
|
+
_ccSetButtonProcessing(_ccSending);
|
|
773
784
|
}
|
|
774
785
|
// Tabs are non-expiring on the server — explicit close is the only path that
|
|
775
786
|
// removes the persisted session. Fire-and-forget DELETE so closing a tab
|
|
@@ -915,6 +926,7 @@ function ccRestoreMessages() {
|
|
|
915
926
|
// Only restore sending state if very recent (< 10s) — page refresh kills the SSE stream
|
|
916
927
|
if (sendingState?.sending && (Date.now() - sendingState.startedAt) < 10000) {
|
|
917
928
|
_ccSending = true;
|
|
929
|
+
_ccSetButtonProcessing(true);
|
|
918
930
|
var elapsed = Date.now() - sendingState.startedAt;
|
|
919
931
|
var thinking = document.createElement('div');
|
|
920
932
|
thinking.id = 'cc-thinking';
|
|
@@ -1128,6 +1140,7 @@ async function _ccDoSend(message, skipUserMsg, forceTabId, intentMetadata) {
|
|
|
1128
1140
|
activeTab._abortController = new AbortController();
|
|
1129
1141
|
activeTab._userAborted = false;
|
|
1130
1142
|
_ccSending = true;
|
|
1143
|
+
_ccSetButtonProcessing(true);
|
|
1131
1144
|
ccRenderTabBar();
|
|
1132
1145
|
var _wasAborted = false;
|
|
1133
1146
|
try { localStorage.setItem('cc-sending', JSON.stringify({ sending: true, startedAt: Date.now() })); } catch {}
|
|
@@ -1551,6 +1564,8 @@ async function _ccDoSend(message, skipUserMsg, forceTabId, intentMetadata) {
|
|
|
1551
1564
|
} finally {
|
|
1552
1565
|
if (activeTab) { activeTab._sending = false; activeTab._abortController = null; activeTab._429retries = 0; delete activeTab._segments; delete activeTab._sendStartedAt; delete activeTab._userAborted; }
|
|
1553
1566
|
_ccSending = (_ccTabs.some(function(t) { return t._sending; }));
|
|
1567
|
+
// Clear the button shimmer before the completion "done" red-dot badge below.
|
|
1568
|
+
_ccSetButtonProcessing(_ccSending);
|
|
1554
1569
|
// Mark tab unread if response completed on a background tab or while drawer is closed
|
|
1555
1570
|
if (activeTab && !_wasAborted && (activeTab.id !== _ccActiveTabId || !_ccOpen)) activeTab._unread = true;
|
|
1556
1571
|
ccRenderTabBar();
|
package/dashboard/styles.css
CHANGED
|
@@ -981,6 +981,27 @@
|
|
|
981
981
|
.try-slim-ux-btn:disabled { opacity: 0.6; cursor: default; animation: none; }
|
|
982
982
|
@media (prefers-reduced-motion: reduce) { .try-slim-ux-btn { animation: none; } }
|
|
983
983
|
|
|
984
|
+
/* Command Center header button — clearly animated "working" indicator: a silver sheen
|
|
985
|
+
sweeps continuously across the button. Keeps the button's idle blue-on-dark identity
|
|
986
|
+
(blue text + blue border); the sweep is a translucent streak over the dark
|
|
987
|
+
background, not a solid fill.
|
|
988
|
+
Uses background-image (NOT the `background` shorthand): the shorthand also resets
|
|
989
|
+
background-position, and an !important on it pins position 0% 0% and beats the
|
|
990
|
+
keyframe — animations lose to !important author declarations in the cascade — so
|
|
991
|
+
the sweep would never move. background-image/-size keep their !important to
|
|
992
|
+
override the inline `background:none`, while background-position stays animatable. */
|
|
993
|
+
#cc-toggle-btn.cc-processing {
|
|
994
|
+
color: var(--blue) !important;
|
|
995
|
+
border-color: var(--blue) !important;
|
|
996
|
+
background-image: linear-gradient(90deg, transparent 0%, rgba(192, 192, 192, 0.5) 50%, transparent 100%) !important;
|
|
997
|
+
background-size: 200% auto !important;
|
|
998
|
+
animation: trySlimShimmer 1.8s linear infinite reverse;
|
|
999
|
+
}
|
|
1000
|
+
/* Deliberately exempt from prefers-reduced-motion: this sweep is the ONLY "Command
|
|
1001
|
+
Center is working" indicator (it replaced the old top-right "..." badge), so it is
|
|
1002
|
+
functional busy feedback, not decoration — suppressing it would leave no in-progress
|
|
1003
|
+
cue at all. Kept subtle (a slow, translucent silver sweep) to stay easy on the eyes. */
|
|
1004
|
+
|
|
984
1005
|
/* Engine Status */
|
|
985
1006
|
.engine-badge { padding: var(--space-2) var(--space-6); border-radius: var(--radius-xl); font-size: var(--text-base); font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; margin-right: var(--space-6); }
|
|
986
1007
|
.engine-badge.running { background: rgba(63,185,80,0.15); color: var(--green); border: 1px solid var(--green); }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2419",
|
|
4
4
|
"description": "Multi-agent AI dev team that runs from ~/.minions/ — five autonomous agents share a single engine, dashboard, and knowledge base",
|
|
5
5
|
"bin": {
|
|
6
6
|
"minions": "bin/minions.js"
|