feinai 0.8.4 → 0.8.6

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
@@ -3,6 +3,18 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
5
5
 
6
+ ## [0.8.6] - 2026-09-08
7
+
8
+ ### Fixed
9
+
10
+ - **`--version` mostraba un número desactualizado.** `src/cli.ts` tenía `VERSION` hardcodeado como string literal, separado de `package.json` — al bumpear la versión en 0.8.5 quedó desincronizado y `feinai --version` seguía reportando `0.8.4`. Ahora `VERSION` se lee de `package.json` en runtime, así que no se puede volver a desincronizar.
11
+
12
+ ## [0.8.5] - 2026-09-07
13
+
14
+ ### Fixed
15
+
16
+ - **Contador "active agents" del navbar sobrecontaba y oscilaba.** El pill sumaba `agentProcesses.length`, es decir, todos los procesos con cwd dentro de un worktree — pero una sesión de agente real suele lanzar procesos hijos (`git`, `bun`, `rg`, `tsc`, ...) que también quedan momentáneamente con cwd en ese worktree y se contaban como agentes separados. Esto inflaba el número (ej. 5 en vez de 1) y lo hacía oscilar entre polls de 5s a medida que esos hijos aparecían y desaparecían, mientras que la card de un task individual sólo reflejaba ese task puntual. `renderAgentsPill()` ahora agrupa por `taskId` y cuenta tasks distintas con al menos un proceso matcheado, en línea con lo que ya mostraba cada worktree card.
17
+
6
18
  ## [0.8.4] - 2026-09-02
7
19
 
8
20
  ### Fixed
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "feinai",
3
- "version": "0.8.4",
3
+ "version": "0.8.6",
4
4
  "description": "Task & spec manager for AI agents — parallel worktrees, live dashboard, SDD skills",
5
5
  "type": "module",
6
6
  "bin": {
7
- "feinai": "./src/cli.ts",
8
- "opengit": "./src/opengit.sh"
7
+ "feinai": "src/cli.ts",
8
+ "opengit": "src/opengit.sh"
9
9
  },
10
10
  "scripts": {
11
11
  "dev": "bun src/cli.ts",
@@ -30,7 +30,7 @@
30
30
  "license": "MIT",
31
31
  "repository": {
32
32
  "type": "git",
33
- "url": "https://github.com/mvisca/feinai.git"
33
+ "url": "git+https://github.com/mvisca/feinai.git"
34
34
  },
35
35
  "homepage": "https://github.com/mvisca/feinai#readme",
36
36
  "bugs": {
package/src/cli.ts CHANGED
@@ -57,7 +57,9 @@ import {
57
57
  type OrphanKillResult,
58
58
  } from "./server-state";
59
59
 
60
- const VERSION = "0.8.4";
60
+ const VERSION: string = JSON.parse(
61
+ readFileSync(resolve(dirname(fileURLToPath(import.meta.url)), "../package.json"), "utf-8"),
62
+ ).version;
61
63
 
62
64
  interface ParsedArgs {
63
65
  positional: string[];
@@ -1721,8 +1721,18 @@
1721
1721
  function renderAgentsPill() {
1722
1722
  const el = $("#agents-pill");
1723
1723
  if (!el) return;
1724
- const total = agentProcesses.length;
1725
- const verified = agentProcesses.filter((a) => a.verified).length;
1724
+ // Group by taskId: a single agent session commonly spawns child
1725
+ // processes (git, bun, rg, tsc, ...) whose cwd also lands inside the
1726
+ // worktree, so agentProcesses.length overcounts and flickers as those
1727
+ // children come and go. What "active agents" means is distinct tasks
1728
+ // with at least one matched process.
1729
+ const byTask = new Map();
1730
+ for (const a of agentProcesses) {
1731
+ if (!byTask.has(a.taskId)) byTask.set(a.taskId, []);
1732
+ byTask.get(a.taskId).push(a);
1733
+ }
1734
+ const total = byTask.size;
1735
+ const verified = [...byTask.values()].filter((procs) => procs.some((a) => a.verified)).length;
1726
1736
  const unverified = total - verified;
1727
1737
  el.classList.toggle("live", total > 0);
1728
1738
  const title = total === 0