@yemi33/minions 0.1.554 → 0.1.555

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/CHANGELOG.md CHANGED
@@ -1,11 +1,12 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.554 (2026-04-07)
3
+ ## 0.1.555 (2026-04-07)
4
4
 
5
5
  ### Features
6
6
  - add pin/unpin button to inbox and KB document modals
7
7
 
8
8
  ### Fixes
9
+ - move pin button to modal header next to Copy button
9
10
  - fetch actual build error logs instead of just reason string (#489)
10
11
 
11
12
  ## 0.1.552 (2026-04-07)
@@ -5,6 +5,7 @@ let _modalFilePath = null; // file path for steering (null = read-only Q&A only)
5
5
 
6
6
  function showModalQa() {
7
7
  document.getElementById('modal-qa').style.display = '';
8
+ updateModalPinBtn();
8
9
  }
9
10
 
10
11
  function _qaNotifySidebar(filePath) {
@@ -41,6 +41,7 @@ function closeModal() {
41
41
  body.contentEditable = 'false';
42
42
  body.style.border = '';
43
43
  body.style.padding = '';
44
+ document.getElementById('modal-pin-btn').style.display = 'none';
44
45
  document.getElementById('modal-edit-btn').style.display = 'none';
45
46
  document.getElementById('modal-save-btn').style.display = 'none';
46
47
  document.getElementById('modal-cancel-edit-btn').style.display = 'none';
@@ -216,13 +216,9 @@ async function kbOpenItem(category, file) {
216
216
  try {
217
217
  const content = await fetch('/api/knowledge/' + category + '/' + encodeURIComponent(file)).then(r => r.text());
218
218
  const display = content.replace(/^---[\s\S]*?---\n*/m, '');
219
- var pk = kbPinKey(category, file);
220
- var pinned = isPinned(pk);
221
219
  document.getElementById('modal-title').textContent = file;
222
220
  const modalBody = document.getElementById('modal-body');
223
- modalBody.innerHTML =
224
- '<div style="margin-bottom:12px"><button class="pr-pager-btn pin-btn' + (pinned ? ' pinned' : '') + '" style="font-size:10px;padding:3px 10px" data-pin-key="' + escHtml(pk) + '" onclick="_togglePinAndRefresh(this.dataset.pinKey,\'kb\');kbOpenItem(\'' + escHtml(category) + '\',\'' + escHtml(file) + '\')">' + (pinned ? 'Unpin' : 'Pin to top') + '</button></div>' +
225
- renderMd(display);
221
+ modalBody.innerHTML = renderMd(display);
226
222
  _modalDocContext = { title: file, content: display, selection: '' };
227
223
  _modalFilePath = 'knowledge/' + category + '/' + file; showModalQa();
228
224
  // Clear notification badge when opening this document
@@ -91,14 +91,9 @@ function openAllPrs() {
91
91
  function openModal(i) {
92
92
  const item = inboxData[i];
93
93
  if (!item) return;
94
- var pk = inboxPinKey(item.name);
95
- var pinned = isPinned(pk);
96
94
  document.getElementById('modal-title').textContent = item.name;
97
95
  document.getElementById('modal-body').innerHTML =
98
- '<div style="margin-bottom:12px;display:flex;gap:8px;align-items:center">' +
99
- '<button class="pr-pager-btn pin-btn' + (pinned ? ' pinned' : '') + '" style="font-size:10px;padding:3px 10px" data-pin-key="' + escHtml(pk) + '" onclick="_togglePinAndRefresh(this.dataset.pinKey,\'inbox\');openModal(' + i + ')">' + (pinned ? 'Unpin' : 'Pin to top') + '</button>' +
100
- '<button class="pr-pager-btn" style="font-size:10px;padding:3px 10px" onclick="promoteToKB(\'' + escHtml(item.name) + '\')">Add to Knowledge Base</button>' +
101
- '</div>' +
96
+ '<div style="margin-bottom:12px"><button class="pr-pager-btn" style="font-size:10px;padding:3px 10px" onclick="promoteToKB(\'' + escHtml(item.name) + '\')">Add to Knowledge Base</button></div>' +
102
97
  '<div style="font-size:12px;line-height:1.7;color:var(--muted)">' + renderMd(item.content) + '</div>';
103
98
  _modalDocContext = { title: item.name, content: item.content, selection: '' };
104
99
  _modalFilePath = 'notes/inbox/' + item.name; showModalQa();
@@ -35,6 +35,27 @@ function _togglePinAndRefresh(key, source) {
35
35
  else if (source === 'kb') renderKnowledgeBase();
36
36
  }
37
37
 
38
+ function updateModalPinBtn() {
39
+ var btn = document.getElementById('modal-pin-btn');
40
+ if (!btn) return;
41
+ // Only show for inbox and KB docs (pinnable paths)
42
+ if (!_modalFilePath || (!_modalFilePath.startsWith('notes/inbox/') && !_modalFilePath.startsWith('knowledge/'))) {
43
+ btn.style.display = 'none'; return;
44
+ }
45
+ btn.style.display = '';
46
+ var pinned = isPinned(_modalFilePath);
47
+ btn.textContent = pinned ? 'Unpin' : 'Pin';
48
+ btn.classList.toggle('pinned', pinned);
49
+ }
50
+ function toggleModalPin() {
51
+ if (!_modalFilePath) return;
52
+ var pinned = togglePin(_modalFilePath);
53
+ showToast('cmd-toast', pinned ? 'Pinned to top' : 'Unpinned', true);
54
+ updateModalPinBtn();
55
+ if (_modalFilePath.startsWith('notes/inbox/')) renderInbox(inboxData);
56
+ else if (_modalFilePath.startsWith('knowledge/')) renderKnowledgeBase();
57
+ }
58
+
38
59
  function escHtml(s) {
39
60
  return String(s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');
40
61
  }
@@ -101,6 +101,7 @@
101
101
  <button class="modal-copy" id="modal-edit-btn" onclick="modalToggleEdit()" title="Edit" style="display:none"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M11.013 1.427a1.75 1.75 0 012.474 0l1.086 1.086a1.75 1.75 0 010 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 01-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61zM12.9 2.97L4.288 11.58l-.537 1.878 1.878-.537L14.242 4.31 12.9 2.97z"/></svg> Edit</button>
102
102
  <button class="modal-copy" id="modal-save-btn" onclick="modalSaveEdit()" title="Save" style="display:none;color:var(--green);border-color:var(--green)"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"/></svg> Save</button>
103
103
  <button class="modal-copy" id="modal-cancel-edit-btn" onclick="modalCancelEdit()" title="Cancel edit" style="display:none">Cancel</button>
104
+ <button class="modal-copy pin-btn" id="modal-pin-btn" onclick="toggleModalPin()" title="Pin to top" style="display:none">Pin</button>
104
105
  <button class="modal-copy" id="modal-copy-btn" onclick="copyModalContent()" title="Copy to clipboard"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25z"/><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25z"/></svg> Copy</button>
105
106
  <button class="modal-close" onclick="closeModal()">X</button>
106
107
  </div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.554",
3
+ "version": "0.1.555",
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"