feinai 0.6.3 → 0.6.4
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/package.json +1 -1
- package/src/cli.ts +5 -5
- package/src/dashboard.html +7 -1
- package/src/db.ts +2 -2
package/package.json
CHANGED
package/src/cli.ts
CHANGED
|
@@ -48,7 +48,7 @@ import {
|
|
|
48
48
|
type OutputFormat,
|
|
49
49
|
} from "./format";
|
|
50
50
|
|
|
51
|
-
const VERSION = "0.6.
|
|
51
|
+
const VERSION = "0.6.4";
|
|
52
52
|
|
|
53
53
|
interface ParsedArgs {
|
|
54
54
|
positional: string[];
|
|
@@ -396,20 +396,20 @@ function cmdInit(args: ParsedArgs): void {
|
|
|
396
396
|
const path = initDb();
|
|
397
397
|
console.log(`Initialized feinai DB at ${path}`);
|
|
398
398
|
|
|
399
|
-
// Auto-add .
|
|
399
|
+
// Auto-add .feinai/ to .gitignore if inside a git repo
|
|
400
400
|
if (existsSync(".git")) {
|
|
401
401
|
const gitignorePath = ".gitignore";
|
|
402
|
-
const entry = ".
|
|
402
|
+
const entry = ".feinai/";
|
|
403
403
|
|
|
404
404
|
if (!existsSync(gitignorePath)) {
|
|
405
405
|
writeFileSync(gitignorePath, entry + "\n");
|
|
406
|
-
console.log(".
|
|
406
|
+
console.log(".feinai/ added to .gitignore");
|
|
407
407
|
} else {
|
|
408
408
|
const content = readFileSync(gitignorePath, "utf-8");
|
|
409
409
|
if (!content.includes(entry)) {
|
|
410
410
|
const separator = content.endsWith("\n") ? "" : "\n";
|
|
411
411
|
writeFileSync(gitignorePath, content + separator + entry + "\n");
|
|
412
|
-
console.log(".
|
|
412
|
+
console.log(".feinai/ added to .gitignore");
|
|
413
413
|
}
|
|
414
414
|
}
|
|
415
415
|
}
|
package/src/dashboard.html
CHANGED
|
@@ -1158,6 +1158,9 @@
|
|
|
1158
1158
|
if (taskData.status === "completed" || taskData.status === "failed") {
|
|
1159
1159
|
actions.push(`<button class="btn" data-action="reopen" data-id="${escapeHtml(taskData.id)}">↩ reopen</button>`);
|
|
1160
1160
|
}
|
|
1161
|
+
if (taskData.spec_id) {
|
|
1162
|
+
actions.unshift(`<button class="btn" data-action="back-to-spec" data-spec="${escapeHtml(taskData.spec_id)}">← ${escapeHtml(taskData.spec_id)}</button>`);
|
|
1163
|
+
}
|
|
1161
1164
|
setModalBody(`
|
|
1162
1165
|
${actions.length ? `<div class="modal-actions">${actions.join("")}</div>` : ""}
|
|
1163
1166
|
<div class="modal-section">
|
|
@@ -1360,6 +1363,9 @@
|
|
|
1360
1363
|
await api("POST", `/api/tasks`, body);
|
|
1361
1364
|
toast("Task created", body.id);
|
|
1362
1365
|
closeModal();
|
|
1366
|
+
} else if (action === "back-to-spec") {
|
|
1367
|
+
const specId = btn.dataset.spec;
|
|
1368
|
+
if (specId) openSpecModal(specId);
|
|
1363
1369
|
}
|
|
1364
1370
|
} catch (err) {
|
|
1365
1371
|
toast("Error", err.message, true);
|
|
@@ -1463,7 +1469,7 @@
|
|
|
1463
1469
|
<div class="worktree-context">
|
|
1464
1470
|
<div class="context-row"><span class="context-label">Working directory</span><span class="context-value">${escapeHtml(workingDir)}</span></div>
|
|
1465
1471
|
<div class="context-row"><span class="context-label">Repo</span><span class="context-value">${escapeHtml(repoName)}</span></div>
|
|
1466
|
-
<div class="context-row"><span class="context-label">.
|
|
1472
|
+
<div class="context-row"><span class="context-label">.feinai</span><span class="context-value">${escapeHtml(tascaLoc)}</span></div>
|
|
1467
1473
|
</div>
|
|
1468
1474
|
<span class="elapsed-time" data-elapsed="${escapeHtml(task.taken_at ?? '')}"></span>
|
|
1469
1475
|
</div>
|
package/src/db.ts
CHANGED
|
@@ -183,7 +183,7 @@ function applySchema(db: DbInstance): void {
|
|
|
183
183
|
}
|
|
184
184
|
|
|
185
185
|
/**
|
|
186
|
-
* Find .
|
|
186
|
+
* Find .feinai/feinai.db by walking up from cwd, like git does with .git.
|
|
187
187
|
* Returns null if no DB exists in the tree above the starting directory.
|
|
188
188
|
*/
|
|
189
189
|
export function findDbPath(startDir: string = process.cwd()): string | null {
|
|
@@ -200,7 +200,7 @@ export function findDbPath(startDir: string = process.cwd()): string | null {
|
|
|
200
200
|
}
|
|
201
201
|
|
|
202
202
|
/**
|
|
203
|
-
* Initialize a new
|
|
203
|
+
* Initialize a new feinai DB in the given directory (default: cwd).
|
|
204
204
|
* Returns the absolute path of the created DB file.
|
|
205
205
|
*/
|
|
206
206
|
export function initDb(dir: string = process.cwd()): string {
|