spora 0.2.35 → 0.2.37

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.
@@ -406,15 +406,14 @@
406
406
  /* Intelligence bar */
407
407
  .intelligence-bar {
408
408
  flex: 1;
409
- margin: 0 12px;
409
+ margin: 0 14px;
410
410
  display: flex;
411
411
  flex-direction: column;
412
412
  gap: 3px;
413
- max-width: 140px;
414
413
  }
415
414
 
416
415
  .intelligence-label {
417
- font-size: 0.5rem;
416
+ font-size: 0.5625rem;
418
417
  color: rgba(255, 255, 255, 0.2);
419
418
  letter-spacing: 0.03em;
420
419
  white-space: nowrap;
@@ -422,16 +421,16 @@
422
421
 
423
422
  .intelligence-track {
424
423
  width: 100%;
425
- height: 2px;
424
+ height: 3px;
426
425
  background: rgba(255, 255, 255, 0.06);
427
- border-radius: 1px;
426
+ border-radius: 1.5px;
428
427
  overflow: hidden;
429
428
  }
430
429
 
431
430
  .intelligence-fill {
432
431
  height: 100%;
433
432
  width: 0%;
434
- border-radius: 1px;
433
+ border-radius: 1.5px;
435
434
  background: linear-gradient(90deg, #389e77 0%, #4fc3a0 50%, #7ee8c7 100%);
436
435
  transition: width 1.5s cubic-bezier(0.4, 0, 0.2, 1);
437
436
  }
@@ -439,7 +438,7 @@
439
438
  /* Heartbeat config button */
440
439
  .heartbeat-config {
441
440
  position: relative;
442
- margin-left: 0;
441
+ margin-left: auto;
443
442
  }
444
443
 
445
444
  .heartbeat-btn {
@@ -672,6 +671,7 @@
672
671
  const chatContainer = document.getElementById('chatContainer');
673
672
  const messageInput = document.getElementById('messageInput');
674
673
  const sendButton = document.getElementById('sendButton');
674
+ const sleepIndicator = document.getElementById('sleepIndicator');
675
675
 
676
676
  let isLoading = false;
677
677
  let agentName = 'Your Spore';
@@ -746,8 +746,10 @@
746
746
  const response = await fetch('/api/messages');
747
747
  const data = await response.json();
748
748
  if (data.messages && data.messages.length > 0) {
749
- // Clear welcome message if there are existing messages
750
- chatContainer.innerHTML = '';
749
+ // Clear welcome message if there are existing messages (keep sleep indicator)
750
+ Array.from(chatContainer.children).forEach(child => {
751
+ if (child !== sleepIndicator) child.remove();
752
+ });
751
753
  data.messages.forEach(msg => {
752
754
  addMessage(msg.role, msg.content, false);
753
755
  });
@@ -913,7 +915,8 @@
913
915
 
914
916
  messageDiv.appendChild(contentDiv);
915
917
 
916
- chatContainer.appendChild(messageDiv);
918
+ // Insert before sleep indicator so it always stays at the bottom
919
+ chatContainer.insertBefore(messageDiv, sleepIndicator);
917
920
  chatContainer.scrollTop = chatContainer.scrollHeight;
918
921
  }
919
922
 
@@ -947,7 +950,7 @@
947
950
  loadingDiv.appendChild(avatar);
948
951
  loadingDiv.appendChild(loadingContent);
949
952
 
950
- chatContainer.appendChild(loadingDiv);
953
+ chatContainer.insertBefore(loadingDiv, sleepIndicator);
951
954
  chatContainer.scrollTop = chatContainer.scrollHeight;
952
955
  }
953
956
 
@@ -1079,7 +1082,6 @@
1079
1082
  });
1080
1083
 
1081
1084
  // --- Sleep indicator with countdown ---
1082
- const sleepIndicator = document.getElementById('sleepIndicator');
1083
1085
  const sleepCountdown = document.getElementById('sleepCountdown');
1084
1086
  const statusDot = document.querySelector('.status-dot');
1085
1087
  const statusLabel = document.querySelector('.status-label');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spora",
3
- "version": "0.2.35",
3
+ "version": "0.2.37",
4
4
  "description": "AI agents (Spores) that autonomously manage X/Twitter accounts",
5
5
  "type": "module",
6
6
  "author": "Spora",