@yemi33/minions 0.1.20 → 0.1.22
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 +12 -0
- package/dashboard/js/render-inbox.js +12 -5
- package/dashboard/js/settings.js +6 -5
- package/dashboard.js +8 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.22 (2026-03-28)
|
|
4
|
+
|
|
5
|
+
### Dashboard
|
|
6
|
+
- dashboard.js
|
|
7
|
+
- dashboard/js/render-inbox.js
|
|
8
|
+
|
|
9
|
+
## 0.1.21 (2026-03-28)
|
|
10
|
+
|
|
11
|
+
### Dashboard
|
|
12
|
+
- dashboard.js
|
|
13
|
+
- dashboard/js/settings.js
|
|
14
|
+
|
|
3
15
|
## 0.1.20 (2026-03-28)
|
|
4
16
|
|
|
5
17
|
### Dashboard
|
|
@@ -162,17 +162,24 @@ function openQuickNoteModal() {
|
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
async function submitQuickNote() {
|
|
165
|
-
const
|
|
166
|
-
const
|
|
165
|
+
const titleEl = document.getElementById('note-title');
|
|
166
|
+
const contentEl = document.getElementById('note-content');
|
|
167
|
+
if (!titleEl || !contentEl) { alert('Form elements not found'); return; }
|
|
168
|
+
const title = titleEl.value;
|
|
169
|
+
const content = contentEl.value;
|
|
167
170
|
if (!title && !content) { alert('Title or content required'); return; }
|
|
168
171
|
try {
|
|
169
172
|
const res = await fetch('/api/notes', {
|
|
170
173
|
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
|
171
174
|
body: JSON.stringify({ title: title || 'Quick note', what: content || title })
|
|
172
175
|
});
|
|
173
|
-
if (res.ok) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
+
if (res.ok) {
|
|
177
|
+
try { closeModal(); } catch {}
|
|
178
|
+
refresh();
|
|
179
|
+
try { showToast('cmd-toast', 'Note saved to inbox', true); } catch {}
|
|
180
|
+
}
|
|
181
|
+
else { const d = await res.json().catch(() => ({})); alert('Error: ' + (d.error || 'unknown')); }
|
|
182
|
+
} catch (e) { alert('Error saving note: ' + e.message); }
|
|
176
183
|
}
|
|
177
184
|
|
|
178
185
|
async function doPromoteToKB(name, category) {
|
package/dashboard/js/settings.js
CHANGED
|
@@ -135,14 +135,15 @@ async function saveSettings() {
|
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
async function addProject() {
|
|
138
|
-
// Prompt for path directly — folder picker dialogs often open behind the browser
|
|
139
|
-
const projectPath = prompt('Enter the full path to your project directory:\n\ne.g. C:\\Users\\you\\repos\\my-project');
|
|
140
|
-
if (!projectPath) return;
|
|
141
|
-
|
|
142
138
|
try {
|
|
139
|
+
showToast('cmd-toast', 'Opening folder picker...', true);
|
|
140
|
+
const browseRes = await fetch('/api/projects/browse', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: '{}' });
|
|
141
|
+
const browseData = await browseRes.json();
|
|
142
|
+
if (browseData.cancelled || !browseData.path) return;
|
|
143
|
+
|
|
143
144
|
const addRes = await fetch('/api/projects/add', {
|
|
144
145
|
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
|
145
|
-
body: JSON.stringify({ path:
|
|
146
|
+
body: JSON.stringify({ path: browseData.path })
|
|
146
147
|
});
|
|
147
148
|
const addData = await addRes.json();
|
|
148
149
|
if (!addRes.ok) { alert('Failed: ' + (addData.error || 'unknown')); return; }
|
package/dashboard.js
CHANGED
|
@@ -2417,9 +2417,14 @@ What would you like to discuss or change? When you're happy, say "approve" and I
|
|
|
2417
2417
|
const { execSync } = require('child_process');
|
|
2418
2418
|
let selectedPath = '';
|
|
2419
2419
|
if (process.platform === 'win32') {
|
|
2420
|
-
//
|
|
2421
|
-
const
|
|
2422
|
-
|
|
2420
|
+
// Use COM Shell.Application — reliably shows folder picker in foreground
|
|
2421
|
+
const vbs = 'Set shell = CreateObject("Shell.Application")\r\nSet folder = shell.BrowseForFolder(0, "Select project folder", &H0051, "")\r\nIf Not folder Is Nothing Then\r\n WScript.Echo folder.Self.Path\r\nEnd If';
|
|
2422
|
+
const vbsPath = path.join(MINIONS_DIR, 'engine', 'tmp', '_browse.vbs');
|
|
2423
|
+
fs.mkdirSync(path.dirname(vbsPath), { recursive: true });
|
|
2424
|
+
fs.writeFileSync(vbsPath, vbs);
|
|
2425
|
+
try {
|
|
2426
|
+
selectedPath = execSync(`cscript //NoLogo "${vbsPath}"`, { encoding: 'utf8', timeout: 120000 }).trim();
|
|
2427
|
+
} finally { try { fs.unlinkSync(vbsPath); } catch {} }
|
|
2423
2428
|
} else if (process.platform === 'darwin') {
|
|
2424
2429
|
selectedPath = execSync(`osascript -e 'POSIX path of (choose folder with prompt "Select project folder")'`, { encoding: 'utf8', timeout: 120000 }).trim();
|
|
2425
2430
|
} else {
|
package/package.json
CHANGED